- Joined
- Jun 20, 2014
- Messages
- 556
Requesting for approval
Description
The caster unleashes a devastating attack that causes all burning enemies to explode.
More Details about the spell
The spell is heavily inspired by Ignite from Dragon Nest. (I don't own the video)
Concept
The spell is meant to be a finisher designed for a pyromancer (or any elementalists who wants to stack debuffs for that matter). When the caster finishes casting, it releases a nova which checks whether or not a unit has the specific debuff/s. It counts said debuffs and amplifies the base damage of the spell based on how many debuffs were counted. Debuffs counted this way are removed. The caster has to be mindful when to use the spell since using it too early may cause the caster to lose some dot from the debuffs.
Ignite Init

Events


Map initialization

Conditions

Actions


-------- --------


-------- ABILITY --------


Set VariableSet IGT_MainAbility = Ignite (Main Ability)


Set VariableSet IGT_Order = starfall


-------- --------


-------- Ability switcher is a modified engineering upgrade --------


-------- Due to the nature of the spell being based off of starfall, --------


-------- we need to prevent the caster from casting another starfall while the first one is still active --------


-------- engineering upgrade will replace the main ability with a modified evasion --------


-------- the replacement evasion still shows cooldown --------


Set VariableSet IGT_AbilityDisabler = Switch Ignite


-------- --------


-------- BASE DAMAGE --------


-------- This damage is automatically dealt to affected enemies --------


-------- Bonus attribute damage uses (100% = 1.00) --------


-------- --------


-------- Flat damage --------


Set VariableSet IGT_BaseDamage[1] = 80.00


Set VariableSet IGT_BaseDamage[2] = 100.00


Set VariableSet IGT_BaseDamage[3] = 120.00


-------- Bonus damage from Strength % --------


Set VariableSet IGT_StrengthDamage[1] = 0.00


Set VariableSet IGT_StrengthDamage[2] = 0.00


Set VariableSet IGT_StrengthDamage[3] = 0.00


-------- Bonus damage from Agility % --------


Set VariableSet IGT_AgilityDamage[1] = 0.00


Set VariableSet IGT_AgilityDamage[2] = 0.00


Set VariableSet IGT_AgilityDamage[3] = 0.00


-------- Bonus damage from Intelligence % --------


Set VariableSet IGT_IntelligenceDamage[1] = 0.00


Set VariableSet IGT_IntelligenceDamage[2] = 0.00


Set VariableSet IGT_IntelligenceDamage[3] = 0.00


-------- --------


-------- DAMAGE PER DEBUFFS REMOVED --------


-------- the bonus damage per instance of burn debuff removed from an enemy --------


-------- Bonus attribute damage uses (100% = 1.00) --------


-------- --------


-------- Flat damage --------


Set VariableSet IGT_BaseDamagePerDebuff[1] = 0.00


Set VariableSet IGT_BaseDamagePerDebuff[2] = 0.00


Set VariableSet IGT_BaseDamagePerDebuff[3] = 0.00


-------- Bonus damage from Strength % --------


Set VariableSet IGT_StrengthDamagePerDebuff[1] = 0.00


Set VariableSet IGT_StrengthDamagePerDebuff[2] = 0.00


Set VariableSet IGT_StrengthDamagePerDebuff[3] = 0.00


-------- Bonus damage from Agility % --------


Set VariableSet IGT_AgilityDamagePerDebuff[1] = 0.00


Set VariableSet IGT_AgilityDamagePerDebuff[2] = 0.00


Set VariableSet IGT_AgilityDamagePerDebuff[3] = 0.00


-------- Bonus damage from Intelligence % --------


Set VariableSet IGT_IntelligenceDamagePerDebuf[1] = 1.00


Set VariableSet IGT_IntelligenceDamagePerDebuf[2] = 1.00


Set VariableSet IGT_IntelligenceDamagePerDebuf[3] = 1.00


-------- --------


Set VariableSet IGT_AttackType = Spells


Set VariableSet IGT_DamageType = Normal


-------- --------


-------- NOVA --------


-------- --------


-------- number of waves released on a successful cast --------


Set VariableSet IGT_EffectWaveCount[1] = 36


Set VariableSet IGT_EffectWaveCount[2] = 36


Set VariableSet IGT_EffectWaveCount[3] = 36


-------- --------


-------- damage area of effect of each nova waves --------


Set VariableSet IGT_EffectWaveAoE[1] = 150.00


Set VariableSet IGT_EffectWaveAoE[2] = 150.00


Set VariableSet IGT_EffectWaveAoE[3] = 150.00


-------- --------


-------- the amount of time before the nova fully spreads --------


-------- this value determines the speed of the nova --------


-------- this will also determine the duration before the caster can regain the main ability --------


Set VariableSet IGT_EffectWaveDuration[1] = 1.00


Set VariableSet IGT_EffectWaveDuration[2] = 1.00


Set VariableSet IGT_EffectWaveDuration[3] = 1.00


-------- --------


-------- OTHERS --------


-------- --------


Set VariableSet IGT_ProjectileHeight = 100.00


-------- --------


Set VariableSet IGT_Radius[1] = 900.00


Set VariableSet IGT_Radius[2] = 900.00


Set VariableSet IGT_Radius[3] = 900.00


-------- --------


Set VariableSet IGT_CastingTime[1] = 1.50


Set VariableSet IGT_CastingTime[2] = 1.50


Set VariableSet IGT_CastingTime[3] = 1.50


-------- --------


Set VariableSet IGT_DebuffCount = 4


-------- I elected not to use index 0 --------


-------- debuffs checked --------


Set VariableSet IGT_DebuffList[1] = Incinerate


Set VariableSet IGT_DebuffList[2] = Flame Strike


Set VariableSet IGT_DebuffList[3] = Rain of Fire


Set VariableSet IGT_DebuffList[4] = Soul Burn


-------- --------


-------- SFX --------


-------- --------


-------- number of spiral flames during cast --------


Set VariableSet IGT_CastFireTrails[1] = 3


Set VariableSet IGT_CastFireTrails[2] = 3


Set VariableSet IGT_CastFireTrails[3] = 3


-------- model of the spiral flames and attachement point --------


Set VariableSet IGT_FireTrailModel = Abilities\Weapons\RedDragonBreath\RedDragonMissile.mdl


Set VariableSet IGT_FireTrailModelAttachment = overhead


-------- model of the nova waves emitted and attachement point --------


Set VariableSet IGT_FireNovaModel = Abilities\Weapons\RedDragonBreath\RedDragonMissile.mdl


Set VariableSet IGT_FireNovaModelAttachment = overhead


-------- model used when the spell hits --------


Set VariableSet IGT_FireHitModel = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl


Set VariableSet IGT_FireHitAttachment = origin


-------- --------


-------- MISC --------


-------- --------


-------- --------


-------- disable ability switcher to hide the icon --------


For each (Integer IGT_Looper) from 1 to 24, do (Actions)



Loop - Actions




Player - Disable IGT_AbilityDisabler for (Player(IGT_Looper))


-------- --------


Set VariableSet IGT_STAGE_DAMAGE = NOVA


Set VariableSet IGT_STAGE_CASTING = CASTING


Set VariableSet IGT_STAGE_DEINDEX = DEINDEX


Set VariableSet IGT_STAGE_SPARKS = SPARKS


-------- --------


-------- Tree Destroyer --------


Set VariableSet IGT_Point1 = (Random point in (Playable map area))


Set VariableSet IGT_Harvester = (Last created unit)


Unit - Create 1 Dummy (Generic) for Neutral Passive at IGT_Point1 facing Default building facing degrees


Set VariableSet IGT_Harvester = (Last created unit)


-------- --------


-------- Preload --------


Unit - Add IGT_MainAbility to IGT_Harvester


Unit - Remove IGT_MainAbility from IGT_Harvester


-------- --------


Custom script: call RemoveLocation(udg_IGT_Point1)


-------- --------


Custom script: endfunction


-------- --------


-------- DAMAGE FILTER --------


-------- Use IGT_Picked to set your boolean conditions to determine which units gets damaged --------


-------- The default example delineates that enemies which are structures, magic immunes and mechanicals do not get damaged --------


-------- beyond that point, change it only if you know what youre doing --------


Custom script: function IsIgnitable takes unit udg_IGT_Picked returns boolean


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




(IGT_Picked is A structure) Equal to False




(IGT_Picked is Mechanical) Equal to False




(IGT_Picked is Magic Immune) Equal to False




(IGT_Picked is alive) Equal to True




(IGT_Picked belongs to an enemy of IGT_Player[IGT_Looper].) Equal to True




(IGT_Picked is in IGT_DamageGroup[IGT_DamageGroupIndex[IGT_Looper]].) Equal to False



Then - Actions




Custom script: return true



Else - Actions


Custom script: return false
Ignite Cast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to IGT_MainAbility

Actions


-------- --------


Set VariableSet IGT_Index = (IGT_Index + 1)


-------- --------


Set VariableSet IGT_TempCaster = (Triggering unit)


Set VariableSet IGT_TempLevel = (Level of IGT_MainAbility for IGT_TempCaster)


-------- --------


Set VariableSet IGT_Caster[IGT_Index] = IGT_TempCaster


Set VariableSet IGT_Player[IGT_Index] = (Triggering player)


Set VariableSet IGT_Level[IGT_Index] = IGT_TempLevel


Set VariableSet IGT_CastingTimeLeft[IGT_Index] = IGT_CastingTime[IGT_Level[IGT_Index]]


Set VariableSet IGT_IsCaster[IGT_Index] = True


-------- --------


Unit - Add IGT_AbilityDisabler to IGT_Caster[IGT_Index]


-------- --------


-------- flat damage --------


Set VariableSet IGT_TempDamageStrength = (IGT_StrengthDamage[IGT_Level[IGT_Index]] x (Real((Strength of IGT_Caster[IGT_Index] (Include bonuses)))))


Set VariableSet IGT_TempDamageAgility = (IGT_AgilityDamage[IGT_Level[IGT_Index]] x (Real((Agility of IGT_Caster[IGT_Index] (Include bonuses)))))


Set VariableSet IGT_TempDamageIntelligence = (IGT_IntelligenceDamage[IGT_Level[IGT_Index]] x (Real((Intelligence of IGT_Caster[IGT_Index] (Include bonuses)))))


Set VariableSet IGT_BaseDamageTotal[IGT_Index] = ((IGT_TempDamageStrength + IGT_TempDamageAgility) + (IGT_TempDamageIntelligence + IGT_BaseDamage[IGT_Level[IGT_Index]]))


-------- --------


-------- damage per debuffs removed --------


Set VariableSet IGT_TempDamageStrength = (IGT_StrengthDamagePerDebuff[IGT_Level[IGT_Index]] x (Real((Strength of IGT_Caster[IGT_Index] (Include bonuses)))))


Set VariableSet IGT_TempDamageAgility = (IGT_AgilityDamagePerDebuff[IGT_Level[IGT_Index]] x (Real((Agility of IGT_Caster[IGT_Index] (Include bonuses)))))


Set VariableSet IGT_TempDamageIntelligence = (IGT_IntelligenceDamagePerDebuf[IGT_Level[IGT_Index]] x (Real((Intelligence of IGT_Caster[IGT_Index] (Include bonuses)))))


Set VariableSet IGT_DamagePerDebuffTotal[IGT_Index] = ((IGT_TempDamageStrength + IGT_TempDamageAgility) + (IGT_TempDamageIntelligence + IGT_BaseDamagePerDebuff[IGT_Level[IGT_Index]]))


-------- --------


Set VariableSet IGT_Index2 = (IGT_Index2 + 1)


Set VariableSet IGT_DamageGroupIndex[IGT_Index] = IGT_Index2


Custom script: call DestroyGroup(udg_IGT_DamageGroup[udg_IGT_DamageGroupIndex[udg_IGT_Index]])


Custom script: set udg_IGT_DamageGroup[udg_IGT_DamageGroupIndex[udg_IGT_Index]]=CreateGroup()


-------- --------


Set VariableSet IGT_IsCompleted[IGT_Index] = False


Set VariableSet IGT_Stage[IGT_Index] = IGT_STAGE_CASTING


-------- --------


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




IGT_Index Equal to 1



Then - Actions




Trigger - Turn on Ignite Effect <gen>



Else - Actions


-------- --------


Set VariableSet IGT_Point1 = (Position of IGT_Caster[IGT_Index])


-------- --------


Set VariableSet IGT_TempAngle = (Facing of IGT_Caster[IGT_Index])


Set VariableSet IGT_TempAngleAdjuster = (360.00 / (Real(IGT_CastFireTrails[IGT_Level[IGT_Index]])))


Set VariableSet IGT_TempProjectileSpeed = (IGT_Radius[IGT_Level[IGT_Index]] / (IGT_CastingTime[IGT_Level[IGT_Index]] / 0.03))


Set VariableSet IGT_TempTurnRate = (IGT_TempAngleAdjuster / (IGT_CastingTime[IGT_Level[IGT_Index]] / 0.03))


-------- --------


For each (Integer IGT_Looper) from 1 to IGT_CastFireTrails[IGT_TempLevel], do (Actions)



Loop - Actions




Set VariableSet IGT_Index = (IGT_Index + 1)




-------- --------




Set VariableSet IGT_Caster[IGT_Index] = IGT_TempCaster




Set VariableSet IGT_Level[IGT_Index] = IGT_TempLevel




Set VariableSet IGT_IsCaster[IGT_Index] = False




-------- --------




Set VariableSet IGT_Point2 = (IGT_Point1 offset by IGT_Radius[IGT_TempLevel] towards IGT_TempAngle degrees.)




-------- --------




Set VariableSet IGT_ProjectileDistance[IGT_Index] = IGT_Radius[IGT_TempLevel]




Set VariableSet IGT_ProjectileSpeed[IGT_Index] = IGT_TempProjectileSpeed




Set VariableSet IGT_Angle[IGT_Index] = (Angle from IGT_Point2 to IGT_Point1)




Set VariableSet IGT_TurnRate[IGT_Index] = IGT_TempTurnRate




-------- --------




Special Effect - Create a special effect at IGT_Point2 using IGT_FireTrailModel




Set VariableSet IGT_FireTrailSFX[IGT_Index] = (Last created special effect)




-------- --------




Set VariableSet IGT_Stage[IGT_Index] = IGT_STAGE_SPARKS




-------- --------




Set VariableSet IGT_TempAngle = (IGT_TempAngle - IGT_TempAngleAdjuster)




-------- --------




Custom script: call RemoveLocation(udg_IGT_Point2)


Custom script: call RemoveLocation(udg_IGT_Point1)
Ignite Effect

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


For each (Integer IGT_Looper) from 1 to IGT_Index, do (Actions)



Loop - Actions




-------- --------




-------- CASTER IS CASTING --------




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






IGT_Stage[IGT_Looper] Equal to IGT_STAGE_CASTING





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








(Current order of IGT_Caster[IGT_Looper]) Equal to (Order(IGT_Order))







Then - Actions








If (All Conditions are True) then do (Then Actions) else do (Else Actions)









If - Conditions










IGT_CastingTimeLeft[IGT_Looper] Greater than 0.00









Then - Actions










Set VariableSet IGT_CastingTimeLeft[IGT_Looper] = (IGT_CastingTimeLeft[IGT_Looper] - 0.03)









Else - Actions










Set VariableSet IGT_IsCompleted[IGT_Looper] = True










Unit - Order IGT_Caster[IGT_Looper] to Stop.







Else - Actions








If (All Conditions are True) then do (Then Actions) else do (Else Actions)









If - Conditions










IGT_IsCompleted[IGT_Looper] Equal to True









Then - Actions










-------- --------










Set VariableSet IGT_Stage[IGT_Looper] = IGT_STAGE_WAIT










-------- --------










Set VariableSet IGT_TempCaster = IGT_Caster[IGT_Looper]










Set VariableSet IGT_TempPlayer = IGT_Player[IGT_Looper]










Set VariableSet IGT_TempLevel = IGT_Level[IGT_Looper]










Set VariableSet IGT_WaitTimeLeft[IGT_Looper] = IGT_EffectWaveDuration[IGT_TempIndex]










-------- --------










Set VariableSet IGT_Point1 = (Position of IGT_TempCaster)










-------- --------










Set VariableSet IGT_TempAngle = (Facing of IGT_TempCaster)










Set VariableSet IGT_TempAngleAdjuster = (360.00 / (Real(IGT_EffectWaveCount[IGT_TempLevel])))










Set VariableSet IGT_TempProjectileSpeed = (IGT_Radius[IGT_TempLevel] / (IGT_EffectWaveDuration[IGT_TempLevel] / 0.03))










Set VariableSet IGT_TempIndex = IGT_DamageGroupIndex[IGT_Looper]










-------- --------










For each (Integer IGT_Looper2) from 1 to IGT_EffectWaveCount[IGT_TempLevel], do (Actions)











Loop - Actions












Set VariableSet IGT_Index = (IGT_Index + 1)












-------- --------












Set VariableSet IGT_Caster[IGT_Index] = IGT_TempCaster












Set VariableSet IGT_Player[IGT_Index] = IGT_TempPlayer












Set VariableSet IGT_Level[IGT_Index] = IGT_TempLevel












Set VariableSet IGT_IsCaster[IGT_Index] = False












Set VariableSet IGT_DamageGroupIndex[IGT_Index] = IGT_TempIndex












Set VariableSet IGT_BaseDamageTotal[IGT_Index] = IGT_BaseDamageTotal[IGT_Looper]












Set VariableSet IGT_DamagePerDebuffTotal[IGT_Index] = IGT_DamagePerDebuffTotal[IGT_Looper]












-------- --------












Set VariableSet IGT_ProjectileDistance[IGT_Index] = IGT_Radius[IGT_TempLevel]












Set VariableSet IGT_ProjectileSpeed[IGT_Index] = IGT_TempProjectileSpeed












Set VariableSet IGT_Angle[IGT_Index] = IGT_TempAngle












-------- --------












Set VariableSet IGT_ProjectileX[IGT_Index] = (X of IGT_Point1)












Set VariableSet IGT_ProjectileY[IGT_Index] = (Y of IGT_Point1)












-------- --------












Special Effect - Create a special effect at IGT_Point1 using IGT_FireNovaModel












Set VariableSet IGT_FireTrailSFX[IGT_Index] = (Last created special effect)












-------- --------












Set VariableSet IGT_Stage[IGT_Index] = IGT_STAGE_DAMAGE












-------- --------












Set VariableSet IGT_TempAngle = (IGT_TempAngle - IGT_TempAngleAdjuster)












-------- --------










Custom script: call RemoveLocation(udg_IGT_Point1)










-------- --------









Else - Actions










Set VariableSet IGT_Stage[IGT_Looper] = IGT_STAGE_WAIT










Set VariableSet IGT_WaitTimeLeft[IGT_Looper] = 0.00





Else - Actions




-------- --------




-------- MOVING THE FLAME SPARKS --------




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






IGT_Stage[IGT_Looper] Equal to IGT_STAGE_SPARKS





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








(Current order of IGT_Caster[IGT_Looper]) Equal to (Order(IGT_Order))







Then - Actions








-------- --------








Set VariableSet IGT_Point1 = (Position of IGT_Caster[IGT_Looper])








Set VariableSet IGT_Point2 = (IGT_Point1 offset by IGT_ProjectileDistance[IGT_Looper] towards IGT_Angle[IGT_Looper] degrees.)








-------- --------








Set VariableSet IGT_Angle[IGT_Looper] = (IGT_Angle[IGT_Looper] + IGT_TurnRate[IGT_Looper])








Set VariableSet IGT_ProjectileDistance[IGT_Looper] = (IGT_ProjectileDistance[IGT_Looper] - IGT_ProjectileSpeed[IGT_Looper])








-------- --------








Special Effect - Set Position - X of IGT_FireTrailSFX[IGT_Looper] to (X of IGT_Point2)








Special Effect - Set Position - Y of IGT_FireTrailSFX[IGT_Looper] to (Y of IGT_Point2)








Custom script: set udg_IGT_TempPosZ = GetLocationZ(udg_IGT_Point2)








Special Effect - Set Position - Z of IGT_FireTrailSFX[IGT_Looper] to (IGT_TempPosZ + IGT_ProjectileHeight)








-------- --------








Custom script: call RemoveLocation(udg_IGT_Point1)








Custom script: call RemoveLocation(udg_IGT_Point2)







Else - Actions








Set VariableSet IGT_Stage[IGT_Looper] = IGT_STAGE_DEINDEX





Else - Actions




-------- --------




-------- WAIT FOR THE NOVA TO END --------




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






IGT_Stage[IGT_Looper] Equal to IGT_STAGE_WAIT





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








IGT_WaitTimeLeft[IGT_Looper] Greater than 0.00







Then - Actions








Set VariableSet IGT_WaitTimeLeft[IGT_Looper] = (IGT_WaitTimeLeft[IGT_Looper] - 0.03)







Else - Actions








Unit - Remove IGT_AbilityDisabler from IGT_Caster[IGT_Looper]








-------- --------








Set VariableSet IGT_DamageGroup[IGT_DamageGroupIndex[IGT_Looper]] = IGT_DamageGroup[IGT_Index2]








Set VariableSet IGT_Index2 = (IGT_Index2 - 1)








Set VariableSet IGT_Stage[IGT_Looper] = IGT_STAGE_DEINDEX





Else - Actions




-------- --------




-------- MOVING THE NOVA WAVES --------




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






IGT_Stage[IGT_Looper] Equal to IGT_STAGE_DAMAGE





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








IGT_ProjectileDistance[IGT_Looper] Greater than 0.00







Then - Actions








-------- --------








Set VariableSet IGT_Point1 = (Point(IGT_ProjectileX[IGT_Looper], IGT_ProjectileY[IGT_Looper]))








-------- --------








Set VariableSet IGT_TempGroup = (Units within IGT_EffectWaveAoE[IGT_Level[IGT_Looper]] of IGT_Point1.)








Unit Group - Pick every unit in IGT_TempGroup and do (Actions)









Loop - Actions










Set VariableSet IGT_Picked = (Picked unit)










Custom script: set udg_IGT_IsIgnitable = IsIgnitable(udg_IGT_Picked)










If (All Conditions are True) then do (Then Actions) else do (Else Actions)











If - Conditions












IGT_IsIgnitable Equal to True











Then - Actions












-------- --------












Set VariableSet IGT_DebuffCounter = 0












For each (Integer IGT_Looper2) from 1 to IGT_DebuffCount, do (Actions)













Loop - Actions














If (All Conditions are True) then do (Then Actions) else do (Else Actions)















If - Conditions
















(IGT_Picked has buff IGT_DebuffList[IGT_Looper2]) Equal to True















Then - Actions
















Set VariableSet IGT_DebuffCounter = (IGT_DebuffCounter + 1)
















Unit - Remove IGT_DebuffList[IGT_Looper2] buff from IGT_Picked















Else - Actions












If (All Conditions are True) then do (Then Actions) else do (Else Actions)













If - Conditions














IGT_DebuffCounter Greater than 0













Then - Actions














Special Effect - Create a special effect attached to the IGT_FireHitAttachment of IGT_Picked using IGT_FireHitModel














Special Effect - Destroy (Last created special effect)














-------- --------














Unit - Cause IGT_Caster[IGT_Looper] to damage IGT_Picked, dealing (IGT_BaseDamageTotal[IGT_Looper] + (IGT_DamagePerDebuffTotal[IGT_Looper] x (Real(IGT_DebuffCounter)))) damage of attack type IGT_AttackType and damage type IGT_DamageType














Unit Group - Add IGT_Picked to IGT_DamageGroup[IGT_DamageGroupIndex[IGT_Looper]]













Else - Actions











Else - Actions








Custom script: call DestroyGroup(udg_IGT_TempGroup)








-------- --------








Set VariableSet IGT_Point2 = (IGT_Point1 offset by IGT_ProjectileSpeed[IGT_Looper] towards IGT_Angle[IGT_Looper] degrees.)








-------- --------








Destructible - Pick every destructible within IGT_EffectWaveAoE[IGT_Level[IGT_Looper]] of IGT_Point2 and do (Actions)









Loop - Actions










Set VariableSet IGT_Destructible = (Picked destructible)










Unit - Order IGT_Harvester to Harvest IGT_Destructible










If (All Conditions are True) then do (Then Actions) else do (Else Actions)











If - Conditions












(Current order of IGT_Harvester) Equal to (Order(harvest))











Then - Actions












Destructible - Kill IGT_Destructible












Unit - Order IGT_Harvester to Stop.











Else - Actions








-------- --------








Set VariableSet IGT_ProjectileDistance[IGT_Looper] = (IGT_ProjectileDistance[IGT_Looper] - IGT_ProjectileSpeed[IGT_Looper])








-------- --------








If (All Conditions are True) then do (Then Actions) else do (Else Actions)









If - Conditions










(Terrain pathing at IGT_Point2 of type Walkability is off) Equal to False










((Playable map area) contains IGT_Point2) Equal to True









Then - Actions










Special Effect - Set Position - X of IGT_FireTrailSFX[IGT_Looper] to (X of IGT_Point2)










Special Effect - Set Position - Y of IGT_FireTrailSFX[IGT_Looper] to (Y of IGT_Point2)










Custom script: set udg_IGT_TempPosZ = GetLocationZ(udg_IGT_Point2)










Special Effect - Set Position - Z of IGT_FireTrailSFX[IGT_Looper] to (IGT_TempPosZ + IGT_ProjectileHeight)









Else - Actions










Set VariableSet IGT_Stage[IGT_Looper] = IGT_STAGE_DEINDEX








-------- --------








Set VariableSet IGT_ProjectileX[IGT_Looper] = (X of IGT_Point2)








Set VariableSet IGT_ProjectileY[IGT_Looper] = (Y of IGT_Point2)








Custom script: call RemoveLocation(udg_IGT_Point1)








Custom script: call RemoveLocation(udg_IGT_Point2)







Else - Actions








Set VariableSet IGT_Stage[IGT_Looper] = IGT_STAGE_DEINDEX





Else - Actions




-------- --------




-------- DEINDEX --------




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






IGT_Stage[IGT_Looper] Equal to IGT_STAGE_DEINDEX





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








IGT_IsCaster[IGT_Looper] Equal to False







Then - Actions








Special Effect - Destroy IGT_FireTrailSFX[IGT_Looper]







Else - Actions






-------- --------






Set VariableSet IGT_FireTrailSFX[IGT_Looper] = IGT_FireTrailSFX[IGT_Index]






Set VariableSet IGT_ProjectileX[IGT_Looper] = IGT_ProjectileX[IGT_Index]






Set VariableSet IGT_ProjectileY[IGT_Looper] = IGT_ProjectileY[IGT_Index]






Set VariableSet IGT_Caster[IGT_Looper] = IGT_Caster[IGT_Index]






Set VariableSet IGT_Player[IGT_Looper] = IGT_Player[IGT_Index]






Set VariableSet IGT_Level[IGT_Looper] = IGT_Level[IGT_Index]






Set VariableSet IGT_IsCaster[IGT_Looper] = IGT_IsCaster[IGT_Index]






Set VariableSet IGT_DamageGroupIndex[IGT_Looper] = IGT_DamageGroupIndex[IGT_Index]






Set VariableSet IGT_CastingTimeLeft[IGT_Looper] = IGT_CastingTimeLeft[IGT_Index]






Set VariableSet IGT_ProjectileDistance[IGT_Looper] = IGT_ProjectileDistance[IGT_Index]






Set VariableSet IGT_ProjectileSpeed[IGT_Looper] = IGT_ProjectileSpeed[IGT_Index]






Set VariableSet IGT_TurnRate[IGT_Looper] = IGT_TurnRate[IGT_Index]






Set VariableSet IGT_Angle[IGT_Looper] = IGT_Angle[IGT_Index]






Set VariableSet IGT_DamagePerDebuffTotal[IGT_Looper] = IGT_DamagePerDebuffTotal[IGT_Index]






Set VariableSet IGT_BaseDamageTotal[IGT_Looper] = IGT_BaseDamageTotal[IGT_Index]






-------- --------






Set VariableSet IGT_IsCompleted[IGT_Looper] = IGT_IsCompleted[IGT_Index]






Set VariableSet IGT_Stage[IGT_Looper] = IGT_Stage[IGT_Index]






-------- --------






Set VariableSet IGT_Looper = (IGT_Looper - 1)






Set VariableSet IGT_Index = (IGT_Index - 1)






-------- --------






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








IGT_Index Equal to 0







Then - Actions








Trigger - Turn off (This trigger)







Else - Actions





Else - Actions
How to Import
How to import:
1) Go to the main window of the world editor then click on file-> preferences-> general then check the checkbox labeled automatically create unknown variable while pasting trigger data.
2) Copy Ignite (Main Ability), Ignite (Disabled) and Switch Ignite
3) Make sure the Switch Ignite has the right abilities in its Data - Ability Upgrade 1 just like in this test map.
4) Export dummy.mdx then import it to your map.
5) Copy and paste the Dummy (Generic) into your map.
6) Copy and paste the Trigger folder into your map.
7) Make sure to configure the values in the Ignite Init. Everything is pretty much explained in the trigger comments.
8) Read some important notes below
Note:
The ability is channeling, make sure that the casting time in the ability is higher than the ones in the trigger value. It is advised to put the value at its maximum. Also the tooltip of the Ignite(Main Ability) and Ignite(DIsabled) are the same. Same goes with the Cooldown and Casting time. It is only there for the sole purpose of avoiding the same unit cast the same ability while casting.
Variant
Ignite (Instant) - The caster no longer needs to fully channel the spell for it to release the nova.
Ignite Init

