• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Help - MUI problem

Status
Not open for further replies.
Level 18
Joined
May 11, 2012
Messages
2,103
Can someone help me with this spell?
It works normally, but when cast it 2 times (MUI), it gets screwed up...
I can't get it to work

What it does: Desecrates area in front and cr8es 4 units that spin around towards the point, and when it reaches it, they are killed and deals dmg again


  • Shadow Blast Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ------------------------------------------------------------------------------------- --------
      • Set SB_Damage[1] = 300.00
      • Set SB_Damage[2] = 600.00
      • Set SB_Damage[3] = 1200.00
      • Set SB_Damage[4] = 2400.00
      • Set SB_Damage[5] = 4800.00
      • Set SB_Damage2[1] = 200.00
      • Set SB_Damage2[2] = 400.00
      • Set SB_Damage2[3] = 800.00
      • Set SB_Damage2[4] = 1600.00
      • Set SB_Damage2[5] = 3200.00
      • Set SB_ShadowSpawnType = Dummy Shadow Blast
      • -------- ------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------- --------
      • Custom script: call DestroyTrigger(GetTriggeringTrigger())
      • -------- ------------------------------------------------------------------------------------- --------
  • Shadow Blast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Shadow Blast
    • Actions
      • -------- ------------------------------------------------------------------------------------- --------
      • Set SB_MaxIndex = (SB_MaxIndex + 1)
      • Set SB_TrigUnit[SB_MaxIndex] = (Triggering unit)
      • Set SB_SpellLvl[SB_MaxIndex] = (Level of Shadow Blast for SB_TrigUnit[SB_MaxIndex])
      • Set SB_DamageUnit[SB_MaxIndex] = SB_Damage[SB_SpellLvl[SB_MaxIndex]]
      • Set SB_DamageUnit2[SB_MaxIndex] = SB_Damage2[SB_SpellLvl[SB_MaxIndex]]
      • -------- ------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------- --------
      • Set SB_Point = (Target point of ability being cast)
      • Set SB_UnitGroup = (Units within 450.00 of SB_Point 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 SB_TrigUnit[SB_MaxIndex])) Equal to True) and ((Life o
      • -------- ------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------- --------
      • Unit - Create 1 Dummy Shadow Blast2 for (Owner of SB_TrigUnit[SB_MaxIndex]) at SB_Point facing Default building facing degrees
      • Set SB_Dummy[SB_MaxIndex] = (Last created unit)
      • -------- ------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------- --------
      • Set SB_Point2[1] = (SB_Point offset by 450.00 towards 90.00 degrees)
      • Unit - Create 1 SB_ShadowSpawnType for (Owner of SB_TrigUnit[SB_MaxIndex]) at SB_Point2[1] facing SB_Point
      • Set SB_ShadowSpawn1[SB_MaxIndex] = (Last created unit)
      • Set SB_Point2[2] = (SB_Point offset by 450.00 towards 180.00 degrees)
      • Unit - Create 1 SB_ShadowSpawnType for (Owner of SB_TrigUnit[SB_MaxIndex]) at SB_Point2[2] facing SB_Point
      • Set SB_ShadowSpawn2[SB_MaxIndex] = (Last created unit)
      • Set SB_Point2[3] = (SB_Point offset by 450.00 towards 270.00 degrees)
      • Unit - Create 1 SB_ShadowSpawnType for (Owner of SB_TrigUnit[SB_MaxIndex]) at SB_Point2[3] facing SB_Point
      • Set SB_ShadowSpawn3[SB_MaxIndex] = (Last created unit)
      • Set SB_Point2[4] = (SB_Point offset by 450.00 towards 360.00 degrees)
      • Unit - Create 1 SB_ShadowSpawnType for (Owner of SB_TrigUnit[SB_MaxIndex]) at SB_Point2[4] facing SB_Point
      • Set SB_ShadowSpawn4[SB_MaxIndex] = (Last created unit)
      • -------- ------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------- --------
      • Unit Group - Pick every unit in SB_UnitGroup and do (Actions)
        • Loop - Actions
          • Unit - Cause SB_TrigUnit[SB_MaxIndex] to damage (Picked unit), dealing SB_DamageUnit[SB_SpellLvl[SB_MaxIndex]] damage of attack type Spells and damage type Normal
      • -------- ------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • SB_MaxIndex Equal to 1
        • Then - Actions
          • Trigger - Turn on Shadow Blast Loop <gen>
        • Else - Actions
      • -------- ------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------- --------
      • Custom script: call RemoveLocation(udg_SB_Point)
      • Custom script: call RemoveLocation(udg_SB_Point2[1])
      • Custom script: call RemoveLocation(udg_SB_Point2[2])
      • Custom script: call RemoveLocation(udg_SB_Point2[3])
      • Custom script: call RemoveLocation(udg_SB_Point2[4])
      • Custom script: call DestroyGroup(udg_SB_UnitGroup)
      • Custom script: set udg_SB_Point = null
      • Custom script: set udg_SB_Point2[1] = null
      • Custom script: set udg_SB_Point2[2] = null
      • Custom script: set udg_SB_Point2[3] = null
      • Custom script: set udg_SB_Point2[4] = null
      • Custom script: set udg_SB_UnitGroup = null
      • -------- ------------------------------------------------------------------------------------- --------
  • Shadow Blast Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer TempInt) from 1 to SB_MaxIndex, do (Actions)
        • Loop - Actions
          • -------- ------------------------------------------------------------------------------------- --------
          • Set SB_Point = (Position of SB_Dummy[TempInt])
          • -------- ------------------------------------------------------------------------------------- --------
          • -------- ------------------------------------------------------------------------------------- --------
          • Set SB_Point2[1] = (Position of SB_ShadowSpawn1[TempInt])
          • Set SB_Point2[2] = (Position of SB_ShadowSpawn2[TempInt])
          • Set SB_Point2[3] = (Position of SB_ShadowSpawn3[TempInt])
          • Set SB_Point2[4] = (Position of SB_ShadowSpawn4[TempInt])
          • -------- ------------------------------------------------------------------------------------- --------
          • -------- ------------------------------------------------------------------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Distance between SB_Point and SB_Point2[1]) Less than or equal to 25.00
                  • (Distance between SB_Point and SB_Point2[2]) Less than or equal to 25.00
                  • (Distance between SB_Point and SB_Point2[3]) Less than or equal to 25.00
                  • (Distance between SB_Point and SB_Point2[4]) Less than or equal to 25.00
            • Then - Actions
              • -------- ------------------------------------------------------------------------------------- --------
              • Unit - Remove SB_ShadowSpawn1[TempInt] from the game
              • Unit - Remove SB_ShadowSpawn2[TempInt] from the game
              • Unit - Remove SB_ShadowSpawn3[TempInt] from the game
              • Unit - Remove SB_ShadowSpawn4[TempInt] from the game
              • -------- ------------------------------------------------------------------------------------- --------
              • -------- ------------------------------------------------------------------------------------- --------
              • Unit - Kill SB_Dummy[TempInt]
              • -------- ------------------------------------------------------------------------------------- --------
              • -------- ------------------------------------------------------------------------------------- --------
              • Set SB_UnitGroup = (Units within 450.00 of SB_Point 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 SB_TrigUnit[SB_MaxIndex])) Equal to True) and ((Life o
              • -------- ------------------------------------------------------------------------------------- --------
              • -------- ------------------------------------------------------------------------------------- --------
              • Unit Group - Pick every unit in SB_UnitGroup and do (Actions)
                • Loop - Actions
                  • Unit - Cause SB_TrigUnit[TempInt] to damage (Picked unit), dealing SB_DamageUnit2[SB_SpellLvl[TempInt]] damage of attack type Spells and damage type Normal
              • -------- ------------------------------------------------------------------------------------- --------
              • -------- ------------------------------------------------------------------------------------- --------
              • Special Effect - Create a special effect at SB_Point using war3mapImported\DarkBlast.mdx
              • Special Effect - Destroy (Last created special effect)
              • -------- ------------------------------------------------------------------------------------- --------
              • -------- ------------------------------------------------------------------------------------- --------
              • Set SB_TrigUnit[TempInt] = SB_TrigUnit[SB_MaxIndex]
              • Set SB_TrigUnit[SB_MaxIndex] = No unit
              • Set SB_Dummy[TempInt] = SB_Dummy[SB_MaxIndex]
              • Set SB_Dummy[SB_MaxIndex] = No unit
              • Set SB_ShadowSpawn1[TempInt] = SB_ShadowSpawn1[SB_MaxIndex]
              • Set SB_ShadowSpawn1[SB_MaxIndex] = No unit
              • Set SB_ShadowSpawn2[TempInt] = SB_ShadowSpawn2[SB_MaxIndex]
              • Set SB_ShadowSpawn2[SB_MaxIndex] = No unit
              • Set SB_ShadowSpawn3[TempInt] = SB_ShadowSpawn3[SB_MaxIndex]
              • Set SB_ShadowSpawn3[SB_MaxIndex] = No unit
              • Set SB_ShadowSpawn4[TempInt] = SB_ShadowSpawn4[SB_MaxIndex]
              • Set SB_ShadowSpawn4[SB_MaxIndex] = No unit
              • Set SB_SpellLvl[TempInt] = SB_SpellLvl[SB_MaxIndex]
              • Set SB_DamageUnit[TempInt] = SB_DamageUnit[SB_MaxIndex]
              • Set SB_DamageUnit2[TempInt] = SB_DamageUnit2[SB_MaxIndex]
              • Set SB_MaxIndex = (SB_MaxIndex - 1)
              • Set TempInt = (TempInt - 1)
              • -------- ------------------------------------------------------------------------------------- --------
            • Else - Actions
              • -------- ------------------------------------------------------------------------------------- --------
              • Set SB_Angle[1] = (Angle from SB_Point2[1] to SB_Point)
              • Set SB_Angle[2] = (Angle from SB_Point2[2] to SB_Point)
              • Set SB_Angle[3] = (Angle from SB_Point2[3] to SB_Point)
              • Set SB_Angle[4] = (Angle from SB_Point2[4] to SB_Point)
              • Set SB_Point3[1] = (SB_Point2[1] offset by 15.00 towards SB_Angle[1] degrees)
              • Set SB_Point3[2] = (SB_Point2[2] offset by 15.00 towards SB_Angle[2] degrees)
              • Set SB_Point3[3] = (SB_Point2[3] offset by 15.00 towards SB_Angle[3] degrees)
              • Set SB_Point3[4] = (SB_Point2[4] offset by 15.00 towards SB_Angle[4] degrees)
              • Unit - Move SB_ShadowSpawn1[TempInt] instantly to SB_Point3[1]
              • Unit - Move SB_ShadowSpawn2[TempInt] instantly to SB_Point3[2]
              • Unit - Move SB_ShadowSpawn3[TempInt] instantly to SB_Point3[3]
              • Unit - Move SB_ShadowSpawn4[TempInt] instantly to SB_Point3[4]
              • Custom script: call RemoveLocation(udg_SB_Point3[1])
              • Custom script: call RemoveLocation(udg_SB_Point3[2])
              • Custom script: call RemoveLocation(udg_SB_Point3[3])
              • Custom script: call RemoveLocation(udg_SB_Point3[4])
              • -------- ------------------------------------------------------------------------------------- --------
          • -------- ------------------------------------------------------------------------------------- --------
          • -------- ------------------------------------------------------------------------------------- --------
          • Custom script: call RemoveLocation(udg_SB_Point)
          • Custom script: call RemoveLocation(udg_SB_Point2[1])
          • Custom script: call RemoveLocation(udg_SB_Point2[2])
          • Custom script: call RemoveLocation(udg_SB_Point2[3])
          • Custom script: call RemoveLocation(udg_SB_Point2[4])
          • -------- ------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------- --------
      • Custom script: set udg_SB_Point = null
      • Custom script: set udg_SB_Point2[1] = null
      • Custom script: set udg_SB_Point2[2] = null
      • Custom script: set udg_SB_Point2[3] = null
      • Custom script: set udg_SB_Point2[4] = null
      • Custom script: set udg_SB_Point3[1] = null
      • Custom script: set udg_SB_Point3[2] = null
      • Custom script: set udg_SB_Point3[3] = null
      • Custom script: set udg_SB_Point3[4] = null
      • -------- ------------------------------------------------------------------------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • SB_MaxIndex Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
      • -------- ------------------------------------------------------------------------------------- --------
 
Last edited:
Store anything used twice or more into a variable.
Example: (Owner of SB_TrigUnit[SB_MaxIndex]) / (SB_ShadowSpawnInt - 3)

This is one mistake.

  • Set SB_Dummy[TempInt] = SB_Dummy[SB_MaxIndex]
  • Set SB_Dummy[TempInt] = No unit
This isn't MUI.
  • Set SB_ShadowSpawnInt = (SB_ShadowSpawnInt - 4)
  • For each (Integer TempInt2) from (SB_ShadowSpawnInt - 3) to SB_ShadowSpawnInt, do (Actions)
  • Loop - Actions
  • Set SB_ShadowSpawn2[TempInt2] = SB_ShadowSpawn2[SB_MaxIndex]
  • Set SB_ShadowSpawn2[SB_MaxIndex] = No unit
The above is definitely not MUI.
 
Level 18
Joined
May 11, 2012
Messages
2,103
I'm trying, I even put the ping action to ping the SB_Point[1,2,3,4] and it pings normally.
But the Move Action is probably screwed. I'll try SetUnitXY

Can you check the Loop trigger again?
Now it works, but when I cast it 2 times, when 1st instance finishes, the 2nd instance stops for some reason
 
Last edited by a moderator:
Level 18
Joined
May 11, 2012
Messages
2,103
Omg, I edited post with wrong spell
Yeah, I forgot about that..
  • Shadow Blast Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer TempInt) from 1 to SB_MaxIndex, do (Actions)
        • Loop - Actions
          • -------- ------------------------------------------------------------------------------------- --------
          • Set SB_Point = (Position of SB_Dummy[TempInt])
          • -------- ------------------------------------------------------------------------------------- --------
          • -------- ------------------------------------------------------------------------------------- --------
          • Set SB_Point2[1] = (Position of SB_ShadowSpawn1[TempInt])
          • Set SB_Point2[2] = (Position of SB_ShadowSpawn2[TempInt])
          • Set SB_Point2[3] = (Position of SB_ShadowSpawn3[TempInt])
          • Set SB_Point2[4] = (Position of SB_ShadowSpawn4[TempInt])
          • -------- ------------------------------------------------------------------------------------- --------
          • -------- ------------------------------------------------------------------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Distance between SB_Point and SB_Point2[1]) Less than or equal to 25.00
                  • (Distance between SB_Point and SB_Point2[2]) Less than or equal to 25.00
                  • (Distance between SB_Point and SB_Point2[3]) Less than or equal to 25.00
                  • (Distance between SB_Point and SB_Point2[4]) Less than or equal to 25.00
            • Then - Actions
              • -------- ------------------------------------------------------------------------------------- --------
              • Unit - Remove SB_ShadowSpawn1[TempInt] from the game
              • Unit - Remove SB_ShadowSpawn2[TempInt] from the game
              • Unit - Remove SB_ShadowSpawn3[TempInt] from the game
              • Unit - Remove SB_ShadowSpawn4[TempInt] from the game
              • -------- ------------------------------------------------------------------------------------- --------
              • -------- ------------------------------------------------------------------------------------- --------
              • Unit - Kill SB_Dummy[TempInt]
              • -------- ------------------------------------------------------------------------------------- --------
              • -------- ------------------------------------------------------------------------------------- --------
              • Set SB_UnitGroup = (Units within 450.00 of SB_Point 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 SB_TrigUnit[SB_MaxIndex])) Equal to True) and ((Life o
              • -------- ------------------------------------------------------------------------------------- --------
              • -------- ------------------------------------------------------------------------------------- --------
              • Unit Group - Pick every unit in SB_UnitGroup and do (Actions)
                • Loop - Actions
                  • Unit - Cause SB_TrigUnit[TempInt] to damage (Picked unit), dealing SB_DamageUnit2[SB_SpellLvl[TempInt]] damage of attack type Spells and damage type Normal
              • -------- ------------------------------------------------------------------------------------- --------
              • -------- ------------------------------------------------------------------------------------- --------
              • Special Effect - Create a special effect at SB_Point using war3mapImported\DarkBlast.mdx
              • Special Effect - Destroy (Last created special effect)
              • -------- ------------------------------------------------------------------------------------- --------
              • -------- ------------------------------------------------------------------------------------- --------
              • Set SB_TrigUnit[TempInt] = SB_TrigUnit[SB_MaxIndex]
              • Set SB_TrigUnit[SB_MaxIndex] = No unit
              • Set SB_Dummy[TempInt] = SB_Dummy[SB_MaxIndex]
              • Set SB_Dummy[SB_MaxIndex] = No unit
              • Set SB_ShadowSpawn1[TempInt] = SB_ShadowSpawn1[SB_MaxIndex]
              • Set SB_ShadowSpawn1[SB_MaxIndex] = No unit
              • Set SB_ShadowSpawn2[TempInt] = SB_ShadowSpawn2[SB_MaxIndex]
              • Set SB_ShadowSpawn2[SB_MaxIndex] = No unit
              • Set SB_ShadowSpawn3[TempInt] = SB_ShadowSpawn3[SB_MaxIndex]
              • Set SB_ShadowSpawn3[SB_MaxIndex] = No unit
              • Set SB_ShadowSpawn4[TempInt] = SB_ShadowSpawn4[SB_MaxIndex]
              • Set SB_ShadowSpawn4[SB_MaxIndex] = No unit
              • Set SB_SpellLvl[TempInt] = SB_SpellLvl[SB_MaxIndex]
              • Set SB_DamageUnit[TempInt] = SB_DamageUnit[SB_MaxIndex]
              • Set SB_DamageUnit2[TempInt] = SB_DamageUnit2[SB_MaxIndex]
              • Set SB_MaxIndex = (SB_MaxIndex - 1)
              • Set TempInt = (TempInt - 1)
              • -------- ------------------------------------------------------------------------------------- --------
            • Else - Actions
              • -------- ------------------------------------------------------------------------------------- --------
              • Set SB_Angle[1] = (Angle from SB_Point2[1] to SB_Point)
              • Set SB_Angle[2] = (Angle from SB_Point2[2] to SB_Point)
              • Set SB_Angle[3] = (Angle from SB_Point2[3] to SB_Point)
              • Set SB_Angle[4] = (Angle from SB_Point2[4] to SB_Point)
              • Set SB_Point3[1] = (SB_Point2[1] offset by 15.00 towards SB_Angle[1] degrees)
              • Set SB_Point3[2] = (SB_Point2[2] offset by 15.00 towards SB_Angle[2] degrees)
              • Set SB_Point3[3] = (SB_Point2[3] offset by 15.00 towards SB_Angle[3] degrees)
              • Set SB_Point3[4] = (SB_Point2[4] offset by 15.00 towards SB_Angle[4] degrees)
              • Unit - Move SB_ShadowSpawn1[TempInt] instantly to SB_Point3[1]
              • Unit - Move SB_ShadowSpawn2[TempInt] instantly to SB_Point3[2]
              • Unit - Move SB_ShadowSpawn3[TempInt] instantly to SB_Point3[3]
              • Unit - Move SB_ShadowSpawn4[TempInt] instantly to SB_Point3[4]
              • Custom script: call RemoveLocation(udg_SB_Point3[1])
              • Custom script: call RemoveLocation(udg_SB_Point3[2])
              • Custom script: call RemoveLocation(udg_SB_Point3[3])
              • Custom script: call RemoveLocation(udg_SB_Point3[4])
              • -------- ------------------------------------------------------------------------------------- --------
          • -------- ------------------------------------------------------------------------------------- --------
          • -------- ------------------------------------------------------------------------------------- --------
          • Custom script: call RemoveLocation(udg_SB_Point)
          • Custom script: call RemoveLocation(udg_SB_Point2[1])
          • Custom script: call RemoveLocation(udg_SB_Point2[2])
          • Custom script: call RemoveLocation(udg_SB_Point2[3])
          • Custom script: call RemoveLocation(udg_SB_Point2[4])
          • -------- ------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------- --------
      • Custom script: set udg_SB_Point = null
      • Custom script: set udg_SB_Point2[1] = null
      • Custom script: set udg_SB_Point2[2] = null
      • Custom script: set udg_SB_Point2[3] = null
      • Custom script: set udg_SB_Point2[4] = null
      • Custom script: set udg_SB_Point3[1] = null
      • Custom script: set udg_SB_Point3[2] = null
      • Custom script: set udg_SB_Point3[3] = null
      • Custom script: set udg_SB_Point3[4] = null
      • -------- ------------------------------------------------------------------------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • SB_MaxIndex Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
      • -------- ------------------------------------------------------------------------------------- --------
Here I de-index everything. Am I doing it right?
The thing is, no matter how many instances I cr8, the last instance running will stop after the instance before the last finishes.
I Changed the TempInt to SB_Loop and it works flawlessly now :D
 
Level 18
Joined
May 11, 2012
Messages
2,103
I mean, if I cast the spell 2 times, when the first instance finishes, the second instance that is still running will stop.
I think that the looping trigger was turned off, but after I changed the looping variable to SB_Loop. it worked ok.
Get it now? =)
 
Status
Not open for further replies.
Top