Slide spell question

H

H5N1

Guest
I've created a slide spell for a Dire Mammoth model unit. I want the Mammoth to appear as though it is running during the spell. Is there a way I can get the model to play the Walk Fast animation during the spell? All it does right now is appear as though he is sliding on ice. Here is my spell so far:

Code:
function Trig_Icecrown_Snowplow_Conditions takes nothing returns boolean
	return GetSpellAbilityId() == 'A007'
endfunction

function GetAoe takes unit u returns real
	if UnitHasBuffBJ( u, 'B000' ) == true then
	 return 175.00
	else
	 return 125.00
	endif
endfunction

function GetStep takes nothing returns real
	return 20.00
endfunction

function Damage takes unit u returns real
	return (20.00 * (GetUnitAbilityLevel(u, 'A007')*0.25+.50))
endfunction

function Snowplow takes nothing returns nothing
local timer snowplow = GetExpiredTimer()
local unit trig = H2U(GetHandleHandle( snowplow, "trig" ))
local real dist = GetHandleReal( snowplow, "dist" )
local real N = GetHandleReal( snowplow, "N" )
local real angle = GetHandleReal( snowplow, "angle" )
local real AoE = GetAoe(trig)
local real damage = Damage(trig)
local group g = CreateGroup()
local group g1 = CreateGroup()
local unit u

//add all units into group g
call GroupAddUnit( g, trig )

set g1 = GetUnitsInRangeOfLocAll( AoE, PolarProjectionBJ( GetUnitLoc(trig), 60, angle ) )
loop
  set u = FirstOfGroup(g1)
  exitwhen u == null
  call GroupRemoveUnit( g1, u )
 if IsUnitEnemy( u, GetOwningPlayer(trig) ) == true then
  call GroupAddUnit( g, u )
 endif
endloop

//move units
if ((N <= dist) and (not (IsUnitType(trig,UNIT_TYPE_DEAD)))) then

set N = N + GetStep()
call SetHandleReal (snowplow, "N", N)

loop
  set u = FirstOfGroup(g)
  exitwhen u == null
  call GroupRemoveUnit( g, u )
  call SetUnitPositionLoc( u, PolarProjectionBJ(GetUnitLoc(u), GetStep(), angle))
 if u != trig then
  call UnitDamageTargetBJ( trig, u, damage, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
 endif
endloop

else  
  call PauseTimer(snowplow)		
  call PauseUnit( trig, false )
  call ResetUnitAnimation( trig )				
  call SetUnitPathing( trig, true )
  set trig = null		
  call FlushHandleLocals(snowplow)
  call DestroyTimer(snowplow) 
endif

endfunction

function Trig_Icecrown_Snowplow_Actions takes nothing returns nothing

local unit trig = GetTriggerUnit()
local location p = GetSpellTargetLoc()
local real angle = AngleBetweenPoints( GetUnitLoc(trig), p )
local real dist = DistanceBetweenPoints( GetUnitLoc(trig), p)
local timer snowplow = CreateTimer()

call PauseUnit( trig, true )
call SetUnitAnimation( trig, "walk fast" )
call SetUnitPathing( trig, false )
	
call SetHandleHandle(snowplow, "trig", trig)
call SetHandleReal(snowplow, "angle", angle)
call SetHandleReal(snowplow, "dist", dist)
call TimerStart(snowplow, 0.05, true, function Snowplow)

endfunction

//===========================================================================
function InitTrig_Icecrown_Snowplow takes nothing returns nothing
	set gg_trg_Icecrown_Snowplow = CreateTrigger(  )
	call TriggerRegisterAnyUnitEventBJ( gg_trg_Icecrown_Snowplow, EVENT_PLAYER_UNIT_SPELL_EFFECT )
	call TriggerAddCondition( gg_trg_Icecrown_Snowplow, Condition( function Trig_Icecrown_Snowplow_Conditions ) )
	call TriggerAddAction( gg_trg_Icecrown_Snowplow, function Trig_Icecrown_Snowplow_Actions )
endfunction
 
T

Trenidor

Guest
Why want it to slide when you can have it actually run ;) lol

Anyway, if you're still content, try using a trigger:

Animation - Play (mamoth)'s run animation

I'm not sure if that'll work per say as I haven't tried it with your code, but it wouldn't hurt to try it.
 
H

H5N1

Guest
I want it to slide because I want him to move in a straight line and not deviate from that path. The only way to do that with a move command is to give him locust which also makes him unselectable to other players (invulnerable), which is not what I want. I've tried telling it to play the animation, I have that line in there, but for some reason it does not work.
 

emjlr3

Change can be a good thing
Reaction score
395
Code:
native          SetUnitAnimationByIndex     takes unit whichUnit, integer whichAnimation returns nothing

find ur models walk animation ID and use that, this forces animations through movement
 
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