actor Timeman : VCBaseClass
{
	Player.ScoreIcon "TIMEMUGS"
	player.startitem "BaseFlagPack", 1
	player.soundclass "Timemanc"
	player.displayname "Timeman"
	player.forwardmove 0.8, 0.8
	player.sidemove 0.78, 0.78
	player.jumpz 10
	player.startitem "IsFromMM1"
	player.startitem "TimeSlowBoss"
	player.startitem "Base28Ammo", 28
	player.startitem "CanThirdFire"
	player.startitem "UltimateAttackItem5", 1
	player.startitem "UltSoundWatcherSpawn5"
	States
	{
		Spawn:
		NTIM A 0
		NTIM B 1 A_JumpIf(z-floorz>0, "Jumping")
		NTIM A 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+2
		
		See:
		NTIM BBBBCCCCDDDDEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn
		
		Jumping:
		NTIM I 1 A_JumpIf(z-floorz<=0, "Spawn")
		loop
		
		Missile:
		NTIM FFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile")
		NTIM GGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile")
		Goto Spawn+1
		
		JumpingMissile:
		NTIM JJJJJJJJJ 1 A_JumpIf(z-floorz<=0, "Missile")
		Goto Jumping
		
		Animation1:
		NTIM GGGGGGGG 1 A_JumpIf(z-floorz>0, "JumpingA1")
		Goto Spawn+1
		
		JumpingA1:
		NTIM JJJJJJJJ 1 A_JumpIf(z-floorz<=0, "Animation1")
		Goto Jumping
		
		Animation2:
		NTIM KIL 3
		NTIM MNMNMN 4
		Goto Spawn+2
		
		ClassTimeStop:
		PLAY A 0 SetPlayerProperty(0,1,4)
		PLAY A 0 ACS_Execute(528,0)
		NTIM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		PLAY A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		NTIM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		ClassDeath:
		NTIM H 0 A_TakeInventory("BaseCustomFlag1",1)
		NTIM H 8 ACS_ExecuteAlways(999,0,0)
		NTIM H 12 A_SpawnItemEx("MM1Death")
		NTIM H 0 A_PlayerScream
		NOFX A 0 A_SpawnItemEx("FakeDeathFXMM1",0,0,32)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		NTIM A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("TimeSlowWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("TimeSlowWepM")
		goto ClassDeath
	}
}

actor TimeSlowBoss : VCBaseWeapon
{
	Weapon.AmmoUse 1
	Weapon.AmmoType "Base28Ammo"
	Obituary "%o was slowed down by %k's \ctTime Slow."
	States
	{
		Ready:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("TimeManCooldown",1,"Ready.NoTF")
		TIMM H 1 A_WeaponReady TIMM H 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1") TIMM H 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		TIMM H 1 A_WeaponReady TIMM H 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1") TIMM H 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		TIMM H 1 A_WeaponReady TIMM H 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1") TIMM H 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		TIMM H 0 A_GiveInventory("Base28Ammo",1)
		goto Ready
		Ready.NoTF:
		TIMM H 1 A_WeaponReady TIMM H 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		TIMM H 1 A_WeaponReady TIMM H 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		TIMM H 1 A_WeaponReady TIMM H 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		TIMM H 0 A_GiveInventory("Base28Ammo",1)
		goto Ready

		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		TIMM A 1 A_Lower
		Loop
		Select:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(991,0,726)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		TIMM A 1 A_Raise
		Loop
		User1:
		TIMM Q 0 A_GiveInventory("TimeManIsSwing",1)
		TIMM Q 0 A_PlaySoundEx("misc/kingswing","Weapon")
		TIMM Q 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		TIMM Q 1 Offset(-320,32) A_FireCustomMissile("TimeManPendulum",90,0,0,0)
		TIMM Q 1 Offset(-240,32) A_FireCustomMissile("TimeManPendulum",67.5,0,0,0)
		TIMM Q 1 Offset(-160,32) A_FireCustomMissile("TimeManPendulum2",45,0,0,0)
		TIMM Q 1 Offset(-80,32) A_FireCustomMissile("TimeManPendulum2",22.5,0,0,0)
		TIMM Q 1 Offset(1,32) A_FireCustomMissile("TimeManPendulum",0,0,0,0)
		TIMM Q 1 Offset(80,32) A_FireCustomMissile("TimeManPendulum",-22.5,0,0,0)
		TIMM Q 1 Offset(160,32) A_FireCustomMissile("TimeManPendulum2",-45,0,0,0)
		TIMM Q 1 Offset(240,32) A_FireCustomMissile("TimeManPendulum2",-67.5,0,0,0)
		TIMM Q 1 Offset(320,32) A_FireCustomMissile("TimeManPendulum",-90,0,0,0)
		TNT1 A 17 A_WeaponReady(WRF_NOFIRE)
		TIMM H 1 Offset(0,64)
		TIMM H 1 Offset(0,56)
		TIMM H 1 Offset(0,48)
		TIMM H 1 Offset(0,40) A_GiveInventory("TimeManCooldown",70)
		TNT1 A 0 A_GunFlash
		TIMM H 3 A_WeaponReady(WRF_NOFIRE)
		goto Ready
		
		Fire:
		TIMM A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Hold")
		TIMM A 0 A_JumpIfInventory("Base28Ammo",1,1)
		Goto NoAmmo
		TIMM BC 1 A_GiveInventory("BaseCustomFlag2",1)
		TIMM JK 1
		
		Hold:
		TIMM A 0 A_JumpIfInventory("Base28Ammo",1,1)
		Goto Cooldown
		TIMM C 0 A_PlaySoundEx("weapon/timearrow","Weapon")
		TIMM C 0 A_FireCustomMissile("TimemanArrowFX",0,0,8,-10)
		TIMM M 10 A_FireCustomMissile("TimemanArrow",0,1,8,-9)
		TIMM M 1 A_WeaponReady(WRF_NOPRIMARY)
		TIMM A 0 A_Refire
		Goto Cooldown
		
		Cooldown:
		TNT1 A 0 A_TakeInventory("BaseCustomFlag2",99)
		TIMM KJ 2 A_ClearRefire
		TIMM CB 2 A_ClearRefire
		Goto Ready

		AltFire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
		TIMM A 0 A_JumpIfInventory("BaseCustomFlag2",1,"AltHold")
		TIMM A 0 A_JumpIfInventory("Base28Ammo",3,1)
		Goto NoAmmo
		TIMM BC 1
		TIMM JK 1 A_GiveInventory("BaseCustomFlag2",1)
		
		AltHold:
		TIMM A 0 A_JumpIfInventory("Base28Ammo",3,1)
		Goto Cooldown
		TNT1 A 0 A_TakeInventory("Base28Ammo",3,1)
		TIMM C 0 A_PlaySoundEx("weapon/timearrow","Weapon")
		TIMM C 0 A_FireCustomMissile("TimemanArrowFX",0,0,8,-10)
		TNT1 A 0 A_FireCustomMissile("TimemanArrow2",5,0,8,-9)
		TIMM M 16 A_FireCustomMissile("TimemanArrow2",-5,0,8,-9) //A_GiveInventory("TimeAltfireHandler")
		TIMM M 1 A_WeaponReady(WRF_NOSECONDARY)
		TIMM A 0 A_Refire
		Goto Cooldown

		NoAmmo:
		TIMM H 3 A_GiveInventory("Base28Ammo",1)
		Goto Ready

		UltimateAttack:
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,11)
		TNT1 A 0 A_GiveInventory("UltBuildCooldownGiver",1)
		FIRB C 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		TIMM H 0 A_TakeInventory("BaseCustomFlag1",1)
		TIMM M 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		TSLO A 0 A_SpawnItemEx("TimeRepulsionFX1",0,0,0,0,16)
		TSLO A 0 A_SpawnItemEx("TimeRepulsionFX2",0,0,0,0,-16)
		TIMM PON 1 A_GiveInventory("Repulsion",1)
		TSLO A 0 A_GiveInventory("QuarterDamageProtection",1)
		TSLO A 0 A_SpawnItemEx("TimeRepulsionFX1",0,0,0,0,16)
		TSLO A 0 A_SpawnItemEx("TimeRepulsionFX2",0,0,0,0,-16)
		TNT1 A 0 A_PlaySoundEx("weapon/slow","Weapon")
		TIMM I 1 Offset(14,22) A_GiveInventory("Repulsion",1)
		TIMM I 1 Offset(11,25) A_GiveInventory("Repulsion",1)
		TIMM I 1 Offset(14,28) A_GiveInventory("Repulsion",1)
		TSLO A 0 A_SpawnItemEx("TimeRepulsionFX1",0,0,0,0,16)
		TSLO A 0 A_SpawnItemEx("TimeRepulsionFX2",0,0,0,0,-16)
		TIMM I 1 Offset(17,22) A_GiveInventory("Repulsion",1)
		TIMM I 1 Offset(14,22) A_GiveInventory("Repulsion",1)
		TIMM I 1 Offset(11,25) A_GiveInventory("Repulsion",1)
		TSLO A 0 A_SpawnItemEx("TimeRepulsionFX1",0,0,0,0,16)
		TSLO A 0 A_SpawnItemEx("TimeRepulsionFX2",0,0,0,0,-16)
		TIMM I 1 Offset(14,22)
		TIMM I 1 Offset(11,25)
		TSLO A 0 A_SpawnItemEx("TimeRepulsionFX1",0,0,0,0,16)
		TSLO A 0 A_SpawnItemEx("TimeRepulsionFX2",0,0,0,0,-16)
		//TSLO A 0 A_SpawnItemEx("TimeSpeedUpFX",0,0,0,0,-16)
		//TNT1 A 0 ACS_NamedExecuteAlways("VC_TimemanUltStart",0)
		TNT1 A 0 A_SpawnItemEx("TimeUltWatcher")
		TNT1 A 0 A_GiveInventory("TimemanSpeed",1)
		TIMM I 1 Offset(14,28)
		TIMM I 1 Offset(17,22)
		TIMM I 1 Offset(14,22)
		TIMM A 0 A_WeaponReady(WRF_NOFIRE)
		TIMM NOP 3 A_TakeInventory("UltAttackFlag",1)
		goto Ready
		
		Flash:
		TNT1 A 1 A_TakeInventory("TimeManCooldown",1)
		loop
	}
}

