SineCosine
I'm still looking for my Tangent
- Reaction score
- 77
[EDIT]
Ouh.. EFF EFF EFF
I just figured it out -___-
Struct Name: Damage
Group Name: Damage
Result: Error
Okay, fixed it.
[Obsolete message below]
That's weird, I've always done this without errors..
But now..
set Damage.data = d
That gives me errors..
I've marked the part using a comment..
This is the full struct (Not completed, though)
Ouh.. EFF EFF EFF
I just figured it out -___-
Struct Name: Damage
Group Name: Damage
Result: Error
Okay, fixed it.
[Obsolete message below]
That's weird, I've always done this without errors..
But now..
set Damage.data = d
That gives me errors..
I've marked the part using a comment..
JASS:
private method periodic takes nothing returns nothing
local Damage d = this
local real x
local real y
local integer i = 1
if d.ticks < FlyTick then
set x = GetUnitX(d.Enemy) + FlyPT * Cos(d.Facer)
set y = GetUnitY(d.Enemy) + FlyPT * Sin(d.Facer)
if IsPointInRegion(r, x, y) == true then
set d.Ex = x
set d.Ey = y
call SetUnitPosition(d.Enemy, d.Ex, d.Ey)
call SetUnitFacing(d.Enemy, d.Facer * bj_RADTODEG)
endif
set Damage.data = d //This is the error part
call GroupEnumUnitsInRange(d.TBDamage, d.Ex, d.Ey, ProjectileAoE, function Damage.Grouping)
loop
exitwhen i > d.EnAmt
set x = GetUnitX(d.En<i>) + FlyPT * Cos(d.Facer)
set y = GetUnitY(d.En<i>) + FlyPT * Sin(d.Facer)
if IsPointInRegion(r, x, y) == true then
call SetUnitPosition(d.En<i>, x, y)
endif
set i = i + 1
endloop
set d.ticks = d.ticks + 1
else
call d.stopPeriodic()
call d.destroy()
endif
endmethod
implement T32x
</i></i></i>
This is the full struct (Not completed, though)
JASS:
struct Damage
private static Damage data = 0
player playcast
unit caster
unit Enemy
real Cx
real Cy
real Radian
real Ex
real Ey
real dist
real Facer
integer ticks
real cHP
group TBDamage
group Damage
//Exclusive
unit array En[300]
integer EnAmt
static method Grouping takes nothing returns boolean
local Damage d = Damage.data
local unit u = GetFilterUnit()
if IsUnitEnemy(u, d.playcast) == true and GetUnitRace(u) == RACE_ORC and IsUnitInGroup(u, d.Damage) == false and GetWidgetLife(u) > 0 then
set d.EnAmt = d.EnAmt + 1
set d.En[d.EnAmt] = u
call GroupAddUnit(d.Damage, u)
endif
set u = null
return false
endmethod
private method periodic takes nothing returns nothing
local Damage d = this
local real x
local real y
local integer i = 1
if d.ticks < FlyTick then
set x = GetUnitX(d.Enemy) + FlyPT * Cos(d.Facer)
set y = GetUnitY(d.Enemy) + FlyPT * Sin(d.Facer)
if IsPointInRegion(r, x, y) == true then
set d.Ex = x
set d.Ey = y
call SetUnitPosition(d.Enemy, d.Ex, d.Ey)
call SetUnitFacing(d.Enemy, d.Facer * bj_RADTODEG)
endif
set Damage.data = d
call GroupEnumUnitsInRange(d.TBDamage, d.Ex, d.Ey, ProjectileAoE, function Damage.Grouping)
loop
exitwhen i > d.EnAmt
set x = GetUnitX(d.En<i>) + FlyPT * Cos(d.Facer)
set y = GetUnitY(d.En<i>) + FlyPT * Sin(d.Facer)
if IsPointInRegion(r, x, y) == true then
call SetUnitPosition(d.En<i>, x, y)
endif
set i = i + 1
endloop
set d.ticks = d.ticks + 1
else
call d.stopPeriodic()
call d.destroy()
endif
endmethod
implement T32x
static method Projectile takes unit cst returns nothing
local Damage d = Damage.allocate()
local Pick p = GetUnitUserData(cst)
local real mHP = GetUnitState(cst, UNIT_STATE_MAX_LIFE)
local real nHP = GetWidgetLife(cst)
set d.playcast = p.playcast
set d.caster = p.caster
set d.Enemy = p.Enemy
set d.Cx = GetUnitX(d.caster)
set d.Cy = GetUnitY(d.caster)
set d.Radian = p.Radian
set d.Ex = GetUnitX(d.Enemy)
set d.Ey = GetUnitY(d.Enemy)
set d.dist = p.dist
set d.Facer = GetUnitFacing(d.caster) * bj_DEGTORAD
set d.ticks = 1
set d.cHP = (mHP-nHP) / mHP
set d.EnAmt = 0
set d.Damage = CreateGroup()
set d.TBDamage = CreateGroup()
set PickUp = false
call d.startPeriodic()
endmethod
method onDestroy takes nothing returns nothing
local integer i = 1
set .playcast = null
set .caster = null
set .Enemy = null
loop
exitwhen i > .EnAmt
set .En<i> = null
set i = i + 1
endloop
endmethod
endstruct
</i></i></i></i>