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

GUI Brand[LOL] Spell Pack 1.2

So I was playing League of Legends earlier and had this idea. I decided to make a spell pack based on Brand, the Burning Vengeance, because he's one of my favorite champions in League of Legends. I was supposed to make a Katarina spell pack but her skills are too complicated (Like Voracity).

Anyway, I used the Firelord model to represent Brand because I couldn't find any Brand models in any websites.

1st skill-Sear


  • SEARSTART
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to B_SEAR_ABILITY
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • B_SEAR_INDEX_LISTENER Equal to 0
        • Then - Actions
          • Trigger - Turn on SEARLOOP <gen>
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • B_SEAR_RECYCLE_SIZE Greater than 0
        • Then - Actions
          • Set B_SEAR_RECYCLE_SIZE = (B_SEAR_RECYCLE_SIZE - 1)
          • Set B_SEAR_CURRENT_INDEX = B_SEAR_RECYCLE_CONTAINER[B_SEAR_RECYCLE_SIZE]
        • Else - Actions
          • Set B_SEAR_CURRENT_INDEX = B_SEAR_INDEX_SIZE
          • Set B_SEAR_INDEX_SIZE = (B_SEAR_INDEX_SIZE + 1)
      • -------- IMPORTANT VARIABLES --------
      • Set B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX] = (Triggering unit)
      • Set B_SEAR_TEMPLOC1 = (Position of B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX])
      • Set B_SEAR_TEMPLOC2 = (Target point of ability being cast)
      • Set B_SEAR_ANGLE[B_SEAR_CURRENT_INDEX] = (Angle from B_SEAR_TEMPLOC1 to B_SEAR_TEMPLOC2)
      • Unit - Create 1 B_SEAR_MISSILE_TYPE for (Owner of B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX]) at B_SEAR_TEMPLOC1 facing B_SEAR_ANGLE[B_SEAR_CURRENT_INDEX] degrees
      • Set B_SEAR_PROJECTILE[B_SEAR_CURRENT_INDEX] = (Last created unit)
      • Set B_SEAR_HIT_A_UNIT[B_SEAR_CURRENT_INDEX] = False
      • Set B_SEAR_LEVEL_OF_ABILITY[B_SEAR_CURRENT_INDEX] = (Level of B_SEAR_ABILITY for B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX])
      • Set B_SEAR_AOE[B_SEAR_CURRENT_INDEX] = B_SEAR_CONFIG_BASE_AOE[B_SEAR_LEVEL_OF_ABILITY[B_SEAR_CURRENT_INDEX]]
      • Set B_SEAR_RANGE[B_SEAR_CURRENT_INDEX] = 0.00
      • Set B_SEAR_SPEED[B_SEAR_CURRENT_INDEX] = B_SEAR_CONFIG_BASE_SPEED[B_SEAR_LEVEL_OF_ABILITY[B_SEAR_CURRENT_INDEX]]
      • Set B_SEAR_DAMAGE[B_SEAR_CURRENT_INDEX] = B_SEAR_CONFIG_BASE_DAMAGE[B_SEAR_LEVEL_OF_ABILITY[B_SEAR_CURRENT_INDEX]]
      • Set B_SEAR_DAMAGE[B_SEAR_CURRENT_INDEX] = (B_SEAR_DAMAGE[B_SEAR_CURRENT_INDEX] + ((Real((Intelligence of B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX] (Include bonuses)))) x 0.65))
      • Custom script: call RemoveLocation(udg_B_SEAR_TEMPLOC1)
      • Custom script: call RemoveLocation(udg_B_SEAR_TEMPLOC2)
      • -------- IMPORTANT SYSTEM PART START --------
      • Set B_SEAR_INDEX_CONTAINER[B_SEAR_INDEX_LISTENER] = B_SEAR_CURRENT_INDEX
      • Set B_SEAR_INDEX_LISTENER = (B_SEAR_INDEX_LISTENER + 1)



  • SEARLOOP
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • -------- Dynamic Loop --------
      • For each (Integer B_SEAR_EXAMPLE_LOOP) from 0 to (B_SEAR_INDEX_LISTENER - 1), do (Actions)
        • Loop - Actions
          • -------- Set the current index --------
          • Set B_SEAR_CURRENT_INDEX = B_SEAR_INDEX_CONTAINER[B_SEAR_EXAMPLE_LOOP]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • B_SEAR_HIT_A_UNIT[B_SEAR_CURRENT_INDEX] Equal to False
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • B_SEAR_RANGE[B_SEAR_CURRENT_INDEX] Less than B_SEAR_CONFIG_BASE_RANGE[B_SEAR_LEVEL_OF_ABILITY[B_SEAR_CURRENT_INDEX]]
                • Then - Actions
                  • Set B_SEAR_RANGE[B_SEAR_CURRENT_INDEX] = (B_SEAR_RANGE[B_SEAR_CURRENT_INDEX] + (0.03 x B_SEAR_SPEED[B_SEAR_CURRENT_INDEX]))
                  • Set B_SEAR_TEMPLOC1 = (Position of B_SEAR_PROJECTILE[B_SEAR_CURRENT_INDEX])
                  • Set B_SEAR_TEMPLOC2 = (B_SEAR_TEMPLOC1 offset by (0.03 x B_SEAR_SPEED[B_SEAR_CURRENT_INDEX]) towards B_SEAR_ANGLE[B_SEAR_CURRENT_INDEX] degrees)
                  • Unit - Move B_SEAR_PROJECTILE[B_SEAR_CURRENT_INDEX] instantly to B_SEAR_TEMPLOC2
                  • Set B_SEAR_PICKED_UNITS = (Units within B_SEAR_AOE[B_SEAR_CURRENT_INDEX] of B_SEAR_TEMPLOC1 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is A flying unit) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Ma
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (B_SEAR_PICKED_UNITS is empty) Equal to False
                    • Then - Actions
                      • Unit - Kill B_SEAR_PROJECTILE[B_SEAR_CURRENT_INDEX]
                      • Set B_SEAR_PICKED_UNIT = (Random unit from B_SEAR_PICKED_UNITS)
                      • Special Effect - Create a special effect attached to the chest of B_SEAR_PICKED_UNIT using B_SEAR_SPFX
                      • Special Effect - Destroy (Last created special effect)
                      • Special Effect - Create a special effect attached to the chest of B_SEAR_PICKED_UNIT using B_SEAR_SPFX
                      • Special Effect - Destroy (Last created special effect)
                      • Special Effect - Create a special effect attached to the chest of B_SEAR_PICKED_UNIT using B_SEAR_SPFX
                      • Special Effect - Destroy (Last created special effect)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (B_SEAR_PICKED_UNIT has buff B_BLAZE_CONFIG_BUFF) Equal to True
                        • Then - Actions
                          • Unit - Create 1 DUMMY CASTER for (Owner of B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX]) at (Position of B_SEAR_PICKED_UNIT) facing Default building facing degrees
                          • Unit - Add Sear Stun to (Last created unit)
                          • Unit - Order (Last created unit) to Human Mountain King - Storm Bolt B_SEAR_PICKED_UNIT
                          • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                        • Else - Actions
                      • Unit - Create 1 DUMMY CASTER for (Owner of B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX]) at (Position of B_SEAR_PICKED_UNIT) facing Default building facing degrees
                      • Unit - Add Blaze (Dummy) to (Last created unit)
                      • Unit - Order (Last created unit) to Undead Banshee - Curse B_SEAR_PICKED_UNIT
                      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                      • Unit - Cause B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX] to damage B_SEAR_PICKED_UNIT, dealing B_SEAR_DAMAGE[B_SEAR_CURRENT_INDEX] damage of attack type Hero and damage type Magic
                      • Set B_SEAR_PICKED_UNIT = No unit
                      • Set B_SEAR_HIT_A_UNIT[B_SEAR_CURRENT_INDEX] = True
                    • Else - Actions
                  • Custom script: call DestroyGroup(udg_B_SEAR_PICKED_UNITS)
                  • Custom script: call RemoveLocation(udg_B_SEAR_TEMPLOC1)
                  • Custom script: call RemoveLocation(udg_B_SEAR_TEMPLOC2)
                • Else - Actions
                  • Set B_SEAR_HIT_A_UNIT[B_SEAR_CURRENT_INDEX] = True
            • Else - Actions
              • Unit - Kill B_SEAR_PROJECTILE[B_SEAR_CURRENT_INDEX]
              • Set B_SEAR_TRIGGER_UNIT[B_SEAR_CURRENT_INDEX] = No unit
              • Set B_SEAR_PROJECTILE[B_SEAR_CURRENT_INDEX] = No unit
              • -------- IMPORTANT SYSTEM PART START --------
              • -------- Decrease the normal index container size --------
              • Set B_SEAR_INDEX_LISTENER = (B_SEAR_INDEX_LISTENER - 1)
              • -------- Exchange the data from the last index to the current index --------
              • Set B_SEAR_INDEX_CONTAINER[B_SEAR_EXAMPLE_LOOP] = B_SEAR_INDEX_CONTAINER[B_SEAR_INDEX_LISTENER]
              • -------- Add an index to the Recycle Container --------
              • Set B_SEAR_RECYCLE_CONTAINER[B_SEAR_RECYCLE_SIZE] = B_SEAR_CURRENT_INDEX
              • -------- Recycle Container Index Size gets increased --------
              • Set B_SEAR_RECYCLE_SIZE = (B_SEAR_RECYCLE_SIZE + 1)
              • -------- Reset Loop --------
              • Set B_SEAR_EXAMPLE_LOOP = (B_SEAR_EXAMPLE_LOOP - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • B_SEAR_INDEX_LISTENER Equal to 0
                • Then - Actions
                  • Trigger - Turn off SEARLOOP <gen>
                  • Skip remaining actions
                • Else - Actions
              • -------- IMPORTANT SYSTEM PART END --------







2nd skill-Pillar of Flame


  • POFSTART
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to B_POF_ABILITY
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • B_POF_INDEX_LISTENER Equal to 0
        • Then - Actions
          • Trigger - Turn on POFLOOP <gen>
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • B_POF_RECYCLE_SIZE Greater than 0
        • Then - Actions
          • Set B_POF_RECYCLE_SIZE = (B_POF_RECYCLE_SIZE - 1)
          • Set B_POF_CURRENT_INDEX = B_POF_RECYCLE_CONTAINER[B_POF_RECYCLE_SIZE]
        • Else - Actions
          • Set B_POF_CURRENT_INDEX = B_POF_INDEX_SIZE
          • Set B_POF_INDEX_SIZE = (B_POF_INDEX_SIZE + 1)
      • -------- IMPORTANT VARIABLES --------
      • Set B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX] = (Triggering unit)
      • Set B_POF_TARGET_POINT[B_POF_CURRENT_INDEX] = (Target point of ability being cast)
      • Unit - Create 1 POF DUMMY for (Owner of B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX]) at B_POF_TARGET_POINT[B_POF_CURRENT_INDEX] facing Default building facing degrees
      • Set B_POF_DUMMY_UNIT[B_POF_CURRENT_INDEX] = (Last created unit)
      • Set B_POF_LVL_OFABILITY = (Level of B_POF_ABILITY for B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX])
      • Set B_POF_DAMAGE[B_POF_CURRENT_INDEX] = B_POF_CONFIG_DAMAGE[B_POF_LVL_OFABILITY]
      • Set B_POF_DAMAGE[B_POF_CURRENT_INDEX] = (B_POF_DAMAGE[B_POF_CURRENT_INDEX] + (0.60 x (Real((Intelligence of B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX] (Include bonuses))))))
      • Set B_POF_DAMAGE_FACTOR[B_POF_CURRENT_INDEX] = B_POF_CONFIG_DAMAGE_FACTOR[B_POF_LVL_OFABILITY]
      • Set B_POF_BONUS_DAMAGE[B_POF_CURRENT_INDEX] = (B_POF_DAMAGE[B_POF_CURRENT_INDEX] + (B_POF_CONFIG_DAMAGE_FACTOR[B_POF_LVL_OFABILITY] x B_POF_DAMAGE[B_POF_CURRENT_INDEX]))
      • Set B_POF_DELAY[B_POF_CURRENT_INDEX] = B_POF_CONFIG_DELAY[B_POF_LVL_OFABILITY]
      • Set B_POF_AOE[B_POF_CURRENT_INDEX] = B_POF_CONFIG_AOE[B_POF_LVL_OFABILITY]
      • -------- IMPORTANT SYSTEM PART START --------
      • Set B_POF_INDEX_CONTAINER[B_POF_INDEX_LISTENER] = B_POF_CURRENT_INDEX
      • Set B_POF_INDEX_LISTENER = (B_POF_INDEX_LISTENER + 1)



  • POFLOOP
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • -------- Dynamic Loop --------
      • For each (Integer B_POF_EXAMPLE_LOOP) from 0 to (B_POF_INDEX_LISTENER - 1), do (Actions)
        • Loop - Actions
          • -------- Set the current index --------
          • Set B_POF_CURRENT_INDEX = B_POF_INDEX_CONTAINER[B_POF_EXAMPLE_LOOP]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • B_POF_DELAY[B_POF_CURRENT_INDEX] Greater than 0.00
            • Then - Actions
              • Set B_POF_DELAY[B_POF_CURRENT_INDEX] = (B_POF_DELAY[B_POF_CURRENT_INDEX] - 0.03)
            • Else - Actions
              • Unit - Create 1 CONFLAGRATION DUMMY for (Owner of B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX]) at B_POF_TARGET_POINT[B_POF_CURRENT_INDEX] facing Default building facing degrees
              • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
              • Special Effect - Create a special effect at B_POF_TARGET_POINT[B_POF_CURRENT_INDEX] using B_POF_SPFX
              • Special Effect - Destroy (Last created special effect)
              • Set B_POF_PICKED_UNITS = (Units within B_POF_AOE[B_POF_CURRENT_INDEX] of B_POF_TARGET_POINT[B_POF_CURRENT_INDEX] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((
              • Unit Group - Pick every unit in B_POF_PICKED_UNITS and do (Actions)
                • Loop - Actions
                  • Set B_POF_PICKED_UNIT = (Picked unit)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (B_POF_PICKED_UNIT has buff B_BLAZE_CONFIG_BUFF) Equal to True
                    • Then - Actions
                      • Unit - Cause B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX] to damage B_POF_PICKED_UNIT, dealing B_POF_BONUS_DAMAGE[B_POF_CURRENT_INDEX] damage of attack type Hero and damage type Magic
                    • Else - Actions
                      • Unit - Cause B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX] to damage B_POF_PICKED_UNIT, dealing B_POF_DAMAGE[B_POF_CURRENT_INDEX] damage of attack type Hero and damage type Magic
                  • Unit - Create 1 DUMMY CASTER for (Owner of B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX]) at (Position of B_POF_PICKED_UNIT) facing Default building facing degrees
                  • Unit - Add Blaze (Dummy) to (Last created unit)
                  • Unit - Order (Last created unit) to Undead Banshee - Curse B_POF_PICKED_UNIT
                  • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                  • Set B_POF_PICKED_UNIT = No unit
              • Unit - Kill B_POF_DUMMY_UNIT[B_POF_CURRENT_INDEX]
              • Set B_POF_TRIGGER_UNIT[B_POF_CURRENT_INDEX] = No unit
              • Set B_POF_DUMMY_UNIT[B_POF_CURRENT_INDEX] = No unit
              • Custom script: call DestroyGroup(udg_B_POF_PICKED_UNITS)
              • Custom script: call RemoveLocation(udg_B_POF_TARGET_POINT[udg_B_POF_CURRENT_INDEX])
              • -------- IMPORTANT SYSTEM PART START --------
              • -------- Decrease the normal index container size --------
              • Set B_POF_INDEX_LISTENER = (B_POF_INDEX_LISTENER - 1)
              • -------- Exchange the data from the last index to the current index --------
              • Set B_POF_INDEX_CONTAINER[B_POF_EXAMPLE_LOOP] = B_POF_INDEX_CONTAINER[B_POF_INDEX_LISTENER]
              • -------- Add an index to the Recycle Container --------
              • Set B_POF_RECYCLE_CONTAINER[B_POF_RECYCLE_SIZE] = B_POF_CURRENT_INDEX
              • -------- Recycle Container Index Size gets increased --------
              • Set B_POF_RECYCLE_SIZE = (B_POF_RECYCLE_SIZE + 1)
              • -------- Reset Loop --------
              • Set B_POF_EXAMPLE_LOOP = (B_POF_EXAMPLE_LOOP - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • B_POF_INDEX_LISTENER Equal to 0
                • Then - Actions
                  • Trigger - Turn off POFLOOP <gen>
                  • Skip remaining actions
                • Else - Actions
              • -------- IMPORTANT SYSTEM PART END --------







3rd skill-Conflagration


  • CONFLAGRATIONSTART
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to B_CON_ABILITY
    • Actions
      • Set B_CON_TRIGGER_UNIT = (Triggering unit)
      • Set B_CON_TARGET_UNIT = (Target unit of ability being cast)
      • Set B_CON_LVL_OF_ABILITY = (Level of B_CON_ABILITY for B_CON_TRIGGER_UNIT)
      • Set B_CON_DAMAGE = B_CON_CONFIG_DAMAGE[B_CON_LVL_OF_ABILITY]
      • Set B_CON_DAMAGE = (B_CON_DAMAGE + (0.55 x (Real((Intelligence of B_CON_TRIGGER_UNIT (Include bonuses))))))
      • Special Effect - Create a special effect attached to the origin of B_CON_TARGET_UNIT using B_CON_SPFX1
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect attached to the origin of B_CON_TARGET_UNIT using B_CON_SPFX2
      • Special Effect - Destroy (Last created special effect)
      • Set B_CON_TARGET_LOC = (Position of B_CON_TARGET_UNIT)
      • Unit - Create 1 CONFLAGRATION DUMMY for (Owner of B_CON_TRIGGER_UNIT) at B_CON_TARGET_LOC facing Default building facing degrees
      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (B_CON_TARGET_UNIT has buff B_BLAZE_CONFIG_BUFF) Equal to True
        • Then - Actions
          • Set B_CON_PICKED_UNITS = (Units within B_CON_CONFIG_AOE[B_CON_LVL_OF_ABILITY] of B_CON_TARGET_LOC matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit)
          • Unit Group - Pick every unit in B_CON_PICKED_UNITS and do (Actions)
            • Loop - Actions
              • Set B_CON_PICKED_UNIT = (Picked unit)
              • Unit - Cause B_CON_TRIGGER_UNIT to damage B_CON_PICKED_UNIT, dealing B_CON_DAMAGE damage of attack type Hero and damage type Magic
              • Special Effect - Create a special effect attached to the chest of B_CON_PICKED_UNIT using Abilities\Weapons\FireBallMissile\FireBallMissile.mdl
              • Special Effect - Destroy (Last created special effect)
              • Set B_CON_PICKED_UNIT = No unit
          • Custom script: call DestroyGroup(udg_B_CON_PICKED_UNITS)
        • Else - Actions
      • Unit - Create 1 DUMMY CASTER for (Owner of B_CON_TRIGGER_UNIT) at (Position of B_CON_TARGET_UNIT) facing Default building facing degrees
      • Unit - Add Blaze (Dummy) to (Last created unit)
      • Unit - Order (Last created unit) to Undead Banshee - Curse B_CON_TARGET_UNIT
      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
      • Unit - Cause B_CON_TRIGGER_UNIT to damage B_CON_TARGET_UNIT, dealing B_CON_DAMAGE damage of attack type Hero and damage type Magic
      • Set B_CON_TRIGGER_UNIT = No unit
      • Set B_CON_TARGET_UNIT = No unit
      • Set B_CON_LVL_OF_ABILITY = 0
      • Set B_CON_DAMAGE = 0.00
      • Set B_CON_DAMAGE = 0.00
      • Custom script: call RemoveLocation(udg_B_CON_TARGET_LOC)





4th skill-Pyroclasm


  • PYROCLASMSTART
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to B_PYR_ABILITY
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • B_PYR_INDEX_LISTENER Equal to 0
        • Then - Actions
          • Trigger - Turn on PYROCLASMLOOP <gen>
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • B_PYR_RECYCLE_SIZE Greater than 0
        • Then - Actions
          • Set B_PYR_RECYCLE_SIZE = (B_PYR_RECYCLE_SIZE - 1)
          • Set B_PYR_CURRENT_INDEX = B_PYR_RECYCLE_CONTAINER[B_PYR_RECYCLE_SIZE]
        • Else - Actions
          • Set B_PYR_CURRENT_INDEX = B_PYR_INDEX_SIZE
          • Set B_PYR_INDEX_SIZE = (B_PYR_INDEX_SIZE + 1)
      • -------- IMPORTANT VARIABLES --------
      • Set B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX] = (Triggering unit)
      • Set B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] = (Target unit of ability being cast)
      • Set B_PYR_LVLOFABILITY = (Level of B_PYR_ABILITY for B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX])
      • Set B_PYR_G_AOE[B_PYR_CURRENT_INDEX] = B_PYR_CONFIG_AOE[B_PYR_LVLOFABILITY]
      • Set B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] = B_PYR_CONFIG_BOUNCES[B_PYR_LVLOFABILITY]
      • Set B_PYR_G_DAMAGE[B_PYR_CURRENT_INDEX] = B_PYR_CONFIG_DAMAGE[B_PYR_LVLOFABILITY]
      • Set B_PYR_G_DAMAGE[B_PYR_CURRENT_INDEX] = (B_PYR_G_DAMAGE[B_PYR_CURRENT_INDEX] + (0.55 x (Real((Intelligence of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX] (Include bonuses))))))
      • Set B_PYR_G_SPEED[B_PYR_CURRENT_INDEX] = B_PYR_CONFIG_SPEED[B_PYR_LVLOFABILITY]
      • Set B_PYR_G_TEMPLOC1 = (Position of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX])
      • Set B_PYR_G_TEMPLOC2 = (Position of B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX])
      • Set B_PYR_G_TEMP_ANGLE = (Angle from B_PYR_G_TEMPLOC1 to B_PYR_G_TEMPLOC2)
      • Unit - Create 1 B_PYR_CONFIG_UNIT_TYPE for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing B_PYR_G_TEMP_ANGLE degrees
      • Set B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX] = (Last created unit)
      • Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC1)
      • Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC2)
      • -------- IMPORTANT SYSTEM PART START --------
      • Set B_PYR_INDEX_CONTAINER[B_PYR_INDEX_LISTENER] = B_PYR_CURRENT_INDEX
      • Set B_PYR_INDEX_LISTENER = (B_PYR_INDEX_LISTENER + 1)



  • PYROCLASMLOOP
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • -------- Dynamic Loop --------
      • For each (Integer B_PYR_EXAMPLE_LOOP) from 0 to (B_PYR_INDEX_LISTENER - 1), do (Actions)
        • Loop - Actions
          • -------- Set the current index --------
          • Set B_PYR_CURRENT_INDEX = B_PYR_INDEX_CONTAINER[B_PYR_EXAMPLE_LOOP]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] Greater than 0
            • Then - Actions
              • Set B_PYR_G_TEMPLOC1 = (Position of B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX])
              • Set B_PYR_G_TEMPLOC2 = (Position of B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX])
              • Set B_PYR_CONFIG_CURRENT_DISTANCE = (Distance between B_PYR_G_TEMPLOC1 and B_PYR_G_TEMPLOC2)
              • Set B_PYR_G_TEMP_ANGLE = (Angle from B_PYR_G_TEMPLOC1 to B_PYR_G_TEMPLOC2)
              • Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC1)
              • Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC2)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • B_PYR_CONFIG_CURRENT_DISTANCE Greater than B_PYR_CONFIG_MIN_DISTANCE
                • Then - Actions
                  • Set B_PYR_G_TEMPLOC1 = (Position of B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX])
                  • Set B_PYR_G_TEMPLOC2 = (B_PYR_G_TEMPLOC1 offset by (0.03 x B_PYR_G_SPEED[B_PYR_CURRENT_INDEX]) towards B_PYR_G_TEMP_ANGLE degrees)
                  • Unit - Move B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX] instantly to B_PYR_G_TEMPLOC2, facing B_PYR_G_TEMP_ANGLE degrees
                  • Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC1)
                  • Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC2)
                • Else - Actions
                  • Unit - Cause B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX] to damage B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX], dealing B_PYR_G_DAMAGE[B_PYR_CURRENT_INDEX] damage of attack type Hero and damage type Magic
                  • Special Effect - Create a special effect attached to the origin of B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] using B_PYR_SPFX
                  • Special Effect - Destroy (Last created special effect)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] has buff B_BLAZE_CONFIG_BUFF) Equal to True
                    • Then - Actions
                      • Set B_PYR_G_TEMPLOC1 = (Position of B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX])
                      • Unit - Create 1 DUMMY CASTER for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing Default building facing degrees
                      • Unit - Add Blaze (Dummy) to (Last created unit)
                      • Unit - Order (Last created unit) to Undead Banshee - Curse B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX]
                      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                      • Set B_PYR_G_PICKED_UNITS = (Units within B_PYR_G_AOE[B_PYR_CURRENT_INDEX] of B_PYR_G_TEMPLOC1 matching ((((Matching unit) is A Hero) Equal to True) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (B_PYR_G_PICKED_UNITS is empty) Equal to False
                        • Then - Actions
                          • Set B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] = (Random unit from B_PYR_G_PICKED_UNITS)
                          • Set B_PYR_G_TEMPLOC2 = (Position of B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX])
                          • Set B_PYR_G_TEMP_ANGLE = (Angle from B_PYR_G_TEMPLOC1 to B_PYR_G_TEMPLOC2)
                          • Unit - Kill B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX]
                          • Unit - Create 1 B_PYR_CONFIG_UNIT_TYPE for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing B_PYR_G_TEMP_ANGLE degrees
                          • Set B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX] = (Last created unit)
                          • Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC2)
                          • Custom script: call DestroyGroup(udg_B_PYR_G_PICKED_UNITS)
                          • Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC1)
                          • Set B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] = (B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] - 1)
                        • Else - Actions
                          • Set B_PYR_G_TEMPLOC1 = (Position of B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX])
                          • Unit - Create 1 DUMMY CASTER for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing Default building facing degrees
                          • Unit - Add Blaze (Dummy) to (Last created unit)
                          • Unit - Order (Last created unit) to Undead Banshee - Curse B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX]
                          • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                          • Set B_PYR_G_PICKED_UNITS = (Units within B_PYR_G_AOE[B_PYR_CURRENT_INDEX] of B_PYR_G_TEMPLOC1 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belon
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (B_PYR_G_PICKED_UNITS is empty) Equal to False
                            • Then - Actions
                              • Set B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] = (Random unit from B_PYR_G_PICKED_UNITS)
                              • Set B_PYR_G_TEMPLOC2 = (Position of B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX])
                              • Set B_PYR_G_TEMP_ANGLE = (Angle from B_PYR_G_TEMPLOC1 to B_PYR_G_TEMPLOC2)
                              • Unit - Kill B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX]
                              • Unit - Create 1 B_PYR_CONFIG_UNIT_TYPE for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing B_PYR_G_TEMP_ANGLE degrees
                              • Set B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX] = (Last created unit)
                              • Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC2)
                              • Custom script: call DestroyGroup(udg_B_PYR_G_PICKED_UNITS)
                              • Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC1)
                              • Set B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] = (B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] - 1)
                            • Else - Actions
                              • Set B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] = 0
                    • Else - Actions
                      • Set B_PYR_G_TEMPLOC1 = (Position of B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX])
                      • Unit - Create 1 DUMMY CASTER for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing Default building facing degrees
                      • Unit - Add Blaze (Dummy) to (Last created unit)
                      • Unit - Order (Last created unit) to Undead Banshee - Curse B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX]
                      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                      • Set B_PYR_G_PICKED_UNITS = (Units within B_PYR_G_AOE[B_PYR_CURRENT_INDEX] of B_PYR_G_TEMPLOC1 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belon
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (B_PYR_G_PICKED_UNITS is empty) Equal to False
                        • Then - Actions
                          • Set B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] = (Random unit from B_PYR_G_PICKED_UNITS)
                          • Set B_PYR_G_TEMPLOC2 = (Position of B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX])
                          • Set B_PYR_G_TEMP_ANGLE = (Angle from B_PYR_G_TEMPLOC1 to B_PYR_G_TEMPLOC2)
                          • Unit - Kill B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX]
                          • Unit - Create 1 B_PYR_CONFIG_UNIT_TYPE for (Owner of B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX]) at B_PYR_G_TEMPLOC1 facing B_PYR_G_TEMP_ANGLE degrees
                          • Set B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX] = (Last created unit)
                          • Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC2)
                          • Custom script: call DestroyGroup(udg_B_PYR_G_PICKED_UNITS)
                          • Custom script: call RemoveLocation(udg_B_PYR_G_TEMPLOC1)
                          • Set B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] = (B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] - 1)
                        • Else - Actions
                          • Set B_PYR_G_BOUNCES[B_PYR_CURRENT_INDEX] = 0
            • Else - Actions
              • Unit - Kill B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX]
              • Set B_PYR_G_TRIGGER_UNIT[B_PYR_CURRENT_INDEX] = No unit
              • Set B_PYR_G_TARGET_UNIT[B_PYR_CURRENT_INDEX] = No unit
              • Set B_PYR_G_PROJECTILE[B_PYR_CURRENT_INDEX] = No unit
              • -------- IMPORTANT SYSTEM PART START --------
              • -------- Decrease the normal index container size --------
              • Set B_PYR_INDEX_LISTENER = (B_PYR_INDEX_LISTENER - 1)
              • -------- Exchange the data from the last index to the current index --------
              • Set B_PYR_INDEX_CONTAINER[B_PYR_EXAMPLE_LOOP] = B_PYR_INDEX_CONTAINER[B_PYR_INDEX_LISTENER]
              • -------- Add an index to the Recycle Container --------
              • Set B_PYR_RECYCLE_CONTAINER[B_PYR_RECYCLE_SIZE] = B_PYR_CURRENT_INDEX
              • -------- Recycle Container Index Size gets increased --------
              • Set B_PYR_RECYCLE_SIZE = (B_PYR_RECYCLE_SIZE + 1)
              • -------- Reset Loop --------
              • Set B_PYR_EXAMPLE_LOOP = (B_PYR_EXAMPLE_LOOP - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • B_PYR_INDEX_LISTENER Equal to 0
                • Then - Actions
                  • Trigger - Turn off PYROCLASMLOOP <gen>
                  • Skip remaining actions
                • Else - Actions
              • -------- IMPORTANT SYSTEM PART END --------





All spells are configurable. I was too lazy to post the config triggers here though XD

Credits go to RIOT for the awesome icons.

Keywords:
brand,lol,burn,fire,vengeance,pillar,sear,pyro,clasm,pyroclasm,league,of,legends
Contents

Brand Spell Pack [LOL] (Map)

Reviews
GUI Brand [LOL] Spell Pack 1.2 | Reviewed by Maker | 17.01.14 Concept[/COLOR]] The spells work well as a pack and they have nice synergy Copying spells from other games leaves little room for imagination an creativity Triggers[/COLOR]]...

