• 🏆 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!

[Spell] Need help

Status
Not open for further replies.
I am trying to make a projectile spell that deals AOE damage apon impact, but the spell needs some eye-candy so i made the projectile a little bit more interesting by putting in some more projectiles circling the main bolt.

Problem right now is that the projectile does is not created.

  • HB Settings
    • Events
      • Time - Elapsed game time is 0.20 seconds
    • Conditions
    • Actions
      • -------- --------- --------
      • -------- Leave This (changing them might cause problems) --------
      • Hashtable - Create a hashtable
      • Set HB_Table = (Last created hashtable)
      • -------- --------- --------
      • -------- Damage (Scaling is the ammount increased per level) --------
      • Set HB_DamageBase = 25.00
      • Set HB_DamageScaling = 50.00
      • -------- --------- --------
      • -------- Speed (Pro speed is for the projectile / Eff speed is the circling bolts) --------
      • Set HB_Eff_Speed = 20.00
      • Set HB_Pro_Speed = 25.00
      • -------- --------- --------
      • -------- Area of Effect (Range of area on impact) --------
      • Set HB_AoE = 200.00
      • -------- --------- --------
      • -------- Bolt Size (Influence Lesser bolts distance to main bolt and impact radius) --------
      • Set HB_Range = 40.00
  • HB Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Holy Bolt
    • Actions
      • -------- --------- --------
      • -------- Setting initial Variables (do not change anything in this trigger) --------
      • Set HB_Caster = (Triggering unit)
      • Set HB_Target = (Target unit of ability being cast)
      • Hashtable - Save Handle OfHB_Caster as 0 of 2 in HB_Table
      • Hashtable - Save Handle OfHB_Target as 1 of 2 in HB_Table
      • Set HB_Eff_Flow = 0.00
      • Hashtable - Save HB_Eff_Flow as 0 of 4 in HB_Table
      • Set HB_Point[2] = (Position of HB_Caster)
      • -------- --------- --------
      • -------- Creating Dummies (do not change anything in this trigger) --------
      • Unit - Create 1 Holy Projectile for (Owner of HB_Caster) at HB_Point[2] facing Default building facing degrees
      • Set HB_HPUnit = (Last created unit)
      • Unit Group - Add HB_HPUnit to HB_HPGroup[1]
      • For each (Integer A) from 1 to 6, do (Actions)
        • Loop - Actions
          • Set HB_Point[((Integer A) + 2)] = (HB_Point[2] offset by HB_Range towards ((Real((Integer A))) x 60.00) degrees)
          • Unit - Create 1 Lesser Projectile for (Owner of HB_Caster) at HB_Point[((Integer A) + 2)] facing Default building facing degrees
          • Set HB_LPUnit[(Integer A)] = (Last created unit)
          • Hashtable - Save Handle OfHB_LPUnit[(Integer A)] as (Integer A) of 1 in HB_Table
      • Hashtable - Save Handle OfHB_HPUnit as 0 of 1 in HB_Table
      • -------- --------- --------
      • -------- Removing Leaks and starts loop (do not change anything in this trigger) --------
      • Trigger - Turn on HB Loop <gen>
      • Custom script: call RemoveLocation(udg_HB_Point[2])
      • Custom script: call RemoveLocation(udg_HB_Point[3])
      • Custom script: call RemoveLocation(udg_HB_Point[4])
      • Custom script: call RemoveLocation(udg_HB_Point[5])
      • Custom script: call RemoveLocation(udg_HB_Point[6])
      • Custom script: call RemoveLocation(udg_HB_Point[7])
      • Custom script: call RemoveLocation(udg_HB_Point[8])
  • HB Loop
    • Events
      • Time - Every 0.04 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in HB_HPGroup[1] and do (Actions)
        • Loop - Actions
          • -------- --------- --------
          • -------- Loading Units From Table (do not change anything in this trigger) --------
          • Set HB_HPUnit = (Load 0 of 1 in HB_Table)
          • For each (Integer A) from 1 to 6, do (Actions)
            • Loop - Actions
              • Set HB_LPUnit[(Integer A)] = (Load (Integer A) of 1 in HB_Table)
          • Set HB_Caster = (Load 0 of 2 in HB_Table)
          • Set HB_Target = (Load 1 of 2 in HB_Table)
          • -------- --------- --------
          • -------- Creating points (do not change anything in this trigger) --------
          • Set HB_Point[2] = (Position of HB_HPUnit)
          • Set HB_Point[9] = (Position of HB_Target)
          • Set HB_Point[1] = (HB_Point[2] offset by HB_Pro_Speed towards (Angle from HB_Point[2] to HB_Point[9]) degrees)
          • For each (Integer A) from 1 to 6, do (Actions)
            • Loop - Actions
              • Set HB_Point[((Integer A) + 9)] = (Position of HB_LPUnit[(Integer A)])
              • Set HB_Point[((Integer A) + 2)] = (HB_Point[1] offset by 40.00 towards ((Angle from HB_Point[2] to HB_Point[((Integer A) + 9)]) + HB_Eff_Speed) degrees)
          • -------- --------- --------
          • -------- Moving Units (do not change anything in this trigger) --------
          • Unit - Move HB_HPUnit instantly to HB_Point[1]
          • For each (Integer A) from 1 to 6, do (Actions)
            • Loop - Actions
              • Unit - Move HB_LPUnit[(Integer A)] instantly to HB_Point[((Integer A) + 2)]
          • -------- --------- --------
          • -------- Checking Impact (You can change the number (2) to 1 if you want the bolt to impact at a longer distance) --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between HB_Point[1] and HB_Point[9]) Greater than or equal to (HB_Range / 2.00)
            • Then - Actions
              • -------- --------- --------
              • -------- Damage and Removing units (do not change anything in this trigger) --------
              • Set HB_HPGroup[2] = (Units within HB_AoE of HB_Point[9] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and (((Matching unit) belongs to an enemy of (Owner of HB_Caster)) Equal to True))))
              • Unit - Cause HB_Caster to damage (Picked unit), dealing (HB_DamageBase + (HB_DamageScaling x (Real((Level of Holy Bolt for HB_Caster))))) damage of attack type Spells and damage type Normal
              • Unit - Remove HB_HPUnit from the game
              • For each (Integer A) from 1 to 6, do (Actions)
                • Loop - Actions
                  • Unit - Remove HB_LPUnit[(Integer A)] from the game
              • -------- --------- --------
              • -------- Removing leaks and ends loop (do not change anything in this trigger) --------
              • Trigger - Turn off (This trigger)
              • Custom script: call RemoveLocation(udg_HB_Point[1])
              • Custom script: call RemoveLocation(udg_HB_Point[2])
              • Custom script: call RemoveLocation(udg_HB_Point[3])
              • Custom script: call RemoveLocation(udg_HB_Point[4])
              • Custom script: call RemoveLocation(udg_HB_Point[5])
              • Custom script: call RemoveLocation(udg_HB_Point[6])
              • Custom script: call RemoveLocation(udg_HB_Point[7])
              • Custom script: call RemoveLocation(udg_HB_Point[8])
              • Custom script: call RemoveLocation(udg_HB_Point[9])
              • Custom script: call RemoveLocation(udg_HB_Point[10])
              • Custom script: call RemoveLocation(udg_HB_Point[11])
              • Custom script: call RemoveLocation(udg_HB_Point[12])
              • Custom script: call RemoveLocation(udg_HB_Point[13])
              • Custom script: call RemoveLocation(udg_HB_Point[14])
              • Custom script: call RemoveLocation(udg_HB_Point[15])
              • Custom script: call DestroyGroup(udg_HB_HPGroup[2])
            • Else - Actions
              • -------- --------- --------
              • -------- Check if target is alive (do not change anything in this trigger) --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (HB_Target is dead) Equal to True
                • Then - Actions
                  • -------- --------- --------
                  • -------- Removing units (do not change anything in this trigger) --------
                  • Unit - Remove HB_HPUnit from the game
                  • For each (Integer A) from 1 to 6, do (Actions)
                    • Loop - Actions
                      • Unit - Remove HB_LPUnit[(Integer A)] from the game
                  • -------- --------- --------
                  • -------- Removing leaks and ends loop (do not change anything in this trigger) --------
                  • Trigger - Turn off (This trigger)
                  • Custom script: call RemoveLocation(udg_HB_Point[1])
                  • Custom script: call RemoveLocation(udg_HB_Point[2])
                  • Custom script: call RemoveLocation(udg_HB_Point[3])
                  • Custom script: call RemoveLocation(udg_HB_Point[4])
                  • Custom script: call RemoveLocation(udg_HB_Point[5])
                  • Custom script: call RemoveLocation(udg_HB_Point[6])
                  • Custom script: call RemoveLocation(udg_HB_Point[7])
                  • Custom script: call RemoveLocation(udg_HB_Point[8])
                  • Custom script: call RemoveLocation(udg_HB_Point[9])
                  • Custom script: call RemoveLocation(udg_HB_Point[10])
                  • Custom script: call RemoveLocation(udg_HB_Point[11])
                  • Custom script: call RemoveLocation(udg_HB_Point[12])
                  • Custom script: call RemoveLocation(udg_HB_Point[13])
                  • Custom script: call RemoveLocation(udg_HB_Point[14])
                  • Custom script: call RemoveLocation(udg_HB_Point[15])
                  • Custom script: call DestroyGroup(udg_HB_HPGroup[2])
                • Else - Actions


To about trigger 2 it works (if i disable trigger 3 complitely it creates the bolt, but ofcause it is standing still)

Help me if you can please. I think the problem lies with the loading of units from the hashtable but i can't seem to find the error.
 
Last edited:
You're saving under static indexes (e.g. 0, 1, 2.. etc.), which means that the data will be overwritten easily (= not MUI). You should take advantage of the Key() function to save data under the caster's ID. Check this out for more info:
http://www.hiveworkshop.com/forums/tutorial-submission-283/general-spell-creation-236141/

Although, I'm not sure why the projectile wouldn't be created. You should add a game message after the creation to make sure that it exists. (display the name of it, or its key or something) It could be that it is being moved or removed from the periodic trigger.
 
Status
Not open for further replies.
Top