actor Crashman : VCBaseClass
{
Player.ScoreIcon "CRASMUGS"
player.startitem "BaseFlagPack", 1
player.startitem "IsFromMM2"
player.soundclass "crashmanc"
Player.ViewHeight 45
player.displayname "Crashman"
player.forwardmove 0.85, 0.85
player.sidemove 0.83, 0.83
player.jumpz 14
player.startitem "CrashBombBoss"
player.startitem "Base28Ammo", 28
player.startitem "CanThirdFire"
player.startitem "UltimateAttackItem3", 1
player.startitem "UltSoundWatcherSpawn3"
States
{
Spawn:
CRAM A 0
CRAM B 1 A_JumpIf(z-floorz>0, "Jumping")
CRAM A 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2

See:
CRAM BBBBCCCCDDDDEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+1

Jumping:
CRSH I 1 A_JumpIf(z-floorz<=0, "Spawn")
wait

Animation1:
CRAM L 2
CRAM M 4

Animation2:
CRAM M 10
CRAM L 2
Goto Spawn

Animation3:
CRAM M 7
Goto Animation2

Animation4:
CRAM N 2

Animation5:
CRAM O 1 A_JumpIfInventory("BaseCustomFlag1",1,"Spawn")
loop

Missile:
CRAM FF 1 A_JumpIf(z-floorz>0, "JumpShoot")

Missile2:
CRAM GGGGG 1 A_JumpIf(z-floorz>0, "JumpShoot2")
Goto Spawn+1

JumpShoot:
CRSH J 0 A_JumpIf(pitch>30 && pitch<=90,"JumpShootDown")

JumpShoot2:
CRSH JJJJJJJ 1 A_JumpIf(z-floorz<=0, "Missile2")
Goto Jumping

JumpShootDown:
CRSH PPQQQQQ 1 A_JumpIf(z-floorz<=0, "Missile2")
Goto Jumping

ClassTimeStop:
PLAY A 0 SetPlayerProperty(0,1,4)
//PLAY A 0 A_GiveInventory("TimeStoppedFlag",1)
PLAY A 0 ACS_Execute(528,0)
CRAM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
//PLAY A 0 A_TakeInventory("TimeStoppedFlag",999)
PLAY A 0 SetPlayerProperty(0,0,4)
Goto pain+1
ClassPain:
//CRAM H 0 A_TakeInventory("TimeStoppedFlag",999)
CRAM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
ClassDeath:
CRAM H 12 ACS_ExecuteAlways(999,0,0)
CRAM H 8 A_SpawnItemEx("MM2Death")
CRAM H 0 A_PlayerScream
NOFX A 0 A_SpawnItemEx("FakeDeathFXMM2",0,0,32)
NOFX A 1 A_CheckPlayerDone
wait
ClassIceDeath:
CRAM A 35
NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("CrashBombWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("CrashBombWepM")
goto ClassDeath
}
}

actor CrashBombBoss : VCBaseWeapon
{
Weapon.AmmoUse 4
Weapon.AmmoGive 28
Weapon.SlotNumber 5
Obituary "$OB_CRASHMAN1"
Weapon.AmmoType "Base28Ammo"
Weapon.AmmoType2 "Base56Ammo"
States
{
Ready:
TNT1 A 0 A_JumpIfInventory("IsBot",1,"BossAIReady")
TNT1 A 0 ACS_ExecuteAlways(991,0,744)
TNT1 A 0 A_JumpIfInventory("Base56Ammo",56,"Ready.TF")
TNT1 A 0 A_JumpIfInventory("Base28Ammo",2,"Ready.TF")
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
CRAH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,5))
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
CRAH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,5))
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
CRAH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,5))
CRAH A 0 A_GiveInventory("Base28Ammo",1)
Goto Ready+2
Ready.TF:
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
CRAH A 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1")
CRAH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,5))
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
CRAH A 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1")
CRAH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,5))
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
CRAH A 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1")
CRAH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,5))
CRAH A 0 A_GiveInventory("Base28Ammo",1)
Goto Ready+2
Select:
TNT1 A 0 ACS_ExecuteAlways(991,0,744)
CRAH A 10 A_WeaponReady(14)
goto Ready
BossAIReady:
TNT1 A 0
CRAH A 0 ACS_ExecuteAlways(991,0,744)
CRAH A 5 A_WeaponReady
Goto BossAIReady+1
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
CRAH A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
CRAH A 1 A_Raise
Loop

