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

[Solved] Fire Blast spell trigger

Status
Not open for further replies.
Level 4
Joined
Feb 9, 2010
Messages
48
Greetings,

I'm having a trouble with a bunch of triggers for spell: Fire Blast. Originally, those triggers were created by someoen who worked with me on my map, and they were working correctly. However I've somehow broken the trigger by messing with the object editor. The guy who created the trigger is no longer around, and sadly can't help me with fixing the trigger. I've changed 'Trigger Sacrifice' unit for something else and the trigger broke. Trying to revert the object editor changes didn't help aswell. I was hoping you guys could help me out.

Anyways, the spell is supposed to work like that:
After a brief channeling, a flamestrike occurs at the caster positiong, 0,2 second later another flamestrike in front of caster, 0,2 second later another flamestrike but futher ahead of caster and so until 5 flamestrikes occur

The triggers:
Fire_Blast.png

The problem with the spell is that the locations of next flamestrikes (So the ones after flamestrike at caster's location) occur not in the designed places (So in front of caster), but in a one spot in the map. (To clarify, that spot in the map seems to be the heaven of non-defined locations. So if trigger wants to do anything in a location that is not defined, it will do it at that spot)

Thanks in advance for the help
 
Well the Handle you use in the Loop and at casting is not the same. At casting you use the Handle of the Caster. In your loop you use the Handle of the Dummie-Timer.

I guess this spell will Spawn Flamestrikes at map center.

You need to hand over the location from each dummie to the next one. Save them in the timer-Unit.
 
Last edited:
Level 4
Joined
Feb 9, 2010
Messages
48
Well the Handle you use in the Loop and at casting is not the same. At casting you use the Handle of the Caster. In your loop you use the Handle of the Dummie-Timer.

I guess this spell will Spawn Flamestrikes at map center.

You need to hand over the location from each dummie to the next one. Save them in the timer-Unit.

I'm not that familiar with hashtables (Thus asking for help here), might explaining in simple words, or better showing how to fix the trigger?
 
This Trigger saves the Player Triggering that Spell to let it hit the right Targets if you want no Friendly-Fire.

  • Cast
    • Events
      • Unit - A unit Finish Casting
    • Conditions
      • (Ability being cast) Equal Your Spell
    • Actions
      • Set TempLoc = (Position of (Casting unit))
      • Unit - Create 1 Timer-Dummie for Neutral passiv at DummyHeaven facing Default Building Faceing degrees
      • Unit - Add a 0.60 second Standard expiration timer to (Last created unit)
      • Set TempHandle = (Last created unit)
      • Unit - Set the custom value of (Last created unit) to 5
      • Hashtabelle - Save Handle OfTempLoc as 0 of (Key TempHandle) in Hashtable
      • Hashtabelle - Save (Facing of (Triggering unit)) as 1 of (Key TempHandle) in Hashtable
      • Hashtabelle - Save Handle Of(Triggering player) as 2 of (Key TempHandle) in Hashtable
      • -------- Casting --------
      • Unit - Create 1 Caster for (Triggering player) at TempLoc facing Default Building Faceing degrees
      • Unit - Add a 0.60 second Standard expiration timer to (Last created unit)
      • Unit - Order (Last created unit) to Menschen-Blutmagier - 'Flammenschlag' TempLoc
      • Custom script: set udg_TempLoc=null
  • Loop
    • Events
      • Unit - A unit owned by Neutral passiv Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal Timer-Dummie
    • Aktionen
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Custom value of (Triggering unit)) not Equal 0
        • Then - Actions
          • Set TempHandle = (Triggering unit)
          • Set TempLoc = (Load 0 of (Key TempHandle) in Hashtable)
          • Set TempLoc2 = (TempLoc offset by 175.00 towards (Load 1 of (Key TempHandle) from Hashtable) degrees)
          • Unit - Create 1 Timer-Dummie for Neutral passiv at DummyHeaven facing Default Building degrees
          • Set TempHandle_New = (Last created unit)
          • Unit - Add a 0.20 second Standard expiration timer to (Last created unit)
          • -------- Save Next Flamestrike Data --------
          • Hashtabelle - Save (Load 1 of (Key TempHandle) from Hashtable) as 1 of (Key TempHandle_New) in Hashtable
          • Hashtabelle - Save Handle OfTempLoc2 as 0 of (Key TempHandle_New) in Hashtable
          • Hashtabelle - Save Handle Of(Load 2 of (Key TempHandle) in Hashtable) as 2 of (Key TempHandle_New) in Hashtable
          • Unit - Set the custom value of (Last created unit) to ((Custom value of (Triggering unit)) - 1)
          • -------- Casting --------
          • Unit - Create 1 Caster for (Load 2 of (Key TempHandle) in Hashtable) at TempLoc facing TempLoc2
          • Unit - Add a 0.60 second Standard expiration timer to (Last created unit)
          • Unit - Order (Last created unit) to Menschen-Blutmagier - 'Flammenschlag' TempLoc2
          • -------- Clean data which is not needed anymore --------
          • Hashtabelle - Clear all child hashtables of child (Key TempHandle) in Hashtable
          • Custom script: call RemoveLocation(udg_TempLoc)
          • Custom script: set udg_TempLoc2=null
        • Else - Actions
