actor DopplerAttackWep_NormalBar : NormalBar{args 213,90}
actor DopplerAttackWep : BaseMM8BDMWep 
{
//$Category MM8BDME-Weapons
//$Title Doppler Attack
Weapon.AmmoUse 1
Weapon.AmmoGive 28
Weapon.SlotNumber 3
Inventory.Pickupmessage "$PU_DOPPLERATTACK"
Obituary "$OB_DOPPLERATTACK"
Tag "$TAG_DOPPLERATTACK"
weapon.ammotype "DopplerAttackAmmo"
inventory.pickupsound "weapon/weaponup"
inventory.icon "DATKICON"
+WEAPON.AMMO_OPTIONAL
Scale 2.0
States
{
SpawnLoop:
DATK Z 1
loop
Ready:
DATK A 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_DOPPLERATTACK)
DATK A 1 A_WeaponReady
Goto Ready+1
ReadyC:
Goto Ready+1
Deselect:
DATK A 0 
goto DeselectSwap
Select:
DATK A 0 
goto SelectSwap

Fire:
DATK A 0 A_JumpIfInventory("IsSpecialBot", 1 ,"KomusoManCheck")
FireLoop:
DATK A 0 A_JumpIfNoAmmo("NoAmmo")
DATK A 0 A_PlaySoundEx("weapon/blackholestart","Weapon")
DATK A 0 A_GiveInventory("DopplerAttackBundle_P",1)
DATK BC 3
DATK A 0 A_JumpIfInventory("IsBot", 1 ,"BotRefireChance")
DATK A 0 A_Refire("FireLoop")
FireEnd:
DATK A 0 A_GiveInventory("DopplerAttackFlag",1)
DATK A 2
goto Ready+1
BotRefireChance:
DATK A 0 A_Jump(52,"FireEnd")
goto FireLoop

AltFire:
DATK A 0 A_JumpIfInventory("Vile_ClassAltfire", 1, "ClassAltfire")
DATK A 0 A_JumpIf(CallACS("Vile_class_altfire"), "ClassAltfire")
DATK A 1 A_JumpIfInventory("MM8BDMPlayer", 1, 1)
wait
DATK A 0
DATK A 0 A_JumpIfNoAmmo("NoAmmo")
DATK A 0 A_PlaySoundEx("Weapon/blackholestart","Weapon")
DATK A 0 A_GiveInventory("DopplerAttackBundle_P",1)
DATK A 0 
DATK B 4
DATK A 0 A_GiveInventory("DopplerAttackFlag",1)
DATK CA 4
goto Ready+1
NoAmmo:
DATK A 1 ACS_NamedExecuteAlways("core_noammo",0)
DATK A 0 A_GiveInventory("DopplerAttackFlag",1)
Goto Ready+1
ClassAltfire:
DATK A 0 
goto Super::Altfire

KomusoManCheck:
DCRH A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_radiuspull", 0, 300, 0)>0, 1)
goto Fire+1
DCRH A 0 A_GiveInventory("DoppelCrashWep")
DCRH A 0 A_SelectWeapon("DoppelCrashWep")
goto Ready+1
}
}

actor DopplerAttackBundle_P : CustomInventory
{
    States
    {
    Pickup:
		DATK A 0 A_TakeInventory("DopplerAttackAmmo",1,TIF_NOTAKEINFINITE)
		DATK A 0 A_SpawnItemEx("DopplerAttack", 0, 0, 8, 17.5*cos(pitch), 0, 17.5*sin(-pitch))
		DATK A 0 A_SpawnItemEx("DopplerAttackFX")
		TNT1 A 0 A_JumpIfInventory("PowerSpreadRune", 1, "PickupSpread")
		stop
		PickupSpread:
		TNT1 A 0 A_SpawnItemEx("DopplerAttack", -48, 8+32, 8, 17.5*cos(pitch), 0, 17.5*sin(-pitch), 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
        TNT1 A 0 A_SpawnItemEx("DopplerAttack", -48, 8-32, 8, 17.5*cos(pitch), 0, 17.5*sin(-pitch), 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
        TNT1 A 0 A_SpawnItemEx("DopplerAttackFX", -48, 8+32, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
        TNT1 A 0 A_SpawnItemEx("DopplerAttackFX", -48, 8-32, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
		stop
    }
}

actor DopplerAttackFlag : PowerUp {Powerup.duration 9}

actor DopplerAttack : BasicProjectile
{
var int user_PierceRipper;
PROJECTILE
renderstyle translucent
+NOTARGETSWITCH
+NOEXPLODEFLOOR
+SEEKERMISSILE
+DONTREFLECT
+STEPMISSILE
maxstepheight 16
Radius 16
Height 16
Obituary "$OB_DOPPLERATTACK"
damagetype "DopplerAttack"
scale 2.5
damage (CallACS("vile_cbm_damage",14))
speed 0
reactiontime 280
alpha 0.0001
States
{
Spawn:
DATK W 0
DATK W 0 A_ScaleVelocity(0.0001)
DATK W 4 ACS_NamedExecuteAlways("core_targetyawpitch", 0, 1)
Spawn1a:
DATK W 1 A_SetTranslucent(0.85)
DATK W 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
DATK W 0 A_GiveInventory("WeaponCharge",1)
DATK W 0 A_JumpIfInventory("WeaponCharge",280,"FireOff")
DATK W 0 A_JumpIfInTargetInventory("DopplerAttackFlag",1,"FireOff")
loop
FireOff:
DATK V 0 A_Changeflag("DONTREFLECT",0)
DATK V 0 A_PlaySoundEx("misc/brgillusion","Weapon")
DATK A 0 A_SeekerMissile(4, 360, SMF_LOOK|SMF_PRECISE, 256, 2)
DATK A 0 A_FaceTracer
DATK A 0 A_SpawnItemEx("DopplerAttackLaunched",0,0,8,cos(pitch)*25,0,sin(-pitch)*25,0)
DATK A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 2
stop
Death:
TNT1 A 0 A_Explode(CallACS("vile_cbm_damage",12),64,0,0,0)
DATK V 0 A_SpawnItemEx("DopplerAttackFX")
stop
}
}

actor DopplerAttackLaunched : DopplerAttack
{
alpha 0.85
var int user_PierceRipper;
damage (CallACS("vile_cbm_damage",18))
States
{
Spawn:
DATK A 0
DATK V 0 A_ChangeVelocity(1,0,0,CVF_RELATIVE)
DATK V 700
goto Death
}
}

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

actor DopplerAttackFX : BasicGraphicEffect
{
scale 2.5
+NOINTERACTION
+NOGRAVITY
states
{
SpawnFrame:
DATK RSTU 3
stop
}
}
