# Push Ball v1.00

QuantumMatter
Push Ball

A wave of force that push enemies back and making them make a circle. Dealing 1 damage every 0.2 second in AOE of 500 range and dealing damage in AOE of 250.

Level 1 - 5 damage every 0.2 second (AOE 250).
Level 2 - 10 damage every 0.2 second (AOE 250).
Level 3 - 15 damage every 0.2 second (AOE 250).

======================================================

I wanted to make something with nice special effects and i think i did it...

======================================================

• Push Ball
• Events
• Unit - A unit Starts the effect of an ability
• Conditions
• (Ability being cast) Equal to Push Ball
• Actions
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• GB_Indexs[0] Equal to 0
• Then - Actions
• Trigger - Turn on Push Ball Loop <gen>
• Else - Actions
• Set GB_Indexs[0] = (GB_Indexs[0] + 1)
• Set GB_Indexs[1] = (GB_Indexs[1] + 1)
• -------- Setting Everything --------
• -------- --------------------------------------------------------------------------------- --------
• -------- Don't Change anything here --------
• -------- --------------------------------------------------------------------------------- --------
• Set GB_Caster[GB_Indexs[0]] = (Triggering unit)
• Set GB_Casting_Point[GB_Indexs[0]] = (Position of (Triggering unit))
• Set GB_Target_Point = (Target point of ability being cast)
• Set GB_Angle[GB_Indexs[0]] = (Angle from GB_Casting_Point[GB_Indexs[0]] to GB_Target_Point)
• Set GB_Distance[GB_Indexs[0]] = 1000.00
• Set GB_Reached_Distance[GB_Indexs[0]] = 0.00
• Set GB_Range[GB_Indexs[0]] = 0.00
• Set GB_Off_Boolean[GB_Indexs[0]] = True
• -------- --------------------------------------------------------------------------------- --------
• -------- Here you can change the Speed of the ball --------
• -------- --------------------------------------------------------------------------------- --------
• Set GB_Moving_Range[GB_Indexs[0]] = 20.00
• -------- --------------------------------------------------------------------------------- --------
• -------- This is where you change the Turning Speed (to make them do circle) --------
• -------- 0 = no circle just pushing --------
• -------- --------------------------------------------------------------------------------- --------
• Set GB_Turning_Rate[GB_Indexs[0]] = 60.00
• -------- --------------------------------------------------------------------------------- --------
• -------- This is for changing the Damage (this is a damage every 0.03 sec) --------
• -------- The 250 AOE is Multiplied by the Level... --------
• -------- --------------------------------------------------------------------------------- --------
• Set GB_Damage_250_AOE = 5.00
• Set GB_Damage_500_AOE = 1.00
• -------- --------------------------------------------------------------------------------- --------
• -------- This is for the special Effects --------
• -------- --------------------------------------------------------------------------------- --------
• Set GB_Special_Effect_Units = Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
• -------- --------------------------------------------------------------------------------- --------
• -------- This is the Knockback Speed --------
• -------- --------------------------------------------------------------------------------- --------
• Set GB_Knockback_Speed = 10.00
• -------- --------------------------------------------------------------------------------- --------
• -------- Don't change anything in the Push Ball Loop Trigger --------
• -------- --------------------------------------------------------------------------------- --------
• Custom script: call RemoveLocation(udg_GB_Target_Point)
• Push Ball Loop
• Events
• Time - Every 0.03 seconds of game time
• Conditions
• Actions
• For each (Integer GB_Indexs[2]) from 1 to GB_Indexs[0], do (Actions)
• Loop - Actions
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• GB_Off_Boolean[GB_Indexs[2]] Equal to True
• Then - Actions
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• GB_Reached_Distance[GB_Indexs[2]] Greater than or equal to GB_Distance[GB_Indexs[2]]
• Then - Actions
• Custom script: call RemoveLocation(udg_GB_Casting_Point[udg_GB_Indexs[2]])
• Set GB_Off_Boolean[GB_Indexs[2]] = False
• Set GB_Indexs[1] = (GB_Indexs[1] - 1)
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• GB_Indexs[1] Equal to 0
• Then - Actions
• Set GB_Indexs[0] = 0
• Trigger - Turn off (This trigger)
• Else - Actions
• Else - Actions
• Set GB_Range[GB_Indexs[2]] = (GB_Range[GB_Indexs[2]] + GB_Moving_Range[GB_Indexs[2]])
• Set GB_Moving_Point = (GB_Casting_Point[GB_Indexs[2]] offset by GB_Range[GB_Indexs[2]] towards GB_Angle[GB_Indexs[2]] degrees)
• -------- Special Effect of the Ball --------
• Special Effect - Create a special effect at GB_Moving_Point using GB_Special_Effect_Ball
• Special Effect - Destroy (Last created special effect)
• Set GB_Unit_Group = (Units within 500.00 of GB_Moving_Point matching ((((Matching unit) is alive) Equal to True) and ((((Owner of (Matching unit)) is an enemy of (Owner of GB_Caster[GB_Indexs[2]])) Equal to True) and (((Matching unit) is A structure) Equal to False))))
• Unit Group - Pick every unit in GB_Unit_Group and do (Actions)
• Loop - Actions
• -------- 500 AOE range damage --------
• Unit - Cause GB_Caster[GB_Indexs[2]] to damage (Picked unit), dealing GB_Damage_500_AOE damage of attack type Spells and damage type Normal
• -------- Setting everything to make move the units --------
• Set GB_Custom_Value = (Custom value of (Picked unit))
• Set GB_Unit[GB_Custom_Value] = (Picked unit)
• Set GB_Unit_Point[GB_Custom_Value] = (Position of GB_Unit[GB_Custom_Value])
• -------- Special Effect on the units --------
• Set GB_100 = (Random integer number between 1 and 100)
• If (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• GB_100 Less than or equal to 50
• Then - Actions
• Special Effect - Create a special effect at GB_Unit_Point[GB_Custom_Value] using GB_Special_Effect_Units
• Special Effect - Destroy (Last created special effect)
• Else - Actions
• Set GB_Unit_Angle[GB_Custom_Value] = (Angle from GB_Moving_Point to GB_Unit_Point[GB_Custom_Value])
• Set GB_Unit_Moving_Point[GB_Custom_Value] = (GB_Unit_Point[GB_Custom_Value] offset by GB_Knockback_Speed towards (GB_Unit_Angle[GB_Custom_Value] + GB_Turning_Rate[GB_Indexs[2]]) degrees)
• -------- Moving the units --------
• Unit - Move GB_Unit[GB_Custom_Value] instantly to GB_Unit_Moving_Point[GB_Custom_Value]
• -------- The Group that will recieve the 250 AOE range Damage --------
• Set GB_Unit_Group_2 = (Units within 250.00 of GB_Moving_Point matching ((((Matching unit) is alive) Equal to True) and ((((Owner of (Matching unit)) is an enemy of (Owner of GB_Caster[GB_Indexs[2]])) Equal to True) and (((Matching unit) is A structure) Equal to False))))
• Unit Group - Pick every unit in GB_Unit_Group_2 and do (Actions)
• Loop - Actions
• -------- Dealing the damage --------
• Unit - Cause GB_Caster[GB_Indexs[2]] to damage (Picked unit), dealing (GB_Damage_250_AOE x (Real((Level of Push Ball for GB_Caster[GB_Indexs[2]])))) damage of attack type Spells and damage type Normal
• -------- Setting the time --------
• Set GB_Reached_Distance[GB_Indexs[2]] = (GB_Moving_Range[GB_Indexs[2]] + GB_Reached_Distance[GB_Indexs[2]])
• -------- Removing the Leaks --------
• Custom script: call RemoveLocation(udg_GB_Unit_Moving_Point[udg_GB_Custom_Value])
• Custom script: call RemoveLocation(udg_GB_Unit_Point[udg_GB_Custom_Value])
• Custom script: call RemoveLocation(udg_GB_Moving_Point)
• Custom script: call DestroyGroup(udg_GB_Unit_Group)
• Custom script: call DestroyGroup(udg_GB_Unit_Group_2)
• Else - Actions
=================================================================

Version 0.2 Fixed the lag.

Version 0.4 Fixed the Building bug

Version 0.5 Fixed the ''enemy'' bug

Version 0.6 Better documentation and ezier to configure the spell

Version 1.0 I just found out why my MUI Indexing wasnt working... fixed it.. now its rly in MUI

Keywords:
Push Ball, Force, Mage, Magic, Spell, Special Effect, Gravity.
Contents

# Push Ball (Map)

Reviews
17:28, 27th Nov 2009 TriggerHappy: The push effect is a little early, though it's minor so this is approved.
Status
Not open for further replies.

M

#### Moderator

17:28, 27th Nov 2009
TriggerHappy:

The push effect is a little early, though it's minor so this is approved.

#### X-OMG-X

Level 21
The idea is cool and the coding seems fine too.
The moving distance should be a little bigger i think. Also, why do you make the move distance smaller when near the wave? Also i noticed a huge lag when it affacts more units. I think i tried it with around 10 units.

#### kola

Level 29
well.. the distance isnt smaller when they are near the wave.. just the circle is more little... and its to make it make more damage.. cuz if they just go out of the 250 AOE in like 0.01 sec... it wont do any damage...

its a Close range spell

the lag is maybe cuz of the mass effects... going to see if i can reduce that

Ok, i fixed it

Last edited:

#### baassee

Level 22
I really dislike using custom values but as you use it it shouldn't be a problem but for further notice you really need to documentat more. Else neat spell.

~Docu Master

#### kola

Level 29
ok.. i'll document it

Plz people that ''revivew'' the spell.. dont re-say me to document it... i'll do it... but im in a wc3 game for now... so later

#### baassee

Level 22
bah have no time to review like a moderator atm just went threw the code, haven't debug-played it yet...

#### Reaper2008

Level 12
Work on customization (use globals instead of just numbers for damage, duration, knockback etc...).

#### kola

Level 29
you want me to use more arrays?

the only place i dont use Arrays is for the damage no?

I think its simplier to not make an array for the damage... cuz when i was noob (maybe u think im still), when i was seeing all these arrays i was... WTF what is what... but i was changing the damage rly ez

God.. it was long.. i made the documentation for all the 5 spells i posted...

Last edited:

#### baassee

Level 22
he meant that you should make variables for damage, duration and knockback range and such in the start trigger so it will be easier to custom it for your needs

#### kola

Level 29
Oh oops.. i said Arrays?? sry... lol.. thats what i was talking about... (im re-starting making triggers... so.. i forgot that it was variables and that the arrays was the lil number..) but yeah... the only place i didnt use variables was for the damage... idk.. i prefer to see a number on the damage place.. i always found that ezier this way

#### baassee

Level 22
damage as it is usally the most valueable thing to first make into a variable after the casting unit

#### Cihparg

Level 15
Oh my, This spell is buggier than I expected! It does nothing to the enemies, only to the allies. Well, it damages the allies, but pushes the allies.
You actually have failed in the booleans!

#### kola

Level 29
lol.. this is the only bug.. but its becuz of my new update... by fixing a bug.. i made another... its a rly simple condition bug.... just gotta fix a condition and it will be ok.. gimme 5 mins...

and why did u think it would bug.. dont think im that noob...

Updated... should be good now... (i dont stop making lil unattention bugs... idk why!!!!!)

Version 0.6 rly rly Ezier to configure and a better documentation

Last edited:
Status
Not open for further replies.

Replies
28
Views
4K
Replies
17
Views
20K
Replies
11
Views
1K
Replies
12
Views
523
Replies
14
Views
11K