actor Skullman : VCBaseClass
{
	Player.ScoreIcon "SKULMUGS"
	player.startitem "BaseFlagPack", 1
	player.soundclass "skullmanc"
	player.displayname "Skullman"
	player.jumpz 12
	player.startitem "SkullBarrierBoss"
	player.startitem "Base112Ammo", 112
	player.startitem "UltimateAttackItem3", 1
	player.startitem "UltSoundWatcherSpawn3"
	player.startitem "IsFromMM4"
	Player.ViewHeight 50
	States
	{
		Animation2:
		Spawn:
		SKUL A 0
		SKUL B 1 A_JumpIf(z-floorz>0, "Jumping")
		SKUL A 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+2
		
		See:
		SKUL BBBCCCDDDEEE 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn
		
		Jumping:
		SKUL I 1 A_JumpIf(z-floorz<=0, "Spawn")
		wait

		Missile:
		SKUL GGG 1 A_JumpIf(z-floorz>0, "JumpingMissile")
		
		Missile2:
		SKUL FFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
		Goto Spawn+1
		
		JumpingMissile:
		SKUL KKK 1 A_JumpIf(z-floorz<=0, "Missile")
		
		JumpingMissile2:
		SKUL JJJJ 1 A_JumpIf(z-floorz<=0, "Missile2")
		goto Jumping
		
		Animation1:
		SKUL MMMMM 1 A_JumpIf(z-floorz>0, "JumpingA1")
		
		Animation1b:
		SKUL NNNN 1 A_JumpIf(z-floorz>0, "JumpingA1b")
		goto Spawn+1
		
		JumpingA1:
		SKUL PPPPP 1 A_JumpIf(z-floorz<=0, "Animation1")
		
		JumpingA1b:
		SKUL QQQQ 1 A_JumpIf(z-floorz<=0, "Animation1b")
		goto Jumping
		
		Animation3:
		SKUL LLLLLLLLLLLL 1 A_JumpIf(z-floorz>0, "JumpingA3")
		Goto Spawn+1
		
		JumpingA3:
		SKUL OOOOOOOOOOOO 1 A_JumpIf(z-floorz<=0, "Animation3")
		Goto Jumping
		
		ClassTimeStop:
		PLAY A 0 SetPlayerProperty(0,1,4)
		PLAY A 0 ACS_Execute(528,0)
		SKUL AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		PLAY A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		SKUL HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		ClassDeath:
		SKUL H 20 ACS_ExecuteAlways(999,0,0)
		SKUL H 0 A_PlayerScream
		NOFX A 0 A_SpawnItemEx("FakeDeathFX",0,0,32)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		SKUL A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("SkullBarrierWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("SkullBarrierWepM")
		goto ClassDeath
	}
}

actor SkullBarrierBoss : VCBaseWeapon
{
	Weapon.AmmoType "Base112Ammo"
	Weapon.ammouse 0
	Obituary "$OB_SKULLMAN1"
	States
	{
		Ready:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("Base112Ammo",112,"Ready.CanThird")
		SKUB A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,112)) SKUB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		SKUB A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,112)) SKUB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		SKUB A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,112)) SKUB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		SKUB A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,112)) SKUB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		SKUB A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,112)) SKUB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		SKUB A 0 A_GiveInventory("Base112Ammo",4)
		goto Ready
		
		Ready.CanThird:
		SKUB A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,112)) SKUB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") SKUB A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		SKUB A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,112)) SKUB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") SKUB A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		SKUB A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,112)) SKUB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") SKUB A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		SKUB A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,112)) SKUB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") SKUB A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		SKUB A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,112)) SKUB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") SKUB A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		SKUB A 0 A_GiveInventory("Base112Ammo",4)
		goto Ready
		
		Ready.Barrier:
		SKUB G 1 A_WeaponReady(WRF_NOPRIMARY)
		SKUB G 1 A_JumpIfInventory("SkullCancelFlag",1,"Barrier.Finish")
		
		SKUB H 1 A_WeaponReady(WRF_NOPRIMARY)
		SKUB H 1 A_JumpIfInventory("SkullCancelFlag",1,"Barrier.Finish")
		
		SKUB I 1 A_WeaponReady(WRF_NOPRIMARY)
		SKUB I 1 A_JumpIfInventory("SkullCancelFlag",1,"Barrier.Finish")
		
		SKUB H 1 A_WeaponReady(WRF_NOPRIMARY)
		SKUB H 1 A_JumpIfInventory("SkullCancelFlag",1,"Barrier.Finish")
		
		SKUB G 1 A_WeaponReady(WRF_NOPRIMARY)
		SKUB G 1 A_JumpIfInventory("SkullCancelFlag",1,"Barrier.Finish")
		goto Ready.Barrier
		
		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		SKUB A 1 A_Lower
		Loop
		
		Select:
		TNT1 A 0 ACS_ExecuteAlways(991,0,787)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		SKUB A 1 A_Raise
		Loop
		
		User1:
		SKUB A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
		SKUB A 0 A_GiveInventory("Base112Ammo",4)
		SKUB DEF 1
		SKUB D 0 A_PlaySoundEx("weapon/skullcage","Weapon")
		SKUB A 0 A_FireCustomMissile("SkullCage",0,0,1,14)
		SKUB A 0 A_TakeInventory("Base112Ammo",112)
		SKUB I 1 Offset(4,30)
		SKUB I 1 Offset(1,33)
		SKUB I 1 Offset(4,36) A_GiveInventory("Base112Ammo",4)
		SKUB I 1 Offset(4,30)
		SKUB III 1 A_WeaponReady(WRF_NOFIRE)
		SKUB A 0 A_GiveInventory("Base112Ammo",4)
		SKUB IIFED 1
		SKUB A 1 A_GiveInventory("Base112Ammo",4)
		goto Ready
		
		Fire:
		SKUB A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
		SKUB A 0 A_FireCustomMissile("SkullBullet",0,0,1,14)
		SKUB I 0 A_GiveInventory("Base112Ammo",9)
		SKUB B 1 OffSet(3,35)
		SKUB B 1 OffSet(14,47)
		SKUB C 1 OffSet(6,38)
		SKUB C 1 OffSet(3,35)
		SKUB A 12 A_WeaponReady(WRF_NOFIRE)
		goto Ready
		
		Altfire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
		SKUB A 0 A_JumpIfInventory("SkullAltfireCooldown",1,"Ready")
		SKUB D 0 A_JumpIfInventory("BaseCustomFlag1",1,"Barrier.FinishPre")
		SKUB D 0 A_PlaySoundEx("weapon/skullactivate","Weapon")
		SKUB A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		SKUB DEFI 2 A_GiveInventory("BaseCustomFlag1")
		SKUB H 0 A_JumpIfNoAmmo("NoAmmo")
		SKUB H 2 A_GiveInventory("ShieldCheck", 1)
		SKUB H 0 A_TakeInventory("ShieldCheck", 1)
		SKUB A 0 A_GiveInventory("SkullShieldCheck", 130)
		SKUB A 0 ACS_ExecuteAlways(982, 0, 1)
		SKUB A 0 A_SpawnItemEx("SkullManBarrierWatcher")
		SKUB G 0 A_GunFlash
		goto Ready.Barrier
		
		Barrier.FinishPre:
		SKUB A 0 A_GiveInventory("SkullCooldownHandler")
		
		Barrier.Finish:
		SKUB A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		TNT1 A 0 A_GunFlash("NoFlash")
		SKUB FEDA 1 A_TakeInventory("BaseCustomFlag1",1)
		goto Ready
		
		UltimateAttack:
		SKUB A 1
		SKUB A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
		SKUB A 0 A_SpawnItemEx("SkeletonJoeUlt1",0,60,0,0,0,0,90)
		SKUB A 0 A_SpawnItemEx("SkeletonJoeUlt2",0,-60,0,0,0,0,270)
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,36)
		TNT1 A 0 A_TakeInventory("UltAttackFlag",1)
		TNT1 A 0 A_TakeInventory("MediumUltimateAmmo",1)
		CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		CUTA A 0 A_GiveInventory("WindUltCooldown")
		SKUB A 1 A_TakeInventory("UltAttackFlag",1)
		goto Ready
		
		Flash:
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 0 A_JumpIfInventory("SkullHitFlag",1,"NoFlash")
		TNT1 A 1 A_GiveInventory("SkullBarrierVisual1")
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 0 A_JumpIfInventory("SkullHitFlag",1,"NoFlash")
		TNT1 A 1 A_GiveInventory("SkullBarrierVisual2")
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 0 A_JumpIfInventory("SkullHitFlag",1,"NoFlash")
		TNT1 A 1 A_GiveInventory("SkullBarrierVisual3")
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 0 A_JumpIfInventory("SkullHitFlag",1,"NoFlash")
		TNT1 A 1 A_GiveInventory("SkullBarrierVisual4")
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 0 A_JumpIfInventory("SkullHitFlag",1,"NoFlash")
		TNT1 A 1 A_GiveInventory("SkullBarrierVisual5")
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 0 A_JumpIfInventory("SkullHitFlag",1,"NoFlash")
		TNT1 A 1 A_GiveInventory("SkullBarrierVisual6")
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 0 A_JumpIfInventory("SkullHitFlag",1,"NoFlash")
		TNT1 A 1 A_GiveInventory("SkullBarrierVisual7")
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 0 A_JumpIfInventory("SkullHitFlag",1,"NoFlash")
		TNT1 A 1 A_GiveInventory("SkullBarrierVisual8")
		TNT1 A 0 A_JumpIfInventory("Base112Ammo",1,"Flash")
		goto NoFlash
		
		NoFlash:
		TNT1 A 0 A_GiveInventory("SkullCancelFlag",1)
		stop
	}
}