actor TimeFlag : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 2
}

actor TimemanSlow : TimeSlow
{
	Obituary "$OB_TIMEMANSLOW"
	DamageType "TimemanSlow"
	+MISSILE
	-SOLID
	-DONTBLAST
	+NOGRAVITY
	+RIPPER
	+SKYEXPLODE
	+NOINTERACTION
	+DONTSPLASH
	+THRUGHOST
	+THRUACTORS
	+NOCLIP
	radius 1
	height 1
	+NOINTERACTION
	species "TimeArrowType"
	+THRUSPECIES
	renderstyle add
	alpha 0.7
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 A 1 A_Explode(2,800,0) //Extra damage
		TNT1 AAAAAAAA 0 A_SpawnItemEx("TimeSlowGFX",random(0,400),0,random(-400,400),0,0,0,random(0,359))
		SLOD EFGHI 1
		Stop
	}
}

actor TimeRepulsionFX1 : BaseDecorativeActor
{
	States
	{
	Spawn:
	TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
	TIMS X 4
	Stop
	}
}

actor TimeRepulsionFX2 : BaseDecorativeActor
{
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
		TIMS B 4
		Stop
	}
}

actor TimeSpeedUpFX : BaseDecorativeActor
{
	var int user_targetTID;
	+NOTARGETSWITCH
	reactiontime 7
	+NOCLIP
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
		TNT1 A 0 A_SetUserVar("user_targetTID",ACS_ExecuteWithResult(257,0))
		TIMS CCCDDDEEEFFFGGGIIIJJJKKK 1 Thing_Move(0, user_targetTID, 1)
		TIMS C 0 A_Countdown
		Goto Spawn+2
	}
}