User1:
CRAH A 0 A_JumpIfInventory("Base56Ammo",56,"User1.FullGreyAmmo")
CRAH A 2 Offset(0,42) ACS_NamedExecuteWithResult("VC_SetState",4)
CRAH A 2 Offset(0,68)
CRAH A 2 Offset(0,84)
User1.Loop:
CRAH A 1 A_JumpIfInventory("Base28Ammo",2,1)
goto User1.End
//CRAH A 0 ACS_ExecuteAlways(2107,0,3)
CRAH A 0 A_PlaySoundEx("weapon/commandoshockwave","Weapon")
CRAH A 0 A_TakeInventory("Base28Ammo",2)
CRAH A 0 A_SpawnItemEx("CrashManMMFX",24,16,24)
CRAH A 0 A_FireCustomMissile("CrashManUser1Bomb1",0,0,16,18)
CRAH A 5
CRAH AAA 1 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1.LoopB")
goto User1.End
User1.LoopB:
CRAH A 1 A_JumpIfInventory("Base28Ammo",2,1)
goto User1.End
//CRAH A 0 ACS_ExecuteAlways(2107,0,3)
CRAH A 0 A_PlaySoundEx("weapon/commandoshockwave","Weapon")
CRAH A 0 A_TakeInventory("Base28Ammo",2)
CRAH A 0 A_SpawnItemEx("CrashManMMFX",24,-16,24)
CRAH A 0 A_FireCustomMissile("CrashManUser1Bomb1",0,0,-16,18)
CRAH A 5
CRAH AAA 1 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1.Loop")
goto User1.End
User1.FullGreyAmmo:
CRAH A 1 Offset(0,42) ACS_NamedExecuteWithResult("VC_SetState",1)
CRAH A 1 Offset(0,68)
CRAH A 4 Offset(0,84)
CRAH A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CRAH A 0 A_PlaySoundEx("weapon/commandoshockwave","Weapon")
CRAH A 0 A_TakeInventory("Base56Ammo",56)
CRAH A 0 A_SpawnItemEx("CrashManMMFX",24,0,24)
CRAH A 0 A_FireCustomMissile("CrashManUser1Bomb2",0,0,0,18)
CRAH A 1 Offset(-3,84) A_Quake(3,6,0,128)
CRAH A 1 Offset(3,84)
CRAH A 1 Offset(-2,84)
CRAH A 1 Offset(2,84)
CRAH A 1 Offset(-1,84)
CRAH A 1 Offset(1,84)
CRAH A 1 Offset(0,84)
goto User1.End

User1.End:
CRAH A 2 Offset(0,84) A_GiveInventory("BaseCustomFlag1")
CRAH A 2 Offset(0,68)
CRAH A 2 Offset(0,42) A_TakeInventory("BaseCustomFlag1")
CRAH A 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
CRAH A 12
goto Ready+2

