- Editado
Autor: Kyonides Arkanthes
Introducción
¿Querían permitirles a sus monstruos que se vengaran de los héroes que matan a sus compañeros de armas? ¡Ahora pueden hacerlo!
Versión XP
# * KMonsterPals XP
# Scripter : Kyonides Arkanthes
# 2019-10-29
# Este script permite a los monstruos que (sobre)actúen luego de que derroten a
# su amigo monstruoso. Usan una técnica oculta para tratar de vengarse del héroe
# que lo provocó. Se calmarán si logran vengarlo.
# Nota: Si el monstruo vengativo tiene poco mana, el script le provee lo mínimo
# para que pueda usarlo al menos una vez. (¡Agradézcanselo a su ira!)
module KMonster
PALS = {} # ¡Ni lo volteen a ver!
PALS.default = {} # ¡No lo toquen que se rompe!
# [IDTropa] = { IndiceMonstruo => [IndiceMonstruoAmigo, IDTécnica], etc. }
# NOTA: IDTécnica puede ser un arreglo o lista de IDs como [1,2,3]
PALS[1] = { 0 => [1, 1], 1 => [0, 1] }
end
class Game_Battler
alias :kyon_monsterpals_gm_battler_scu :skill_can_use?
alias :kyon_monsterpals_gm_battler_se :skill_effect
def skill_can_use?(sid)
result = kyon_monsterpals_gm_battler_scu(sid)
return true if result and @revenge_skill == sid
result
end
def skill_effect(user, skill)
killed = @hp == 0
result = kyon_monsterpals_gm_battler_se(user, skill)
if result and self.kind == :enemy and !killed and @hp == 0
if (ids = KMonster::PALS[@troop_id][@member_index])
enemy = $game_troop.enemies[ids[0]]
enemy.revenge_target = $game_party.actors.index(user)
sid = ids[1].is_a?(Array)? ids[rand(ids.size)] : ids[1]
enemy.revenge_skill = sid
cost = $data_skills[sid].sp_cost
enemy.sp = cost if cost > enemy.sp
end
end
result
end
end
class Game_Enemy
attr_writer :revenge_target, :revenge_skill
alias :kyon_monsterpals_gm_enemy_ma :make_action
def make_action
if @revenge_target and @revenge_skill
if $game_party.actors[@revenge_target].hp == 0 or
$data_skills[@revenge_skill].sp_cost > @sp
@revenge_target = @revenge_skill = nil
else
a = self.current_action
a.kind = 1
a.basic = 0
a.skill_id = @revenge_skill
a.target_index = @revenge_target
return
end
end
kyon_monsterpals_gm_enemy_ma
end
def kind() :enemy end
end
class Game_Actor
def kind() :actor end
end
Versión VX
# * KMonsterPals VX
# Scripter : Kyonides Arkanthes
# 2019-10-29
# Este script permite a los monstruos que (sobre)actúen luego de que derroten a
# su amigo monstruoso. Usan una técnica oculta para tratar de vengarse del héroe
# que lo provocó. Se calmarán si logran vengarlo.
# Nota: Si el monstruo vengativo tiene poco mana, el script le provee lo mínimo
# para que pueda usarlo al menos una vez. (¡Agradézcanselo a su ira!)
module KMonster
PALS = {} # ¡Ni lo volteen a ver!
PALS.default = {} # ¡No lo toquen que se rompe!
# [IDTropa] = { IndiceMonstruo => [IndiceMonstruoAmigo, IDTécnica], etc. }
# NOTA: IDTécnica puede ser un arreglo o lista de IDs como [1,2,3]
PALS[1] = { 0 => [1, 1], 1 => [0, 1] }
end
class Game_Battler
alias :kyon_monsterpals_gm_battler_scu :skill_can_use?
alias :kyon_monsterpals_gm_battler_se :skill_effect
def skill_can_use?(skill)
result = kyon_monsterpals_gm_battler_scu(skill)
return true if result and @revenge_skill == skill.id
result
end
def skill_effect(user, skill)
killed = @hp == 0
result = kyon_monsterpals_gm_battler_se(user, skill)
return if !result or @skipper or @missed or @evaded
if self.kind == :enemy and !killed and @hp == 0
if (ids = KMonster::PALS[@troop_id][@member_index])
enemy = $game_troop.members[ids[0]]
enemy.revenge_target = $game_party.members.index(user)
sid = ids[1].is_a?(Array)? ids[rand(ids.size)] : ids[1]
enemy.revenge_skill = sid
cost = $data_skills[sid].sp_cost
enemy.sp = cost if cost > enemy.sp
end
end
end
end
class Game_Enemy
attr_writer :revenge_target, :revenge_skill
alias :kyon_monsterpals_gm_enemy_ma :make_action
def restriction
if @revenge_target and @revenge_skill
@states.delete_if{|s| s.restriction == 1 }
end
super
end
def make_action
if @revenge_target and @revenge_skill
if $game_party.members[@revenge_target].hp == 0 or
$data_skills[@revenge_skill].sp_cost > @sp
@revenge_target = @revenge_skill = nil
else
a = self.current_action
a.kind = 1
a.basic = 0
a.skill_id = @revenge_skill
a.target_index = @revenge_target
return
end
end
kyon_monsterpals_gm_enemy_ma
end
def kind() :enemy end
end
class Game_Actor
def kind() :actor end
end
Versión VX Ace
# * KMonsterPals ACE
# Scripter : Kyonides Arkanthes
# 2019-10-29
# Este script permite a los monstruos que (sobre)actúen luego de que derroten a
# su amigo monstruoso. Usan una técnica oculta para tratar de vengarse del héroe
# que lo provocó. Se calmarán si logran vengarlo.
# Nota: Si el monstruo vengativo tiene poco mana, el script le provee lo mínimo
# para que pueda usarlo al menos una vez. (¡Agradézcanselo a su ira!)
module KMonster
PALS = {} # ¡Ni lo volteen a ver!
PALS.default = {} # ¡No lo toquen que se rompe!
# [IDTropa] = { IndiceMonstruo => [IndiceMonstruoAmigo, IDTécnica], etc. }
# NOTA: IDTécnica puede ser un arreglo o lista de IDs como [1,2,3]
PALS[1] = { 0 => [1, 1], 1 => [0, 1] }
end
class Game_BattlerBase
alias :kyon_monsterpals_gm_battlerbase_scm :skill_conditions_met?
def skill_conditions_met?(skill)
result = kyon_monsterpals_gm_battlerbase_scm(skill)
return true if result and @revenge_skill == skill.id
result
end
end
class Game_Battler
alias :kyon_monsterpals_gm_battler_ed :execute_damage
def execute_damage(user)
killed = @hp == 0
kyon_monsterpals_gm_battler_ed(user)
return if user.kind == :enemy or kind != :enemy or killed or @hp > 0
ids = KMonster::PALS[$game_troop.troop_id][@index]
return unless ids
enemy = $game_troop.members[ids[0]]
enemy.revenge_target = $game_party.index_id(user.id)
sid = ids[1].is_a?(Array)? ids[rand(ids.size)] : ids[1]
enemy.revenge_skill = sid
cost = $data_skills[sid].mp_cost
enemy.mp = cost if cost > enemy.mp
end
end
class Game_Enemy
attr_writer :revenge_target, :revenge_skill
alias :kyon_monsterpals_gm_enemy_ma :make_actions
def make_actions
if @revenge_target and @revenge_skill
@actions.clear
if $game_party.members[@revenge_target].hp == 0 or
$data_skills[@revenge_skill].sp_cost > @sp
@revenge_target = @revenge_skill = nil
else
@actions << action = Game_Action.new(self)
action.set_skill(@revenge_skill)
action.target_index = @revenge_target
return
end
end
kyon_monsterpals_gm_enemy_ma
end
def kind() :enemy end
end
class Game_Actor
def kind() :actor end
end
class Game_Party
def index_id(aid) @actors.index(aid) end
end
class Game_Troop
attr_reader :troop_id
end
Términos de Uso
Deben incluir mi seudónimo y el URL del sitio del que lo copiaron.
Es gratuito para demos y juegos no comerciales.