actor SkullAltfireCooldown : Ammo
{
	inventory.amount 1
	inventory.maxamount 175
	+INVENTORY.IGNORESKILL
}

actor SkullMovingFlag : Powerup
{
Powerup.Duration 2
}

actor SkullCancelFlag : Powerup
{
Powerup.Duration 6
}

actor SkullHitFlag : Powerup
{
Powerup.Duration 6
}

actor SkullCageHit : Powerup
{
Powerup.Duration 6
}

actor SkullDebuffFlag : Powerup
{
Powerup.Duration 210
}

actor SkullBullet : FastProjectile
{
Obituary "$OB_SKULLMAN1"
PROJECTILE
+LOOKALLAROUND
+SKYEXPLODE
DamageType "Skullman"
//SeeSound "weapon/mbuster"
Speed 50
Damage (17)
Radius 8
Height 8
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
BASB A 1
Goto Spawn+2
}
}

actor SkullBarrierVisual1 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("VC_CheckBtn",1)>1 || CallACS("VC_CheckBtn",5)>1,"Pickup2")
goto Pickup3

Pickup2:
TNT1 A 0 A_GiveInventory("SkullBarrierBlue1")
stop

Pickup3:
TNT1 A 0 A_GiveInventory("SkullBarrierWhite1")
stop
}
}

