Tó:
module Imperial
EXP_GAIN_MODIFIER = 0.5
def damage_enemy(event, value, hero, weapon, critical = false)
return if event.enemy.nil? and event.object.nil?
if weapon.nil?
event.animation_id = Imperial_Config::Default_Animation
else
event.animation_id = weapon.animation_id
end
if event.object != nil
print "try start object \n"
event.try_start_object(weapon)
return
end
if event.enemy.only != nil
if event.enemy.only != weapon; event.animation_id = 0; return; end
end
rand = (10) - 5
value -= rand
event.jump(0,0) if Imperial_Config::Jump_On_Damage
value *= 2.5 if critical
value = value.to_i
evaded = event.enemy.evaded?
if evaded
event.jump(0,0)
$game_map.damage_sprites.push(Sprites::Custom.new(event, "Evade!")) if Imperial_Config::Show_Damage_Sprites
return
end
defense = event.enemy.def - event.enemy.mdf
value -= defense
value = 0 if value < 0
event.minibar.nil? ? event.minibar = Sprites::Minibar.new(event) : event.minibar.restart
if event.enemy.hp - value <= 0
$game_map.enemies.delete(event)
event.enemy.hp = 0
event.perform_kill
Audio.se_play('Audio/Se/Blow6', 80, 100)
expp = event.enemy.enemy.exp
case hero.class.to_s
when 'Game_Player'
actor = $game_party.members[0]
when 'Game_Follower'
actor = $game_party.members[hero.member_index]
end
actor = $game_party.members[0] if actor.nil?
actor.gain_exp(expp)
$game_party.members.each do |m|
next if m == actor
m.gain_exp(expp * EXP_GAIN_MODIFIER) if m
end
$game_map.damage_sprites.push(Reward_Sprite.new(hero, expp)) if Imperial_Config::Show_Reward_Sprites
else
event.enemy.hp -= value
end
$game_map.damage_sprites.push(Sprites::Damage.new(event,value,critical)) if Imperial_Config::Show_Damage_Sprites
end
def enemy_magical_damage(attacker, defender, skill, critical)
return if defender.enemy.nil? and defender.object.nil?
if defender.object != nil
print "try start object \n"
defender.try_start_object(skill)
return
end
if !skill.effects.empty?
skill.effects.each {|effect|
print "effect ! \n"
next if effect.code != 21
print "adding state! \n"
$game_map.damage_sprites.push(Sprites::Custom.new(defender, "Added State!"))
defender.enemy.enemy.add_state(effect.data_id)
}
end
return if !skill.damage.to_hp?
if !defender.object.nil?
if defender.object.only == nil
start_object
else
if skill == defender.object.only; defender.start_object; else; defender.animation_id = 0; return; end
end
return
end
if defender.enemy.only != nil
print "enemy only != nil"
if defender.enemy.only != skill; defender.animation_id = 0; return; end
end
defender.minibar.nil? ? defender.minibar = Sprites::Minibar.new(defender) : defender.minibar.restart
modifier = check_weakness(skill, defender)
jump(0,0) if Imperial_Config::Jump_On_Damage
case attacker.class.to_s
when 'Game_Player'
actor = $game_party.members[0]
when 'Game_Follower'
actor = $game_party.members[attacker.member_index]
end
string = convert_formula_damage('actor', 'defender.enemy', skill.damage.formula)
print string,"\n"
value = eval(string)
value = 0 if value < 0
value *= 3 if critical
value *= modifier if not modifier.nil?
defender.minibar.nil? ? defender.minibar = Enemy_Minibar.new(self) : defender.minibar.restart
type = check_type(modifier)
$game_map.damage_sprites.push(Sprites::Magic.new(defender, value, critical, type)) if Imperial_Config::Show_Damage_Sprites
if defender.enemy.hp - value <= 0
$game_map.enemies.delete(defender)
defender.enemy.hp = 0
defender.perform_kill
Audio.se_play('Audio/Se/Blow6', 90, 100)
expp = defender.enemy.enemy.exp
actor.gain_exp(expp)
$game_party.members.each do |m|
next if m == actor
m.gain_exp(expp * EXP_GAIN_MODIFIER) if m
end
$game_map.damage_sprites.push(Reward_Sprite.new(attacker, expp)) if Imperial_Config::Show_Reward_Sprites
else
defender.enemy.hp -= value
end
end
end
Isso aí é uma modificação direta, então coloque imediatamente embaixo do script na lista.
EXP_GAIN_MODIFIER é o modificador de experiência.
O Exp Share, por exemplo, faz com que o pokémon segurando receba metade da exp da batalha.
0.5 indica que os outros membros irão ganhar 50% da exp. Se você mudar pra 1, eles irão ganhar 100%, 0.01 ganham 1% e etc...
Se você mudar pra 0, eles não ganham nada.