actor DoppelCrashWep_NormalBar : NormalBar { args 213, 62 }
actor DoppelCrashWep : BaseMM8BDMWep
{
//$Category MM8BDME-Weapons
//$Title Doppel Crash
Weapon.AmmoUse 5
Weapon.AmmoGive 30
Weapon.SlotNumber 4
Inventory.Pickupmessage "$PU_DOPPELCRASH"
Obituary "$OB_DOPPELCRASH"
Tag "$TAG_DOPPELCRASH"
weapon.ammotype "DoppelCrashAmmo"
inventory.icon "DCRAICON"
States
{
SpawnLoop:
DCRA Z -1
loop
Ready:
DCRH A 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_DOPPELCRASH)
DCRH AA 1 A_WeaponReady
Goto Ready+1
ReadyC:
Goto Ready+1
Deselect:
DCRH A 0
goto DeselectSwap
Select:
DCRH A 0
goto SelectSwap
Fire:
DCRH A 0 A_JumpIfInventory("IsSpecialBot", 1 ,"KomusoManCheck")
DCRH A 0 A_JumpIfNoAmmo("NoAmmo")
//DCRH AA 1 A_JumpIf(CallACS("core_CheckFooting"),"DashStart")
//Goto NoAmmo
DashStart:
DCRH BC 2
DCRH C 1 A_GiveInventory("CutterFlag", 12)
DCRH A 0 A_GiveInventory("TakeDoppelCrashAmmo",1) //sync >_>
DCRH A 0 A_GiveInventory("DoppelCrashBundle_P")
DCRH A 0 A_TakeInventory("WeaponCharge", 999)
DCRH E 0 A_ChangeVelocity(35,0,0,3)
DCRH E 0 A_SetArg(0,momx)
DCRH E 0 A_SetArg(1,momy)
DCRH E 0 A_PlaySoundEx("weapons/mmb/tengubladedash","Weapon")
DCRH A 0 A_GiveInventory("DoppelCrashArmor",1)
DCRH A 0 ACS_NamedExecuteAlways("core_unsolidplayer",0,0,USP_TOGGLEON)
DCRH A 0 ACS_NamedExecuteAlways("core_stopplayer",0,0,1)
Goto DashAttack
DashAttack:
DCRH D 0 ACS_NamedExecuteAlways("Vile_StateChange",0,2)

DCRH D 0 A_ChangeVelocity(args[0],args[1],0,CVF_REPLACE)
DCRH D 1 A_SpawnItemEx("DoppelCrashDamager",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM) //A_FireCustomMissile("TenguDash",0,0,11,-8)
DCRH D 0 A_SpawnItemEx("DoppelCrashFX",32,10,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM) //A_FireCustomMissile("TenguDash",0,0,11,-8)
DCRH D 0 A_SpawnItemEx("ProtoDust",-32,0,0)

DCRH D 0 A_ChangeVelocity(args[0],args[1],0,CVF_REPLACE)
DCRH D 1 A_SpawnItemEx("DoppelCrashDamager",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM) //A_FireCustomMissile("TenguDash",0,0,11,-8)
DCRH D 0 A_SpawnItemEx("DoppelCrashFX",32,10,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM) //A_FireCustomMissile("TenguDash",0,0,11,-8)

DCRH E 0 A_ChangeVelocity(args[0],args[1],0,CVF_REPLACE)
DCRH E 1 A_SpawnItemEx("DoppelCrashDamager",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM) //A_FireCustomMissile("TenguDash",0,0,11,-8)
DCRH E 0 A_SpawnItemEx("DoppelCrashFX",32,10,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM) //A_FireCustomMissile("TenguDash",0,0,11,-8)
DCRH E 0 A_SpawnItemEx("ProtoDust",-32,0,0)

DCRH E 0 A_ChangeVelocity(args[0],args[1],0,CVF_REPLACE)
DCRH E 1 A_SpawnItemEx("DoppelCrashDamager",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM) //A_FireCustomMissile("TenguDash",0,0,11,-8)
DCRH E 0 A_SpawnItemEx("DoppelCrashFX",32,10,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM) //A_FireCustomMissile("TenguDash",0,0,11,-8)

DCRH E 0 A_TakeInventory("CutterFlag",4)
DCRH E 0 A_JumpIfInventory("CutterFlag",1,"DashAttack")
goto DashFinish
DashFinish:
DCRH E 0 A_ScaleVelocity(0.25)
DCRH A 0 A_GiveInventory("DoppelCrashRecoil")
DCRH A 0 ACS_NamedExecuteAlways("core_unsolidplayer",0,0,USP_TOGGLEOFF_DAMAGE,ACS_NamedExecuteWithResult("core_getmaxhealth")/10)
DCRH A 0 ACS_NamedExecuteAlways("core_stopplayer",0,0,0)
DCRH E 0 A_TakeInventory("DoppelCrashArmor",1)
DCRH CB 3
DCRH A 0 A_TakeInventory("CutterFlag",999)
DCRH A 6 A_TakeInventory("WeaponCharge",999)
DCRH AAA 2
DCRH A 0 A_Refire
Goto Ready+1
NoAmmo:
DCRH A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
KomusoManCheck:
DCRH A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_radiuspull",0,300,0)>0,3)
DCRH A 0 A_GiveInventory("DopplerAttackWep")
DCRH A 0 A_SelectWeapon("DopplerAttackWep")
goto Ready+1
DCRH A 0
goto Fire+1
}
}

actor DoppelCrashAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 30
+INVENTORY.IGNORESKILL
}

