jass基礎(chǔ)-自定義閃避和暴擊

#include "../../jass/BlizzardAPI.j"
#include "../../jass/japi/YDWEEventDamageData.j"
library demo initializer test
???// 漂浮文字案例 - 自定義閃避和暴擊
???globals
???????hashtable ht
???endglobals
???function damageAction takes nothing returns nothing
???????local unit u1 = GetTriggerUnit()
???????local unit u2 = GetEventDamageSource()
???????local integer lv = GetUnitAbilityLevel(u1, 'AHad')
???????local integer lv2 = GetUnitAbilityLevel(u2, 'AHab')
???????local texttag tt
???????local real dam
???????local real ran
???????if lv >= 1 then
???????????set ran = GetRandomReal(0, 99)
???????????call BJDebugMsg(R2S(ran))
???????????if ran <= LoadReal(ht, 'AHad', lv) then
???????????????call EXSetEventDamage(0)
???????????????set tt = CreateTextTagUnitBJ("閃避", u1, 0, 10, 100, 100, 100, 0)
???????????????call SetTextTagLifespan(tt, 1)
???????????????call SetTextTagFadepoint(tt, 0.5)
???????????????call SetTextTagPermanent(tt, false)
???????????????call SetTextTagVelocityBJ(tt, 60, 45)
???????????????return
???????????endif
???????endif
???????if lv2 >= 1 then
???????????set ran = GetRandomReal(0, 99)
???????????call BJDebugMsg(R2S(ran))
???????????if ran <= LoadReal(ht, 'AHab', lv2) then
???????????????set dam = GetEventDamage() * 2
???????????????call EXSetEventDamage(dam)
???????????????set tt = CreateTextTagUnitBJ(R2S(dam), u1, 0, 10, 100, 0, 0, 0)
???????????????call SetTextTagLifespan(tt, 1)
???????????????call SetTextTagFadepoint(tt, 0.5)
???????????????call SetTextTagPermanent(tt, false)
???????????????call SetTextTagVelocityBJ(tt, 60, 45)
???????????????return
???????????endif
???????endif
???endfunction
???function triCreateUnit takes player p, integer uId, real x, real y, real face returns unit
???????local unit u = CreateUnit(p, uId, x, y, face)
???????local trigger t = CreateTrigger()
???????call TriggerRegisterUnitEvent(t, u, EVENT_UNIT_DAMAGED)
???????call TriggerAddAction(t, function damageAction)
???????return u
???endfunction
???function doSomething takes nothing returns nothing
???endfunction
???function triggerInit takes nothing returns nothing
???????local trigger t = CreateTrigger()
???????call TriggerRegisterPlayerChatEvent(t, Player(0), "1", true)
???????call TriggerAddAction(t, function doSomething)
???????set t = null
???endfunction
???function gameInit takes nothing returns nothing
???????local unit u = triCreateUnit(Player(0), 'Hpal', 0, 0, 0)
???????local unit u2 = triCreateUnit(Player(0), 'Hamg', 100, 100, 0)
???????set ht = InitHashtable()
???????call SaveReal(ht, 'AHad', 1, 20)
???????call SaveReal(ht, 'AHad', 2, 50)
???????call SaveReal(ht, 'AHad', 3, 100)
???????call SaveReal(ht, 'AHab', 1, 20)
???????call SaveReal(ht, 'AHab', 2, 50)
???????call SaveReal(ht, 'AHab', 3, 100)
???????call SetHeroLevel(u, 10, false)
???????call SetHeroLevel(u2, 10, false)
???????call FogEnable(false)
???????call FogMaskEnable(false)
???endfunction
???function test takes nothing returns nothing
???????call gameInit()
???????call triggerInit()
???endfunction
endlibrary