Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- =begin
- In diesem Script wird gehandhabt, wie das Heilen abläuft bzw. eine bessere
- AI bezüglich heilen wird ausgeführt.
- Es wird geschaut welcher Member der Troop Gruppe die geringste HP hat und
- anhand dessen wird dieser dann als Target gewählt.
- Hinterlege einfach im Skill, der heilt den Notetag <healing>. Dadurch wird
- dann die bessere AI verwendet.
- =end
- module FFS
- module HealAI
- OBERGRENZE = 40 # definiert die Heil-Grenze
- end
- end
- class RPG::UsableItem
- def healing?
- !!(self.note =~ /<healing>/i)
- end
- end
- class Game_Action
- #--------------------------------------------------------------------------
- # * Targets for Allies
- #--------------------------------------------------------------------------
- def targets_for_friends
- if item.for_user?
- [subject]
- elsif item.for_dead_friend?
- if item.for_one?
- [friends_unit.members[@target_index]]
- else
- friends_unit.members
- end
- elsif item.for_friend? && item.healing?
- if item.for_one?
- [friends_unit.heal_target]
- else
- friends_unit.alive_members
- end
- elsif item.for_friend?
- if item.for_one?
- [friends_unit.smooth_target(@target_index)]
- else
- friends_unit.alive_members
- end
- end
- end
- end
- class Game_Unit
- def heal_target
- lowestHP = []
- for i in 0...members.length
- member = members[i]
- lowestHP.push(member) if member.alive? && member.hp < member.mhp
- end
- lowest = nil
- for i in 0...lowestHP.length
- lowest = lowestHP[i] if lowest == nil
- lowest = lowestHP[i] if lowest.difHP > lowestHP[i].difHP
- end
- return lowest
- end
- def heal_trigger?
- hp_in_range = false
- for i in 0...members.length
- member = members[i]
- hp_in_range = member.difHP <= FFS::HealAI::OBERGRENZE && member.difHP > 0
- break if hp_in_range
- end
- return hp_in_range
- end
- end
- class Game_Battler < Game_BattlerBase
- def difHP
- dif = (hp * 1.0 / mhp) * 100
- return dif
- end
- end
- class Game_Enemy < Game_Battler
- #--------------------------------------------------------------------------
- # * Create Battle Action
- #--------------------------------------------------------------------------
- def make_actions
- super
- return if @actions.empty?
- action_list = enemy.actions.select {|a| action_valid?(a) }
- return if action_list.empty?
- rating_max = action_list.collect {|a| a.rating }.max
- rating_zero = rating_max - 3
- # Entferne Healing-Skills, wenn kein Member <40% HP hat
- action_list.reject! do |a|
- skill = $data_skills[a.skill_id]
- skill.healing? && !friends_unit.heal_trigger?
- end
- action_list.reject! {|a| a.rating <= rating_zero }
- @actions.each do |action|
- action.set_enemy_action(select_enemy_action(action_list, rating_zero))
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment