const int CONST_ENKERSPEARX = 8;
const int CONST_ENKERSPEARZ = 10;

actor StunArmor : VCOnce{}
actor SemiStunArmor : StunArmor {}

actor Enker : SemiHighArmorClass
{
Player.ScoreIcon "ENKEMUGS"
player.startitem "BaseFlagPack", 1
player.startitem "SemiHighArmor"
player.startitem "IsFromGB1"
player.displayname "Enker"
player.soundclass "enkerc"
player.startitem "NormalArmor"
player.startitem "MirrorBusterBoss"
player.startitem "CanThirdFire", 1
player.startitem "EnkerCheckAmmo_P"
player.startitem "MirrorAbsorbAmmo",28
player.startitem "UltimateAttackItem2"
player.startitem "UltSoundWatcherSpawn2"
player.startitem "EnkerLowAmmoWatcherSpawn"
States
{
Spawn:
ENKR A 0
ENKR B 1 A_JumpIf(z-floorz>0,"Jumping")
ENKR A 0 A_JumpIf(z-floorz>0,"Jumping")
ENKR A 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+2
See:
ENKR BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn
Jumping:
ENKR I 1 A_JumpIf(z-floorz<=0,"Spawn")
wait
Missile:
ENKR F 0 A_JumpIf(z-floorz>0,"JumpingMissile")
ENKR F 1 A_JumpIfInventory("EnkerAbsorbFlag",1,"MissileAmmo")
ENKR F 0 A_JumpIfInventory("EnkerAbsorbFlag",1,"MissileAmmo")
ENKR FFFFFF 1 A_JumpIf(z-floorz>0,"JumpingMissile2")
goto Missile2
Missile2:
ENKR GGGGGG 1 A_JumpIf(z-floorz>0,"JumpingMissile2")
goto Spawn
JumpingMissile:
ENKR W 1 A_JumpIfInventory("EnkerAbsorbFlag",1,"MissileAmmoJ")
ENKR W 0 A_JumpIfInventory("EnkerAbsorbFlag",1,"MissileAmmoJ")
ENKR WWWWWW 1 A_JumpIf(z-floorz<=0,"Missile2")
goto Missile2
JumpingMissile2:
ENKR WWWWWW 1 A_JumpIf(z-floorz<=0,"Missile2")
goto Spawn

MissileAmmoGet:
ENKR Y 0 A_PlaySoundEx("weapon/mirrorabsorb","Voice")
ENKR Y 0 A_JumpIf(z-floorz>0,"MissileAmmoJ")
ENKR Y 0 A_Jump(256,"MissileAmmo")
MissileAmmo:
ENKR Y 1
MissileAmmo2:
ENKR YY 1 A_JumpIf(z-floorz>0,"MissileAmmoJ")
ENKR YY 1 A_JumpIfInventory("EnkerAbsorbFlag",1,"MissileAmmo2")
ENKR Y 0 A_JumpIf(z-floorz>0,"Jumping")
goto Spawn
MissileAmmoJ:
ENKR X 1
MissileAmmoJ2:
ENKR XX 1 A_JumpIf(z-floorz<=0,"MissileAmmo")
ENKR XX 1 A_JumpIfInventory("EnkerAbsorbFlag",1,"MissileAmmoJ2")
ENKR X 0 A_JumpIf(z-floorz>0,"Jumping")
goto Spawn
Animation1:
Animation1a:
ENKR JJJJJ 1 A_JumpIf(z-floorz>0,"JumpingA1a")
Animation1b:
ENKR K 1 A_JumpIf(z-floorz>0,"JumpingA1b")
Animation1c:
ENKR LLLLLL 1 A_JumpIf(z-floorz>0,"JumpingA1c")
goto Spawn
JumpingA1a:
ENKR MMMMM 1 A_JumpIf(z-floorz<=0,"Animation1a")
JumpingA1b:
ENKR N 1 A_JumpIf(z-floorz<=0,"Animation1b")
JumpingA1c:
ENKR OOOOOO 1 A_JumpIf(z-floorz<=0,"Animation1c")
goto Jumping
ClassTimeStop:
PLAY A 0 SetPlayerProperty(0,1,4)
PLAY A 0 ACS_Execute(528,0)
ENKR AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
PLAY A 0 SetPlayerProperty(0,0,4)
Goto pain+1
ClassPain:
ENKR H 0 A_GiveInventory("MirrorAbsorbAmmo",2)
ENKR H 0 A_JumpIfInventory("EnkerAbsorbFlag",1,"MissileAmmoGet")
ENKR HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
ClassDeath:
ENKR H 20 ACS_ExecuteAlways(999,0,0)
ENKR H 0 A_PlayerScream
NOFX A 0 A_SpawnItemEx("FakeDeathFXMMV", 0, 0, 32, 0, 0, 0, 0, 1)
NOFX A 1 A_CheckPlayerDone
wait
ClassIceDeath:
FLAM A 35
NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("MirrorBusterWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("MirrorBusterWepM")
goto ClassDeath
}
}

Actor EnkerCheckAmmo_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteAlways("VC_EnkerCharge",0,0)
stop
}
}

Actor EnkerLowAmmoWatcherSpawn : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("EnkerLowAmmoWatcher")
stop
}
}