actor TakeDoppelCrashAmmo : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_TakeInventory("DoppelCrashAmmo",5,TIF_NOTAKEINFINITE)
stop
}
}

actor DoppelCrashArmor : PowerProtection
{
damagefactor "Normal", 0.66
damagefactor "Crush", 1.0
damagefactor "Telefrag",1.0
damagefactor "Falling", 1.0
damagefactor "Fire", 0.0
damagefactor "Drowning", 0.0
damagefactor "Slime", 0.0
damagefactor "Ice", 0.0
damagefactor "Spiney", 0.0
powerup.duration 70
}

actor DoppelCrashFX : BasicGraphicEffect
{
    height 24
    radius 24
    States
    {
    SpawnFrame:
        TNT1 A 0
        DCRA B 1
        stop
    }
}

actor DoppelCrashRecoil : Powerup
{
    powerup.duration 10
}

actor DoppelCrashKnockback : EncoreKnockbackHelper
{
Mass 15
Accuracy 15
Meleerange 3
}


//
// The clones
//
actor DoppelCrashClone : BasicProjectile
{
PROJECTILE
renderstyle translucent
+THRUACTORS
+NOTARGETSWITCH
+NOEXPLODEFLOOR
+DONTREFLECT
+STEPMISSILE
maxstepheight 16
Radius 16
Height 16
Obituary "$OB_DOPPELCRASH"
damagetype "DoppelCrashClone"
scale 2.5
damage (0)
speed 0
reactiontime 280
alpha 0.0001
States
{
Spawn:
DCRA W 0
DCRA W 0 A_ScaleVelocity(0.0001)
DCRA W 4 ACS_NamedExecuteAlways("core_targetyawpitch", 0, 1)
Spawn1a:
DCRA W 1 A_SetTranslucent(0.85)
DCRA W 0 A_SpawnItemEx("DoppelCrashCloneDamager")
DCRA W 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
DCRA W 0 A_GiveInventory("WeaponCharge",1)
DCRA W 0 A_JumpIfInventory("WeaponCharge",280,"FireOff")
DCRA W 0 A_JumpIfInTargetInventory("DoppelCrashRecoil",1,"FireOff")
loop
FireOff:
DCRA V 0 A_Changeflag("DONTREFLECT",0)
DCRA V 0 A_PlaySoundEx("weapon/doppelcrashillusion","Weapon")
DCRA A 0 A_FaceTarget
DCRA A 0 A_SpawnItemEx("DoppelCrashCloneReturn",0,0,0,26,0,0,21)
DCRA A 0 A_SpawnItemEx("DoppelCrashCloneReturn",0,0,0,26,0,0,0)
DCRA A 0 A_SpawnItemEx("DoppelCrashCloneReturn",0,0,0,26,0,0,-21)
DCRA A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 2
stop
Death:
TNT1 A 2 A_SpawnItemEx("DoppelCrashFX")
stop
}
}

Actor DoppelCrashCloneReturn : BasicProjectile
{
+SEEKERMISSILE
+NOINTERACTION
+DONTBLAST
+THRUACTORS
speed 26
damage (0)
states
{
Spawn:
DCRA V 0
DCRA VVVVVVVVVVVV 1 A_SpawnItemEx("DoppelCrashCloneDamager")
SpawnLoop:
DCRA V 0 A_FaceTarget(28,90)
DCRA V 0 A_ChangeVelocity(26*cos(pitch),0,26*sin(pitch),3)
DCRA V 0 A_SpawnItemEx("DoppelCrashCloneDamager")
DCRA V 1 A_JumpIfCloser(60,"Return")
DCRA V 0 A_JumpIfInTargetInventory("IsDead",1,"Return")
loop
Return:
DCRA V 0
stop
}
}

actor DoppelCrashDamager : BasicProjectile
{
+DONTSPLASH
+DONTBLAST
+THRUGHOST
+DONTREFLECT
damagetype "DoppelCrash"
Obituary "$OB_DOPPELCRASH"
radius 40
height 40
Damage (CallACS("vile_cbm_damage",5))
States
{
Spawn:
TNT1 A 2
stop
}
}

actor DoppelCrashCloneDamager : DoppelCrashDamager
{
damagetype "DoppelCrashClone"
}

actor DoppelCrashBundle_P : CustomInventory
{
    States
    {
    Pickup:
		DCRA A 0 A_SpawnItemEx("DoppelCrashClone", 0, 0, 8, 17.5*cos(pitch), 0, 17.5*sin(-pitch))
		DCRA A 0 A_SpawnItemEx("DoppelCrashSmokeFX")
		TNT1 A 0 A_JumpIfInventory("PowerSpreadRune", 1, "PickupSpread")
		stop
		PickupSpread:
		TNT1 A 0 A_SpawnItemEx("DoppelCrashClone", -48, 8+32, 8, 17.5*cos(pitch), 0, 17.5*sin(-pitch), 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
        TNT1 A 0 A_SpawnItemEx("DoppelCrashClone", -48, 8-32, 8, 17.5*cos(pitch), 0, 17.5*sin(-pitch), 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
        TNT1 A 0 A_SpawnItemEx("DoppelCrashSmokeFX", -48, 8+32, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
        TNT1 A 0 A_SpawnItemEx("DoppelCrashSmokeFX", -48, 8-32, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
		stop
    }
}

actor DoppelCrashSmokeFX : BasicGraphicEffect
{
scale 2.5
+NOINTERACTION
+NOGRAVITY
states
{
SpawnFrame:
DCRA RSTU 3
stop
}
}