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

Project1

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

[已经解决] 关于剧毒等每回合减少体力的状态问题

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2512
在线时间
215 小时
注册时间
2017-9-27
帖子
613
跳转到指定楼层
1
发表于 2018-2-21 01:16:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这里其实实质根本不是受到伤害,而是体力值每回合恢复负值。
那么问题来了,假如一个火属性魔法所造成的伤害并附加这类状态,好比说灼烧,而受到伤害者有着火属性有效度1%的特性。
但是,这类状态是体力值负值恢复,是无属性的存在,每回合无法减少灼烧伤害,在不更改状态有效度的情况下,如何做出令状态造成的伤害附加属性而非体力值负值恢复呢?通过属性有效度的方式减少属性状态伤害呢?
其实就类似于仙剑里的水毒火毒风毒雷毒土毒的意思。
浅尝辄止,宜乎众矣。

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2018-2-21 02:54:10 | 只看该作者
修改回合結束後做處理的那部分腳本
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33440
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

3
发表于 2018-2-21 10:36:20 | 只看该作者
VA 的 HP再生(包括负值)是整体计算的(武器,防具,状态,,,,)
如果要达到效果,就需要重新分开计算,貌似比较麻烦。
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
6901
在线时间
7028 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

4
发表于 2018-2-21 13:34:33 | 只看该作者
本帖最后由 RaidenInfinity 于 2018-2-21 13:35 编辑

2楼你再继续发这种回复出事了你别哭。

就如3楼所表示的,VA的HP再生率(hrg)是统一计算的。
如果要让持续伤害状态可以被属性效率影响,的确是要分开计算。

那么在默认系统里,处理每回合(包括地图上行走)HP再生或伤害 的地方是Game_Battler的regenerate_hp方法。

RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.   def regenerate_hp
  3.     damage = -(mhp * hrg).to_i
  4.     perform_map_damage_effect if $game_party.in_battle && damage > 0
  5.     @result.hp_damage = [damage, max_slip_damage].min
  6.     self.hp -= @result.hp_damage
  7.   end
  8. end


默认的伤害值(damage)是: 负数(-)的 (最大HP(mhp) 乘于(*) 再生率(hrg) ) 转为整数 (to_i)。
假设 灼烧状态 的ID是6 ,每回合扣除5%最大血量,受火属性效率影响(也假设火是1号属性)。
判定是否有状态的方法是 state?(状态ID) 而 获取属性效率的方法是 element_rate(属性ID)。
我们需要在存在状态的情况之下,获取 最大HP * HP扣除倍率 * 属性效率 的量 然后加进damage里。

因此,最终的脚本:
RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.   def regenerate_hp
  3.     damage = -(mhp * hrg).to_i
  4.     damage += (mhp * 0.05 * element_rate(1)).to_i if state?(6) #6号状态ID,1号属性ID,5%基础HP扣除倍率
  5.     perform_map_damage_effect if $game_party.in_battle && damage > 0
  6.     @result.hp_damage = [damage, max_slip_damage].min
  7.     self.hp -= @result.hp_damage
  8.   end
  9. end


如果需要再多几个状态/属性配对,那就加多几行吧。
当然,数据库里状态的效果留空就好,毕竟已经在脚本里强行定义了。

点评

谢谢!  发表于 2018-2-21 22:57

评分

参与人数 2+2 收起 理由
刹那铃音 + 1 认可答案
soulsaga + 1 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 11:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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