actor MirrorBusterBoss : VCBaseWeapon 
{
+WEAPON.NOAUTOAIM
Obituary "$OB_ENKER1"
weapon.Ammotype "MirrorAbsorbAmmo"
States
{
Ready:
TNT1 A 0
ENKA A 0 A_JumpIfInventory("EnkerAbsorbCooldown",1,"Ready.NoAlt")
ENKA A 0 A_JumpIfInventory("MirrorAbsorbAmmo",42,"Ready.NoAlt")
ENKA A 1 A_WeaponReady ENKA A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") ENKA A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
goto Ready

Ready.NoAlt:
ENKA A 1 A_WeaponReady(WRF_NOSECONDARY) ENKA A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") ENKA A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
goto Ready
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
ENKA A 1 A_Lower
Loop

Select:
TNT1 A 0
TNT1 A 0 ACS_ExecuteAlways(991,0,1943)
TNT1 A 0 A_GiveInventory("PowerEnkerThirdfire")
ENKA A 10 A_WeaponReady(14)
SelectX:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
ENKA A 1 A_Raise
Loop

User1:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
ENKA A 0 A_PlaySoundEx("misc/enkerswing","Body")
ENKA A 0 A_SpawnItemEx("DefenseMatrix",0,0,height/2)
ENKA C 1 A_GunFlash("Flash4",GFF_NOEXTCHANGE)
ENKA C 1 offset(-10,24) A_SpawnItemEx("DefenseMatrix",0,0,height/2)
ENKA C 1 offset(-20,23) A_SpawnItemEx("DefenseMatrix",0,0,height/2)
ENKA C 1 offset(-30,20) A_SpawnItemEx("DefenseMatrix",0,0,height/2)
ENKA E 1 offset(-40,32) A_SpawnItemEx("DefenseMatrix",0,0,height/2)
ENKA A 0 A_SpawnItemEx("DefenseMatrix",0,0,height/2)
ENKA E 1 offset(120,62) A_GiveInventory("EnkerThirdfire_CI",1)
TNT1 A 1 offset(3,32) A_SpawnItemEx("DefenseMatrix",0,0,height/2)
TNT1 A 1 offset(49,30) A_SpawnItemEx("DefenseMatrix",0,0,height/2)
TNT1 A 6 offset(102,28) A_SpawnItemEx("DefenseMatrix",0,0,height/2)
ENKA D 1 offset(79,30)
ENKA D 1 offset(3,32)
ENKA D 1 offset(-35,34)A_GunFlash("Flash5",GFF_NOEXTCHANGE)
ENKA C 1 offset(-40,12)
ENKA C 1 offset(-30,16)
ENKA C 1 offset(-20,20)
ENKA C 1 offset(-10,23)
ENKA A 1 offset(8,39)
ENKA A 1 offset(6,37)
ENKA A 1 offset(4,36)
ENKA A 1 offset(3,35)
ENKA A 1 offset(2,34)
ENKA A 1 offset(1,33)
ENKA A 6 A_WeaponReady(WRF_NOFIRE)
Goto Ready

UltimateAttack:
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,114)
TNT1 A 0 A_TakeInventory("MediumShortUltimateAmmo",2)
TNT1 A 0 A_TakeInventory("UltAttackFlag",9)
CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
ENKA A 1 A_GunFlash("Flash2",GFF_NOEXTCHANGE)
ENKA C 1 offset(10,41)
ENKA C 1 offset(20,44)
ENKA C 1 offset(30,48)
ENKA E 1 offset(40,52)
ENKA D 1 offset(45,54)A_GiveInventory("EnkerUlt_CI",1)
ENKA D 1 offset(50,56)
ENKA D 1 offset(55,58)
ENKA D 2 offset(60,60)
ENKA D 1 offset(55,58)
ENKA D 1 offset(50,56)
ENKA D 1 offset(45,54)A_GunFlash("Flash3",GFF_NOEXTCHANGE)
ENKA C 1 offset(40,52)
ENKA C 1 offset(30,48)
ENKA C 1 offset(20,44)
ENKA C 1 offset(10,41)

ENKA A 1 offset(8,39)
ENKA A 1 offset(6,37)
ENKA A 1 offset(4,36)
ENKA A 1 offset(3,35)
ENKA A 1 offset(2,34)
ENKA A 1 offset(1,33)
ENKA A 4 A_WeaponReady(14)
Goto Ready

Fire:
ENKA A 1 A_GunFlash("Flash2",GFF_NOEXTCHANGE)
ENKA C 1 offset(10,41)A_GiveInventory("EnkerSpearHitbox_CI",1)
ENKA C 1 offset(20,44)
ENKA C 1 offset(30,48)
ENKA E 1 offset(40,52)
ENKA D 1 offset(45,54)A_GiveInventory("EnkerMainCheck_CI",1)
ENKA D 1 offset(50,56)
ENKA D 1 offset(55,58)
ENKA D 2 offset(60,60)
ENKA D 1 offset(55,58)
ENKA D 1 offset(50,56)
ENKA D 1 offset(45,54)A_GunFlash("Flash3",GFF_NOEXTCHANGE)
ENKA C 1 offset(40,52)
ENKA C 1 offset(30,48)
ENKA C 1 offset(20,44)
ENKA C 1 offset(10,41)

ENKA A 1 offset(8,39)
ENKA A 1 offset(6,37)
ENKA A 1 offset(4,36)
ENKA A 1 offset(3,35)
ENKA A 1 offset(2,34)
ENKA A 1 offset(1,33)
Goto Ready

Flash2:
TNT1 A 1 //Thanks for the once-in-a-lifetime comment from CBM, Celebi. I'll just replace it here. -Binary
ENKA GHIJK 1 A_JumpIfInventory("IsDead",1,"NoFlash")
stop
Flash2R:
TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash")
ENKA GHI 1 A_JumpIfInventory("IsDead",1,"NoFlash")
stop
Flash3:
TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash")
ENKA KJIHG 1 A_JumpIfInventory("IsDead",1,"NoFlash")
stop
Flash3R:
TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash")
ENKA IHG 1 A_JumpIfInventory("IsDead",1,"NoFlash")
stop
Flash4:
TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash")
ENKA LMNOP 1 A_JumpIfInventory("IsDead",1,"NoFlash")
stop
Flash5:
TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash")
ENKA PONML 1 A_JumpIfInventory("IsDead",1,"NoFlash")
stop

Altfire:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
ENKA A 0 A_JumpIfInventory("EnkerAbsorbCooldown",1,"Ready")
ENKA A 0 A_JumpIfInventory("MirrorAbsorbAmmo",42,"Ready")
ENKA A 0 A_GiveInventory("EnkerAltStart_CI",1)
ENKA A 0 A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA A 1 A_GunFlash("Flash2",GFF_NOEXTCHANGE)
ENKA C 1 Offset(10,41) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA C 1 Offset(20,44) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA C 1 Offset(30,48) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA C 1 Offset(40,52) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA D 1 Offset(50,56) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA D 1 Offset(60,49) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA D 1 Offset(70,42) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA D 1 Offset(80,35) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA F 1 Offset(-10,39) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA F 1 Offset(-8,36) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA F 1 Offset(-6,33) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA F 1 Offset(-4,30) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA F 1 Offset(-2,27) A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
AltHold:
ENKA A 0 A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA F 1 A_GiveInventory("EnkerAbsorbCooldown",1)
ENKA F 0 A_JumpIfInventory("EnkerAbsorbCooldown",77,"Altfire.End")
ENKA A 0 A_JumpIfInventory("MirrorAbsorbAmmo",42,"StanceCancel")
ENKA A 0 A_SpawnItemEx("EnkerGuard",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
ENKA F 1 A_GiveInventory("EnkerAbsorbCooldown",1)
ENKA F 0 A_JumpIfInventory("EnkerAbsorbCooldown",77,"Altfire.End")
ENKA F 0 A_Refire
Goto Altfire.End
StanceCancel:
ENKA A 0 A_TakeInventory("EnkerAbsorbFlag",9)
ENKA A 0 A_TakeInventory("StunArmor",99)
ENKA A 0 A_TakeInventory("BasicArmor",999)
ENKA A 0 A_TakeInventory("LastArmorCount",999)
ENKA A 0 SetPlayerProperty(0,0,0)
ENKA F 22 Offset(0,48) ACS_ExecuteAlways(191,0,APROP_JumpZ,10,1)
Altfire.End:
ENKA A 0 ACS_ExecuteAlways(191,0,APROP_JumpZ,10,1)
ENKA A 0 A_TakeInventory("EnkerAbsorbFlag",9)
ENKA A 0 A_TakeInventory("StunArmor",99)
ENKA A 0 A_TakeInventory("BasicArmor",999)
ENKA A 0 A_TakeInventory("LastArmorCount",999)
ENKA A 0 SetPlayerProperty(0,0,0)
ENKA F 0 A_GiveInventory("EnkerAltEnd_CI",1)
ENKA D 0 A_GunFlash("Flash3")
ENKA D 1 offset(50,56) A_ClearRefire
ENKA C 1 offset(40,52)
ENKA C 1 offset(30,48)
ENKA C 1 offset(20,44)
ENKA C 1 offset(10,41)
ENKA A 1 offset(8,39)
ENKA A 1 offset(6,37)
ENKA A 1 offset(4,36)
ENKA A 1 offset(3,35)
ENKA A 1 offset(2,34)
ENKA A 1 offset(1,33)
Goto Ready

}
}

