设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1658|回复: 3
打印 上一主题 下一主题

[已经过期] 如何实现物理吸血\法术吸血?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
77
在线时间
692 小时
注册时间
2011-10-20
帖子
907
跳转到指定楼层
1
发表于 2015-11-1 14:31:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x

当技能属性为普通攻击时 造成伤害触发物理吸血 回血的数值为造成的伤害*(a.adr-1)
【.adr为我用其他脚本新定义的属性 类似于.atk 可以通过装备、状态等增加 考虑到每个角色初始的adr为1 所以减去1 下同】
当技能属性不为普通攻击和1号属性时 造成伤害触发法术吸血 回血的数值为造成的伤害*(a.apr-1)
虽然有类似的脚本 但没有物理/法术之分 想自己修改也无从入手 所以来求助了

Lv3.寻梦者

梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
帖子
813

开拓者

2
发表于 2015-11-1 14:59:18 | 只看该作者
本帖最后由 jianyulei 于 2015-11-1 15:07 编辑

a.hp+=(a.atk*2-b.def)*b.element_rate(-1).to_i;a.atk*2-b.def
以普通攻击为例,技能公式这么写代表了攻击的同时吸收同等血量,但我不知道这么写对不对,特别是*b.element_rate(-1)这句,意思是乘以敌人的普通属性抗性,我觉得可能会出问题。
如果是固定属性的话这种写法应该没问题,普通属性就不知道敌人是如何判断的了。
还有就是,如果你想要的是加上了某状态后让人物的所有普通攻击属性的攻击都有比例吸血效果的话,正好 星泻 有个脚本能完全满足

如果你想要就是星泻那种状态附加后普通属性吸血的脚本,那么手动在里面加入物理判定 && item.physical? ,这样普通属性的物理攻击就可以吸血了。至于加到哪里我就不清楚了,反正是某个IF段的最后
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
135
在线时间
450 小时
注册时间
2015-2-25
帖子
365
3
发表于 2015-11-9 11:34:47 | 只看该作者
RUBY 代码复制
  1. class Game_Battler
  2. alias make_damage_value_09112015_drain make_damage_value
  3. def make_damage_value(user, item)
  4.     if item.damage.type == 1 && user.actor?
  5.       case item.damage.element_id
  6.       when -1, 1
  7.         @result.drain = user.adr - 1
  8.       else
  9.         @result.drain = user.apr - 1
  10.       end
  11.     end      
  12.     make_damage_value_09112015_drain(user, item)
  13.   end  
  14. end
  15.  
  16. class Game_ActionResult
  17.   attr_accessor :drain  
  18.   alias clear_hit_flags_09112015_drain clear_hit_flags
  19.   def clear_hit_flags
  20.     @drain = 0
  21.     clear_hit_flags_09112015_drain
  22.   end
  23.   alias make_damage_09112015_drain make_damage
  24.   def make_damage(value, item)
  25.     make_damage_09112015_drain(value, item)
  26.     @hp_drain = (@hp_damage * @drain).round
  27.     @hp_drain = [@battler.hp, @hp_drain].min
  28.   end
  29.   def hp_damage_text
  30.     if @hp_drain > 0 && @drain == 0
  31.       fmt = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
  32.       sprintf(fmt, @battler.name, Vocab::hp, @hp_drain)
  33.     elsif @hp_damage > 0
  34.       fmt = @battler.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
  35.       fmt2 = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
  36.       return sprintf(fmt, @battler.name, @hp_damage) if @drain == 0      
  37.       sprintf(fmt, @battler.name, @hp_damage)+"\n"+ sprintf(fmt2, @battler.name, Vocab::hp, @hp_drain)
  38.     elsif @hp_damage < 0
  39.       fmt = @battler.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
  40.       sprintf(fmt, @battler.name, Vocab::hp, -hp_damage)
  41.     else
  42.       fmt = @battler.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
  43.       sprintf(fmt, @battler.name)
  44.     end
  45.   end
  46. end


只有傷害類型為hp傷害的技能會生效

点评

第4行的&& user.actor?可以去掉  发表于 2015-11-9 11:40

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
19 小时
注册时间
2015-7-28
帖子
31
4
发表于 2015-11-12 11:52:33 | 只看该作者
原来RMVA有体力值吸收的设定
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 01:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表