I need help,I'm new to JASS and read a tutorial on creating a stomp spell.So I tried to test it and all but there's like a hundred syntax errors I don't know how to fix.
Can somebody please tell me how to fix it?
JASS:
function Trig_Stomp_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A004'
endfunction
function Stomp_Filter takes nothing returns boolean
return IsPlayerEnemy(GetOwningPlayer(GetTriggerUnit()), GetOwningPlayer(GetFilterUnit())) and GetWidgetLife(GetFilterUnit()) > 0.405 and not IsUnitType(GetFilterUnit(), UNIT_TYPE_FLYING)
endfunction
function Stomp_CopyGroup takes group g returns group
set bj_groupAddGroupDest = CreateGroup()
call ForGroup(g, function GroupAddGroupEnum)
return bj_groupAddGroupDest
endfunction
function Stomp_Move takes nothing returns nothing
local string s = I2S(H2I(GetExpiredTimer()))
local gamecache gc = udg_AbilityCache
local real x = GetStoredReal(gc, s, "x")
local real y = GetStoredReal(gc, s, "y")
local integer i = GetStoredInteger(gc, s, "level")
local group g = Stomp_CopyGroup(I2G(GetStoredInteger(gc, s, "group")))
local real dur = GetStoredReal(gc, s, "dur")+0.05
local real ux
local real uy
local real a
local unit f
local real p = GetStoredReal(gc, s, "speed")-0.5/(1+0.5*i)
local real fx = GetStoredReal(gc, s, "fx")+0.05
if dur < 1+0.5*i then
loop
set f = FirstOfGroup(g)
exitwhen f == null
set ux = GetUnitX(f)
set uy = GetUnitY(f)
set a = Atan2(uy-y, ux-x)
call SetUnitPosition(f, ux+40*Cos(a), uy+40*Sin(a))
if fx >= 1 then
call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdl", f, "origin"))
endif
call GroupRemoveUnit(g, f)
endloop
call StoreReal(gc, s, "dur", dur)
call StoreReal(gc, s, "speed", p)
call StoreReal(gc, s, "fx", fx)
if fx >= 1 then
call StoreReal(gc, s, "fx", 0)
endif
else
call DestroyGroup(I2G(GetStoredInteger(gc, s, "group")))
call FlushStoredMission(gc, s)
call DestroyTimer(GetExpiredTimer())
endif
set gc = null
call DestroyGroup(g)
set g = null
set f = null
endfunction
function Trig_Stomp_Actions takes nothing returns nothing
local unit c = GetTriggerUnit()
local real x = GetUnitX(c)
local real y = GetUnitY(c)
local integer i = GetUnitAbilityLevel(c, 'A004')
local boolexpr b = Condition(function Stomp_Filter)
local group g = CreateGroup()
local group n
local unit f
local gamecache gc = udg_AbilityCache
local timer t = CreateTimer()
local string s = I2S(H2I(t))
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl", x, y))
call GroupEnumUnitsInRange(g, x, y, 100+50*i, b)
set n = Stomp_CopyGroup(g)
loop
set f = FirstOfGroup(n)
exitwhen f == null
call UnitDamageTarget(c, f, 25*i, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
call GroupRemoveUnit(n, f)
endloop
call StoreInteger(gc, s, "level", i)
call StoreInteger(gc, s, "group", H2I(g))
call StoreReal(gc, s, "x", x)
call StoreReal(gc, s, "y", y)
call StoreReal(gc, s, "speed", 50)
call TimerStart(t, 0.05, true, function Stomp_Move)
set c = null
call DestroyBoolExpr(b)
set b = null
set g = null
call DestroyGroup(n)
set n = null
set f = null
set gc = null
set t = null
endfunction
//===========================================================================
function InitTrig_Stomp takes nothing returns nothing
set gg_trg_Stomp = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Stomp, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Stomp, Condition( function Trig_Stomp_Conditions ) )
call TriggerAddAction( gg_trg_Stomp, function Trig_Stomp_Actions )
call Preload("Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl")
call Preload("Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdl")
endfunction