[RMVX ACE] TRIHAN MAKES SKILLS FOR YOU!
Posts
Pages:
1
I figured rather than just posting neat skills I've made in VX Ace, I'd open up the floor a little. Got a skill idea you're not sure how to implement effectively? Post it here and I'll see if I can get it working for you!
Lightning Jump
Attacks up to 4 targets, one at highest damage, then jumps to a different target and deals 75% damage, then jumps to yet another target doing 50% damage, then jumps again to yet another target doing 25%
Ideally, a target would only ever be hit at most one time (thus if there are less than 4 enemies to target, the spell ends instead of jumping back to an already hit target)
Fireblast
Attacks 1 target at full power, everyone else is damaged by 30% power.
Paladin Strike
A physical attack that heals an ally with the lowest HP by 40% of the dealt damage.
Revenge
Physical attack that scales upwards by the amount of damage taken, where every 1% health lost translates to 2% increased damage
Reboot
A revive skill that can only target robot-type allies. You cannot target dead/defeated humans with this skill
I had another one that I wanted, but it slipped my mind...
Attacks up to 4 targets, one at highest damage, then jumps to a different target and deals 75% damage, then jumps to yet another target doing 50% damage, then jumps again to yet another target doing 25%
Ideally, a target would only ever be hit at most one time (thus if there are less than 4 enemies to target, the spell ends instead of jumping back to an already hit target)
Fireblast
Attacks 1 target at full power, everyone else is damaged by 30% power.
Paladin Strike
A physical attack that heals an ally with the lowest HP by 40% of the dealt damage.
Revenge
Physical attack that scales upwards by the amount of damage taken, where every 1% health lost translates to 2% increased damage
Reboot
A revive skill that can only target robot-type allies. You cannot target dead/defeated humans with this skill
I had another one that I wanted, but it slipped my mind...
Those should all be pretty straightforward, I should have formulae for them by tomorrow.
For Lightning Jump and Fireblast, was the intention that the player pick the initial target? Also, how are robot type allies identified? Is it a character class?
Yeah the intention was they pick a target.
Other than their sprites and classnames being a robot I dont have any specific identifier. Would a note in the class work? Type=robot or something
Other than their sprites and classnames being a robot I dont have any specific identifier. Would a note in the class work? Type=robot or something
If the class name is robot I can work with that; what's its ID?
Here's everything except Reboot. For Revenge just put this in the formula box of your skill:
For Lightning Jump, Fireblast and Paladin Strike copy these into a new script and in the formula box put a.custom_formula_lightningjump(a,b), a.custom_formula_fireblast(a,b) and a.custom_formula_paladinstrike(a,b):
hpp=100-(a.hp*100/a.mhp);damage=a.atk*4-b.def*2;ed=(damage*hpp/100).to_i;damage+ed
For Lightning Jump, Fireblast and Paladin Strike copy these into a new script and in the formula box put a.custom_formula_lightningjump(a,b), a.custom_formula_fireblast(a,b) and a.custom_formula_paladinstrike(a,b):
class Scene_Battle < Scene_Base attr_accessor :log_window end def manual_make_damage_value(value, subject, item) value *= item_element_rate(subject, item) value *= mdr value = apply_critical(value) if @result.critical value = apply_variance(value, item.damage.variance) value = apply_guard(value) @result.make_damage(value.to_i, item) end def custom_formula_lightningjump(a, b) log_window = SceneManager.scene.log_window targets = a.current_action.opponents_unit.alive_members targets.delete(b) if targets.length > 3 targets = targets.shuffle.take(3) end targets.unshift(b) item = a.current_action.item targets.each_with_index { |target, index| standard_formula = 200 + a.mat * 2 - target.mdf * 2 target.result.clear target.result.used = item_test(a, item) target.result.missed = (target.result.used && rand >= item_hit(a, item)) target.result.evaded = (!target.result.missed && rand < item_eva(a, item)) if target.result.hit? unless item.damage.none? target.result.critical = (rand < item_cri(a, item)) value = standard_formula - (0.25 * standard_formula * index) target.manual_make_damage_value(value, a, item) target.execute_damage(a) log_window.clear log_window.add_text("The lightning jumps!") log_window.display_action_results(target, item) end end } b.result.clear return 0 end def custom_formula_fireblast(a, b) log_window = SceneManager.scene.log_window targets = a.current_action.opponents_unit.alive_members targets.delete(b) targets.unshift(b) item = a.current_action.item targets.each_with_index { |target, index| standard_formula = 200 + a.mat * 2 - target.mdf * 2 target.result.clear target.result.used = item_test(a, item) target.result.missed = (target.result.used && rand >= item_hit(a, item)) target.result.evaded = (!target.result.missed && rand < item_eva(a, item)) if target.result.hit? unless item.damage.none? target.result.critical = (rand < item_cri(a, item)) if index == 0 value = standard_formula else value = standard_formula * 0.3 end target.manual_make_damage_value(value, a, item) target.execute_damage(a) log_window.clear log_window.add_text("The fire spreads!") log_window.display_action_results(target, item) end end } b.result.clear return 0 end def custom_formula_paladinstrike(a, b) log_window = SceneManager.scene.log_window standard_formula = a.atk * 4 - b.def * 2 item = a.current_action.item b.result.clear b.result.used = item_test(a, item) b.result.missed = (b.result.used && rand >= item_hit(a, item)) b.result.evaded = (!b.result.missed && rand < item_eva(a, item)) if b.result.hit? unless item.damage.none? b.result.critical = (rand < item_cri(a, item)) b.manual_make_damage_value(standard_formula, a, item) damage = b.result.hp_damage b.execute_damage(a) log_window.display_action_results(b, item) end end targets = a.current_action.friends_unit.alive_members targets.delete_if { |target| target.hp == target.mhp } if targets.length > 0 lowest = targets[0] targets.each { |target| p "#{target.name} #{target.hp}"; lowest = target if target.hp < lowest.hp } lowest.manual_make_damage_value(-damage * 0.4, a, item) lowest.execute_damage(a) log_window.clear log_window.add_text(sprintf("%s is healed by the strike!", lowest.name)) log_window.display_action_results(lowest, item) end b.result.clear return 0 end
For Reboot, did you want non-robots to not even be chosen as targets, or for the skill simply to not work on a non-robot if one is targeted? Or better yet, have it auto-target a robot if you targeted a non-robot.
Pages:
1