Fire:
TNT1 A 0 A_JumpIfInventory("IsBot",1,"BossAIFire")
TNT1 A 0 A_JumpIfInventory("CrashUltTimer",1,"CrashUltMainFire")
CRAH BC 1
CRAB X 0 A_GiveInventory("CrashM1Handler",1)
CRAH D 6
CRAH EFGHIA 2
Goto Ready+2
CrashUltMainFire:
CRAH BC 1
CRAB X 0 A_PlaySoundEx("weapon/mm2shot","Weapon")
CRAB X 0 A_FireCustomMissile("CrashManBombB",0,1,8,0)
CRAB X 0 A_FireCustomMissile("CrashManBombB",8,0,8,0)
CRAB X 0 A_FireCustomMissile("CrashManBombB",-8,0,8,0)
CRAH D 6
CRAH EFGHIA 2
Goto Ready+2
BossAIFire:
CRAH A 0 A_Jump(108, "BossAIFireNoJump")
CRAH A 0 A_CheckFloor("BotJump")
CRAH A 0 A_Jump(140,"BotAIAltfire")
TNT1 A 0 A_FaceTarget
CRAH BC 1
CRAB X 0 A_GiveInventory("CrashM1Handler",1)
CRAH D 6
CRAH EFGHIA 2
goto BossAIReady
BossAIFireNoJump:
CRAH A 1 A_Jump(150,"BotAIMainFire")
CRAH A 1 A_Jump(90,"BotAIAltfire")
TNT1 A 0 A_FaceTarget
CRAH BC 1
CRAB X 0 A_PlaySoundEx("weapon/mbuster","Weapon")
CRAB X 0 A_FireCustomMissile("CrashSARBomb",0,1,-8,0)
CRAH D 6
CRAH EFGHIA 2
goto BossAIReady
Altfire:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
TNT1 A 0 A_JumpIfInventory("CrashUltTimer",1,"CrashUltAltFire")
CRAH JK 1
CRAB X 0 A_PlaySoundEx("weapon/mbuster","Weapon")
CRAB X 0 A_FireCustomMissile("CrashSARBomb",0,0,-8,4)
TNT1 A 0 A_TakeInventory("Base28Ammo",5)
CRAH L 5
CRAH MNOPQA 1
Goto Ready+2
CrashUltAltFire:
CRAH BD 1
CRAB X 0 A_PlaySoundEx("weapon/mbuster","Weapon")
CRAB XX 0 A_FireCustomMissile("CrashManFallingBomb",random(0,359),0,0,8,0)
TNT1 A 0 A_TakeInventory("Base28Ammo",2)

CRAH FH 1
TNT1 A 0 A_TakeInventory("Base28Ammo",2)
CRAB X 0 A_PlaySoundEx("weapon/mbuster","Weapon")
CRAH CC 0 A_FireCustomMissile("CrashManFallingBomb",random(0,359),0,0,8,0)

CRAH JL 1
TNT1 A 0 A_TakeInventory("Base28Ammo",2)
CRAB X 0 A_PlaySoundEx("weapon/mbuster","Weapon")
CRAB XX 0 A_FireCustomMissile("CrashManFallingBomb",random(0,359),0,0,8,0)

CRAH NP 1
TNT1 A 0 A_TakeInventory("Base28Ammo",1)
CRAB X 0 A_PlaySoundEx("weapon/mbuster","Weapon")
CRAB XX 0 A_FireCustomMissile("CrashManFallingBomb",random(0,359),0,0,8,0)
CRAH LM 4
CRAH NOPQA 2
CRAH A 4
Goto Ready+2
NoAmmo:
CRAH A 3 A_GiveInventory("Base28Ammo",1)
Goto Ready+2
BotJump:
TNT1 A 0 ThrustThingZ(0, 60, 0, 0)
goto BotAIMainFire
BotAIMainFire:
TNT1 A 0 A_FaceTarget
CRAB X 0 A_GiveInventory("CrashM1Handler",1)
CRAH BC 2
CRAH C 10
CRAH DEA 2
CRAH A 1 A_Jump(90,"BotAIAltfire")
goto BossAIReady
BotAIAltFire:
TNT1 A 0 A_FaceTarget
CRAB X 0 A_PlaySoundEx("weapon/mbuster","Weapon")
CRAB X 0 A_FireCustomMissile("CrashSARBomb",0,1,-8,0)
CRAH FG 2
CRAH G 10
CRAH HIA 2
goto BossAIReady
UltimateAttack:
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,16)
TNT1 A 0 A_TakeInventory("MediumUltimateAmmo",100)
TNT1 A 0 A_GiveInventory("CrashUltStart_CI",1)
TNT1 A 0 A_GunFlash
CRAH A 1
Goto Ready+2
Flash:
TNT1 A 0
Flash.Ult:
TNT1 A 0 A_GiveInventory("WindUltCooldown",1)
TNT1 A 2 A_GiveInventory("CrashmanUlt_CI")
TNT1 A 0 ACS_EXECUTEALWAYS(971,0,1744)
TNT1 A 2 A_GiveInventory("CrashmanUlt_CI")
TNT1 A 0 ACS_EXECUTEALWAYS(971,0,2744)
TNT1 A 0 A_JumpIfInventory("CrashUltTimer",1,"Flash.Ult")
TNT1 A 0 A_GiveInventory("CrashmanUltStop_CI",1)
goto NoFlash
NoFlash:
TNT1 A 0
Stop
}
}

