推 badken:感覺很像毫髮可是又不是XD 02/21 13:13
→ mist719:毫髮是? 02/21 13:15
→ Wsion:逆壓和苦楚? 沒作用應該是先抵銷護盾然後才傷到本尊? 02/21 13:16
推 wulouise:靈魂連結是彈跳到的兩個目標上才有分擔吧.. 只有自己的話 02/21 13:16
→ wulouise:只是會傷害打在自己身上變成100%魔法傷害 02/21 13:17
→ mist719:恩 我是想說讓隱藏施法單位跟施法者連在一起 然後都給隱藏 02/21 13:18
→ mist719:單位承受這樣 02/21 13:19
推 wulouise:另外你可以打前補 這樣傷害大於最大生命值才會秒殺 02/21 13:19
→ mist719:被秒殺是我想解決的問題QQ 02/21 13:20
推 wulouise:辦不到 辦得到強者大戰就會用了吧.. 02/21 13:23
→ wulouise:至少打前補是傷害達到最大值才秒殺 比超過現在值就秒殺好 02/21 13:24
推 tinkens:毫髮無傷應該是負數值的狂戰士技能? 02/21 13:32
推 wulouise:至少會受到1的傷害吧? 02/21 13:35
→ nobodyx:狂戰士承受傷害調成負數的話會補血 02/21 13:55
→ gyd:辦得到 02/21 13:57
推 toy78997:狂戰士-0.01怎麼樣 02/21 15:17
→ gyd:所有法術傷害會變補血 02/21 15:39
→ lucifiel1618:把靈魂鍊結調成1,然後用科技把原單位的裝甲換成神 02/21 16:36
→ lucifiel1618:性裝甲,然後把裝甲屬性的魔法減傷調到零 02/21 16:38
→ lucifiel1618:其他屬性調成跟原來的裝甲屬性一樣就好了 02/21 16:38
→ lucifiel1618:不過這招對技能傷害還是沒用的,這招已經有很多前人 02/21 16:39
→ lucifiel1618:嘗試過了,在流連還有討論串,到現在還是沒結論 02/21 16:40
→ lucifiel1618:而且你原來的方式不只會有秒殺的問題而已 02/21 16:41
→ lucifiel1618:編輯器是抓不到一擊斬造成的傷害的 02/21 16:41
→ gyd:一擊斬的傷害抓得到阿.. 02/22 09:55
> -------------------------------------------------------------------------- <
作者: 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群 group261611@msnzone.cn (使用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)
→ gyd:如果要考慮生命上限的問題, 就多一步給生命上限再拔掉 02/21 15:46
推 wulouise:SetUnitLifeBJ可以給單位超過上限的hp? 02/21 16:37
→ c0705:怎麼程式語言都都長得好像 囧 真所謂一法通萬法通 02/21 17:48
推 mist719:意思是變更現有生命值去承受傷害這樣? 02/21 18:13
推 wulouise:就是打前補..可是這好像擋不住超過生命最大值的傷害 02/21 18:48
推 linjrming:LoA現在大決好像怎樣都不會死耶 02/21 21:53
推 wulouise:最近都沒ran到 但是沒改過吧? 薄葬跟loa大絕一樣被axe婊 02/21 22:16
→ gyd:所以要考慮超過生命最大值的傷害, 就是要多一步給生命上限 02/21 22:18
→ gyd:然後拔掉 02/21 22:18
推 linjrming:除了axe之外,其他就算傷害超過血量也一樣會回血耶 02/22 00:03
推 wulouise:那是因為要超過"最大"血量 不是超過目前hp 02/22 00:17
> -------------------------------------------------------------------------- <
作者: gyd (iphone 3gs get!) 看板: WarCraftChat
標題: Re: [ WE ] 吸收傷害的護盾
時間: Sun Feb 21 23:41:21 2010
→ gyd:如果要考慮生命上限的問題, 就多一步給生命上限再拔掉 02/21 15:46
推 wulouise:SetUnitLifeBJ可以給單位超過上限的hp? 02/21 16:37
→ c0705:怎麼程式語言都都長得好像 囧 真所謂一法通萬法通 02/21 17:48
推 mist719:意思是變更現有生命值去承受傷害這樣? 02/21 18:13
推 wulouise:就是打前補..可是這好像擋不住超過生命最大值的傷害 02/21 18:48
推 linjrming:LoA現在大決好像怎樣都不會死耶 02/21 21:53
推 wulouise:最近都沒ran到 但是沒改過吧? 薄葬跟loa大絕一樣被axe婊 02/21 22:16
→ gyd:所以要考慮超過生命最大值的傷害, 就是要多一步給生命上限 02/21 22:18
→ gyd:然後拔掉 02/21 22:18
function TestCode_Actions takes nothing returns nothing
local real life
local unit target = GetTriggerUnit()
//'A000' -> 增加生命上限300
call UnitAddAbilityBJ( 'A000', target )
//以下是一行
call SetUnitLifeBJ( target, ( GetUnitStateSwap(UNIT_STATE_LIFE, target)
+ GetEventDamage() ) )
//以上
//等待傷害完成
call TriggerSleepAction( 0.00 )
set life = GetUnitStateSwap(UNIT_STATE_LIFE, target)
call UnitRemoveAbilityBJ( 'A000', target )
if life < 0 then
//表示檔300還是會掛, 這步做不做一樣意思
call KillUnit(target)
else
call SetUnitLifeBJ(target, life)
endif
endfunction
--
三國猛將傳 m群 group261611@msnzone.cn (使用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:補充, 如果無上限則是給一個極大生命, 而非300hp 02/21 23:42
→ wulouise:喔喔 wc3有hp上限嗎? 02/22 00:18
→ gyd:沒印象, 但是根據地圖的不同, 只要能比最大傷害高就ok了 02/22 09:49
推 zseineo:hp上限沒印象,不過玩過張圖,攻擊力稱太高會變負的 02/28 10:17
→ zseineo:還是綠字變零忘了 02/28 10:17