赞 | 11 |
VIP | 94 |
好人卡 | 57 |
积分 | 39 |
经验 | 47770 |
最后登录 | 2024-11-12 |
在线时间 | 1582 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 3852
- 在线时间
- 1582 小时
- 注册时间
- 2006-5-5
- 帖子
- 2743
|
是用事件里的伤害处理执行吗?我记得要加这个补丁程序。
使用方法直接插入就可以了。- class Game_Battler
- # 声明一个实例变量判断是否需要显示固定伤害
- attr_accessor :battle_solid_damage
- end
- class Scene_Battle
- def update_phase4_step1
- # 隐藏帮助窗口
- @help_window.visible = false
- # 判定胜败
- if judge
- # 胜利或者失败的情况下 : 过程结束
- return
- end
- # 强制行动的战斗者不存在的情况下
- if $game_temp.forcing_battler == nil
- # 设置战斗事件
- setup_battle_event
- # 执行战斗事件中的情况下
- if $game_system.battle_interpreter.running?
- return
- end
- end
- # 强制行动的战斗者存在的情况下
- if $game_temp.forcing_battler != nil
- # 在头部添加后移动
- @action_battlers.delete($game_temp.forcing_battler)
- @action_battlers.unshift($game_temp.forcing_battler)
- end
- # 未行动的战斗者不存在的情况下 (全员已经行动)
- if @action_battlers.size == 0
- # 开始同伴命令回合
- start_phase2
- return
- end
- # 初始化动画 ID 和公共事件 ID
- @animation1_id = 0
- @animation2_id = 0
- @common_event_id = 0
- # 未行动的战斗者移动到序列的头部
- @active_battler = @action_battlers.shift
- # 如果已经在战斗之外的情况下
- if @active_battler.index == nil
- return
- end
- # 连续伤害
- if @active_battler.hp > 0 and @active_battler.slip_damage?
- @active_battler.slip_damage_effect
- @active_battler.damage_pop = true
- @active_battler.battle_solid_damage = true
- end
- # 自然解除状态
- @active_battler.remove_states_auto
- # 刷新状态窗口
- @status_window.refresh
- # 移至步骤 2
- @phase4_step = 2
- end
- end
- class Sprite_Battler < RPG::Sprite
- def update
- super
- # 战斗者为 nil 的情况下
- if @battler == nil
- self.bitmap = nil
- loop_animation(nil)
- return
- end
- # 文件名和色相与当前情况有差异的情况下
- if @battler.battler_name != @battler_name or
- @battler.battler_hue != @battler_hue
- # 获取、设置位图
- @battler_name = @battler.battler_name
- @battler_hue = @battler.battler_hue
- self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
- @width = bitmap.width
- @height = bitmap.height
- self.ox = @width / 2
- self.oy = @height
- ###########################################################################
- if @battler.dead?
- self.bitmap = RPG::Cache.battler(@battler.id.to_s + "Dead", @battler_hue)
- @width = bitmap.width
- @height = bitmap.height
- self.ox = @width / 2
- self.oy = @height
- end
- # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
- if (@battler.dead? or @battler.hidden) and @battler.is_a?(Game_Enemy)
- ###########################################################################
- self.opacity = 0
- end
- end
- # 动画 ID 与当前的情况有差异的情况下
- if @battler.damage == nil and
- @battler.state_animation_id != @state_animation_id
- @state_animation_id = @battler.state_animation_id
- loop_animation($data_animations[@state_animation_id])
- end
- # 应该被显示的角色的情况下
- if @battler.is_a?(Game_Actor) and @battler_visible
- # 不是主状态的时候稍稍降低点透明度
- if $game_temp.battle_main_phase
- self.opacity += 3 if self.opacity < 255
- else
- self.opacity -= 3 if self.opacity > 207
- end
- end
- # 明灭
- if @battler.blink
- blink_on
- else
- blink_off
- end
- # 不可见的情况下
- unless @battler_visible
- # 出现
- if not @battler.hidden and not @battler.dead? and
- ###########################################################################
- (@battler.damage == nil or @battler.damage_pop)
- if @battler.is_a?(Game_Enemy)
- ###########################################################################
- appear
- ###########################################################################
- else
- self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
- @width = bitmap.width
- @height = bitmap.height
- self.ox = @width / 2
- self.oy = @height
- end
- @battler_visible = true
- ###########################################################################
- end
- end
- # 可见的情况下
- if @battler_visible
- # 逃跑
- if @battler.hidden
- $game_system.se_play($data_system.escape_se)
- escape
- @battler_visible = false
- end
- # 白色闪烁
- if @battler.white_flash
- whiten
- @battler.white_flash = false
- end
- # 动画
- if @battler.animation_id != 0
- animation = $data_animations[@battler.animation_id]
- animation(animation, @battler.animation_hit,@battler.damage, @battler.critical)
- @battler.animation_id = 0
- end
- # 伤害
- if @battler.damage_pop
- # 显示固定伤害
- if @battler.battle_solid_damage
- damage(@battler.damage, @battler.critical)
- @battler.battle_solid_damage = false
- end
- @battler.damage = nil
- @battler.critical = false
- @battler.damage_pop = false
- end
- ###########################################################################
- # korapusu
- if @battler.damage == nil and @battler.dead?
- if @battler.is_a?(Game_Enemy)
- $game_system.se_play($data_system.enemy_collapse_se)
- collapse
- else
- $game_system.se_play($data_system.actor_collapse_se)
- # 角色战斗图变为角色ID+"Dead"的名字的战斗图
- self.bitmap = RPG::Cache.battler(@battler.id.to_s + "Dead", @battler_hue)
- @width = bitmap.width
- @height = bitmap.height
- self.ox = @width / 2
- self.oy = @height
- end
- @battler_visible = false
- ###########################################################################
- end
- end
- # 设置活动块的坐标
- if @flash_shake_switch == true
- self.x = @battler.screen_x
- self.y = @battler.screen_y
- self.z = @battler.screen_z
- @flash_shake_switch = false
- end
- if @flash_shake != 0 and @battler.damage != nil and RPG::BATTLER_JUMP
- case @flash_shake
- when 9..10
- self.x +=3
- self.y = @battler.screen_y
- self.z = @battler.screen_z
- when 6..8
- self.x -=3
- self.y = @battler.screen_y
- self.z = @battler.screen_z
- when 3..5
- self.x +=3
- self.y = @battler.screen_y
- self.z = @battler.screen_z
- when 2
- self.x -=3
- self.y = @battler.screen_y
- self.z = @battler.screen_z
- when 1
- self.x +=3
- self.y = @battler.screen_y
- self.z = @battler.screen_z
- end
- @flash_shake -= 1
- end
- end
- end
- class Interpreter
- def command_338
- # 获取操作值
- value = operate_value(0, @parameters[2], @parameters[3])
- # 处理循环
- iterate_battler(@parameters[0], @parameters[1]) do |battler|
- # 战斗者存在的情况下
- if battler.exist?
- # 更改 HP
- battler.hp -= value
- # 如果在战斗中
- if $game_temp.in_battle
- # 设置伤害
- battler.damage = value
- battler.damage_pop = true
- battler.battle_solid_damage = true
- end
- end
- end
- # 继续
- return true
- end
- end
复制代码 |
|