Actor CrashmanUltStop_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("CrashUltTimer",999)
TNT1 A 0 A_TakeInventory("MediumUltimateAmmo",999)
TNT1 A 0 ACS_ExecuteAlways(991,0,744)
stop
}
}

actor CrashmanUlt_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("CrashUltTimer",1)
TNT1 A 0 A_TakeInventory("MediumUltimateAmmo",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",70,"Pickup2")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 //ACS_ExecuteAlways(991,0,744)
stop
Pickup2:
TNT1 A 0 //ACS_ExecuteAlways(991,0,10857)
TNT1 A 0 A_TakeInventory("MediumUltimateAmmo",1)
TNT1 A 0 A_TakeInventory("CutterFlag",999)
stop
}
}

actor CrashManMMFX : BaseDecorativeActor
{
RenderStyle "Add"
Alpha 0.65
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
MMFX FGHI 2
stop
}
}

actor CrashManBomb
{
PROJECTILE
Radius 12
Height 12
DamageType "Crashman"
Obituary "$OB_CRASHMAN1"
Scale 2.5
Damage (15)
Speed 40
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CRAB A 1
Goto Spawn+2
Death:
CRAB A 0 A_CheckFloor("Floor")
CRAB A 0 A_CheckCeiling("Ceiling")
CRAB A 0 A_SpawnItemEx("CrashManBombWall")
stop
Floor:
CRAB A 0 A_SpawnItemEx("CrashManBombFloor")
stop
Ceiling:
CRAB A 0 A_SpawnItemEx("CrashManBombCeiling")
stop
Crash:
XDeath:
TNT1 A 0 A_SpawnItemEx("CrashManBombExplosion")
stop
}
}

actor CrashManBombExplosion
{
PROJECTILE
radius 1
height 1
DamageType "Crashman"
Obituary "$OB_CRASHMAN1"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySoundEx("MaGMML2/CrashBombExplode","Body")
goto loopit
loopit:
TNT1 A 0 A_Explode(4,64,0)
TNT1 A 0 A_SpawnItemEx("CrashBombFX",random(40,-40),random(40,-40),random(40,-40))
TNT1 A 0 A_SpawnItemEx("CrashBombFX",random(40,-40),random(40,-40),random(40,-40))
TNT1 A 0 A_SpawnItemEx("CrashBombFX",random(40,-40),random(40,-40),random(40,-40))
TNT1 A 5 A_SpawnItemEx("CrashBombFX",random(40,-40),random(40,-40),random(40,-40))
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",9,"Death")
loop
Death:
TNT1 A 0
stop
}
}

actor CrashManBombExplosion2 : CrashManBombExplosion //Full hitstun
{
DamageType "CrashManBomb"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySoundEx("weapon/crashexplode","Body")
goto loopit
}
}

actor CrashManBombDown : CrashManBomb
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CRAB N 1
Goto Spawn+2
Floor:
CRAB A 0 A_SpawnItemEx("CrashManBombDownFloor")
stop
Crash:
XDeath:
TNT1 A 0 A_SpawnItemEx("CrashManBombExplosion2")
stop
}
}

