module Class_params # le no touchie this line ok? #=============================================================================== # * Gumps Class Based Level Bonus Script # Version: 1.00 # Author: Matt_Sully(Gump) # * This script was created as the result of a script request. # * Special Thanks to "shrimpburgre" for this great & simple idea! # * This script is only gauranteed to be compatible with Rpg Maker VX Ace. #------------------------------------------------------------- # > This easy to use script will add level bonuses to all your actors # when they level up, and the bonuses they gain are based on their class. # > To configure classes, simply modify the included sample data. # > For sample data, I setup bonuses for all 10 default classes in VX ACE. # > Copy/paste sample class data and configure it for new classes, thats # the quickest way to setup data. <Enter> to a new line and paste. # > Always paste new data on a new line, do not enter data beyond any # boundaries (specified by 'do not edit beyond this line' comments) # > class_id must always be set to the class id being configured # > Class_id's are found on the "Classes" tab in your database (the numbers to # the left of Class names) # > Added an optional setting to break the max. limit value for parameters. #------------------------------------------------------------- # * LEGAL CRAP # > You may freely use this script in any free or commercial game. # > You may modify this script as you see fit, and release those modifications # to others as you see fit. # > If you use this script, you must provide proper credit to the Author. #------------------------------------------------------------- # * Modified Default Classes: # Game_Actor # > Aliased Methods: 1 # > Overwritten Methods: 0 # > New Methods: 2 #------------------------------------------------------------- # * Suggestions + bug reports # > if you have any ideas that you would like to see put into an official # version of this script, PM me your suggestion or post it in one of my threads # at rpgmakerweb or rpgmakervxace.net # > If you have any bugs to report that need fixing please contact me with # as many details (including how you caused the bug etc) as possible. Also include # a copy of your class bonus params script (this script), so I may double check # that your settings are not broken. #=============================================================================== #------------------------------------------------------------- # * System Settings # #------------------------------------------------------------- # * Print Results to Console # > true or false setting # > if true, prints the bonus parameters gained on each level up # to your games console # > Default: false #------------------------------------------------------------- Print_Results_To_Console = false #------------------------------------------------------------- # * Print Extra Debug Info to Console # > true or false setting # > if true, extra info will be printed to the console for debugging. Some # checking is also done to make sure bonus values are 'valid' and 'usable'. # > Default: false Print_Extra_Debug_To_Console = false #------------------------------------------------------------- # * Parameters Limit Breaker, Limit Breaker Values # > break the '999' max parameter value for actors with this setting. # > If the Limit Breaker is true, then the max parameter values are set to # the Limit Breaker Value settings. # > If the Limit Breaker is false, then the max parameter value is normal. # > Parameters = stats. Default max. for HP is 999,999, MP is 9,999. Default # max. for other stats such as strength and defense is 999. # > Default: false, values = default vx ace values Parameters_Limit_Breaker = false Parameters_Limit_Breaker_Value_HP = 999999 Parameters_Limit_Breaker_Value_MP = 9999 Parameters_Limit_Breaker_Value_STATS = 999 # # # #------------------------------------------------------------- # * Default bonuses # (if the actors class is not configured for bonuses or the actors # class is not found etc, then the default bonuses are used # Default bonus: +3 Luck #------------------------------------------------------------- maxhp = 0 maxmp = 0 attack = 0 defense = 0 magatk = 0 magdef = 0 agility = 0 luck = 3 # DONT TOUCH THIS NEXT LINE!!! Classes = Hash.new([maxhp, maxmp, attack, defense, magatk, magdef, agility, luck]) #------------------------------------------------------------- # * Class Bonuses # > The easiest way to setup new data is to copy/paste already defined # class data. Copy Soldier data for example (copy from the "Sample Class: # Soldier" comment down to and including "Classes[class_id] = values" code # line, then paste on a new line and edit accordingly for the new class. # > And of course you can modify or remove any of the included sample classes. # > You must get the 'class_id' correct for each class. if one is not # correct, it may overwrite the bonuses for another class. # > All parameter values must be added for each class even if their bonus is 0 # as shown in the sample definitions. # > You should NEVER modify the "Classes[class_id] = values" code line, you # should only be copying and pasting it. Don't modify the array line above it # either. #------------------------------------------------------------- # Class: Soldier # +3 Attack and +1 Defense per level up class_id = 1 maxhp = 0 maxmp = 0 attack = 3 defense = 1 magatk = 0 magdef = 0 agility = 0 luck = 0 array = [maxhp, maxmp, attack, defense, magatk, magdef, agility, luck] Classes[class_id] = array # Class: Monk # +1 MaxHP, +1 Attack and +2 Agility per level up class_id = 2 maxhp = 1 maxmp = 0 attack = 1 defense = 0 magatk = 0 magdef = 0 agility = 2 luck = 0 array = [maxhp, maxmp, attack, defense, magatk, magdef, agility, luck] Classes[class_id] = array # Class: Paladin # +3 Defense, +1 Magic Defense class_id = 3 maxhp = 0 maxmp = 0 attack = 0 defense = 3 magatk = 0 magdef = 1 agility = 0 luck = 0 array = [maxhp, maxmp, attack, defense, magatk, magdef, agility, luck] Classes[class_id] = array # Class: Spellblade # +1 MaxMP, +1 Attack, +1 Agility, +2 Magic Attack class_id = 4 maxhp = 0 maxmp = 1 attack = 1 defense = 0 magatk = 2 magdef = 0 agility = 1 luck = 0 array = [maxhp, maxmp, attack, defense, magatk, magdef, agility, luck] Classes[class_id] = array # Class: Samurai # +4 Attack, +1 Agility class_id = 5 maxhp = 0 maxmp = 0 attack = 4 defense = 0 magatk = 0 magdef = 0 agility = 1 luck = 0 array = [maxhp, maxmp, attack, defense, magatk, magdef, agility, luck] Classes[class_id] = array # Class: Archer # +5 Agility class_id = 6 maxhp = 0 maxmp = 0 attack = 0 defense = 0 magatk = 0 magdef = 0 agility = 5 luck = 0 array = [maxhp, maxmp, attack, defense, magatk, magdef, agility, luck] Classes[class_id] = array # Class: Thief # +3 Agility, +3 Luck class_id = 7 maxhp = 0 maxmp = 0 attack = 0 defense = 0 magatk = 0 magdef = 0 agility = 3 luck = 3 array = [maxhp, maxmp, attack, defense, magatk, magdef, agility, luck] Classes[class_id] = array # Class: Priestess # +2 MaxMP, +2 Magic Attack, +2 Magic Defense class_id = 8 maxhp = 0 maxmp = 2 attack = 0 defense = 0 magatk = 2 magdef = 2 agility = 0 luck = 0 array = [maxhp, maxmp, attack, defense, magatk, magdef, agility, luck] Classes[class_id] = array # Class: Witch # +3 MaxMP, +3 Magic Attack class_id = 9 maxhp = 0 maxmp = 3 attack = 0 defense = 0 magatk = 3 magdef = 0 agility = 0 luck = 0 array = [maxhp, maxmp, attack, defense, magatk, magdef, agility, luck] Classes[class_id] = array # Class: Sage # +1 MaxMP, +3 Magic Defense, +1 Agility class_id = 10 maxhp = 0 maxmp = 1 attack = 0 defense = 0 magatk = 0 magdef = 3 agility = 1 luck = 0 array = [maxhp, maxmp, attack, defense, magatk, magdef, agility, luck] Classes[class_id] = array end #DO NOT INSERT SETTINGS OR DATA BELOW THIS LINE!!! CREATE NEW LINES AND # ENTER DATA THERE. # DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YER DOIN! #------------------------------------------------------- # * Game_Actor modifications #------------------------------------------------------- class Game_Actor < Game_Battler # * aliased method alias :level_up_add_class_params :level_up def level_up level_up_add_class_params add_bonus_params_for_class end # * new Method def add_bonus_params_for_class cl = self.class_id bonus_params = Class_params::Classes[cl].dup index = 0 for i in 0...bonus_params.size par = bonus_params.shift if par > 0 add_param(index, par) end index += 1 end print_results(cl) if Class_params::Print_Results_To_Console == true end # * new Method def print_results(classid) return if classid == nil || classid == 0 bonusvals = Class_params::Classes[classid] included = Class_params::Classes.include?(classid) included = false if included != true hp = bonusvals[0]; mp = bonusvals[1] attack = bonusvals[2]; defense = bonusvals[3] magatk = bonusvals[4]; magdef = bonusvals[5] agility = bonusvals[6]; luck = bonusvals[7] p "Actor: '#{self.name}'", "Class ID: '#{self.class_id}'", "Level up Bonus Values for Class:" p "Is this class properly configured for bonuses? (true/false): '#{included}'" p "MaxHP +#{hp}", "MaxMP +#{mp}", "Attack +#{attack}", "Defense +#{defense}", "Magic Attack +#{magatk}", "Magic Defense +#{magdef}", "Agility +#{agility}", "Luck +#{luck}" return unless Class_params::Print_Extra_Debug_To_Console == true; p ""; p "" p "Printing Extra Debug info (class params bonus on level up script)"; p "" p "[RAW]Bonus values for undefined classes: #{Class_params::Classes["undefined"]}"; p "" p "Defined Class IDs: #{Class_params::Classes.keys}"; p "" p "Total Amount of Defined Classes: #{Class_params::Classes.size}"; p "" p "Full 'Classes' Hash: #{Class_params::Classes}" p "Checking for invalid Definitions by size..." p "Valid definition size: 8" index = 0 keychain = Class_params::Classes.keys for i in 0...keychain.size key = keychain[index] data = Class_params::Classes[key] size = data.size p " Class ID '#{key}' definition Validation Check: PASS!" if size == 8 if size != 8 p " Class ID '#{key}' definition Validation Check: FAIL!!!" p " Class ID '#{key}' size: #{size}" p " Class ID #{key} data (bonus params): #{data}" end; subind = 0; p "Checking Class ID '#{key}' are Integer values?" for i in 0...data.size chk = data[subind] crc = chk.is_a? Integer p "Bonus Param #{subind+1} Check: PASS!" if crc == true p "Bonus Param #{subind+1} Check: FAIL!" if crc == false p "Bonus Param #{subind+1} Value: #{chk}" if crc == false subind += 1 end index += 1 end end end #------------------------------------------------------- # * Game_BattlerBase modifications #------------------------------------------------------- class Game_BattlerBase # Aliased Method alias :param_max_override :param_max def param_max(param_id) if Class_params::Parameters_Limit_Breaker == true return Class_params::Parameters_Limit_Breaker_Value_HP if param_id == 0 # MHP return Class_params::Parameters_Limit_Breaker_Value_MP if param_id == 1 # MMP return Class_params::Parameters_Limit_Breaker_Value_STATS # Other Stats else param_max_override(param_id) end end end