机制 【干货/灾厄/原版】LifeSteal—吸血冷却详解

  • 欢迎参与泰拉瑞亚中文论坛“Q&A CAPTCHA 验证提问投稿”第一期,希望各位冒险家们踊跃参与活动哦~本次活动为有奖活动,活动时间截止到2019年5月28日!
    点击查看详情
  • 目前各个板块都招收单个板块的版主,工作优秀则可以申请大区板块的版主(问答大区仅接受大区版主申请,是例外)。大区版主工作优秀则可以申请管理员工作,同样版主可以掌握多个板块的管理员(称为“兼职”,则需要发布申请兼职帖)。版主申请您可以直接在“综合申请”板块进行申请,管理员申请请私信在职管理员具体操作后续知晓。感谢您的支持与配合~
    点击此处申请

DrShuZ

冒险家
2018/09/06
21
12
3
硬币
0枚
大家好!这里是数字!
在现在MOD普及的情况下,灾厄Calamity Mod也被大众所周知
你没有权限查看链接 现在登录或注册。

mod.fandom.com/zh/wiki/Terraria_Calamity_Mod_%E4%B8%AD%E6%96%87_Wiki)。
而现在最常见的问题,可谓是:
为什么幽魂套不能吸血了?
为什么这个装备吸血就吸一会儿?
诸如此类。
而自己一个个回复又太慢,所以,我特地写了这个帖子,来向大家普及这个知识。
 

DrShuZ

冒险家
2018/09/06
21
12
3
硬币
0枚
在原版的TR中,有着吸血冷却的说法(在之前我是把他看成了灾厄加入的,这是我的一个错误),在原版WIKI中,并没有进行专门的说明,倒是灾厄WIKI详细说了下。吸血冷却在游戏中被专门设定了一个值。
我把它说成:X
这个就不一般了,X的值每一帧都会增加,举个例子,你现在的X的值是10,下一帧就会增加至10.5。不过普通模式会增加至10.6,这意味着,普通模式每帧会增加0.6,而其他难度都是0.5
即:
普通模式:0.6/frame
专家/复仇/死亡模式:0.5/frame

而这个X的极值,会根据游戏难度的不同进行更改。具体如下
普通:80 专家:70 复仇:40 死亡:30
所以说,死亡模式每次吸血效果都会隔得很长。前期影响不会很大,但在后期几乎是一次吸血便能将X的值降至0以下。
当你使用可以吸血的武器,具体来说是得到了一次吸血效果,X的值就会减少一定的数值。这具体是按照武器造成的伤害来计算的,它们之间成正比,这并没有一个定值,每一个武器都是不同的。


当X的值等于或小于0时,大部分的吸血效果就不会生效了,这可以有效防止玩家滥用吸血来获得额外的生存时间(就是说防止你一直不死,当个赖子)
 

DrShuZ

冒险家
2018/09/06
21
12
3
硬币
0枚
接下来就是万众瞩目的“幽魂套”了。
在WIKI中,它被单独设为一个变量,被称为“canGhostHeal”,下面我简称为GH
它只有两个选项:True和Flase。字面意思,True就是可以由幽魂套提供治疗效果,flase则否。这个变量,在所有的NPC,没错,是所有的NPC中都设计到了。如果是True,当符合幽魂套的吸血条件时(即造成魔法伤害),那么便可以提供吸血效果,当然你得满足你的X值不小于0。如果是False,那么无论你的X值是多少,都无法吸血。
在大多数NPC的属性中,这个变量是被设定为Ture的,当然也要很多是False。
如果你发现自己幽魂套疯狂吸血(在满足X的值不小于0的情况下),但是你发现你攻击的NPC的GH被设置为False(不要问你怎么发现的)!
这是什么原因?出BUG了?
其实这不是什么BUG,这算这个NPC绕过了(ByPass)这个变量的检查,导致可以吸血。就像你本来不能进酒店吃饭,但是你却ByPass,绕过了检查,进入了酒店。这个一般只会出现于武器以及极少部分饰品中:聚合之脑和真菌球。
 

DrShuZ

冒险家
2018/09/06
21
12
3
硬币
0枚
既然有可以有可以绕过GH这个变量的武器/饰品,那么也就一定有:使用时不会减少X值的武器/饰品。这意味着什么?就代表你可以无限吸血。但是大家要注意,如果这类武器造成的是魔法伤害,而且你穿戴着幽魂套,当它无法绕过GH变量的话,那么它只能提供普通的吸血效果,即武器自带的,而幽魂套的吸血效果则不会生效。
那么就有人问了:数字,有没有既可以绕过GH变量,又可以绕过减X的武器/饰品呢?
有!
总计有19个。分别是:血腥短剑、灼炎弯刀、精元劫掠者、镀金鸟喙、宏伟之庇护、汲血飞刀、生命镰刀、凤凰之刃、圣护泰拉刃、真·血锋、古金圣源套、血炎套。
它们都可以无限吸血,想怎么吸就怎么吸,吸个够。
 