actor CrashManBombWall : CrashManBomb
{
damagetype "CrashmanLand"
damage(0)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CRAB B 3 A_PlaySound("MaGMML2/CrashBombStart")
CRAB C 3
CRAB DCDCDCDCDCDCDC 3
Death:
Goto XDeath
Crash:
XDeath:
TNT1 A 0 A_SpawnItemEx("CrashManBombExplosion2")
stop
}
}

actor CrashManBombFloor : CrashManBomb
{
damagetype "CrashmanLand"
damage(0)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CRAB E 3 A_PlaySound("MaGMML2/CrashBombStart")
CRAB F 3
CRAB GFGFGFGFGFGFGF 3
Death:
Goto XDeath
Crash:
XDeath:
TNT1 A 0 A_SpawnItemEx("CrashManBombExplosion2")
stop
}
}


actor CrashManBombDownFloor : CrashManBombFloor
{
damagetype "CrashmanLand"
damage(0)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CRAB Q 3 A_PlaySound("MaGMML2/CrashBombStart")
CRAB O 3
CRAB POPOPOPOPOPOPO 3
Death:
Goto XDeath
Crash:
XDeath:
TNT1 A 0 A_SpawnItemEx("CrashManBombExplosion2")
stop
}
}

actor CrashManBombCeiling : CrashManBomb
{
damagetype "CrashmanLand"
damage(0)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CRAB H 3 A_PlaySound("MaGMML2/CrashBombStart")
CRAB I 3
CRAB JIJIJIJIJIJIJI 3
Death:
Goto XDeath
Crash:
XDeath:
TNT1 A 0 A_SpawnItemEx("CrashManBombExplosion2")
stop
}
}


actor CrashBombFX //Thanks to hansungkee for this
{
Speed 0
Damage 0
Scale 2.5
Height 0
Radius 0
+NOINTERACTION
+NOCLIP
+NOGRAVITY
-SOLID
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
MMFX BBCDE 1
stop
}
}

actor CrashManUser1Bomb1 : FastProjectile
{
PROJECTILE
Radius 6
Height 6
DamageType "CrashUser1"
Obituary "$OB_CRASHMAN2"
Scale 2.5
Damage (0)
Speed 64
States
{
Spawn:
TNT1 AA 1 A_GiveInventory("ProjectileCode",1)
CRUS A 2 A_SpawnItemEx("CrashManUser1Bomb1Trail",-3,0,0)
wait
Death:
TNT1 A 0 A_Explode(8,64,0)
TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("CrashBombFX",0,0,0,random(-20,20),random(-20,20),random(-20,20))
TNT1 A 2 A_PlaySoundEx("weapon/crashbomb3","SoundSlot5")
stop
}
}

actor CrashManUser1Bomb1Trail : BaseDecorativeActor
{
RenderStyle Add
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CRUS A 3
CRUS A 1 A_FadeOut
wait
}
}

actor CrashManUser1Bomb2 : CrashManUser1Bomb1
{
Radius 12
Height 12
Obituary "$OB_CRASHMAN3"
DamageType "CrashUser1_LessAmmo"
Speed 54
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CRUS BBCCDDEE 1 A_SpawnItemEx("CrashManUser1Bomb2Trail",-8,0,0)
Goto Spawn+2

Death:
PS1X A 0 A_PlaySoundEx("weapon/megalocrash","SoundSlot5")
PS1X A 0 A_PlaySoundEx("weapon/drillexplode","SoundSlot4")
PS1X A 0 A_Stop
PS1X A 0 A_ChangeFlag("NOINTERACTION",1)
PS1X AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("HeatExplodeFX",random(0,128),0,random(-64,64),0,0,0,random(0,359))
PS1X A 0 A_Explode(60,128,0,0,64)
PS1X A 10 A_Quake(4,10,0,200)
PS1X ABCDEFGHIJ 1
stop
}
}

actor CrashManUser1Bomb2Trail : BaseDecorativeActor
{
RenderStyle Add
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CRUS BBC 1
CRUS CDDEEBBC 1 A_FadeOut
goto Spawn+5
}
}

