IPB

Look

Make sure you read the pinned topic on how to submit scripts.

 
 
 [RMXP] Actor Customization
 
 Synthesize
post Jan 30 2008, 03:30 AM
Post #1


Newbie
*

Group: Unknown
Posts: 6
Joined: 30-January 08
Member No.: 618



Script Name: Actor Customization
Written by: Synthesize
Current Version: V6.0.1
Release Date: January 21, 2008

What is it?

Actor Customization allows the player to build their playable characters based on Points earned from Quests or levels. By default, the playable characters gain a definable amount of points every time they level up, these points can then be used to add statistics to the actors.

New in Version 6.00
-- Ability to Raise HP with Strength
-- Ability to Raise SP with Intelligence
-- Draws Upgrade Points and level up display in the Menu
-- Remove previously used points
-- Customize the amount of points needed for one upgrade
-- Ability to use Classes instead of Actor IDs
-- Equipment Boosts
-- Easily customize the Skin
-- Comes with a new Data_Points class which makes management of the points easier.
-- Draw Faces
-- Draw pictures as the background
-- Draw the map as the background
-- Plus some

#===============================================================================
# My goal when I decided to make this script:
#===============================================================================

My goal for this script was to make a powerful custom level up procedure
but make everything user friendly and allow those without technical/rgss
history to customize the script to their liking while utilizing the full
capabilities of this script.

#===============================================================================
# This script is compatible with the following battle systems:
#===============================================================================

- UCoders NeoABS
- Blizzard ABS
- XRXS Zoom Battle System
- MrMo ABS and SDK 2.2
- Caldaron's ABS
- Prexus' ABS
- The RTAB
- GTBS
- These are only the battle systems I tested with. The script should be compatible with most battle systems.

