actor FlashClockWep_NormalBar : NormalBar{args 34, 75}
actor FlashClockWep : BaseMM8BDMWep
{
Weapon.AmmoUse 14
Weapon.AmmoGive 28
Weapon.SlotNumber 6
Inventory.Pickupmessage "$PU_FLASHCLOCK"
Obituary "$OB_FLASHCLOCK"
Tag "$TAG_FLASHCLOCK"
weapon.ammotype "FlashClockAmmo"
inventory.icon "FLCKICON"
States
{
SpawnLoop:
FLCK Z -1
loop
Ready:
FLCK A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_FLASHCLOCK)
FLCK A 0 A_JumpIfNoAmmo("ReadyNoAmmo")
FLCK A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
ReadyNoAmmo:
FLCK I 1 A_WeaponReady
FLCK I 0 A_JumpIfNoAmmo("ReadyNoAmmo")
Goto Ready+1
Deselect:
FLCK A 0 
goto DeselectSwap
Select:
FLCK A 0 
goto SelectSwap
Fire:
FLCK A 0 A_JumpIfNoAmmo("NoAmmo")
FLCK A 0
FLCK B 1 
FLCK BCDE 2
FLCK F 0 A_PlaySound("weapon/flashstopper","Weapon")
FLCK F 0  A_PlaySound("weapon/mbuster","Weapon")
FLCK F 2 A_FireCustomMissile("FlashClock",0,1,8,0)
FLCK GH 3
FSCY A 0 A_JumpIfNoAmmo("NoneWait")
FLCK A 15
Goto Ready+1
NoneWait:
FLCK I 15
goto Ready+1
NoAmmo:
FLCK I 0 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

actor FlashClock : BasicProjectile
{
PROJECTILE
-NOGRAVITY
+FORCEXYBILLBOARD
height 12
radius 12
damage (0) //5
speed 25
scale 2.5
+HEXENBOUNCE
+BOUNCEONWALLS
+BOUNCEONCEILINGS
-BOUNCEONFLOORS
+RIPPER
bouncefactor 1.0
wallbouncefactor 1.0
damagetype "FlashClock"
Obituary "$OB_FLASHCLOCK"
States
{
Spawn:
FCLK A 0 ThrustThingZ(0,65, 0, 1)
FCLK ABCD 2
FCLK A 0 
goto Spawn+1
Death:
FCLK E 1 A_ChangeFlag("NOGRAVITY", 1)
FCLK E 1 A_PlaySoundEx("weapon/mbuster","Weapon")
FCLK EEFFGGHHEEFFGGHH 1
FCLK E 0 Thing_SetTranslation(0,68)
FCLK EFGHEFGH 1 A_SpawnItemEx("TimeStopGFX", random(16,36), 0, random(8,24), 0, 0, 0, random(0, 359))

FCLK E 0 A_SpawnItemEx("FlashClockSpawn")
FLCK F 0  A_PlaySound("weapon/timestopper","Weapon")
FCLK E 0 A_PlaySoundEx("weapon/slow","Body")
TNT1 A 1
stop
}
}

actor FlashClockSpawn : BasicWatcher
{
    var int user_shockwave;
    States
    {
    Spawn:
        TNT1 A 0
        TNT1 A 0 A_SetUserVar(user_shockwave, 12)
        TNT1 A 0 A_JumpIf(true, "ExplodeLoop")
        TNT1 A 10
        stop
    ExplodeLoop:
        TNT1 A 0 A_SpawnItemEx("FlashClockShockWave", 10, 0, 12, 2.0, 0, 0, user_shockwave*(360/12), SXF_MULTIPLYSPEED)
        TNT1 A 0 A_SpawnItemEx("FlashClockShockWave", 10, 0, 36, 2.0, 0, 0, user_shockwave*(360/12), SXF_MULTIPLYSPEED)
        TNT1 A 0 A_SpawnItemEx("FlashClockShockWave", 10, 0, 60, 2.0, 0, 0, user_shockwave*(360/12), SXF_MULTIPLYSPEED)
        TNT1 A 0 A_SpawnItemEx("FlashClockShockWave", 10, 0, 84, 2.0, 0, 0, user_shockwave*(360/12), SXF_MULTIPLYSPEED)
        TNT1 A 0 A_SetUserVar(user_shockwave, user_shockwave-1)
        TNT1 A 0 A_JumpIf(user_shockwave > 0, "ExplodeLoop")
        stop
    End:
        TNT1 A 0
        stop
    }
}

actor FlashClockFunction : CustomInventory
{
var int user_FuckingDamage;
    States
    {
    Pickup:
        TNT1 A 0 A_CountDown
        TNT1 A 0 A_Explode(CallACS("vile_cbm_damage",7), 32, 0, 0, 32)
		TNT1 A 0 A_GiveInventory("RotateFunc", 1)
        stop
    }
}

actor FlashClockShockWave : BasicProjectile
{
+FORCEXYBILLBOARD
+NOINTERACTION
Radius 38
Height 10
damage (0)
damagetype "FlashClock"
Obituary "$OB_FlashClock"
speed 0
args 50, 5000, 16, 36
reactiontime 35
var int user_PierceRipper;
var int user_FuckingDamage;
reactiontime 15
States
{
Spawn:
FLAS A 0
FLAS X 0 A_Setangle(angle+args[ARGC_MAXTURN]/args[ARGC_TURNDIVISOR])
Spawn2:
FLAS A 0 A_SpawnItemEx("TimeStopGFX", random(0,12), 0, random(-12,12), 0, 0, 0, random(0, 359))
FLAS A 1 A_GiveInventory("FlashClockFunction", 1)
FLAS A 0 A_SpawnItemEx("TimeStopGFX", random(0,12), 0, random(-12,12), 0, 0, 0, random(0, 359))
FLAS A 1 A_GiveInventory("FlashClockFunction", 1)

FLAS A 0 A_SpawnItemEx("TimeStopGFX", random(0,12), 0, random(-12,12), 0, 0, 0, random(0, 359))
FLAS B 1 A_GiveInventory("FlashClockFunction", 1)
FLAS A 0 A_SpawnItemEx("TimeStopGFX", random(0,12), 0, random(-12,12), 0, 0, 0, random(0, 359))
FLAS B 1 A_GiveInventory("FlashClockFunction", 1)

FLAS A 0 A_SpawnItemEx("TimeStopGFX", random(0,12), 0, random(-12,12), 0, 0, 0, random(0, 359))
FLAS C 1 A_GiveInventory("FlashClockFunction", 1)
FLAS A 0 A_SpawnItemEx("TimeStopGFX", random(0,12), 0, random(-12,12), 0, 0, 0, random(0, 359))
FLAS C 1 A_GiveInventory("FlashClockFunction", 1)
FLAS C 0 A_Countdown
loop
Death:
FLAS A 2
stop
}
}


actor FlashClockAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
+INVENTORY.IGNORESKILL
}

actor FlashClockProtect : PowerProtection {Damagefactor "FlashClock", 0.0 Powerup.Duration 4}