actor CrashManBombB
{
PROJECTILE
Radius 6
Height 6
DamageType "CrashManBomb"
Obituary "$OB_CRASHMAN1"
scale 2.5
damage (0)
speed 40
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CRAB A 1 A_GiveToTarget("WindUltCooldown",1)
Goto Spawn+2
Death:
CRAB A 0 A_JumpIf(z-floorz<5, "Floor")
CRAB A 0 A_JumpIf(z-ceilingz==0-6, "Ceiling")
CRAB B 3 A_PlaySound("4MI/CrashBombStart")
CRAB C 3
CRAB DCDCDCDCDCDCDC 3 A_GiveToTarget("WindUltCooldown",1)
Goto XDeath
Floor:
CRAB E 3 A_PlaySound("4MI/CrashBombStart")
CRAB F 3
CRAB GFGFGFGFGFGFGF 3 A_GiveToTarget("WindUltCooldown",1)
Goto XDeath
Ceiling:
CRAB H 3 A_PlaySound("4MI/CrashBombStart")
CRAB I 3
CRAB JIJIJIJIJIJIJI 3 A_GiveToTarget("WindUltCooldown",1)
Goto XDeath
XDeath:
TNT1 A 0 A_Stop
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 0 A_Explode(17,64,0)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
CRAS KKLL 1 A_GiveToTarget("WindUltCooldown",1)
TNT1 A 0 A_Explode(17,64,0)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
CRAS MMNN 1 A_GiveToTarget("WindUltCooldown",1)
TNT1 A 0 A_Explode(17,64,0)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
CRAS OOPP 1 A_GiveToTarget("WindUltCooldown",1)
TNT1 A 0 A_Explode(17,64,0)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
CRAS QQRR 1 A_GiveToTarget("WindUltCooldown",1)
TNT1 A 0 A_Explode(17,64,0)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
CRAS SSTT 1 A_GiveToTarget("WindUltCooldown",1)
stop
}
}

actor CrashManFallingBomb
{
PROJECTILE
Radius 12
Height 12
DamageType "Crashman"
Obituary "$OB_CRASHMAN4"
scale 2.5
damage (0)
Speed 16
Gravity 2.0
-BOUNCEONFLOORS
bouncetype hexen
bouncecount 99
bouncefactor 0.9
-NOGRAVITY
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CRAB E 1 ThrustThingZ(0,random(40,60),0,1)
CRAB E 1 A_CheckFloor("Death.Floor")
goto Spawn+3
XDeath:
TNT1 A 0 A_Stop
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
TNT1 A 0 A_Explode(8,64,0)
CRAS KK 1 A_GiveToTarget("WindUltCooldown",1)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
TNT1 A 0 A_Explode(8,64,0)
CRAS LLMM 1
CRAS NN 1 A_GiveToTarget("WindUltCooldown",1)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
TNT1 A 0 A_Explode(8,64,0)
CRAS OOPP 1
CRAS QQ 1 A_GiveToTarget("WindUltCooldown",1)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
TNT1 A 0 A_Explode(8,64,0)
CRAS RRSS 1
CRAS TT 1 A_GiveToTarget("WindUltCooldown",1)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
TNT1 A 0 A_Explode(8,64,0)
CRAS VVWW 1
stop
Death.Floor:
TNT1 A 0 A_SpawnItemEx("CrashFloorMine")
TNT1 A 2 A_PlaySoundEx("weapon/crashland","Body")
stop
Death:
TNT1 A 0
stop
}
}

