Project1
标题: 想拜托改下我方被攻击也显示动画的脚本…(标题不太清楚 [打印本页]
作者: 布里蓝 时间: 2012-7-9 23:43
标题: 想拜托改下我方被攻击也显示动画的脚本…(标题不太清楚
我现在用的两个脚本里,一个是脸图脚本,一个是竖版战斗脚本
因为竖版可以体现出我方被攻击和敌人攻击的动画,所以才用的
但是我不想要这个小人,虽然可以把坐标往下调,但这样的话动画也会被脸图遮住
有没有办法可以把小人图取消(变透明),并且动画出现在脸图中央?
↓竖版- #===============================================================================
- # Side-View Battle System(Patch Behind)
- # By Jet10985 (Jet)
- #===============================================================================
- # This script will allow you to have battle where all the actor's sprites are
- # display on the behind of the characters.
- # This script has: 10 customization options.
- #===============================================================================
- # Overwritten Methods:
- # Scene_Battle: show_attack_animation
- # Spriteset_Battle: update_actors
- #-------------------------------------------------------------------------------
- # Aliased methods:
- # Spriteset_Battle: create_actors, create_enemies
- # Sprite_Character: initialize, update, dispose, start_new_effect
- # Scene_Battle: use_item, next_command, prior_command
- # Game_Character: screen_x, screen_y
- #===============================================================================
-
- module Jet
- module Sideview
-
- #===========================================================================
- # ENEMY OPTIONS
- #===========================================================================
-
- # These are the attack animations for enemies when they use a regular attack.
- # It follows this format: enemy_id => animation_id
- ENEMY_ATK_ANIMS = {
-
-
- }
-
- # This is the default enemy attack animation, used when they do not have a
- # specific attack animation above.
- ENEMY_ATK_ANIMS.default = 1
-
- # This is a list of enemies whose portraits should be flipped in battle.
- FLIPPED_ENEMIES = [2, 3, 4, 5, 8, 10, 12, 13, 14, 16, 17, 18, 19]
-
- #===========================================================================
- # ACTOR OPTIONS
- #===========================================================================
-
- # Should the player sprite have a shadow beneath them?
- PLAYER_SHADOW = true
-
- # These are sprite changes depending on state infliction.
- # It follows this format: state_id => "sprite_appention"
- # This means if the state is inflicted, the sprite will look for a graphic
- # that is the same name as the character's sprite, plus the appended option.
- # EX: Ralph's sprite's name is $ralph. Ralph gets knocked-out. This means
- # state 1 was inflicted, and my below config for 1 was: 1 => "_dead"
- # Now, his shown sprite will be $ralph_dead. If the sprite does not exist,
- # no change will be made.
- # The sprite index will be the same as the actor's.
- STATE_SPRITES = {
-
- 1 => "_dead",
- 2 => "_poison",
- 3 => "_blind"
-
- }
-
- #===========================================================================
- # GENERAL_OPTIONS
- #===========================================================================
-
- # This is the animation displayed when a skill is about to be used.
- SKILL_ANIMATION = 43
-
- # This is the animation displayed when an item is about to be used.
- ITEM_ANIMATION = 43
-
- # These are the animations played when a state is inflicted.
- # It follows this format: state_id => animation_id
- STATE_ANIMATIONS = {
-
- 1 => 56,
- 2 => 50,
- 3 => 51
-
- }
-
- #===========================================================================
- # FIELD OPTIONS
- #===========================================================================
-
- # This is where the line-up begins. [x, y]. The higher the x, the further
- # right and the higher the y the further down.
- FIELD_POS = [105, 300]
-
- # This is how far down, and to the right each player is from the previous
- # actor. [x, y]. Same rules as above.
- FIELD_SPACING = [101, 0]
-
- end
- end
-
- #===============================================================================
- # DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
- #===============================================================================
-
- ($imported ||= {})[:jet] ||= {}
- $imported[:jet][:Sideview] = true
-
- class Game_Character
-
- attr_accessor :step_anime
-
- %w[screen_x screen_y].each {|a|
- aStr = %Q{
- alias jet6372_#{a} #{a}
- def #{a}(*args, &block)
- $BTEST ? 0 : jet6372_#{a}(*args, &block)
- end
- }
- module_eval(aStr)
- }
- end
-
- class Game_Actor
-
- def animation_id=(t)
- self.battle_sprite.start_animation($data_animations[t]) rescue nil
- end
- end
- class Game_Battler
-
- def battle_sprite
- return nil unless SceneManager.scene_is?(Scene_Battle)
- SceneManager.scene.spriteset.battler_sprites.each {|a|
- return a if a.battler == self
- }
- return nil
- end
- end
-
- class Spriteset_Battle
-
- alias jet2847_create_enemies create_enemies
- def create_enemies(*args, &block)
- jet2847_create_enemies(*args, &block)
- @enemy_sprites.each {|a|
- a.mirror = Jet::Sideview::FLIPPED_ENEMIES.include?(a.battler.enemy.id)
- }
- end
-
- alias jet3835_create_actors create_actors
- def create_actors(*args, &block)
- jet3835_create_actors(*args, &block)
- @jet_party = $game_party.members
- @actor_sprites.each {|a|
- a.dispose
- }
- @actor_sprites = []
- $game_party.members.each {|a|
- f = Game_Character.new
- f.set_graphic(a.character_name, a.character_index)
- f.step_anime = true
- f.set_direction(8)
- n = Sprite_Character.new(@viewport1, f)
- n.jet_x = Jet::Sideview::FIELD_POS[0] + a.index * Jet::Sideview::FIELD_SPACING[0]
- n.jet_y = Jet::Sideview::FIELD_POS[1] + a.index * Jet::Sideview::FIELD_SPACING[1]
- n.battler = a
- n.battle_sprite = true
- if Jet::Sideview::PLAYER_SHADOW
- v = Sprite.new(nil)
- v.bitmap = Cache.system("Shadow")
- n.shadow_sprite = v
- end
- @actor_sprites.push(n)
- }
- end
-
- def update_actors
- if @jet_party != $game_party.members
- @actor_sprites.each {|a|
- a.dispose
- }
- @actor_sprites = []
- create_actors
- end
- @actor_sprites.each {|a| a.update }
- end
- end
-
- class Sprite_Character
-
- attr_accessor :battle_sprite, :jet_x, :jet_y, :shadow_sprite, :battler
-
- alias jet4646_initialize initialize
- def initialize(*args, &block)
- @battle_sprite = false
- jet4646_initialize(*args, &block)
- end
-
- alias jet3645_update update
- def update(*args, &block)
- jet3645_update(*args, &block)
- if @battle_sprite
- @character.step_anime = [email protected]?
- @character.update
- self.x = @jet_x
- self.y = @jet_y
- if [email protected]?
- f = @battler.states.dup
- f.sort! {|a, b|
- a.priority <=> b.priority
- }.reverse!
- for i in 0...f.size
- a = Jet::Sideview::STATE_SPRITES[f[i].id]
- next if a.nil?
- b = (Cache.character(@character.character_name + a) rescue false)
- next unless b
- index = @character.character_index
- @character.set_graphic(@character.character_name + a, index)
- break
- end
- end
- if !@shadow_sprite.nil?
- @shadow_sprite.x = self.x - @shadow_sprite.width / 2
- @shadow_sprite.y = self.y - 28
- @shadow_sprite.visible = self.visible
- @shadow_sprite.viewport = self.viewport
- @shadow_sprite.z = self.z - 1
- end
- end
- end
-
- alias jet5484_dispose dispose
- def dispose(*args, &block)
- @shadow_sprite.dispose if !@shadow_sprite.nil?
- jet5484_dispose(*args, &block)
- end
-
- def move_x(times, amount)
- i = 0
- until i == times
- self.jet_y += amount
- i += 1
- [Graphics, SceneManager.scene.spriteset].each {|a| a.update }
- end
- end
-
- def effect?
- false
- end
- end
-
- class Game_Enemy
-
- def atk_animation_id1
- return Jet::Sideview::ENEMY_ATK_ANIMS[@enemy_id]
- end
-
- def atk_animation_id2
- return 0
- end
- end
-
- class Scene_Battle
-
- attr_reader :spriteset
-
- alias jet2711_use_item use_item
- def use_item(*args, &block)
- if @subject.is_a?(Game_Actor)
- if [email protected]_action.guard?
- @subject.battle_sprite.move_x(11, 0)
- end
- end
- if [email protected]_action.guard? && [email protected]_action.attack?
- if @subject.current_action.item.is_a?(RPG::Item)
- n = $data_animations[Jet::Sideview::ITEM_ANIMATION]
- else
- n = $data_animations[Jet::Sideview::SKILL_ANIMATION]
- end
- @subject.battle_sprite.start_animation(n)
- wait_for_animation
- end
- jet2711_use_item(*args, &block)
- if @subject.is_a?(Game_Actor)
- if [email protected]_action.guard?
- @subject.battle_sprite.move_x(11, 0)
- end
- end
- end
-
- def show_attack_animation(targets)
- aid1 = @subject.atk_animation_id1
- aid2 = @subject.atk_animation_id2
- show_normal_animation(targets, aid1, false)
- show_normal_animation(targets, aid2, true)
- end
-
- %w[next prior].each {|a|
- aStr = %Q{
- alias jet3734_#{a}_command #{a}_command
- def #{a}_command(*args, &block)
- f = BattleManager.actor
- f.battle_sprite.move_x(6, 4) if f.is_a?(Game_Actor)
- jet3734_#{a}_command(*args, &block)
- f = BattleManager.actor
- f.battle_sprite.move_x(6, -4) if f.is_a?(Game_Actor)
- end
- }
- module_eval(aStr)
- }
- end
-
- class Game_Action
-
- def guard?
- item == $data_skills[subject.guard_skill_id]
- end
- end
-
- if $imported[:jet][:BattlePopUps]
- class Sprite_Character
-
- attr_accessor :popups
-
- alias jet4758_initialize initialize
- def initialize(*args, &block)
- @popups = []
- @updating_sprites = []
- @popup_wait = 0
- jet4758_initialize(*args, &block)
- end
-
- alias jet7467_update update
- def update(*args, &block)
- jet7467_update(*args, &block)
- if @popup_wait == 0
- if [email protected]?
- @updating_sprites.push(@popups.pop)
- @popup_wait = 30
- end
- else
- @popup_wait -= 1
- end
- @updating_sprites.each {|a|
- a.visible = true if !a.visible
- a.update
- @updating_sprites.delete(a) if a.disposed?
- }
- end
-
- alias jet5483_dispose dispose
- def dispose(*args, &block)
- (@updating_sprites + @popups).each {|a| a.dispose }
- jet5483_dispose(*args, &block)
- end
-
- alias jet3745_setup_new_effect setup_new_effect
- def setup_new_effect(*args, &block)
- jet3745_setup_new_effect(*args, &block)
- do_sprite_popups
- end
-
- def make_popup(text, color)
- @popups.unshift(Sprite_JetPopup.new(text.to_s, color, self))
- end
-
- def do_sprite_popups
- return if @battler.nil?
- if @battler_struct.nil?
- @battler_struct = Struct.new(:hp, :mp, :tp).new(0, 0, 0)
- @battler_struct.hp = @battler.hp
- @battler_struct.mp = @battler.mp
- @battler_struct.tp = @battler.tp
- end
- check_success_popup
- check_hp_popup
- check_mp_popup
- check_tp_popup
- end
-
- def check_success_popup
- if @battler.result.success
- if @battler.result.critical
- make_popup(Jet::BattlePopUps::CRITICAL_TEXT, Jet::BattlePopUps::CRITICAL_COLOR)
- elsif @battler.result.missed
- make_popup(Jet::BattlePopUps::MISSED_TEXT, Jet::BattlePopUps::MISS_COLOR)
- elsif @battler.result.evaded
- make_popup(Jet::BattlePopUps::EVADED_TEXT, Jet::BattlePopUps::EVADE_COLOR)
- end
- @battler.result.clear_hit_flags
- end
- end
-
- def check_hp_popup
- if @battler_struct.hp != @battler.hp
- f = @battler_struct.hp - @battler.hp
- if f > 0
- make_popup(Jet::BattlePopUps::HURT_TEXT + f.to_s, Jet::BattlePopUps::HURT_COLOR)
- elsif f < 0
- make_popup(Jet::BattlePopUps::HEAL_TEXT + f.abs.to_s, Jet::BattlePopUps::HEAL_COLOR)
- end
- @battler_struct.hp = @battler.hp
- end
- end
-
- def check_mp_popup
- if @battler_struct.mp != @battler.mp
- f = @battler_struct.mp - @battler.mp
- if f > 0
- make_popup(Jet::BattlePopUps::HURT_TEXT_MP + f.to_s, Jet::BattlePopUps::HURT_COLOR_MP)
- elsif f < 0
- make_popup(Jet::BattlePopUps::HEAL_TEXT_MP + f.abs.to_s, Jet::BattlePopUps::HEAL_COLOR_MP)
- end
- @battler_struct.mp = @battler.mp
- end
- end
- def check_tp_popup
- if @battler_struct.tp != @battler.tp
- f = (@battler_struct.tp - @battler.tp).round
- if f > 0
- make_popup(Jet::BattlePopUps::HURT_TEXT_TP + f.to_s, Jet::BattlePopUps::HURT_COLOR_TP)
- elsif f < 0
- make_popup(Jet::BattlePopUps::HEAL_TEXT_TP + f.abs.to_s, Jet::BattlePopUps::HEAL_COLOR_TP)
- end
- @battler_struct.tp = @battler.tp
- end
- end
- end
- end
复制代码 ↓脸图- $脸图战斗 = true
- $imported = {} if $imported.nil?
- module YEA
- module BATTLE
- SKIP_PARTY_COMMAND = true
- BATTLESTATUS_NAME_FONT_SIZE = 20
- BATTLESTATUS_TEXT_FONT_SIZE = 16
- BATTLESTATUS_NO_ACTION_ICON = 185
- BATTLESTATUS_HPGAUGE_Y_PLUS = 11
- BATTLESTATUS_CENTER_FACES = false
- HELP_TEXT_ALL_FOES = "全体敌人"
- HELP_TEXT_ONE_RANDOM_FOE = "单个敌人"
- HELP_TEXT_MANY_RANDOM_FOE = "%d个随机敌人"
- HELP_TEXT_ALL_ALLIES = "全体队友"
- HELP_TEXT_ALL_DEAD_ALLIES = "全体死亡队友"
- HELP_TEXT_ONE_RANDOM_ALLY = "单个随机队友"
- HELP_TEXT_RANDOM_ALLIES = "%d个随机队友"
- end
- end
- class Game_Battler
- def can_collapse?
- return false unless dead?
- unless actor?
- return false unless sprite.battler_visible
- array = [:collapse, :boss_collapse, :instant_collapse]
- return false if array.include?(sprite.effect_type)
- end
- return true
- end
- def draw_mp?
- return true
- end
- def draw_tp?
- return $data_system.opt_display_tp
- end
- end
- module Icon
- def self.no_action; return YEA::BATTLE::BATTLESTATUS_NO_ACTION_ICON; end
- end
- class Game_Temp
- attr_accessor :battle_aid
- attr_accessor :evaluating
- end
- class Game_Action
- alias evaluate_item_with_target_abe evaluate_item_with_target
- def evaluate_item_with_target(target)
- $game_temp.evaluating = true
- result = evaluate_item_with_target_abe(target)
- $game_temp.evaluating = false
- return result
- end
- end
- class Game_Actor < Game_Battler
- def draw_mp?
- return true unless draw_tp?
- for skill in skills
- next unless added_skill_types.include?(skill.stype_id)
- return true if skill.mp_cost > 0
- end
- return false
- end
- def draw_tp?
- return false unless $data_system.opt_display_tp
- for skill in skills
- next unless added_skill_types.include?(skill.stype_id)
- return true if skill.tp_cost > 0
- end
- return false
- end
- end
- class Window_BattleStatus < Window_Selectable
- def initialize
- super(0, 0, window_width, window_height)
- self.openness = 0
- @party = $game_party.battle_members.clone
- end
- def col_max; return $game_party.max_battle_members; end
- def battle_members; return $game_party.battle_members; end
- def actor; return battle_members[@index]; end
- def update
- super
- return if @party == $game_party.battle_members
- @party = $game_party.battle_members.clone
- refresh
- end
- def draw_item(index)
- return if index.nil?
- clear_item(index)
- actor = battle_members[index]
- rect = item_rect(index)
- return if actor.nil?
- draw_actor_face(actor, rect.x+2, rect.y+2, actor.alive?)
- draw_actor_name(actor, rect.x, rect.y, rect.width-8)
- draw_actor_action(actor, rect.x, rect.y)
- draw_actor_icons(actor, rect.x, line_height*1, rect.width)
- gx = YEA::BATTLE::BATTLESTATUS_HPGAUGE_Y_PLUS
- contents.font.size = YEA::BATTLE::BATTLESTATUS_TEXT_FONT_SIZE
- draw_actor_hp(actor, rect.x+2, line_height*2+gx, rect.width-4)
- if draw_tp?(actor) && draw_mp?(actor)
- dw = rect.width/2-2
- dw += 1 if $imported["YEA-CoreEngine"] && YEA::CORE::GAUGE_OUTLINE
- draw_actor_tp(actor, rect.x+2, line_height*3, dw)
- dw = rect.width - rect.width/2 - 2
- draw_actor_mp(actor, rect.x+rect.width/2, line_height*3, dw)
- elsif draw_tp?(actor) && !draw_mp?(actor)
- draw_actor_tp(actor, rect.x+2, line_height*3, rect.width-4)
- else
- draw_actor_mp(actor, rect.x+2, line_height*3, rect.width-4)
- end
- end
- def item_rect(index)
- rect = Rect.new
- rect.width = contents.width / $game_party.max_battle_members
- rect.height = contents.height
- rect.x = index * rect.width
- if YEA::BATTLE::BATTLESTATUS_CENTER_FACES
- rect.x += (contents.width - $game_party.members.size * rect.width) / 2
- end
- rect.y = 0
- return rect
- end
- def draw_face(face_name, face_index, dx, dy, enabled = true)
- bitmap = Cache.face(face_name)
- fx = [(96 - item_rect(0).width + 1) / 2, 0].max
- fy = face_index / 4 * 96 + 2
- fw = [item_rect(0).width - 4, 92].min
- rect = Rect.new(fx, fy, fw, 92)
- rect = Rect.new(face_index % 4 * 96 + fx, fy, fw, 92)
- contents.blt(dx, dy, bitmap, rect, enabled ? 255 : translucent_alpha)
- bitmap.dispose
- end
- def draw_actor_name(actor, dx, dy, dw = 112)
- reset_font_settings
- contents.font.size = YEA::BATTLE::BATTLESTATUS_NAME_FONT_SIZE
- change_color(hp_color(actor))
- draw_text(dx+24, dy, dw-24, line_height, actor.name)
- end
- def draw_actor_action(actor, dx, dy)
- draw_icon(action_icon(actor), dx, dy)
- end
- def action_icon(actor)
- return Icon.no_action if actor.current_action.nil?
- return Icon.no_action if actor.current_action.item.nil?
- return actor.current_action.item.icon_index
- end
- def draw_tp?(actor)
- return actor.draw_tp?
- end
- def draw_mp?(actor)
- return actor.draw_mp?
- end
- def draw_current_and_max_values(dx, dy, dw, current, max, color1, color2)
- change_color(color1)
- draw_text(dx, dy, dw, line_height, current.to_s, 2)
- end
- def draw_actor_hp(actor, dx, dy, width = 124)
- draw_gauge(dx, dy, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
- change_color(system_color)
- cy = (Font.default_size - contents.font.size) / 2 + 1
- draw_text(dx+2, dy+cy, 30, line_height, Vocab::hp_a)
- draw_current_and_max_values(dx, dy+cy, width, actor.hp, actor.mhp,
- hp_color(actor), normal_color)
- end
- def draw_actor_mp(actor, dx, dy, width = 124)
- draw_gauge(dx, dy, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2)
- change_color(system_color)
- cy = (Font.default_size - contents.font.size) / 2 + 1
- draw_text(dx+2, dy+cy, 30, line_height, Vocab::mp_a)
- draw_current_and_max_values(dx, dy+cy, width, actor.mp, actor.mmp,
- mp_color(actor), normal_color)
- end
- def draw_actor_tp(actor, dx, dy, width = 124)
- draw_gauge(dx, dy, width, actor.tp_rate, tp_gauge_color1, tp_gauge_color2)
- change_color(system_color)
- cy = (Font.default_size - contents.font.size) / 2 + 1
- draw_text(dx+2, dy+cy, 30, line_height, Vocab::tp_a)
- change_color(tp_color(actor))
- draw_text(dx + width - 42, dy+cy, 42, line_height, actor.tp.to_i, 2)
- end
- end
- class Window_BattleActor < Window_BattleStatus
- def show
- create_flags
- super
- end
- def create_flags
- set_select_flag(:any)
- select(0)
- return if $game_temp.battle_aid.nil?
- if $game_temp.battle_aid.need_selection?
- select(0)
- set_select_flag(:dead) if $game_temp.battle_aid.for_dead_friend?
- elsif $game_temp.battle_aid.for_user?
- battler = BattleManager.actor
- id = battler.nil? ? 0 : $game_party.battle_members.index(battler)
- select(id)
- set_select_flag(:user)
- elsif $game_temp.battle_aid.for_all?
- select(0)
- set_select_flag(:all)
- set_select_flag(:all_dead) if $game_temp.battle_aid.for_dead_friend?
- elsif $game_temp.battle_aid.for_random?
- select(0)
- set_select_flag(:random) if $game_temp.battle_aid.for_random?
- end
- end
- def set_select_flag(flag)
- @select_flag = flag
- case @select_flag
- when :all, :all_dead, :random
- @cursor_all = true
- else
- @cursor_all = false
- end
- end
- def update_cursor
- if @cursor_all
- cursor_rect.set(0, 0, contents.width, contents.height)
- self.top_row = 0
- elsif @index < 0
- cursor_rect.empty
- else
- ensure_cursor_visible
- cursor_rect.set(item_rect(@index))
- end
- end
- def cursor_movable?
- return false if @select_flag == :user
- return super
- end
- def current_item_enabled?
- return true if $game_temp.battle_aid.nil?
- if $game_temp.battle_aid.need_selection?
- member = $game_party.battle_members[@index]
- return member.dead? if $game_temp.battle_aid.for_dead_friend?
- elsif $game_temp.battle_aid.for_dead_friend?
- for member in $game_party.battle_members
- return true if member.dead?
- end
- return false
- end
- return true
- end
- end
- class Window_BattleStatusAid < Window_BattleStatus
- attr_accessor :status_window
- def initialize
- super
- self.visible = false
- self.openness = 255
- end
- def window_width; return 128; end
- def show
- super
- refresh
- end
- def refresh
- contents.clear
- return if @status_window.nil?
- draw_item(@status_window.index)
- end
- def item_rect(index)
- return Rect.new(0, 0, contents.width, contents.height)
- end
- end
- class Window_BattleEnemy < Window_Selectable
- def initialize(info_viewport)
- super(0, Graphics.height, window_width, fitting_height(1))
- refresh
- self.visible = false
- @info_viewport = info_viewport
- end
- def col_max; return item_max; end
- def show
- create_flags
- super
- end
- def create_flags
- set_select_flag(:any)
- select(0)
- return if $game_temp.battle_aid.nil?
- if $game_temp.battle_aid.need_selection?
- select(0)
- elsif $game_temp.battle_aid.for_all?
- select(0)
- set_select_flag(:all)
- elsif $game_temp.battle_aid.for_random?
- select(0)
- set_select_flag(:random)
- end
- end
- def set_select_flag(flag)
- @select_flag = flag
- case @select_flag
- when :all, :random
- @cursor_all = true
- else
- @cursor_all = false
- end
- end
- def select_all?
- return true if @select_flag == :all
- return true if @select_flag == :random
- return false
- end
- def update_cursor
- if @cursor_all
- cursor_rect.set(0, 0, contents.width, contents.height)
- self.top_row = 0
- elsif @index < 0
- cursor_rect.empty
- else
- ensure_cursor_visible
- cursor_rect.set(item_rect(@index))
- end
- end
- def cursor_movable?
- return false if @select_flag == :user
- return super
- end
- def current_item_enabled?
- return true if $game_temp.battle_aid.nil?
- if $game_temp.battle_aid.need_selection?
- member = $game_party.battle_members[@index]
- return member.dead? if $game_temp.battle_aid.for_dead_friend?
- elsif $game_temp.battle_aid.for_dead_friend?
- for member in $game_party.battle_members
- return true if member.dead?
- end
- return false
- end
- return true
- end
- def enemy; @data[index]; end
- def refresh
- make_item_list
- create_contents
- draw_all_items
- end
- def make_item_list
- @data = $game_troop.alive_members
- @data.sort! { |a,b| a.screen_x <=> b.screen_x }
- end
- def draw_item(index); return; end
- def update
- super
- return unless active
- enemy.sprite_effect_type = :whiten
- return unless select_all?
- for enemy in $game_troop.alive_members
- enemy.sprite_effect_type = :whiten
- end
- end
- end
- class Window_BattleHelp < Window_Help
- attr_accessor :actor_window
- attr_accessor :enemy_window
- def update
- super
- if !self.visible and @text != ""
- @text = ""
- return refresh
- end
- update_battler_name
- end
- def update_battler_name
- return unless @actor_window.active || @enemy_window.active
- if @actor_window.active
- battler = $game_party.battle_members[@actor_window.index]
- elsif @enemy_window.active
- battler = @enemy_window.enemy
- end
- if special_display?
- refresh_special_case(battler)
- else
- refresh_battler_name(battler) if battler_name(battler) != @text
- end
- end
- def battler_name(battler)
- text = battler.name.clone
- return text
- end
- def refresh_battler_name(battler)
- contents.clear
- reset_font_settings
- change_color(normal_color)
- @text = battler_name(battler)
- icons = battler.state_icons + battler.buff_icons
- dy = icons.size <= 0 ? line_height / 2 : 0
- draw_text(0, dy, contents.width, line_height, @text, 1)
- dx = (contents.width - (icons.size * 24)) / 2
- draw_actor_icons(battler, dx, line_height, contents.width)
- end
- def special_display?
- return false if $game_temp.battle_aid.nil?
- return false if $game_temp.battle_aid.for_user?
- return !$game_temp.battle_aid.need_selection?
- end
- def refresh_special_case(battler)
- if $game_temp.battle_aid.for_opponent?
- if $game_temp.battle_aid.for_all?
- text = YEA::BATTLE::HELP_TEXT_ALL_FOES
- else
- case $game_temp.battle_aid.number_of_targets
- when 1
- text = YEA::BATTLE::HELP_TEXT_ONE_RANDOM_FOE
- else
- number = $game_temp.battle_aid.number_of_targets
- text = sprintf(YEA::BATTLE::HELP_TEXT_MANY_RANDOM_FOE, number)
- end
- end
- else
- if $game_temp.battle_aid.for_dead_friend?
- text = YEA::BATTLE::HELP_TEXT_ALL_DEAD_ALLIES
- elsif $game_temp.battle_aid.for_random?
- case $game_temp.battle_aid.number_of_targets
- when 1
- text = YEA::BATTLE::HELP_TEXT_ONE_RANDOM_ALLY
- else
- number = $game_temp.battle_aid.number_of_targets
- text = sprintf(YEA::BATTLE::HELP_TEXT_RANDOM_ALLIES, number)
- end
- else
- text = YEA::BATTLE::HELP_TEXT_ALL_ALLIES
- end
- end
- return if text == @text
- @text = text
- contents.clear
- reset_font_settings
- draw_text(0, 0, contents.width, line_height*2, @text, 1)
- end
- end
- class Window_SkillList < Window_Selectable
- def spacing
- return 8 if $game_party.in_battle
- return super
- end
- end
- class Window_ItemList < Window_Selectable
- def spacing
- return 8 if $game_party.in_battle
- return super
- end
- end
- class Scene_Battle < Scene_Base
- attr_accessor :enemy_window
- attr_accessor :info_viewport
- attr_accessor :spriteset
- attr_accessor :status_window
- attr_accessor :status_aid_window
- attr_accessor :subject
- alias scene_battle_create_all_windows_abe create_all_windows
- def create_all_windows
- scene_battle_create_all_windows_abe
- create_battle_status_aid_window
- set_help_window
- end
- alias scene_battle_create_info_viewport_abe create_info_viewport
- def create_info_viewport
- scene_battle_create_info_viewport_abe
- @status_window.refresh
- end
- def create_battle_status_aid_window
- @status_aid_window = Window_BattleStatusAid.new
- @status_aid_window.status_window = @status_window
- @status_aid_window.x = Graphics.width - @status_aid_window.width
- @status_aid_window.y = Graphics.height - @status_aid_window.height
- end
- def create_help_window
- @help_window = Window_BattleHelp.new
- @help_window.hide
- end
- def set_help_window
- @help_window.actor_window = @actor_window
- @help_window.enemy_window = @enemy_window
- end
- alias scene_battle_create_skill_window_abe create_skill_window
- def create_skill_window
- scene_battle_create_skill_window_abe
- @skill_window.height = @info_viewport.rect.height
- @skill_window.width = Graphics.width - @actor_command_window.width
- @skill_window.y = Graphics.height - @skill_window.height
- end
- alias scene_battle_create_item_window_abe create_item_window
- def create_item_window
- scene_battle_create_item_window_abe
- @item_window.height = @skill_window.height
- @item_window.width = @skill_window.width
- @item_window.y = Graphics.height - @item_window.height
- end
- alias scene_battle_next_command_abe next_command
- def next_command
- @status_window.show
- redraw_current_status
- @actor_command_window.show
- @status_aid_window.hide
- scene_battle_next_command_abe
- end
- alias scene_battle_prior_command_abe prior_command
- def prior_command
- redraw_current_status
- scene_battle_prior_command_abe
- end
- def redraw_current_status
- return if @status_window.index < 0
- @status_window.draw_item(@status_window.index)
- end
- alias scene_battle_command_attack_abe command_attack
- def command_attack
- $game_temp.battle_aid = $data_skills[BattleManager.actor.attack_skill_id]
- scene_battle_command_attack_abe
- end
- alias scene_battle_command_skill_abe command_skill
- def command_skill
- scene_battle_command_skill_abe
- @status_window.hide
- @actor_command_window.hide
- @status_aid_window.show
- end
- alias scene_battle_command_item_abe command_item
- def command_item
- scene_battle_command_item_abe
- @status_window.hide
- @actor_command_window.hide
- @status_aid_window.show
- end
- def on_skill_ok
- @skill = @skill_window.item
- $game_temp.battle_aid = @skill
- BattleManager.actor.input.set_skill(@skill.id)
- BattleManager.actor.last_skill.object = @skill
- if @skill.for_opponent?
- select_enemy_selection
- elsif @skill.for_friend?
- select_actor_selection
- else
- @skill_window.hide
- next_command
- $game_temp.battle_aid = nil
- end
- end
- alias scene_battle_on_skill_cancel_abe on_skill_cancel
- def on_skill_cancel
- scene_battle_on_skill_cancel_abe
- @status_window.show
- @actor_command_window.show
- @status_aid_window.hide
- end
- def on_item_ok
- @item = @item_window.item
- $game_temp.battle_aid = @item
- BattleManager.actor.input.set_item(@item.id)
- if @item.for_opponent?
- select_enemy_selection
- elsif @item.for_friend?
- select_actor_selection
- else
- @item_window.hide
- next_command
- $game_temp.battle_aid = nil
- end
- $game_party.last_item.object = @item
- end
- alias scene_battle_on_item_cancel_abe on_item_cancel
- def on_item_cancel
- scene_battle_on_item_cancel_abe
- @status_window.show
- @actor_command_window.show
- @status_aid_window.hide
- end
- alias scene_battle_select_actor_selection_abe select_actor_selection
- def select_actor_selection
- @status_aid_window.refresh
- scene_battle_select_actor_selection_abe
- @status_window.hide
- @skill_window.hide
- @item_window.hide
- @help_window.show
- end
- alias scene_battle_on_actor_ok_abe on_actor_ok
- def on_actor_ok
- $game_temp.battle_aid = nil
- scene_battle_on_actor_ok_abe
- @status_window.show
- if $imported["YEA-BattleCommandList"] && !@confirm_command_window.nil?
- @actor_command_window.visible = !@confirm_command_window.visible
- else
- @actor_command_window.show
- end
- @status_aid_window.hide
- end
- alias scene_battle_on_actor_cancel_abe on_actor_cancel
- def on_actor_cancel
- BattleManager.actor.input.clear
- @status_aid_window.refresh
- $game_temp.battle_aid = nil
- scene_battle_on_actor_cancel_abe
- case @actor_command_window.current_symbol
- when :skill
- @skill_window.show
- when :item
- @item_window.show
- end
- end
- alias scene_battle_select_enemy_selection_abe select_enemy_selection
- def select_enemy_selection
- @status_aid_window.refresh
- scene_battle_select_enemy_selection_abe
- @help_window.show
- end
- alias scene_battle_on_enemy_ok_abe on_enemy_ok
- def on_enemy_ok
- $game_temp.battle_aid = nil
- scene_battle_on_enemy_ok_abe
- end
- alias scene_battle_on_enemy_cancel_abe on_enemy_cancel
- def on_enemy_cancel
- BattleManager.actor.input.clear
- @status_aid_window.refresh
- $game_temp.battle_aid = nil
- scene_battle_on_enemy_cancel_abe
- if @skill_window.visible || @item_window.visible
- @help_window.show
- else
- @help_window.hide
- end
- end
- def end_battle_conditions?
- return true if $game_party.members.empty?
- return true if $game_party.all_dead?
- return true if $game_troop.all_dead?
- return true if BattleManager.aborting?
- return false
- end
- def refresh_status
- #如果你是程序员,请顺手帮忙优化下这里,谢谢。
- @status_window.refresh
- for i in $game_party.battle_members
- @status_window.draw_item($game_party.battle_members.index(i))
- end
- end
- end
复制代码