actor TimeSwitchWep_NormalBar : NormalBar{args 136, 76}
Actor TimeSwitchWep : BaseMM8BDMWep
{
//$Category MM8BDME-Weapons
//$Title Time Switch
Weapon.AmmoUse 7
Weapon.AmmoGive 28
Weapon.SlotNumber 4
Obituary "$OB_TIMESWITCH"
Tag "$TAG_TIMESWITCH"
Inventory.Pickupmessage "$PU_TIMESWITCH"
weapon.ammotype "TimeSwitchAmmo"
inventory.icon "TSWIICON"
States
{
SpawnLoop:
TSWI A -1
loop
Ready:
TSWI A 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_TIMESWITCH)
TSWI LL 1 A_WeaponReady
Goto Ready+1
ReadyC:
Goto Ready+1
Deselect:
TSWI L 0
Goto DeselectSwap
Select:
TSWI L 0
goto SelectSwap
Fire:
TSWI L 0 A_JumpIfNoAmmo("NoAmmo")
TSWI E 0 A_JumpIfInventory("IsSpecialBot", 1 ,"ClockManCheck")
TSWI O 0 A_JumpIfInventory("IsBot", 1, "BotCheck")
Fire2:
TSWI L 0 A_GiveInventory("TimeSwitchBundle_P",1)
TSWI NOPQRS 1
TSWI LML 2
TSWI L 27
Goto Ready+1
NoAmmo:
TSWI L 1 ACS_NamedExecute("core_noammo",0)
Goto Ready+1


BotCheck:
TSWI L 0 A_JumpIfInventory("TimeSwitchSpeed", 1, 1)
Goto Fire2
TSWI L 3 //ACS_NamedExecuteAlways("Bots_WalkToAttack",0,1,1)
TSWI L 0 A_JumpIf(ACS_NamedExecuteWithResult("core_radiusPull", 0, 120, 0)>0, 2)
TSWI L 0 A_JumpIf(ACS_NamedExecuteWithResult("core_radiusPull", 0, 800, 0)>0, "BotCheck")
Goto Ready+1
TSWI L 0 A_JumpIf(momz==0, 2)
TSWI L 0 A_JumpIf(ACS_NamedExecuteWithResult("core_radiusPull", 0, 45, 0)>0, "BotUpperStrike")
Goto Ready+1
TSWI L 0 ThrustThingZ(0,50,0,1)
Goto Ready+1
BotUpperStrike:
TSWI L 0
Goto Fire2
ClockManCheck:
TOPH A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_radiusPull", 0, 350, 0)>0, "BotCheck")
TBOM O 1 A_GiveInventory("TimeBombWep",1)
TBOM O 1 A_SelectWeapon("TimeBombWep")
Goto Fire+2
}
}