actor EnkerGuard
{
+MISSILE
Speed 0
+DONTSPLASH
Damage 0
Height 64
Radius 32
health 9999
scale 2.5
+SHOOTABLE
+NOBLOOD
-SOLID
painchance 256
+DONTRIP
+GHOST
+NOTARGETSWITCH
-NORADIUSDMG
species "EnkerShieldType"
damagefactor "EnkerUlt", 0.0
+THRUSPECIES
States
{
Spawn:
TNT1 A 0
TNT1 A 2
stop
Death:
TNT1 A 0 //A_PlaySound("item/protoreflect")
TNT1 A 0
stop
Pain:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("EnkerAbsorbFXGiver")
TNT1 A 0 A_GiveToTarget("MirrorAbsorbAmmo",3)
TNT1 A 1 A_PlaySoundEx("weapon/mirrorabsorb2","Body")
stop
}
}

Actor EnkerAbsorbFXGiver : CustomInventory
{
	States
	{
		Pickup:
		TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("EnkerAbsorbFX",0,-20,random(100,140),random(-3,3),random(-3,3),random(-3,3))
		stop
	}
}

Actor EnkerAbsorbFlag : VCOnce{}

Actor EnkerHealthBefore : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 100
	+INVENTORY.IGNORESKILL
}

actor EnkerAbsorbFX : JewelShotFX
{
translation "204:204=228:228"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
JEWS UVW 5
stop
}
}

actor EnkerReflectFX : EnkerAbsorbFX
{
-CLIENTSIDEONLY //Needs to be removed so the actor can spawn online. -Fr3ak
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
JEWS UVW 2
stop
}
}

Actor MirrorAbsorbAmmo : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 42
	+INVENTORY.IGNORESKILL
}

Actor EnkerAbsorbCooldown : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 77
	+INVENTORY.IGNORESKILL
}

Actor EnkerMainCheck_CI : CustomInventory
{
	States
	{
		Pickup:
		TNT1 A 0 A_JumpIfInventory("MirrorAbsorbAmmo",0,"Pickup.StrongestShot")
		TNT1 A 0 A_JumpIfInventory("MirrorAbsorbAmmo",7,"Pickup.StrongShot")
		Goto Pickup.WeakShot
		Pickup.StrongestShot:
		TNT1 A 0 A_PlaySoundEx("weapon/mirrordeflect2","Weapon")
		TNT1 A 0 A_PlaySoundEx("weapon/mirrordeflect2","Auto")
		TNT1 A 0 A_PlaySoundEx("weapon/mirrordeflect","SoundSlot7")
		TNT1 A 0 A_TakeInventory("MirrorAbsorbAmmo",7,1)
		TNT1 A 0 A_FireCustomMissile("EnkerShot2",0,0,8,0)
		TNT1 A 0 A_FireCustomMissile("EnkerShot3",0,0,8,0)
		Stop
		Pickup.StrongShot:
		TNT1 A 0 A_TakeInventory("MirrorAbsorbAmmo",7,1)
		TNT1 A 0 A_PlaySoundEx("weapon/mirrordeflect2","Weapon")
		TNT1 A 0 A_FireCustomMissile("EnkerShot2",0,0,8,0)
		Stop
		Pickup.WeakShot:
		TNT1 A 0 A_PlaySoundEx("weapon/mirrordeflect","Weapon")
		TNT1 A 0 A_FireCustomMissile("EnkerShot1",0,0,8,0)
		stop
	}
}

