/*
//#### A_SpawnItemEx REFERENCE ####//
SXF_TRANSFERTRANSLATION = 1;
SXF_ABSOLUTEPOSITION = 2;
SXF_ABSOLUTEANGLE = 4;
SXF_ABSOLUTEMOMENTUM = 8;
SXF_ABSOLUTEVELOCITY = 8;
SXF_SETMASTER = 16;
SXF_NOCHECKPOSITION = 32;
SXF_TELEFRAG = 64;
SXF_CLIENTSIDE = 128;
SXF_TRANSFERAMBUSHFLAG = 256;
SXF_TRANSFERPITCH = 512;
SXF_TRANSFERPOINTERS = 1024;
SXF_USEBLOODCOLOR = 2048;
SXF_CLEARCALLERTID = 4096;
SXF_MULTIPLYSPEED = 8192;
SXF_TRANSFERSCALE = 16384;
SXF_TRANSFERSPECIAL = 32768;
SXF_CLEARCALLERSPECIAL = 65536;
SXF_TRANSFERSTENCILCOL = 131072;//17
//Does not exist yet
SXF_TRANSFERALPHA = 262144;//18
SXF_TRANSFERRENDERSTYLE = 524288;//19
SXF_SETTARGET = 1048576;//20
SXF_SETTRACER = 2097152;//21
SXF_NOPOINTERS = 4194304;//22
SXF_ORIGINATOR = 8388608;//23
SXF_TRANSFERSPRITEFRAME	= 16777216;//24
SXF_TRANSFERROLL = 33554432;//25
SXF_ISTARGET = 67108864;//26
SXF_ISMASTER = 134217728;//27
SXF_ISTRACER = 268435456;//28


//####  A_ChangeVelocity REFERENCE ####//
CVF_RELATIVE = 1;
CVF_REPLACE = 2;

//#### Pitch Aim REFERENCE ####//
Straight 0
Looking up 359>>270 (Software limit 303)
Looking down 1>>89 (Software limit 55)

//#### A_WeaponReady REFERENCE ####//
WRF_NOBOB = 1;
WRF_NOSWITCH = 2;
WRF_NOPRIMARY = 4;
WRF_NOSECONDARY = 8;
WRF_NOFIRE = WRF_NOPRIMARY | WRF_NOSECONDARY;
WRF_ALLOWRELOAD = 16;
WRF_ALLOWZOOM = 32;
WRF_DISABLESWITCH = 64;

//#### POINTER REFERENCE ####//
AAPTR_DEFAULT = 0;
AAPTR_NULL = 1;
AAPTR_TARGET = 2;
AAPTR_MASTER = 4;
AAPTR_TRACER = 8;

//#### A_Warp REFERENCE ####//
WARPF_ABSOLUTEOFFSET = 1;
WARPF_ABSOLUTEANGLE = 2;
WARPF_USECALLERANGLE = 4;
WARPF_NOCHECKPOSITION = 8;
WARPF_INTERPOLATE = 16;
WARPF_WARPINTERPOLATION = 32;
WARPF_COPYINTERPOLATION = 64;
WARPF_STOP = 128;
WARPF_TOFLOOR = 256;
WARPF_TESTONLY = 512;

//#### A_RadiusGive REFERENCE ####//
RGF_GIVESELF	=   1,
RGF_PLAYERS		=   2,
RGF_MONSTERS	=   4,
RGF_OBJECTS		=   8,
RGF_VOODOO		=  16,
RGF_CORPSES		=  32,
RGF_NOTARGET	=  64,
RGF_NOTRACER	= 128,
RGF_NOMASTER	= 256,
RGF_CUBE		= 512,

[$] if its defined in core as a 'const int'
//#### SetActorProperty REFERENCE ####//
APROP_Health		0	[$]
APROP_Speed			1	[$]
APROP_Damage		2
APROP_Alpha			3
APROP_RenderStyle	4
APROP_SeeSound		5
APROP_AttackSound	6
APROP_PainSound		7
APROP_DeathSound	8
APROP_ActiveSound	9
APROP_Ambush		10
APROP_Invulnerable	11
APROP_JumpZ			12	[$]
APROP_ChaseGoal		13
APROP_Frightened	14
APROP_Gravity		15	[$]
APROP_Friendly		16
APROP_SpawnHealth	17	[$]
APROP_Dropped		18	[$]
APROP_Notarget		19
APROP_Species		20
APROP_Nametag		21
APROP_Score			22
APROP_Notrigger		23
APROP_DamageFactor	24	[$]
APROP_MasterTID 	25
APROP_TargetTID 	26
APROP_TracerTID 	27
APROP_Waterlevel	28
APROP_ScaleX        29
APROP_ScaleY        30
APROP_Dormant		31
APROP_Mass			32
APROP_Accuracy      33
APROP_Stamina       34
APROP_Height		35	[$]
APROP_Radius		36	[$]
APROP_Reactiontime	37	[$]
APROP_MeleeRange	38	[$]


*/

