• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Trigger] Water Spell Need review

Status
Not open for further replies.
Level 10
Joined
Feb 20, 2008
Messages
448
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


  • 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 :)
 

Attachments

  • Suiton Daibaikusui Shoha.w3x
    166.9 KB · Views: 75
Level 9
Joined
May 30, 2008
Messages
430
I am not going out to try to make your code shorter but i will tell you few things.
1. Make filter to damage only units maybe not destructible and buildings.
2. Remove the leaks related to the special effects
3. I am pretty sure you can use less special effects created at once so the spell to still look good and increase the performance of the triggers.
4. If i level the spell to max level i can't use it because there is not enough mana so i must use cheats.

Anyway if you post the spell for preview people there will tell you the problems it have because i don't believe there are a lot of people that will start editing wall of text like spells
 
Level 10
Joined
Feb 20, 2008
Messages
448
I am not going out to try to make your code shorter but i will tell you few things.
1. Make filter to damage only units maybe not destructible and buildings.
2. Remove the leaks related to the special effects
3. I am pretty sure you can use less special effects created at once so the spell to still look good and increase the performance of the triggers.
4. If i level the spell to max level i can't use it because there is not enough mana so i must use cheats.

Anyway if you post the spell for preview people there will tell you the problems it have because i don't believe there are a lot of people that will start editing wall of text like spells

well i agree . thx for your time ^^ working on it atm
 
Level 10
Joined
Feb 20, 2008
Messages
448
oh, my goodness says you need to learn jass.

I need to learn Vjass more than evrything i had begin but i was lost ..... since im french its very difficult to understand tutorial :/! i gave up.... if i could find the vjass map exemple my friends Wizardum made for me !


but yeah in that case a vjass librairy would have been 10000x time better :[ . but i dont plan staying on wc3 much longer Soon Heroes of Newerth editor is out i will leave wc3 no long time after!
 
Level 10
Joined
Feb 20, 2008
Messages
448
i need a librairy that can make dummy unit orbiting on a certain point (note the point can change during the spells depending : if the spells is self cast or a ability range cast.

its should be able to orbit dummy on 360 doing doing a circle effect and another same but which is making swirl : same as orbiting but the offset is not static so he goes from exemple 500 range units to 0.

i dont know if you need more explanation ?
 
Level 13
Joined
May 11, 2008
Messages
1,198
i think i kindof get what you mean.

i'll probably need to find out how you want to use the library...what things you want to be customizable...whatever.

idk. kinda tired...
anyway...something like that shouldn't be so hard. you would have to make your own dummy units, though...you can't just use a blank dummy model dummy and change the unit's model later. of course, there's an option of using objectmerger but that seems kindof silly to me.

mostly i guess your concerns would revolve around the rotation of the units.

you probably want to use functions so after you create your dummy unit then you make it rotate or something. anyway, such a thing is not so hard and i think it could be fun to write. in fact, i'd probably end up using a library like this myself. interesting that no one made one yet.

yeah, i doubt there would be much customization now that i've thought about it for a bit.
 
Level 10
Joined
Feb 20, 2008
Messages
448
i think i kindof get what you mean.

i'll probably need to find out how you want to use the library...what things you want to be customizable...whatever.

idk. kinda tired...
anyway...something like that shouldn't be so hard. you would have to make your own dummy units, though...you can't just use a blank dummy model dummy and change the unit's model later. of course, there's an option of using objectmerger but that seems kindof silly to me.

mostly i guess your concerns would revolve around the rotation of the units.

you probably want to use functions so after you create your dummy unit then you make it rotate or something. anyway, such a thing is not so hard and i think it could be fun to write. in fact, i'd probably end up using a library like this myself. interesting that no one made one yet.

yeah, i doubt there would be much customization now that i've thought about it for a bit.

:eek: intesresting .... if you ever do it pm me ^^ !
 
Status
Not open for further replies.
Top