Komaqtion
You can change this now in User CP.
- Reaction score
- 469
Hi !
I was just making an everyday custom shockwave spell, where a dummy slides over a set distance damaging all units in it's path, and I would believe, with every inch of experience I have, that this would be easily done, and that my simple code would do the job of at least moving the missile...
Here it is:
Now, but only small problem here is that, the dummy itself is moving as I've checked that with some debug messages, but the sfx is staying at the caster's feet (?!), any ideas to why this would happen ? :S
And yes, the dummy has the dummy.mdx model, and I've even tried to create a new map with this trigger and a whole bunch of systems and it still won't work...
I was just making an everyday custom shockwave spell, where a dummy slides over a set distance damaging all units in it's path, and I would believe, with every inch of experience I have, that this would be easily done, and that my simple code would do the job of at least moving the missile...
Here it is:
JASS:
scope Shockwave initializer Init // requires T32
globals
private constant integer DUMMY_ID = 039;1337039;
private constant integer SPELL_ID = 039;wave039;
private constant string SFX_PATH = "Abilities\\Spells\\Undead\\Possession\\PossessionMissile.mdl"
private constant string ATTACH_POINT = "chest"
private constant real MISSILE_SPEED = 250.
endglobals
private constant function SpellDistance takes integer lvl returns real
return lvl * 200. + 250.
endfunction
private function SpellDamage takes integer lvl returns real
return 75. + 25. * Pow( 2., lvl - 1. )
endfunction
native UnitAlive takes unit id returns boolean
private struct MissileData
unit missileCaster = null
unit missileDummy = null
player casterOwner = null
real missileAngle = 0.
real missileSpeed = MISSILE_SPEED * T32_PERIOD
real distanceTraveled = 0.
real distanceLeft = 0.
real missileX = 0.
real missileY = 0.
real targetX = 0.
real targetY = 0.
real missileDmg
private effect missileSFX = null
private group missileDamaged = CreateGroup()
static method create takes unit u, real tx, real ty returns thistype
local thistype this = thistype.allocate()
local real dx
local real dy
set missileCaster = u
set casterOwner = GetOwningPlayer( u )
set missileX = GetUnitX( u )
set missileY = GetUnitY( u )
set targetX = tx
set targetY = ty
set dx = tx - missileX
set dy = ty - missileY
set missileAngle = Atan2( dy, dx )
set missileDummy = CreateUnit( casterOwner, DUMMY_ID, missileX, missileY, missileAngle )
set missileSFX = AddSpecialEffectTarget( SFX_PATH, missileDummy, ATTACH_POINT )
set distanceLeft = SpellDistance( GetUnitAbilityLevel( u, SPELL_ID ) )
set missileDmg = SpellDamage( GetUnitAbilityLevel( u, SPELL_ID ) )
call startPeriodic()
return this
endmethod
private method periodic takes nothing returns nothing
local real newx = missileX + missileSpeed * Cos( missileAngle )
local real newy = missileY + missileSpeed * Sin( missileAngle )
call SetUnitX( missileDummy, newx )
call SetUnitY( missileDummy, newy )
set missileX = newx
set missileY = newy
endmethod
implement T32x
endstruct
private function Conditions takes nothing returns boolean
local unit u
local unit t
local real x
local real y
local real tx
local real ty
local real dx
local real dy
local MissileData m
if GetSpellAbilityId() == SPELL_ID then
set u = GetTriggerUnit()
set t = GetSpellTargetUnit()
set x = GetUnitX( u )
set y = GetUnitY( u )
if t == null then
set tx = GetSpellTargetX()
set ty = GetSpellTargetY()
else
set tx = GetUnitX( t )
set ty = GetUnitY( t )
endif
set dx = tx - x
set dy = ty - y
set m = MissileData.create( u, tx, ty )
endif
return false
endfunction
private function Init takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( t, Condition( function Conditions ) )
endfunction
endscope
Now, but only small problem here is that, the dummy itself is moving as I've checked that with some debug messages, but the sfx is staying at the caster's feet (?!), any ideas to why this would happen ? :S
And yes, the dummy has the dummy.mdx model, and I've even tried to create a new map with this trigger and a whole bunch of systems and it still won't work...