actor CrashFloorMine
{
PROJECTILE
Radius 12
Height 12
DamageType "Crashman"
Obituary "$OB_CRASHMAN4"
scale 2.5
damage (0)
Speed 32
Gravity 2.0
reactiontime 7
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CRAB FFF 11 A_GiveToTarget("WindUltCooldown",1)
CRAB G 2
CRAB G 0 A_Countdown
Goto Spawn+2
Death:
TNT1 A 0 A_Stop
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
TNT1 A 0 A_Explode(8,64,0)
CRAS KK 1 A_GiveToTarget("WindUltCooldown",1)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
TNT1 A 0 A_Explode(8,64,0)
CRAS LLMM 1
CRAS NN 1 A_GiveToTarget("WindUltCooldown",1)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
TNT1 A 0 A_Explode(8,64,0)
CRAS OOPP 1
CRAS QQ 1 A_GiveToTarget("WindUltCooldown",1)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
TNT1 A 0 A_Explode(8,64,0)
CRAS RRSS 1
CRAS TT 1 A_GiveToTarget("WindUltCooldown",1)
CRAS A 0 A_PlaySound("4MI/CrashBombExplode")
TNT1 A 0 A_Explode(8,64,0)
CRAS VVWW 1
stop
}
}

actor CrashSARBomb
{
+HITTRACER
PROJECTILE
Radius 6
Height 6
DamageType "Crashman"
Obituary "$OB_CRASHMAN5"
scale 2.5
damage (1)
speed 32
var int user_stuck;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CRAB KM 3
Goto Spawn+2
Death:
CRAB K 0 A_Stop
CRAB K 0 A_PlaySoundEx("weapon/napalm", "Weapon")
CRAB K 0 A_Explode(24,64,0)
NAPA EFGHIJKLMNOPQRS 2
stop
Crash:
XDeath:
CRAB I 0 A_SetUserVar("user_stuck", 1)
CRAB A 0 A_JumpIfInventory("CrashLatchFlag",1,"Death",AAPTR_TRACER)
CRAB A 0 A_GiveInventory("CrashLatchFlag",1,AAPTR_TRACER)
CRAB K 0 A_PlaySound("weapon/rminestick")
Latch:
CRAB C 0 A_ChangeFlag("NOINTERACTION",1)
CRAB C 0 A_ChangeFlag("NOCLIP",1)
CRAB C 0 A_PlaySoundEx("misc/door","Auto")
CRAB KKKKKKKKKKKKKKKK 1 A_Warp(AAPTR_TRACER,-28,0,32,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
REMI B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1)==0,"Nope")
CRAB C 0 A_GiveInventory("CutterFlag")
CRAB C 0 A_JumpIfInventory("CutterFlag",5,"Explode")
loop
Explode:
CRAB K 0 A_PlaySoundEx("weapon/crashsarexplode","SoundSlot5")
TNT1 A 0 A_Stop
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 0 A_SpawnItemEx("HeatExplodeFX",0,-40,40)
TNT1 A 0 A_SpawnItemEx("HeatExplodeFX",0,-40,-40)
TNT1 A 0 A_SpawnItemEx("HeatExplodeFX",0,40,40)
TNT1 A 0 A_SpawnItemEx("HeatExplodeFX",0,40,-40)
TNT1 A 0 A_SpawnItemEx("HeatExplodeFX",0,0,0)
TNT1 A 0 A_Quake(3,12,0,200)
TNT1 A 12 A_Explode(28,200,0,0,32)
stop
Nope:
TNT1 A 0
stop
}
}

actor CrashLatchFlag : Powerup
{
Powerup.Duration 80
}

actor CrashUltTimer : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 200
}

actor CrashUltStart_CI : CustomInventory
{
States
{
Pickup:
TNT1 C 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
TNT1 A 0 A_TakeInventory("UltAttackFlag",1)
TNT1 A 0 A_TakeInventory("MediumUltimateAmmo",1)
TNT1 A 0 A_GiveInventory("CrashUltTimer",200)
stop
}
}

actor CrashM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/mm2shot","Weapon")
TNT1 A 0 A_JumpIf(pitch>30 && pitch<=90,"PickupDown")
TNT1 A 0 A_FireCustomMissile("CrashManBomb",0,1,8,0)
stop

PickupDown:
TNT1 A 0 A_FireCustomMissile("CrashManBombDown",0,1,8,0)
stop
}
}