actor SkullBarrierVisual2 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("Base112Ammo",2)
TNT1 A 0 A_JumpIf(CallACS("VC_CheckBtn",1)>1 || CallACS("VC_CheckBtn",5)>1,"Pickup2")
goto Pickup3

Pickup2:
TNT1 A 0 A_GiveInventory("SkullBarrierBlue2")
stop

Pickup3:
TNT1 A 0 A_GiveInventory("SkullBarrierWhite2")
stop
}
}


actor SkullBarrierVisual3 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("VC_CheckBtn",1)>1 || CallACS("VC_CheckBtn",5)>1,"Pickup2")
goto Pickup3

Pickup2:
TNT1 A 0 A_GiveInventory("SkullBarrierBlue3")
stop

Pickup3:
TNT1 A 0 A_GiveInventory("SkullBarrierWhite3")
stop
}
}

actor SkullBarrierVisual4 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("Base112Ammo",2)
TNT1 A 0 A_JumpIf(CallACS("VC_CheckBtn",1)>1 || CallACS("VC_CheckBtn",5)>1,"Pickup2")
goto Pickup3

Pickup2:
TNT1 A 0 A_GiveInventory("SkullBarrierBlue4")
stop

Pickup3:
TNT1 A 0 A_GiveInventory("SkullBarrierWhite4")
stop
}
}

actor SkullBarrierVisual5 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("VC_CheckBtn",1)>1 || CallACS("VC_CheckBtn",5)>1,"Pickup2")
goto Pickup3

Pickup2:
TNT1 A 0 A_GiveInventory("SkullBarrierBlue5")
stop

Pickup3:
TNT1 A 0 A_GiveInventory("SkullBarrierWhite5")
stop
}
}

actor SkullBarrierVisual6 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("Base112Ammo",2)
TNT1 A 0 A_JumpIf(CallACS("VC_CheckBtn",1)>1 || CallACS("VC_CheckBtn",5)>1,"Pickup2")
goto Pickup3

Pickup2:
TNT1 A 0 A_GiveInventory("SkullBarrierBlue6")
stop

Pickup3:
TNT1 A 0 A_GiveInventory("SkullBarrierWhite6")
stop
}
}

actor SkullBarrierVisual7 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("VC_CheckBtn",1)>1 || CallACS("VC_CheckBtn",5)>1,"Pickup2")
goto Pickup3

Pickup2:
TNT1 A 0 A_GiveInventory("SkullBarrierBlue7")
stop

Pickup3:
TNT1 A 0 A_GiveInventory("SkullBarrierWhite7")
stop
}
}

actor SkullBarrierVisual8 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("Base112Ammo",2)
TNT1 A 0 A_JumpIf(CallACS("VC_CheckBtn",1)>1 || CallACS("VC_CheckBtn",5)>1,"Pickup2")
goto Pickup3

Pickup2:
TNT1 A 0 A_GiveInventory("SkullBarrierBlue8")
stop

Pickup3:
TNT1 A 0 A_GiveInventory("SkullBarrierWhite8")
stop
}
}

