Code:
#==============================================================================
# On Map Regeneration Script v. 1.09
# by Caldaron (01.11.2006)
#==============================================================================
# DESCRIPTIONS
#==============================================================================
#--------------------------------------------------------------------------
# USE_HP/SP_MAPS: true: HP/SP Regeneration except for HP/SP_MAPS
# false: HP/SP Regeneration only on HP/SP_MAPS
# HP/SP_MAPS: Map_IDs which enable/disable HP/SP Regeneration
# HP/SP_WEAPONS: Weapon ID enables HP/SP Regeneration
# HP/SP_ARMORS: Armor ID enables HP/SP Regeneration
# HP/SP_WAIT: Max Wait Time
# Should be Max achivable HP/SP
# HP/SP_REG: Value of HP/SP Regeneration
# HP/SP_PERCENT: true: HP/SP_REG is %
# HP/SP_STOP: State ID which prevents Regeneration
# $game_map.
# hp/sp_switch[ID]=: true: enables HP/SP Regeneration
# hp/sp_time[ID]=x: enables x-times HP/SP Regeneration
# hp/sp_mod[ID]=x: x% HP/SP Regeneration Speed
# ID = actor.id-1
#--------------------------------------------------------------------------
#==============================================================================
SDK.log('On Map Regeneration', 'Caldaron', 1.09, '2006-11-01')
if SDK.state('On Map Regeneration')
#==============================================================================
module Regenerate
USE_HP_MAPS = false
USE_SP_MAPS = false
HP_MAPS = []
SP_MAPS = []
HP_WEAPONS = []
SP_WEAPONS = []
HP_ARMORS = []
SP_ARMORS = []
HP_WAIT = 9999
SP_WAIT = 9999
HP_REG = 1
SP_REG = 1
HP_PERCENT = false
SP_PERCENT = false
HP_STOP = [1]
SP_STOP = [1]
end
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
attr_accessor :hp_mod
attr_accessor :sp_mod
attr_accessor :hp_switch
attr_accessor :sp_switch
attr_accessor :hp_time
attr_accessor :sp_time
attr_accessor :hp_wait
attr_accessor :sp_wait
#--------------------------------------------------------------------------
alias map_reg_init initialize
def initialize
@hp_mod = []
@sp_mod = []
@hp_switch = []
@sp_switch = []
@hp_time = []
@sp_time = []
@hp_wait = []
@sp_wait = []
($data_actors.size-1).times do
@hp_mod.push(100)
@hp_switch.push(false)
@hp_wait.push(0)
@hp_time.push(0)
@sp_mod.push(100)
@sp_switch.push(false)
@sp_wait.push(0)
@sp_time.push(0)
end
map_reg_init
end
#--------------------------------------------------------------------------
alias map_reg_update update
def update
for actor in $game_party.actors
i = actor.id
i -= 1
@actor = actor
@hp_wait[i] -= 1
@sp_wait[i] -= 1
if (Regenerate::USE_HP_MAPS and not Regenerate::HP_MAPS.include?(@map_id)) or
Regenerate::HP_WEAPONS.include?(actor.weapon_id) or
Regenerate::HP_ARMORS.include?(actor.armor1_id) or
Regenerate::HP_ARMORS.include?(actor.armor2_id) or
Regenerate::HP_ARMORS.include?(actor.armor3_id) or
Regenerate::HP_ARMORS.include?(actor.armor4_id) or
@hp_switch or @hp_time[i] > 0 or
(Regenerate::USE_HP_MAPS == false and Regenerate::HP_MAPS.include?(@map_id))
if @hp_wait[i] < 1
@hp_time[i] -= 1 if @hp_time[i] > 0
@actor.hp_reg
if Regenerate::HP_PERCENT
@hp_wait[i] = Regenerate::HP_WAIT/(@actor.maxhp * (@actor.maxhp/(Regenerate::HP_REG*100)) * (@hp_mod[i]/100.00))
else
@hp_wait[i] = Regenerate::HP_WAIT/(@actor.maxhp * Regenerate::HP_REG * (@hp_mod[i]/100.00))
end
end
end
if (Regenerate::USE_SP_MAPS and not Regenerate::SP_MAPS.include?(@map_id)) or
Regenerate::SP_WEAPONS.include?(actor.weapon_id) or
Regenerate::SP_ARMORS.include?(actor.armor1_id) or
Regenerate::SP_ARMORS.include?(actor.armor2_id) or
Regenerate::SP_ARMORS.include?(actor.armor3_id) or
Regenerate::SP_ARMORS.include?(actor.armor4_id) or
@sp_switch or @sp_time[i] > 0 or
(Regenerate::USE_SP_MAPS == false and Regenerate::SP_MAPS.include?(@map_id))
if @sp_wait[i] < 1
@sp_time[i] -= 1 if @sp_time[i] > 0
@actor.sp_reg
if @actor.maxsp != 0
if Regenerate::HP_PERCENT
@sp_wait[i] = Regenerate::SP_WAIT/(@actor.maxsp * (@actor.maxsp/(Regenerate::SP_REG*100)) * (@sp_mod[i]/100.00))
else
@sp_wait[i] = Regenerate::SP_WAIT/(@actor.maxsp * Regenerate::SP_REG * (@sp_mod[i]/100.00))
end
end
end
end
end
map_reg_update
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Game_Actor
#--------------------------------------------------------------------------
def stop_reg(type)
case type
when 0
for i in Regenerate::HP_STOP
if self.state?(i)
return true
end
end
when 1
for i in Regenerate::SP_STOP
if self.state?(i)
return true
end
end
end
return false
end
#--------------------------------------------------------------------------
def hp_reg
i = -1 + id
@mod = $game_map.hp_mod[i]
if not self.stop_reg(0) and not (@mod == 0 or @mod == nil)
self.hp += 1
end
self.hp = Integer([self.hp, self.maxhp].min)
end
#--------------------------------------------------------------------------
def sp_reg
i = -1 + id
@mod = $game_map.sp_mod[i]
if not self.stop_reg(1) and not (@mod == 0 or @mod == nil)
self.sp += 1
end
self.sp = Integer([self.sp, self.maxsp].min)
end
#--------------------------------------------------------------------------
end
#==============================================================================
end