actor DeflectorPanelWep_NormalBar : NormalBar{args 248, 219}
actor DeflectorPanelWep_ScriptBar : ScriptBar {}
actor DeflectorPanelWep : BaseMM8BDMWep
{
dropitem "DeflectorPanelWep"
Weapon.AmmoUse 4
Weapon.AmmoGive 28
Weapon.SlotNumber 7
Inventory.Pickupmessage "$PU_DEFLECTORPANEL"
Obituary "$OB_DEFLECTORPANEL"
Tag "$TAG_DEFLECTORPANEL"
weapon.ammotype "DeflectorPanelAmmo"
inventory.icon "DPNLICON"
States
{
SpawnLoop:
DPNL Z 1
loop
Ready:
DPNL A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_DEFLECTORPANEL)
DPNL A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
DPNL A 0
goto DeselectSwap
Select:
DPNL A 0
goto SelectSwap
Fire:
DPNL A 0 A_JumpIfInventory("DeflectorPanelFlag",1,"Detonate")
DPNL A 0 A_JumpIfNoAmmo("NoAmmo")
DPNL A 0 A_PlaySoundEx("weapons/mmk/mirrorbusterabsorb", "weapon")
DPNL B 0 A_SpawnItemEx("DeflectorPanelWatcher")
DPNL B 0 A_GiveInventory("DeflectorPanelFlag",1)
DPNL B 4 A_GiveInventory("DeflectorPanelFire_P",1)
DPNL C 12
DPNL A 10
Goto Ready+1
Detonate:
DPNL A 0 A_TakeInventory("DeflectorPanelFlag",2000)
DPNL A 0 A_PlaySoundEx("weapon/centaurflash","Weapon",0)
DPNL BC 3
DPNL A 8
goto Ready+1
NoAmmo:
DPNL A 1 ACS_NamedExecute("core_noammo",0)
Goto Ready+1
}
}

actor DeflectorPanelAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
+INVENTORY.IGNORESKILL
}
actor DeflectorPanelFlag : Once {}

actor DeflectorPanelFire_P : CustomInventory
{
    States
    {
    Pickup:
		TNT1 A 0 A_TakeInventory("DeflectorPanelAmmo",4,TIF_NOTAKEINFINITE)
        TNT1 A 0 A_SpawnItemEx("DeflectorPanel",24,0,8)
        TNT1 A 0 A_JumpIfInventory("PowerSpreadRune", 1, "PickupSpread")
        stop
    PickupSpread:
        TNT1 A 0 A_SpawnItemEx("DeflectorPanel",16,48,8)
        TNT1 A 0 A_SpawnItemEx("DeflectorPanel",16,-48,8)
        stop
    }
}

actor DeflectorPanelProtect : PowerProtection
{
powerup.duration 12
damagefactor "DeflectorPanel", 0.0
}

actor DeflectorPanel
{
+BRIGHT
+MISSILE
+THRUGHOST
+RIPPER
+DONTBLAST
+DONTRIP
+SHOOTABLE
+DONTDRAIN
+NOGRAVITY
+THRUSPECIES
+NOTARGETSWITCH
+DONTREFLECT
+BOUNCEONFLOORS
BounceFactor 0.8
+BOUNCEONWALLS
+SEEKERMISSILE
WallBounceFactor 0.1
damagetype "DeflectorPanel"
Obituary "$OB_DEFLECTORPANEL"
RenderStyle "Translucent"
Alpha 0.90
scale 2.0
Species "DeflectorPanel"
health 9999
painchance 999
Height 48
Radius 25
Damage (CallACS("vile_cbm_damage",20))
Speed 0
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveInventory("ProjTeamColor1Server",1)
DPNL EEDDE 1 A_SetScale(scalex+0.5,scaley+0.5)
Repeat:
DPNL DDEE 1 A_Stop
DPNL D 0 A_JumpIfInTargetInventory("DeflectorPanelFlag",1,"Repeat")
goto DeathState
DeathState:
TNT1 A 1 A_ChangeFlag("INVULNERABLE",1)
goto Death
Death:
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
TNT1 A 0 A_PlaySoundEx("weapon/centaurflash","Weapon",0)
TNT1 DE 1 A_TakeFromTarget("DeflectorPanelFlag",1)
TNT1 AAAAAAA 0 A_SpawnItemEx("DeflectorGlassShardFX", 0, 0, 32, 10, 0, frandom(-5, 5), random(0, 359))
stop

Pain:
DPNL D 0 A_ChangeFlag("INVULNERABLE",1)
DPNL AAAAAAAAAAAAAAAA 0 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256, 200)
DPNL A 0 A_FaceTracer(0, 0)
DPNL D 0 A_SpawnItemEX("DeflectorPShot",48,0,24, cos(-pitch),0,sin(-pitch),0,SXF_MULTIPLYSPEED)
DPNL D 2 A_PlaySound("misc/rathorfire")
DPNL E 2 A_SetScale(5.0,5.0)
DPNL D 0 A_ChangeFlag("INVULNERABLE",0)
DPNL D 0 A_JumpIfInTargetInventory("DeflectorPanelFlag",1,"Repeat")
goto DeathState
}
}
actor DeflectorPShot : BasicProjectile
{
PROJECTILE
+THRUGHOST
+BRIGHT
Radius 20
Height 16
scale 5.0
damage (CallACS("vile_cbm_damage",15))
damagetype "DeflectorPanelShot"
Obituary "$OB_DEFLECTORPANEL"
speed 40
States
{
Spawn:
DPNL FG 2
loop
}
}

actor DeflectorPanelWatcher : BasicWatcher
{
States
{
Spawn:
TNT1 A 0
TNT1 A 4
TNT1 A 0 A_JumpIfInTargetInventory("DeflectorPanelFlag",1,2)
goto Death //Check so in case the shield dies on spawn it doesn't deplete extra ammo.
TNT1 A 0
TNT1 A 16
TNT1 A 0 A_TakeFromTarget("DeflectorPanelAmmo",1)
TNT1 A 0 A_JumpIfInTargetInventory("DeflectorPanelFlag",1,"AmmoCheck")
goto Death
Death:
TNT1 A 0
TNT1 A 0 A_TakeFromTarget("DeflectorPanelFlag",2000)
stop
AmmoCheck:
TNT1 A 0 A_JumpIfInTargetInventory("DeflectorPanelAmmo",1,"Spawn")
goto Death
}
}

actor DeflectorGlassShardFX : BasicGraphicEffect
{
PROJECTILE
+CLIENTSIDEONLY
+THRUACTORS
+DOOMBOUNCE
+RANDOMIZE
+DONTSPLASH
-NOGRAVITY
-NOINTERACTION
Speed 10
scale 1.5
renderstyle translucent
States
{
	Spawn:
	SGSA ABCDEABCDEABCDEABCDEABCDE 3
	stop
	Death:
	SGSA E 2
	SGSA EEEEEEEEE 1 A_FadeOut(0.2)
	stop
}
}