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

MUI Request

Which method is better for this spell to become MUI?


  • Total voters
    7
  • Poll closed .
Status
Not open for further replies.

BUP

BUP

Level 9
Joined
Sep 9, 2012
Messages
172
I haven't been able to make this spell MUI with Tank-Commander's Indexing method.
And also Hanky's Dynamic Indexing System doesn't help too.
Anyone would like to make this spell into MUI for me?(or)Can you guys explain me how to make MUI with multi-unit using spells?
Here's the code


  • FB Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- --------------CONFIGURATION START--------------- --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- (FB_Base_Balls) + [(FB_BallPerLevel) x (Current Level)] = Total Balls Created --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_Base_Balls = 2
      • Set FPB_BallsPerLevel = 2
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- (FB_BaseDamage) + [(FB_DamagePerLevel) x (Current Level)] = Total Damage Caused To A Unit --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_BaseDamage = 100.00
      • Set FPB_DamagePerLevel = 30.00
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- The size of the ground effect --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_GroundDummy_Size = 400.00
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- The size of the balls --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_Size = 150.00
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- The range that will be effected to push --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_PushPickRange = 400.00
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- The range that will be effected to explode --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_ExplodePickRange = 200.00
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- The starting height of the balls --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_StartHeight = 1250.00
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- The models effects --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_GroundEffect_Model = Abilities\Spells\Other\Doom\DoomTarget.mdl
      • Set FPB_Push_Model = Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
      • Set FPB_Ball_Model = Abilities\Weapons\LordofFlameMissile\LordofFlameMissile.mdl
      • Set FPB_Effect_Model = Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl
      • Set FPB_Explode_Model = Abilities\Spells\Other\Doom\DoomDeath.mdl
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- The speed that the balls will fall --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_Fall_Speed = 15.00
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- The speed that the balls will spin --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_SpinSpeed = 10.00
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- The distance increasing speed of the balls when they fall --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_DistanceIncrease = 4.00
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- The pushing speed of the enemy units in the center --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_PushSpeed = 12.00
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- The distance of the balls that will spawn from the center of the target point --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set FPB_StartDistance = 10.00
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- --------------CONFIGURATION END--------------- --------


  • FB Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Flaming Phoenix Bombs
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • FPB_Index_Listener Equal to 0
        • Then - Actions
          • Trigger - Turn on FB Loop <gen>
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • FPB_Recycle_Size Greater than 0
        • Then - Actions
          • Set FPB_Recycle_Size = (FPB_Recycle_Size - 1)
          • Set FPB_Current_Index = FPB_Recycle_Container[FPB_Recycle_Size]
        • Else - Actions
          • Set FPB_Current_Index = FPB_Index_Size
          • Set FPB_Index_Size = (FPB_Index_Size + 1)
      • Set FPB_Caster[FPB_Current_Index] = (Triggering unit)
      • Set FPB_Player = (Owner of FPB_Caster[FPB_Current_Index])
      • Set FPB_Level = (Level of Flaming Phoenix Bombs for FPB_Caster[FPB_Current_Index])
      • Set FPB_TargetPoint[FPB_Current_Index] = (Target point of ability being cast)
      • Set FPB_Balls[FPB_Current_Index] = (FPB_Base_Balls + (FPB_BallsPerLevel x FPB_Level))
      • Set FPB_Damage = (FPB_BaseDamage + (FPB_DamagePerLevel x (Real(FPB_Level))))
      • For each (Integer FPB_Integer) from 1 to FPB_Balls[FPB_Current_Index], do (Actions)
        • Loop - Actions
          • Set FPB_SpawnPoint[FPB_Integer] = (FPB_TargetPoint[FPB_Current_Index] offset by FPB_StartDistance towards ((360.00 / (Real(FPB_Balls[FPB_Current_Index]))) x (Real(FPB_Integer))) degrees)
          • Set FPB_Height[FPB_Integer] = FPB_StartHeight
          • Unit - Create 1 Dummy for (Owner of FPB_Caster[FPB_Current_Index]) at FPB_SpawnPoint[FPB_Integer] facing Default building facing degrees
          • Custom script: call RemoveLocation(udg_FPB_SpawnPoint[udg_FPB_Integer])
          • Set FPB_Dummy[FPB_Integer] = (Last created unit)
          • Custom script: if UnitAddAbility(udg_FPB_Dummy[udg_FPB_Integer],'Amrf') then
          • Custom script: call UnitRemoveAbility(udg_FPB_Dummy[udg_FPB_Integer],'Amrf')
          • Custom script: endif
          • Special Effect - Create a special effect attached to the chest of FPB_Dummy[FPB_Integer] using FPB_Ball_Model
          • Special Effect - Create a special effect attached to the chest of FPB_Dummy[FPB_Integer] using FPB_Effect_Model
          • Animation - Change FPB_Dummy[FPB_Integer] flying height to FPB_Height[FPB_Integer] at 0.00
          • Animation - Change FPB_Dummy[FPB_Integer]'s size to (FPB_Size%, 0.00%, 0.00%) of its original size
      • Unit - Create 1 Dummy for (Owner of FPB_Caster[FPB_Current_Index]) at FPB_TargetPoint[FPB_Current_Index] facing Default building facing degrees
      • Set FPB_GroundEffect_Dummy[FPB_Current_Index] = (Last created unit)
      • Special Effect - Create a special effect attached to the origin of FPB_GroundEffect_Dummy[FPB_Current_Index] using FPB_GroundEffect_Model
      • Animation - Change FPB_GroundEffect_Dummy[FPB_Current_Index]'s size to (FPB_GroundDummy_Size%, 0.00%, 0.00%) of its original size
      • Set FPB_Index_Container[FPB_Index_Listener] = FPB_Current_Index
      • Set FPB_Index_Listener = (FPB_Index_Listener + 1)


  • FB Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer FPB_Loop) from 0 to (FPB_Index_Listener - 1), do (Actions)
        • Loop - Actions
          • Set FPB_Current_Index = FPB_Index_Container[FPB_Loop]
          • For each (Integer FPB_Integer) from 1 to FPB_Balls[FPB_Current_Index], do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FPB_Height[FPB_Integer] Greater than 0.00
                • Then - Actions
                  • Set FPB_Height[FPB_Integer] = (FPB_Height[FPB_Integer] - FPB_Fall_Speed)
                  • Set FPB_DummyPoint[FPB_Integer] = (Position of FPB_Dummy[FPB_Integer])
                  • Set FPB_Angle[FPB_Integer] = (Angle from FPB_TargetPoint[FPB_Current_Index] to FPB_DummyPoint[FPB_Integer])
                  • Set FPB_Distance[FPB_Integer] = (Distance between FPB_DummyPoint[FPB_Integer] and FPB_TargetPoint[FPB_Current_Index])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • FPB_Angle[FPB_Integer] Greater than or equal to 360.00
                    • Then - Actions
                      • Set FPB_Angle[FPB_Integer] = 0.00
                    • Else - Actions
                  • Set FPB_Move[FPB_Integer] = (FPB_TargetPoint[FPB_Current_Index] offset by (FPB_Distance[FPB_Integer] + FPB_DistanceIncrease) towards (FPB_Angle[FPB_Integer] - FPB_SpinSpeed) degrees)
                  • Animation - Change FPB_Dummy[FPB_Integer] flying height to FPB_Height[FPB_Integer] at 0.00
                  • Unit - Move FPB_Dummy[FPB_Integer] instantly to FPB_Move[FPB_Integer], facing (FPB_Angle[FPB_Integer] - 90.00) degrees
                  • Custom script: call RemoveLocation(udg_FPB_Move[udg_FPB_Integer])
                  • Custom script: call RemoveLocation(udg_FPB_DummyPoint[udg_FPB_Integer])
                • Else - Actions
                  • For each (Integer FPB_Integer) from 1 to FPB_Balls[FPB_Current_Index], do (Actions)
                    • Loop - Actions
                      • Set FPB_DummyPoint[FPB_Integer] = (Position of FPB_Dummy[FPB_Integer])
                      • Unit - Kill FPB_Dummy[FPB_Integer]
                      • Unit - Kill FPB_GroundEffect_Dummy[FPB_Current_Index]
                      • Special Effect - Create a special effect at FPB_DummyPoint[FPB_Integer] using FPB_Explode_Model
                      • Unit - Create 1 Dummy for (Owner of FPB_Caster[FPB_Current_Index]) at FPB_DummyPoint[FPB_Integer] facing Default building facing degrees
                      • Set FPB_Slow_Dummy = (Last created unit)
                      • Unit - Add Flaming Bombs (Dummy) to FPB_Slow_Dummy
                      • Unit - Set level of Flaming Bombs (Dummy) for FPB_Slow_Dummy to FPB_Level
                      • Unit - Add a 1.00 second Generic expiration timer to FPB_Slow_Dummy
                      • Set FPB_ExplodeGroup = (Units within FPB_ExplodePickRange of FPB_DummyPoint[FPB_Integer] matching (((((Matching unit) is A structure) Not equal to True) and (((Matching unit) is Magic Immune) Not equal to True)) and ((((Matching unit) belongs to an enemy of FPB_Player) Equal to Tru
                      • Unit Group - Pick every unit in FPB_ExplodeGroup and do (Actions)
                        • Loop - Actions
                          • Set FPB_Picked_Unit[FPB_Integer] = (Picked unit)
                          • Unit - Cause FPB_Caster[FPB_Current_Index] to damage FPB_Picked_Unit[FPB_Integer], dealing FPB_Damage damage of attack type Spells and damage type Normal
                          • Unit - Order FPB_Slow_Dummy to Human Sorceress - Slow FPB_Picked_Unit[FPB_Integer]
                      • Custom script: call DestroyGroup(udg_FPB_ExplodeGroup)
                      • Custom script: call RemoveLocation(udg_FPB_DummyPoint[udg_FPB_Integer])
                  • Custom script: call RemoveLocation(udg_FPB_TargetPoint[udg_FPB_Current_Index])
                  • Set FPB_Index_Listener = (FPB_Index_Listener - 1)
                  • Set FPB_Index_Container[FPB_Loop] = FPB_Index_Container[FPB_Index_Listener]
                  • Set FPB_Recycle_Container[FPB_Recycle_Size] = FPB_Current_Index
                  • Set FPB_Recycle_Size = (FPB_Recycle_Size + 1)
                  • Set FPB_Loop = (FPB_Loop - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • FPB_Index_Listener Equal to 0
                    • Then - Actions
                      • Trigger - Turn off FB Loop <gen>
                    • Else - Actions
      • Set FPB_PushGroup[FPB_Current_Index] = (Units within FPB_PushPickRange of FPB_TargetPoint[FPB_Current_Index] matching (((((Matching unit) is A structure) Not equal to True) and (((Matching unit) is Magic Immune) Not equal to True)) and ((((Matching unit) belongs to an enemy of FPB_Player) Equal to
      • Unit Group - Pick every unit in FPB_PushGroup[FPB_Current_Index] and do (Actions)
        • Loop - Actions
          • Set FPB_PU_Picked_Unit[FPB_Current_Index] = (Picked unit)
          • Set FPB_PU_Picked_Position = (Position of FPB_PU_Picked_Unit[FPB_Current_Index])
          • Set FPB_PU_Angle = (Angle from FPB_TargetPoint[FPB_Current_Index] to FPB_PU_Picked_Position)
          • Set FPB_Push = (FPB_PU_Picked_Position offset by FPB_PushSpeed towards FPB_PU_Angle degrees)
          • Unit - Move FPB_PU_Picked_Unit[FPB_Current_Index] instantly to FPB_Push, facing Default building facing degrees
          • Custom script: call RemoveLocation(udg_FPB_Push)
          • Custom script: call RemoveLocation(udg_FPB_PU_Picked_Position)
      • Custom script: call DestroyGroup(udg_FPB_PushGroup[udg_FPB_Current_Index])


Dummy Remover Trigger is not posted.
Please,guys!!
You can get the spell here FPB Spell
 
Indexing and Hashtables both have certain limits. And in this case, Indexing's limits might be a bit embarassing (in my point of view) as you need to move several units (and number of those depending of spell level), and you also need to refer from the unit to the caster in order to deal damages.

So, i would use and recommand Hashtable for that spell.
 
Status
Not open for further replies.
Top