Spell Help - Knockback

Battlemapsta

I am the Conduit of Change
Reaction score
101
I am working on a map right now and need some help. I want to make an abiltity that does damage and knocks the target back for a long range. How can I make the unit be knocked back from the spell?

Is there also a nonjass way to make it since I am clueless in it.

Also which general spell is good for doing the damage? I was thinking firebolt with very very low stun duration like .001

Thanks in advance
 
I

IKilledKEnny

Guest
Code:
Untitled Trigger 001
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to <<Ability>>
    Actions
        Set PointVariable = ((Position of (Target unit of ability being cast)) offset by <<Integer>> towards (Facing of (Casting unit)) degrees)
        Unit - Move (Target unit of ability being cast) instantly to PointVariable
 

uberfoop

~=Admiral Stukov=~
Reaction score
177
Quick knockback I just threw together:
Obviously you need the kattanna system in yer map for it:

Code:
function KnockbackSlide takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer steps = GetHandleInt(t,"steps")
local unit target = GetHandleUnit(t,"target")
local location l = GetUnitLoc(target)
local location ll = PolarProjectionBJ(l,GetHandleReal(t,"dist"),GetHandleReal(t,"angle"))
call SetUnitPositionLoc(target,ll)
call RemoveLocation(l)
call RemoveLocation(ll)
set l = null
set ll = null
set target = null
if ( steps <= 1 ) then
call FlushHandleLocals(t)
call DestroyTimer(t)
return
endif
call SetHandleInt(t, "steps", steps-1)
endfunction

function SimpleKnockback takes unit target, real interval, real dist, real duration, real angle, boolean collision returns nothing
local timer t = CreateTimer()
local integer time = R2I(duration)
local unit targett = target
call SetHandleInt(t,"steps", R2I(duration/interval))
call SetHandleHandle(t,"target",target)
call SetHandleReal(t,"dist",dist)
call SetHandleReal(t,"angle",angle)
if collision == false then
call SetUnitPathing(target,false)
endif
call TimerStart(t,interval,true,function KnockbackSlide)
call PolledWait(time)
set t = null
if collision == false then
call SetUnitPathing(target,true)
endif
set targett = null
endfunction

the parameters are as follows:
unit being knockbacked, movement interval, distance per interval, total duration, angle of knockback, true/false for whether you want unit to still have collision or not.
 

Battlemapsta

I am the Conduit of Change
Reaction score
101
Thanks for the help guys :D I will test IKilledEnny's idea first since I suck at triggers :D and if it won't work I'll go with uberfoop's trigger. I'll reply the results
 
M

Mythic Fr0st

Guest
Or the harder GUI way
Variables:
Knockback_Unit, unit, array 1
Stop, boolean, array 1,
X, integer, no array
IA, integer, no array
Loc, point, array 1
Exitwhen_Loc, point, array 1


Code:
    Events
        Time - Every 0.03 seconds
    Conditions
    Actions
        For each Integer A from 1 to X do MULTIPLE Actions
            Loop - Actions
                If / Then / Else, Multiple Functions
                    If - Conditions
                            Knockback_Unit[Integer A] is alive equal to true
                            Stop[Integer A] equal to false
                    Then - Actions
                                  Set Loc[0] = Position of Knockback_Unit[Integer A]
                                  Set Loc[1] = Loc[0] offset by 12 towards facing of Knockback_Unit[Integer A]
                                  Set IA = Integer A
                                  Unit - Move instantly Knockback_Unit[Integer A] to Loc[1]
                                  If / Then / Else, Multiple Functions
                                      If - Conditions
                                            Distance Between Loc[1] and Exitwhen_Loc[Integer A] less than or equal to 50
                                      Then - Actions
                                                    Set Stop[Integer A] = true
                                                    Unit - Unpause Knockback_Unit[Integer A]
                                      Else - Actions
                                  Custom script:   call RemoveLocation(udg_Loc[1])
                                  Custom script:   call RemoveLocation(udg_Loc[0])
                                  Custom script:   call RemoveLocation(udg_Exitwhen_Loc[udg_IA]
                     Else - Actions

NOTE the Custom script: actions, are not in the Else - Actions of the loop!
(DO NOT PUT THEM IN THE Else - Actions)

Code:
    Events
        Unit - A unit begins casting an ability
    Conditions Ability being cast equal to knockknockwhosthere
    Actions
        Set Knockback_Unit[X] = target unit of ability being cast
        Set Loc[2] = Position of Target Unit Of Ability Being Cast
        Set Exitwhen_Loc[X] = Loc[2] offset by 600 towards facing of Knockback_Unit[X] - Facing of Casting Unit
        Unit - Pause Knockback_Unit[X]
        Set X = X + 1

I not sure if it will work

PS (Does anyone notice I hand type all my code O_O?)
 

lh2705

Just another Helper
Reaction score
111
Yeah, I do..
Battlemapsta, You can check out the spells section. I made a passive version, maybe you can tweak it to become an active spell..
 

Battlemapsta

I am the Conduit of Change
Reaction score
101
Yeah, I do..
Battlemapsta, You can check out the spells section. I made a passive version, maybe you can tweak it to become an active spell..


Sorry I didn't reply but ih2705 thanks so much for your trigger :D. I decided to turn it passive while thinking a lot and your trigger works perfectly with my unit.

+rep
 

The Helper

Necromancy Power over 9000
Staff member
Reaction score
1,688
This thread is showing up as viewed all the time so bumping for great justice!
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top