DrShuZ

冒险家
2018/09/06
21
12
3
硬币
0枚
接下来我附上WIKI里的武器表格,这个我给出灾厄WIKI网址,我就不多做解释了。

你没有权限查看链接 现在登录或注册。

我挑几个很特殊的装备来讲
魔力超载仪(简称ML)
这应该是被问的第二多的了,它无法绕过canGhostHeal的检查,就代表ML与幽魂套搭配时,攻击到了设置为False的NPC,将无论如何都无法吸血。在不与其搭配时,它使用也会减少X的值。所以吸着吸着就吸不了了。
无限大地
它有着2个不同的吸血弹幕。一个会减少X的值,另一个不会。这就代表不会减少X的值的弹幕可以无限给玩家提供治疗效果。
宏伟之庇护
同上,其中有个弹幕,它即可以绕过canGhostHeal,也可以不减少X的值。这一点很强力,但是每次只能回复8点血,很鸡肋。
古金圣源套
它每一件装备都可以提供吸血,而且全部ByPass,着实爹级装备。
星流之刃
跟无限大地一样,它也拥有两种可以绕过不同变量的弹幕,吸血量也十分可观。
 

DrShuZ

冒险家
2018/09/06
21
12
3
硬币
0枚
幽魂套对于绝大部分的灾厄BOSS都无法提供治疗效果!当然你使用能绕过变量检查的武器就另当别论了。
很好玩的是,幽魂套无法对噬魂幽花召唤的小怪造成治疗效果,而本体可以。。
canGhostHeal已经是不仅仅用作幽魂套的变量了,它在许多提供吸血的装备中同样出现。
古金圣源套有3种不同的吸血效果。
很多提供回血弹幕的武器会优先治愈血最少的人。
 

DrShuZ

冒险家
2018/09/06
21
12
3
硬币
0枚
现在给大家举一个具体的例子。
目前游戏模式是死亡模式,并且我身穿古金圣源套,魔力超载仪,一把每次攻击提供吸血效果的魔法武器(一次效果减少X值3点。)
当我攻击一个对GH变量为True的怪时,魔力超载仪和魔法武器将会一起扣除X的值,注意!X的值可以降至负数。所以当你造成十分可观的吸血量时,X的值就会降低到十分低,导致你会有十分长的时间无法吸血!
X的值并不是吸血的必备条件!你只需要X不小于0即可!
假设,魔力超载仪一次吸血扣除3点,那么一共就会扣除6点,在吸取5次后,X值到达0,将无法吸血。而到了1时,会优先扣除武器造成的X值减少,就会达到-2点。
不过这只是不计算每帧增加的量,在游戏中应该能吸到10次左右。
 

DrShuZ

冒险家
2018/09/06
21
12
3
硬币
0枚
补充一下,TR里的每一秒都是60帧,当你吸血时,扣除的X的值很低的话,理论上可以无限吸血。而在后期,因为扣除值与伤害成正比,所以往往一次就会消耗完,达到负值。但是,只需要你的X不小于0即可吸血。例如,你是用XXX武器,一次吸血固定扣1000的值,就意味着一次性就会降到很低的值,再经过一段时间,你的值刚好到了1,甚至是0.5,你都可以再次触发吸血效果,只不过会继续降到负值,会有相当长的一段真空期。所以在前期,吸血效果可以随意搭配,因为基本上X的值与消耗的值持平,后期则优先考虑可以Bypass吸血冷却的武器。
 

AingTii

冒险家
2019/01/30
11
21
3
硬币
0枚
“当你使用可以吸血的武器,具体来说是得到了一次吸血效果,X的值就会减少一定的数值。这具体是按照武器造成的伤害来计算的,它们之间成正比,这并没有一个定值,每一个武器都是不同的。 ”
在原版游戏中,扣除的就是本次吸血的量。
详见Projectile.ghostHeal函数
 
  • 喜欢
反馈: DrShuZ

DrShuZ

冒险家
2018/09/06
21
12
3
硬币
0枚
“当你使用可以吸血的武器,具体来说是得到了一次吸血效果,X的值就会减少一定的数值。这具体是按照武器造成的伤害来计算的,它们之间成正比,这并没有一个定值,每一个武器都是不同的。 ”
在原版游戏中,扣除的就是本次吸血的量。
详见Projectile.ghostHeal函数
是吗?谢谢补充!
 

Forliky

冒险家
2019/05/19
1
0
1
硬币
0枚
吸血时会有一道白线飞向你,在飞到你身上之前你的血量都是不会回复的,那么在第一条线飞到你身上之前理论上不是可以制造出更多的白线(吸血线)吗?为什么在实战中最多还是只有一点点回复量(过载仪)?
还是说这条线出现的时候就已经判定造成吸血减少X值了?
 