actor TimemanArrow
{
	Obituary "$OB_TIMEMANARROW1"
	PROJECTILE
	+SKYEXPLODE
	+NOTARGETSWITCH
	species "TimeArrowType"
	+THRUSPECIES
	DamageType "TimemanArrow"
	Scale 4.0
	Translation "215:215=239:239"
	Speed 37//30
	Radius 20
	Height 20
	Damage (12)//(9)
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		SLOT JK 2
		SLOT EIIE 3
		SLOT E 0 A_ScaleVelocity(1.25)
		goto Spawn+4
		Death:
		TNT1 A 0 A_Warp(AAPTR_DEFAULT,0,0,9,0,WARPF_NOCHECKPOSITION)
		MMFX CDE 3 A_Stop
		Stop
	}
}

actor TimemanArrow2
{
	Obituary "$OB_TIMEMANARROW2"
	PROJECTILE
	+SKYEXPLODE
	+NOTARGETSWITCH
	species "TimeArrowType"
	+THRUSPECIES
	DamageType "TimemanArrow"
	Scale 2.5
	Translation "215:215=239:239"
	Speed 25//20
	Radius 12
	Height 12
	Damage (14)//(11)
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		SLOT JK 2
		SLOT EIEI 3
		SLOT E 0 A_ScaleVelocity(1.25)
		goto Spawn+2
		Death:
		MMFX CDE 3 A_Stop
		Stop
	}
}

actor TimemanArrowFX : BasicClientSide
{
	Translation "215:215=239:239"
	renderstyle translucent
	alpha 0.4
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
		MMFX CDE 3
		Stop
	}
}

actor TimemanSpeed : PowerupGiver
{
	Speed 1.5
	powerup.duration 700
	powerup.type "PowerTimeSpeedUp"
	+INVENTORY.AUTOACTIVATE
	+INVENTORY.ALWAYSPICKUP
	states
	{
		Pickup:
		TNT1 A 0 
		TNT1 A 175
		Stop
	}
}

actor PowerTimeSpeedUp : PowerSpeed
{
	Speed 1.5
	Powerup.Color "55 00 55", 0.4
}