actor EnkerArmor : BasicArmorPickup
{
	Armor.Savepercent 90.0
	Armor.Saveamount 100
}
actor LastArmorCount : Inventory
{
	inventory.amount 1
	inventory.maxamount 100
}

actor EnkerShot1
{
PROJECTILE
Obituary "$OB_ENKER1"
Damage (12)
DamageType "Enker"
Radius 8
Height 7
Speed 35
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
MIRR C 3
Goto Spawn+2
Death:
TNT1 A 0
Stop
}
}

actor EnkerShot2
{
PROJECTILE
Obituary "$OB_ENKER1"
Damage (25)
-DONTBLAST
+RIPPER
species "EnkerTFType"
+THRUSPECIES
+NOCLIP
Speed 40
Radius 16
Height 32
Scale 2.5
DamageType "Enker2"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
MIRR E 0 A_SpawnItemEx("MirrorShotTrail",-4,0,0,0,0,0,0)
MIRR E 1 A_SpawnItemEx("EnkerAbsorbFX",-40,random(-16,16),random(-32,32),random(0,-2))
MIRR E 0 A_ChangeFlag("NOCLIP",0)
loopit:
MIRR E 0 A_SpawnItemEx("MirrorShotTrail",-4,0,0,0,0,0,0)
MIRR EE 1 A_SpawnItemEx("EnkerAbsorbFX",-40,random(-16,16),random(-32,32),random(0,-2))
loop
XDeath:
Death:
TNT1 A 0
MIRR E 0 A_Recoil(5)
MIRR EEEEEEEEE 1 A_FadeOut(0.1)
Stop
}
}

Actor EnkerShot3 : EnkerShot2
{
	DamageType "Enker3"
	Speed 60
}

actor MirrorShotTrail
{
+NOINTERACTION
+NOGRAVITY
+CLIENTSIDEONLY
-DONTBLAST
+FORCEXYBILLBOARD
-SOLID
Damage (0)
Scale 2.5
Height 0
Radius 0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
MIRR EE 1 A_Fadeout(0.2)
MIRR DDD 1 A_Fadeout(0.2)
stop
}
}

Actor EnkerSpearHitbox_CI : CustomInventory
{
	States
	{
		Pickup:
		TNT1 A 0 A_JumpIfInventory("MirrorAbsorbAmmo",42,"Pickup7")
		TNT1 A 0 A_JumpIfInventory("MirrorAbsorbAmmo",35,"Pickup6")
		TNT1 A 0 A_JumpIfInventory("MirrorAbsorbAmmo",28,"Pickup5")
		TNT1 A 0 A_JumpIfInventory("MirrorAbsorbAmmo",21,"Pickup4")
		TNT1 A 0 A_JumpIfInventory("MirrorAbsorbAmmo",14,"Pickup3")
		TNT1 A 0 A_JumpIfInventory("MirrorAbsorbAmmo",7,"Pickup2")
		Goto Pickup1
		Pickup1:
		TNT1 A 0 A_SpawnItemEx("EnkerMeleeHitboxWeakest",CONST_ENKERSPEARX,0,CONST_ENKERSPEARZ)
		Stop
		Pickup2:
		TNT1 A 0 A_SpawnItemEx("EnkerMeleeHitboxWeaker",CONST_ENKERSPEARX,0,CONST_ENKERSPEARZ)
		Stop
		Pickup3:
		TNT1 A 0 A_SpawnItemEx("EnkerMeleeHitboxWeak",CONST_ENKERSPEARX,0,CONST_ENKERSPEARZ)
		Stop
		Pickup4:
		TNT1 A 0 A_SpawnItemEx("EnkerMeleeHitboxStrong",CONST_ENKERSPEARX,0,CONST_ENKERSPEARZ)
		Stop
		Pickup5:
		TNT1 A 0 A_SpawnItemEx("EnkerMeleeHitboxStronger",CONST_ENKERSPEARX,0,CONST_ENKERSPEARZ)
		Stop
		Pickup6:
		TNT1 A 0 A_SpawnItemEx("EnkerMeleeHitboxStrongest",CONST_ENKERSPEARX,0,CONST_ENKERSPEARZ)
		Stop
		Pickup7:
		TNT1 A 0 A_SpawnItemEx("EnkerMeleeHitboxStrongerest",CONST_ENKERSPEARX,0,CONST_ENKERSPEARZ)
		Stop
	}
}

actor EnkerMeleeHitboxWeakest
{
species "DustManType"
+THRUSPECIES
PROJECTILE
Radius 5
Height 5
Damage (0)
MeleeRange 1
Stamina 45
Obituary "$OB_ENKER3" //Funni obit !
DamageType "EnkerMelee"
Speed 50
Scale 1.5
ReactionTime 14
RenderStyle None
+NOCLIP
states
{
Spawn:
TNT1 A 0 //The sprite below is for testing purposes.
Spawn_L:
PLAY A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
PLAY A 1 A_Warp(AAPTR_TARGET,CONST_ENKERSPEARX,0,CONST_ENKERSPEARZ,0,WARPF_NOCHECKPOSITION) PLAY A 0 A_CountDown
PLAY A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
PLAY A 1 A_Warp(AAPTR_TARGET,CONST_ENKERSPEARX,0,CONST_ENKERSPEARZ,0,WARPF_NOCHECKPOSITION) PLAY A 0 A_CountDown
PLAY A 0 A_Explode(MeleeRange,Stamina,0,0,Stamina)
loop
Death: TNT1 A 0
Stop
}
}

Actor EnkerMeleeHitboxWeaker : EnkerMeleeHitboxWeakest
{
	MeleeRange 2
	DamageType "EnkerMelee"
	Obituary "$OB_ENKER2"
}

