globals
boolean hasCast = false
real OldMana
unit GetRegenUnit
real ManaRegen
endglobals
function isHero takes nothing returns boolean
return IsUnitType(GetTriggerUnit(), UNIT_TYPE_HERO)
endfunction
function GetUnitManaRegenCallback takes nothing returns nothing
call DestroyTimer(GetExpiredTimer())
set ManaRegen = GetUnitState(GetRegenUnit, UNIT_STATE_MANA) * 100
call SetUnitState(GetRegenUnit, UNIT_STATE_MANA, OldMana)
endfunction
function GetUnitManaRegen takes unit u returns nothing
set OldMana = GetUnitState(u, UNIT_STATE_MANA)
set GetRegenUnit = u
call SetUnitState(u, UNIT_STATE_MANA, 0)
call TimerStart(CreateTimer(), 0.01, false, function GetUnitManaRegenCallback)
endfunction
function Trig_Check_mana_Actions takes nothing returns nothing
local real mana1 = GetUnitStateSwap(UNIT_STATE_MANA, GetTriggerUnit())
local real mana2
local unit caster = GetSpellAbilityUnit()
local timer t = CreateTimer()
local real regenTime
call TimerStart(t, 1.00, false, null)
loop
exitwhen ( hasCast == true )
call TriggerSleepAction(0.10)
endloop
set hasCast = false
set regenTime = 1.00 - TimerGetRemaining(t)
call DestroyTimer(t)
set mana2 = GetUnitStateSwap(UNIT_STATE_MANA, GetTriggerUnit())
call GetUnitManaRegen(caster)
call DisplayTextToForce( GetPlayersAll(), ( "Mana1 " + R2S(mana1)) )
call DisplayTextToForce( GetPlayersAll(), ( "Mana2 " + R2S(mana2)) )
call DisplayTextToForce( GetPlayersAll(), ( "regen " + R2S(ManaRegen)) )
call DisplayTextToForce( GetPlayersAll(), ( "Manacost " + R2S((mana1 - mana2) + regenTime*ManaRegen) ) )
endfunction
function SetCast takes nothing returns nothing
set hasCast = true
endfunction
//==========================================================================
function InitTrig_Check_mana takes nothing returns nothing
local trigger gg_trg_Check_mana = CreateTrigger( )
local trigger gg_trg_Check_mana2 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Check_mana, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_Check_mana, Condition(function isHero ) )
call TriggerAddAction( gg_trg_Check_mana, function Trig_Check_mana_Actions )
set gg_trg_Check_mana = null
call TriggerRegisterAnyUnitEventBJ( gg_trg_Check_mana2, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Check_mana2, Condition(function isHero ) )
call TriggerAddAction( gg_trg_Check_mana2, function SetCast )
set gg_trg_Check_mana2 = null
endfunction