By: Sir Edeon X
Desperate not, my beloved FF Fans! Here I am leading you to salvation.
This tutorial includes easy follow-the-steps guide to making:
--> Regen Status: For those who don't know what this is, it is the opposite of poison. Instead of damaging you,
it heals you.
--> Change MP Cost: Whether Half MP Cost or No MP Cost, learn how to reduce the amount of MP you use
for spells during battle. Remember the Gold Hairpin in FF6? This is useful!
--> Auto-Life Status: This status assures that when you're killed, you'll be automatically revived. This is present
in all FF above the 6th! So, why can't you use it, too?
--> 9999 ATK: A status to assure that your next attacks will cause 9999 of damage.
--> Critical ATK: A status to assure that your next attacks will hit with critical dmg.
--> Overdrive: For those who use anykind of overdrive script, this status accelerates the overdrive bar.
--> Demi and Quarter Spells (or Gravity and Gravija): For those who don't know what these spells does,
they reduce enemy's HP by 1/2 or 1/4.
--> Changing Items and Skills name and description during game: Useful if you want your game to include
more than one language!
Let's begin!!! If you have any doubt through any of these steps, just check the previous topic, where all steps
are explained a lot better. For example, if you begin reading the 9999 ATK, I suggest to read REGEN first, where
I explain everything better.
REGEN:
a) Open up Database, select Status Effects
b) Create a new one called Regen and select the animation you want.
c) Check the first and last box ('Unresistable' and 'Progressive Damage')
d) Check the 'Ends after battle' box
e) Select the amount of turns you want it to last for, and input '100' after it. Personnaly, I like it to last during
5 turns, so, this would be like this: 'After 5 turns, there is a 100 % Chance of Recovery Each
f) Check the id (number before the name) of 'Regen'
g) Close the Database.
h) Open up the Script Editor and search (Ctrl+Shift+F) for 'def update_phase4_step2'
If more than one appears, you'll have to add to both. This will assure that whatever scripts you have, this
will work.
i) Double click on it and add
if @active_battler.hp > 0 and @active_battler.regen?
@active_battler.regen_effect
@active_battler.restorative = true
@active_battler.damage_pop = true
end
below 'def update_phase4_step2'.
j) Go to Game_Battler 2 and replace the last 'end' for
def regen?
for i in @states
if $data_states
.slip_damage and i == !!!!!!
return true
end
end
return false
end
def regen_effect
self.damage = self.maxhp / 10
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
self.hp -= -self.damage
return true
end
end
k) replace the '!!!!!!' for the id of Regen
l) Go to line 129 (or the one where's 'def slip_damage?' and replace
if $data_states.slip_damage
for
if $data_states.slip_damage and i != !!!!!!
m) replace the '!!!!!!' for the id of Regen
And that's all!!! You just have to create a skill that adds this status! The only problem is that the recovery
will pop up as damage (white colored). This can be easily changed with a script for damage coloring. Here
it is. Put it before Main. This one was put together by me. I don't know who wrote the first class script, but
I've changed it a lil' bit. Thanks to whoever wrote it.
module RPG
class Sprite < ::Sprite
def damage(damage, critical, restorative)
dispose_damage
if damage.is_a?(Numeric)
damage_string = damage.abs.to_s
else
damage_string = damage.to_s
end
bitmap = Bitmap.new(160, 48)
bitmap.font.name = "High Tower Text"
bitmap.font.size = 40
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(-1, 12-1, 160, 20, damage_string, 1)
bitmap.draw_text(+1, 12-1, 160, 20, damage_string, 1)
bitmap.draw_text(-1, 12+1, 160, 20, damage_string, 1)
bitmap.draw_text(+1, 12+1, 160, 20, damage_string, 1)
if damage.is_a?(Numeric) and damage < 0
bitmap.font.color.set(176, 255, 144)
elsif restorative
bitmap.font.color.set(176, 255, 144)
else
bitmap.font.color.set(255, 255, 255)
end
bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
if critical
bitmap.font.size = 20
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(-1, -1, 160, 36, "CRITICAL", 1)
bitmap.draw_text(+1, -1, 160, 36, "CRITICAL", 1)
bitmap.font.color.set(255, 255, 255)
bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
end
@_damage_sprite = ::Sprite.new(self.viewport)
@_damage_sprite.bitmap = bitmap
@_damage_sprite.ox = 80
@_damage_sprite.oy = 20
@_damage_sprite.x = self.x
@_damage_sprite.y = self.y - self.oy / 2
@_damage_sprite.z = 3000
@_damage_duration = 40
end
end
end
# --------------------------------
class Game_Battler
attr_accessor :restorative
alias game_battler_initialize initialize
def initialize
game_battler_initialize
@restorative = false
end
end
# --------------------------------
class Sprite_Battler < RPG::Sprite
def update
super
if @battler == nil
self.bitmap = nil
loop_animation(nil)
return
end
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue
@battler_name = @battler.battler_name
@battler_hue = @battler.battler_hue
self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
@width = bitmap.width
@height = bitmap.height
self.ox = @width / 2
self.oy = @height
if @battler.dead? or @battler.hidden
self.opacity = 0
end
end
if @battler.damage == nil and
@battler.state_animation_id != @state_animation_id
@state_animation_id = @battler.state_animation_id
loop_animation($data_animations[@state_animation_id])
end
if @battler.is_a?(Game_Actor) and @battler_visible
if $game_temp.battle_main_phase
self.opacity += 3 if self.opacity < 255
else
self.opacity -= 3 if self.opacity > 207
end
end
if @battler.blink
blink_on
else
blink_off
end
unless @battler_visible
if not @battler.hidden and not @battler.dead? and
(@battler.damage == nil or @battler.damage_pop)
appear
@battler_visible = true
end
end
if @battler_visible
if @battler.hidden
$game_system.se_play($data_system.escape_se)
escape
@battler_visible = false
end
if @battler.white_flash
whiten
@battler.white_flash = false
end
if @battler.animation_id != 0
animation = $data_animations[@battler.animation_id]
animation(animation, @battler.animation_hit)
@battler.animation_id = 0
end
if @battler.damage_pop
damage(@battler.damage, @battler.critical, @battler.restorative)
@battler.damage = nil
@battler.critical = false
@battler.damage_pop = false
@battler.restorative = false
end
if @battler.damage == nil and @battler.dead?
if @battler.is_a?(Game_Enemy)
$game_system.se_play($data_system.enemy_collapse_se)
else
$game_system.se_play($data_system.actor_collapse_se)
end
collapse
@battler_visible = false
end
end
self.x = @battler.screen_x
self.y = @battler.screen_y
self.z = @battler.screen_z
end
end
------------------------------------------------------------------------------------------------------------------------------------------------
CHANGING MP COST:
These are a lot easier. I'll teach you how to reduce the MP(SP) cost to Half and to 0.
a) Open the database, and in the Status Effects create two new status: 'Half MP Cost' and 'No MP Cost'
b) Check the 'unresistable' box, which is the first one, and put them to end after battle, for both!
c) Put a minus before 'Half MP Cost' IN THE 'No MP Cost'
c) Check the id of the status (no. before the name) and close the database.
d) Script editor!!! Go to Window_Skill and change the
self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
for
#----------------------------------
mp_cost = skill.sp_cost
if @actor.states.include?(!!!!!)
mp_cost /= 2
end
if @actor.states.include?(*****)
mp_cost *= 0
end
self.contents.draw_text(x + 226, y, 48, 32, mp_cost.to_s, 2)
#----------------------------------
where '!!!!!' is the 'Half MP Cost' ID and ***** the 'NO MP Cost' ID.
e) Search for '@active_battler.sp -= @skill.sp_cost'. If more than one appears, you'll have to do the following
to both.
f) Replace
@active_battler.sp -= @skill.sp_cost
for
#----------------------------------
if @active_battler.states.include?(*****)
@active_battler.sp -= 0
elsif @active_battler.states.include?(!!!!!)
@active_battler.sp -= (@skill.sp_cost / 2)
else
@active_battler.sp -= @skill.sp_cost
end
#----------------------------------
where '!!!!!' is the 'Half MP Cost' ID and ***** the 'NO MP Cost' ID.
That's all. Create a skill that adds one of them, or even an accessory that auto-inflict one of these.