actor SkullBarrierBlue1 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SkullMovingFlag")
TNT1 A 0 A_SpawnItemEx("SkullManBarrierB1")
TNT1 A 0 A_SpawnItemEx("SkullBlueHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierBlue2 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SkullMovingFlag")
TNT1 A 0 A_SpawnItemEx("SkullManBarrierB2")
TNT1 A 0 A_SpawnItemEx("SkullBlueHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierBlue3 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SkullMovingFlag")
TNT1 A 0 A_SpawnItemEx("SkullManBarrierB3")
TNT1 A 0 A_SpawnItemEx("SkullBlueHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierBlue4 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SkullMovingFlag")
TNT1 A 0 A_SpawnItemEx("SkullManBarrierB4")
TNT1 A 0 A_SpawnItemEx("SkullBlueHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierBlue5 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SkullMovingFlag")
TNT1 A 0 A_SpawnItemEx("SkullManBarrierB5")
TNT1 A 0 A_SpawnItemEx("SkullBlueHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierBlue6 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SkullMovingFlag")
TNT1 A 0 A_SpawnItemEx("SkullManBarrierB6")
TNT1 A 0 A_SpawnItemEx("SkullBlueHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierBlue7 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SkullMovingFlag")
TNT1 A 0 A_SpawnItemEx("SkullManBarrierB7")
TNT1 A 0 A_SpawnItemEx("SkullBlueHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierBlue8 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SkullMovingFlag")
TNT1 A 0 A_SpawnItemEx("SkullManBarrierB8")
TNT1 A 0 A_SpawnItemEx("SkullBlueHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierWhite1 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SkullManBarrierW1")
TNT1 A 0 A_SpawnItemEx("SkullShieldBox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SkullWhiteHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierWhite2 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SkullManBarrierW2")
TNT1 A 0 A_SpawnItemEx("SkullShieldBox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SkullWhiteHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierWhite3 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SkullManBarrierW3")
TNT1 A 0 A_SpawnItemEx("SkullShieldBox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SkullWhiteHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierWhite4 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SkullManBarrierW4")
TNT1 A 0 A_SpawnItemEx("SkullShieldBox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SkullWhiteHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierWhite5 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SkullManBarrierW5")
TNT1 A 0 A_SpawnItemEx("SkullShieldBox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SkullWhiteHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierWhite6 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SkullManBarrierW6")
TNT1 A 0 A_SpawnItemEx("SkullShieldBox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SkullWhiteHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierWhite7 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SkullManBarrierW7")
TNT1 A 0 A_SpawnItemEx("SkullShieldBox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SkullWhiteHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullBarrierWhite8 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SkullManBarrierW8")
TNT1 A 0 A_SpawnItemEx("SkullShieldBox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("SkullWhiteHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor SkullManBarrierB1
{
Scale 2.5
Height 0
Radius 0
+NOINTERACTION
+CLIENTSIDEONLY
-SOLID
+NOGRAVITY
+MISSILE
+DONTBLAST
States
{
Spawn:
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
SKLC A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
stop
}
}

actor SkullManBarrierB2 : SkullManBarrierB1
{
States
{
Spawn:
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
SKLC B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
stop
}
}

actor SkullManBarrierB3 : SkullManBarrierB1
{
States
{
Spawn:
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
SKLC C 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
stop
}
}

actor SkullManBarrierB4 : SkullManBarrierB1
{
States
{
Spawn:
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
SKLC D 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
stop
}
}

actor SkullManBarrierB5 : SkullManBarrierB1
{
States
{
Spawn:
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
SKLC E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
stop
}
}

actor SkullManBarrierB6 : SkullManBarrierB1
{
States
{
Spawn:
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
SKLC F 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
stop
}
}

actor SkullManBarrierB7 : SkullManBarrierB1
{
States
{
Spawn:
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
SKLC G 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
stop
}
}

actor SkullManBarrierB8 : SkullManBarrierB1
{
States
{
Spawn:
TNT1 A 0 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
SKLC H 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
stop
}
}

actor SkullManBarrierW1 : SkullManBarrierB1
{
translation "192:192=4:4", "193:198=87:87"
}

actor SkullManBarrierW2 : SkullManBarrierB2
{
translation "192:192=4:4", "193:198=87:87"
}

actor SkullManBarrierW3 : SkullManBarrierB3
{
translation "192:192=4:4", "193:198=87:87"
}

actor SkullManBarrierW4 : SkullManBarrierB4
{
translation "192:192=4:4", "193:198=87:87"
}

actor SkullManBarrierW5 : SkullManBarrierB5
{
translation "192:192=4:4", "193:198=87:87"
}

actor SkullManBarrierW6 : SkullManBarrierB6
{
translation "192:192=4:4", "193:198=87:87"
}

actor SkullManBarrierW7 : SkullManBarrierB7
{
translation "192:192=4:4", "193:198=87:87"
}

actor SkullManBarrierW8 : SkullManBarrierB8
{
translation "192:192=4:4", "193:198=87:87"
}

actor SkullManBarrierProtection : PowerProtection 
{
powerup.duration 10
damagefactor "NORMAL", 0.0
damagefactor "CRUSH", 1.0
damagefactor "TELEFRAG", 1.0
damagefactor "LaserTrident", 1.0
}

actor SkullManBarrierWatcher2
{
+MISSILE
+NOINTERACTION
+DONTBLAST
+NOGRAVITY
-SOLID
Height 1
Radius 1
var int user_countdown;
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("SkullMovingFlag", 1, "NoInvuln")
TNT1 A 1
TNT1 A 0 A_GiveToTarget("SkullManInvul")
TNT1 A 0 A_JumpIfInTargetInventory("SkullCancelFlag", 1, "DeathSilent")
TNT1 A 0 A_JumpIf(user_countdown >= 130, "DeathSilent")
TNT1 A 0 A_JumpIfInTargetInventory("ShieldHits", 1, "Spawn")
Goto Death

NoInvuln:
TNT1 A 1
TNT1 A 0 A_GiveToTarget("SkullManNoInvul")
TNT1 A 0 A_JumpIfInTargetInventory("SkullCancelFlag", 1, "DeathSilent")
TNT1 A 0 A_JumpIf(user_countdown >= 130, "DeathSilent")
TNT1 A 0 A_JumpIfInTargetInventory("ShieldHits", 1, "Spawn")
Goto Death

Death:
TNT1 A 0 A_GiveToTarget("SkullBreakSound", 1)
TNT1 A 0 A_TakeFromTarget("Base112Ammo",28)
DeathSilent:
TNT1 A 0 A_TakeFromTarget("ShieldHits", 999)
TNT1 A 0 A_GiveToTarget("SkullManBarrierProtection", 1)
TNT1 A 0 A_GiveToTarget("SkullCancelFlag",1)
TNT1 A 0 A_GiveToTarget("SkullManNoInvul")
stop
}
}