actor TimeSwitchBundle_P : CustomInventory
{
    States
    {
    Pickup:
        TNT1 A 0 A_GiveInventory("TimeSwitchSpeedGiver",1)
		TNT1 A 0 A_TakeInventory("TimeSwitchAmmo",7,TIF_NOTAKEINFINITE)
        TNT1 A 0 A_JumpIfInventory("PowerSpreadRune", 1, "PickupSpread")
		goto TheRest
		PickupSpread:
		TNT1 A 0 A_SpawnItemEx("TimeSwitch", -48, 8+32, 32, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
        TNT1 A 0 A_SpawnItemEx("TimeSwitch", -48, 8-32, 32, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
		TheRest:
		TNT1 A 0 A_SpawnItemEx("TimeSwitch",0,0,32,0,0,0,0,SXF_WEPFXCOLOR)
		TNT1 A 0 A_SpawnItemEx("TimeSwitchSpeedFX",0,0,0,0,0,0,0,SXF_WEPFXCOLOR)
		TNT1 A 0 A_JumpIf(z-floorz!=0,"AirJump")
        stop
		AirJump:
		TNT1 A 0 ThrustThingZ(0,45,0,0)
		stop
    }
}

Actor TimeSwitchAmmo : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 28
	+INVENTORY.IGNORESKILL
}

actor TimeSwitch : BasicProjectile
{
PROJECTILE
+BRIGHT
+RIPPER
Radius 16
Height 7
Obituary "$OB_TIMESWITCH"
Damagetype "TimeSwitch"
+FORCEXYBILLBOARD
scale 2.5
damage (0)
speed 0
reactiontime 8
var int user_atFloor;
States
{
Spawn:
TSWI F 0
TSWI F 0 A_PlaySoundEx("weapon/timeswitch","Weapon")
TSWI F 0 A_SpawnItemEx("TimeSwitchCollisionFX",0,0,(floorz-z))
TSWI F 0 A_SetUserVar(user_atFloor, (z-floorz)<32)
TSWI F 0 A_JumpIf(z-floorz < 16, "SpawnLoopFloor")
goto SpawnLoop
Spawnloop:
TSWI B 0 A_SpawnItemEx("TimeSwitchLightning", 0, 0, !user_atFloor*-32 + user_atFloor*-(z-floorz),0,0,0,0,SXF_WEPFXCOLOR)
TSWI HIJK 1
TSWI B 0 A_SpawnItemEx("TimeSwitchLightning", 0, 0, !user_atFloor*-32 + user_atFloor*-(z-floorz),0,0,0,0,SXF_WEPFXCOLOR)
TSWI HIJK 1
TSWI C 0 A_CountDown
loop
SpawnLoopFloor:
TSWI CGGGBFFF 1
TSWI C 0 A_CountDown
loop
Death:
TNT1 A 0 A_SpawnItemEx("ExplosionEffect1",0,0,0,0,0,0,0,SXF_WEPFXCOLOR)
TNT1 A 0 A_PlaySoundEx("weapon/timeswitchdissipate","Weapon")
stop
}
}

// Lightning bolt damage
actor TimeSwitchLightning : BasicProjectile
{
    PROJECTILE
	+RIPPER
    Obituary "$OB_TIMESWITCH"
	Damagetype "TimeSwitchLightning"
	speed 0
	height 8
	radius 16
    damage (CallACS("vile_cbm_damage",28))
	States
	{
	Spawn:
		TNT1 A 0
        TNT1 A 0 A_JumpIf(z-floorz < 32, "FloorCheck")
		TNT1 A 0 A_SpawnItemEx("TimeSwitchLightning", 0, 0, -32,0,0,0,0,SXF_WEPFXCOLOR)
        goto SpawnWait
    FloorCheck:
        TNT1 A 0 A_JumpIf(z-floorz < 16, "SpawnWait")
        TNT1 A 0 A_SpawnItemEx("TimeSwitchLightning", 0, 0, -(z-floorz),0,0,0,0,SXF_WEPFXCOLOR)
        goto SpawnWait
    SpawnWait:
        TNT1 A 0 A_SpawnItemEx("TimeSwitchLightningFX")
		TNT1 AA 1 A_SpawnItemEx("ElectrifyEffect")
		stop
	}
}

// Particles

actor TimeSwitchLightningFX : BasicGraphicEffect
{
    +CLIENTSIDEONLY
	+NOINTERACTION
	+FORCEYBILLBOARD
	+BRIGHT
    height 1
    radius 1
    Scale 2.5
    States
    {
    Spawn:
        TSWI FF 0 A_GiveInventory("ProjTeamColor1Client",1)
        TSWI FGF 2
        stop
    }
}

actor TimeSwitchCollisionFX : BasicGraphicEffect
{
    +CLIENTSIDEONLY
	+NOINTERACTION
	+FORCEYBILLBOARD
	+BRIGHT
    height 1
    radius 1
    Scale 2.5
	Reactiontime 35
    States
    {
    Spawn:
        TNT1 A 2 A_SpawnItemEX("TimeSwitchSparkFX",0,0,0,4,4,8,random(0,360),SXF_WEPFXCOLOR)
        TNT1 A 0 A_Countdown
		loop
    }
}

actor TimeSwitchSpeedFX : BasicGraphicEffect
{
    PROJECTILE
	+NOCLIP
	+NOINTERACTION
	+THRUGHOST
    height 32
    radius 32
    speed 50
	scale 2.5
	Reactiontime 17
    States
    {
    SpawnFrame:
		TNT1 AA 0 A_GiveInventory("ProjTeamColor1Server",1)
		TNT1 A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_COPYINTERPOLATION|WARPF_NOCHECKPOSITION )
        TSWI TUV 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_COPYINTERPOLATION|WARPF_NOCHECKPOSITION )
        TSWI L 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
		TSWI L 0 A_Countdown
		loop
		Death:
		TSWI TUV 1
		stop
    }
}

actor TimeSwitchSparkFX : TimeSwitchCollisionFX
{
    PROJECTILE
    height 4
    radius 4
    Damage (0)
	scale 2.5
    States
    {
    Spawn:
		TSWI BB 0 A_GiveInventory("ProjTeamColor1Client",1)
        TSWI BCDE 2
		stop
    }
}

Actor TimeSwitchSpeedGiver : PowerApropGiver {}

actor TimeSwitchSpeed : Powerup
{
powerup.duration 70
+INVENTORY.ALWAYSPICKUP
}