Help with a Spell!

T3rm1nat0r

New Member
Reaction score
23
Hi everyone, how do i make a spell like Ravange in dota? Where it impales all around you with an AoE of 450 and then it stuns for 2.15 seconds?

I'll give +rep to those who help! Thanx!
 

denmax

You can change this now in User CP.
Reaction score
155
I don't really play DotA. It is the ultimate of Leviathan, right?

I haven't seen it but through your description, I may possibly able to help you.

Actually, you could just get a Nova template and use Impale. Remove the missile and that should be done..

Or just get this ^_^

Of course, I could possibly be wrong about what you meant..

EDIT: Waa I forgot to set the level of the Massive Impale (hero) to 3 o_O.. You set it yourself, the Dummy Impale skill has 3 levels..

EDIT2: I've tested and the tooltip is wrong too and the stun and other stuff. YOu edit it yourself please? Thank You..
 

LurkerAspect

Now officially a Super Lurker
Reaction score
118
Heres an Idea!!!

Base it off thunder clap or war stomp, and change "Art - Target" to impale!
That way it stuns and deals damage! You can remove the caster art and change the settings
 

denmax

You can change this now in User CP.
Reaction score
155
No, actually, it creates 8 units to Impale around the Hero.

8 units = Dummy Units

Get it? ^_^

So this is basically an example of a Impale Nova..
 

vypur85

Hibernate
Reaction score
803
Heres an Idea!!!

Base it off thunder clap or war stomp, and change "Art - Target" to impale!
That way it stuns and deals damage! You can remove the caster art and change the settings
Dont think that'll work.


Just create dummy units at position of your hero and give them impale. Several dummies, that is. Order the dummies to impale a circular circumference point (or is it arc? not sure what it's called). The increase number of dummy is better. Maybe 30 degrees per impale. Not sure you've understood my explanation. I could show the trigger but im not too free now. :p (seems like an excuse to say im lazy :p)


But i only does it to 8 units?
What do you mean?
 

Kenny

Back for now.
Reaction score
202
This is one that i use in one of my maps, im not sure how good it actually is, seeing that im new at jass, but i was told its very similar to how dota does it.

JASS:
function Trig_Ravage_Conditions takes nothing returns boolean
	return GetSpellAbilityId( ) == 'RAWCODE OF HERO ABILITY'
endfunction

function Trig_Ravage_Actions takes nothing returns nothing
        local unit u = GetTriggerUnit( )
	local location l  = GetUnitLoc( u )
	local location o
	local integer A = 1
	local integer E = 16
	
	loop
		exitwhen A > E
		call CreateNUnitsAtLoc( 1, 'DUMMYUNIT', GetOwningPlayer( u ), l, GetUnitFacing( u ) )
                call UnitAddAbility( bj_lastCreatedUnit, 'RAWCODE OF UNIT ABILITY' )
		call SetUnitAbilityLevel( bj_lastCreatedUnit, 'RAWCODE OF UNIT ABILITY', GetUnitAbilityLevel( u, 'RAWCODE OF HERO ABILITY' ) )
		set o = PolarProjectionBJ( l, 100., ( 22.5 * I2R( A ) ) )
		call IssuePointOrderByIdLoc( bj_lastCreatedUnit, OrderId( "impale" ),o )
		call RemoveLocation( o )
		set A = A + 1
	endloop
	call RemoveLocation( l )
	
        set u = null
	set l = null 
        set o = null
endfunction

//===========================================================================
function InitTrig_Ravage takes nothing returns nothing
    set gg_trg_Ravage = CreateTrigger( )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Ravage, EVENT_PLAYER_UNIT_SPELL_FINISH )
    call TriggerAddCondition( gg_trg_Ravage, Condition( function Trig_Ravage_Conditions ) )
    call TriggerAddAction( gg_trg_Ravage, function Trig_Ravage_Actions )
endfunction


it works fine in my game, hope its some help. You could also put bj_lastCreatedUnit into a local. And you can change integer A to like 18 but then polarprojection would be 20 * I2R( A ) not 22.5, if u know what i mean. its just gotta equal 360 for a good circle :) so 16 * 22.5 = 360.

Oh yeh and i put EVENT_PLAYER_UNIT_SPELL_FINISH for my skill cause its channelling, so yer if u use it u might want to change it.
 

denmax

You can change this now in User CP.
Reaction score
155
This is one that i use in one of my maps, im not sure how good it actually is, seeing that im new at jass, but i was told its very similar to how dota does it.