Screenshots:
(IMG:http://img141.imageshack.us/img141/5964/40312839po8.th.png) (IMG:http://img142.imageshack.us/img142/6158/99027601og2.th.png) (IMG:http://img142.imageshack.us/img142/25/26246603mp7.th.png)

DEMO:
Triton Server

The Script:
Spoiler

CODE
#===============================================================================
# Actor Customization V.6.00    ----      RMXP Version
#===============================================================================
#-------------------------------------------------------------------------------
# Written by Synthesize
# January 21, 2008
# Script Version 6.0.1
#===============================================================================
#    * This script will not work with RMVX. A VX version is in the works. *
#===============================================================================
module ActorCustomization
  #-----------------------------------------------------------------------------
  # System Settings
  # System settings are settings you should review before trying the script.
  # Each option has its own comments, and should be straightforward
  #-----------------------------------------------------------------------------
  Points_gained_at_levelup = 5   # Points gained at level-up (0 = Disable)
  Draw_map_as_background = false   # Draw the Background as the map? False = Draw Picture::Name)
  Picture_name = 'sky'   # The picture to draw as a background ('' for Black)
  Error_sound = '057-Wrong01'   # The sound to play if there is an error
  Use_class_id = false   # Advance characters based on the class ID
  Call_after_battle = false   # Automatically call Scene_AC at level-up
  Draw_face = false   # Draw the actors face?
  Use_help_window = true   # Use the help window?
  #-----------------------------------------------------------------------------
  # Maximum Values
  # Set these values if you are using a Maximum Statistics script (Go over the
  # stat limits). If not, leave these values as is.
  #-----------------------------------------------------------------------------
  Max_hp = 9999
  Max_sp = 9999
  Max_str = 999
  Max_dex = 999
  Max_agi = 999
  Max_int = 999
  #-----------------------------------------------------------------------------
  # Point Options
  # These are all new settings. They directly control point options and allow
  # you the option of turning ON/OFF features and customizing how many points
  # are needed to upgrade one stat.
  #-----------------------------------------------------------------------------
  Draw_point_in_menu = true   # Draw the amount of points on MenuStatus?
  Draw_levelup_notice_in_menu = true   # Draw levelup notice on MenuStatus?
  Point_name = "Upgrade points:"   # Point name
  Levelup_text = "(LVLUP)"    # Level Up text
  Raise_hp_with_strength = false   # HP raises as Strength raises
  Amount_to_raise = 0.15     # As a decimal
  Raise_sp_with_intelligence = false   # SP raises as Intelligence raises
  Amount_to_raise2 = 0.15    # As a decimal
  Remove_points = true   # Allow the player to remove used points
  Points_needed = [1, 1, 1, 1, 1, 1]   # The amount of points needed to upgrade
  # Health, SP, STR, DEX, AGI, INT respectively.
  #-----------------------------------------------------------------------------
  # Statistical Growth Rate
  # This section allows you to customize how many numerical stats an attribute
  # rises based on the Actor.id or the Class_id.
  #-----------------------------------------------------------------------------
  # Format = {Actor.id (or class_id) => Amount to raise}
  Actor_HP = {1 => 5, 2 => 5}
  # The default value. If a value is not specified, use the below.
  Actor_HP.default = 1
  # Format = {Actor.id (or class_id) => amount to raise)
  Actor_SP = {1 => 10, 2 => 3}
  Actor_SP.default = 1
  # Format = {Actor.id (or class_id) => amount to raise)
  Actor_STR = {1 => 7, 2 => 6}
  Actor_STR.default = 1
  # Format = {Actor.id (or class_id) => amount to raise)  
  Actor_DEX = {1 =>6, 2 => 2}
  Actor_DEX.default = 1
  # Format = {Actor.id (or class_id) => amount to raise)  
  Actor_AGI = {1 =>4, 2 => 1}
  Actor_AGI.default = 1  
  # Format = {Actor.id (or class_id) => amount to raise)
  Actor_INT = {1 => 3, 2 => 1}
  Actor_INT.default = 1
  #-----------------------------------------------------------------------------
  # Equipment Boost Settings
  # Another new feature. Equipment boosts 'boost' statistics while an accessory
  # is equipped that possess one of the system attributes defined in the
  # equipment_id array. The equipment_amount array tells the script how much
  # an individual (or many) stats are boosted.
  #-----------------------------------------------------------------------------
  # Use Equipment boosts?
  Use_equipment_boosts = true
  # Format = {System_attribute => Amount to boost}
  Equipment_amount = {17 => 5, 18 => 3, 19 => 6, 20 => 7, 21 => 8, 22 => 9}
  # The default Value. Should be 0 for best effect.
  Equipment_amount.default = 0
  # The system attributes.
  Equipment_id = [17, 18, 19, 20, 21, 22]
  # Equipment_id = [HP Boost, SP Boost, STR Boost, DEX Boost, AGI Boost,
  # INT Boost]
  #-----------------------------------------------------------------------------
  # Skin Settings
  # Another new section. This area allows you to adjust the placement of the
  # windows without having to go and dig around in the script. It should be
  # useful for beginners who want to make their own layout with the script, but
  # don't want to go and try to find the values to do it.
  #-----------------------------------------------------------------------------
  Actor_window_horizontal = 0   # Adjust the Actor window ( -# =left, +# =right)
  Actor_window_vertical = 0   # Adjust the Actor Window ( -# =up, +# =down)
  Actor_window_opacity = 250   # The opacity of the window
  Actor_window_width = 275    # The width of the Actor window
  Actor_window_height = 85   # The height of the actor window
  #-----------------------------------------------------------------------------
  Main_command_horizontal = 0   # Adjust the Command window ( -# =left, +# =right)
  Main_command_vertical = 0   # Adjust the Command Window ( -# =up, +# =down)
  Main_command_opacity = 250   # Adjsut the opacity
  Main_command_width = 275   # The width of the main command window
  #-----------------------------------------------------------------------------
  Main_status_horizontal = 0   # Adjust the Actor Status window
  Main_status_vertical = 0    # Adjust the main-status window
  Main_status_opacity = 250   # Adjust the Main_Status opacity
  Main_status_width = 329    # The width of the Main Status
  Main_status_height = 305   # The height of the Main Status
  #-----------------------------------------------------------------------------
  Main_confirm_horizontal = 0   # Adjust the confirm window
  Main_confirm_vertical = 0    # Adjust the confirm window
  Main_confirm_opacity = 250   # Adjust the opacity
  #-----------------------------------------------------------------------------
  Main_help_horizontal = 0   # Adjust the help window
  Main_help_vertical = 0   # Adjust the help window
  Main_help_opacity = 250   # Adjust the opacity
  Main_help_width = 500   # The Confirm window width
  Main_help_height = 200   # The confirm window height
end
#===============================================================================
# What else is new?
#===============================================================================
=begin
  New in ACV6 is an internal class called Data_Points that makes the management
  of points significantly easier with Call Script commands. Currently, you can
  use the following syntaxes in a call script command. More will be added at a
  later time.
  
  $data_points.
    add(amount, member)        Add the 'amount' of upgrade points to 'member'
    remove(amount, member)   Remove the 'amount' of upgrade points from 'member'
    view(member)           Return 'member' upgrade_points
    checksum(amount, member)  Check if 'member' points are within 'amount' range
    add_maxhp(amount, member)  Add max_hp 'amount' to 'member'
    add_hp(amount, member)   Add hp 'amount' to 'member'
    add_sp(amount, member)   Add sp 'amount' to 'member'
    add_maxsp(amount, member)  Add maxsp 'amount' to 'member'
    add_str(amount, member)    Add str 'amount' to 'member'
    add_dex(amount, member)    Add dex 'amount' to 'member'
    add_agi(amount, member)    Add agi 'amount' to 'member'
    add_int(amount, member)    Add int 'amount' to 'member'
    restore(member)          Fully heal 'member'
    
#===============================================================================
# My goal when I decided to make this script:
#===============================================================================
  My goal for this script was to make a powerful custom level up procedure
  but make everything user friendly and allow those without technical/rgss
  history to customize the script to their liking while utilizing the full
  capabilities of this script.

#===============================================================================
# This script is compatible with the following battle systems:
#===============================================================================
- UCoders NeoABS
- Blizzard ABS
- XRXS Zoom Battle System
- MrMo ABS and SDK 2.2
- Caldaron's ABS
- Prexus' ABS
- The RTAB
- May work with others. The above is what I tested with.
=end
#-------------------------------------------------------------------------------
#                             ActorCustomization:: Main
# This handles all window calls, math and everything else related to the script
# in general. Editing is not advised.
#-------------------------------------------------------------------------------
class Scene_AC
  #-----------------------------------------------------------------------------
  # Initialize variables
  #-----------------------------------------------------------------------------
  def start(actor_index)
    @actor_index = actor_index
    @actor = $game_party.actors[@actor_index]
    if ActorCustomization::Use_class_id == false
      @hp = ActorCustomization::Actor_HP[@actor.id]
      @sp = ActorCustomization::Actor_SP[@actor.id]
      @str = ActorCustomization::Actor_STR[@actor.id]
      @dex = ActorCustomization::Actor_DEX[@actor.id]
      @agi = ActorCustomization::Actor_AGI[@actor.id]
      @int = ActorCustomization::Actor_INT[@actor.id]
    else
      @hp = ActorCustomization::Actor_HP[@actor.class_id]
      @sp = ActorCustomization::Actor_SP[@actor.class_id]
      @str = ActorCustomization::Actor_STR[@actor.class_id]
      @dex = ActorCustomization::Actor_DEX[@actor.class_id]
      @agi = ActorCustomization::Actor_AGI[@actor.class_id]
      @int = ActorCustomization::Actor_INT[@actor.class_id]
      return
    end
    unless $data_armors[@actor.armor4_id]== nil and ActorCustomization::Use_equipment_boosts == true
      @hp += ActorCustomization::Equipment_amount[ActorCustomization::Equipment_id[0]]
      @sp += ActorCustomization::Equipment_amount[ActorCustomization::Equipment_id[1]]
      @str += ActorCustomization::Equipment_amount[ActorCustomization::Equipment_id[2]]
      @dex += ActorCustomization::Equipment_amount[ActorCustomization::Equipment_id[3]]
      @agi += ActorCustomization::Equipment_amount[ActorCustomization::Equipment_id[4]]
      @int += ActorCustomization::Equipment_amount[ActorCustomization::Equipment_id[5]]
    end
    @hp_spent = 0
    @sp_spent = 0
    @str_spent = 0
    @dex_spent = 0
    @agi_spent = 0
    @int_spent = 0
  end
  #-----------------------------------------------------------------------------
  # Main:: Calls all of the windows
  #-----------------------------------------------------------------------------
  def main
    start(0)
    main_spriteset
    main_actor
    main_command
    main_status
    main_confirm
    main_help
    @main_command.active = false
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    dispose_windows
  end
  #-----------------------------------------------------------------------------
  # Main_Spriteset:: Calls the background
  #-----------------------------------------------------------------------------
  def main_spriteset
    if ActorCustomization::Draw_map_as_background == true
      @background = Spriteset_Map.new
    else
      @background = Sprite.new
      @background.bitmap = RPG::Cache.picture(ActorCustomization::Picture_name)
    end
  end
  #-----------------------------------------------------------------------------
  # Main_Confirm:: Confirm Changes?
  #-----------------------------------------------------------------------------
  def main_confirm
    c1 = "Yes"
    c2 = "No"
    @main_confirm_window = Window_Command.new(100, [c1, c2])
    @main_confirm_window.x = 320 + ActorCustomization::Main_confirm_horizontal
    @main_confirm_window.y = 150 + ActorCustomization::Main_confirm_vertical
    @main_confirm_window.opacity = ActorCustomization::Main_confirm_opacity
    @main_confirm_window.active = false
    @main_confirm_window.visible = false
    @main_confirm_window.z = 9999
  end
  #-----------------------------------------------------------------------------
  # Main_Status:: Creates the main status window
  #-----------------------------------------------------------------------------
  def main_status
    @status_window = Window_AC_Status.new(@actor)
    @status_window.x = 18 + ActorCustomization::Main_status_horizontal
    @status_window.y = 56 + ActorCustomization::Main_status_vertical
    @status_window.opacity = ActorCustomization::Main_status_opacity
  end
  #-----------------------------------------------------------------------------
  # Main_Actor
  #-----------------------------------------------------------------------------
  def main_actor
    @main_actor_window = Window_AC_Actor.new
    @main_actor_window.x = 344 + ActorCustomization::Actor_window_horizontal
    @main_actor_window.y = 277 + ActorCustomization::Actor_window_vertical
    @main_actor_window.opacity = ActorCustomization::Actor_window_opacity
    @main_actor_window.active = true
    @main_actor_window.z = 9998
  end
  #-----------------------------------------------------------------------------
  # Main_Help:: The Help Window
  #-----------------------------------------------------------------------------
  def main_help
    @main_help = Window_AC_Help.new
    @main_help.x = 75 + ActorCustomization::Main_help_horizontal
    @main_help.y = 150 + ActorCustomization::Main_help_vertical
    @main_help.opacity = ActorCustomization::Main_help_opacity
    @main_help.visible = false
    @main_help.active = false
    @main_help.z = 10000
  end
  #-----------------------------------------------------------------------------
  # Main_Command:: This handles all progression
  #-----------------------------------------------------------------------------
  def main_command
    s1 = ">"
    s2 = ">"
    s3 = ">"
    s4 = ">"
    s5 = ">"
    s6 = ">"
    @main_command = Window_Command.new(ActorCustomization::Main_command_width, [s1, s2, s3, s4, s5, s6])
    @main_command.x = 343 + ActorCustomization::Main_command_horizontal
    @main_command.y = 56 + ActorCustomization::Main_command_vertical
    @main_command.opacity = ActorCustomization::Main_command_opacity
  end
  #-----------------------------------------------------------------------------
  # Dispose_Windows:: Clears all of the sprites that AC uses
  #-----------------------------------------------------------------------------
  def dispose_windows
    @background.dispose
    @main_actor_window.dispose
    @status_window.clear_face if ActorCustomization::Draw_face == true
    @status_window.dispose
    @main_command.dispose
    @main_confirm_window.dispose
    @main_help.dispose
  end
  #-----------------------------------------------------------------------------
  # Call_refresh:: Refreshes the Screen
  #-----------------------------------------------------------------------------
  def call_refresh(value)
    @status_window.refresh(@actor)
    if value == 1
      @main_command.dispose
      main_command
    end
  end
  #-----------------------------------------------------------------------------
  # Update:: Updates Actor Customization
  #-----------------------------------------------------------------------------
  def update
    @main_actor_window.update
    if @main_actor_window.active
      update_actor
      return
    end
    if @main_command.active
      update_commands
      return
    end
    if @main_confirm_window.active
      update_confirm
      return
    end
    if @main_help.active
      update_help
      return
    end
  end
  #-----------------------------------------------------------------------------
  # Update_Actor:: Updates the actor screen
  #-----------------------------------------------------------------------------
  def update_actor
    total_point_spent = (@hp_spent + @sp_spent + @str_spent + @dex_spent + @agi_spent + @int_spent)
    if Input.trigger?(Input::B)
      if total_point_spent == 0
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
      else
        @main_confirm_window.active = true
        @main_confirm_window.visible = true
        @main_actor_window.active = false
      end
      return
    end
    if Input.trigger?(Input::C)
      if total_point_spent == 0
        $game_system.se_play($data_system.decision_se)
        @actor_index = @main_actor_window.index
        @actor = $game_party.actors[@actor_index]
        @main_command.active = true
        @main_actor_window.active = false
        start(@actor_index)
        call_refresh(1)
      else
        @main_confirm_window.active = true
        @main_confirm_window.visible = true
        @main_actor_window.active = false
      return
      end
    end
  end
  #-----------------------------------------------------------------------------
  # Update_Commands:: Updates the Commands
  #-----------------------------------------------------------------------------
  def update_commands
    @main_command.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @main_command.active = false
      @main_actor_window.active = true
      return
    end
    if Input.trigger?(Input::C) && ActorCustomization::Use_help_window == true
      @main_command.active = false
      @main_help.active = true
      @main_help.visible = true
      return
    end
    if Input.trigger?(Input::LEFT)
      decrease_points if ActorCustomization::Remove_points == true
      return
    end
    if Input.trigger?(Input::RIGHT)
      increase_points
      return
    end
  end
  #-----------------------------------------------------------------------------
  # Update_Confirm:: This asks for confirmation.
  #-----------------------------------------------------------------------------
  def update_confirm
    @main_confirm_window.update
    if Input.trigger?(Input::C)
      case @main_confirm_window.index
      when 0 # Yes
        @hp_spent = 0
        @sp_spent = 0
        @str_spent = 0
        @dex_spent = 0
        @agi_spent = 0
        @int_spent = 0
        $game_system.se_play($data_system.decision_se)
        @actor_index = @main_actor_window.index
        @actor = $game_party.actors[@actor_index]
        @main_command.active = true
        @main_actor_window.active = false
        start(@actor_index)
        call_refresh(1)
        @main_confirm_window.active = false
        @main_confirm_window.visible = false
      when 1 # No
        $game_system.se_play($data_system.cancel_se)
        @main_confirm_window.active = false
        @main_confirm_window.visible = false
        @main_command.active = true
      end
    end
  end
  #-----------------------------------------------------------------------------
  # Update Help:: This is the help window
  #-----------------------------------------------------------------------------
  def update_help
    if Input.trigger?(Input::C)
      @main_help.active = false
      @main_help.visible = false
      @main_command.active = true
    end
  end
  #-----------------------------------------------------------------------------
  # Increase Points:: This adds/removes points
  #-----------------------------------------------------------------------------
  def increase_points
    case @main_command.index
    when 0
      if @actor.upgrade_points >= ActorCustomization::Points_needed[0] && @actor.maxhp         $game_system.se_play($data_system.decision_se)
        @actor.upgrade_points -= ActorCustomization::Points_needed[0]
        @actor.hp += @hp
        @actor.maxhp += @hp
        @hp_spent += 1
        @actor.used_hp_points += 1
        call_refresh(0)
      else
        call_sound
      end
    when 1
      if @actor.upgrade_points >= ActorCustomization::Points_needed[1] && @actor.maxsp         $game_system.se_play($data_system.decision_se)
        @actor.upgrade_points -= ActorCustomization::Points_needed[1]
        @actor.sp += @sp
        @actor.maxsp += @sp
        @sp_spent += 1
        @actor.used_sp_points += 1
        call_refresh(0)
      else
        call_sound
      end
    when 2
      if @actor.upgrade_points >= ActorCustomization::Points_needed[2] && @actor.str         $game_system.se_play($data_system.decision_se)
        @actor.upgrade_points -= ActorCustomization::Points_needed[2]
        @actor.str += @str
        @actor.hp += (@actor.str * ActorCustomization::Amount_to_raise) if ActorCustomization::Raise_hp_with_strength == true
        @str_spent += 1
        @actor.used_str_points += 1
        call_refresh(0)
      else
        call_sound
      end
    when 3
      if @actor.upgrade_points >= ActorCustomization::Points_needed[3] && @actor.dex         $game_system.se_play($data_system.decision_se)
        @actor.upgrade_points -= ActorCustomization::Points_needed[3]
        @actor.dex += @dex
        @dex_spent += 1
        @actor.used_dex_points += 1
        call_refresh(0)
      else
        call_sound
      end
    when 4
      if @actor.upgrade_points >= ActorCustomization::Points_needed[4] && @actor.agi         $game_system.se_play($data_system.decision_se)
        @actor.upgrade_points -= ActorCustomization::Points_needed[4]
        @actor.agi += @agi
        @agi_spent += 1
        @actor.used_agi_points += 1
        call_refresh(0)
      else
        call_sound
      end
    when 5
      if @actor.upgrade_points >= ActorCustomization::Points_needed[5] && @actor.int         $game_system.se_play($data_system.decision_se)
        @actor.upgrade_points -= ActorCustomization::Points_needed[5]
        @actor.int += @int
        @actor.maxsp += (@actor.int * ActorCustomization::Amount_to_raise2) if ActorCustomization::Raise_sp_with_intelligence == true
        @actor.sp += (@actor.int * ActorCustomization::Amount_to_raise2) if ActorCustomization::Raise_sp_with_intelligence == true
        @int_spent += 1
        @actor.used_int_points += 1
        call_refresh(0)
      else
        call_sound
      end
    end
  end
  #-----------------------------------------------------------------------------
  # Decrease Points:: This is where points are removed
  #-----------------------------------------------------------------------------
  def decrease_points
    case @main_command.index
    when 0
      if @actor.used_hp_points != 0
        $game_system.se_play($data_system.decision_se)
        @actor.upgrade_points += ActorCustomization::Points_needed[0]
        @actor.hp -= @hp
        @actor.maxhp -= @hp
        @hp_spent -= 1
        @actor.used_hp_points -= 1
        call_refresh(0)
      else
        call_sound
      end
    when 1
      if @actor.used_sp_points != 0
        $game_system.se_play($data_system.decision_se)
        @actor.upgrade_points += ActorCustomization::Points_needed[1]
        @actor.sp -= @sp
        @actor.maxsp -= @sp
        @sp_spent -= 1
        @actor.used_sp_points -= 1
        call_refresh(0)
      else
        call_sound
      end
    when 2
      if @actor.used_str_points != 0
        $game_system.se_play($data_system.decision_se)
        @actor.upgrade_points += ActorCustomization::Points_needed[2]
        @actor.hp -= (@actor.str * ActorCustomization::Amount_to_raise) if ActorCustomization::Raise_hp_with_strength == true
        @actor.str -= @str
        @str_spent -= 1
        @actor.used_str_points -= 1
        call_refresh(0)
      else
        call_sound
      end
    when 3
      if @actor.used_dex_points != 0
        $game_system.se_play($data_system.decision_se)
        @actor.upgrade_points += ActorCustomization::Points_needed[3]
        @actor.dex -= @dex
        @dex_spent -= 1
        @actor.used_dex_points -= 1
        call_refresh(0)
      else
        call_sound
      end
    when 4
      if @actor.used_agi_points != 0
        $game_system.se_play($data_system.decision_se)
        @actor.upgrade_points += ActorCustomization::Points_needed[4]
        @actor.agi -= @agi
        @agi_spent -= 1
        @actor.used_agi_points -= 1
        call_refresh(0)
      else
        call_sound
      end
    when 5
      if @actor.used_int_points != 0
        $game_system.se_play($data_system.decision_se)
        @actor.upgrade_points += ActorCustomization::Points_needed[5]
        @actor.sp -= (@actor.int * ActorCustomization::Amount_to_raise2) if ActorCustomization::Raise_sp_with_intelligence == true
        @actor.maxsp -= (@actor.int * ActorCustomization::Amount_to_raise2) if ActorCustomization::Raise_sp_with_intelligence == true
        @actor.int -= @int
        @int_spent -= 1
        @actor.used_int_points -= 1
        call_refresh(0)
      else
        call_sound
      end
    end
  end
  #-----------------------------------------------------------------------------
  # Call Sound:: Play the error sound
  #-----------------------------------------------------------------------------
  def call_sound
    $game_system.se_play(RPG::AudioFile.new(ActorCustomization::Error_sound))
  end
end  
#-------------------------------------------------------------------------------
# End Main ActorCustomization Section.
# Below you will find the method used to add points at level-up
# as well as all of the windows that are needed.
#-------------------------------------------------------------------------------
# Game_Actor:: Alias methods
#    Create points for actors and add points at level_up
#-------------------------------------------------------------------------------
class Game_Actor   attr_accessor :upgrade_points
  attr_accessor :used_hp_points
  attr_accessor :used_sp_points
  attr_accessor :used_str_points
  attr_accessor :used_dex_points
  attr_accessor :used_agi_points
  attr_accessor :used_int_points
  # Aliases
  alias synthesize_ac_setup setup
  alias synthesize_ac_battle exp=
  #-----------------------------------------------------------------------------
  # Setup
  #-----------------------------------------------------------------------------
  def setup(actor_id)
    synthesize_ac_setup(actor_id)
    @upgrade_points = 0
    @used_hp_points = 0
    @used_sp_points = 0
    @used_str_points = 0
    @used_dex_points = 0
    @used_agi_points = 0
    @used_int_points = 0
  end
  #-----------------------------------------------------------------------------
  # Add Points
  #-----------------------------------------------------------------------------
  def exp=(exp)
    @exp = [[exp, 9999999].min, 0].max
    # Level up
    while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
      @level += 1
      @upgrade_points += ActorCustomization::Points_gained_at_levelup
      # Learn skill
      for j in $data_classes[@class_id].learnings
      if j.level == @level
          learn_skill(j.skill_id)
        end
      end
    end
    synthesize_ac_battle(exp)
    $scene = Scene_AC.new if ActorCustomization::Call_after_battle == true
  end
end
#-------------------------------------------------------------------------------
# Begin AC windows
#      Here you will find all of the contents that make up AC.
#-------------------------------------------------------------------------------
# Actor Window
#-------------------------------------------------------------------------------
class Window_AC_Actor   #-----------------------------------------------------------------------------
  # Initialize
  #-----------------------------------------------------------------------------
  def initialize
    super(0, 0, ActorCustomization::Actor_window_width, ActorCustomization::Actor_window_height)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.active = false
    self.index = -1
    @item_max = $game_party.actors.size
    @column_max = 2
    draw_actor
    self.active = false
    self.index = 0
  end
  #-----------------------------------------------------------------------------
  # Draw_Actor
  #-----------------------------------------------------------------------------
  def draw_actor
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      self.contents.draw_text(65, 50, 100, 100, $game_party.item_number(1).to_s)
      x = i * 65
      y = 50
      draw_actor_graphic(actor, x + 20, y)
    end
  end
  #--------------------------------------------------------------------------
  # * Cursor Rectangle Update
  #--------------------------------------------------------------------------
  def update_cursor_rect
    self.cursor_rect.set(0 + index * 65, 0, 40, 54)
  end
end
#-------------------------------------------------------------------------------
# Window_AC_Status
#-------------------------------------------------------------------------------
class Window_AC_Status   #-----------------------------------------------------------------------------
  # Initialize
  #-----------------------------------------------------------------------------
  def initialize(actor)
    super(32, 32, ActorCustomization::Main_status_width, ActorCustomization::Main_status_height)
    self.contents = Bitmap.new(width - 32, height- 32)
    refresh(actor)
  end
  #-----------------------------------------------------------------------------
  # Refresh
  #-----------------------------------------------------------------------------
  def refresh(actor)
    self.contents.clear
    draw_actor_graphic(actor, 35, 50) if ActorCustomization::Draw_face == false
    draw_actor_face(actor, 35, 50) if ActorCustomization::Draw_face == true
    draw_actor_class(actor, 85, 20)
    draw_actor_name(actor, 80, 0)
    draw_actor_level(actor, 176, 0)
    draw_actor_hp(actor, 4, 68, 172)
    self.contents.font.color = system_color
    self.contents.draw_text(165, 12, 100, 100, "Points used:")
    self.contents.draw_text(165, 60, 100, 50, "#{$data_system.words.hp}:   #{actor.used_hp_points}", 2)
    self.contents.draw_text(165, 84, 100, 50, "#{$data_system.words.sp}:    #{actor.used_sp_points}", 2)
    self.contents.draw_text(165, 120, 100, 50, "#{$data_system.words.str}:    #{actor.used_str_points}", 2)
    self.contents.draw_text(165, 144, 100, 50, "#{$data_system.words.dex}:    #{actor.used_dex_points}", 2)
    self.contents.draw_text(165, 168, 100, 50, "#{$data_system.words.agi}:    #{actor.used_agi_points}", 2)
    self.contents.draw_text(165, 192, 100, 50, "#{$data_system.words.int}:    #{actor.used_int_points}", 2)
    draw_actor_sp(actor,4, 90, 172)
    draw_actor_parameter(actor, 4, 132, 3)
    draw_actor_parameter(actor, 4, 156, 4)
    draw_actor_parameter(actor, 4, 180, 5)
    draw_actor_parameter(actor, 4, 204, 6)
    self.contents.font.color = system_color
    self.contents.draw_text(175, 205, 100, 100, "Points:")
    self.contents.font.color = normal_color
    self.contents.draw_text(165, 205, 100, 100, actor.upgrade_points.to_s, 2)
  end
  #-----------------------------------------------------------------------------
  # Draw_Face
  #-----------------------------------------------------------------------------
  def draw_actor_face(actor, x, y)
    @face = Sprite.new
    @face.bitmap = RPG::Cache.picture(actor.character_name + "_face")
    @face.x = x
    @face.y = y
    @face.z = 9999
  end
  #-----------------------------------------------------------------------------
  # Clear Face
  #-----------------------------------------------------------------------------
  def clear_face
    @face.dispose
  end
end
#-------------------------------------------------------------------------------
# Window_Main_Help::  This draws the help contents
#-------------------------------------------------------------------------------
class Window_AC_Help   def initialize
    super(0, 0, ActorCustomization::Main_help_width, ActorCustomization::Main_help_height)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  def refresh
    self.contents.draw_text(0, 0, 350, 30, "1.) Select the character to edit", 1)
    self.contents.draw_text(0, 24, 350, 30, "2.) Use the arrow keys to add/remove points", 1)
    self.contents.draw_text(0, 48, 400, 30, "3.) The characters stats will increase depending on the stat chosen.", 1)
    self.contents.draw_text(0, 72, 450, 30, "4.) You can see how many points are in each stat with the display window.", 1)
    self.contents.draw_text(0, 96, 450, 30, "5.) Always use up all of your stat points.", 1)
    self.contents.draw_text(0, 120, 450, 30, "6.) Once complete, press the cancel key to return to your adventure.", 1)
    self.contents.draw_text(0, 144, 450, 30, "Press the ENTER key to close this window.", 2)
  end
end
#-------------------------------------------------------------------------------
# MenuStatus:: Draw points/level-up display in the menu
#    Note: This feature may/may not work with a CMS
#-------------------------------------------------------------------------------
class Window_MenuStatus   alias synthesize_menu_refresh refresh
  def refresh
    synthesize_menu_refresh
    for i in 0...$game_party.actors.size
      x = 64
      y = i * 116
      actor = $game_party.actors[i]
      if actor.upgrade_points != 0 && ActorCustomization::Draw_levelup_notice_in_menu == true
        self.contents.font.color = system_color
        w = contents.text_size(actor.name).width
        self.contents.draw_text(x + w, y, 100, 30, "#{ActorCustomization::Levelup_text}")
      end
      self.contents.font.color = system_color
      self.contents.draw_text(x + 225, y, 100, 30, "#{ActorCustomization::Point_name}") if ActorCustomization::Draw_point_in_menu == true
      self.contents.font.color = normal_color
      self.contents.draw_text(x + 346, y, 50, 30, "#{actor.upgrade_points}") if ActorCustomization::Draw_point_in_menu == true
    end
  end
end
#-------------------------------------------------------------------------------
# Data_Points:: This class is designed to make it easier to add/remove points
# with a call script command.
#-------------------------------------------------------------------------------
class Data_Points
  #-----------------------------------------------------------------------------
  # Add points to target member
  #-----------------------------------------------------------------------------
  def add(amount, member)
    $game_party.actors[member].upgrade_points += amount
  end
  #-----------------------------------------------------------------------------
  # Remove target member points
  #-----------------------------------------------------------------------------
  def remove(amount, member)
    add(-amount, member)
  end
  #-----------------------------------------------------------------------------
  # Return target member points
  #-----------------------------------------------------------------------------
  def view(member)
    return $game_party.actors[member].upgrade_points
  end
  #-----------------------------------------------------------------------------
  # Check if member has X points. Return result
  #-----------------------------------------------------------------------------
  def checksum(amount, member)
    if $game_party.actors[member].upgrade_points >= amount
      return true
    else
      return false
    end
  end
  #-----------------------------------------------------------------------------
  # Add max HP to target member
  #-----------------------------------------------------------------------------
  def add_maxhp(amount, member)
    $game_party.actors[member].maxhp += amount
  end
  #-----------------------------------------------------------------------------
  # Add HP to target member
  #-----------------------------------------------------------------------------
  def add_hp(amount, member)
    $game_party.actors[member].hp += amount
  end
  #-----------------------------------------------------------------------------
  # Add MaxSP to target member
  #-----------------------------------------------------------------------------
  def add_maxsp(amount, member)
    $game_party.actors[member].maxsp += amount
  end
  #-----------------------------------------------------------------------------
  # Add SP to target member
  #-----------------------------------------------------------------------------
  def add_sp(amount, member)
    $game_party.actors[member].sp += amount
  end
  #-----------------------------------------------------------------------------
  # Add str to target member
  #-----------------------------------------------------------------------------
  def add_str(amount, member)
    $game_party.actors[member].str += amount
  end
  #-----------------------------------------------------------------------------
  # Add dex to target member
  #-----------------------------------------------------------------------------
  def add_dex(amount, member)
    $game_party.actors[member].dex += amount
  end
  #-----------------------------------------------------------------------------
  # Add Int to target member
  #-----------------------------------------------------------------------------
  def add_int(amount, member)
    $game_party.actors[member].int += amount
  end
  #-----------------------------------------------------------------------------
  # Restore Target members HP and SP
  #-----------------------------------------------------------------------------
  def restore(member)
    $game_party.actors[member].hp = $game_party.actors[member].maxhp
    $game_party.actors[member].sp = $game_party.actors[member].maxsp
  end
end
#-------------------------------------------------------------------------------
# Command_New_Game:: Store Data_Points into a variable
#-------------------------------------------------------------------------------
class Scene_Title
  alias synthesize_commandnewgame_ac command_new_game
  def command_new_game
    synthesize_commandnewgame_ac
    $data_points = Data_Points.new
  end
end
#===============================================================================
#   * This script will not work with RMVX. A VX version is in the works. *
#===============================================================================
# Written by Synthesize
# Version 6.0.1
# January 21, 2008
#===============================================================================
# Actor Customization!   ----  RMXP Version
#===============================================================================



F.A.Q:
Q: How do I call this script?
A: $scene = Scene_AC.new


Questions? Concerns? Feel free to post them.
Go to the top of the page
 
 
 Dr Whippy
post Jun 5 2008, 11:45 PM
Post #2


Member
**

Group: Members
Posts: 11
Joined: 2-June 08
Member No.: 1,403



This is something i'd be keen to try out in my projects. How far away is your VX version??
Go to the top of the page
 
 
 

 
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version Time is now: 11th July 2008 - 09:05 AM