Events


Map initialization

Conditions

Actions


-------- --------


-------- ABILITY --------


Set VariableSet IGT_MainAbility = Ignite


-------- --------


-------- BASE DAMAGE --------


-------- This damage is automatically dealt to affected enemies --------


-------- Bonus attribute damage uses (100% = 1.00) --------


-------- --------


-------- Flat damage --------


Set VariableSet IGT_BaseDamage[1] = 80.00


Set VariableSet IGT_BaseDamage[2] = 100.00


Set VariableSet IGT_BaseDamage[3] = 120.00


-------- Bonus damage from Strength % --------


Set VariableSet IGT_StrengthDamage[1] = 0.00


Set VariableSet IGT_StrengthDamage[2] = 0.00


Set VariableSet IGT_StrengthDamage[3] = 0.00


-------- Bonus damage from Agility % --------


Set VariableSet IGT_AgilityDamage[1] = 0.00


Set VariableSet IGT_AgilityDamage[2] = 0.00


Set VariableSet IGT_AgilityDamage[3] = 0.00


-------- Bonus damage from Intelligence % --------


Set VariableSet IGT_IntelligenceDamage[1] = 0.00


Set VariableSet IGT_IntelligenceDamage[2] = 0.00


Set VariableSet IGT_IntelligenceDamage[3] = 0.00


-------- --------


-------- DAMAGE PER DEBUFFS REMOVED --------


-------- the bonus damage per instance of burn debuff removed from an enemy --------


-------- Bonus attribute damage uses (100% = 1.00) --------


-------- --------


-------- Flat damage --------


Set VariableSet IGT_BaseDamagePerDebuff[1] = 0.00


Set VariableSet IGT_BaseDamagePerDebuff[2] = 0.00


Set VariableSet IGT_BaseDamagePerDebuff[3] = 0.00


-------- Bonus damage from Strength % --------


Set VariableSet IGT_StrengthDamagePerDebuff[1] = 0.00


Set VariableSet IGT_StrengthDamagePerDebuff[2] = 0.00


Set VariableSet IGT_StrengthDamagePerDebuff[3] = 0.00


-------- Bonus damage from Agility % --------


Set VariableSet IGT_AgilityDamagePerDebuff[1] = 0.00


Set VariableSet IGT_AgilityDamagePerDebuff[2] = 0.00


Set VariableSet IGT_AgilityDamagePerDebuff[3] = 0.00


-------- Bonus damage from Intelligence % --------


Set VariableSet IGT_IntelligenceDamagePerDebuf[1] = 1.00


Set VariableSet IGT_IntelligenceDamagePerDebuf[2] = 1.00


Set VariableSet IGT_IntelligenceDamagePerDebuf[3] = 1.00


-------- --------


Set VariableSet IGT_AttackType = Spells


Set VariableSet IGT_DamageType = Normal


-------- --------


-------- NOVA --------


-------- --------


-------- number of waves released on a successful cast --------


Set VariableSet IGT_EffectWaveCount[1] = 36


Set VariableSet IGT_EffectWaveCount[2] = 36


Set VariableSet IGT_EffectWaveCount[3] = 36


-------- --------


-------- damage area of effect of each nova waves --------


Set VariableSet IGT_EffectWaveAoE[1] = 150.00


Set VariableSet IGT_EffectWaveAoE[2] = 150.00


Set VariableSet IGT_EffectWaveAoE[3] = 150.00


-------- --------


-------- the amount of time before the nova fully spreads --------


-------- this value determines the speed of the nova --------


-------- this will also determine the duration before the caster can regain the main ability --------


Set VariableSet IGT_EffectWaveDuration[1] = 1.00


Set VariableSet IGT_EffectWaveDuration[2] = 1.00


Set VariableSet IGT_EffectWaveDuration[3] = 1.00


-------- --------


-------- OTHERS --------


-------- --------


Set VariableSet IGT_ProjectileHeight = 100.00


-------- --------


Set VariableSet IGT_Radius[1] = 900.00


Set VariableSet IGT_Radius[2] = 900.00


Set VariableSet IGT_Radius[3] = 900.00


-------- --------


Set VariableSet IGT_CastingTime[1] = 1.50


Set VariableSet IGT_CastingTime[2] = 1.50


Set VariableSet IGT_CastingTime[3] = 1.50


-------- --------


Set VariableSet IGT_DebuffCount = 4


-------- I elected not to use index 0 --------


-------- debuffs checked --------


Set VariableSet IGT_DebuffList[1] = Incinerate


Set VariableSet IGT_DebuffList[2] = Flame Strike


Set VariableSet IGT_DebuffList[3] = Rain of Fire


Set VariableSet IGT_DebuffList[4] = Soul Burn


-------- --------


-------- SFX --------


-------- --------


-------- number of spiral flames during cast --------


Set VariableSet IGT_CastFireTrails[1] = 3


Set VariableSet IGT_CastFireTrails[2] = 3


Set VariableSet IGT_CastFireTrails[3] = 3


-------- model of the spiral flames and attachement point --------


Set VariableSet IGT_FireTrailModel = Abilities\Weapons\RedDragonBreath\RedDragonMissile.mdl


Set VariableSet IGT_FireTrailModelAttachment = overhead


-------- model of the nova waves emitted and attachement point --------


Set VariableSet IGT_FireNovaModel = Abilities\Weapons\RedDragonBreath\RedDragonMissile.mdl


Set VariableSet IGT_FireNovaModelAttachment = overhead


-------- model used when the spell hits --------


Set VariableSet IGT_FireHitModel = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl


Set VariableSet IGT_FireHitAttachment = origin


-------- --------


-------- MISC --------


-------- --------


Set VariableSet IGT_STAGE_DAMAGE = NOVA


Set VariableSet IGT_STAGE_CASTING = CASTING


Set VariableSet IGT_STAGE_DEINDEX = DEINDEX


Set VariableSet IGT_STAGE_SPARKS = SPARKS


-------- --------


-------- Tree Destroyer --------


Set VariableSet IGT_Point1 = (Random point in (Playable map area))


Set VariableSet IGT_Harvester = (Last created unit)


Unit - Create 1 Dummy (Generic) for Neutral Passive at IGT_Point1 facing Default building facing degrees


Set VariableSet IGT_Harvester = (Last created unit)


-------- --------


-------- Preload --------


Unit - Add IGT_MainAbility to IGT_Harvester


Unit - Remove IGT_MainAbility from IGT_Harvester


-------- --------


Custom script: call RemoveLocation(udg_IGT_Point1)


-------- --------


Custom script: endfunction


-------- --------


-------- DAMAGE FILTER --------


-------- Use IGT_Picked to set your boolean conditions to determine which units gets damaged --------


-------- The default example delineates that enemies which are structures, magic immunes and mechanicals do not get damaged --------


-------- beyond that point, change it only if you know what youre doing --------


Custom script: function IsIgnitable takes unit udg_IGT_Picked returns boolean


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




(IGT_Picked is A structure) Equal to False




(IGT_Picked is Mechanical) Equal to False




(IGT_Picked is Magic Immune) Equal to False




(IGT_Picked is alive) Equal to True




(IGT_Picked belongs to an enemy of IGT_Player[IGT_Looper].) Equal to True




(IGT_Picked is in IGT_DamageGroup[IGT_DamageGroupIndex[IGT_Looper]].) Equal to False



Then - Actions




Custom script: return true



Else - Actions


Custom script: return false
Ignite Cast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to IGT_MainAbility

Actions


-------- --------


Set VariableSet IGT_Index = (IGT_Index + 1)


-------- --------


Set VariableSet IGT_TempCaster = (Triggering unit)


Set VariableSet IGT_TempLevel = (Level of IGT_MainAbility for IGT_TempCaster)


-------- --------


Set VariableSet IGT_Caster[IGT_Index] = IGT_TempCaster


Set VariableSet IGT_Player[IGT_Index] = (Triggering player)


Set VariableSet IGT_Level[IGT_Index] = IGT_TempLevel


Set VariableSet IGT_CastingTimeLeft[IGT_Index] = IGT_CastingTime[IGT_Level[IGT_Index]]


Set VariableSet IGT_IsCaster[IGT_Index] = True


-------- --------


-------- flat damage --------


Set VariableSet IGT_TempDamageStrength = (IGT_StrengthDamage[IGT_Level[IGT_Index]] x (Real((Strength of IGT_Caster[IGT_Index] (Include bonuses)))))


Set VariableSet IGT_TempDamageAgility = (IGT_AgilityDamage[IGT_Level[IGT_Index]] x (Real((Agility of IGT_Caster[IGT_Index] (Include bonuses)))))


Set VariableSet IGT_TempDamageIntelligence = (IGT_IntelligenceDamage[IGT_Level[IGT_Index]] x (Real((Intelligence of IGT_Caster[IGT_Index] (Include bonuses)))))


Set VariableSet IGT_BaseDamageTotal[IGT_Index] = ((IGT_TempDamageStrength + IGT_TempDamageAgility) + (IGT_TempDamageIntelligence + IGT_BaseDamage[IGT_Level[IGT_Index]]))


-------- --------


-------- damage per debuffs removed --------


Set VariableSet IGT_TempDamageStrength = (IGT_StrengthDamagePerDebuff[IGT_Level[IGT_Index]] x (Real((Strength of IGT_Caster[IGT_Index] (Include bonuses)))))


Set VariableSet IGT_TempDamageAgility = (IGT_AgilityDamagePerDebuff[IGT_Level[IGT_Index]] x (Real((Agility of IGT_Caster[IGT_Index] (Include bonuses)))))


Set VariableSet IGT_TempDamageIntelligence = (IGT_IntelligenceDamagePerDebuf[IGT_Level[IGT_Index]] x (Real((Intelligence of IGT_Caster[IGT_Index] (Include bonuses)))))


Set VariableSet IGT_DamagePerDebuffTotal[IGT_Index] = ((IGT_TempDamageStrength + IGT_TempDamageAgility) + (IGT_TempDamageIntelligence + IGT_BaseDamagePerDebuff[IGT_Level[IGT_Index]]))


-------- --------


Set VariableSet IGT_Index2 = (IGT_Index2 + 1)


Set VariableSet IGT_DamageGroupIndex[IGT_Index] = IGT_Index2


Custom script: call DestroyGroup(udg_IGT_DamageGroup[udg_IGT_DamageGroupIndex[udg_IGT_Index]])


Custom script: set udg_IGT_DamageGroup[udg_IGT_DamageGroupIndex[udg_IGT_Index]]=CreateGroup()


-------- --------


Set VariableSet IGT_Stage[IGT_Index] = IGT_STAGE_CASTING


-------- --------


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




IGT_Index Equal to 1



Then - Actions




Trigger - Turn on Ignite Effect <gen>



Else - Actions


-------- --------


Set VariableSet IGT_Point1 = (Position of IGT_Caster[IGT_Index])


-------- --------


Set VariableSet IGT_TempAngle = (Facing of IGT_Caster[IGT_Index])


Set VariableSet IGT_TempAngleAdjuster = (360.00 / (Real(IGT_CastFireTrails[IGT_Level[IGT_Index]])))


Set VariableSet IGT_TempProjectileSpeed = (IGT_Radius[IGT_Level[IGT_Index]] / (IGT_CastingTime[IGT_Level[IGT_Index]] / 0.03))


Set VariableSet IGT_TempTurnRate = (IGT_TempAngleAdjuster / (IGT_CastingTime[IGT_Level[IGT_Index]] / 0.03))


-------- --------


For each (Integer IGT_Looper) from 1 to IGT_CastFireTrails[IGT_TempLevel], do (Actions)



Loop - Actions




Set VariableSet IGT_Index = (IGT_Index + 1)




-------- --------




Set VariableSet IGT_Caster[IGT_Index] = IGT_TempCaster




Set VariableSet IGT_Level[IGT_Index] = IGT_TempLevel




Set VariableSet IGT_IsCaster[IGT_Index] = False




Set VariableSet IGT_CastingTimeLeft[IGT_Index] = IGT_CastingTime[IGT_TempLevel]




-------- --------




Set VariableSet IGT_Point2 = (IGT_Point1 offset by IGT_Radius[IGT_TempLevel] towards IGT_TempAngle degrees.)




-------- --------




Set VariableSet IGT_ProjectileDistance[IGT_Index] = IGT_Radius[IGT_TempLevel]




Set VariableSet IGT_ProjectileSpeed[IGT_Index] = IGT_TempProjectileSpeed




Set VariableSet IGT_Angle[IGT_Index] = (Angle from IGT_Point2 to IGT_Point1)




Set VariableSet IGT_TurnRate[IGT_Index] = IGT_TempTurnRate




-------- --------




Special Effect - Create a special effect at IGT_Point2 using IGT_FireTrailModel




Set VariableSet IGT_FireTrailSFX[IGT_Index] = (Last created special effect)




-------- --------




Set VariableSet IGT_Stage[IGT_Index] = IGT_STAGE_SPARKS




-------- --------




Set VariableSet IGT_TempAngle = (IGT_TempAngle - IGT_TempAngleAdjuster)




-------- --------




Custom script: call RemoveLocation(udg_IGT_Point2)


Custom script: call RemoveLocation(udg_IGT_Point1)
Ignite Effect

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


For each (Integer IGT_Looper) from 1 to IGT_Index, do (Actions)



Loop - Actions




-------- --------




-------- CASTER IS CASTING --------




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






IGT_Stage[IGT_Looper] Equal to IGT_STAGE_CASTING





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








IGT_CastingTimeLeft[IGT_Looper] Greater than 0.00







Then - Actions








Set VariableSet IGT_CastingTimeLeft[IGT_Looper] = (IGT_CastingTimeLeft[IGT_Looper] - 0.03)







Else - Actions








-------- --------








Set VariableSet IGT_Stage[IGT_Looper] = IGT_STAGE_WAIT








-------- --------








Set VariableSet IGT_TempCaster = IGT_Caster[IGT_Looper]








Set VariableSet IGT_TempPlayer = IGT_Player[IGT_Looper]








Set VariableSet IGT_TempLevel = IGT_Level[IGT_Looper]








Set VariableSet IGT_WaitTimeLeft[IGT_Looper] = IGT_EffectWaveDuration[IGT_TempIndex]








-------- --------








Set VariableSet IGT_Point1 = (Position of IGT_TempCaster)








-------- --------








Set VariableSet IGT_TempAngle = (Facing of IGT_TempCaster)








Set VariableSet IGT_TempAngleAdjuster = (360.00 / (Real(IGT_EffectWaveCount[IGT_TempLevel])))








Set VariableSet IGT_TempProjectileSpeed = (IGT_Radius[IGT_TempLevel] / (IGT_EffectWaveDuration[IGT_TempLevel] / 0.03))








Set VariableSet IGT_TempIndex = IGT_DamageGroupIndex[IGT_Looper]








-------- --------








For each (Integer IGT_Looper2) from 1 to IGT_EffectWaveCount[IGT_TempLevel], do (Actions)









Loop - Actions










Set VariableSet IGT_Index = (IGT_Index + 1)










-------- --------










Set VariableSet IGT_Caster[IGT_Index] = IGT_TempCaster










Set VariableSet IGT_Player[IGT_Index] = IGT_TempPlayer










Set VariableSet IGT_Level[IGT_Index] = IGT_TempLevel










Set VariableSet IGT_IsCaster[IGT_Index] = False










Set VariableSet IGT_DamageGroupIndex[IGT_Index] = IGT_TempIndex










Set VariableSet IGT_BaseDamageTotal[IGT_Index] = IGT_BaseDamageTotal[IGT_Looper]










Set VariableSet IGT_DamagePerDebuffTotal[IGT_Index] = IGT_DamagePerDebuffTotal[IGT_Looper]










-------- --------










Set VariableSet IGT_ProjectileDistance[IGT_Index] = IGT_Radius[IGT_TempLevel]










Set VariableSet IGT_ProjectileSpeed[IGT_Index] = IGT_TempProjectileSpeed










Set VariableSet IGT_Angle[IGT_Index] = IGT_TempAngle










-------- --------










Set VariableSet IGT_ProjectileX[IGT_Index] = (X of IGT_Point1)










Set VariableSet IGT_ProjectileY[IGT_Index] = (Y of IGT_Point1)










-------- --------










Special Effect - Create a special effect at IGT_Point1 using IGT_FireNovaModel










Set VariableSet IGT_FireTrailSFX[IGT_Index] = (Last created special effect)










-------- --------










Set VariableSet IGT_Stage[IGT_Index] = IGT_STAGE_DAMAGE










-------- --------










Set VariableSet IGT_TempAngle = (IGT_TempAngle - IGT_TempAngleAdjuster)










-------- --------








Custom script: call RemoveLocation(udg_IGT_Point1)








-------- --------





Else - Actions




-------- --------




-------- MOVING THE FLAME SPARKS --------




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






IGT_Stage[IGT_Looper] Equal to IGT_STAGE_SPARKS





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








IGT_CastingTimeLeft[IGT_Looper] Greater than 0.00







Then - Actions








-------- --------








Set VariableSet IGT_Point1 = (Position of IGT_Caster[IGT_Looper])








Set VariableSet IGT_Point2 = (IGT_Point1 offset by IGT_ProjectileDistance[IGT_Looper] towards IGT_Angle[IGT_Looper] degrees.)








-------- --------








Set VariableSet IGT_Angle[IGT_Looper] = (IGT_Angle[IGT_Looper] + IGT_TurnRate[IGT_Looper])








Set VariableSet IGT_ProjectileDistance[IGT_Looper] = (IGT_ProjectileDistance[IGT_Looper] - IGT_ProjectileSpeed[IGT_Looper])








-------- --------








Special Effect - Set Position - X of IGT_FireTrailSFX[IGT_Looper] to (X of IGT_Point2)








Special Effect - Set Position - Y of IGT_FireTrailSFX[IGT_Looper] to (Y of IGT_Point2)








Custom script: set udg_IGT_TempPosZ = GetLocationZ(udg_IGT_Point2)








Special Effect - Set Position - Z of IGT_FireTrailSFX[IGT_Looper] to (IGT_TempPosZ + IGT_ProjectileHeight)








-------- --------








Set VariableSet IGT_CastingTimeLeft[IGT_Looper] = (IGT_CastingTimeLeft[IGT_Looper] - 0.03)








-------- --------








Custom script: call RemoveLocation(udg_IGT_Point1)








Custom script: call RemoveLocation(udg_IGT_Point2)







Else - Actions








Set VariableSet IGT_Stage[IGT_Looper] = IGT_STAGE_DEINDEX





Else - Actions




-------- --------




-------- WAIT FOR THE NOVA TO END --------




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






IGT_Stage[IGT_Looper] Equal to IGT_STAGE_WAIT





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








IGT_WaitTimeLeft[IGT_Looper] Greater than 0.00







Then - Actions








Set VariableSet IGT_WaitTimeLeft[IGT_Looper] = (IGT_WaitTimeLeft[IGT_Looper] - 0.03)







Else - Actions








-------- --------








Set VariableSet IGT_DamageGroup[IGT_DamageGroupIndex[IGT_Looper]] = IGT_DamageGroup[IGT_Index2]








Set VariableSet IGT_Index2 = (IGT_Index2 - 1)








Set VariableSet IGT_Stage[IGT_Looper] = IGT_STAGE_DEINDEX





Else - Actions




-------- --------




-------- MOVING THE NOVA WAVES --------




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






IGT_Stage[IGT_Looper] Equal to IGT_STAGE_DAMAGE





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








IGT_ProjectileDistance[IGT_Looper] Greater than 0.00







Then - Actions








-------- --------








Set VariableSet IGT_Point1 = (Point(IGT_ProjectileX[IGT_Looper], IGT_ProjectileY[IGT_Looper]))








-------- --------








Set VariableSet IGT_TempGroup = (Units within IGT_EffectWaveAoE[IGT_Level[IGT_Looper]] of IGT_Point1.)








