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

Spell Request

Status
Not open for further replies.
Level 5
Joined
Sep 21, 2012
Messages
68
Can someone help me with this.... It can be casted by multiple players at the same time....
A spell that when casted will create 3 arrows shot in 3 different lines (1 in the middle, 2 others in the left and right (30 degrees from the middle one)). The 3 arrows fly in their direction. When reached 2000 range, they will disappear. The 3 arrows also shot through the enemy units and only stop at 2000 range. Dealing agility*1.25 damage to the enemy that being shot through.
Note: My English is suck. Tks for reading my request.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
Since the arrow only stops moving when it hits structures, terrain, or reaches its max travel distance, an arrow can deal damage multiple times to a single unit. As you can probably imagine, having a 0.03 loop timer will kill the unit almost instantly since it will deal damage every loop iteration. I don't know any possible fixes for it right now other than making the arrow stop when it collides with a unit.

  • VY Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- CONFIG START --------
      • Set VY_Ability = Volley
      • Set VY_DummyUnit = Dummy
      • Set VY_MaxLevel = 3
      • -------- --------
      • Set VY_Damage[1] = 1.25
      • Set VY_Damage[2] = 1.25
      • Set VY_Damage[3] = 1.25
      • Set VY_MinimumHeight = 50.00
      • Set VY_TravelTime[1] = 1.00
      • Set VY_TravelTime[2] = 1.00
      • Set VY_TravelTime[3] = 1.00
      • Set VY_TravelDistance[1] = 1000.00
      • Set VY_TravelDistance[2] = 1000.00
      • Set VY_TravelDistance[3] = 1000.00
      • Set VY_AoE = 100.00
      • Set VY_ProjectileCount = 3
      • Set VY_AngleOffset = 30.00
      • Set VY_SpawnDistance = 75.00
      • -------- Special Effects --------
      • Set VY_SFXProjectile = Abilities\Weapons\MoonPriestessMissile\MoonPriestessMissile.mdl
      • Set VY_SFXProjectile_AP = chest
      • Set VY_SFXHit = Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
      • Set VY_SFXHit_AP = chest
      • Set VY_SFXDeath = Abilities\Weapons\MakuraMissile\MakuraMissile.mdl
      • -------- CONFIG END --------
      • -------- --------
      • Set VY_AttackType = Pierce
      • Set VY_DamageType = Normal
      • Set VY_PeriodicTimer = 0.03
      • Trigger - Add to VY Loop <gen> the event (Time - Every VY_PeriodicTimer seconds of game time)
      • For each (Integer VY_LoopInt) from 1 to VY_MaxLevel, do (Actions)
        • Loop - Actions
          • Set VY_MoveRate[VY_LoopInt] = (VY_TravelDistance[VY_LoopInt] / (VY_TravelTime[VY_LoopInt] / VY_PeriodicTimer))

  • VY Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to VY_Ability
    • Actions
      • Set VY_SpellCount = (VY_SpellCount + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • VY_SpellCount Equal to 1
        • Then - Actions
          • Trigger - Turn on VY Loop <gen>
        • Else - Actions
      • -------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • VY_RecycledSize Equal to 0
        • Then - Actions
          • Set VY_MaxIndex = (VY_MaxIndex + 1)
          • Set VY_Spell_ID = VY_MaxIndex
        • Else - Actions
          • Set VY_RecycledSize = (VY_RecycledSize - 1)
          • Set VY_Spell_ID = VY_RecycledStack[VY_RecycledSize]
      • Set VY_NodeNext[VY_Spell_ID] = 0
      • Set VY_NodeNext[VY_NodePrev[0]] = VY_Spell_ID
      • Set VY_NodePrev[VY_Spell_ID] = VY_NodePrev[0]
      • Set VY_NodePrev[0] = VY_Spell_ID
      • -------- --------
      • Set VY_Caster[VY_Spell_ID] = (Triggering unit)
      • Set VY_Owner[VY_Spell_ID] = (Triggering player)
      • Set VY_AbilityLvl[VY_Spell_ID] = (Level of VY_Ability for VY_Caster[VY_Spell_ID])
      • Set VY_Count[VY_Spell_ID] = VY_ProjectileCount
      • -------- --------
      • Set VY_TempReal = (Real((Agility of VY_Caster[VY_Spell_ID] (Include bonuses))))
      • Set VY_Agility[VY_Spell_ID] = (VY_TempReal x VY_Damage[VY_AbilityLvl[VY_Spell_ID]])
      • -------- --------
      • Custom script: if udg_VY_ProjectileGroup[udg_VY_Spell_ID] == null then
      • Custom script: set udg_VY_ProjectileGroup[udg_VY_Spell_ID] = CreateGroup()
      • Custom script: endif
      • -------- --------
      • Set VY_TempLoc = (Position of VY_Caster[VY_Spell_ID])
      • Set VY_CurrentLoc = (Target point of ability being cast)
      • Set VY_TempReal = (Angle from VY_TempLoc to VY_CurrentLoc)
      • Set VY_Angle = (VY_TempReal + VY_AngleOffset)
      • Custom script: call RemoveLocation(udg_VY_CurrentLoc)
      • For each (Integer VY_LoopInt) from 1 to VY_ProjectileCount, do (Actions)
        • Loop - Actions
          • Set VY_CurrentLoc = (VY_TempLoc offset by VY_SpawnDistance towards VY_Angle degrees)
          • Unit - Create 1 VY_DummyUnit for VY_Owner[VY_Spell_ID] at VY_CurrentLoc facing VY_Angle degrees
          • Set VY_Projectile = (Last created unit)
          • Set VY_Unit_ID = (Custom value of VY_Projectile)
          • -------- --------
          • Set VY_Direction[VY_Unit_ID] = VY_Angle
          • Set VY_DistanceTraveled[VY_Unit_ID] = 0.00
          • Unit Group - Add VY_Projectile to VY_ProjectileGroup[VY_Spell_ID]
          • -------- --------
          • Special Effect - Create a special effect attached to the VY_SFXProjectile_AP of VY_Projectile using VY_SFXProjectile
          • Set VY_ProjectileSFX[VY_Unit_ID] = (Last created special effect)
          • -------- --------
          • Set VY_Angle = (VY_Angle - VY_AngleOffset)
          • Custom script: call RemoveLocation(udg_VY_CurrentLoc)
          • -------- --------
      • Custom script: call RemoveLocation(udg_VY_TempLoc)

  • VY Loop
    • Events
    • Conditions
    • Actions
      • Set VY_Spell_ID = 0
      • For each (Integer VY_LoopInt) from 1 to VY_SpellCount, do (Actions)
        • Loop - Actions
          • Set VY_Spell_ID = VY_NodeNext[VY_Spell_ID]
          • Unit Group - Pick every unit in VY_ProjectileGroup[VY_Spell_ID] and do (Actions)
            • Loop - Actions
              • Custom script: local real x1
              • Custom script: local real y1
              • Custom script: local real x2
              • Custom script: local real y2
              • Custom script: local real angle
              • Set VY_Projectile = (Picked unit)
              • Set VY_Unit_ID = (Custom value of VY_Projectile)
              • -------- xy adjustment --------
              • Custom script: set angle = udg_VY_Direction[udg_VY_Unit_ID] * bj_DEGTORAD
              • Custom script: set x1 = GetUnitX(udg_VY_Projectile)
              • Custom script: set y1 = GetUnitY(udg_VY_Projectile)
              • Custom script: set x2 = x1 + udg_VY_MoveRate[udg_VY_AbilityLvl[udg_VY_Spell_ID]] * Cos(angle)
              • Custom script: set y2 = y1 + udg_VY_MoveRate[udg_VY_AbilityLvl[udg_VY_Spell_ID]] * Sin(angle)
              • Set VY_DistanceTraveled[VY_Unit_ID] = (VY_DistanceTraveled[VY_Unit_ID] + VY_MoveRate[VY_AbilityLvl[VY_Spell_ID]])
              • -------- checking if terrain is pathable --------
              • Custom script: set udg_CP_Point = Location(x2, y2)
              • Trigger - Run Check Walkability <gen> (ignoring conditions)
              • -------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • VY_DistanceTraveled[VY_Unit_ID] Greater than or equal to VY_TravelDistance[VY_AbilityLvl[VY_Spell_ID]]
                      • CP_PointIsWalkable Equal to False
                • Then - Actions
                  • Special Effect - Create a special effect at CP_Point using VY_SFXDeath
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Destroy VY_ProjectileSFX[VY_Unit_ID]
                  • Unit - Kill VY_Projectile
                  • Unit Group - Remove VY_Projectile from VY_ProjectileGroup[VY_Spell_ID]
                  • Set VY_Count[VY_Spell_ID] = (VY_Count[VY_Spell_ID] - 1)
                • Else - Actions
                  • Custom script: call SetUnitX(udg_VY_Projectile, x2)
                  • Custom script: call SetUnitY(udg_VY_Projectile, y2)
                  • -------- dealing damage to units around projectile --------
                  • Custom script: set bj_wantDestroyGroup = true
                  • Unit Group - Pick every unit in (Units within VY_AoE of CP_Point) and do (Actions)
                    • Loop - Actions
                      • Set VY_TempUnit = (Picked unit)
                      • Custom script: set udg_VY_TempReal = GetUnitFlyHeight(udg_VY_TempUnit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (VY_TempUnit is A structure) Equal to False
                          • (VY_TempUnit is alive) Equal to True
                          • (VY_TempUnit belongs to an enemy of VY_Owner[VY_Spell_ID]) Equal to True
                          • VY_TempReal Less than or equal to VY_MinimumHeight
                        • Then - Actions
                          • Unit - Cause VY_Caster[VY_Spell_ID] to damage VY_TempUnit, dealing VY_Agility[VY_Spell_ID] damage of attack type VY_AttackType and damage type VY_DamageType
                          • Special Effect - Create a special effect attached to the VY_SFXHit_AP of VY_TempUnit using VY_SFXHit
                          • Special Effect - Destroy (Last created special effect)
                        • Else - Actions
                          • -------- TempUnit did not pass filters; do not deal damage --------
              • Custom script: call RemoveLocation(udg_CP_Point)
          • -------- checking if spell instance has any projectiles left --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • VY_Count[VY_Spell_ID] Equal to 0
            • Then - Actions
              • Custom script: call DestroyGroup(udg_VY_ProjectileGroup[udg_VY_Spell_ID])
              • Custom script: set udg_VY_ProjectileGroup[udg_VY_Spell_ID] = null
              • -------- --------
              • Set VY_RecycledStack[VY_RecycledSize] = VY_Spell_ID
              • Set VY_RecycledSize = (VY_RecycledSize + 1)
              • Set VY_NodeNext[VY_NodePrev[VY_Spell_ID]] = VY_NodeNext[VY_Spell_ID]
              • Set VY_NodePrev[VY_NodeNext[VY_Spell_ID]] = VY_NodePrev[VY_Spell_ID]
              • -------- --------
              • Set VY_SpellCount = (VY_SpellCount - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • VY_SpellCount Equal to 0
                • Then - Actions
                  • Trigger - Turn off VY Loop <gen>
                • Else - Actions
            • Else - Actions
              • -------- spell instance still has some projectiles running; do not deindex --------

Requires:

Play around with the configurables and let me know what you think. I'll try to find the time to make any updates that you need.
 

Attachments

  • svpforever's Volley Request.w3x
    33.5 KB · Views: 60
Level 5
Joined
Sep 21, 2012
Messages
68
Hey! I notice that when I set the number of arrows to 5 then it shots 5 arrows but only 1 arrow in the left, 1 in the middle and 3 in the right..... Can you make it to be balanced between the arrows ? Like when I set it to 1/3/5/7 then it will create 0/1/2/3 arrows in each side..... I'm really appreciate if you can do that.... tks for the extra filter and sorry for my bad English ^^
 
Level 18
Joined
May 11, 2012
Messages
2,103
Since the arrow only stops moving when it hits structures, terrain, or reaches its max travel distance, an arrow can deal damage multiple times to a single unit. As you can probably imagine, having a 0.03 loop timer will kill the unit almost instantly since it will deal damage every loop iteration. I don't know any possible fixes for it right now other than making the arrow stop when it collides with a unit.

  • VY Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- CONFIG START --------
      • Set VY_Ability = Volley
      • Set VY_DummyUnit = Dummy
      • Set VY_MaxLevel = 3
      • -------- --------
      • Set VY_Damage[1] = 1.25
      • Set VY_Damage[2] = 1.25
      • Set VY_Damage[3] = 1.25
      • Set VY_MinimumHeight = 50.00
      • Set VY_TravelTime[1] = 1.00
      • Set VY_TravelTime[2] = 1.00
      • Set VY_TravelTime[3] = 1.00
      • Set VY_TravelDistance[1] = 1000.00
      • Set VY_TravelDistance[2] = 1000.00
      • Set VY_TravelDistance[3] = 1000.00
      • Set VY_AoE = 100.00
      • Set VY_ProjectileCount = 3
      • Set VY_AngleOffset = 30.00
      • Set VY_SpawnDistance = 75.00
      • -------- Special Effects --------
      • Set VY_SFXProjectile = Abilities\Weapons\MoonPriestessMissile\MoonPriestessMissile.mdl
      • Set VY_SFXProjectile_AP = chest
      • Set VY_SFXHit = Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
      • Set VY_SFXHit_AP = chest
      • Set VY_SFXDeath = Abilities\Weapons\MakuraMissile\MakuraMissile.mdl
      • -------- CONFIG END --------
      • -------- --------
      • Set VY_AttackType = Pierce
      • Set VY_DamageType = Normal
      • Set VY_PeriodicTimer = 0.03
      • Trigger - Add to VY Loop <gen> the event (Time - Every VY_PeriodicTimer seconds of game time)
      • For each (Integer VY_LoopInt) from 1 to VY_MaxLevel, do (Actions)
        • Loop - Actions
          • Set VY_MoveRate[VY_LoopInt] = (VY_TravelDistance[VY_LoopInt] / (VY_TravelTime[VY_LoopInt] / VY_PeriodicTimer))

  • VY Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to VY_Ability
    • Actions
      • Set VY_SpellCount = (VY_SpellCount + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • VY_SpellCount Equal to 1
        • Then - Actions
          • Trigger - Turn on VY Loop <gen>
        • Else - Actions
      • -------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • VY_RecycledSize Equal to 0
        • Then - Actions
          • Set VY_MaxIndex = (VY_MaxIndex + 1)
          • Set VY_Spell_ID = VY_MaxIndex
        • Else - Actions
          • Set VY_RecycledSize = (VY_RecycledSize - 1)
          • Set VY_Spell_ID = VY_RecycledStack[VY_RecycledSize]
      • Set VY_NodeNext[VY_Spell_ID] = 0
      • Set VY_NodeNext[VY_NodePrev[0]] = VY_Spell_ID
      • Set VY_NodePrev[VY_Spell_ID] = VY_NodePrev[0]
      • Set VY_NodePrev[0] = VY_Spell_ID
      • -------- --------
      • Set VY_Caster[VY_Spell_ID] = (Triggering unit)
      • Set VY_Owner[VY_Spell_ID] = (Triggering player)
      • Set VY_AbilityLvl[VY_Spell_ID] = (Level of VY_Ability for VY_Caster[VY_Spell_ID])
      • Set VY_Count[VY_Spell_ID] = VY_ProjectileCount
      • -------- --------
      • Set VY_TempReal = (Real((Agility of VY_Caster[VY_Spell_ID] (Include bonuses))))
      • Set VY_Agility[VY_Spell_ID] = (VY_TempReal x VY_Damage[VY_AbilityLvl[VY_Spell_ID]])
      • -------- --------
      • Custom script: if udg_VY_ProjectileGroup[udg_VY_Spell_ID] == null then
      • Custom script: set udg_VY_ProjectileGroup[udg_VY_Spell_ID] = CreateGroup()
      • Custom script: endif
      • -------- --------
      • Set VY_TempLoc = (Position of VY_Caster[VY_Spell_ID])
      • Set VY_CurrentLoc = (Target point of ability being cast)
      • Set VY_TempReal = (Angle from VY_TempLoc to VY_CurrentLoc)
      • Set VY_Angle = (VY_TempReal + VY_AngleOffset)
      • Custom script: call RemoveLocation(udg_VY_CurrentLoc)
      • For each (Integer VY_LoopInt) from 1 to VY_ProjectileCount, do (Actions)
        • Loop - Actions
          • Set VY_CurrentLoc = (VY_TempLoc offset by VY_SpawnDistance towards VY_Angle degrees)
          • Unit - Create 1 VY_DummyUnit for VY_Owner[VY_Spell_ID] at VY_CurrentLoc facing VY_Angle degrees
          • Set VY_Projectile = (Last created unit)
          • Set VY_Unit_ID = (Custom value of VY_Projectile)
          • -------- --------
          • Set VY_Direction[VY_Unit_ID] = VY_Angle
          • Set VY_DistanceTraveled[VY_Unit_ID] = 0.00
          • Unit Group - Add VY_Projectile to VY_ProjectileGroup[VY_Spell_ID]
          • -------- --------
          • Special Effect - Create a special effect attached to the VY_SFXProjectile_AP of VY_Projectile using VY_SFXProjectile
          • Set VY_ProjectileSFX[VY_Unit_ID] = (Last created special effect)
          • -------- --------
          • Set VY_Angle = (VY_Angle - VY_AngleOffset)
          • Custom script: call RemoveLocation(udg_VY_CurrentLoc)
          • -------- --------
      • Custom script: call RemoveLocation(udg_VY_TempLoc)

  • VY Loop
    • Events
    • Conditions
    • Actions
      • Set VY_Spell_ID = 0
      • For each (Integer VY_LoopInt) from 1 to VY_SpellCount, do (Actions)
        • Loop - Actions
          • Set VY_Spell_ID = VY_NodeNext[VY_Spell_ID]
          • Unit Group - Pick every unit in VY_ProjectileGroup[VY_Spell_ID] and do (Actions)
            • Loop - Actions
              • Custom script: local real x1
              • Custom script: local real y1
              • Custom script: local real x2
              • Custom script: local real y2
              • Custom script: local real angle
              • Set VY_Projectile = (Picked unit)
              • Set VY_Unit_ID = (Custom value of VY_Projectile)
              • -------- xy adjustment --------
              • Custom script: set angle = udg_VY_Direction[udg_VY_Unit_ID] * bj_DEGTORAD
              • Custom script: set x1 = GetUnitX(udg_VY_Projectile)
              • Custom script: set y1 = GetUnitY(udg_VY_Projectile)
              • Custom script: set x2 = x1 + udg_VY_MoveRate[udg_VY_AbilityLvl[udg_VY_Spell_ID]] * Cos(angle)
              • Custom script: set y2 = y1 + udg_VY_MoveRate[udg_VY_AbilityLvl[udg_VY_Spell_ID]] * Sin(angle)
              • Set VY_DistanceTraveled[VY_Unit_ID] = (VY_DistanceTraveled[VY_Unit_ID] + VY_MoveRate[VY_AbilityLvl[VY_Spell_ID]])
              • -------- checking if terrain is pathable --------
              • Custom script: set udg_CP_Point = Location(x2, y2)
              • Trigger - Run Check Walkability <gen> (ignoring conditions)
              • -------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • VY_DistanceTraveled[VY_Unit_ID] Greater than or equal to VY_TravelDistance[VY_AbilityLvl[VY_Spell_ID]]
                      • CP_PointIsWalkable Equal to False
                • Then - Actions
                  • Special Effect - Create a special effect at CP_Point using VY_SFXDeath
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Destroy VY_ProjectileSFX[VY_Unit_ID]
                  • Unit - Kill VY_Projectile
                  • Unit Group - Remove VY_Projectile from VY_ProjectileGroup[VY_Spell_ID]
                  • Set VY_Count[VY_Spell_ID] = (VY_Count[VY_Spell_ID] - 1)
                • Else - Actions
                  • Custom script: call SetUnitX(udg_VY_Projectile, x2)
                  • Custom script: call SetUnitY(udg_VY_Projectile, y2)
                  • -------- dealing damage to units around projectile --------
                  • Custom script: set bj_wantDestroyGroup = true
                  • Unit Group - Pick every unit in (Units within VY_AoE of CP_Point) and do (Actions)
                    • Loop - Actions
                      • Set VY_TempUnit = (Picked unit)
                      • Custom script: set udg_VY_TempReal = GetUnitFlyHeight(udg_VY_TempUnit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (VY_TempUnit is A structure) Equal to False
                          • (VY_TempUnit is alive) Equal to True
                          • (VY_TempUnit belongs to an enemy of VY_Owner[VY_Spell_ID]) Equal to True
                          • VY_TempReal Less than or equal to VY_MinimumHeight
                        • Then - Actions
                          • Unit - Cause VY_Caster[VY_Spell_ID] to damage VY_TempUnit, dealing VY_Agility[VY_Spell_ID] damage of attack type VY_AttackType and damage type VY_DamageType
                          • Special Effect - Create a special effect attached to the VY_SFXHit_AP of VY_TempUnit using VY_SFXHit
                          • Special Effect - Destroy (Last created special effect)
                        • Else - Actions
                          • -------- TempUnit did not pass filters; do not deal damage --------
              • Custom script: call RemoveLocation(udg_CP_Point)
          • -------- checking if spell instance has any projectiles left --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • VY_Count[VY_Spell_ID] Equal to 0
            • Then - Actions
              • Custom script: call DestroyGroup(udg_VY_ProjectileGroup[udg_VY_Spell_ID])
              • Custom script: set udg_VY_ProjectileGroup[udg_VY_Spell_ID] = null
              • -------- --------
              • Set VY_RecycledStack[VY_RecycledSize] = VY_Spell_ID
              • Set VY_RecycledSize = (VY_RecycledSize + 1)
              • Set VY_NodeNext[VY_NodePrev[VY_Spell_ID]] = VY_NodeNext[VY_Spell_ID]
              • Set VY_NodePrev[VY_NodeNext[VY_Spell_ID]] = VY_NodePrev[VY_Spell_ID]
              • -------- --------
              • Set VY_SpellCount = (VY_SpellCount - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • VY_SpellCount Equal to 0
                • Then - Actions
                  • Trigger - Turn off VY Loop <gen>
                • Else - Actions
            • Else - Actions
              • -------- spell instance still has some projectiles running; do not deindex --------

Requires:

Play around with the configurables and let me know what you think. I'll try to find the time to make any updates that you need.

  • Custom script: set udg_SpellUnitGroup = CreateGroup()
  • Unit Group - Pick every unit in (blablablablabla) and do (Actions)
    • Loop - Actions
      • Set TempUnit = (Picked unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (TempUnit is in SpellUnitGroup) Not Equal to True
        • Then - Actions
          • Unit - Deal Damage
          • Unit Group - Add TempUnit to SpellUnitGroup
        • Else - Actions
Basically how you avoid the problem you have. This is how I do it.
Rough example of how to do it.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
  • Basically how you avoid the problem you have. This is how I do it.
  • Rough example of how to do it.[/QUOTE]
  • That would make it so that they don't take damage from any spell instance at all. The spell creates "3" arrows, so that would be a horrible solution. I guess what I could do is create a unit group specific to a dummy unit's custom value, but that's too much work for such a small mechanic.
  • [quote="svpforever, post: 2817538"]Hey! I notice that when I set the number of arrows to 5 then it shots 5 arrows but only 1 arrow in the left, 1 in the middle and 3 in the right..... Can you make it to be balanced between the arrows ?[/QUOTE]
  • Your original request only stated 3, so that's why it does that. I'm not really in the mood to work on that spell again, so hopefully you can find someone else to add the fix you need.
 
Status
Not open for further replies.
Top