• 💀 Happy Halloween! 💀 It's time to vote for the best terrain! Check out the entries to Hive's HD Terrain Contest #2 - Vampire Folklore.❗️Poll closes on November 14, 2023. 🔗Click here to cast your vote!
  • 🏆 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!
  • 🏆 HD Level Design Contest #1 is OPEN! Contestants must create a maze with at least one entry point, and at least one exit point. The map should be made in HD mode, and should not be openable in SD. Only custom models from Hive's HD model and texture sections are allowed. The only exceptions are DNC models and omnilights. This is mainly a visual and design oriented contest, not technical. The UI and video walkthrough rules are there to give everyone an equal shot at victory by standardizing how viewers see the terrain. 🔗Click here to enter!

[Trigger] Problems with applying indexing system in 3 triggers

Status
Not open for further replies.
Level 12
Joined
Aug 12, 2008
Messages
349
Spell Description
Active Ability
Spell Type : Single Target
Cast Range : 100
Lyner grab hold of a target and toss the target high up in the air then shoot couple of arrows to the target.
Level 1: 1.5 seconds in the air
Level 2: 2 seconds in the air
Level 3: 2.5 seconds in the air
As everyone know, Hanky's dynamic indexing system is great but somehow I don't know how to apply it when facing 3 triggers.
Here goes the trigger:
  • Hypershot
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Hypershot
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HS_index_size Equal to 0
        • Then - Actions
          • Trigger - Turn on Hypershot float <gen>
          • Trigger - Turn on Hypershot strikes <gen>
        • Else - Actions
      • Set HS_index_size = (HS_index_size + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HS_index_size Greater than HS_index_max
        • Then - Actions
          • Set HS_index1[HS_index_size] = HS_index_size
          • Set HS_index_max = HS_index_size
        • Else - Actions
      • Set HS_index2 = HS_index1[HS_index_size]
      • -------- ======================================================== --------
      • Set HS_duration_count[HS_index2] = 0.00
      • Set HS_floatspeed[HS_index2] = 35.00
      • -------- ----- setting the caster and target ----- --------
      • Set HS_caster[HS_index2] = (Triggering unit)
      • Set HS_target[HS_index2] = (Target unit of ability being cast)
      • -------- ----- duration of target unit in the air ----- --------
      • Set HS_duration_max[HS_index2] = (1.00 + (0.50 x (Real((Level of Hypershot for HS_caster[HS_index2])))))
      • -------- ----- damage dealt per arrow ----- --------
      • Set HS_dmgPerArrow[HS_index2] = (10.00 + (10.00 x (Real((Level of Hypershot_attachment for HS_caster[HS_index2])))))
      • -------- ----- adding crow form ability to target to make it float ----- --------
      • Unit - Add Crow Form to HS_target[HS_index2]
      • Unit - Remove Crow Form from HS_target[HS_index2]
      • -------- ----- increase the caster's animation speed ----- --------
      • Animation - Change HS_caster[HS_index2]'s animation speed to 500.00% of its original speed
      • -------- ----- pause the caster and target ----- --------
      • Unit - Pause HS_caster[HS_index2]
      • Unit - Pause HS_target[HS_index2]
      • -------- ----- add invulnerable to target during float ----- --------
      • Unit - Add Invulnerable (Neutral) to HS_target[HS_index2]
      • -------- ----- adding attachment/special effects ----- --------
      • Unit - Add Hypershot_attachment to HS_caster[HS_index2]
      • -------- ----- adding locust to the caster ----- --------
      • Custom script: call UnitAddAbility(udg_HS_caster[udg_HS_index2], 'Aloc')
  • Hypershot float
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer HS_index3) from 1 to HS_index_size, do (Actions)
        • Loop - Actions
          • Set HS_index2 = HS_index1[HS_index3]
          • Animation - Change HS_target[HS_index2] flying height to ((Current flying height of HS_target[HS_index2]) + HS_floatspeed[HS_index2]) at 0.00
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Current flying height of HS_target[HS_index2]) Less than or equal to 550.00
            • Then - Actions
              • Set HS_floatspeed[HS_index2] = (HS_floatspeed[HS_index2] - 1.15)
            • Else - Actions
              • Set HS_floating[HS_index2] = True
              • Unit - Remove Invulnerable (Neutral) from HS_target[HS_index2]
              • Unit Group - Add HS_caster[HS_index2] to HS_strikegroup
              • Unit - Unpause HS_caster[HS_index2]
              • Unit - Order HS_caster[HS_index2] to Attack HS_target[HS_index2]
  • Hypershot strikes
    • Events
      • Time - Every 0.20 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in HS_strikegroup and do (Actions)
        • Loop - Actions
          • For each (Integer HS_index3) from 1 to HS_index_size, do (Actions)
            • Loop - Actions
              • Set HS_index2 = HS_index1[HS_index3]
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (HS_target[HS_index2] is alive) Equal to True
                  • HS_duration_count[HS_index2] Less than HS_duration_max[HS_index2]
                • Then - Actions
                  • Set HS_duration_count[HS_index2] = (HS_duration_count[HS_index2] + 0.20)
                  • Animation - Play HS_caster[HS_index2]'s attack animation
                  • Set HS_casterpoint = (Position of HS_caster[HS_index2])
                  • Unit - Create 1 dummy unit for (Owner of HS_caster[HS_index2]) at HS_casterpoint facing Default building facing degrees
                  • Set HS_dummy[HS_index2] = (Last created unit)
                  • Unit - Add Hypershot_dummy to HS_dummy[HS_index2]
                  • Unit - Order HS_dummy[HS_index2] to Human Mountain King - Storm Bolt HS_target[HS_index2]
                  • Unit - Cause HS_caster[HS_index2] to damage HS_target[HS_index2], dealing HS_dmgPerArrow[HS_index2] damage of attack type Spells and damage type Normal
                  • Custom script: call RemoveLocation (udg_HS_casterpoint)
                • Else - Actions
                  • Animation - Change HS_target[HS_index2] flying height to 0.00 at 1000.00
                  • Unit - Remove Hypershot_attachment from HS_caster[HS_index2]
                  • Animation - Change HS_caster[HS_index2]'s animation speed to 100.00% of its original speed
                  • Unit Group - Remove HS_caster[HS_index2] from HS_strikegroup
                  • -------- ----- complete way to remove locust ----- --------
                  • Unit - Hide HS_caster[HS_index2]
                  • Custom script: call UnitRemoveAbility(udg_HS_caster[udg_HS_index2], 'Aloc')
                  • Unit - Unhide HS_caster[HS_index2]
                  • Unit - Add Bear Form to HS_caster[HS_index2]
                  • Unit - Order HS_caster[HS_index2] to Night Elf Druid Of The Claw - Bear Form
                  • Unit - Remove Bear Form from HS_caster[HS_index2]
                  • -------- ----- -------------------------------------------------- ----- --------
                  • Set HS_index1[HS_index3] = HS_index1[HS_index_size]
                  • Set HS_index1[HS_index_size] = HS_index2
                  • Set HS_index_size = (HS_index_size - 1)
                  • Set HS_index3 = (HS_index3 - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • HS_index_size Equal to 0
                    • Then - Actions
                      • Trigger - Turn off Hypershot float <gen>
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
Okay, the problem is that this spell works for single caster only. When 2 caster cast this spell, one after another, it floats up properly but somehow when the first target drop down, the second target drop down too although the duration haven't over. I guess the third trigger got problems as it uses the same index as the second trigger.
Can anyone help me with this?


EDIT: Solved.
 
Last edited:
Status
Not open for further replies.
Top