actor SkullManBarrierWatcher
{
	+MISSILE
	+NOINTERACTION
	+DONTBLAST
	+NOGRAVITY
	-SOLID
	Height 1
	Radius 1
	var int user_countdown;
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInTargetInventory("SkullMovingFlag", 1, "NoInvuln")
			TNT1 A 1
			TNT1 A 0 A_GiveToTarget("SkullManInvul")
			TNT1 A 0 A_JumpIfInTargetInventory("SkullCancelFlag", 1, "DeathSilent")
			TNT1 A 0 A_TakeFromTarget("SkullShieldCheck",1)
			TNT1 A 0 A_SetUserVar("user_countdown", user_countdown + 1)
			TNT1 A 0 A_JumpIfInTargetInventory("ShieldCheck", 1, "DeathSilent")
			TNT1 A 0 A_JumpIf(user_countdown >= 130, "DeathSilent")
			TNT1 A 0 A_JumpIfInTargetInventory("SkullShieldCheck", 1, "Spawn")
			Goto Death
		NoInvuln:
			TNT1 A 1
			TNT1 A 0 A_GiveToTarget("SkullManNoInvul")
			TNT1 A 0 A_JumpIfInTargetInventory("SkullCancelFlag", 1, "DeathSilent")
			TNT1 A 0 A_TakeFromTarget("SkullShieldCheck",1)
			TNT1 A 0 A_SetUserVar("user_countdown", user_countdown + 1)
			TNT1 A 0 A_JumpIfInTargetInventory("ShieldCheck", 1, "DeathSilent")
			TNT1 A 0 A_JumpIf(user_countdown >= 130, "DeathSilent")
			TNT1 A 0 A_JumpIfInTargetInventory("SkullShieldCheck", 1, "Spawn")
			Goto Death
		Death:
			TNT1 A 0 A_GiveToTarget("SkullBreakSound", 1)
			TNT1 A 0 A_TakeFromTarget("Base112Ammo",28)
		DeathSilent:
			TNT1 A 0 A_TakeFromTarget("SkullShieldCheck", 999)
			TNT1 A 0 A_GiveToTarget("SkullManBarrierProtection", 1)
			TNT1 A 0 A_GiveToTarget("SkullCancelFlag",1)
			TNT1 A 0 A_GiveToTarget("SkullManNoInvul")
			TNT1 A 0 A_GiveToTarget("SkullCooldownHandler")
			stop
		End:
			TNT1 A 0
			TNT1 A 1 A_TakeFromTarget("SkullShieldCheck", 1)
			stop
	}
}

actor SkullManInvul : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("InvProtection")
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
stop
}
}

actor SkullManNoInvul : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("InvProtection")
TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
stop
}
}

actor SkullBlueHitbox
{
Obituary "$OB_SKULLMAN3"
PROJECTILE
+NOEXPLODEFLOOR
species "SkullManShieldType"
+THRUSPECIES
Radius 48
Height 48
scale 2.5
speed 0
damage (15)
Damagetype "SkullManBlue"
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
}
}

actor SkullWhiteHitbox : SkullBlueHitbox
{
Obituary "$OB_SKULLMAN2"
Damagetype "SkullManWhite"
damage (35)
}

actor SkullManBarrierProtect : PowerProtection
{
powerup.duration 17
damagefactor "SkullManWhite", 0.0
damagefactor "SkullManBlue", 0.0
}

actor SkullBlueCancel : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SkullHitFlag")
TNT1 A 0 A_TakeInventory("Base112Ammo",28)
stop
}
}

