function GasBombsConditions takes nothing returns boolean
return GetUnitTypeId(GetTriggerUnit()) == 'h000'
endfunction
//===========================================================================
function GasTimer takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer i = GetHandleInt(t, "i")
local unit bombdummy = GetHandleUnit(t, "bombdummy")
local real x = GetHandleReal(t, "x")
local real y = GetHandleReal(t, "y")
local group g = CreateGroup()
local unit u
local unit dummyOne
local unit dummyTwo
call GroupEnumUnitsInRange(g, x, y, 250, null)
//******************//
loop
set u = FirstOfGroup(g)
exitwhen u == null
call GroupRemoveUnit(g, u)
if IsUnitEnemy(u, GetOwningPlayer(bombdummy)) == true and IsUnitType(u, UNIT_TYPE_MECHANICAL) == false and IsUnitType(u, UNIT_TYPE_STRUCTURE) == false and IsUnitType(u, UNIT_TYPE_MAGIC_IMMUNE) == false then
call UnitDamageTarget(bombdummy, u, 12.5, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
// **** dummies part ****
set dummyOne = CreateUnit(GetOwningPlayer(bombdummy), 'h001', x, y, 0)
set dummyTwo = CreateUnit(GetOwningPlayer(bombdummy), 'h001', x, y, 0)
call UnitAddAbility(dummyOne, 'A002')
call UnitAddAbility(dummyOne, 'A004')
call IssueTargetOrder(dummyOne, "curse", u)
call IssueTargetOrder(dummyTwo, "slow", u)
call UnitApplyTimedLife(dummyOne, 'BTLF', .5)
call UnitApplyTimedLife(dummyTwo, 'BTLF', .5)
set dummyOne = null
set dummyTwo = null
// **** end dummies part ****
endif
endloop
//******************//
if i == 20 then // when i = 20 the time that passed is 10 seconds
call FlushHandleLocals(t)
call DestroyTimer(t)
call RemoveUnit(bombdummy)
endif
call SetHandleInt(t, "i", i + 1)
set t = null
call DestroyGroup(g)
set g = null
set bombdummy = null
endfunction
//=========================================================
function GasBombsActions takes nothing returns nothing
local timer t = CreateTimer()
local integer i = 0
local real x = GetUnitX(GetTriggerUnit())
local real y = GetUnitY(GetTriggerUnit())
local unit bombdummy = CreateUnit(GetOwningPlayer(GetTriggerUnit()), 'h001', x, y, 0)
local effect e = AddSpecialEffect("war3mapImported\\Radioactivecloud.mdx", x, y)
call SetHandleHandle(t, "bombdummy", bombdummy)
call SetHandleReal(t, "x", x)
call SetHandleReal(t, "y", y)
call SetHandleInt(t, "i", i)
call TimerStart(t, 0.5, true, function GasTimer)
call TriggerSleepAction(10)
call DestroyEffect(e)
set bombdummy = null
set e = null
set t = null
endfunction
//===========================================================================
function InitTrig_Gas_Bombs takes nothing returns nothing
set gg_trg_Gas_Bombs = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ(gg_trg_Gas_Bombs, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddCondition(gg_trg_Gas_Bombs, Condition(function GasBombsConditions))
call TriggerAddAction( gg_trg_Gas_Bombs, function GasBombsActions )
endfunction