Actor EnkerMeleeProtect : PowerProtection
{
	Powerup.Duration 4
	DamageFactor "EnkerMelee", 0.0
}

Actor EnkerBusterProtect : PowerProtection
{
	Powerup.Duration 10
	DamageFactor "Enker2", 0.0
}

Actor EnkerBusterProtect2 : PowerProtection
{
	Powerup.Duration 10
	DamageFactor "Enker3", 0.0
}

actor EnkerMeleeHitboxWeak : EnkerMeleeHitboxWeaker{MeleeRange 3}
actor EnkerMeleeHitboxStrong : EnkerMeleeHitboxWeaker{MeleeRange 4}
actor EnkerMeleeHitboxStronger : EnkerMeleeHitboxWeaker{MeleeRange 5}
actor EnkerMeleeHitboxStrongest : EnkerMeleeHitboxWeaker{MeleeRange 6}
actor EnkerMeleeHitboxStrongerest : EnkerMeleeHitboxWeaker{MeleeRange 7 DamageType "EnkerMeleeStun"}

Actor EnkerAltStart_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("EnkerAbsorbFlag",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
TNT1 A 0 A_GiveInventory("InvProtection")
//ENKA A 0 A_GiveInventory("EnkerArmor",1)
ENKA A 0 A_GiveInventory("StunArmor",1)
ENKA A 0 A_GiveInventory("LastArmorCount",100)
ENKA A 0 SetPlayerProperty(0,1,0)
ENKA A 0 ACS_ExecuteAlways(191,0,APROP_JumpZ,0,1)
ENKA A 0 A_PlaySoundEx("weapon/mirrorabsorb","Weapon")
stop
}
}


Actor EnkerAltEnd_CI : CustomInventory
{
States
{
Pickup:
ENKA A 0 A_TakeInventory("EnkerAbsorbFlag",9)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
TNT1 A 0 A_TakeInventory("InvProtection")
ENKA A 0 A_TakeInventory("StunArmor",99)
ENKA A 0 A_TakeInventory("BasicArmor",999)
ENKA A 0 A_TakeInventory("LastArmorCount",999)
ENKA A 0 SetPlayerProperty(0,0,0)
ENKA A 0 ACS_ExecuteAlways(191,0,APROP_JumpZ,10,1)
TNT1 A 0 A_GiveInventory("EnkerAbsorbCooldown",77)
TNT1 A 0 A_SpawnItemEx("EnkerCooldownWatcher")
stop
}
}

Actor EnkerUlt_CI : CustomInventory
{
States
{
Pickup:
//TNT1 A 0 A_TakeInventory("MediumShortUltimateAmmo",999) //Timer
TNT1 A 0 A_TakeInventory("UltAttackFlag",999)
TNT1 A 0 A_FireCustomMissile("EnkerUltProjectile",0,0,8,0)
TNT1 A 0 A_PlaySoundEx("weapon/enkerult1","Weapon")
TNT1 A 0 A_PlaySoundEx("weapon/pshot","Auto")
stop
}
}

Actor EnkerUltProjectile : FastProjectile
{
	PROJECTILE
	DamageType "EnkerUlt"
	species "EnkerShieldType"
	+THRUSPECIES
	Obituary "$OB_ENKER5"
	+FORCEXYBILLBOARD
	+NOTARGETSWITCH
	+THRUACTORS
	+DONTREFLECT
	Damage (0)
	Radius 32
	Height 32
	Speed 100
	ReactionTime 10
	Scale 1.5
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		Spawn_L:
		ENKU A 0 A_PlaySoundEx("weapon/enkerult2","Body") TNT1 A 0 A_SetScale(ScaleX + 0.02, ScaleY + 0.02)
		PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		ENKU A 0 A_SetScale(ScaleX + 0.19, ScaleY + 0.19)
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Nope")
		ENKU EFE 2 A_CountDown
		ENKU A 0 A_PlaySoundEx("weapon/enkerult2","Body") TNT1 A 0 A_SetScale(ScaleX + 0.02, ScaleY + 0.02)
		PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		ENKU A 0 A_SetScale(ScaleX + 0.19, ScaleY + 0.19)
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Nope")
		ENKU FEF 2 A_CountDown
		Loop
		Death:
		ENKU AAAAAAAAAA 0 A_StopSound("Body")
		ENKU AAAAAAAAAA 0 A_StopSoundEx("Body")
		ENKU E 1 A_SetScale(ScaleX - 0.24, ScaleY - 0.24) ENKU A 0 A_FadeOut(0.06)
		ENKU E 1 A_SetScale(ScaleX - 0.24, ScaleY - 0.24) ENKU A 0 A_FadeOut(0.06)
		ENKU F 1 A_SetScale(ScaleX - 0.24, ScaleY - 0.24) ENKU A 0 A_FadeOut(0.06)
		ENKU F 1 A_SetScale(ScaleX - 0.24, ScaleY - 0.24) ENKU A 0 A_FadeOut(0.06)
		ENKU E 1 A_SetScale(ScaleX - 0.24, ScaleY - 0.24) ENKU A 0 A_FadeOut(0.06)
		ENKU E 1 A_SetScale(ScaleX - 0.24, ScaleY - 0.24) ENKU A 0 A_FadeOut(0.06)
		ENKU F 1 A_SetScale(ScaleX - 0.24, ScaleY - 0.24) ENKU A 0 A_FadeOut(0.06)
		ENKU F 1 A_SetScale(ScaleX - 0.24, ScaleY - 0.24) ENKU A 0 A_FadeOut(0.06)
		ENKU D 0 A_SetTranslucent(0.004)
		TNT1 A 5
		ENKU GGG 1 A_FadeIn(0.6) ENKU A 0 A_SetScale(1.25)
		ENKU A 0 A_SpawnItemEx("EnkerUltTrail2",0,0,0,0,0,0,0,SXF_TRANSFERSCALE)
		ENKU A 0 A_SpawnItemEx("EnkerUltTrailB2")
		ENKU HHH 1 A_FadeIn(0.6) ENKU A 0 A_SetScale(1.5)
		ENKU A 0 A_SpawnItemEx("EnkerUltTrail3",0,0,0,0,0,0,0,SXF_TRANSFERSCALE)
		ENKU A 0 A_SpawnItemEx("EnkerUltTrailB3")
		ENKU III 1 A_FadeIn(0.6) ENKU A 0 A_SetScale(1.75)
		ENKU A 0 A_SpawnItemEx("EnkerUltTrail4",0,0,0,0,0,0,0,SXF_TRANSFERSCALE)
		ENKU A 0 A_SpawnItemEx("EnkerUltTrailB4")
		ENKU JJJ 1 A_FadeIn(0.6) ENKU A 0 A_SetScale(2.0)
		TNT1 A 0 A_SpawnItemEx("EnkerUltSurprise",0,0)
		stop
		Nope:
		TNT1 A 0
		stop
	}
}

