6 hours ago
BattleAktionFX XP
by Kyonides
Introduction
After reading lots of stuff on Discord on some Follow Up Skill script for VX ACE, I thought XP badly needed to get something like that. This is how this script came into existence!

Currently, there are 4 options available:
- :repeat for repeating the skill cast a few moments ago.
- :random_skill for picking a skill from your actor's or enemy's list of available skills / action.
- Some predefined skill ID - it might fail if the battler doesn't know it.
- nil - it means nothing in Latin.
To add a new skill to the list, follow this example here:
Code:
SKILL_FX[57] = [:repeat, :random_skill]57 would stand for the actual skill ID.
During gameplay, the script will pick one of those options randomly, unless there's just 0 or 1 there.
And yes,
enemies might escape or guard or do nothing if they got no valid action to perform at that point.The Script
Code:
# * BattleAktionFX XP * #
# Scripter : Kyonides
# v0.4.0 - 2025-12-27
# Let your actors or troopers get an extra action for certain skills
# IF AND ONLY IF they meet some of the predefined criteria.
# Warning: Enemies might escape if they've got no available action left!
# Available Options: :repeat, :random_skill, some skill ID, nil
module BAktionFX
MAX_EXTRA_ACTIONS = 1
SKILL_FX = {} # Please leave this line alone!
SKILL_FX.default = [] # Please leave this line alone!
# [Skill ID] = [Option1, etc.]
SKILL_FX[57] = [:repeat, :random_skill]
extend self
def add(set_targets, targets)
@set_targets = set_targets
@targets = targets
end
def skip?
MAX_EXTRA_ACTIONS == @extra_actions or @skill_hits == 0
end
def process_skill(battler, skill_id)
if skip?
clear
return
end
action = battler.current_action
fx = SKILL_FX[skill_id]
slots = fx.size
fx = fx[rand(slots)]
case fx
when nil
clear
return
when :repeat
kind, basic, fx = action.data
when :random_skill
kind, basic, fx = battler.find_extra_action
end
skill = $data_skills[fx]
unless skill
clear
return
end
@set_targets.call(skill.scope)
@targets = @targets.call.flatten
if @targets.empty?
clear
return
end
@targets = []
@extra_actions += 1
@skill_hits = 0
action.set(kind, basic, fx)
true
end
def clear
@skill_hits = @extra_actions = 0
end
attr_accessor :extra_actions, :skill_hits
end
class Game_BattleAction
def data
[@kind, @basic, @skill_id]
end
def set(akind, abasic, askill_id)
@kind = akind
@basic = abasic
@skill_id = askill_id
end
end
class Game_Battler
alias :kyon_btl_akt_fx_gm_btlr_sk_fx :skill_effect
def skill_effect(user, skill)
result = kyon_btl_akt_fx_gm_btlr_sk_fx(user, skill)
BAktionFX.skill_hits += 1 if result and @damage.is_a?(Integer)
result
end
end
class Game_Actor
def find_extra_action
skills_found = @skills.select {|sid| skill_can_use?(sid) }
total = skills_found.size
skill_id = skills_found[rand(total)]
[1, 0, skill_id]
end
end
class Game_Enemy
def find_extra_action
return [0, rand(3) + 1, 0] unless movable?
found_actions = []
for action in self.actions
n = $game_temp.battle_turn
a = action.condition_turn_a
b = action.condition_turn_b
if (b == 0 and n != a) or
(b > 0 and (n < 1 or n < a or n % b != a % b))
next
end
if self.hp * 100.0 / self.maxhp > action.condition_hp
next
end
if $game_party.max_level < action.condition_level
next
end
switch_id = action.condition_switch_id
if switch_id > 0 and !$game_switches[switch_id]
next
end
found_actions << action
end
return [] if found_actions.empty?
total = found_actions.size
action = found_actions[rand(total)]
action.data
end
end
class Scene_Battle
alias :kyon_btl_akt_fx_scn_btl_stt_ph4 :start_phase4
alias :kyon_btl_akt_fx_scn_btl_mk_sk_act_res :make_skill_action_result
alias :kyon_btl_akt_fx_scn_btl_up_ph4_st6 :update_phase4_step6
alias :kyon_btl_akt_fx_scn_btl_btl_end :battle_end
def start_phase4
BAktionFX.clear
@used_skill = nil
kyon_btl_akt_fx_scn_btl_stt_ph4
end
def make_skill_action_result
kyon_btl_akt_fx_scn_btl_mk_sk_act_res
@used_skill = @phase4_step != 1
end
def update_phase4_step6
kyon_btl_akt_fx_scn_btl_up_ph4_st6
return unless @used_skill
@target_battlers = []
BAktionFX.add method(:set_target_battlers), method(:target_battlers)
result = BAktionFX.process_skill(@active_battler, @skill.id)
@action_battlers.unshift @active_battler if result
@target_battlers = []
@used_skill = nil
end
def battle_end(result)
BAktionFX.clear
kyon_btl_akt_fx_scn_btl_btl_end(result)
end
attr_reader :target_battlers
endTerms & Conditions
Free as in
beer.Please include me in your game credits.
That's it!
"For God has not destined us for wrath, but for obtaining salvation through our Lord Jesus Christ," 1 Thessalonians 5:9
Maranatha!
The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.
![[Image: SP1-Scripter.png]](https://www.save-point.org/images/userbars/SP1-Scripter.png)
![[Image: SP1-Writer.png]](https://www.save-point.org/images/userbars/SP1-Writer.png)
![[Image: SP1-Poet.png]](https://www.save-point.org/images/userbars/SP1-Poet.png)
![[Image: SP1-PixelArtist.png]](https://www.save-point.org/images/userbars/SP1-PixelArtist.png)
![[Image: SP1-Reporter.png]](https://i.postimg.cc/GmxWbHyL/SP1-Reporter.png)
My Original Stories (available in English and Spanish)
List of Compiled Binary Executables I have published...
HiddenChest & Roole
Give me a free copy of your completed game if you include at least 3 of my scripts!
Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE
Maranatha!
The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.
![[Image: SP1-Scripter.png]](https://www.save-point.org/images/userbars/SP1-Scripter.png)
![[Image: SP1-Writer.png]](https://www.save-point.org/images/userbars/SP1-Writer.png)
![[Image: SP1-Poet.png]](https://www.save-point.org/images/userbars/SP1-Poet.png)
![[Image: SP1-Reporter.png]](https://i.postimg.cc/GmxWbHyL/SP1-Reporter.png)
My Original Stories (available in English and Spanish)
List of Compiled Binary Executables I have published...
HiddenChest & Roole
Give me a free copy of your completed game if you include at least 3 of my scripts!

Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE

