Hi i have made a spell that using water effect with some imported models
i would like to know which are not needed. How could i improve code performance and also making good for an approval!
here is the code : The way im making my code is in separate triggers or the code get so big im getting lost in it and where there is a glitch idk where to find it so i made it in more than 2 trigger
here is the code
here is the map also if yall need to work on it.
Like i said Trigger is split for my own understanding! if making them in the same code would improve performance i would unless i wont merge trigger.
The spell itself use an orbit engine made on my own to make xtra effect!! : i think it could be merge but if poeple(noob) dont like they wont be able to remove it that e-z
Thanks for your time took plz add good comments with exemple : my english blow im french i do not know all meaning and words
i would like to know which are not needed. How could i improve code performance and also making good for an approval!
here is the code : The way im making my code is in separate triggers or the code get so big im getting lost in it and where there is a glitch idk where to find it so i made it in more than 2 trigger
here is the code
-
Suiton Daibaikusui shoha Call
-
Events
-
Unit - A unit Starts the effect of an ability
-
-
Conditions
-
(Ability being cast) Equal to Suiton Daibakusui Shoha
-
-
Actions
-
Set TriggerUnit = (Triggering unit)
-
-------- ------------------------------------ --------
-
Set ORB_Source = TriggerUnit
-
Set TempLoc = (Position of ORB_Source)
-
Set TempLoc3 = (Position of ORB_Source)
-
Set ORB_NumberEffect = 4
-
Set ORB_AreaOfEffect = 500.00
-
Set ORB_DummyAnimationSpeed = 75.00
-
Set ORB_MoveSpeed = 10.00
-
Set ORB_DummySize = 100.00
-
Set ORB_DummyGroundEffect = Abilities\Weapons\LichMissile\LichMissile.mdl
-
Set ORB_MissileModel = Abilities\Spells\Other\CrushingWave\CrushingWaveMissile.mdl
-
Set ORB_IntegerAbility = (Level of (Ability being cast) for TriggerUnit)
-
Set ORB_Offset = 500
-
Set ORB_DamagePerLoop = (1.00 x (Real(ORB_IntegerAbility)))
-
Set ORB_DummySpeed = (10.00 x (Real(ORB_IntegerAbility)))
-
Set ORB_SpellDuration = (3.00 x (Real(ORB_IntegerAbility)))
-
-------- ------------------------------------ --------
-
-------- ------------------------------------ --------
-
Special Effect - Create a special effect attached to the origin of ORB_Source using HealingWater.MDX
-
Special Effect - Destroy (Last created special effect)
-
Special Effect - Create a special effect attached to the origin of ORB_Source using war3mapImported\AquaSpike.mdx
-
Special Effect - Destroy (Last created special effect)
-
-------- ------------------------------------ --------
-
-------- ------------------------------------ --------
-
Unit - Create 1 DummyUnit for (Owner of ORB_Source) at TempLoc facing Default building facing degrees
-
Set ORB_Origin = (Last created unit)
-
-------- ------------------------------------ --------
-
Unit - Create 1 Aura for (Owner of ORB_Source) at TempLoc facing Default building facing degrees
-
Set ORB_Origin2 = (Last created unit)
-
-------- ------------------------------------ --------
-
Unit - Create 1 Aura second for (Owner of ORB_Source) at TempLoc facing Default building facing degrees
-
Set ORB_Origin3 = (Last created unit)
-
-------- ------------------------------------ --------
-
Unit - Create 1 Dummy Naga Death for (Owner of ORB_Source) at TempLoc3 facing Default building facing degrees
-
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
-
Animation - Change (Last created unit)'s size to (250.00%, 250.00%, 250.00%) of its original size
-
-------- ------------------------------------ --------
-
Unit - Create 1 Dummy Naga Death for (Owner of ORB_Source) at TempLoc3 facing Default building facing degrees
-
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
-
Animation - Change (Last created unit)'s size to (100.00%, 100.00%, 100.00%) of its original size
-
-------- ------------------------------------ --------
-
Set ORB_Point = (Position of ORB_Origin)
-
-------- ------------------------------------ --------
-
Unit - Add Hidden Book to ORB_Origin3
-
Player - Disable Hidden Book for (Owner of (Triggering unit))
-
-------- ------------------------------------ --------
-
Trigger - Run Swirl Engine Core <gen> (checking conditions)
-
-------- ------------------------------------ --------
-
Custom script: call RemoveLocation(udg_TempLoc)
-
Custom script: call RemoveLocation(udg_TempLoc3)
-
-------- ------------------------------------ --------
-
Set ORB_Source = TriggerUnit
-
Set ORB_Origin4 = ORB_Origin3
-
Set ORB_Point = (Position of ORB_Origin4)
-
Set ORB_NumberEffect = 4
-
Set ORB_AreaOfEffect = 500.00
-
Set ORB_IntegerAbility = (Level of (Ability being cast) for TriggerUnit)
-
Set ORB_DummyAnimationSpeed = 25.00
-
Set ORB_DummyGroundEffect = war3mapImported\NagaDeathSpare.mdl
-
Set ORB_MissileModel = war3mapImported\AquaSpike.mdl
-
Set ORB_DamagePerLoop = (1.00 x (Real(ORB_IntegerAbility)))
-
Set ORB_DummySpeed = (10.00 x (Real(ORB_IntegerAbility)))
-
Set ORB_MoveSpeed = 10.00
-
Set ORB_DummySize = 100.00
-
Set ORB_Offset = 250
-
Set ORB_SpellDuration = ORB_SpellDuration
-
Trigger - Run Orbiting Fire <gen> (checking conditions)
-
-------- ------------------------------------ --------
-
Countdown Timer - Start KisameDaibak_Timer as a One-shot timer that will expire in ORB_SpellDuration seconds
-
-------- ------------------------------------ --------
-
-
-
Swirl Engine Core
-
Events
-
Conditions
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SORF_Index_Size Equal to 0
-
-
Then - Actions
-
Trigger - Turn on Swirl Engine Loop 4 <gen>
-
-
Else - Actions
-
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set SP_Index_Size = (SP_Index_Size + 1)
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SP_Index_Size Greater than SP_Index_maxSize
-
-
Then - Actions
-
Set SP_Index[SP_Index_Size] = SP_Index_Size
-
Set SP_Index_maxSize = SP_Index_Size
-
-
Else - Actions
-
-
Set SP_Int = SP_Index[SP_Index_Size]
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
-------- NUMBER OF ORBITING EFFECT ? --------
-
Set SCL_NumE[SP_Int] = ORB_NumberEffect
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
For each (Integer SORF_Loop[SP_Int]) from 1 to SCL_NumE[SP_Int], do (Actions)
-
Loop - Actions
-
Set TempLoc = ORB_Point
-
-------- Increase the index size --------
-
Set SORF_Index_Size = (SORF_Index_Size + 1)
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
-------- Dynamic Index --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SORF_Index_Size Greater than SORF_Index_maxSize
-
-
Then - Actions
-
Set SORF_Index[SORF_Index_Size] = SORF_Index_Size
-
Set SORF_Index_maxSize = SORF_Index_Size
-
-
Else - Actions
-
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
-------- Dynamic Index End --------
-
Set SORFInt = SORF_Index[SORF_Index_Size]
-
-------- Setup those arrays --------
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set SORF_NumE[SORFInt] = SCL_NumE[SP_Int]
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set SORF_CASTER[SORFInt] = ORB_Source
-
Set SORF_DummyOrigin[SORFInt] = ORB_Origin
-
Set SORF_DummyOrigin2[SORFInt] = ORB_Origin2
-
Set SORF_DummyOrigin3[SORFInt] = ORB_Origin3
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
-------- ------- Setup Section----- --------
-
Set SORF_IntegerAbility[SORFInt] = ORB_IntegerAbility
-
Set SORF_Duration[SORFInt] = ORB_SpellDuration
-
Set SORF_LoopTurn[SORFInt] = 0.05
-
Set SORF_MoveSpeed[SORFInt] = ORB_MoveSpeed
-
Set SORF_AOE2[SORFInt] = ORB_AreaOfEffect
-
Set SORF_Damage[SORFInt] = ORB_DamagePerLoop
-
Set SORF_Offset[SORFInt] = ORB_Offset
-
Set SORF_Calc[SORFInt] = (360.00 / (Real(SORF_NumE[SP_Int])))
-
Set SORF_SfxString1[SORFInt] = ORB_DummyGroundEffect
-
Set SORF_SfxStringMissile[SORFInt] = ORB_MissileModel
-
Set SORF_DUMMY_ANIMATION_SPEED[SORFInt] = ORB_DummyAnimationSpeed
-
Set SORF_DUMMY_SIZER[SORFInt] = ORB_DummySize
-
-------- -------------------------------- --------
-
Set SORF_XAngle[SORFInt] = (SORF_Calc[SORFInt] x (Real(SORF_Loop[SP_Int])))
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set SORF_BooleanKnock[SORFInt] = True
-
Set SORF_BOOLEAN[SORFInt] = False
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
-------- we calculate the effect need to give a good circle --------
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set TempLoc3 = (TempLoc offset by (Real(SORF_Offset[SORFInt])) towards SORF_XAngle[SORFInt] degrees)
-
Unit - Create 1 DummyUnit for (Owner of SORF_CASTER[SORFInt]) at TempLoc3 facing Default building facing degrees
-
Set SORF_DummyAura[SORFInt] = (Last created unit)
-
Special Effect - Create a special effect attached to the origin of SORF_DummyAura[SORFInt] using SORF_SfxStringMissile[SORFInt]
-
Animation - Change SORF_DummyAura[SORFInt]'s size to (SORF_DUMMY_SIZER[SORFInt]%, SORF_DUMMY_SIZER[SORFInt]%, SORF_DUMMY_SIZER[SORFInt]%) of its original size
-
Unit - Turn collision for (Last created unit) Off
-
Unit - Add Storm Crow Form to (Last created unit)
-
Unit - Remove Storm Crow Form from (Last created unit)
-
Animation - Change (Last created unit) flying height to 100.00 at 0.00
-
Custom script: set udg_SORF_WaterGroup[udg_SORFInt] = CreateGroup()
-
Custom script: call RemoveLocation(udg_TempLoc3)
-
Custom script: call RemoveLocation(udg_TempLoc)
-
-
-
Set SCL_NumE[SP_Int] = 0
-
Set SORF_BOOLEAN[SORFInt] = False
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set SP_Index[SP_LOOP] = SP_Index[SP_Index_Size]
-
Set SP_Index[SP_Index_Size] = SP_Int
-
Set SP_Index_Size = (SP_Index_Size - 1)
-
Set SP_LOOP = (SP_LOOP - 1)
-
-
-
Swirl Engine Loop 4
-
Events
-
Time - Every 0.05 seconds of game time
-
-
Conditions
-
Actions
-
For each (Integer SORF_LOOP) from 1 to SORF_Index_Size, do (Actions)
-
Loop - Actions
-
-------- This let look everything cleaner. --------
-
Set SORFInt = SORF_Index[SORF_LOOP]
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set ORFLoc2 = (Position of SORF_CASTER[SORFInt])
-
Set ORFLoc3 = (Position of SORF_CASTER[SORFInt])
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SORF_Duration[SORFInt] Greater than 0.00
-
-
Then - Actions
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SORF_SpecialAngle[SORFInt] Less than 360.00
-
-
Then - Actions
-
Set SORF_SpecialAngle[SORFInt] = (SORF_SpecialAngle[SORFInt] + SORF_MoveSpeed[SORFInt])
-
-
Else - Actions
-
Set SORF_SpecialAngle[SORFInt] = 0.00
-
Set SORF_SpecialAngle[SORFInt] = (SORF_SpecialAngle[SORFInt] + SORF_MoveSpeed[SORFInt])
-
-
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SORF_Angle[SORFInt] Less than 1.00
-
-
Then - Actions
-
Set SORF_Angle[SORFInt] = (SORF_XAngle[SORFInt] - SORF_SpecialAngle[SORFInt])
-
-
Else - Actions
-
Set SORF_Angle[SORFInt] = 360.00
-
Set SORF_Angle[SORFInt] = (SORF_XAngle[SORFInt] - SORF_SpecialAngle[SORFInt])
-
-
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SORF_Offset[SORFInt] Greater than 0
-
-
Then - Actions
-
Set SORF_Offset[SORFInt] = (SORF_Offset[SORFInt] - 5)
-
-
Else - Actions
-
Set SORF_Offset[SORFInt] = 500
-
Set SORF_Offset[SORFInt] = (SORF_Offset[SORFInt] - 5)
-
Unit Group - Pick every unit in SORF_WaterGroup[SORFInt] and do (Actions)
-
Loop - Actions
-
Unit - Remove (Picked unit) from the game
-
-
-
-
-
Set SORF_Point[2] = (ORFLoc2 offset by (Real(SORF_Offset[SORFInt])) towards SORF_Angle[SORFInt] degrees)
-
Set SORF_LoopCounter[SORFInt] = (SORF_LoopCounter[SORFInt] + 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SORF_LoopCounter[SORFInt] Equal to 2
-
-
Then - Actions
-
Special Effect - Create a special effect at SORF_Point[2] using war3mapImported\NagaDeathSpare.mdx
-
Special Effect - Destroy (Last created special effect)
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SORF_LoopCounter[SORFInt] Equal to 4
-
-
Then - Actions
-
Special Effect - Create a special effect at SORF_Point[2] using SORF_SfxString1[SORFInt]
-
Special Effect - Destroy (Last created special effect)
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SORF_LoopCounter[SORFInt] Equal to 8
-
-
Then - Actions
-
Set SORF_LoopCounter[SORFInt] = 0
-
-
Else - Actions
-
-
-
-
-
-
Set SORF_Point[3] = (Position of SORF_DummyAura[SORFInt])
-
Unit - Move SORF_DummyAura[SORFInt] instantly to SORF_Point[2], facing (Angle from SORF_Point[2] to ORFLoc2) degrees
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Unit - Move SORF_DummyOrigin[SORFInt] instantly to ORFLoc2
-
Unit - Move SORF_DummyOrigin2[SORFInt] instantly to ORFLoc2
-
Unit - Move SORF_DummyOrigin3[SORFInt] instantly to ORFLoc2
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Custom script: set udg_SORF_GroupDmg[udg_SORFInt] = CreateGroup()
-
Set SORF_GroupDmg[SORFInt] = (Units within SORF_AOE2[SORFInt] of SORF_Point[3] matching ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of SORF_CASTER[SORFInt])) Equal to True)))
-
Unit Group - Pick every unit in SORF_GroupDmg[SORFInt] and do (Actions)
-
Loop - Actions
-
Unit - Cause SORF_CASTER[SORFInt] to damage (Picked unit), dealing SORF_Damage[SORFInt] damage of attack type Magic and damage type Demolition
-
-
-
Custom script: call DestroyGroup(udg_SORF_GroupDmg[udg_SORFInt])
-
Destructible - Pick every destructible within SORF_AOE2[SORFInt] of SORF_Point[3] and do (Actions)
-
Loop - Actions
-
Destructible - Kill (Picked destructible)
-
-
-
Custom script: call RemoveLocation(udg_SORF_Point[3])
-
Custom script: call RemoveLocation(udg_SORF_Point[2])
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SORF_Duration[SORFInt] Less than or equal to 0.00
-
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SORF_BooleanKnock[SORFInt] Equal to True
-
-
Then - Actions
-
Set SORF_BooleanKnock[SORFInt] = False
-
-------- ------------------------------------- --------
-
Unit - Order SORF_CASTER[SORFInt] to Night Elf Druid Of The Claw - Night Elf Form
-
Unit Group - Add SORF_DummyAura[SORFInt] to SORF_WaterGroup[SORFInt]
-
Unit Group - Add SORF_DummyOrigin[SORFInt] to SORF_WaterGroup[SORFInt]
-
Unit Group - Add SORF_DummyOrigin2[SORFInt] to SORF_WaterGroup[SORFInt]
-
Unit Group - Add SORF_DummyOrigin3[SORFInt] to SORF_WaterGroup[SORFInt]
-
-------- ------------------------------------- --------
-
Unit - Create 1 Dummy Naga Death for (Owner of SORF_CASTER[SORFInt]) at ORFLoc2 facing Default building facing degrees
-
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
-
Animation - Change (Last created unit)'s size to (200.00%, 200.00%, 200.00%) of its original size
-
-------- ------------------------------------- --------
-
Custom script: call DestroyGroup(udg_SORF_WaterGroup[udg_SORFInt])
-
Unit - Remove Hidden Book from SORF_DummyOrigin3[SORFInt]
-
-------- ------------------------------------- --------
-
Set SORF_SpecialAngle[SORFInt] = 0.00
-
Set SORF_Angle[SORFInt] = 0.00
-
-------- RecycleIndex --------
-
Set SORF_Index[SORF_LOOP] = SORF_Index[SORF_Index_Size]
-
Set SORF_Index[SORF_Index_Size] = SORFInt
-
Set SORF_Index_Size = (SORF_Index_Size - 1)
-
Set SORF_LOOP = (SORF_LOOP - 1)
-
-------- Turn the trigger again off if the index_size is below 0... --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SORF_Index_Size Equal to 0
-
-
Then - Actions
-
Trigger - Turn off (This trigger)
-
-
Else - Actions
-
-
-
Else - Actions
-
-
-
Else - Actions
-
-
-
-
Set SORF_Duration[SORFInt] = (SORF_Duration[SORFInt] - SORF_LoopTurn[SORFInt])
-
Custom script: call RemoveLocation(udg_ORFLoc2)
-
-
-
-
-
Orbiting Fire
-
Events
-
Conditions
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ORF_Index_Size Equal to 0
-
-
Then - Actions
-
Trigger - Turn on Orbiting Fire Loop <gen>
-
-
Else - Actions
-
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set SP_Index_Size = (SP_Index_Size + 1)
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
SP_Index_Size Greater than SP_Index_maxSize
-
-
Then - Actions
-
Set SP_Index[SP_Index_Size] = SP_Index_Size
-
Set SP_Index_maxSize = SP_Index_Size
-
-
Else - Actions
-
-
Set OIndexInt = SP_Index[SP_Index_Size]
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
-------- NUMBER OF ORBITING EFFECT ? --------
-
Set CL_NumE[OIndexInt] = ORB_NumberEffect
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
For each (Integer ORF_Loop[OIndexInt]) from 1 to CL_NumE[OIndexInt], do (Actions)
-
Loop - Actions
-
Set TempLoc = ORB_Point
-
-------- Increase the index size --------
-
Set ORF_Index_Size = (ORF_Index_Size + 1)
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
-------- Dynamic Index --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ORF_Index_Size Greater than ORF_Index_maxSize
-
-
Then - Actions
-
Set ORF_Index[ORF_Index_Size] = ORF_Index_Size
-
Set ORF_Index_maxSize = ORF_Index_Size
-
-
Else - Actions
-
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
-------- Dynamic Index End --------
-
Set ORFInt = ORF_Index[ORF_Index_Size]
-
-------- Setup those arrays --------
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set ORF_NumE[ORFInt] = CL_NumE[OIndexInt]
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set ORF_CASTER[ORFInt] = ORB_Source
-
Set ORF_DummyOrigin[ORFInt] = ORB_Origin4
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
-------- ------- Setup Section----- --------
-
Set ORF_IntegerAbility[ORFInt] = ORB_IntegerAbility
-
Set ORF_Duration[ORFInt] = ORB_SpellDuration
-
Set ORF_LoopTurn[ORFInt] = 0.10
-
Set ORF_MoveSpeed[ORFInt] = ORB_MoveSpeed
-
Set ORF_AOE2[ORFInt] = ORB_AreaOfEffect
-
Set ORF_Damage[ORFInt] = ORB_DamagePerLoop
-
Set ORF_Offset[ORFInt] = ORB_Offset
-
Set ORF_Calc[ORFInt] = (360.00 / (Real(ORF_NumE[OIndexInt])))
-
Set ORF_SfxString1[ORFInt] = ORB_DummyGroundEffect
-
Set ORF_SfxStringMissile[ORFInt] = ORB_MissileModel
-
Set ORF_DUMMY_ANIMATION_SPEED[ORFInt] = ORB_DummyAnimationSpeed
-
Set ORF_DUMMY_SIZER[ORFInt] = ORB_DummySize
-
-------- -------------------------------- --------
-
Set ORF_XAngle[ORFInt] = (ORF_Calc[ORFInt] x (Real(ORF_Loop[OIndexInt])))
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set ORF_BooleanKnock[ORFInt] = True
-
Set ORF_BOOLEAN[ORFInt] = False
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
-------- we calculate the effect need to give a good circle --------
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set TempLoc3 = (TempLoc offset by (Real(ORF_Offset[ORFInt])) towards ORF_XAngle[ORFInt] degrees)
-
Unit - Create 1 Dummy_Map for (Owner of ORF_CASTER[ORFInt]) at TempLoc3 facing Default building facing degrees
-
Set ORF_DummyAura[ORFInt] = (Last created unit)
-
Special Effect - Create a special effect attached to the origin of ORF_DummyAura[ORFInt] using war3mapImported\AquaSpike.mdx
-
Animation - Change ORF_DummyAura[ORFInt]'s size to (ORF_DUMMY_SIZER[ORFInt]%, ORF_DUMMY_SIZER[ORFInt]%, ORF_DUMMY_SIZER[ORFInt]%) of its original size
-
Unit - Add a (ORF_Duration[ORFInt] + 0.25) second Generic expiration timer to (Last created unit)
-
Unit - Turn collision for (Last created unit) Off
-
Unit Group - Add (Last created unit) to ORF_Group[ORFInt]
-
Custom script: call RemoveLocation(udg_TempLoc3)
-
Custom script: call RemoveLocation(udg_TempLoc)
-
-
-
Set CL_NumE[OIndexInt] = 0
-
Set ORF_BOOLEAN[ORFInt] = False
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set SP_Index[SP_LOOP] = SP_Index[SP_Index_Size]
-
Set SP_Index[SP_Index_Size] = OIndexInt
-
Set SP_Index_Size = (SP_Index_Size - 1)
-
Set SP_LOOP = (SP_LOOP - 1)
-
-
-
Orbiting Fire Loop
-
Events
-
Time - Every 0.10 seconds of game time
-
-
Conditions
-
Actions
-
For each (Integer ORF_LOOP) from 1 to ORF_Index_Size, do (Actions)
-
Loop - Actions
-
-------- This let look everything cleaner. --------
-
Set ORFInt = ORF_Index[ORF_LOOP]
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Set ORFLoc2 = (Position of ORF_DummyOrigin[ORFInt])
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ORF_Duration[ORFInt] Greater than 0.00
-
-
Then - Actions
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ORF_SpecialAngle[ORFInt] Less than 360.00
-
-
Then - Actions
-
Set ORF_SpecialAngle[ORFInt] = (ORF_SpecialAngle[ORFInt] + ORF_MoveSpeed[ORFInt])
-
-
Else - Actions
-
Set ORF_SpecialAngle[ORFInt] = 0.00
-
Set ORF_SpecialAngle[ORFInt] = (ORF_SpecialAngle[ORFInt] + ORF_MoveSpeed[ORFInt])
-
-
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ORF_Angle[ORFInt] Less than 1.00
-
-
Then - Actions
-
Set ORF_Angle[ORFInt] = (ORF_XAngle[ORFInt] - ORF_SpecialAngle[ORFInt])
-
-
Else - Actions
-
Set ORF_Angle[ORFInt] = 360.00
-
Set ORF_Angle[ORFInt] = (ORF_XAngle[ORFInt] - ORF_SpecialAngle[ORFInt])
-
-
-
Set ORF_Point[2] = (ORFLoc2 offset by (Real(ORF_Offset[ORFInt])) towards ORF_Angle[ORFInt] degrees)
-
Set ORF_Point[3] = (Position of ORF_DummyAura[ORFInt])
-
Unit - Move ORF_DummyAura[ORFInt] instantly to ORF_Point[2], facing (Facing of ORF_CASTER[ORFInt]) degrees
-
Set ORF_SpecialCounter[ORFInt] = (ORF_SpecialCounter[ORFInt] + 1)
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ORF_SpecialCounter[ORFInt] Equal to 4
-
-
Then - Actions
-
Special Effect - Create a special effect at ORF_Point[2] using ORF_SfxString1[ORFInt]
-
Special Effect - Destroy (Last created special effect)
-
Set ORF_Point[4] = (ORFLoc2 offset by (Real((ORF_Offset[ORFInt] + 150))) towards ORF_Angle[ORFInt] degrees)
-
Special Effect - Create a special effect at ORF_Point[4] using ORF_SfxString1[ORFInt]
-
Special Effect - Destroy (Last created special effect)
-
Custom script: call RemoveLocation(udg_ORF_Point[4])
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ORF_SpecialCounter[ORFInt] Equal to 8
-
-
Then - Actions
-
Special Effect - Create a special effect at ORF_Point[2] using ORF_SfxString1[ORFInt]
-
Special Effect - Destroy (Last created special effect)
-
Set ORF_Point[4] = (ORFLoc2 offset by (Real((ORF_Offset[ORFInt] + 225))) towards ORF_Angle[ORFInt] degrees)
-
Special Effect - Create a special effect at ORF_Point[4] using ORF_SfxString1[ORFInt]
-
Special Effect - Destroy (Last created special effect)
-
Custom script: call RemoveLocation(udg_ORF_Point[4])
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ORF_SpecialCounter[ORFInt] Equal to 10
-
-
Then - Actions
-
Set ORF_SpecialCounter[ORFInt] = 0
-
Special Effect - Create a special effect attached to the origin of ORF_DummyAura[ORFInt] using war3mapImported\AquaSpike.mdx
-
Special Effect - Destroy (Last created special effect)
-
-
Else - Actions
-
-
-
-
-
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
-------- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= --------
-
Custom script: set udg_ORF_GroupDmg[udg_ORFInt] = CreateGroup()
-
Set ORF_GroupDmg[ORFInt] = (Units within ORF_AOE2[ORFInt] of ORF_Point[3] matching ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of ORF_CASTER[ORFInt])) Equal to True)))
-
Unit Group - Pick every unit in ORF_GroupDmg[ORFInt] and do (Actions)
-
Loop - Actions
-
Unit - Cause ORF_CASTER[ORFInt] to damage (Picked unit), dealing ORF_Damage[ORFInt] damage of attack type Spells and damage type Normal
-
-
-
Custom script: call DestroyGroup(udg_ORF_GroupDmg[udg_ORFInt])
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(ORF_DummyAura[ORFInt] is alive) Equal to True
-
-
Then - Actions
-
-------- ------------------------------------------ --------
-
Special Effect - Create a special effect at ORF_Point[2] using ORF_SfxString1[ORFInt]
-
Special Effect - Destroy (Last created special effect)
-
Destructible - Pick every destructible within 200.00 of ORF_Point[3] and do (Actions)
-
Loop - Actions
-
Destructible - Kill (Picked destructible)
-
-
-
-
Else - Actions
-
-
Custom script: call RemoveLocation(udg_ORF_Point[3])
-
Custom script: call RemoveLocation(udg_ORF_Point[2])
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ORF_Duration[ORFInt] Less than or equal to 0.00
-
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ORF_BooleanKnock[ORFInt] Equal to True
-
-
Then - Actions
-
Set ORF_BooleanKnock[ORFInt] = False
-
Unit - Remove ORF_DummyAura[ORFInt] from the game
-
Set ORF_SpecialAngle[ORFInt] = 0.00
-
Set ORF_Angle[ORFInt] = 0.00
-
-------- RecycleIndex --------
-
Set ORF_Index[ORF_LOOP] = ORF_Index[ORF_Index_Size]
-
Set ORF_Index[ORF_Index_Size] = ORFInt
-
Set ORF_Index_Size = (ORF_Index_Size - 1)
-
Set ORF_LOOP = (ORF_LOOP - 1)
-
-------- Turn the trigger again off if the index_size is below 0... --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
ORF_Index_Size Equal to 0
-
-
Then - Actions
-
Trigger - Turn off (This trigger)
-
-
Else - Actions
-
-
-
Else - Actions
-
-
-
Else - Actions
-
-
-
-
Set ORF_Duration[ORFInt] = (ORF_Duration[ORFInt] - ORF_LoopTurn[ORFInt])
-
Custom script: call RemoveLocation(udg_ORFLoc2)
-
-
-
-
here is the map also if yall need to work on it.
Like i said Trigger is split for my own understanding! if making them in the same code would improve performance i would unless i wont merge trigger.
The spell itself use an orbit engine made on my own to make xtra effect!! : i think it could be merge but if poeple(noob) dont like they wont be able to remove it that e-z
Thanks for your time took plz add good comments with exemple : my english blow im french i do not know all meaning and words