Moderator

M

Moderator


GUI Brand [LOL] Spell Pack 1.2 | Reviewed by Maker | 17.01.14

[COLOR="gray"

[COLOR="gray"

[COLOR="gray"

[COLOR="gray"

[COLOR="gray"

Concept[/COLOR]]
126248-albums6177-picture66521.png
The spells work well as a pack and they have nice synergy
126248-albums6177-picture66523.png
Copying spells from other games leaves little room for imagination an creativity
Triggers[/COLOR]]
126248-albums6177-picture66521.png
  • The spelss are MUI and the coding is ok
126248-albums6177-picture66522.png
  • CONFLAGRATIONSTART trigger has a location leak
126248-albums6177-picture66523.png
  • You could use variables for dummy unit types
  • You could create less dummy units, one dummy can cast an
    ability on multiple units. Set movement speed, cast backswing and
    cast point to 0
  • You should share temporary variables between spells
  • You are setting PYR_G_TEMPLOC multiple times
Objects[/COLOR]]
126248-albums6177-picture66521.png
  • Pretty good stuff here
126248-albums6177-picture66523.png
  • Instead of multiple dummy unit types, consider using only one
    and attaching effects to it
  • The buff icon of Blaze should be the active version
  • Some follow through times could use a bit of adjustment
  • The learn tooltips have extra empty lines between level data
Effects[/COLOR]]
126248-albums6177-picture66521.png
Sear could use a casting sound
The effects and sounds do their job
Rating[/COLOR]]
CONCEPTTRIGGERSOBJECTSEFFECTSRATINGSTATUS
126248-albums6177-picture75358.jpg
126248-albums6177-picture75359.jpg
126248-albums6177-picture75358.jpg
126248-albums6177-picture75359.jpg
126248-albums6177-picture75359.jpg
APPROVED
 
