actor CrashBangWep_NormalBar : NormalBar{args 225,31}
actor CrashBangWep : BaseMM8BDMWep
{
Weapon.Ammouse 4
Weapon.AmmoGive 28
Weapon.SlotNumber 5
Inventory.Pickupmessage "$PU_CRASHBANG"
Obituary "$OB_CRASHBANG"
Tag "$TAG_CRASHBANG"
weapon.ammotype "CrashBangAmmo"
inventory.icon "CBNGICON"
States
{
SpawnLoop:
CBNG Z -1
loop
Ready:
CBNG A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_CRASHBANG)
CBNG A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
CBNG A 0 
goto DeselectSwap
Select:
CBNG A 0 
goto SelectSwap
Fire:
CBNG A 0 A_JumpIfNoAmmo("NoAmmo")
CBNG A 0 A_PlaySoundEx("weapons/mm2/crashbombfire","Weapon")
CBNG A 0 A_FireCustomMissile("CrashBang",0,1,8,0)
CBN0 ABCDEF 2
CBNG A 8
CBNG A 0 A_Refire
Goto Ready+1
NoAmmo:
CBNG A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

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

actor CrashBang : BasicProjectile
{
var int user_TranslateWhiteColors;
PROJECTILE
DamageType "CrashBang"
Obituary "$OB_CRASHBANG"
-NOGRAVITY
Damage (CallACS("vile_cbm_damage",8))
Radius 8
Height 8
speed 30
scale 2.5
States
{
Spawn:
CBNG KKKL 3
loop
Death:
CBNG A 0 A_JumpIf(z-floorz<5, "Floor")
CBNG A 0 A_JumpIf(z-ceilingz==0-8, "Ceiling")
CBNG I 1 A_ChangeFlag("NOGRAVITY",1)
CBNG I 3 A_PlaySound("weapon/crashland")
CBNG J 3
CBNG IJIJI 3
TNT1 A 0 A_SpawnItemEx("CrashBangTrailSpawner",25,0,0,0,25,0,270+10)
TNT1 A 0 A_SpawnItemEx("CrashBangTrailSpawner",25,0,0,0,25,0,270-10)
TNT1 A 0 A_SpawnItemEx("CrashBangTrailSpawner",25,0,0,0,25,0,270+20)
TNT1 A 0 A_SpawnItemEx("CrashBangTrailSpawner",25,0,0,0,25,0,270-20)
TNT1 A 0 A_PlaySound("weapon/crashbangboom")
TNT1 A 2 A_SpawnItemEx("CrashBangFX",22)
TNT1 AA 2 
stop
Floor:
CBNG K 3 A_PlaySound("weapon/crashland")
CBNG L 3
CBNG KLKLK 3
Goto XDeath
Ceiling:
CBNG M 1 A_ChangeFlag("NOGRAVITY",1)
CBNG M 3 A_PlaySound("weapon/crashland")
CBNG N 3
CBNG MNMNM 3
TNT1 A 0 A_SpawnItemEx("CrashBangTrailSpawner",25,0,-8,0,25,0,45)
TNT1 A 0 A_SpawnItemEx("CrashBangTrailSpawner",25,0,-8,0,25,0,135)
TNT1 A 0 A_SpawnItemEx("CrashBangTrailSpawner",25,0,-8,0,25,0,225)
TNT1 A 0 A_SpawnItemEx("CrashBangTrailSpawner",25,0,-8,0,25,0,315)
TNT1 A 0 A_PlaySound("weapon/crashbangboom")
TNT1 A 2 A_SpawnItemEx("CrashBangFX",22)
TNT1 AA 2 
stop
XDeath:
TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
TNT1 A 0 A_SpawnItemEx("CrashBangTrailSpawner",25,0,8,0,25,0,45)
TNT1 A 0 A_SpawnItemEx("CrashBangTrailSpawner",25,0,8,0,25,0,135)
TNT1 A 0 A_SpawnItemEx("CrashBangTrailSpawner",25,0,8,0,25,0,225)
TNT1 A 0 A_SpawnItemEx("CrashBangTrailSpawner",25,0,8,0,25,0,315)
TNT1 A 0 A_PlaySound("weapon/crashbangboom")
TNT1 A 2 A_SpawnItemEx("CrashBangFX",22)
TNT1 AA 2 
stop
}
}

actor CrashBangTrailSpawner : BasicProjectile
{
+RIPPER
speed 30
reactiontime 40
DamageType "CrashBang"
Obituary "$OB_CRASHBANG"
damage (0)
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Countdown
TNT1 AAA 1 A_SpawnItemEX("CrashBangFX",0,0,0,0,0,0)
TNT1 A 0 A_PlaySoundEx("weapon/crashbangboom","Weapon")
loop
}
}

actor CrashBangFX : BasicExplosion
{
DamageType "CrashBang"
Obituary "$OB_CRASHBANG"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Explode(CallACS("vile_cbm_damage",14),64,0,0,64)
TNT1 A 0 A_SpawnItemEx("CrashBangBit",random(40,-40),random(40,-40),random(40,-40),0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("CrashBangBit",random(40,-40),random(40,-40),random(40,-40),0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("CrashBangBit",random(40,-40),random(40,-40),random(40,-40),0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("CrashBangBit",random(40,-40),random(40,-40),random(40,-40),0,0,0,0,SXF_NOCHECKPOSITION)

stop
}
}


actor CrashBangBit : BasicGraphicEffect
{
+BRIGHT
States
{
SpawnFrame:
MMFX BCDE 1
stop
}
}

actor CrashBangProtect : PowerProtection {Damagefactor "CrashBang", 0.25 Powerup.Duration 3}