Project1

标题: 魔法盾 [打印本页]

作者: evermilk    时间: 2010-11-19 05:49
标题: 魔法盾
本帖最后由 evermilk 于 2010-11-19 05:53 编辑

看到似乎没有人做过这个,遂发之
类似于魔兽娜迦海妖的那个魔法盾,区别在于不是优先判断魔法值,换句话说即是生命值低于伤害值还是会死
于是有人会问,那这个技能还有p用,嘛,往下看吧
首先我们设定伊尔维亚这只为魔法盾拥有者。
接着,设置三个变量。 类似这样
活用变量的含义是即时性的变量,也就是说下次无论何时再用到它都不会影响到任何事件
一号魔法盾即是绑定伊尔维亚的变量,当然,如果你真的需要的话,此变量在非战斗时刻也是可以当做活用变量的……
然后我们要编辑第一个必须用到的公共事件,如图
和第二个公共事件,如图
稍微有点复杂了是么?
于是开始详解
公共事件1是在每次战斗前读取伊尔维亚的HP,故要在Scene_Battle类里加上一个运行事件的句子
公共事件2在每次受到伤害后做出反应,故要在Game_Battler类里加上一个运行事件的句子
class Scene_Battle < Scene_Base
  def start
    super
    $game_temp.in_battle = true
    @spriteset = Spriteset_Battle.new
    @message_window = Window_BattleMessage.new
    @action_battlers = []
    create_info_viewport
    $game_temp.common_event_id = 1<<<<<<<<<<<在这里插入
  end
end
class Game_Battler
  def execute_damage(user)
    if @hp_damage > 0           # 伤害为正数
      remove_states_shock       # 受到攻击解除的状态
    end
    self.hp -= @hp_damage
    self.mp -= @mp_damage
    if @absorbed                # 吸收的情况
      user.hp += @hp_damage
      user.mp += @mp_damage
    end
    $game_temp.common_event_id = 2<<<<<<<<<<<在这里插入
  end
end
恩,最后就是在公共事件2里做糟糕的令人作呕的判定
a
1、伊尔维亚在队伍中(这个是必须的吧~
2、代表伊尔维亚hp的变量大于0(这似乎和条件一是一码事 汗
3、经过数学运算后的变量代表最后的伤害值,当这个值为正数时会有第一种类型的魔法盾判断
4、伊尔维亚的MP大于0(没有这个哪来的魔法盾是么
这时,如果符合条件的话会出现一个选项
是否使用魔法盾来抵御伤害,这个看起来很废,但确有其功能所在,这点最后再说
如果使用的话
5、伤害值是否大于魔法值,不够的话会扣光魔法值再扣血
b
当伤害值为负数时,就是说碰巧遇到了E属性的倒霉孩子
这个时候选择双倍吸收或者吸收伤害且为魔法盾充能(其实就是加魔法
恩,到了这里我想大家应该体会到了这个技能的实际用途了
不过可能有人觉得每次出现个选项比较累,这点我也考虑过,所以需要的选手大可以将这个半自动化的技能改成主动技能,通过使用它来调用是否开启选项的开关,这个对区分刷挂和精于战斗两种模式很有帮助
PS.这个技能的可塑性其实很高,还能做反弹伤害什么的,需要的话我也可以继续上教程
自觉废话太多,估计大群人也没能看懂,还是上范例吧 残念
Project0.rar (237.11 KB, 下载次数: 832)

作者: YellWind    时间: 2010-11-19 10:53
很强大
魔法盾确实是个很不错的技能
作者: summer92    时间: 2010-11-19 14:07
学习学习,游戏又多一个功能
作者: shinliwei    时间: 2010-12-8 14:45
技能很不错。我收下了。期待其他的技能。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1