Level 29
Joined
Oct 24, 2012
Messages
6,543
This is in your for each loop.
This should be avoided.

0 to (B_SEAR_INDEX_LISTENER - 1)

Change it to

1 to B_SEAR_INDEX_LISTENER

And increase the above before you add everything to the array.
Alternatively set the B_SEAR_INDEX_LISTENER - 1 to a variable before the for loop and use that.

Also you shouldn't capitalize all variables. Only constants should be capitalized. It makes it very hard to read.
 
Level 22
Joined
Sep 24, 2005
Messages
4,821
You can use the img tag to show images:
Code:
[plain][IMG]image address[/IMG][/plain]
you can upload the images on you Pictures & Album in your UserCP

Oh and please merge your post, it's against the rules to multi-post. Thanks.
 
Level 19
Joined
Mar 18, 2012
Messages
1,716
Use one permanent Dummy caster for each spell. Currently you create a huge amount of units while CreateUnit is a rather heavy operation.
Change the loop to --> 1 to B_SEAR_INDEX_LISTENER like deathismyfriend already mentioned.

Edit:
  • Set B_CON_LVL_OF_ABILITY = 0
  • Set B_CON_DAMAGE = 0.00
  • Set B_CON_DAMAGE = 0.00
You don't have to set these to 0. They will be reset on the next spellcast
 
Last edited:
Top