JASS:
function Trig_Ravage_Conditions takes nothing returns boolean
	return GetSpellAbilityId( ) == 'RAWCODE OF HERO ABILITY'
endfunction

function Trig_Ravage_Actions takes nothing returns nothing
        local unit u = GetTriggerUnit( )
	local location l  = GetUnitLoc( u )
	local location o
	local integer A = 1
	local integer E = 16
	
	loop
		exitwhen A > E
		call CreateNUnitsAtLoc( 1, 'DUMMYUNIT', GetOwningPlayer( u ), l, GetUnitFacing( u ) )
                call UnitAddAbility( bj_lastCreatedUnit, 'RAWCODE OF UNIT ABILITY' )
		call SetUnitAbilityLevel( bj_lastCreatedUnit, 'RAWCODE OF UNIT ABILITY', GetUnitAbilityLevel( u, 'RAWCODE OF HERO ABILITY' ) )
		set o = PolarProjectionBJ( l, 100., ( 22.5 * I2R( A ) ) )
		call IssuePointOrderByIdLoc( bj_lastCreatedUnit, OrderId( "impale" ),o )
		call RemoveLocation( o )
		set A = A + 1
	endloop
	call RemoveLocation( l )
	
        set u = null
	set l = null 
        set o = null
endfunction

//===========================================================================
function InitTrig_Ravage takes nothing returns nothing
    set gg_trg_Ravage = CreateTrigger( )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Ravage, EVENT_PLAYER_UNIT_SPELL_FINISH )
    call TriggerAddCondition( gg_trg_Ravage, Condition( function Trig_Ravage_Conditions ) )
    call TriggerAddAction( gg_trg_Ravage, function Trig_Ravage_Actions )
endfunction


it works fine in my game, hope its some help. You could also put bj_lastCreatedUnit into a local. And you can change integer A to like 18 but then polarprojection would be 20 * I2R( A ) not 22.5, if u know what i mean. its just gotta equal 360 for a good circle :) so 16 * 22.5 = 360.

Oh yeh and i put EVENT_PLAYER_UNIT_SPELL_FINISH for my skill cause its challening, so yer if u use it u might want to change it.

I dun' know anything about JASS but is it possible to make "lastCreatedUnit"'s set to local variables?

It IS JASS so doesn't it mean that it can have more than 1 local variables than in GUI (but then it's global locals[?] o_O)
 

Arkan

Nobody rides for free
Reaction score
92
but i was told its very similar to how dota does it.
DotA isn't exactly known for its optimized code, I made this up quickly, haven't tested but it should work:

JASS:
function Trig_Ravage_Conditions takes nothing returns boolean
    return GetSpellAbilityId( ) == 'RAWCODE OF HERO ABILITY'
endfunction

function Trig_Ravage_Actions takes nothing returns nothing
    local unit u = GetTriggerUnit( )
    local unit dummy
    local player p = GetOwningPlayer(u)
    local real x = GetUnitX(u)
    local real y = GetUnitY(u)
    local real angle = 0
	
    loop
        exitwhen angle == 360.00
        set dummy = CreateUnit(p,'DUMMYUNIT',x,y,angle)
        call UnitAddAbility(dummy,'RAWCODE OF UNIT ABILITY' )
        call SetUnitAbilityLevel(dummy, 'RAWCODE OF UNIT ABILITY', GetUnitAbilityLevel( u, GetSpellAbilityId()) )
        call IssuePointOrder(dummy,"impale",x + CosBJ(angle)*100,y + SinBJ(angle)*100)
        call UnitApplyTimedLife(dummy,'BTLF',2)
        set angle = angle + 22.5
    endloop
	
    set u = null
    set dummy = null 
endfunction

//===========================================================================
function InitTrig_Ravage takes nothing returns nothing
    set gg_trg_Ravage = CreateTrigger( )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Ravage, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Ravage, Condition( function Trig_Ravage_Conditions ) )
    call TriggerAddAction( gg_trg_Ravage, function Trig_Ravage_Actions )
endfunction
 

Kenny

Back for now.
Reaction score
202
DotA isn't exactly known for its optimized code

Thats true, i was only told this, i haven't really seen any of DotA's codes but it is well known that they aren't very optimised.

JASS:
call IssuePointOrder(dummy,"impale",x + CosBJ(angle)*100,y + SinBJ(angle)*100)


I really should of changed my code, i havent really edited in a while, but that is much more efficient then mine, but seeing as it looks like you practically copied my code and optimised it i cant be bothered changing mine now.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top