jass基础-自定义闪避和暴击

#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