actor TimeManIsSwing : VCOnceP {powerup.duration 11}//For the enemy assist

actor TimeManPendulum
{
species "DustManType"
+THRUSPECIES
PROJECTILE
+SKYEXPLODE
+THRUACTORS
+DONTREFLECT
+DONTBLAST
+NOTARGETSWITCH
Damage (24)
Speed 64
Radius 16
Height 16
scale 2.5
damagetype "TimeThird"
Obituary "$OB_TIMEMANTHIRD"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
Death:
TNT1 A 0 A_Stop
TPED A 1 A_SpawnItemEx("TimePendulumPole")
stop
}
}

actor TimeManPendulum2 : TimeManPendulum
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
Spawn2: 
TNT1 A 0 A_Stop
TPED B 1 A_SpawnItemEx("TimePendulumPole")
stop
}
}
Actor TimePendulumPole : DuoPunch
{
Damage (0)
+NOCLIP
+DONTREFLECT
+DONTBLAST
//+CLIENTSIDEONLY
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TPED C 0 A_SpawnItemEx("TimePendulumPoleFX",-momx*2/3,-momy*2/3,-momz*2/3,0,0,0,0,SXF_ABSOLUTEPOSITION)
TPED C 0 A_SpawnItemEx("TimePendulumPoleFX",-momx/3,-momy/3,-momz/3,0,0,0,0,SXF_ABSOLUTEPOSITION)
TPED C 0 A_SpawnItemEx("TimePendulumPoleFX",0,0,0,momx/4,momy/4,momz/4,0,SXF_ABSOLUTEMOMENTUM)
TPED C 0 A_SpawnItemEx("TimePendulumPoleFX",0,0,0,0,0,0,0,SXF_ABSOLUTEPOSITION)
TNT1 A 0 A_JumpIfCloser(64, "Death")
TNT1 A 0 A_CustomMissile("TimePendulumPole", 0, 0, 0, 0)
TPED C 1 A_SpawnItemEx("TimeThirdHitbox")
stop
Death:
TNT1 A 0 
stop
}
}

Actor TimePendulumPoleFX
{
species "DustManType"
+THRUSPECIES
PROJECTILE
+DONTREFLECT
+DONTBLAST
+NOTARGETSWITCH
Scale 2.5
damage (24)
radius 8
height 8
damagetype "TimeThird"
Obituary "$OB_TIMEMANTHIRD"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
TPED C 0 A_JumpIfCloser(32, "Death")
TPED C 1
stop
Death:
TNT1 A 0
stop
}
}

actor TimeThirdHitbox
{
species "DustManType"
+THRUSPECIES
Obituary "$OB_TIMEMANTHIRD"
PROJECTILE
+NOEXPLODEFLOOR
+DONTREFLECT
+DONTBLAST
+NOTARGETSWITCH
Radius 16
Height 16
scale 2.5
speed 0
damage (24)
Damagetype "TimeThird"
States
{
Spawn:
TNT1 A 2
stop
}
}

actor TimemanThirdProtect : PowerProtection
{
	powerup.duration 21
	DamageFactor "TimeThird", 0.0
}

actor TimeThirdWeakness : PowerProtection
{
	powerup.duration 140
	DamageFactor "TimeThird", 2.0
}

actor TimemanSlowProtect : PowerProtection
{
	powerup.duration 16
	DamageFactor "TimemanSlow", 0.0
}

actor TimeUltWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("TimeUltAOESpawner")
TNT1 A 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 4 A_TakeFromTarget("LongUltimateAmmo",3)
TNT1 A 0 A_JumpIfInTargetInventory("LongUltimateAmmo",1,"Spawn")
Death:
TNT1 A 0 A_TakeFromTarget("PowerUltBuildCooldown",1)
TNT1 A 0 A_TakeFromTarget("QuarterDamageProtection",1)
stop
}
}

Actor TimeUltAOESpawner : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_FireCustomMissile("TimemanSlow",0,0,0,0)
Stop
}
}

actor TimeAltfireHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("CutterFlag",1,"Left")

Right:
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_FireCustomMissile("TimemanArrow2",0,0,8,0)
TNT1 A 0 A_FireCustomMissile("TimemanArrow2",12,0,8,0)
stop

Left:
TNT1 A 0 A_TakeInventory("CutterFlag",1)
TNT1 A 0 A_FireCustomMissile("TimemanArrow2",0,0,8,0)
TNT1 A 0 A_FireCustomMissile("TimemanArrow2",-12,0,8,0)
stop
}
}

actor TimeManCooldown : Ammo
{
	inventory.amount 1
	inventory.maxamount 70
	+INVENTORY.IGNORESKILL
}

actor HealCentTimeman : Inventory
{
inventory.amount 1
inventory.maxamount 200
}