BtW isn't that skill Kind of the Ultimate of "Twin Head Dragon" of DotA?
 
Level 4
Joined
Feb 9, 2010
Messages
48
This Trigger saves the Player Triggering that Spell to let it hit the right Targets if you want no Friendly-Fire.

  • Cast
    • Events
      • Unit - A unit Finish Casting
    • Conditions
      • (Ability being cast) Equal Your Spell
    • Actions
      • Set TempLoc = (Position of (Casting unit))
      • Unit - Create 1 Timer-Dummie for Neutral passiv at DummyHeaven facing Default Building Faceing degrees
      • Unit - Add a 0.60 second Standard expiration timer to (Last created unit)
      • Set TempHandle = (Last created unit)
      • Unit - Set the custom value of (Last created unit) to 5
      • Hashtabelle - Save Handle OfTempLoc as 0 of (Key TempHandle) in Hashtable
      • Hashtabelle - Save (Facing of (Triggering unit)) as 1 of (Key TempHandle) in Hashtable
      • Hashtabelle - Save Handle Of(Triggering player) as 2 of (Key TempHandle) in Hashtable
      • -------- Casting --------
      • Unit - Create 1 Caster for (Triggering player) at TempLoc facing Default Building Faceing degrees
      • Unit - Add a 0.60 second Standard expiration timer to (Last created unit)
      • Unit - Order (Last created unit) to Menschen-Blutmagier - 'Flammenschlag' TempLoc
      • Custom script: set udg_TempLoc=null
  • Loop
    • Events
      • Unit - A unit owned by Neutral passiv Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal Timer-Dummie
    • Aktionen
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Custom value of (Triggering unit)) not Equal 0
        • Then - Actions
          • Set TempHandle = (Triggering unit)
          • Set TempLoc = (Load 0 of (Key TempHandle) in Hashtable)
          • Set TempLoc2 = (TempLoc offset by 175.00 towards (Load 1 of (Key TempHandle) from Hashtable) degrees)
          • Unit - Create 1 Timer-Dummie for Neutral passiv at DummyHeaven facing Default Building degrees
          • Set TempHandle_New = (Last created unit)
          • Unit - Add a 0.20 second Standard expiration timer to (Last created unit)
          • -------- Save Next Flamestrike Data --------
          • Hashtabelle - Save (Load 1 of (Key TempHandle) from Hashtable) as 1 of (Key TempHandle_New) in Hashtable
          • Hashtabelle - Save Handle OfTempLoc2 as 0 of (Key TempHandle_New) in Hashtable
          • Hashtabelle - Save Handle Of(Load 2 of (Key TempHandle) in Hashtable) as 2 of (Key TempHandle_New) in Hashtable
          • Unit - Set the custom value of (Last created unit) to ((Custom value of (Triggering unit)) - 1)
          • -------- Casting --------
          • Unit - Create 1 Caster for (Load 2 of (Key TempHandle) in Hashtable) at TempLoc facing TempLoc2
          • Unit - Add a 0.60 second Standard expiration timer to (Last created unit)
          • Unit - Order (Last created unit) to Menschen-Blutmagier - 'Flammenschlag' TempLoc2
          • -------- Clean data which is not needed anymore --------
          • Hashtabelle - Clear all child hashtables of child (Key TempHandle) in Hashtable
          • Custom script: call RemoveLocation(udg_TempLoc)
          • Custom script: set udg_TempLoc2=null
        • Else - Actions
BtW isn't that skill Kind of the Ultimate of "Twin Head Dragon" of DotA?

I haven't played DotA in ages, it could be that ult.

As for the trigger, it works perfectly, thanks a lot mate!
 
Status
Not open for further replies.
Top