Actor EnkerUltSurprise
{
	PROJECTILE
	DamageType "EnkerUlt"
	Obituary "$OB_ENKER5"
	+FORCEXYBILLBOARD
	+NOTARGETSWITCH
	+NOCLIP
	+NOINTERACTION
	+THRUACTORS
	species "EnkerShieldType"
	+THRUSPECIES
	+DONTREFLECT
	Damage (0)
	Radius 0
	Height 0
	Speed 25
	ReactionTime 35
	Scale 2.0
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		Spawn_L:
		ENKU A 0 A_PlaySoundEx("weapon/blackholebombdetonate","SoundSlot7")
		BLKH F 0 ACS_ExecuteAlways(247, 0, 3, 512) ENKR A 0 A_Explode(4,128,0,0,65)
		ENKU F 0 A_TakeFromTarget("MediumShortUltimateAmmo",1) PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		ENKU G 2 A_SpawnItemEx("EnkerUltTrail",0,0,0,0,0,0,0,SXF_TRANSFERSCALE) ENKU A 0 A_SpawnItemEx("EnkerUltTrailB")TNT1 A 0 A_SpawnItemEx("EnkerUltVortexHelperFX")
		BLKH F 0 ACS_ExecuteAlways(247, 0, 3, 512) ENKR A 0 A_Explode(4,128,0,0,65)
		ENKU B 0 A_TakeFromTarget("MediumShortUltimateAmmo",1) PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		ENKU H 2 A_SpawnItemEx("EnkerUltTrail",0,0,0,0,0,0,0,SXF_TRANSFERSCALE) ENKU A 0 A_SpawnItemEx("EnkerUltTrailB")TNT1 A 0 A_SpawnItemEx("EnkerUltVortexHelperFX")
		BLKH F 0 ACS_ExecuteAlways(247, 0, 3, 512) ENKR A 0 A_Explode(4,128,0,0,65)
		ENKU C 0 A_TakeFromTarget("MediumShortUltimateAmmo",1) PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		ENKU I 2 A_PlaySoundEx("weapon/enkerult2","Body") TNT1 A 0 A_SetScale(ScaleX + 0.02, ScaleY + 0.02)
		TNT1 A 0 A_CountDown

		BLKH F 0 ACS_ExecuteAlways(247, 0, 3, 512) ENKR A 0 A_Explode(4,128,0,0,65)
		ENKU D 0 A_TakeFromTarget("MediumShortUltimateAmmo",1) PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		ENKU J 2 A_SpawnItemEx("EnkerUltTrail",0,0,0,0,0,0,0,SXF_TRANSFERSCALE) ENKU A 0 A_SpawnItemEx("EnkerUltTrailB")TNT1 A 0 A_SpawnItemEx("EnkerUltVortexHelperFX")
		BLKH F 0 ACS_ExecuteAlways(247, 0, 3, 512) ENKR A 0 A_Explode(4,128,0,0,65)
		ENKU A 0 A_TakeFromTarget("MediumShortUltimateAmmo",1) PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		ENKU G 2 A_SpawnItemEx("EnkerUltTrail",0,0,0,0,0,0,0,SXF_TRANSFERSCALE) ENKU A 0 A_SpawnItemEx("EnkerUltTrailB")TNT1 A 0 A_SpawnItemEx("EnkerUltVortexHelperFX")
		BLKH F 0 ACS_ExecuteAlways(247, 0, 3, 512) ENKR A 0 A_Explode(4,128,0,0,65)
		ENKU B 0 A_TakeFromTarget("MediumShortUltimateAmmo",1) PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		ENKU H 2 A_PlaySoundEx("weapon/enkerult2","Body") TNT1 A 0 A_SetScale(ScaleX + 0.02, ScaleY + 0.02)
		TNT1 A 0 A_CountDown

		ENKU A 0 A_PlaySoundEx("weapon/blackholebombdetonate","SoundSlot7")
		BLKH F 0 ACS_ExecuteAlways(247, 0, 3, 512) ENKR A 0 A_Explode(4,128,0,0,65)
		ENKU C 0 A_TakeFromTarget("MediumShortUltimateAmmo",1) PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		ENKU I 2 A_SpawnItemEx("EnkerUltTrail",0,0,0,0,0,0,0,SXF_TRANSFERSCALE) ENKU A 0 A_SpawnItemEx("EnkerUltTrailB")TNT1 A 0 A_SpawnItemEx("EnkerUltVortexHelperFX")
		BLKH F 0 ACS_ExecuteAlways(247, 0, 3, 512) ENKR A 0 A_Explode(4,128,0,0,65)
		ENKU D 0 A_TakeFromTarget("MediumShortUltimateAmmo",1) PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		ENKU J 2 A_SpawnItemEx("EnkerUltTrail",0,0,0,0,0,0,0,SXF_TRANSFERSCALE) ENKU A 0 A_SpawnItemEx("EnkerUltTrailB")TNT1 A 0 A_SpawnItemEx("EnkerUltVortexHelperFX")
		BLKH F 0 ACS_ExecuteAlways(247, 0, 3, 512) ENKR A 0 A_Explode(4,128,0,0,65)
		ENKU A 0 A_TakeFromTarget("MediumShortUltimateAmmo",1) PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		ENKU G 2 A_PlaySoundEx("weapon/enkerult2","Body") TNT1 A 0 A_SetScale(ScaleX + 0.02, ScaleY + 0.02)
		TNT1 A 0 A_CountDown

		BLKH F 0 ACS_ExecuteAlways(247, 0, 3, 512) ENKR A 0 A_Explode(4,128,0,0,65)
		ENKU B 0 A_TakeFromTarget("MediumShortUltimateAmmo",1) PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		ENKU H 2 A_SpawnItemEx("EnkerUltTrail",0,0,0,0,0,0,0,SXF_TRANSFERSCALE) ENKU A 0 A_SpawnItemEx("EnkerUltTrailB")TNT1 A 0 A_SpawnItemEx("EnkerUltVortexHelperFX")
		BLKH F 0 ACS_ExecuteAlways(247, 0, 3, 512) ENKR A 0 A_Explode(4,128,0,0,65)
		ENKU C 0 A_TakeFromTarget("MediumShortUltimateAmmo",1) PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		ENKU I 2 A_SpawnItemEx("EnkerUltTrail",0,0,0,0,0,0,0,SXF_TRANSFERSCALE) ENKU A 0 A_SpawnItemEx("EnkerUltTrailB")TNT1 A 0 A_SpawnItemEx("EnkerUltVortexHelperFX")
		BLKH F 0 ACS_ExecuteAlways(247, 0, 3, 512) ENKR A 0 A_Explode(4,128,0,0,65)
		ENKU D 0 A_TakeFromTarget("MediumShortUltimateAmmo",1) PWVE A 0 A_GiveToTarget("PharaohUltCooldown")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		ENKU J 2 A_PlaySoundEx("weapon/enkerult2","Body") TNT1 A 0 A_SetScale(ScaleX + 0.02, ScaleY + 0.02)
		TNT1 A 0 A_CountDown

		loop
		Death:
		ENKU AAAAAAAAAA 0 A_StopSound("SoundSlot7")
		ENKU AAAAAAAAAA 0 A_StopSoundEx("SoundSlot7")
		ENKU AAAAAAAAAA 0 A_StopSound("Body")
		ENKU AAAAAAAAAA 0 A_StopSoundEx("Body")
		ENKU GGGHHHIIIJJJGGGHHHIIIJJJ 1 A_SetScale(ScaleX - 0.24, ScaleY - 0.24)
		Stop
	}
}