actor SkullWhiteCancel : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SkullHitFlag")
TNT1 A 0 A_TakeInventory("Base112Ammo",28)
stop
}
}

actor SkullShieldBox
{
+MISSILE
Speed 0
+DONTSPLASH
+NOGRAVITY
Damage 0
Height 48
Radius 48
health 99999
scale 2.5
+SHOOTABLE
+NOBLOOD
-SOLID
species "SkullManShieldType"
+THRUSPECIES
damagefactor "SkullManBlue", 0.0
damagefactor "SkullManWhite", 0.0
painchance 256
bloodtype ""
+DONTRIP
+GHOST
+NORADIUSDMG
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
Death:
TNT1 A 0
TNT1 A 1
stop
Pain:
TNT1 A 0
TNT1 A 0 A_PlaySound("item/protoreflect")
TNT1 A 1 A_TakeFromTarget("Base112Ammo",7)
stop
}
}

actor SkullCage
{
Obituary "$OB_SKULLMAN4"
translation "192:192=4:4", "198:198=87:87"
PROJECTILE
height 16
radius 16
speed 40
scale 2.5
damage(12)
damagetype "SkullCage"
+RIPPER
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/skullloop","Body",1)
loopit:
TNT1 A 0 A_SpawnItemEx("SkullCageFX1",32,0,0,momx,momy,momz,0+11.25,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX1",32,0,0,momx,momy,momz,90+11.25,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX1",32,0,0,momx,momy,momz,180+11.25,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX1",32,0,0,momx,momy,momz,270+11.25,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_JumpIfInTargetInventory("SkullCageHit",1,"Death")
TNT1 A 0 A_SpawnItemEx("SkullCageFX2",32,0,0,momx,momy,momz,0+22.5,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX2",32,0,0,momx,momy,momz,90+22.5,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX2",32,0,0,momx,momy,momz,180+22.5,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX2",32,0,0,momx,momy,momz,270+22.5,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_JumpIfInTargetInventory("SkullCageHit",1,"Death")
TNT1 A 0 A_SpawnItemEx("SkullCageFX3",32,0,0,momx,momy,momz,0+33.75,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX3",32,0,0,momx,momy,momz,90+33.75,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX3",32,0,0,momx,momy,momz,180+33.75,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX3",32,0,0,momx,momy,momz,270+33.75,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_JumpIfInTargetInventory("SkullCageHit",1,"Death")
TNT1 A 0 A_SpawnItemEx("SkullCageFX4",32,0,0,momx,momy,momz,0+45,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX4",32,0,0,momx,momy,momz,90+45,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX4",32,0,0,momx,momy,momz,180+45,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX4",32,0,0,momx,momy,momz,270+45,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_JumpIfInTargetInventory("SkullCageHit",1,"Death")
TNT1 A 0 A_SpawnItemEx("SkullCageFX5",32,0,0,momx,momy,momz,0+56.25,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX5",32,0,0,momx,momy,momz,90+56.25,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX5",32,0,0,momx,momy,momz,180+56.25,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX5",32,0,0,momx,momy,momz,270+56.25,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_JumpIfInTargetInventory("SkullCageHit",1,"Death")
TNT1 A 0 A_SpawnItemEx("SkullCageFX6",32,0,0,momx,momy,momz,0+67.5,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX6",32,0,0,momx,momy,momz,90+67.5,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX6",32,0,0,momx,momy,momz,180+67.5,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX6",32,0,0,momx,momy,momz,270+67.5,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_JumpIfInTargetInventory("SkullCageHit",1,"Death")
TNT1 A 0 A_SpawnItemEx("SkullCageFX7",32,0,0,momx,momy,momz,0+78.75,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX7",32,0,0,momx,momy,momz,90+78.75,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX7",32,0,0,momx,momy,momz,180+78.75,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX7",32,0,0,momx,momy,momz,270+78.75,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_JumpIfInTargetInventory("SkullCageHit",1,"Death")
TNT1 A 0 A_SpawnItemEx("SkullCageFX8",32,0,0,momx,momy,momz,0+90,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX8",32,0,0,momx,momy,momz,90+90,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX8",32,0,0,momx,momy,momz,180+90,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("SkullCageFX8",32,0,0,momx,momy,momz,270+90,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_JumpIfInTargetInventory("SkullCageHit",1,"Death")
loop
Death:
TNT1 A 0
stop
}
}

actor SkullCageFX1 : SkullCage
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SK4C A 1
SK4C A 1
stop
}
}

actor SkullCageFX2 : SkullCageFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SK4C B 1
SK4C B 1
stop
}
}

actor SkullCageFX3 : SkullCageFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SK4C C 1
SK4C C 1
stop
}
}

actor SkullCageFX4 : SkullCageFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SK4C D 1
SK4C D 1
stop
}
}

actor SkullCageFX5 : SkullCageFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SK4C E 1
SK4C E 1
stop
}
}

actor SkullCageFX6 : SkullCageFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SK4C F 1
SK4C F 1
stop
}
}

