赞 | 289 |
VIP | 0 |
好人卡 | 0 |
积分 | 85 |
经验 | 0 |
最后登录 | 2019-7-14 |
在线时间 | 775 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 8498
- 在线时间
- 775 小时
- 注册时间
- 2017-11-10
- 帖子
- 1231
|
本帖最后由 文雅夕露 于 2018-3-24 19:15 编辑
其实这个效果很简单实现,就是简单的替换一些战斗数据摆了。
脚本已经写好了。
效果1.MP为0时进入战斗不能状态;HP为0不会有影响,并且使用魔法依旧消耗MP
效果2.战斗每回合结束恢复所有的MP,前提HP充足的情况之下;
效果3.HP不充足,只恢复应有的数值;
效果4.MP为0时,HP还有也不能恢复。
脚本一览:
- #==============================================================================
- # ■ Game_BattlerBase
- #------------------------------------------------------------------------------
- # 管理战斗者的类。主要含有能力值计算的方法。Game_Battler 类的父类。
- #==============================================================================
- class Game_BattlerBase
- #--------------------------------------------------------------------------
- # ● 获取普通能力的最小值
- #--------------------------------------------------------------------------
- def param_min(param_id)
- return 0 if param_id == 0 # MMP
- return 1
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- state_resist_set.each {|state_id| erase_state(state_id) }
- @hp = [[@hp, mhp].min, 0].max
- @mp = [[@mp, mmp].min, 0].max
- @mp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
- end
- #--------------------------------------------------------------------------
- # ● 判定是否死亡
- #--------------------------------------------------------------------------
- def dead?
- exist? && death_state? || @mp == 0
- end
- end
- #==============================================================================
- # ■ Game_Battler
- #------------------------------------------------------------------------------
- # 处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
- #==============================================================================
- class Game_Battler < Game_BattlerBase
- #--------------------------------------------------------------------------
- # ● 处理伤害
- # 调用前需要设置好
- # @result.hp_damage @result.mp_damage
- # @result.hp_drain @result.mp_drain
- #--------------------------------------------------------------------------
- def execute_damage(user)
- on_damage(@result.hp_damage) if @result.hp_damage > 0
- self.hp -= @result.mp_damage
- self.mp -= @result.hp_damage
- user.hp += @result.mp_drain
- user.mp += @result.hp_drain
- end
- #--------------------------------------------------------------------------
- # ● 死亡
- #--------------------------------------------------------------------------
- def die
- @mp = 0
- clear_states
- clear_buffs
- end
- #--------------------------------------------------------------------------
- # ● 复活
- #--------------------------------------------------------------------------
- def revive
- @mp = 1 if @mp == 0
- end
- #--------------------------------------------------------------------------
- # ● 回合结束处理
- #--------------------------------------------------------------------------
- alias recover_on_turn_end on_turn_end
- def on_turn_end
- if self.is_a?(Game_Actor) && self.mp != 0
- if (self.mmp - self.mp) <= self.hp
- self.hp -= (self.mmp - self.mp).abs
- self.mp += (self.mmp - self.mp)
- elsif (self.mmp - self.mp) > self.hp
- self.mp += self.hp
- self.hp -= self.hp
- end
- end
- recover_on_turn_end
- end
- end
- #encoding:utf-8
- #==============================================================================
- # ■ Window_Base
- #------------------------------------------------------------------------------
- # 游戏中所有窗口的父类
- #==============================================================================
- class Window_Base < Window
- #--------------------------------------------------------------------------
- # ● 获取 HP 的文字颜色
- #--------------------------------------------------------------------------
- def hp_color(actor)
- return crisis_color if actor.hp < actor.mhp / 4
- return normal_color
- end
- #--------------------------------------------------------------------------
- # ● 获取 MP 的文字颜色
- #--------------------------------------------------------------------------
- def mp_color(actor)
- return knockout_color if actor.mp == 0
- return crisis_color if actor.mp < actor.mmp / 4
- return normal_color
- end
- #--------------------------------------------------------------------------
- # ● 获取 TP 的文字颜色
- #--------------------------------------------------------------------------
- def tp_color(actor)
- return normal_color
- end
- #--------------------------------------------------------------------------
- # ● 绘制角色行走图
- #--------------------------------------------------------------------------
- def draw_actor_graphic(actor, x, y)
- draw_character(actor.character_name, actor.character_index, x, y)
- end
- #--------------------------------------------------------------------------
- # ● 绘制角色肖像图
- #--------------------------------------------------------------------------
- def draw_actor_face(actor, x, y, enabled = true)
- draw_face(actor.face_name, actor.face_index, x, y, enabled)
- end
- #--------------------------------------------------------------------------
- # ● 绘制名字
- #--------------------------------------------------------------------------
- def draw_actor_name(actor, x, y, width = 112)
- change_color(mp_color(actor))
- draw_text(x, y, width, line_height, actor.name)
- end
- end
复制代码 |
评分
-
查看全部评分
|