简单的说就是
脚本用一种比较复杂的方法准确记录了伤害。
如果在5秒内,被薄葬的目标会受到可能致命的伤害的话,会先加上足够多的血量再受到伤害,然后把血量还原为1.(实际观察中由于存在回血,看到的都是2.)
因为确实遭受了这种即使是致命的伤害,所以刃甲是会反弹的。
以下引用6.59D U9某大神的版本
薄葬 A10L
薄葬在接下来的5秒内阻止所有将导致目标英雄死亡的伤害。
function BoZang_SheZhiShengMingZhi takes nothing returns boolean
//已完成
local trigger t=GetTriggeringTrigger()
//创建局部触发器变量t 并使之= 执行这个函数的触发器
local string MissionKey=(I2S(H2I((t))))
//创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
local unit U2=GetUnit(MissionKey,"Target")
//创建局部单位变量U2 并使之=从游戏缓存udg_GC MissionKey项目 的"Target"类别中 读取的单位
local real Damage=(GetStoredReal(udg_GC,(MissionKey),("Damage")))
//定义局部实数变量Damage 并使之=从游戏缓存udg_GC MissionKey项目 的"Damage"类别中 读取的实数
local real NewLife=GetMaxReal(GetUnitState(U2,UNIT_STATE_LIFE)-Damage,1)
//定义局部实数变量NewLife 并使之= 单位U2的当前生命值-Damage 该值不会低于1点
local real FakeLife=(GetStoredReal(udg_GC,((I2S(H2I((U2))))),("ShallowGrave|FakeLife")))
//定义局部实数变量FakeLife 并使之=从游戏缓存udg_GC 将单位U2的地址转化为字符串的项目 的"ShallowGrave|FakeLife"类别中 读取的实数
call SetUnitState(U2,UNIT_STATE_LIFE,NewLife)
//设置单位U2的生命值为NewLife
call StoreReal(udg_GC,((I2S(H2I((U2))))),("ShallowGrave|FakeLife"),((FakeLife-Damage)*1.0))
//在游戏缓存udg_GC的 将单位U2的地址转化为字符串的项目 的"ShallowGrave|FakeLife"类别中 存入实数:FakeLife-Damage
call FlushStoredMission(udg_GC,(MissionKey))
//清空游戏缓存udg_GC中 MissionKey的项目
call DisableTriggerCustom(t)
//关闭触发器t
set t=null
//清空变量t
set U2=null
//清空变量U2
return false
//返回 假
endfunction
function BoZang_JiLuShangHai takes unit U2,real Damage returns nothing
//已完成
local trigger t=CreateTrigger()
//创建局部触发器变量t
local string MissionKey=(I2S(H2I((t))))
//创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
local real FakeLife=(GetStoredReal(udg_GC,((I2S(H2I((U2))))),("ShallowGrave|FakeLife")))
//定义局部实数变量FakeLife 并使之=从游戏缓存udg_GC 将单位U2的地址转化为字符串的项目 的"ShallowGrave|FakeLife"类别中 读取的实数
call StoreInteger(udg_GC,(MissionKey),("Target"),H2I((U2)))
//在游戏缓存udg_GC的 MissionKey项目 的"Target"类别中 存入整数:单位U2的地址
call StoreReal(udg_GC,(MissionKey),("Damage"),((Damage)*1.0))
//在游戏缓存udg_GC的 MissionKey项目 的"Damage"类别中 存入实数:Damage
call StoreReal(udg_GC,((I2S(H2I((U2))))),("ShallowGrave|FakeLife"),((FakeLife+Damage)*1.0))
//在游戏缓存udg_GC的 将单位U2的地址转化为字符串的项目 的"ShallowGrave|FakeLife"类别中 存入实数:FakeLife+Damage
call TriggerRegisterTimerEvent(t,0,false)
//为触发器t注册事件:在0秒后触发一次
call TriggerAddCondition(t,Condition(function BoZang_SheZhiShengMingZhi))
//为触发器t添加条件:BoZang_SheZhiShengMingZhi
set t=null