Actor EnkerUltProtect : PowerProtection
{
	Powerup.Duration 1
	DamageFactor "EnkerUlt", 0.0
}


Actor EnkerUltTrail : BaseDecorativeActor
{
	Scale 5.25
	RenderStyle "Fuzzy"
	StencilColor "Black"
	//Translation "3:255=0:0"
	ReactionTime 7
	Alpha 1.0
	MeleeRange 3.25
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetScale(ScaleX + 3.25, ScaleY + 3.25)

		ENKU G 1 A_SetScale(ScaleX + 0.04, ScaleY + 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU G 1 A_SetScale(ScaleX + 0.04, ScaleY + 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU G 1 A_SetScale(ScaleX + 0.04, ScaleY + 0.04) ENKU A 0 A_FadeOut(0.04)ENKU J 0 A_CountDown
		ENKU H 1 A_SetScale(ScaleX + 0.04, ScaleY + 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU H 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU H 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)ENKU J 0 A_CountDown
		ENKU I 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU I 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU I 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)ENKU J 0 A_CountDown
		ENKU J 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU J 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU J 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)ENKU J 0 A_CountDown
		Spawn_L:
		ENKU G 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU G 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU G 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)ENKU J 0 A_CountDown
		ENKU H 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU H 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU H 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)ENKU J 0 A_CountDown
		ENKU I 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU I 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU I 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)ENKU J 0 A_CountDown
		ENKU J 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU J 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)
		ENKU J 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) ENKU A 0 A_FadeOut(0.04)ENKU J 0 A_CountDown
		Goto Spawn_L
	}
}
Actor EnkerUltTrail2 : EnkerUltTrail{MeleeRange 0.25}
Actor EnkerUltTrail3 : EnkerUltTrail{MeleeRange 1.25}
Actor EnkerUltTrail4 : EnkerUltTrail{MeleeRange 1.25}

Actor EnkerUltTrailB : BaseDecorativeActor
{
	Scale 5.25
	RenderStyle Add
	Alpha 0.7
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
		ENKU G 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.03) ENKU A 0 A_FadeOut(0.04)
		ENKU G 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.03) ENKU A 0 A_FadeOut(0.04)
		ENKU G 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.03) ENKU A 0 A_FadeOut(0.04)
		ENKU H 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.03) ENKU A 0 A_FadeOut(0.04)
		ENKU H 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.03) ENKU A 0 A_FadeOut(0.04)
		ENKU H 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.03) ENKU A 0 A_FadeOut(0.04)
		ENKU I 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.03) ENKU A 0 A_FadeOut(0.04)
		ENKU I 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.03) ENKU A 0 A_FadeOut(0.04)
		ENKU I 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.03) ENKU A 0 A_FadeOut(0.04)
		ENKU J 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.03) ENKU A 0 A_FadeOut(0.04)
		ENKU J 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.03) ENKU A 0 A_FadeOut(0.04)
		ENKU J 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.03) ENKU A 0 A_FadeOut(0.04)
		Goto Spawn+2
	}
}
Actor EnkerUltTrailB2 : EnkerUltTrailB{Scale 2.25}
Actor EnkerUltTrailB3 : EnkerUltTrailB{Scale 3.25}
Actor EnkerUltTrailB4 : EnkerUltTrailB{Scale 4.25}