Unit Group - Pick every unit in IGT_TempGroup and do (Actions)









Loop - Actions










Set VariableSet IGT_Picked = (Picked unit)










Custom script: set udg_IGT_IsIgnitable = IsIgnitable(udg_IGT_Picked)










If (All Conditions are True) then do (Then Actions) else do (Else Actions)











If - Conditions












IGT_IsIgnitable Equal to True











Then - Actions












-------- --------












Set VariableSet IGT_DebuffCounter = 0












For each (Integer IGT_Looper2) from 1 to IGT_DebuffCount, do (Actions)













Loop - Actions














If (All Conditions are True) then do (Then Actions) else do (Else Actions)















If - Conditions
















(IGT_Picked has buff IGT_DebuffList[IGT_Looper2]) Equal to True















Then - Actions
















Set VariableSet IGT_DebuffCounter = (IGT_DebuffCounter + 1)
















Unit - Remove IGT_DebuffList[IGT_Looper2] buff from IGT_Picked















Else - Actions












If (All Conditions are True) then do (Then Actions) else do (Else Actions)













If - Conditions














IGT_DebuffCounter Greater than 0













Then - Actions














Special Effect - Create a special effect attached to the IGT_FireHitAttachment of IGT_Picked using IGT_FireHitModel














Special Effect - Destroy (Last created special effect)














-------- --------














Unit - Cause IGT_Caster[IGT_Looper] to damage IGT_Picked, dealing (IGT_BaseDamageTotal[IGT_Looper] + (IGT_DamagePerDebuffTotal[IGT_Looper] x (Real(IGT_DebuffCounter)))) damage of attack type IGT_AttackType and damage type IGT_DamageType














Unit Group - Add IGT_Picked to IGT_DamageGroup[IGT_DamageGroupIndex[IGT_Looper]]













Else - Actions











Else - Actions








Custom script: call DestroyGroup(udg_IGT_TempGroup)








-------- --------








Set VariableSet IGT_Point2 = (IGT_Point1 offset by IGT_ProjectileSpeed[IGT_Looper] towards IGT_Angle[IGT_Looper] degrees.)








-------- --------








Destructible - Pick every destructible within IGT_EffectWaveAoE[IGT_Level[IGT_Looper]] of IGT_Point2 and do (Actions)









Loop - Actions










Set VariableSet IGT_Destructible = (Picked destructible)










Unit - Order IGT_Harvester to Harvest IGT_Destructible










If (All Conditions are True) then do (Then Actions) else do (Else Actions)











If - Conditions












(Current order of IGT_Harvester) Equal to (Order(harvest))











Then - Actions












Destructible - Kill IGT_Destructible












Unit - Order IGT_Harvester to Stop.











Else - Actions








-------- --------








Set VariableSet IGT_ProjectileDistance[IGT_Looper] = (IGT_ProjectileDistance[IGT_Looper] - IGT_ProjectileSpeed[IGT_Looper])








-------- --------








If (All Conditions are True) then do (Then Actions) else do (Else Actions)









If - Conditions










(Terrain pathing at IGT_Point2 of type Walkability is off) Equal to False










((Playable map area) contains IGT_Point2) Equal to True









Then - Actions










Special Effect - Set Position - X of IGT_FireTrailSFX[IGT_Looper] to (X of IGT_Point2)










Special Effect - Set Position - Y of IGT_FireTrailSFX[IGT_Looper] to (Y of IGT_Point2)










Custom script: set udg_IGT_TempPosZ = GetLocationZ(udg_IGT_Point2)










Special Effect - Set Position - Z of IGT_FireTrailSFX[IGT_Looper] to (IGT_TempPosZ + IGT_ProjectileHeight)









Else - Actions










Set VariableSet IGT_Stage[IGT_Looper] = IGT_STAGE_DEINDEX








-------- --------








Set VariableSet IGT_ProjectileX[IGT_Looper] = (X of IGT_Point2)








Set VariableSet IGT_ProjectileY[IGT_Looper] = (Y of IGT_Point2)








Custom script: call RemoveLocation(udg_IGT_Point1)








Custom script: call RemoveLocation(udg_IGT_Point2)







Else - Actions








Set VariableSet IGT_Stage[IGT_Looper] = IGT_STAGE_DEINDEX





Else - Actions




-------- --------




-------- DEINDEX --------




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






IGT_Stage[IGT_Looper] Equal to IGT_STAGE_DEINDEX





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








IGT_IsCaster[IGT_Looper] Equal to False







Then - Actions








Special Effect - Destroy IGT_FireTrailSFX[IGT_Looper]







Else - Actions






-------- --------






Set VariableSet IGT_FireTrailSFX[IGT_Looper] = IGT_FireTrailSFX[IGT_Index]






Set VariableSet IGT_ProjectileX[IGT_Looper] = IGT_ProjectileX[IGT_Index]






Set VariableSet IGT_ProjectileY[IGT_Looper] = IGT_ProjectileY[IGT_Index]






Set VariableSet IGT_Caster[IGT_Looper] = IGT_Caster[IGT_Index]






Set VariableSet IGT_Player[IGT_Looper] = IGT_Player[IGT_Index]






Set VariableSet IGT_Level[IGT_Looper] = IGT_Level[IGT_Index]






Set VariableSet IGT_IsCaster[IGT_Looper] = IGT_IsCaster[IGT_Index]






Set VariableSet IGT_DamageGroupIndex[IGT_Looper] = IGT_DamageGroupIndex[IGT_Index]






Set VariableSet IGT_CastingTimeLeft[IGT_Looper] = IGT_CastingTimeLeft[IGT_Index]






Set VariableSet IGT_ProjectileDistance[IGT_Looper] = IGT_ProjectileDistance[IGT_Index]






Set VariableSet IGT_ProjectileSpeed[IGT_Looper] = IGT_ProjectileSpeed[IGT_Index]






Set VariableSet IGT_TurnRate[IGT_Looper] = IGT_TurnRate[IGT_Index]






Set VariableSet IGT_Angle[IGT_Looper] = IGT_Angle[IGT_Index]






Set VariableSet IGT_DamagePerDebuffTotal[IGT_Looper] = IGT_DamagePerDebuffTotal[IGT_Index]






Set VariableSet IGT_BaseDamageTotal[IGT_Looper] = IGT_BaseDamageTotal[IGT_Index]






-------- --------






Set VariableSet IGT_Stage[IGT_Looper] = IGT_Stage[IGT_Index]






-------- --------






Set VariableSet IGT_Looper = (IGT_Looper - 1)






Set VariableSet IGT_Index = (IGT_Index - 1)






-------- --------






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








IGT_Index Equal to 0







Then - Actions








Trigger - Turn off (This trigger)







Else - Actions





Else - Actions
How to Import
How to import:
1) Go to the main window of the world editor then click on file-> preferences-> general then check the checkbox labeled automatically create unknown variable while pasting trigger data.
2) Copy Ignite
3) Export dummy.mdx then import it to your map.
4) Copy and paste the Dummy (Generic) into your map.
5) Copy and paste the Trigger folder into your map.
6) Make sure to configure the values in the Ignite Init. Everything is pretty much explained in the trigger comments.
Credits
Vexorian for dummy.mdx