This system takes battle directly on map, ignoring Scene_Battle completely. So almost all attack/skill-related scripts, like ammo consuming ones, will simply not work.
So my guess is, if I can edit the ORBS core system to "call" the script when performing attack/skill, I might just get them working.
Group: +Gold Member
Posts: 4,136
Type: Scripter
RM Skill: Undisclosed
For a script like ORBS, you can't really simply adapt other battle-related scripts for it just like that. It's actually simpler to recode the functionality into ORBS - of course it also depends of the new feature you want to put in.
__________________________
FRACTURE - a SMT inspired game (demo) made by Rhyme, Karsuman and me. Weep and ragequit.
Group: Member
Posts: 54
Type: None
RM Skill: Undisclosed
Actually I tried that before, by copying script part by part, and paste them under the same class. Didn't work tho.
Most of the time I got the error "stack level too deep", sometimes "wrong number of augment". Guess my beloved trial and error method won't work here.
The feature I wanted...well...
Queex's "Requirements for Skills", for limiting skills to weapon type. This script needs TagNote 2.0. And modern algebra's "Recharge Skills", for skill cooldown.
########################### # Requirements for Skills # ############################################################################## # Version 1.0 # # Author: Queex # # ORBS compatibility: Kread-EX # Licence: Creative Commons Non-Commercial Attributive # # Requires: TagNote 2.0+ # ############################################################################## # Allows extra requirement before skills can be used. The requirements are # # tags added to the notes field ofthe skills. Currently, only the first # # requirement of a given type is checked. # # # # Tags that can be used in weapons: # # <weapon_type xxx> # # # # Tags that can be used in items: # # <include_battle_test> - makes this item available when testing battles # # # # Tags that can be used in skills: # # <weapon_type xxx> - only weapons with this same type can use this skill # # <item_present id> - the party must possess at least 1 item of that id # # <item_consume id n> - the party must possess n items of that id, which # # will be consumed. # # <item_consume id> - the party must possess 1 item of that id, which will # # be consumed. # # <hp_percent_exceed per> - the actor's HP must equal or exceed this # # percentage. # # <hp_percent_below per> - the actor's HP must be below this percentage. # # <mp_percent_exceed per> - the actor's MP must equal or exceed this # # percentage. # # <mp_percent_exceed per true> - the actor's MP must equal or exceed this # # percentage, and that percentage will be # # consumed. # # <mp_percent_below per> - the actor's MP must be below this percentage. # # <free_hand> - the actor must have at least one free hand. # # <dual_weapon> - the actor must be using two weapons. # # <two_handed_weapon> - the actor must be using a two-handed weapon. # # # # Note: # # This script also includes the function hands_free which returns the # # number of free hands for a Game_Actor. # # # # Version History: # # 0.4 - test release # # 0.5 - can specify some item to include in battle test # # 1.0 - Bugfix and update to TagNote 2.0 *RELEASE* # ##############################################################################
class Game_Actor < Game_Battler
include TAGNOTE
def hands_free if weapons[0]==nil if @armor1_id[0]==0 return 2 elsif weapons.length==2 if weapons[1].two_handed return 0 else return 1 end else return 1 end elsif weapons[0].two_handed or @armor1_id!=0 return 0 else return 1 end end
alias skill_req_skill_can_use? rbs_skill_can_use? def rbs_skill_can_use?(skill)
if skill.id != 0 skill_note=$data_skills[skill.id].note #Check for weapon type skill_needs = get_tag(skill_note,"weapon_type") #weapon type string if skill_needs != nil if two_swords_style if @weapon_id!=0 and @armor1_id!=0 return false unless has_tag_value?($data_weapons[@weapon_id].note,"weapon_type",skill_needs) or has_tag_value?($data_weapons[@armor1_id].note,"weapon_type",skill_needs) elsif @weapon_id!=0 return false unless has_tag_value?($data_weapons[@weapon_id].note,"weapon_type",skill_needs) elsif @armor1_id!=0 return false unless has_tag_value?($data_weapons[@armor1_id].note,"weapon_type",skill_needs) else return false end else return false unless @weapon_id!=0 return false unless has_tag_value?($data_weapons[@weapon_id].note,"weapon_type",skill_needs) end end
#Check for item presence skill_needs = get_tag(skill_note,"item_present") #item id if skill_needs != nil return false unless $game_party.has_item?($data_items[skill_needs.to_i],true) end
#Check for item consumption skill_needs = get_tag(skill_note,"item_consume") #item id if skill_needs !=nil skill_needs_num = get_additional_tag(skill_note,"item_consume",2) #number if skill_needs_num == nil skill_needs_num = 1 end return false unless $game_party.item_number($data_items[skill_needs.to_i])>=skill_needs_num.to_i end
#Check for HP exceeds skill_needs = get_tag(skill_note,"hp_percent_exceed") #percent if skill_needs !=nil return false unless (100.0 * @hp/maxhp)>=skill_needs.to_f end
#Check for HP below skill_needs = get_tag(skill_note,"hp_percent_below") #percent if skill_needs != nil return false unless (100.0 * @hp/maxhp)<skill_needs.to_f end
#Check for MP exceeds skill_needs = get_tag(skill_note,"mp_percent_exceed") #percent if skill_needs != nil return false unless (100.0 * @mp/maxmp)>=skill_needs.to_f end
#Check for MP below skill_needs = get_tag(skill_note,"mp_percent_below") #percent if skill_needs != nil return false unless (100.0* @mp/maxmp)<skill_needs.to_f end
#Check for free hand skill_needs = has_tag?(skill_note,"free_hand") #boolean if skill_needs return false unless hands_free>=1 end
#Check for dual weapons skill_needs = has_tag?(skill_note,"dual_weapon") #boolean if skill_needs return false unless two_swords_style return false unless weapons[0]!=nil and weapons[1]!=nil end
#Check for two-handed weapon skill_needs = has_tag?(skill_note,"two_handed_weapon") #boolean if skill_needs return false unless ( weapons[0]!= nil and weapons[0].two_handed) if two_swords_style return false unless ( weapons[0]!= nil and weapons[0].two_handed) or (weapons[1] != nil and weapons[1].two_handed) end end
return skill_req_skill_can_use?(skill) end end
def calc_mp_cost(skill) base_cost=skill.mp_cost
mp_prop=get_tag(skill.note,"mp_percent_exceed") if mp_prop!=nil mp_lose=get_additional_tag_value(skill.note,"mp_percent_exceed",2) if mp_lose.eql?("true") base_cost=(mp_prop.to_f/100.0 * maxmp).to_i end end
if half_mp_cost return base_cost / 2 else return base_cost end end
end
class << ORBS
include TAGNOTE
alias_method(:krx_qsr_orbs_ap, :action_process) unless $@ def action_process(character, target_dir, action = 0) if action > 0 skill = $data_skills[action] #consume items required skill_needs = get_tag(skill.note,"item_consume") if skill_needs != nil num_items = get_additional_tag(skill.note,"item_consume",2) if num_items==nil num_items=1 end $game_party.lose_item($data_items[skill_needs.to_i],num_items.to_i,true) end end krx_qsr_orbs_ap(character, target_dir, action) end end
class Game_Party < Game_Unit
include TAGNOTE
alias skill_req_setup_battle_test_members setup_battle_test_members def setup_battle_test_members skill_req_setup_battle_test_members for i in 1...$data_items.size if has_tag?($data_items[i].note,"include_battle_test") @items[i] = 99 end end end end
Fortunately, both scripts are independent enough to avoid needing to recode the functionality from scratch. It's possible that I overlooked something while testing, so let me know.
I'll take care of the Recharge skills shortly.
EDIT: Here.
Clicky
CODE
#============================================================================== # Recharge Skills # Version: 1.0 # Author: modern algebra (rmrk.net) # ORBS compatibility: Kread-EX # Date: December 11, 2010 #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Description: # # This allows you to make it so that skills can be set to need to recharge # after use. In other words, you can make it so that once an actor uses Heal, # he or she cannot use Heal again for x number of turns. This script will # also allow you to make items, weapons, and states that can increase or # reduce the amount of time it takes to recharge a skill, as well as create # items and skills that can immediately recharge any skills that are charging #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Instructions: # # Place this script in its own slot in the Script Editor (F11), above Main # but below any other custom scripts you might have. # # Configuration is fairly easy. To specify how long a skill needs to take to # recharge, all you need to do is place the following code in its notebox: # \charge[x] # where x is the number of turns you want it to be unavailable for after # using it. It must be a positive integer. # # Example: # \recharge[2] # Will wait two turns before you can use this skill again # # To set either an item or skill so that, when used, it will refresh all # skills and get rid of any remaining charges so that all skills will be # available, all you need to do is put the following code in the notebox: # \refresh # # To set a weapon, armor, state, or enemy to reduce or increase the default # charge times of a skill, all you need to do is use the following code: # \recharge[x] # # You can also specify recharge modifiers by class or actor. See the # Configurable Region at line 57 for instructions on setting those up. All # recharge modifiers stack, so if your class normally adds 1 and an armor the # actor wears adds 2, then it will take 3 extra turns to recharge the skill. # Also, recharge mods will only add to skills that have a recharge time to # begin with. #==============================================================================
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ # CONFIGURABLE REGION #`````````````````````````````````````````````````````````````````````````````` # Here, you can set recharge modifiers for classes and actors, thus allowing # the recharge times to be different depending on which actor and what class. # They both work the same basic way: # # CLASS_RECHARGE_MODS # Each line should look as follows (omitting the < and >): # # <class ID> => <modifier>, # # class ID : the ID of the class you want to modify. So, by default, # 1 would be Paladin, 2 would be Warrior, 3 would be Priest, etc... # modifier : this can either be an integer or a positive decimal number. # If an integer, it will add it to the number of turns. If a decimal # number, it will multiply it by the number of turns. # # If you don't do a line for a class, then it defaults to 0 modifier. # Remember to put a comma after EVERY one of these lines, except the last. # # EXAMPLES: # 2 => 1, # Whenever an actor with class 2 uses a skill, it will take one extra turn # to recharge than it would normally. So, if a skill should take 3 turns # to recharge, it will take 4 turns for actors with this class. # 7 => 0.5, # Whenever an actor with class 7 uses a skill, it will take only half as # long to recharge as it would normally. If a skill takes 6 turns # normally, it will take 3 turns to recharge for actors with this class. # # ACTOR_RECHARGE_MODS # This works the same way, except with actor ID instead of class ID: # # <actor ID> => <modifier>, # actor ID : the ID of the actor. So, by default, 1 would be Ralph, # 2 would be Ulrika, etc... # modifier : same as at line 71. # # If you don't do a line for a class, then it defaults to 0 modifier. # Remember to put a comma after EVERY one of these lines, except the last. # # EXAMPLES: # 4 => -2, # Whenever Actor 4 uses a skill, it takes 2 less turns to charge. So if # the skill normally takes 5 turns, it will take only 3 turns for actor 4. # 7 => 2.5, # Whenever Actor 7 uses a skill it 250% longer to recharge. So if a skill # normally takes 2 turns, it will take 5 turns for actor 7. # # You can also change an actor's recharge modifier in game with a script call: # $game_actors[<actor ID>] = <modifier> #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| CLASS_RECHARGE_MODS = { # <- Do not touch. 1 => 0, 2 => 1.0, } # <- Do not touch. ACTOR_RECHARGE_MODS = { # <- Do not touch. 1 => 0, 2 => 1.0, } # <- Do not touch. #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # END CONFIGURABLE REGION #////////////////////////////////////////////////////////////////////////////// CLASS_RECHARGE_MODS.default = 0 ACTOR_RECHARGE_MODS.default = 0
#============================================================================== # ** UsableItem #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # new method - refresh_charges? #==============================================================================
class UsableItem #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Refresh #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def refresh_charges? return (self.note[/\\REFRESH/i] != nil) end end
#============================================================================== # ** Skill #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # new method - charge_time #==============================================================================
class Skill #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Charge Time #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def recharge_time return self.note[/\\CHARGE\[(\d+)\]/i] != nil ? $1.to_i : 0 end end
#============================================================================== # ** Weapon, Armor, State, Enemy #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # new method - recharge_mod # aliased method - ma_reset_note_values (if have Note Editor) #==============================================================================
CLDEF = <<__END__ class #{class_name} def recharge_mod if !@recharge_mod if self.note[#{RS_REGEXP}] != nil if $2.empty? @recharge_mod = $1.to_i else x = $1.to_f / 100.0 @recharge_mod = x >= 0 ? x : -1*x end else @recharge_mod = 0 end end return @recharge_mod end if self.method_defined? (:ma_reset_note_values) alias ma_rchrg_restnot_8ik3 ma_reset_note_values def ma_reset_note_values (*args) ma_rchrg_restnot_8ik3 (*args) # Run Original Method @recharge_mod = nil end end end __END__
class Game_Actor #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Public Instance Variables #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ attr_accessor :base_recharge #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Actor Setup #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias malgb_rechrg_initz_8ik2 setup def setup (*args) malgb_rechrg_initz_8ik2 (*args) # Run Original Method @base_recharge = RPG::ACTOR_RECHARGE_MODS[@actor_id] end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Recharge Mod #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def recharge_mod direct, percent = super class_mod = RPG::CLASS_RECHARGE_MODS[class_id] class_mod.is_a? (Float) ? percent *= class_mod : direct += class_mod @base_recharge.is_a? (Float) ? percent *= @base_recharge : direct += @base_recharge equips.compact.each { |equip| x = equip.recharge_mod x.is_a? (Float) ? percent *= x : direct += x } return direct, percent end end
#============================================================================== # ** Game_Enemy #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # redefined super method - recharge_mod #==============================================================================
class Game_Enemy #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Recharge Mod #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def recharge_mod direct, percent = super x = enemy.recharge_mod x.is_a? (Float) ? percent *= x : direct += x return direct, percent end end
class << ORBS
alias_method(:krx_mar_orbs_ap, :action_process) unless $@ def action_process(character, target_dir, action = 0) character.battler.update_skill_recharge if action > 0 character.battler.set_skill_recharge($data_skills[action]) end krx_mar_orbs_ap(character, target_dir, action) end
end
I recomment you to put it above Queex's script. Yay sundays.
__________________________
FRACTURE - a SMT inspired game (demo) made by Rhyme, Karsuman and me. Weep and ragequit.
Group: Member
Posts: 54
Type: None
RM Skill: Undisclosed
Great job as always Kread-EX, really appreciate it
Test result:
Requirements for Skills - works fine!
Recharge Skills - put "\CHARGE[2]" in the box and skill is permanently disabled after one use, even skill with "\REFRESH" won't help. And what dose "\RECHARGE" do? I'm confused...
Group: +Gold Member
Posts: 4,136
Type: Scripter
RM Skill: Undisclosed
You misunderstood. \charge[2] doesn't mean that the skill is disabled after 2 uses. The skill is always disabled after one single use, and \charge[2] means it takes two turns before being usable again.
\recharge is a tag to use on weapons, armors, classes or enemies. It allows to alter the charge turns number. For instance, you can have an enemy that negates the recharging time necessary. Putting a \recharge[x] tag in the enemy notebox is the way to achieve this.
As for \refresh, it enables back the skill, even before the recharging turns are elapsed.
__________________________
FRACTURE - a SMT inspired game (demo) made by Rhyme, Karsuman and me. Weep and ragequit.
Group: Member
Posts: 54
Type: None
RM Skill: Undisclosed
Ah, I see how this work now, albeit a little different from what I expected.
The skill's recharge counts decrease only when the character attack or use another skill, but moving around or wait on spot won't count. This doesn't make sense, as moving and waiting also take a turn. Could this be fixed?
PS:
Line 271 seems to be redundant as it cause skills to have one extra turn of cooldown then they should have. @sc_turns_count[skill.id] += 1 No idea why it's there, so I removed this line and problem solved...apparently.
Group: +Gold Member
Posts: 4,136
Type: Scripter
RM Skill: Undisclosed
Hmm... Yes I sticked the recharge method inside the attack process. Completely forgot about waiting or moving... O_o Sorry about that, I'll fix it this evening after work.
EDIT: Done.
Clicky.
CODE
#============================================================================== # Recharge Skills # Version: 1.0 # Author: modern algebra (rmrk.net) # ORBS compatibility: Kread-EX # Date: December 11, 2010 #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Description: # # This allows you to make it so that skills can be set to need to recharge # after use. In other words, you can make it so that once an actor uses Heal, # he or she cannot use Heal again for x number of turns. This script will # also allow you to make items, weapons, and states that can increase or # reduce the amount of time it takes to recharge a skill, as well as create # items and skills that can immediately recharge any skills that are charging #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Instructions: # # Place this script in its own slot in the Script Editor (F11), above Main # but below any other custom scripts you might have. # # Configuration is fairly easy. To specify how long a skill needs to take to # recharge, all you need to do is place the following code in its notebox: # \charge[x] # where x is the number of turns you want it to be unavailable for after # using it. It must be a positive integer. # # Example: # \recharge[2] # Will wait two turns before you can use this skill again # # To set either an item or skill so that, when used, it will refresh all # skills and get rid of any remaining charges so that all skills will be # available, all you need to do is put the following code in the notebox: # \refresh # # To set a weapon, armor, state, or enemy to reduce or increase the default # charge times of a skill, all you need to do is use the following code: # \recharge[x] # # You can also specify recharge modifiers by class or actor. See the # Configurable Region at line 57 for instructions on setting those up. All # recharge modifiers stack, so if your class normally adds 1 and an armor the # actor wears adds 2, then it will take 3 extra turns to recharge the skill. # Also, recharge mods will only add to skills that have a recharge time to # begin with. #==============================================================================
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ # CONFIGURABLE REGION #`````````````````````````````````````````````````````````````````````````````` # Here, you can set recharge modifiers for classes and actors, thus allowing # the recharge times to be different depending on which actor and what class. # They both work the same basic way: # # CLASS_RECHARGE_MODS # Each line should look as follows (omitting the < and >): # # <class ID> => <modifier>, # # class ID : the ID of the class you want to modify. So, by default, # 1 would be Paladin, 2 would be Warrior, 3 would be Priest, etc... # modifier : this can either be an integer or a positive decimal number. # If an integer, it will add it to the number of turns. If a decimal # number, it will multiply it by the number of turns. # # If you don't do a line for a class, then it defaults to 0 modifier. # Remember to put a comma after EVERY one of these lines, except the last. # # EXAMPLES: # 2 => 1, # Whenever an actor with class 2 uses a skill, it will take one extra turn # to recharge than it would normally. So, if a skill should take 3 turns # to recharge, it will take 4 turns for actors with this class. # 7 => 0.5, # Whenever an actor with class 7 uses a skill, it will take only half as # long to recharge as it would normally. If a skill takes 6 turns # normally, it will take 3 turns to recharge for actors with this class. # # ACTOR_RECHARGE_MODS # This works the same way, except with actor ID instead of class ID: # # <actor ID> => <modifier>, # actor ID : the ID of the actor. So, by default, 1 would be Ralph, # 2 would be Ulrika, etc... # modifier : same as at line 71. # # If you don't do a line for a class, then it defaults to 0 modifier. # Remember to put a comma after EVERY one of these lines, except the last. # # EXAMPLES: # 4 => -2, # Whenever Actor 4 uses a skill, it takes 2 less turns to charge. So if # the skill normally takes 5 turns, it will take only 3 turns for actor 4. # 7 => 2.5, # Whenever Actor 7 uses a skill it 250% longer to recharge. So if a skill # normally takes 2 turns, it will take 5 turns for actor 7. # # You can also change an actor's recharge modifier in game with a script call: # $game_actors[<actor ID>] = <modifier> #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| CLASS_RECHARGE_MODS = { # <- Do not touch. 1 => 0, 2 => 1.0, } # <- Do not touch. ACTOR_RECHARGE_MODS = { # <- Do not touch. 1 => 0, 2 => 1.0, } # <- Do not touch. #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # END CONFIGURABLE REGION #////////////////////////////////////////////////////////////////////////////// CLASS_RECHARGE_MODS.default = 0 ACTOR_RECHARGE_MODS.default = 0
#============================================================================== # ** UsableItem #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # new method - refresh_charges? #==============================================================================
class UsableItem #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Refresh #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def refresh_charges? return (self.note[/\\REFRESH/i] != nil) end end
#============================================================================== # ** Skill #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # new method - charge_time #==============================================================================
class Skill #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Charge Time #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def recharge_time return self.note[/\\CHARGE\[(\d+)\]/i] != nil ? $1.to_i : 0 end end
#============================================================================== # ** Weapon, Armor, State, Enemy #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # new method - recharge_mod # aliased method - ma_reset_note_values (if have Note Editor) #==============================================================================
CLDEF = <<__END__ class #{class_name} def recharge_mod if !@recharge_mod if self.note[#{RS_REGEXP}] != nil if $2.empty? @recharge_mod = $1.to_i else x = $1.to_f / 100.0 @recharge_mod = x >= 0 ? x : -1*x end else @recharge_mod = 0 end end return @recharge_mod end if self.method_defined? (:ma_reset_note_values) alias ma_rchrg_restnot_8ik3 ma_reset_note_values def ma_reset_note_values (*args) ma_rchrg_restnot_8ik3 (*args) # Run Original Method @recharge_mod = nil end end end __END__
class Game_Actor #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Public Instance Variables #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ attr_accessor :base_recharge #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Actor Setup #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias malgb_rechrg_initz_8ik2 setup def setup (*args) malgb_rechrg_initz_8ik2 (*args) # Run Original Method @base_recharge = RPG::ACTOR_RECHARGE_MODS[@actor_id] end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Recharge Mod #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def recharge_mod direct, percent = super class_mod = RPG::CLASS_RECHARGE_MODS[class_id] class_mod.is_a? (Float) ? percent *= class_mod : direct += class_mod @base_recharge.is_a? (Float) ? percent *= @base_recharge : direct += @base_recharge equips.compact.each { |equip| x = equip.recharge_mod x.is_a? (Float) ? percent *= x : direct += x } return direct, percent end end
#============================================================================== # ** Game_Enemy #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # redefined super method - recharge_mod #==============================================================================
class Game_Enemy #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Recharge Mod #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def recharge_mod direct, percent = super x = enemy.recharge_mod x.is_a? (Float) ? percent *= x : direct += x return direct, percent end end
class << ORBS
alias_method(:krx_mar_orbs_ap, :action_process) unless $@ def action_process(character, target_dir, action = 0) if action > 0 character.battler.set_skill_recharge($data_skills[action]) end krx_mar_orbs_ap(character, target_dir, action) end
alias_method(:krx_mar_orbs_tp, :turn_process) unless $@ def turn_process for character in [$game_player] + $game_members + $game_map.enemies next if character.battler.nil? character.battler.update_skill_recharge end krx_mar_orbs_tp end
end
__________________________
FRACTURE - a SMT inspired game (demo) made by Rhyme, Karsuman and me. Weep and ragequit.