- Joined
- Jul 18, 2010
- Messages
- 2,377
Part 4:
Submitting Dummy - Unit
Edit: First upload is Part 4
Part 2:
JASS:
function GroupCon takes nothing returns boolean
return IsUnitEnemy(GetFilterUnit(), bj_forceRandomCurrentPick)
endfunction
function TimerExpires takes nothing returns nothing
local timer t = GetExpiredTimer ()
local integer timerID = GetHandleId( t )
local unit u = LoadUnitHandle(udg_Hash, timerID, 0)
local unit source = LoadUnitHandle(udg_Hash, timerID, 5)
local unit first
local real angle = LoadReal(udg_Hash, timerID, 1)
local real speed = LoadReal(udg_Hash, timerID, 2)
local integer timerExecutions = LoadInteger(udg_Hash, timerID, 3)
local real damage = LoadReal(udg_Hash, timerID, 4)
local real x = GetUnitX(u) + speed * Cos(angle)
local real y = GetUnitY(u) + speed * Sin(angle)
local group targets = CreateGroup()
local boolexpr filter = Condition (function GroupCon)
set bj_forceRandomCurrentPick = GetOwningPlayer(source)
call SetUnitPosition(u, x, y)
call GroupEnumUnitsInRange(targets, x, y, 200, filter)
loop
set first = FirstOfGroup (targets)
exitwhen (first == null)
call GroupRemoveUnit(targets, first)
call UnitDamageTarget(source, first, damage, false, true, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
endloop
//Not Last Intervall?
if timerExecutions != 0 then
call SaveInteger(udg_Hash, timerID, 3, timerExecutions - 1)
else
call KillUnit(u)
call FlushChildHashtable(udg_Hash, timerID)
call PauseTimer(t)
call DestroyTimer(t)
endif
set source = null
set t = null
set u = null
call DestroyGroup(targets)
call DestroyBoolExpr(filter)
set filter = null
set targets = null
endfunction
function PressESC takes nothing returns nothing
local timer t
local integer timerID
local unit u
local integer loopA = 0
local real angle = 0
local real angleInc = bj_PI/4
local real speed = 1050 * 0.03125
local real damage = 100 * 0.03125
local integer timerExecutions = R2I (1000 / speed)
local real x = GetUnitX(udg_Taure)
local real y = GetUnitY(udg_Taure)
loop
exitwhen loopA > 7
set t = CreateTimer()
set timerID = GetHandleId(t)
set u = CreateUnit(Player(0), 'h000' , x, y, angle * bj_RADTODEG)
call SaveUnitHandle(udg_Hash, timerID, 0, u)
call SaveReal(udg_Hash, timerID, 1, angle)
call SaveReal(udg_Hash, timerID, 2, speed)
call SaveInteger(udg_Hash, timerID, 3, timerExecutions)
call SaveReal(udg_Hash, timerID, 4, damage)
call SaveUnitHandle(udg_Hash, timerID, 5, udg_Taure)
call SaveEffectHandle(udg_Hash, timerID, 6,null)
call TimerStart(t, 0.03125, true, function TimerExpires)
set loopA = loopA + 1
set angle = angle + angleInc
endloop
set t = null
set u = null
endfunction
//===========================================================================
function InitTrig_DummyUnit takes nothing returns nothing
local trigger ESC = CreateTrigger( )
set udg_Hash = InitHashtable()
set udg_Taure = CreateUnit(Player(0), 'Otch' , 0, 0, 270)
call TriggerRegisterPlayerEventEndCinematic( ESC, Player(0) )
call TriggerAddAction( ESC, function PressESC )
set ESC = null
endfunction
Edit: First upload is Part 4
Part 2:
JASS:
function PressESC takes nothing returns nothing
local integer loopA = 0
local real angle = 0
local real x
local real y
call SetUnitPosition(udg_Dummy, GetUnitX(udg_Taure), GetUnitY(udg_Taure))
loop
exitwhen loopA > 7
set x = GetUnitX(udg_Taure) + Cos(angle * bj_DEGTORAD)
set y = GetUnitY(udg_Taure) + Sin(angle * bj_DEGTORAD)
call SetUnitFacing(udg_Dummy, angle)
call IssuePointOrder(udg_Dummy, "shockwave", x, y)
set loopA = loopA + 1
set angle = angle + 45
call TriggerSleepAction( 0.02 )
endloop
endfunction
//===========================================================================
function InitTrig_DummyUnit takes nothing returns nothing
local trigger ESC = CreateTrigger( )
set udg_Taure = CreateUnit(Player(0), 'Otch' , 0, 0, 270)
set udg_Dummy = CreateUnit(Player(0), 'h000' , 0, 0, 270)
call UnitAddAbility(udg_Dummy, 'A000')
call TriggerRegisterPlayerEventEndCinematic( ESC, Player(0) )
call TriggerAddAction( ESC, function PressESC )
endfunction
Attachments
Last edited: