作者gyd (iphone 3gs get!)
看板WarCraftChat
标题Re: [ WE ] 吸收伤害的护盾
时间Sun Feb 21 13:56:01 2010
※ 引述《mist719 (白色苹果)》之铭言:
: 技能:伤害吸收
: 描述:创造一个能吸收300伤害的护盾保护自身
: 我的作法是
: 受到伤害X > 护盾值减少 > 受到伤害单位恢复X生命
: 但缺点是受到比现有生命值大的伤害时会被秒杀
: 护盾无法作用 想请教有什麽其他方法来实现
: 另外 我尝试用隐藏施法单位对使用护盾者施展灵魂连结来作
: 但伤害并没有分担 怪怪的@@
这是猛将传中, 最近新增的华陀天生技程式片段
function DieOrLive_live takes nothing returns nothing
local string s1 = H2T(GetTriggeringTrigger())
local unit target = GetTriggerUnit()
local real dmg = GetEventDamage()
local real life = GetUnitStateSwap(UNIT_STATE_LIFE, target)
local real dmgcount
if dmg>life then
//计算可抵消伤害, 累积 dmg-life-1, 剩1, 100-50-1=49
set dmgcount = dmg-(life+1)
call SetReal(s1, "dmg", GetReal(s1, "dmg")+dmgcount)
call SetHandle(s1, "lastsource", GetEventDamageSource())
call SetUnitLifeBJ( target, dmg+1)
endif
endfunction
要改成你需要的东西也很简单, 基本概念如下
function HP_Shield takes nothing returns nothing
//H2T->handle to string
local string s1 = H2T(GetTriggeringTrigger())
local unit target = GetTriggerUnit()
local real dmg = GetEventDamage()
local real life = GetUnitStateSwap(UNIT_STATE_LIFE, target)
//GetReal->store real into hash
local real dmgcount = GetReal(s1, "dmg")
//若还可以全档
if dmgcount - dmg >= 0 then
call SetUnitLifeBJ( target, life+dmg)
call SetReal(s1, "dmg", dmgcount-dmg)
else
//已用光额度
call SetUnitLifeBJ( target, life+dmgcount)
//清空hash
//清掉触发
endif
endfunction
当然,在你使用技能放护盾後,需要创一个特定单位的伤害触发
--
三国猛将传 m群
[email protected] (使用msn加入好友即可)
官方讨论区
http://tw.garena.com/3go
地图发布区
http://tw.garena.com/forum/thread.php?fid=1769
facebook
http://0rz.tw/AG7zA
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.47.79.76
※ 编辑: gyd 来自: 114.47.79.76 (02/21 13:58)
1F:→ gyd:如果要考虑生命上限的问题, 就多一步给生命上限再拔掉 02/21 15:46
2F:推 wulouise:SetUnitLifeBJ可以给单位超过上限的hp? 02/21 16:37
3F:→ c0705:怎麽程式语言都都长得好像 囧 真所谓一法通万法通 02/21 17:48
4F:推 mist719:意思是变更现有生命值去承受伤害这样? 02/21 18:13
5F:推 wulouise:就是打前补..可是这好像挡不住超过生命最大值的伤害 02/21 18:48
6F:推 linjrming:LoA现在大决好像怎样都不会死耶 02/21 21:53
7F:推 wulouise:最近都没ran到 但是没改过吧? 薄葬跟loa大绝一样被axe婊 02/21 22:16
8F:→ gyd:所以要考虑超过生命最大值的伤害, 就是要多一步给生命上限 02/21 22:18
9F:→ gyd:然後拔掉 02/21 22:18
10F:推 linjrming:除了axe之外,其他就算伤害超过血量也一样会回血耶 02/22 00:03
11F:推 wulouise:那是因为要超过"最大"血量 不是超过目前hp 02/22 00:17
12F:嘘 WCHOME: 11/04 00:53
13F:嘘 WCHOME: 11/04 00:53
14F:嘘 WCHOME: 11/04 00:53