//TestHelpers seperated so the actors below can be used on all the classes

actor Test_HitboxBase
{
+CLIENTSIDEONLY
+NOINTERACTION
+NOGRAVITY
-SOLID
radius 2
height 2
scale 2.5
}

actor Test_HitboxFX : Test_HitboxBase
{
states
{
Spawn:
HDOK N 0
HDOK N 1
stop
}
}

actor Test_HitboxFX_H : Test_HitboxBase//Old
{
Meleerange 64
Accuracy 64
Mass 64

reactiontime 5
Scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetArg(2,-Accuracy)
Spawn2:
TNT1 A 0 A_SpawnItemEx("Test_HitboxFX",Meleerange,Args[2],Mass*1.00,0,0,0,(ReactionTime-1)*90,4+16384)
TNT1 A 0 A_SpawnItemEx("Test_HitboxFX",Meleerange,Args[2],Mass*0.75,0,0,0,(ReactionTime-1)*90,4+16384)
TNT1 A 0 A_SpawnItemEx("Test_HitboxFX",Meleerange,Args[2],Mass*0.50,0,0,0,(ReactionTime-1)*90,4+16384)
TNT1 A 0 A_SpawnItemEx("Test_HitboxFX",Meleerange,Args[2],Mass*0.25,0,0,0,(ReactionTime-1)*90,4+16384)
TNT1 A 0 A_SpawnItemEx("Test_HitboxFX",Meleerange,Args[2],Mass*0.00,0,0,0,(ReactionTime-1)*90,4+16384)
TNT1 A 0 A_SetArg(2,Args[2]+Accuracy*0.25)
TNT1 A 0 A_JumpIf(Args[2]<Accuracy,"Spawn2")
TNT1 A 0 A_Countdown
goto Spawn
Death:
HDOK N 1
stop
}
}

actor Test_BasicHitBox : Test_HitboxBase
{
var int user_Div;

Radius 88
Height 88

reactiontime 10

Scale 1.0
//Args 1
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetArg(4,reactiontime)
TNT1 A 0 A_SetUserVar("user_Div",reactiontime)

SpawnArg:
TNT1 A 0

TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX1",Radius-(Radius/user_Div*Args[4])*2,Radius,Height,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX1",Radius-(Radius/user_Div*Args[4])*2,-Radius,Height,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX1",Radius,Radius-(Radius/user_Div*Args[4])*2,Height,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX1",-Radius,Radius-(Radius/user_Div*Args[4])*2,Height,0,0,0,0,35+16384)

TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX1",Radius-(Radius/user_Div*Args[4])*2,Radius,0,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX1",Radius-(Radius/user_Div*Args[4])*2,-Radius,0,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX1",Radius,Radius-(Radius/user_Div*Args[4])*2,0,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX1",-Radius,Radius-(Radius/user_Div*Args[4])*2,0,0,0,0,0,35+16384)

TNT1 A 0 A_CountdownArg(4,"SpawnLStart")
loop
SpawnLStart:
TNT1 A 0
SpawnL:
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX1",Radius,Radius,Height-(Height/user_Div*ReactionTime),0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX1",Radius,-Radius,Height-(Height/user_Div*ReactionTime),0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX1",-Radius,Radius,Height-(Height/user_Div*ReactionTime),0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX1",-Radius,-Radius,Height-(Height/user_Div*ReactionTime),0,0,0,0,35+16384)
TNT1 A 0
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX0",Radius,Radius,Height,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX0",Radius,-Radius,Height,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX0",Radius,Radius,0,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX0",Radius,-Radius,0,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX0",-Radius,Radius,Height,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX0",-Radius,-Radius,Height,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX0",-Radius,Radius,0,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX0",-Radius,-Radius,0,0,0,0,0,35+16384)
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX2",0,0,Height,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX2",0,0,0,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX2",Radius,0,Height/2,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX2",-Radius,0,Height/2,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX2",0,Radius,Height/2,0,0,0,0,35+16384)
TNT1 A 0 A_SpawnItemEx("Test_BasicHitBoxFX2",0,-Radius,Height/2,0,0,0,0,35+16384)
stop
}
}
actor Test_BasicHitBoxFX0 : Test_HitboxBase
{//White
States
{
Spawn:
XMFX D 0
XMFX D 1
stop
}
}
actor Test_BasicHitBoxFX1 : Test_BasicHitBoxFX0
{//Blue
States
{
Spawn:
TMFX E 0
TMFX E 1
stop
}
}
actor Test_BasicHitBoxFX2 : Test_BasicHitBoxFX0
{//Cyan
States
{
Spawn:
TMFX D 0
TMFX D 1
stop
}
}


