okay, I've tried to rewrite it using gwypaas method, BUT i've got a similar problem, it won't run my PushEmBack function, check it out and plx help me out too...
btw I think I fixed most of the leaks
btw I think I fixed most of the leaks
JASS:
globals
trigger gg_trg_Crush
group g
endglobals
function Trig_Crush_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 039;A069039; ) ) then
return false
endif
return true
endfunction
function PushEmBack takes unit u, location targetLoc returns nothing
local real ufacing
local real distance
local location newLoc
loop
set distance = DistanceBetweenPoints(GetUnitLoc(u), GetSpellTargetLoc())
exitwhen (distance>200.00)
set ufacing = GetUnitFacing(u)
if (ufacing>180.00) then
set ufacing = ufacing-180.00
else
set ufacing = ufacing+180.00
endif
set newLoc = PolarProjectionBJ(GetUnitLoc(u), 30.00, ufacing)
call SetUnitPositionLoc(u, newLoc)
call AddSpecialEffectTargetUnitBJ( "origin", u, "Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl" )
call SetUnitPathing(u, false)
call SetUnitFacing(u, AngleBetweenPoints(GetSpellTargetLoc(), GetUnitLoc(u)))
call UnitDamageTargetBJ( GetTriggerUnit(), u, 20.00, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_ENHANCED )
call TriggerSleepAction(0.01)
endloop
call SetUnitPathing(u, true)
set u = null
call RemoveLocation(newLoc)
call RemoveLocation(targetLoc)
set newLoc = null
set targetLoc = null
endfunction
function Trig_Crush_Actions takes nothing returns nothing
local real spTaX = GetLocationX(GetSpellTargetLoc())
local real spTaY = GetLocationY(GetSpellTargetLoc())
local unit u
local location targetLoc
call AddSpecialEffect("Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl", spTaX, spTaY )
set g = GetUnitsInRangeOfLocAll(200.00, GetSpellTargetLoc())
set u = FirstOfGroup(g)
loop
exitwhen u == null
call PushEmBack(u, targetLoc)
call GroupRemoveUnit(g, u)
set u = FirstOfGroup(g)
endloop
call DestroyGroup(g)
set g = null
set u = null
call RemoveLocation(targetLoc)
set targetLoc = null
endfunction
//===========================================================================
function InitTrig_Crush takes nothing returns nothing
set gg_trg_Crush = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Crush, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Crush, Condition( function Trig_Crush_Conditions ) )
call TriggerAddAction( gg_trg_Crush, function Trig_Crush_Actions )
endfunction