actor EnkerUltVortexHelperFX : BasicClientSide
{
RenderStyle Stencil
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
TNT1 A 0
TNT1 A 0 A_SetPitch(random(-1,1)*10)//(random(0,1)*2-1)
TNT1 AA 0 //A_SpawnItemEx("EnkerUltimateVortexXFX1",0,0,0,Cos(pitch)*224,0,-sin(pitch)*224,random(0,359),513)
TNT1 AA 0 A_SpawnItemEx("EnkerUltimateVortexXFX1",Cos(pitch)*224,0,-sin(pitch)*224,0,0,0,random(0,359),513)
TNT1 A 1
TNT1 A 0 A_SetPitch(random(2,5)*10)
TNT1 A 0 A_SpawnItemEx("EnkerUltimateVortexXFX1",Cos(pitch)*224,0,-sin(pitch)*224,0,0,0,random(0,359),513)
TNT1 A 0 A_SetPitch(random(-2,-4)*10)
TNT1 A 0 A_SpawnItemEx("EnkerUltimateVortexXFX1",Cos(pitch)*224,0,-sin(pitch)*224,0,0,0,random(0,359),513)
TNT1 A 1
TNT1 A 0 A_SetPitch(random(5,9)*10)
TNT1 A 0 A_SpawnItemEx("EnkerUltimateVortexXFX1",Cos(pitch)*224,0,-sin(pitch)*224,0,0,0,random(0,359),513)
TNT1 A 0 A_SetPitch(random(-5,-9)*10)
TNT1 A 0 A_SpawnItemEx("EnkerUltimateVortexXFX1",Cos(pitch)*224,0,-sin(pitch)*224,0,0,0,random(0,359),513)
TNT1 A 1
TNT1 A 0 A_SetPitch(random(-9,9)*10)
TNT1 AA 0 A_SpawnItemEx("EnkerUltimateVortexXFX1",Cos(pitch)*224,0,-sin(pitch)*224,0,0,0,random(0,359),513)
TNT1 A 1
stop
}
}

actor EnkerUltimateVortexXFX : BasicClientSide
{
+FORCEXYBILLBOARD
reactiontime 12
alpha 0.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
ENKU K 0 A_ChangeVelocity(-16,0,0,3)
loopit:
ENKU K 0 A_FadeIn(0.08)
ENKU K 1 A_SpawnItemEx("EnkerUltimateVortexXFX2",0,0,0,momx/1.5,momy/1.5,0,0,9)
ENKU A 0 A_Countdown
loop
}
}

actor EnkerUltimateVortexXFX1 : EnkerUltimateVortexXFX
{
alpha 0.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
TNT1 A 0 //A_ScaleVelocity(0.00390625)
ENKU K 0 A_ChangeVelocity(Cos(pitch)*-14,0,-sin(pitch)*-14,3)//A_ScaleVelocity(-16.0)
loopit:
ENKU K 0 A_FadeIn(0.08)
ENKU K 1 //A_SpawnItemEx("EnkerUltimateVortexXFX2",0,0,0,momx/1.5,momy/1.5,momz/1.5,0,9+16384)
ENKU A 0 A_Countdown
loop
}
}

actor EnkerUltimateVortexXFX2 : EnkerUltimateVortexXFX
{
alpha 0.66
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
ENKU K 5
stop
}
}

Actor EnkerThirdFire_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 //A_SpawnItemEx("EnkerCounterShield",64,0,0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
TNT1 A 0 A_FireCustomMissile("EnkerThirdSwing",0,0,8,-24)
TNT1 A 0 A_PlaySoundEx("weapon/mirroractivate","Weapon")
stop
}
}

Actor EnkerThirdCounter_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_FireCustomMissile("EnkerShot4",0,0,8,0)
TNT1 A 0 A_PlaySoundEx("weapon/mirrordeflect2","Weapon")
stop
}
}

actor EnkerCounterShield 
{
+MISSILE
//+RIPPER
+DONTSPLASH
+SHOOTABLE
+GHOST
+NOBLOOD
+NOTARGETSWITCH
species "EnkerTFType"
+THRUSPECIES
+DONTRIP
-DONTBLAST
Damage 0
Height 48
Radius 32
speed 0
health 100
painchance 256
scale 2.5
States
{
Spawn:
MIRR A 0
MIRR IJ 1
stop
Pain:
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
TNT1 A 1 A_GiveToTarget("EnkerThirdCounter_CI",1)
stop
}
}

actor EnkerThirdSwing
{
Obituary "$OB_ENKER6"
DamageType "EnkerThirdfire"
PROJECTILE
+THRUGHOST
species "EnkerTFType"
+THRUSPECIES
scale 2.5
speed 40
scale 2.5
height 24
radius 24
damage (22)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MIRR IIJ 1
stop
}
}

Actor EnkerShot4 : EnkerShot2
{
	Obituary "$OB_ENKER6"
}

Actor EnkerLowAmmoWatcher : BasicHelper
{
States
{
Spawn:
TNT1 A 7
Spawn_L:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 8 A_GiveToTarget("EnkerLowAmmoCheck")
loop
Death:
TNT1 A 0
Stop
}
}

actor EnkerLowAmmoCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfHealthLower(33,"Pickup2")
stop

Pickup2:
TNT1 A 0 A_GiveInventory("MirrorAbsorbAmmo",1)
stop
}
}

actor PowerEnkerThirdfire : PowerDamage
{
powerup.duration -999999
damagefactor "normal", 1.33
damagefactor "Enker", 1.0
damagefactor "Enker2", 1.0
damagefactor "Enker3", 1.0
damagefactor "EnkerMelee", 1.0
damagefactor "EnkerMeleeStun", 1.0
damagefactor "EnkerUlt", 1.0
damagefactor "EnkerThirdfire", 1.0
}

Actor EnkerCooldownWatcher : BasicHelper
{
reactiontime 77
States
{
Spawn:
TNT1 A 1
Spawn_L:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 2 A_TakeFromTarget("EnkerAbsorbCooldown",1)
TNT1 A 0 A_JumpIfInventory("EnkerAbsorbCooldown",1,1)
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0
Stop
}
}