#1
help with spells !!please respond!!
how come none of darky's spells will work in my map?i transferred the actual spell first then the trigger in JASS. there are no variables and i left it just like this:
function GetSiphonGoldCache takes nothing returns gamecache
return gg_trg_Siphon_Gold
return null
endfunction
function Initialize_SiphonGold_Variables takes nothing returns nothing
local gamecache g = GetSiphonGoldCache()
local integer array gold
local integer SiphonGoldAbility = 'A000'
set gold[1] = 40 // Level 1 this value is per second
set gold[2] = 80 // Level 2 this value is per second
set gold[3] = 120 // Level 3 this value is per second
call StoreIntegerBJ( SiphonGoldAbility, "Ability", "Ability", g )
call StoreIntegerBJ( gold[1], "Level1", "Gold", g )
call StoreIntegerBJ( gold[2], "Level2", "Gold", g )
call StoreIntegerBJ( gold[3], "Level3", "Gold", g )
endfunction
function SiphonGoldAbility takes nothing returns integer
return GetStoredInteger(GetSiphonGoldCache(), "Ability", "Ability")
endfunction
function SiphonGoldGameCache2Trigger takes gamecache g returns trigger
return g
return null
endfunction
function SiphonGoldHandle2Integer takes handle h returns integer
return h
return 0
endfunction
function SiphonGoldInteger2Effect takes integer i returns effect
return i
return null
endfunction
function SiphonGoldInteger2Unit takes integer i returns unit
return i
return null
endfunction
function SiphonGoldInteger2Timer takes integer i returns timer
return i
return null
endfunction
function SiphonGoldInteger2Trigger takes integer i returns trigger
return i
return null
endfunction
function SiphonGoldInteger2TextTag takes integer i returns texttag
return i
return null
endfunction
function Trig_Siphon_Gold_Floating takes nothing returns nothing
local gamecache g = GetSiphonGoldCache()
local texttag text1 = SiphonGoldInteger2TextTag( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "text1") )
local texttag text2 = SiphonGoldInteger2TextTag( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "text2") )
local integer transp = GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "transp")
if (transp < 100) then
set transp = transp + 5
call SetTextTagColorBJ( text1, 100, 100, 0.00, transp )
call SetTextTagColorBJ( text2, 100, 100, 0.00, transp )
call StoreIntegerBJ( transp, "transp", I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), g )
else
call DestroyTextTag(text1)
call DestroyTextTag(text2)
call DestroyTimer(GetExpiredTimer())
call DestroyTrigger(GetTriggeringTrigger())
endif
endfunction
function Trig_Siphon_Gold_Timer takes nothing returns nothing
local gamecache g = GetSiphonGoldCache()
local unit caster = SiphonGoldInteger2Unit( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "caster") )
local unit target = SiphonGoldInteger2Unit( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "target") )
local integer max = GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "max")
local integer floating = GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "counter")
local integer on = GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(caster)), "on")
local integer floatgold = 0
local trigger t
local timer c
if (on == 0) then
if (floating > 1) then
set floatgold = floating*2
call StoreIntegerBJ( 0, "counter", I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), g )
endif
call DestroyEffect( SiphonGoldInteger2Effect( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(caster)), "Effect1") ) )
call DestroyEffect( SiphonGoldInteger2Effect( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(caster)), "Effect2") ) )
call DestroyTimer( SiphonGoldInteger2Timer( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(caster)), "timer") ) )
call DestroyTrigger( SiphonGoldInteger2Trigger( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(caster)), "trigger") ) )
else
if ( GetPlayerState(GetOwningPlayer(target), PLAYER_STATE_RESOURCE_GOLD) > 1 ) then
call AdjustPlayerStateBJ( 2, GetOwningPlayer(caster), PLAYER_STATE_RESOURCE_GOLD )
call AdjustPlayerStateBJ( -2, GetOwningPlayer(target), PLAYER_STATE_RESOURCE_GOLD )
if (floating == (max/4)) then
set floatgold = max*2/4
set floating = 0
endif
call StoreIntegerBJ( floating + 1, "counter", I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), g )
elseif (floating > 1) then
set floatgold = (floating-1)*2
call StoreIntegerBJ( 0, "counter", I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), g )
endif
endif
if (floatgold > 0) then
set t = CreateTrigger( )
set c = CreateTimer()
call TriggerRegisterTimerExpireEventBJ( t, c )
call TriggerAddAction( t, function Trig_Siphon_Gold_Floating )
call StartTimerBJ( c, true, 0.07 )
call CreateTextTagUnitBJ( "+" + I2S(floatgold), caster, 0, 10, 100, 100, 100, 0 )
call SetTextTagColorBJ( GetLastCreatedTextTag(), 100, 100, 0.00, 0 )
call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 100, 90 )
call StoreIntegerBJ( SiphonGoldHandle2Integer(GetLastCreatedTextTag()), "text1", I2S(SiphonGoldHandle2Integer(c)), g )
call CreateTextTagUnitBJ( "-" + I2S(floatgold), target, 0, 10, 100, 100, 100, 0 )
call SetTextTagColorBJ( GetLastCreatedTextTag(), 100, 100, 0.00, 0 )
call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 100, 90 )
call StoreIntegerBJ( SiphonGoldHandle2Integer(GetLastCreatedTextTag()), "text2", I2S(SiphonGoldHandle2Integer(c)), g )
call StoreIntegerBJ( 0, "transp", I2S(SiphonGoldHandle2Integer(c)), g )
endif
endfunction
function Trig_Siphon_Gold_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == SiphonGoldAbility() )
endfunction
function Trig_Siphon_Gold_Actions takes nothing returns nothing
local unit caster = GetSpellAbilityUnit()
local effect e
local gamecache g = GetSiphonGoldCache()
local trigger t = CreateTrigger( )
local timer c = CreateTimer()
local integer level = GetUnitAbilityLevelSwapped(SiphonGoldAbility(), caster)
set e = AddSpecialEffectTarget("war3mapImported\\goldout.mdx",GetSpellTargetUnit(),"origin")
call StoreIntegerBJ( SiphonGoldHandle2Integer(e), "Effect1", I2S(SiphonGoldHandle2Integer(caster)), g )
set e = AddSpecialEffectTarget("war3mapImported\\goldin.mdx",caster,"origin")
call StoreIntegerBJ( SiphonGoldHandle2Integer(e), "Effect2", I2S(SiphonGoldHandle2Integer(caster)), g )
call TriggerRegisterTimerExpireEventBJ( t, c )
call TriggerAddAction( t, function Trig_Siphon_Gold_Timer )
call StoreIntegerBJ( 1, "on", I2S(SiphonGoldHandle2Integer(caster)), g )
call StoreIntegerBJ( SiphonGoldHandle2Integer(c), "timer", I2S(SiphonGoldHandle2Integer(caster)), g )
call StoreIntegerBJ( SiphonGoldHandle2Integer(t), "trigger", I2S(SiphonGoldHandle2Integer(caster)), g )
call StoreIntegerBJ( SiphonGoldHandle2Integer(GetSpellTargetUnit()), "target", I2S(SiphonGoldHandle2Integer(c)), g )
call StoreIntegerBJ( SiphonGoldHandle2Integer(caster), "caster", I2S(SiphonGoldHandle2Integer(c)), g )
call StoreIntegerBJ( 1, "counter", I2S(SiphonGoldHandle2Integer(c)), g )
call StoreIntegerBJ( GetStoredInteger(g, "Gold", "Level" + I2S(level)), "max", I2S(SiphonGoldHandle2Integer(c)), g )
call StartTimerBJ( c, true, (I2R(2) / I2R(GetStoredInteger(g, "Gold", "Level" + I2S(level)) )) )
endfunction
function Trig_Siphon_Gold_End_Actions takes nothing returns nothing
local unit caster = GetSpellAbilityUnit()
local effect e
local gamecache g = GetSiphonGoldCache()
call StoreIntegerBJ( 0, "on", I2S(SiphonGoldHandle2Integer(caster)), g )
endfunction
//===========================================================================
function InitTrig_Siphon_Gold takes nothing returns nothing
local integer i = 0
local trigger t1 = CreateTrigger( )
local trigger t2 = CreateTrigger( )
local trigger g = CreateTrigger( )
set gg_trg_Siphon_Gold = SiphonGoldGameCache2Trigger(InitGameCache( "SiphonGold.w3v" ))
call Initialize_SiphonGold_Variables()
loop
exitwhen i > 11
if ( GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING ) then
call TriggerRegisterPlayerUnitEventSimple( t1, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerRegisterPlayerUnitEventSimple( t2, Player(i), EVENT_PLAYER_UNIT_SPELL_ENDCAST )
endif
set i = i + 1
endloop
call TriggerAddCondition( t1, Condition( function Trig_Siphon_Gold_Conditions ) )
call TriggerAddAction( t1, function Trig_Siphon_Gold_Actions )
call TriggerAddCondition( t2, Condition( function Trig_Siphon_Gold_Conditions ) )
call TriggerAddAction( t2, function Trig_Siphon_Gold_End_Actions )
endfunction
why wont it work? please help. i did the same with death spiral and that wont work either.