DrShuZ

冒险家
2018/09/06
21
12
3
硬币
0枚
吸血时会有一道白线飞向你,在飞到你身上之前你的血量都是不会回复的,那么在第一条线飞到你身上之前理论上不是可以制造出更多的白线(吸血线)吗?为什么在实战中最多还是只有一点点回复量(过载仪)?
还是说这条线出现的时候就已经判定造成吸血减少X值了?
我的理解是,即使有很多吸血线飞向你,但它在造成回血效果时,需要判断X的值。所以在X的值不满足吸血条件下,你也是无法回复的。
 

AingTii

冒险家
2019/01/30
11
21
3
硬币
0枚
再嘴贫一波,反正Projectile.ghostHeal函数很短,我就把函数的内容复述一遍,当作本贴的一个小小补充好了...

ghostHeal函数接受两个输入,第一个是玩家对怪物造成的伤害dmg,第二个是被击中怪物的位置。
首先函数新建一个变量num,储存为0.2-射弹已经击中怪物的次数*0.05(也就是说同一个射弹多次击中怪物后,吸血量会衰减
如果num小于等于0,或者玩家的lifeSteal值小于等于0,则函数直接return,也就是说这次攻击没有吸血效果。
再新建一个变量ai1,为dmg*num
如果ai1 <= 0,函数return,没吸血效果
然后玩家的lifeSteal 扣掉 ai1
如果射弹的标签不是魔法射弹(this.magic),函数return,没吸血效果

后面的就是寻找1200格(曼哈顿距离,含义自行百度即可)内,生命上限减去当前生命值 最大的玩家,然后在怪物位置创建回血量为ai1的回血射弹朝这个玩家飞去。

这应该可以解答13楼的疑问。
 

DrShuZ

冒险家
2018/09/06
21
12
3
硬币
0枚
再嘴贫一波,反正Projectile.ghostHeal函数很短,我就把函数的内容复述一遍,当作本贴的一个小小补充好了...

ghostHeal函数接受两个输入,第一个是玩家对怪物造成的伤害dmg,第二个是被击中怪物的位置。
首先函数新建一个变量num,储存为0.2-射弹已经击中怪物的次数*0.05(也就是说同一个射弹多次击中怪物后,吸血量会衰减
如果num小于等于0,或者玩家的lifeSteal值小于等于0,则函数直接return,也就是说这次攻击没有吸血效果。
再新建一个变量ai1,为dmg*num
如果ai1 <= 0,函数return,没吸血效果
然后玩家的lifeSteal 扣掉 ai1
如果射弹的标签不是魔法射弹(this.magic),函数return,没吸血效果

后面的就是寻找1200格(曼哈顿距离,含义自行百度即可)内,生命上限减去当前生命值 最大的玩家,然后在怪物位置创建回血量为ai1的回血射弹朝这个玩家飞去。

这应该可以解答13楼的疑问。
THX!为了防止有些人看不懂,我就简单解释一下:
1.曼哈顿距离,没什么好讲的,使用电线时,你会发现电线永远只有一个直角。而使用的总电线,就可以引申为曼哈顿距离。
实在是不懂的:
你没有权限查看链接 现在登录或注册。

2.射弹,也就是Projectile,它击中次数乘以0.05,其实在前期,次数绝大多数都是1,后期很多情况也是。就跟上面上面我讲的一样,当X的值不满足条件,就会Return。
而曼哈顿距离在这边最主要的就是寻找血量最低的人。
3.其实我不是很清楚,因为DMG的值必定大于0,而在num<0时,ai1自然就是小于0,所以我觉得可以把这个省略了。。。?
4.总的来说就是会经过两次计算。
 

DrShuZ

冒险家
2018/09/06
21
12
3
硬币
0枚
再嘴贫一波,反正Projectile.ghostHeal函数很短,我就把函数的内容复述一遍,当作本贴的一个小小补充好了...

ghostHeal函数接受两个输入,第一个是玩家对怪物造成的伤害dmg,第二个是被击中怪物的位置。
首先函数新建一个变量num,储存为0.2-射弹已经击中怪物的次数*0.05(也就是说同一个射弹多次击中怪物后,吸血量会衰减
如果num小于等于0,或者玩家的lifeSteal值小于等于0,则函数直接return,也就是说这次攻击没有吸血效果。
再新建一个变量ai1,为dmg*num
如果ai1 <= 0,函数return,没吸血效果
然后玩家的lifeSteal 扣掉 ai1
如果射弹的标签不是魔法射弹(this.magic),函数return,没吸血效果

后面的就是寻找1200格(曼哈顿距离,含义自行百度即可)内,生命上限减去当前生命值 最大的玩家,然后在怪物位置创建回血量为ai1的回血射弹朝这个玩家飞去。

这应该可以解答13楼的疑问。
是我蠢了,理解错了ai1的意义,没啥事了