actor SkullCageFX7 : SkullCageFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SK4C G 1
SK4C G 1
stop
}
}

actor SkullCageFX8 : SkullCageFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SK4C H 1
SK4C H 1
stop
}
}

actor SkullCageProtect : PowerProtection
{
powerup.duration 350
damagefactor "SkullCage", 0.0
}

actor SkullDebuffDamage : PowerProtection
{
powerup.duration 210
damagefactor "SkullManBlue", 2.5
damagefactor "SkullManWhite", 1000.0
}

actor SkullDebuffFX1
{
translation "192:192=4:4", "198:198=87:87"
scale 2.5
PROJECTILE
+NOINTERACTION
+NOCLIP
damage(0)
radius 5
height 5
var int user_warpAngle;
alpha 0.5
renderstyle translucent
reactiontime 210
meleerange 360
States
{
Spawn:
TNT1 A 0 A_Warp(AAPTR_TARGET,70,0,30,user_warpAngle+meleerange,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
goto loopit

loopit:
SK4C A 0 A_SetUserVar("user_warpAngle",user_warpAngle+12)
SK4C A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SK4C A 1 A_Warp(AAPTR_TARGET,70,0,30,user_warpAngle+meleerange,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
TNT1 A 0 A_Countdown
SK4C B 0 A_SetUserVar("user_warpAngle",user_warpAngle+12)
SK4C B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SK4C B 1 A_Warp(AAPTR_TARGET,70,0,30,user_warpAngle+meleerange,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
TNT1 A 0 A_Countdown
SK4C C 0 A_SetUserVar("user_warpAngle",user_warpAngle+12)
SK4C C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SK4C C 1 A_Warp(AAPTR_TARGET,70,0,30,user_warpAngle+meleerange,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
TNT1 A 0 A_Countdown
SK4C D 0 A_SetUserVar("user_warpAngle",user_warpAngle+12)
SK4C D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SK4C D 1 A_Warp(AAPTR_TARGET,70,0,30,user_warpAngle+meleerange,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
TNT1 A 0 A_Countdown
SK4C E 0 A_SetUserVar("user_warpAngle",user_warpAngle+12)
SK4C E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SK4C E 1 A_Warp(AAPTR_TARGET,70,0,30,user_warpAngle+meleerange,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
TNT1 A 0 A_Countdown
SK4C F 0 A_SetUserVar("user_warpAngle",user_warpAngle+12)
SK4C F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SK4C F 1 A_Warp(AAPTR_TARGET,70,0,30,user_warpAngle+meleerange,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
TNT1 A 0 A_Countdown
SK4C G 0 A_SetUserVar("user_warpAngle",user_warpAngle+12)
SK4C G 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SK4C G 1 A_Warp(AAPTR_TARGET,70,0,30,user_warpAngle+meleerange,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
TNT1 A 0 A_Countdown
SK4C H 0 A_SetUserVar("user_warpAngle",user_warpAngle+12)
SK4C H 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SK4C H 1 A_Warp(AAPTR_TARGET,70,0,30,user_warpAngle+meleerange,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
TNT1 A 0 A_Countdown
loop

Death:
TNT1 A 0
stop
}
}

actor SkullDebuffFX2 : SkullDebuffFX1
{
meleerange 90
}

actor SkullDebuffFX3 : SkullDebuffFX1
{
meleerange 180
}

actor SkullDebuffFX4 : SkullDebuffFX1
{
meleerange 270
}

actor SkullCageWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Renderstyle none
reactiontime 210
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0 A_TakeFromTarget("SkullDebuffFlag")
TNT1 A 0 A_TakeFromTarget("NoThirdFire")
TNT1 A 0 A_TakeFromTarget("NoAltfire",1)
stop
}
}

actor SkeletonJoeUlt1
{
	renderstyle add
	+NOCLIP
	PROJECTILE
	scale 2.5
	-DONTBLAST
	+SEEKERMISSILE
	-EXTREMEDEATH
	+SCREENSEEKER
	+NOINTERACTION
	+DONTREFLECT
	speed 30
	Radius 6
	Height 6
	Damage (0)
	reactiontime 25
	meleerange 60
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode")
		TNT1 A 0 A_PlaySoundEx("misc/sunstarwrathpillar", "Auto")
		TNT1 A 0 A_Warp(AAPTR_TARGET, 0, meleerange, 0, 0, WARPF_NOCHECKPOSITION)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("SkullVanishFX",random(0,32),0,random(0,56),frandom(0.5,1.3),0,0,random(0,359))
		TNT1 A 0 A_Stop
		goto loopit
		
		loopit:
		TNT1 A 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"Death")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		SK3J A 0 A_GiveInventory("CutterFlag",1)
		SK3J A 0 A_GiveToTarget("WindUltCooldown")
		SK3J A 0 A_JumpIfInventory("CutterFlag",16,"Rattled")
		SK3J A 1 A_Warp(AAPTR_TARGET, 0, meleerange, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		loop
		
		Rattled:
		SK3J BBBB 1 A_Warp(AAPTR_TARGET, 0, meleerange, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		SK3J B 1 A_Warp(AAPTR_TARGET, 0, meleerange, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		SK3J A 0 A_SeekerMissile (89, 90, SMF_LOOK|SMF_CURSPEED, 256, 10)
		SK3J A 0 A_CustomMissile("SkeletonJoeBone",32,0,0,2,-pitch)
		SK3J A 0 A_PlaySoundEx("misc/itemthrow","Body")
		SK3J A 0 A_TakeFromTarget("MediumUltimateAmmo",6)
		SK3J CCCAAAAA 1 A_Warp(AAPTR_TARGET, 0, meleerange, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
		SK3J A 0 A_TakeInventory("CutterFlag",99)
		SK3J A 0 A_CountDown
		goto loopit
		
		Death:
		SK3J D 0 A_PlaySoundEx("misc/meltinghands","Auto")
		SK3J DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 1 ThrustThingZ(0,3,0,0)
		
		Death2:
		SK3J D 0 ThrustThingZ(0,3,0,0)
		SK3J DDDD 0 A_SpawnItemEx("SkullVanishFX",random(0,32),0,random(64,60),0,0,random(-2,-1),random(0,359))
		SK3J D 1 A_FadeOut(0.03)
		SK3J D 0 A_JumpIf(alpha<=0,"End")
		loop
		
		End:
		TNT1 A 0
		stop
	}
}

actor SkeletonJoeUlt2 : SkeletonJoeUlt1
{
meleerange -60
}

actor SkeletonJoeBone
{
gravity 3.0
PROJECTILE
-NOGRAVITY
+HITTRACER
DamageType "SkullmanUlt"
Obituary "$OB_SKULLMAN5"
Speed 50
Radius 12
Height 16
+HEXENBOUNCE
bouncefactor 0.9
bouncecount 3
+SEEKERMISSILE
+SCREENSEEKER
-EXTREMEDEATH
species "SkullManShieldType"
+THRUSPECIES
+THRUGHOST
Damage (16)
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 ThrustThingZ(0,45,0,1)
TNT1 A 0 A_SeekerMissile (89, 90, SMF_LOOK|SMF_CURSPEED, 256, 10)

loopit:
SK3J FGHI 2 A_GiveToTarget("WindUltCooldown")
loop
}
}

actor SkullVanishFX : BasicClientSide
{
reactiontime 35
renderstyle add
States
{
Spawn:
TNT1 A 0
SK3J E 1 A_FadeOut(0.02)
SK3J E 1 A_SetScale(ScaleX - 0.2, ScaleY - 0.2)
SK3J E 1 A_FadeOut(0.02)
SK3J E 1 A_SetScale(ScaleX - 0.1, ScaleY - 0.1)
SK3J E 0 A_CountDown
loop
}
}

actor SkullVanishFX2 : SkullVanishFX
{
translation "4:4=192:192", "87:87=193:193"
}

actor SkullVanishFX3 : SkullVanishFX
{
translation "4:4=218:218", "87:87=220:220"
}

actor SkullCooldownHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SkullAltfireCooldown",175)
TNT1 A 0 A_SpawnItemEx("SkullAltCooldownWatcher")
stop
}
}

actor SkullAltCooldownWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn: 
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_TakeFromTarget("SkullAltfireCooldown",1)
TNT1 A 0 A_JumpIfInTargetInventory("SkullAltfireCooldown",1,"Spawn")
Death:
TNT1 A 1
stop
}
}

Actor SkullUltHeal : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CheckClass("Skullman"),"Success")
goto Nope

Success:
TNT1 A 0 A_PlaySoundEx("misc/eclipsehealthup", "Skullman")
TNT1 A 0 A_GiveInventory("Health",12)

Nope:
TNT1 A 0
Stop
}
}

actor SkullAbsorbFX
{
Translation  "192:192=177:177", "198:198=189:189"
PROJECTILE
+NOINTERACTION
+NOCLIP
+SEEKERMISSILE
+BRIGHT
reactiontime 10
renderstyle add
speed 25
Damage (0)
height 10
radius 10
Scale 1.5
States 
{
Spawn:
TNT1 A 0
TNT1 A 0 A_TransferPointer(2,0,2,2)
TNT1 A 0 A_RearrangePointers(0,0,2)
SK3J E 0 A_FaceTarget
loopit:
SK3J E 0 A_SeekerMissile(90, 90, SMF_PRECISE, 256)
SK3J E 1 A_JumpIfCloser(64, "Death")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",10,"loopit2")
loop
loopit2:
SK3J E 0 A_SeekerMissile(90, 90, SMF_PRECISE, 256)
SK3J E 0 A_JumpIfCloser(64, "Death")
SK3J E 0 A_SetScale(scalex+0.1,scaley+0.1)
SK3J E 1 A_FadeOut(0.1)
loop
Death:
TNT1 A 0
stop
}
}