ACTOR demoWILCO : BigTree
{
  Radius 20
  Height 56
  States
  {
	  Spawn:
		WILC A -1
		Stop
  }
}

ACTOR LostRomero : LostSoul
{
  Health 50
  Speed 4
  RenderStyle Normal
  Obituary "%o was spooked by a lost romero."
  States
  {
  Spawn:
    LROM AB 10 Bright A_Look
    Loop
  See:
    LROM AB 6 Bright A_Chase
    Loop
  Missile:
    LROM C 10 Bright A_FaceTarget
    LROM D 4 Bright A_SkullAttack
    LROM CD 4 Bright
    Goto Missile+2
  Pain:
    LROM E 3 Bright
    LROM E 3 Bright A_Pain
    Goto See
  Death:
    LROM F 6 Bright
    LROM G 6 Bright A_Scream
    LROM H 6 Bright
    LROM I 6 Bright A_NoBlocking
    LROM J 6
    LROM K 6
    Stop
  }
}

AcTOR demodalekmonkey 
{
  Radius 16
  Height 16
    +NoGravity
    +FloatBob
    +Float
    +NoRadiusDMG
    +FireResist 
  States
  {
  Spawn:
    SSIM A -1 
    Stop		
  }
}

AcTOR demospgm
{
  Radius 20
  Height 56  
  States
  {
  Spawn:
    SPGM A -1 
    Stop		
  }
}

AcTOR demolincoln
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    pmms A -1 
    Stop		
  }
}

AcTOR democaco 
{
    Radius 31
    Height 56
    +NoGravity
    +FloatBob
    +Float
    +NoRadiusDMG
    +FireResist  
  States
  {
  Spawn:
    TECD A -1 
    Stop		
  }
}

AcTOR demopinky
{
  Radius 30
  Height 56
  States
  {
  Spawn:
    CYCL A -1 
    Stop		
  }
}

AcTOR demoswag
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    SWAG A -1 
    Stop		
  }
}

AcTOR demochimp 
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    APEM A -1 
    Stop		
  }
}

AcTOR demoelmz
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    ELMZ A -1 
    Stop		
  }
}

AcTOR demobutch
{
  Radius 24
  Height 64
  States
  {
  Spawn:
    BUTC AB 16 
    loop
  }
}

AcTOR democaco2
{
    Radius 31
    Height 56
    +NoGravity
    +FloatBob
    +Float
    +NoRadiusDMG
    +FireResist
  States
  {
  Spawn:
    htec A -1 
    Stop		
  }
}

AcTOR demosophia
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    SOPZ A -1 
    Stop		
  }
}

AcTOR demorsst
{
  Radius 20
  Height 56
    +NoGravity
    +FloatBob
    +Float
    +NoRadiusDMG
    +FireResist
  States
  {
  Spawn:
    RSST AB 8 
    loop	
  }
}

AcTOR demodgps 
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    DGPS A -1 
    Stop		
  }
}

AcTOR demoaqueen 
{
  Radius 20
  Height 56
    +NoGravity
    +FloatBob
    +Float
    +NoRadiusDMG
    +FireResist
  States
  {
  Spawn:
    AQUE A -1 
    Stop		
  }
}

AcTOR demospig 
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    spig A -1 
    Stop		
  }
}

AcTOR demodogm 
{
  Radius 20
  Height 56
      +NoGravity
    +FloatBob
    +Float
    +NoRadiusDMG
    +FireResist 
  States
  {
  Spawn:
     dogm A -1 
    Stop		
  }
}

AcTOR demoflyspider
{
  Radius 20
  Height 56
    +NoGravity
    +FloatBob
    +Float
    +NoRadiusDMG
    +FireResist  
  States
  {
  Spawn:
    flya A -1 
    Stop		
  }
}

AcTOR demodogufo
{
  Radius 20
  Height 56
    +NoGravity
    +FloatBob
    +Float
    +NoRadiusDMG
    +FireResist
  States
  {
  Spawn:
    dogu A -1 
    Stop		
  }
}

AcTOR demosuperpig
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    spig A -1 
    Stop		
  }
}

AcTOR demopigbaron
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    pigb A -1 
    Stop		
  }
}

AcTOR demopigmancubus
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    pfat A -1 
    Stop		
  }
}

AcTOR demobfgcage
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    bfgd A -1 
    Stop		
  }
}

AcTOR demopigc
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    pigc A -1 
    Stop		
  }
}

AcTOR demomons
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    mons A -1 
    Stop		
  }
}

AcTOR demoorkg
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    orkg A -1 
    Stop		
  }
}

AcTOR demoimpj
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    impj A -1 
    Stop		
  }
}

AcTOR demoimpt
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    impt A -1 
    Stop		
  }
}

AcTOR demothimbleweed
{
  Radius 48
  Height 64
  States
  {
  Spawn:
    twdm B -1 
    Stop		
  }
}

AcTOR demoslug
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    slug A -1 
    Stop		
  }
}

AcTOR demofrog
{
   Radius 20
  Height 56
  States
  {
  Spawn:
    frog A -1 
    Stop		
  }
}

AcTOR demoork1
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    orc1 A -1 
    Stop		
  }
}

AcTOR demoork2
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    orc2 A -1 
    Stop		
  }
}

AcTOR demoork3
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    orc3 A -1 
    Stop		
  }
}


AcTOR democaptainsmirk
{
  Radius 20
  Height 56
  States
  {
  Spawn:
    smir AB 8 
    loop		
  }
}

AcTOR demobikinibabe
{
  Radius 48
  Height 64
  States
  {
  Spawn:
    vatt AB 4 
    loop		
  }
}

actor peedy : archvile 
{

  Radius 31
  Height 56
  Health 800
  
  -FLOORCLIP
  +FLOAT 
  +NOGRAVITY
  
  scale 0.5

  Obituary "peedy won... flawless victory!"
  
  States
  {
  Spawn:
    peed tuv 10
  Spyglass:	
	peed v 10 A_Look
    Loop
  See:
    peed vut 10
  See2: 
   peed AABB 2 A_VileChase
    Loop
  Missile:
    peed c 0 Bright A_VileStart
    peed cd 8 Bright A_FaceTarget
    peed ef 8 Bright A_VileTarget
    peed fe 8 Bright A_FaceTarget
    peed dc 8 Bright A_VileAttack
	peed wxyzyxw 8 BRIGHT A_HeadAttack
    Goto See2
  Heal:
    peed ijklmnoponmlkji 10 Bright
    Goto See2
  Pain:
    peed qrs 5   
    peed srq 5 A_Pain
    Goto See2
  Death:
    peed c 7
    peed g 7 A_Scream
    peed h 7 A_NoBlocking
    tnt1 a 1
    Stop
  }


}

actor CyberDuckDemonBaby
{
	//$Category Tests
	//$Title "Young Cyber Demon ducky shoes"
	Obituary "%o was crushed by a young and fashionable cyberdemon."
	HitObituary "%o was burned by a young and fashionable cyberdemon."
	Health 1000
	Radius 20
	Height 60
	Mass 500
	bloodcolor "green"
	Speed 7
	PainChance 20
	SeeSound "cyber/sight"
	PainSound "cyber/pain"
	DeathSound "cyber/death"
	ActiveSound "cyber/active"
    xscale 0.5
    yscale 0.5
	MONSTER
	+FLOORCLIP
	+NORADIUSDMG
	+DONTMORPH
  States
  {
	  Spawn:
		zBDK AB 10 A_Look
		Loop
	  See:
		zBDK A 3 A_Hoof
		zBDK A 3 A_PlaySound("minicyberduckdemon/quacky", CHAN_5)
		zBDK A 3 A_PlaySound("minicyberduckdemon/quacky", CHAN_6)		
		//zBDK A 3 A_PlaySound("cyber/hoof", CHAN_6)	
		zBDK ABBCC 3 A_Chase
		zBDK D 3 A_Metal
		zBDK D 3 A_Chase
		Loop
	  Melee:
		zBDK E 6 A_FaceTarget
		zBDK E 12 A_SargAttack
		Goto See
	  Missile:
		zBDK E 6 A_FaceTarget
		zBDK F 12 A_SpawnProjectile("DoomImpBall", 48)
		Goto See
	  Pain:
		zBDK G 10 A_Pain
		Goto See
	  Death:
		zBDK H 10
		zBDK I 10 A_Scream
		zBDK JKL 10
		zBDK M 10 A_NoBlocking
		zBDK NO 10
		zBDK P 30
		zBDK P -1 A_BossDeath
		Stop
  }
}

ACTOR IconOfGuy : BossBrain
{
	//$Category Tests
	//$Title "Icon of Guy"
  States
	  {
	  Spawn:
		BBDG ACD 9
		Loop
	  Pain:
		BBDG B 36 A_BrainPain
		Goto Spawn
	  Death:
		BBDG A 100 A_BrainScream
		BBDG AA 10
		BBDG A -1 A_BrainDie
		Stop
	  }
}

actor purplewaldo 
{
	//$Category Tests
	//$Title "Waldo targetpractice"
  bloodcolor "red"
  Obituary "somehow someone was killed by an evil waldo"
  HitObituary "somehow someone was killed by an evil waldo"
  Health 10
  Radius 24
  Height 64
  Mass 1000
  Speed 0
  PainChance 0
  Monster
  +FLOORCLIP
  SeeSound "baron/sight"
  PainSound "baron/pain"
  DeathSound "baron/death"
  ActiveSound "baron/active"
  States
  {
  Spawn:
  See:
  Melee:
  Missile:
  Pain:
    WALD A 1
    Loop
  Death:
    WALD B 30
    WALD B -1 
    Stop
  }
 }

ACTOR voxtankenemy //8200
{
	Height 64
	Radius 64
  Mass 1000
  Speed 16
  PainChance 20
  Monster
  MinMissileChance 160
  +BOSS
  +MISSILEMORE
  +FLOORCLIP
  +NORADIUSDMG
  +DONTMORPH
 // +BOSSDEATH
	+SOLID
	+ACTLIKEBRIDGE
	+CANPASS
	bloodcolor "black"
  SeeSound "cyber/sight"
  PainSound "cyber/pain"
  DeathSound "cyber/death"
  ActiveSound "cyber/active"
  Obituary "someone was killed by a vindicator tank"

 States
  {
  Spawn:
    VET1 A 10 A_Look
    Loop
  See:
    //VET1 A 3 //A_Hoof
    VET1 ABCABC 6 A_Chase
    //CYBR D 3 //A_Metal
    //CYBR D 3 A_Chase
    Loop
  Missile:
    VET3 A 6 A_FaceTarget
    VET3 B 6 A_SpawnProjectile("Rocket", 16) //A_CyberAttack
    //CYBR E 12 A_FaceTarget
    //CYBR F 12 A_CyberAttack
    //CYBR E 12 A_FaceTarget
    //CYBR F 12 A_CyberAttack
    Goto See
  Pain:
    //CYBR G 10 A_Pain
    Goto See
	
	
	/*
  Death:
    //CYBR H 10
    //CYBR I 10 A_Scream
    //CYBR JKL 10
    //CYBR M 10 A_NoBlocking
    //CYBR NO 10
	VET2 A 10 
	VET2 A 10 A_CustomMissile ("OMHollywoodFire2", 76, 0, random (0, 360), 2, random (40, 90))
    VET2 A 10 A_Explode(20,100)
	
    VET2 A -1 //A_BossDeath
    Stop
	*/
	
		      Death:
		TNT1 A 1
		TNT1 A 0 A_SpawnItem("OMBigExplosion1112")
		TNT1 A 0 A_PlaySound("Explosion", 3)
		TNT1 A 0 A_Explode(200, 250)
		TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
		TNT1 A 0 A_Scream
		NULL AAAAAA 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
		NULL AAAAAA 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
		NULL AAAAAAAAA 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
		TNT1 A 0 A_SpawnItem("OMDestroyedVoxEnemy")
		TNT1 A 15
		TNT1 A 0
		Stop
	
  }
}




AcTOR sobchandelier //8203
{
  Radius 16
  Height 16
  //ProjectilePassHeight -16
  +NOGRAVITY
  States
  {
  Spawn:
  On:
    CDLR ABC 3 Bright
    Loop	
  Off:
    CDLR D -1 
    Stop		
  }
}


ACTOR sobcauldron //8204
{
  Radius 32
  Height 32
  ProjectilePassHeight -16
  +SOLID
  States
  {
  Spawn:
  Empty:
    CDRN A -1 
    Stop
  EmptyLit:
    CDRN BCDEFGH 7 Bright
    Loop	
  Full:
    CDRN I -1 
    Stop		
  FullLit:
    CDRN JKLMNOPRSTUVW 14 Bright
    Loop		
  }
}

ACTOR sobbucket //8205
{
  Radius 16
  Height 16
  +nogravity
  ProjectilePassHeight -16
  States
  {
  Spawn:
  Bucket:
    BCKT A -1 Bright
    Stop
  Empty:
    BCKT B -1 Bright
    Stop	
  Solo:
    BCKT C -1 Bright
    Stop		
  }
}

actor sobeyeball //8207
{
  Health 50
  Radius 16
  Height 16
  Mass 50
  Speed 12
  Damage 3
  PainChance 256
  Monster
  //+FLOAT
  //+NOGRAVITY
  //+MISSILEMORE
  //+DONTFALL
  +NOICEDEATH
  +floorclip
  AttackSound "skull/melee"
  PainSound "skull/pain"
  DeathSound "skull/death"
  ActiveSound "skull/active"
  //RenderStyle SoulTrans
  Obituary "%o was spooked by a jumping eye."
  States
  {
  Spawn:
    peye A 10 A_Look
    Loop
  See:
    peye ABCICB 6 A_Chase
    Loop
  Missile:
    peye A 10 Bright A_FaceTarget
    peye A 4 //A_SkullAttack
    //beye A 4 Bright 
    peye g 10 Bright A_SargAttack
    //Goto Missile+2
	Goto See
  Pain:
    peye h 3 Bright A_Pain
    Goto See
  Death:
    peye d 6 Bright A_Scream
    peye e 6 Bright A_NoBlocking
    peye f 6
    Stop
  }
}

actor sobeye3 //8206
{
  Health 50
  Radius 16
  Height 16
  Mass 50
  Speed 8
  Damage 3
  PainChance 256
  Monster
  +FLOAT
  +NOGRAVITY
  +DONTFALL
  +NOICEDEATH
  AttackSound "skull/melee"
  PainSound "skull/pain"
  DeathSound "skull/death"
  ActiveSound "skull/active"
  RenderStyle Normal
  Obituary "%o was spooked by a floating eye."
  States
  {
  Spawn:
    peye A 10 A_Look
    Loop
  See:
    peye A 6 A_Chase
    Loop
  Missile:
    peye A 10 Bright A_FaceTarget
    peye A 4 
    peye g 4 Bright A_SargAttack 
    //beye A 10 Bright A_MonsterRail
    //Goto Missile+2
	Goto See
  Pain:
    peye h 3 Bright A_Pain
    Goto See
  Death:
    peye d 6 Bright A_Scream
    peye e 6 Bright A_NoBlocking
    peye f 6
    Stop
  }
}

actor sobeye2 //8206
{
  Health 50
  Radius 16
  Height 16
  Mass 50
  Speed 12
  Damage 3
  PainChance 256
  Monster
  +FLOAT
  +NOGRAVITY
  +MISSILEMORE
  +DONTFALL
  +NOICEDEATH
  AttackSound "skull/melee"
  PainSound "skull/pain"
  DeathSound "skull/death"
  ActiveSound "skull/active"
  //RenderStyle SoulTrans
  Obituary "%o was spooked by a floating eye."
  States
  {
  Spawn:
    geye A 10 A_Look
    Loop
  See:
    geye A 6 A_Chase
    Loop
  Missile:
    geye A 10 Bright A_FaceTarget
    geye A 4 
    geye E 4 Bright A_SkullAttack 
    //beye A 10 Bright A_MonsterRail
    Goto Missile+2
	//Goto See
  Pain:
    geye A 3 Bright A_Pain
    Goto See
  Death:
    geye B 6 Bright A_Scream
    geye C 6 Bright A_NoBlocking
    geye D 6
    Stop
  }
}

actor sobeye //8207
{
  Health 50
  Radius 16
  Height 16
  Mass 50
  Speed 12
  Damage 3
  PainChance 256
  Monster
  +FLOAT
  +NOGRAVITY
  +MISSILEMORE
  +DONTFALL
  +NOICEDEATH
  AttackSound "skull/melee"
  PainSound "skull/pain"
  DeathSound "skull/death"
  ActiveSound "skull/active"
  //RenderStyle SoulTrans
  Obituary "%o was spooked by a floating eye."
  States
  {
  Spawn:
    beye A 10 A_Look
    Loop
  See:
    beye A 6 A_Chase
    Loop
  Missile:
    beye A 10 Bright A_FaceTarget
    beye A 4 //A_SkullAttack
    //beye A 4 Bright 
    beye A 10 Bright A_MonsterRail
    //Goto Missile+2
	Goto See
  Pain:
    beye A 3 Bright A_Pain
    Goto See
  Death:
    beye B 6 Bright A_Scream
    beye C 6 Bright A_NoBlocking
    beye D 6
    Stop
  }
}

ACTOR sobblob //8208
{
  Radius 8
  Height 8
  ProjectilePassHeight -16
  +SOLID
  States
  {
  Spawn:
    BLOB ABCDEFG 7
	TNT1 A 28
	BLOB GFEDCBA 7
    loop
  }
}

ACTOR Zombiehand2 //8209
{
  Radius 8
  Height 16
  ProjectilePassHeight -16
  +SOLID
  States
  {
  Spawn:
    HND2 EFGHGFED 16
    HND2 CBAA 8
    HND2 ABCDEFGH 16		
	TNT1 A 64
    HND2 HGFEDCBA 16	
	HND2 A 8
    loop
  }
}

ACTOR OldTree //8210
{
  Radius 16
  Height 128
  ProjectilePassHeight -16
  +SOLID
  States
  {
  Spawn:
    SBT1 A -1 Bright
    Stop
  }
}

ACTOR OldTree2 //8211
{
  Radius 16
  Height 128
  ProjectilePassHeight -16
  +SOLID
  States
  {
  Spawn:
    SBT2 A -1 Bright
    Stop
  }
}

ACTOR MetalTree //8212
{
  Radius 8
  Height 128
  ProjectilePassHeight -16
  +SOLID
  States
  {
  Spawn:
    SBT3 A -1 Bright
    Stop
  }
}

ACTOR PlantTree //8213
{
  Radius 8
  Height 128
  ProjectilePassHeight -16
  +SOLID
  States
  {
  Spawn:
    SBT4 A -1 Bright
    Stop
  }
}

ACTOR Spiketree //8214
{
  Radius 16
  Height 128
  ProjectilePassHeight -16
  +SOLID
  States
  {
  Spawn:
    SPKT ABC 12
	TNT1 A 12
    SPKT CBA 12	
    Loop
  }
}

ACTOR Zombiehand //8215
{
  Radius 8
  Height 16
  ProjectilePassHeight -16
  +SOLID
  States
  {
  Spawn:
    HAND ABCDEFGH 16
	TNT1 A 32
    HAND HGFEDCBA 16	
	HAND A 16
    loop
  }
}

ACTOR SOBEyeTower //8216 
{
  Obituary "%o WAS KILLED BY AN ALL SEEING EYE"
  Health 400
  Radius 16
  Height 128
  //Scale 0.75
  Mass 0x7FFFFFFF // [Blue Shadow] "infinite" mass
  PainChance 96
  SeeSound "demon/sight"
  AttackSound "demon/melee"
  PainSound "demon/pain"
  DeathSound "demon/death"
  ActiveSound "demon/active"
  Monster
  +BOSS
  +FLOORCLIP
  +DONTHURTSPECIES
  +NOTARGET
  +MISSILEEVENMORE
  States
  {
  
  Spawn:
    EYET A 10 A_Look
    Loop
	
  See:
    EYET A 4
  
  SeeLoop:
    EYET A 4 A_Chase
    Loop
		
  Missile:
    EYET B 4 A_FaceTarget
    EYET B 4 Bright A_FatAttack2
    Goto SeeLoop

  Pain:
    EYET A 3
    EYET A 3 A_Pain
    Goto SeeLoop
	
  Death:
    EYET C 4
    EYET D 4 A_Scream
    EYET E 4 A_NoBlocking
    EYET F 4
    EYET F -1
    Stop
  }
}

ACTOR SOBClaw //8217
{
  Obituary "%o WAS KILLED BY A GIANT CLAW"
  Health 400
  Radius 32
  Height 128
  //Scale 0.75
  Mass 0x7FFFFFFF 
  PainChance 96
  SeeSound "demon/sight"
  AttackSound "demon/melee"
  PainSound "demon/pain"
  DeathSound "demon/death"
  ActiveSound "demon/active"
  Monster
  +BOSS
  +FLOORCLIP
  +DONTHURTSPECIES
  +NOTARGET
  +MISSILEEVENMORE
  States
  {
  
  Spawn:
    TNT1 A 10 A_Look
    Loop
	
  See:
    CLAW ABCDEFGHJI 4
  
  SeeLoop:
    CLAW JKLKJI 4 A_Chase
    Loop
	
  Melee:
    CLAW JKLKJI 4 A_SargAttack
    goto SeeLoop
	
  Missile:
    CLAW IJKL 4
    CLAW T 4 Bright A_FatAttack1
    CLAW S 4 A_FaceTarget
    CLAW T 4 Bright A_FatAttack2
    CLAW S 4 A_FaceTarget
    CLAW T 4 Bright A_FatAttack3
    CLAW S 4 A_FaceTarget
	CLAW LKJI 4
    Goto SeeLoop

  Pain:
    CLAW I 3
    CLAW I 3 A_Pain
    Goto SeeLoop
	
  Death:
    CLAW L 4
    CLAW M 4 A_Scream
    CLAW N 4 A_NoBlocking
    CLAW OPQR 4
    CLAW R -1
    Stop
  }
}


// OMTANK STUFF


Actor OMPressedUse : Inventory
{
      inventory.maxamount 1
}


Actor OMPressedJump : Inventory
{
inventory.maxamount 1
}


Actor OMTurnRight : Inventory
{
      inventory.maxamount 1
}


Actor OMTurnLeft : Inventory
{
      inventory.maxamount 1
}


Actor OMAccelerate : Inventory
{
      inventory.maxamount 1
}


Actor OMBackpedal : Inventory
{
      inventory.maxamount 1
}


Actor OMIsInATank : Inventory
{
      inventory.maxamount 1
}


Actor OMCeaseMorph : Inventory      
{
      inventory.maxamount 1
}


Actor OMCanLeaveVehicle : Inventory
{
      inventory.maxamount 1
}


Actor OMVehicleFallingCount : Inventory
{
      inventory.maxamount 100
}


ACTOR OMTankThingyToken1 : CustomInventory
{
   Inventory.MaxAmount 1
}

ACTOR OMTankThingyToken2 : CustomInventory
{
   Inventory.MaxAmount 1
}


Actor OMStoredArmorInsideVehicle : Inventory
{
inventory.maxamount 9999
}


Actor OMStoredHealthInsideVehicle : Inventory
{
inventory.maxamount 9999
}


Actor OMPitchFrontToken : Inventory{inventory.maxamount 20}

Actor OMPitchBackToken : Inventory{inventory.maxamount 20}


ACTOR OMCheckingMorphingPlayerHealth : CustomInventory
{
  States
  {
        PickUp:
           TNT1 A 0
           TNT1 A 0 ACS_NamedExecuteAlways("OMGetVehiclePreviousHealth2", 0, 0, 0, 0)//Grab Tripod Gun.
           Stop
  }
}


ACTOR OMTankReady : Ammo
{
   Inventory.Amount 0
   Inventory.MaxAmount 6
   Ammo.BackpackAmount 0
   Ammo.BackpackMaxAmount 6
   Inventory.Icon TNT1A0
}


ACTOR OMHeavyMachinegunAmmo : Ammo   
{
      Inventory.Amount 200
      Inventory.MaxAmount 2000
      Inventory.Icon "TNAMA0"
      States
      {
            Spawn:
            TNAM A -1
            Stop
      }
}

ACTOR WarTankHeavyMachinegunAmmo : OMHeavyMachinegunAmmo
{
  Inventory.PickupMessage "Picked up Tank hellfire ammo."
  Inventory.Amount 200
      States
      {
            Spawn:
            TNAM A -1
            Stop
      }
}

ACTOR OMTankShellAmmo : Ammo     
{
      Inventory.Amount 10
      Inventory.MaxAmount 50
      Inventory.Icon "AMISA0"
      States
      {
            Spawn:
            AMIS A -1
            Stop
      }
}

ACTOR WarTankShellAmmo : OMTankShellAmmo
{
  Inventory.PickupMessage "Picked up Tank shell ammo."
  Inventory.Amount 10
      States
      {
            Spawn:
            AMIS B -1
            Stop
      }
}

ACTOR OMARocketAmmo : Ammo
{
      Inventory.Amount 10
      Inventory.MaxAmount 100
      Inventory.Icon "AMISA0"
      States
      {
            Spawn:
            AMIS A -1
            Stop
      }
}

ACTOR WarTankRocketAmmo : OMARocketAmmo
{
  Inventory.PickupMessage "Picked up Tank rocket ammo."
  Inventory.Amount 10
      States
      {
            Spawn:
            AMIS B -1
            Stop
      }
}

ACTOR FlamerTankCannonAmmo : Ammo
{
      Inventory.Amount 200
      Inventory.MaxAmount 2000
      Inventory.Icon "TNAMA0"
      States
      {
            Spawn:
               TNAM A -1
               Stop
      }
}

Actor FlamerTankFireAmmo : Ammo
{
      Inventory.Amount 10
      Inventory.MaxAmount 150
      Inventory.Icon "TNAMB0"
      States
      {
            Spawn:
            TNAM B -1
            Stop
      }
}


ACTOR OMTankBaseDirection : Ammo
{
	Game Doom
	//REMARK 11
	Inventory.PickupMessage "$GOTCLIP"
	Inventory.Amount 0
	Inventory.MaxAmount 360
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 360
	Inventory.Icon "CLIPA0"
	States
	{
	Spawn:
		CLIP A -1
		Stop
	}
}

ACTOR OMFlameTankBaseDirection : Ammo
{
	Game Doom
	//REMARK 11
	Inventory.PickupMessage "$GOTCLIP"
	Inventory.Amount 0
	Inventory.MaxAmount 360
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 360
	Inventory.Icon "CLIPA0"
	States
	{
	Spawn:
		CLIP A -1
		Stop
	}
}

ACTOR OMTankShell
{
  Radius 11
  Height 8
  Speed 200
  Damage (random (400, 500))
  gravity 0.2
  Projectile
  +RANDOMIZE
  +DEHEXPLOSION
  +ROCKETTRAIL
  SeeSound "robo/rockfir"
  Obituary "$OB_MPROCKET" //"%o was exterminated by %k's rocket!"
  States
  {
  Spawn:
    TSHL A 1
    Loop
  Death:
    MISL B 0 Bright A_Explode
    TNT1 A 0 A_PlaySound("Explosion", 3)
    TNT1 A 0 A_SpawnItem("OMTankShotExplosion")
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("OMExplosionParticle", 0, 0, random (0, 360), 2, random (30, 160))
    TNT1 A 0 A_SpawnItem("OMTankShotExplosionImpact")
    TNT1 A 6
    TNT1 A 0 A_PlaySound("FAREXPL", 1)
    TNT1 AAAAAAAA 0 A_CustomMissile ("OMExplosionSmoke", 0, 0, random (0, 360), 2, random (0, 360))
    TNT1 AAAAA 0 A_CustomMissile ("OMExplosionSmokeFast", 0, 0, random (0, 360), 2, random (0, 360))
    TNT1 A 12
    Stop
  }
}


ACTOR ARocket : FastProjectile
{
  Radius 4
  Height 4
  Speed 100
  Damage (random (200, 300))
  MissileType "ARocketFTrail"
  MissileHeight 8
  +RANDOMIZE
  +DEHEXPLOSION
  +SEEKERMISSILE
  SeeSound "robo/rockfir"
  Obituary "$OB_MPROCKET" //"%o was exterminated by %k's rocket!"
  States
  {
  Spawn:
    MDLA A 1 A_SeekerMissile(0,3)
    Loop
  Death:
    TNT1 A 0 A_SpawnItemEx("OMRocketExplode",0,0,32)
    Stop
  }
}

Actor FlamerTankFire: FatShot
{

     speed 100
     damage  10

}

ACTOR OMPowerVehicleProtection : PowerIronFeet
{
  Powerup.Duration 1
  Powerup.Color 0, 0, 0, 0
  +INVENTORY.HUBPOWER
}

ACTOR OMVehicleResistance : PowerupGiver
{
  Inventory.UseSound ""
  Powerup.Type "OMPowerVehicleProtection"
  Powerup.Duration 0x7FFFFFFF
  +INVENTORY.AUTOACTIVATE
  States
  {
  Spawn:
    SUIT A 8 Bright
    Loop
  }
}


Actor OMGiveArmor : BasicArmorBonus
{
	Game Doom
	//REMARK 22
	Radius 20
	Height 16
	Inventory.Pickupmessage "$GOTARMBONUS"
	Inventory.Icon "BON2A0"
	Armor.Savepercent 50.1
	Armor.Saveamount 1
	Armor.Maxsaveamount 9999
	+COUNTITEM
	+INVENTORY.ALWAYSPICKUP
	States
	{
	Spawn:
		BON2 AAABBBCCCDDDCCCBBB 2
		loop
	}
}


Actor OMTankBaseNotReal
{
      +THRUACTORS
      YScale 1.8
      XScale 1.9
      +NOTIMEFREEZE
      -FLOORCLIP
      +NOGRAVITY
      -FLOAT
      Mass 5000
      Radius 0
      Height 0
      Gravity 0
      States
      {
            Spawn:
               TNT1 A 0
               TNK1 B 1
               TNT1 A 0 
               Stop
      }
}



Actor OMTankBaseNotRealMoving1: OMTankBaseNotReal
{
      Radius 0
      States
      {
            Spawn:
               TNT1 A 0
               TNT1 A 0 A_CustomMissile("OMCheckPitchCenter", -12, 0, 0, 2, 0)
               TNT1 A 0 A_CustomMissile("OMCheckPitchCenter", -12, 0, 180, 2, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckIfFloating", 96, 0, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckIfFloating", 96, -64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckIfFloating", 96, 4, -2, 0, 0, 0, 0)
               TNT1 A 0 A_CustomMissile("OMCheckIfOn3DFloor", -64, 0, 0, 2, 0)
               TNT1 A 0 A_CustomMissile("OMCheckIfOn3DFloor", -160, 0, 0, 2, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchFront", 76, 64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchFront", 76, -64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchFront", 76, 0, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchRunOver", 100, 64, 4, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchRunOver", 100, -64, 4, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchRunOver", 100, 0, 4, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 0, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, -64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 0, -10, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 64, -10, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, -64, -10, 0, 0, 0, 0)
               TNT1 A 1
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 A 0 A_JumpIfInventory("OMPitchBackToken", 6, "PitchFront2")
               TNT1 A 0 A_JumpIfInventory("OMPitchBackToken", 3, "PitchFront")
               TNT1 A 0 A_JumpIfInventory("OMPitchFrontToken", 6, "PitchBack2")
               TNT1 A 0 A_JumpIfInventory("OMPitchFrontToken", 3, "PitchBack")

            Normal:
               TNT1 A 0
               TNK1 B 1
               Stop

            PitchFront:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken2", 3, "PitchBack")
               TNT1 A 0 A_SPawnItemEx("OMPushWeak", 64, 0, -2, 0, 0, 0, 0)
               TNK4 B 2
               Stop

            PitchFront2:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken2", 3, "PitchBack")
               TNT1 A 0 A_SPawnItemEx("OMPushFront", 64, 0, -2, 0, 0, 0, 0)
               TNK2 B 2
               Stop

            PitchBack:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNK5 B 2 A_SPawnItemEx("OMPushWeak", -16, 0, -2, 0, 0, 0, 0)
               Stop

            PitchBack2:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 AA 0 A_SPawnItemEx("OMPushFront", -64, 0, -2, 0, 0, 0, 0)
               TNK3 B 2
               Stop
      }
}


Actor OMTankBaseStationed: OMTankBaseNotRealMoving1
{
      States
      {
            Spawn:
               TNT1 A 0
               TNT1 A 0 A_CustomMissile("OMCheckPitchCenter", -12, 0, 0, 2, 0)
               TNT1 A 0 A_CustomMissile("OMCheckPitchCenter", -12, 0, 180, 2, 0)
               TNT1 A 0 A_CustomMissile("OMCheckIfOn3DFloor", -64, 0, 0, 2, 0)
               TNT1 A 0 A_CustomMissile("OMCheckIfOn3DFloor", -160, 0, 0, 2, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckIfFloating", 96, 0, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckIfFloating", 96, -64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckIfFloating", 96, 4, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchFront", 76, 64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchFront", 76, -64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchFront", 76, 0, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchRunOver", 100, 64, 4, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchRunOver", 100, -64, 4, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchRunOver", 100, 0, 4, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 0, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, -64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 0, -10, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 64, -10, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, -64, -10, 0, 0, 0, 0)
               TNT1 A 1
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 A 0 A_JumpIfInventory("OMPitchBackToken", 6, "PitchFront2")
               TNT1 A 0 A_JumpIfInventory("OMPitchBackToken", 3, "PitchFront")
               TNT1 A 0 A_JumpIfInventory("OMPitchFrontToken", 6, "PitchBack2")
               TNT1 A 0 A_JumpIfInventory("OMPitchFrontToken", 3, "PitchBack")

            Normal:
               TNT1 A 0
               TNK1 D 8
               Stop

            PitchFront:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken2", 3, "PitchBack")
               TNT1 A 0 A_SPawnItemEx("OMPushWeak", 64, 0, -2, 0, 0, 0, 0)
               TNK4 D 2
               Stop

            PitchFront2:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken2", 3, "PitchBack")
               TNT1 A 0 A_SPawnItemEx("OMPushFront", 64, 0, -2, 0, 0, 0, 0)
               TNK2 D 2
               Stop

            PitchBack:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNK5 D 2 A_SPawnItemEx("OMPushWeak", -16, 0, -2, 0, 0, 0, 0)
               Stop

            PitchBack2:
            TNT1 A 0
            TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
            TNT1 AA 0 A_SPawnItemEx("OMPushFront", -64, 0, -2, 0, 0, 0, 0)
            TNK3 D 2
            Stop
      }
}


Actor OMTankBaseNotRealMoving2: OMTankBaseNotRealMoving1
{
      States
      {
            Spawn:
               TNT1 A 0
               TNT1 A 0 A_CustomMissile("OMCheckPitchCenter", -12, 0, 0, 2, 0)
               TNT1 A 0 A_CustomMissile("OMCheckPitchCenter", -12, 0, 180, 2, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckIfFloating", 96, 0, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckIfFloating", 96, -64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckIfFloating", 96, 4, -2, 0, 0, 0, 0)
               TNT1 A 0 A_CustomMissile("OMCheckIfOn3DFloor", -64, 0, 0, 2, 0)
               TNT1 A 0 A_CustomMissile("OMCheckIfOn3DFloor", -160, 0, 0, 2, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchFront", 76, 64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchFront", 76, -64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchFront", 76, 0, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchRunOver", 100, 64, 4, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchRunOver", 100, -64, 4, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchRunOver", 100, 0, 4, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 0, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, -64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 0, -10, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 64, -10, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, -64, -10, 0, 0, 0, 0)
               TNT1 A 1
               TNT1 A 0 A_JumpIfInventory("OMPitchBackToken", 6, "PitchFront2")
               TNT1 A 0 A_JumpIfInventory("OMPitchBackToken", 3, "PitchFront")
               TNT1 A 0 A_JumpIfInventory("OMPitchFrontToken", 6, "PitchBack2")
               TNT1 A 0 A_JumpIfInventory("OMPitchFrontToken", 3, "PitchBack")

            Normal:
               TNT1 A 0
               TNK1 D 1
               Stop

            PitchFront:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken2", 3, "PitchBack")
               TNT1 A 0 A_SPawnItemEx("OMPushWeak", 64, 0, -2, 0, 0, 0, 0)
               TNK4 D 2
               Stop

            PitchFront2:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken2", 3, "PitchBack")
               TNT1 A 0 A_SPawnItemEx("OMPushFront", 64, 0, -2, 0, 0, 0, 0)
               TNK2 D 2
               Stop

            PitchBack:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNK5 D 2 A_SPawnItemEx("OMPushWeak", -16, 0, -2, 0, 0, 0, 0)
               Stop

            PitchBack2:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 AA 0 A_SPawnItemEx("OMPushFront", -64, 0, -2, 0, 0, 0, 0)
               TNK3 D 2
               Stop
       }
}



Actor OMTankBaseNotRealMoving3: OMTankBaseNotRealMoving1
{
      States
      {
            Spawn:
               TNT1 A 0
               TNT1 A 0 A_CustomMissile("OMCheckPitchCenter", -12, 0, 0, 2, 0)
               TNT1 A 0 A_CustomMissile("OMCheckPitchCenter", -12, 0, 180, 2, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckIfFloating", 96, 0, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckIfFloating", 96, -64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckIfFloating", 96, 4, -2, 0, 0, 0, 0)
               TNT1 A 0 A_CustomMissile("OMCheckIfOn3DFloor", -64, 0, 0, 2, 0)
               TNT1 A 0 A_CustomMissile("OMCheckIfOn3DFloor", -160, 0, 0, 2, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchFront", 76, 64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchFront", 76, -64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchFront", 76, 0, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchRunOver", 100, 64, 4, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchRunOver", 100, -64, 4, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchRunOver", 100, 0, 4, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 0, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, -64, -2, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 0, -10, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, 64, -10, 0, 0, 0, 0)
               TNT1 A 0 A_SPawnItemEx("OMCheckPitchBack", -70, -64, -10, 0, 0, 0, 0)
               TNT1 A 1
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 A 0 A_JumpIfInventory("OMPitchBackToken", 6, "PitchFront2")
               TNT1 A 0 A_JumpIfInventory("OMPitchBackToken", 3, "PitchFront")
               TNT1 A 0 A_JumpIfInventory("OMPitchFrontToken", 6, "PitchBack2")
               TNT1 A 0 A_JumpIfInventory("OMPitchFrontToken", 3, "PitchBack")

            Normal:
               TNT1 A 0
               TNK1 E 1
               Stop

            PitchFront:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken2", 3, "PitchBack")
               TNT1 A 0 A_SPawnItemEx("OMPushWeak", 64, 0, -2, 0, 0, 0, 0)
               TNK4 E 2
               Stop

            PitchFront2:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken2", 3, "PitchBack")
               TNT1 A 0 A_SPawnItemEx("OMPushFront", 64, 0, -2, 0, 0, 0, 0)
               TNK2 E 2
               Stop

            PitchBack:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNK5 E 2 A_SPawnItemEx("OMPushWeak", -16, 0, -2, 0, 0, 0, 0)
               Stop

            PitchBack2:
               TNT1 A 0
               TNT1 A 0 A_JumpIfInventory("OMTankThingyToken1", 1, "Normal")
               TNT1 AA 0 A_SPawnItemEx("OMPushFront", -64, 0, -2, 0, 0, 0, 0)
               TNK3 E 2
               Stop


        }
}


ACTOR OMTransferPlayerOutOfVehicle
{

	Radius 16
	Height 40
	+MISSILE
	+NOGRAVITY
	MaxTargetRange 120
	Speed 0
        States
        {
              Spawn:
	        TNT1 A 0
		TNT1 A 0 A_GiveToTarget("OMCanLeaveVehicle", 1)
		TNT1 A 0 Thing_ChangeTID(0, 264)
		TNT1 A 0 A_NoBlocking
		TNT1 A 6
		TNT1 A 0 A_SpawnItem("TeleportFog")
		TNT1 A 2
		TNT1 A 0 Thing_ChangeTID(0, 0)
		Stop

	      Death:
		TNT1 A 0
		Stop
	}
}


actor OMTnkTreadsDamage
{
      +NOTARGET
      Radius 1
      Height 1
      DamageType "TankWheels"
      +NOGRAVITY
      +NOTELEPORT
      +NODAMAGETHRUST
      +THRUGHOST
      +NORADIUSDMG
      +FORCERADIUSDMG
      PROJECTILE
      +DEHEXPLOSION
      +ACTIVATEMCROSS
      +EXPLODEONWATER
      -BLOODSPLATTER +BLOODLESSIMPACT
      States
      {
            Spawn:
               TNT1 A 0
               TNT1 A 0 A_Explode(30,50,0)
               TNT1 A 1 A_Noblocking
               PLAY A 0
               Stop
      }
}


Actor OMCheckPitchFront
{
      PROJECTILE
      +MISSILE
      Radius 12
      Height 12
      Speed 0
      +THRUSPECIES
      Species "Marines"
      +DONTSPLASH
      -EXPLODEONWATER
      States
	{
		     Spawn:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("OMPitchFrontToken")
			SARG A 0
			Stop

		     IsOverSOmething:
		     Death:
		     Xdeath:
			TNT1 A 0
			HEAD A 0
			Stop
			}
}


Actor OMCheckPitchBack: OMCheckPitchFront
{
States
	{
                     Spawn:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("OMPitchBackToken")
			SARG A 0
			Stop

		     IsOverSOmething:
		     Death:
		     Xdeath:
			TNT1 A 0
			HEAD A 0
			Stop
		}
}


Actor OMCheckIfFloating: OMCheckPitchFront
{
States
	{
                     Spawn:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("OMTankThingyToken2")
			SARG A 0
			Stop

		     IsOverSOmething:
		     Death:
		     Xdeath:
			TNT1 A 0
			HEAD A 0
			Stop
		}
}



Actor OMCheckPitchCenter: OMCheckPitchFront
{
      Radius 32
      Height 2
      Speed 30
      Damage 0
      Scale 1.0
      States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("OMTankThingyToken2")
			TNT1 A 1
			Stop
		Death:
			TNT1 A 0
			Stop
		Xdeath:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("OMTankThingyToken1")
			HEAD A 0
			Stop
			}
}


Actor OMCheckPitchRunOver: OMCheckPitchCenter
{
      Speed 50
      States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1
			Stop
		Death:
			TNT1 A 0
			Stop
		Xdeath:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("OMPitchBackToken", 6)
			TNT1 A 0
			Stop
			}
}



Actor OMCheckIfOn3DFloor: OMCheckPitchCenter
{
      Speed 9
      States
	{
		Spawn:
			TNT1 A 0
			
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("OMTankThingyToken1", 1)
			Stop
		XDeath:
			TNT1 A 0
			Stop
		Death:
			TNT1 A 0
			Stop
			}
}



Actor OMPushweak: OMCheckPitchFront
{
      +FORCERADIUSDMG
      +NOTIMEFREEZE
      States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_RadiusThrust(2500, 100, RTF_AFFECTSOURCE  | RTF_NOIMPACTDAMAGE , 1)
			SARG A 0
			Stop
		IsOverSOmething:
		Death:
		Xdeath:
			TNT1 A 0
			TNT1 A 0 A_RadiusThrust(2500, 100, RTF_AFFECTSOURCE  | RTF_NOIMPACTDAMAGE  , 1)
			HEAD A 0
			Stop
			}
}



Actor OMPushFront: OMCheckPitchFront
{
      +FORCERADIUSDMG
      +NOTIMEFREEZE
      States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_RadiusThrust(5000, 100, RTF_AFFECTSOURCE  | RTF_NOIMPACTDAMAGE , 1)
			SARG A 0
			Stop
		IsOverSOmething:
		Death:
		Xdeath:
			TNT1 A 0
			TNT1 A 0 A_RadiusThrust(5000, 100, RTF_AFFECTSOURCE  | RTF_NOIMPACTDAMAGE  , 1)
			HEAD A 0
			Stop
			}
}






ACTOR OMTankFireEffect
{
	Radius 1
	Height 1
	Speed 70
	Damage 1
	Projectile
	+RANDOMIZE
	+MISSILE
	States
	{
	      Spawn:
		TNT1 A 2
		Goto Death

	      Death:
		TNT1 A 0
		TNT1 A 0 Radius_Quake(6, 12, 0, 4, 0)
		TNT1 AAAAA 0 A_SpawnItem("OMRedFlare")
		TNT1 AAAAA 0 A_CustomMissile ("OMExplosionSmokeFast", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 1 BRIGHT
		TNT1 AAAAA 0 A_SpawnItem("OMRedFlare")
		TNT1 A 0 A_Stop
		TNT1 A 0 A_Recoil(-5)
		TKFL A 5 BRIGHT
		Stop
	}
}


ACTOR OMTankShotExplosion
{
	+NOTELEPORT
        +DONTSPLASH
        +MISSILE
        +FORCEXYBILLBOARD
        +CLIENTSIDEONLY
        +THRUACTORS
        +NOGRAVITY
	+DOOMBOUNCE
	BounceFactor 0.5
	Radius 0
	Height 0
	Alpha 1.0
	RenderStyle Translucent
	Scale 1.8
	Speed 0
	
        States
        {
              Spawn:
	        TNT1 A 0
	        TNT1 A 0 Radius_Quake(6, 12, 0, 32, 0)
	        TNT1 A 0 Radius_Quake(4, 12, 0, 48, 0)
	        TNT1 A 0 A_SpawnItem("OMExplosionFlareSpawner", 0, 20)
	        TNT1 A 0 A_Jump(128, "Spawn2")
	        EXP1 ABCDEFGHIJKLMN 2 BRIGHT
	        Goto Death
	
	      Spawn2:
	        EXP2 ABCDEFGHIJKLMN 2 BRIGHT
	        Goto Death
	
	      Death:
	        TNT1 A 0
                Stop
    }
}

ACTOR OMTankShotExplosionImpact
{
	damagetype "ExplosiveImpact"
	+MISSILE
	+NOCLIP
	States
	{
	Spawn:
		TNT1 A 1
		TNT1 A 0 A_Explode(50, 400)
		Stop
	}
}


ACTOR OMCrashMetalShards
{
        Radius 8
        Height 8
        Scale 0.2
	Speed 16
	Mass 1
        gravity 0.5
	BounceFactor 0.6
	+DOOMBOUNCE
	+MISSILE
        +MOVEWITHSECTOR
        +CLIENTSIDEONLY
        +NOBLOCKMAP
        +NOTELEPORT
	+THRUACTORS
        States
        {
              Spawn:
	         TNT1 A 0 A_JumpIf(waterlevel > 1, "Death")
		 JNK1 ABCDEFGH 3
                 Loop

	      Death:
                 JNK1 H 200
                 Stop
        }
}



 Actor OMDestroyedArmouredVehicle
{

       Height 56
       Radius 64
       Mass 999999
       YScale 1.8
       XScale 1.9
       -solid
       States
       {
             Spawn:
                
                8762 B 1 A_CustomMissile ("OMHollywoodFire2", 76, 0, random (0, 360), 2, random (40, 90))
                8762 B 3
                TNT1 A 0 {A_ChangeFlag ("SOLID", 1);}
                TNT1 A 0 A_Explode(20,100)
                Loop

       }
}

 Actor OMDestroyedVoxEnemy
{

       Height 64
       Radius 64
       Mass 999999
       //YScale 1.8
       //XScale 1.9
       -solid
       States
       {
             Spawn:
                
                VET2 A 1 A_CustomMissile ("OMHollywoodFire2", 76, 0, random (0, 360), 2, random (40, 90))
                VET2 A 3
                TNT1 A 0 {A_ChangeFlag ("SOLID", 1);}
                TNT1 A 0 A_Explode(20,100)
                Loop

       }
}

ACTOR OMCrashTankIntotheGround1
{
        SeeSound "none"
        DeathSound "none"
        Decal "None"
	Damagetype "Stomp"
        Gravity 1.0
	+FORCERADIUSDMG
        Speed 1
        States
        {
              Spawn:
                 TNT1 A 0
                 Goto Death

              Death:
                 TNT1 A 0
                 TNT1 A 0 A_Explode(5000, 130, 0)
		 TNT1 A 1
                 Stop
        }
}


ACTOR OMCrashTankIntotheGround2
{
    SeeSound "none"
    DeathSound "none"
    Decal "None"
    Damagetype "Kick"
    Gravity 1.0
    Speed 1
    States
    {
          Spawn:
             TNT1 A 0
             Goto Death

          Death:
             TNT1 A 0
             TNT1 A 0 A_Explode(30, 220, 0)
             TNT1 A 1
             Stop
    }
}


ACTOR ARocketFTrail
{
   Height 1
   Radius 1
   RenderStyle Add
   Alpha 1.0
   Scale 0.2
   +ForceXYBillboard
   +NOINTERACTION
   +CLIENTSIDEONLY
   +BRIGHT
   States
   {
   Spawn:
	  NADA A 0
	  NADA A 0 A_SpawnItemEx("ARocketSmoke",0,0,0, (0.1)*Random(5, 15), (0.1)*Random(-5, 5), (0.1)*Random(-5, 5), Random(-8, 8), SXF_CLIENTSIDE, 128)
	  NADA A 0 A_SpawnItemEx("ARocketFire1",0,0,0, (0.1)*Random(5, 15), (0.1)*Random(-5, 5), (0.1)*Random(-5, 5), Random(-8, 8), SXF_CLIENTSIDE, 128)
	  NADA A 0 A_SpawnItemEx("ARocketFire2",0,0,0, (0.1)*Random(5, 15), (0.1)*Random(-5, 5), (0.1)*Random(-5, 5), Random(-8, 8), SXF_CLIENTSIDE, 128)
	  NADA A 0 A_SpawnItemEx("ARocketFire3",0,0,0, (0.1)*Random(5, 15), (0.1)*Random(-5, 5), (0.1)*Random(-5, 5), Random(-8, 8), SXF_CLIENTSIDE, 128)
      Goto Death
   Death:
	  FRTB ABCDEFGHI 1
      Stop
   }
}

Actor ARocketSmoke
{
   Height 1
   Radius 1
   Scale 0.02
   +ForceXYBillboard
   +CLIENTSIDEONLY
   +NOINTERACTION
   States
   {
   Spawn:
      TRAI A 0 A_SetScale(ScaleX+0.01)
      TRAI A 1 A_FadeOut(0.03)
      Loop
   }
}

ACTOR ARocketFire1
{
   Speed 0
   Height 1
   Radius 1
   RenderStyle Add
   Alpha 1.0
   Scale 0.04
   +ForceXYBillboard
   +CLIENTSIDEONLY
   +NOINTERACTION
   +BRIGHT
   States
   {
   Spawn:
	  FIRR A 1 A_FadeOut(0.06)
      Loop
   }
}

ACTOR ARocketFire2 : ARocketFire1
{
   States
   {
   Spawn:
	  FIRR B 1 A_FadeOut(0.06)
      Loop
   }
}

ACTOR ARocketFire3 : ARocketFire1
{
   States
   {
   Spawn:
	  FIRR C 1 A_FadeOut(0.06)
      Loop
   }
}


Actor OMRocketExplode
{
   Height 8
   Radius 4
   RenderStyle Add
   Alpha 1.0
   Scale 2.0
   +NOINTERACTION
   +ForceXYBillboard
   +BRIGHT
   States
   {
   Spawn:
      BREX A 1 bright A_SetScale(ScaleX+0.1)
      BREX A 1 A_StartSound("world/barrelx",CHAN_AUTO)
      BREX BCDEFGHIJKLMNOP 2 A_SetScale(ScaleX+0.1)
      Stop
   }
}


Actor OMBigExplosion1112
{
      +NOCLIP
      +THRUACTORS
      +MISSILE
      States
      {
              Spawn:
                TNT1 A 0 Radius_Quake(5, 24, 0, 7, 0)
		TNT1 A 0 Radius_Quake(2, 24, 0, 16, 0)
		TNT1 A 0 A_SpawnItem("OMExplosionFlareSpawnerSmall")
		TNT1 AAAA 0 A_CustomMissile ("OMExplosionFire", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAAAAAAAAAAA 0 A_CustomMissile ("OMExplosionParticle", 50, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAA 0 A_CustomMissile ("OMHollywoodExplosion", 10, 0, random (0, 360), 2, random (0, 180))
		TNT1 AAAA 0 A_CustomMissile ("OMHollywoodFireBig", 10, 0, random (0, 360), 2, random (0, 180))
		TNT1 A 9
		TNT1 AAAAAAAA 0 A_CustomMissile ("OMExplosionSmoke", 40, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAAA 0 A_CustomMissile ("OMExplosionSmokeFast", 40, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_NoBlocking
		TNT1 A 0 A_PlaySound("weapons/rocklx", 5)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2 A_CustomMissile ("OMExplosionSmokeFast", 0, 0, random (0, 360), 2, random (40, 120))
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 4 A_CustomMissile ("OMExplosionSmokeFast", 0, 0, random (0, 360), 2, random (40, 120))
	      Stop
	}
}


Actor OMExplosionFlareSpawner
{

      +NOINTERACTION
      +NOGRAVITY
      +CLIENTSIDEONLY
      renderstyle Add
      radius 1
      height 1
      alpha 0.4
      scale 0.4
        states
	{
	     Spawn:
	       TNT1 A 0
	       TNT1 A 0 A_SpawnItem("OMNewfagExplosionFlare")
	       L2NR AAA 1 BRIGHT 
	       L2NR A 5
	       stop
	}
}



Actor OMNewfagExplosionFlare
{
      +NOINTERACTION
      +NOGRAVITY
      +CLIENTSIDEONLY
      renderstyle Add
      radius 1
      height 1
      scale 0.4
      XScale 0.8
      YScale 0.4
      Alpha 1.0
      states
      {
	     Spawn:
		TNT1 A 0
		FLAx A 2 bright
		FLAx AAAAAAAAAAAAAAAA 1 BRIGHT A_FadeOut(0.11)
		stop
	}
}



Actor OMExplosionFlareSpawnerSmall
{
      +NOINTERACTION
      +NOGRAVITY
      +CLIENTSIDEONLY
      renderstyle Add
      radius 1
      height 1
      alpha 0.4
      scale 0.4
        states
	{
	     Spawn:
	       TNT1 A 0
	       TNT1 A 0 A_SpawnItem("OMArmageDoomExplosionFlare")
	       L2NR AAA 1 BRIGHT 
	       L2NR A 5
	       stop
	}
}


Actor OMArmageDoomExplosionFlare
{
      
      +NOINTERACTION
      +NOGRAVITY
      +CLIENTSIDEONLY
      renderstyle Add
      radius 1
      height 1
      scale 0.4
      XScale 1.0
      YScale 0.5
      Alpha 1.0
      +FORCEXYBILLBOARD
      states
	{
	     Spawn:
		TNT1 A 0
		LENY A 2 bright
		LENY AAAAAAAAAAAAAAAA 1 BRIGHT A_FadeOut(0.11)
		stop
	}
}


ACTOR OMExplosionFire
{
	
    	+NOTELEPORT
    	+DONTSPLASH
    	+MISSILE
    	+FORCEXYBILLBOARD
    	+CLIENTSIDEONLY
    	+THRUACTORS
	+NOGRAVITY
	+DOOMBOUNCE
	Radius 1
	Height 1
	Alpha 1.0
	RenderStyle Translucent
	Scale 1.5
	Speed 3
        States
        {
              Spawn:
                TNT1 A 0
                Goto Death

	      Death:
	        FIR3 ABCDEFGHIJKLMNOP 1 BRIGHT A_SpawnItem("OMRedFlare")
	        Stop
    }
}


Actor OMRedFlare
{
        
        +NOINTERACTION
      	+NOGRAVITY
      	+CLIENTSIDEONLY
      	renderstyle Add
      	radius 1
      	height 1
      	alpha 0.4
      	scale 0.4
	states
	{
	     Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(128,2)
		LENR A 2 bright
		stop
		TNT1 A 0
		LENR B 2 bright
		stop
	}
}


Actor OMBlueFlareSmall
{
      
      +NOINTERACTION
      +NOGRAVITY
      +CLIENTSIDEONLY
      renderstyle Add
      radius 1
      height 1
      alpha 0.3
      scale 0.15
      states
	{
	     Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(128,2)
		LENB A 2 bright
		stop
		TNT1 A 0
		LENB B 2 bright
		stop
	}

}

Actor OMExplosionParticle
{
  

  
  +NOTELEPORT
  +DONTSPLASH
  +MISSILE
  +FORCEXYBILLBOARD
  +CLIENTSIDEONLY
  +THRUACTORS	
  Height 2
  Radius 2
  Mass 0
  RenderStyle Add
  +DOOMBOUNCE
  BounceFactor 0.01
  Scale 0.18
  Gravity 0.9
  Speed 19
  States
  {
     Spawn:
       SPRK AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_FadeOut(0.02)
       Stop
  }
}


ACTOR OMHollywoodExplosion
{
	
    	+NOTELEPORT
    	+DONTSPLASH
    	+MISSILE
    	+FORCEXYBILLBOARD
    	+CLIENTSIDEONLY
    	+THRUACTORS
	+NOGRAVITY
	+DOOMBOUNCE
	BounceFactor 0.5
	Radius 0
	Height 0
	Alpha 1.0
	RenderStyle Translucent
	Scale 0.9
	Speed 24
        States
        {
              Spawn:
	        FIR3 AAAAAA 2 BRIGHT A_CustomMissile ("OMHollywoodFire", 0, 0, random (0, 360), 2, random (0, 360))
	        Goto Death

	      Death:
	        TNT1 A 0
                Stop
        }
}


ACTOR OMHollywoodFire
{
	
	
    	+NOTELEPORT
    	+DONTSPLASH
    	+MISSILE
    	+FORCEXYBILLBOARD
    	+CLIENTSIDEONLY
    	+THRUACTORS
	+NOGRAVITY
	+DOOMBOUNCE
	BounceFactor 0.5
	Radius 0
	Height 0
	Alpha 1.0
	RenderStyle Translucent
	Scale 1.3
	Speed 1
	
        States
        {
              Spawn:
	        FIR3 ABCDEFGHIJKL 2 BRIGHT A_SpawnItem("OMRedFlare")
	        TNT1 A 0 A_CustomMissile ("OMExplosionSmoke", 0, 0, random (0, 360), 2, random (0, 360))
	        FIR3 MNOP 2 BRIGHT
	        Goto Death

	      Death:
	        TNT1 A 0
                Stop
    }
}


ACTOR OMHollywoodFireBig
{

	
    	+NOTELEPORT
    	+DONTSPLASH
    	+MISSILE
    	+FORCEXYBILLBOARD
    	+CLIENTSIDEONLY
    	+THRUACTORS
	+NOGRAVITY
	+DOOMBOUNCE
	BounceFactor 0.5
	Radius 0
	Height 0
	Alpha 1.0
	RenderStyle Translucent
	Scale 3.0
	Speed 3
        States
        {
              Spawn:
	        FIR3 ABCDEFGHIJKL 2 BRIGHT A_SpawnItem("OMRedFlare")
	        TNT1 AA 0 A_CustomMissile ("OMExplosionSmoke", 0, 0, random (0, 360), 2, random (0, 360))
	        FIR3 MNOP 2 BRIGHT
	        Goto Death

	      Death:
	        TNT1 A 0
                Stop
        }
}


ACTOR OMExplosionSmoke
{
	
	
    	+NOTELEPORT
    	+DONTSPLASH
    	+MISSILE
    	+FORCEXYBILLBOARD
    	+CLIENTSIDEONLY
    	+THRUACTORS
	+NOGRAVITY
	+DOOMBOUNCE
	BounceFactor 0.5
	Radius 0
	Height 0
	Alpha 0.2
	RenderStyle Translucent
	Scale 1.8
	Speed 2
        States
        {
              Spawn:
	        SMO2 A 20
	        SMO2 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2 A_FadeOut(0.006)
	        Goto Death

	      Death:
	        TNT1 A 0
                Stop
    }
}


ACTOR OMExplosionSmokeFast: OMExplosionSmoke
{
	Speed 5
	Scale 1.0
}

ACTOR OMHollywoodFire2
{
	
    	+NOTELEPORT
    	+DONTSPLASH
    	+MISSILE
    	+FORCEXYBILLBOARD
    	+CLIENTSIDEONLY
    	+THRUACTORS
	+NOGRAVITY
	+DOOMBOUNCE
	BounceFactor 0.5
	Radius 0
	Height 0
	Alpha 1.0
	RenderStyle Add
	Scale 1.5
	Speed 4
	
    States
    {
    	Spawn:
	   FIR3 ABCDEFGHIJKL 2 BRIGHT
	   TNT1 A 0 A_CustomMissile ("OMDestroyedBuildingSmokePillar", 5, 0, random (0, 360), 2, random (80, 100))
	   FIR3 MNOP 2 BRIGHT
	   Goto Death

	Death:
	   TNT1 A 0
    	   Stop
    }
}

ACTOR OMDestroyedBuildingSmokePillar: OMExplosionSmoke
{
	Speed 4
	+SKYEXPLODE
	Alpha 0
	Scale 1.2
	states
	{
		Spawn:
		   SMK1 KKKKKK 2 A_FadeIn(0.1)
		   SMK1 K 100

		Death:
		   SMK1 KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK 2 A_FadeOut(0.03)
	           Goto Death

	        Death:
	    	   TNT1 A 0
    		   Stop
        }
}



//Sergeant Mark IV's vehicles.


Actor OMTankTurretNotReal: OMTankBaseNotReal
{
Scale 1.25
States
{
      Spawn:
         TNT1 A 0
         TNK1 T 1
         Stop
}
}


Actor OMTankTurretNotReal2: OMTankTurretNotReal
{
States
{
      Spawn:
         TNT1 A 0
         TNK1 T 2
         Stop
}
}

Actor OMTankTurretNotReal4: OMTankTurretNotReal
{
States
{
      Spawn:
         TNT1 A 0
         TNK1 T 4
         Stop
}
}

Actor OMTankTurretNotReal8: OMTankTurretNotReal   
{
States
{
      Spawn:
         TNT1 A 0
         TNK1 T 8
         Stop
}
}



ACTOR OMTank: SwitchableDecoration //19001
{
	
        //$Category 3D Vehicles
        //$Title Heavy Tank
        var int user_stationedtankbasedirection;
        Radius 64
	Height 72
	+SOLID
	+USESPECIAL
	MONSTER
	-COUNTKILL
	+SHOOTABLE
	+LOOKALLAROUND
	+THRUACTORS
	+NOINFIGHTING
	-COUNTKILL
	-NOTDMATCH
	+NOBLOODDECALS
	+NOBLOOD
	+DONTRIP
	+NOTIMEFREEZE
	MaxTargetRange 120
	PainChance "Repair", 255
	DamageFactor "Trample", 0
	DamageFactor "TankWheels", 0
	DamageFactor "TankWeakSpot", 0
	BloodColor "Black"
	Activation THINGSPEC_Activate | THINGSPEC_ThingTargets | THINGSPEC_NoDeathSpecial
	Mass 5000
	Speed 0
	health 2000
	Scale 1.25
    States
    {
              Spawn:
	        TNT1 A 1
		TNT1 A 0 Thing_ChangeTID(0, 261)
		TNT1 A 0 ACS_NamedExecuteAlways("OMSetNewTankDirection", 0, 0, 0, 0)//Check vehicle initial angle.
		TNT1 A 1 A_ChangeFlag("FRIENDLY", 0)
		TNT1 A 5
		TNT1 A 0 A_SpawnItem("OMTankTurretNotReal8")
		TNT1 A 0 Thing_ChangeTID(0, 0)
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0 A_ChangeFlag("FRIENDLY", 1)
		Goto StandingHere
		
	      StandingHere:
		TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteAlways("OMSetBaseAngle", 0, 0, 0, 0)//SpawnVehicleBase
		TNT1 A 2
		TNT1 A 0 A_SpawnItem("OMTankTurretNotReal8")
		Loop
		
	      Active:
		TNT1 A 0 
		TNT1 A 0 A_TakeFromTarget("PowerInvulnerable", 1)
		TNT1 A 0 A_GiveToTarget("OMCeaseMorph", 1)
		TNT1 A 0 A_ChangeFlag("FRIENDLY", 0)
		TNT1 A 0 Thing_ChangeTID(0, 261)
		TNT1 A 0 ACS_NamedExecuteAlways("OMGetVehiclePreviousHealth", 0, 0, 0, 0)//Check Vehicle Health
		TNT1 A 0 A_GiveToTarget("OMCheckingMorphingPlayerHealth", 1)
		TNT1 A 0 A_SpawnItem("OMTankTurretNotReal8")
		NULL A 3
		TNT1 A 0 A_GiveToTarget("OMTankMorpher", 1)
		TNT1 A 0 A_GiveToTarget("OMHeavyMachinegunAmmo", 1500)
		TNT1 A 0 A_GiveToTarget("OMTankShellAmmo", 50)
		TNT1 A 0 Thing_ChangeTID(0, 261)
		TNT1 A 0 A_NoBlocking
		NULL A 1
		TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
		NULL A 10
		TNT1 A 0 Thing_ChangeTID(0, 0)
		NULL A 1
		Stop

	      Death:
		TNT1 A 1
		TNT1 A 0 A_SpawnItem("OMBigExplosion1112")
		TNT1 A 0 A_PlaySound("Explosion", 3)
		TNT1 A 0 A_Explode(200, 250)
		TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
		TNT1 A 0 A_Scream
		NULL AAAAAA 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
		NULL AAAAAA 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
		NULL AAAAAAAAA 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
		TNT1 A 0 A_SpawnItem("OMDestroyedArmouredVehicle")
		TNT1 A 15
		TNT1 A 0
		Stop

              Pain.Repair:
		 TNT1 A 0
		 TNT1 A 0 A_ChangeFLag("NOPAIN", 1)
		 TNT1 A 0 HealThing(5)
		 TNT1 A 1  
		 TNT1 A 0 HealThing(5)
		 TNT1 A 0 A_ChangeFLag("NOPAIN", 0)
		 Goto StandingHere
	}
}



ACTOR OMTankUsed: OMTank
{
	+NOBLOODDECALS
	+NOBLOOD
    States
    {
	     Spawn:
		TNT1 A 0
                TNT1 A 1
		TNT1 A 0 ACS_NamedExecuteAlways("OMSetBaseAngle", 0, 0, 0, 0)//SpawnVehicleBase
		TNT1 A 0 Thing_ChangeTID(0, 261)
		TNT1 A 1 A_ChangeFlag("FRIENDLY", 0)
		TNT1 A 5 
		TNT1 A 0 Thing_ChangeTID(0, 0)
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0 A_ChangeFlag("FRIENDLY", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("OMCHeckOnline")
		Goto StandingHere

	    IsOnline:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_TAkeInventory("OMTankBaseDirection", 500)
		Goto StandingHere

	    Active:
		TNT1 A 0
		TNT1 A 0 A_TakeFromTarget("PowerInvulnerable", 1)
		TNT1 A 0 A_GiveToTarget("OMCeaseMorph", 1)
		TNT1 A 0 A_ChangeFlag("FRIENDLY", 0)
		TNT1 A 0 Thing_ChangeTID(0, 261)
		TNT1 A 0 ACS_NamedExecuteAlways("OMGetVehiclePreviousHealth", 0, 0, 0, 0)//Check Vehicle Health
		TNT1 A 0 A_GiveToTarget("OMCheckingMorphingPlayerHealth", 1)
		NULL A 3
		TNT1 A 0 A_GiveToTarget("OMTankMorpher", 1)
		TNT1 A 0 Thing_ChangeTID(0, 261)
		TNT1 A 0 A_NoBlocking
		NULL A 1
		TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
		NULL A 10
		TNT1 A 0 Thing_ChangeTID(0, 0)
		Stop
	}
}



ACTOR OMPowerTankSwitch : PowerMorph {PowerMorph.PlayerClass "OMPlayerTank"}


ACTOR OMTankMorpher : CustomInventory    
{
  States
  {
        PickUp:
           TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("OMVehicleCheck") == 1, "Dummy")
           TNT1 A 1
           TNT1 A 0 ACS_NamedExecuteAlways("OMEnterTank", 0, 0, 0, 0)//Get into Tank
           TNT1 A 0 A_GiveInventory("OMTankMorphActivation")
           TNT1 A 0 A_SpawnItem("TeleportFog")
           TNT1 A 1
           Stop

        Dummy:
           TNT1 A 0 A_Print("You can't fit a vehicle inside another!", 1)
           Stop
  }
 }
 

ACTOR OMTankMorphActivation : PowerupGiver
{
  Powerup.Type "OMPowerTankSwitch"
  Powerup.Duration 252000
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.ALWAYSPICKUP
  Inventory.MaxAmount 1
  Health 100
  GibHealth 1
  Mass 6000
  Height 72
  Radius 32
  States
  {
        Spawn:
           TNT1 A 100
           Stop
  
        PickUp:
           TNT1 A 1
           TNT1 A 1
           Stop
  }
 }
 
 
ACTOR OMPlayerTank : PlayerPawn
{
        var int user_tankbasedirection;
	Speed 0
	Scale 1.25
	Radius 64
	Height 72
	Mass 5000
	PainChance 0
	health 500
	-PICKUP
	player.viewheight	72
        player.attackzoffset 56
	MaxStepHeight 32
	Player.MorphWeapon "OMTankGun"
        Player.JumpZ 0
	Species "Marines"
	+NOSKIN
	Damagefactor "Stealth", 0.0
	DamageFactor "Trample", 0
	DamageFactor "TankWheels", 0
	DamageFactor "TankWeakSpot", 0
	+FORCERADIUSDMG
	+FIXMAPTHINGPOS
	+NORADIUSDMG
	+DONTRIP
	-CANUSEWALLS
	+NOBLOODDECALS
	+NOBLOOD
	BloodColor "Black"
	-PICKUP
	States
	{

             Spawn:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("OMPressedUse", 1)
		TNT1 A 0 ThrustTHingZ(0, 100, -1, 1)
		TNK1 T 1

            Spawn2:
	        TNT1 A 0 A_GiveInventory("OMIsInATank", 1)
		TNT1 A 0 A_TakeInventory("OMPressedUse", 1)
		TNT1 A 0 A_TakeInventory("OMTurnRight", 1)
		TNT1 A 0 A_TakeInventory("OMTurnLeft", 1)
		TNT1 A 0 A_TakeInventory("OMAccelerate", 1)
		TNT1 A 0 A_TakeInventory("OMBackPedal", 1)
		TNT1 A 0 SetPlayerProperty(0, 1, PROP_BUDDHA)
		TNK1 T 1
		TNK1 TTTT 1 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, -90, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNK1 TTTT 1 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, -90, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_TakeInventory("OMPressedUse", 1)
	        Goto Stay

           ExitVehicle:
	        TNT1 A 1
	        TNT1 A 0 A_TakeInventory("OMPressedUse", 1)
	        TNT1 A 0 A_JumpIfHealthLower(2, "EmergencyExit")
	        TNT1 A 0 A_SpawnItemEx ("OMTransferPlayerOutOfVehicle", 0, 0, 76)
	        TNK1 T 1
	        TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
	        TNK1 T 1
	        TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
	        TNK1 T 1
	        TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
	        TNT1 A 0 A_JumpIfInventory("OMCanLeaveVehicle", 1, "CanExit")
	        TNT1 A 0 A_Print("Can't leave from this direction", 1)
	        Goto Stay
	
	  CanExit:
	        TNT1 A 0
	        TNT1 A 2 A_TakeInventory("OMIsInATank", 1)
	        TNT1 A 0 A_TakeInventory("OMPressedUse", 1)
	        TNT1 A 0 A_TakeInventory("OMCanLeaveVehicle", 1)
	        TNT1 A 0 SetPlayerProperty(0, 0, PROP_BUDDHA)
	        TNT1 A 0 ACS_NamedExecuteAlways("OMLeaveTank")
	        TNT1 A 0 A_SpawnItemEx ("OMTankUsed", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
	        Goto FinishExit


	  EmergencyExit:
	        TNT1 A 0
	        TNT1 A 2 A_TakeInventory("OMIsInATank", 1)
	        TNT1 A 0 A_TakeInventory("OMPressedUse", 1)
	        TNT1 A 0 A_TakeInventory("OMCanLeaveVehicle", 1)
	        TNT1 A 0 ThrustThingZ(0,120,0,1)
	        PLA1 J 2
	        TNT1 A 0 A_StopSound(1)
	        TNT1 A 0 SetPlayerProperty(0, 0, PROP_BUDDHA)
	        TNT1 A 0 SetPlayerProperty(0, 0, PROP_FLIGHT)
	        TNT1 A 0 ACS_NamedExecuteAlways("OMLeaveTank")
	        TNT1 A 0 A_SpawnItem("OMBigExplosion1112")
	        TNT1 A 0 A_PlaySound("Explosion", 3)
	        NULL A 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
	        NULL A 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
	        NULL A 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
	        NULL A 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
	        NULL A 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
	        TNT1 A 0 A_SpawnItem("OMDestroyedArmouredVehicle")
	        PLA1 J 100
	        Goto Stay

	  FinishExit:
	        TNT1 A 0 A_TakeInventory("OMPressedUse", 1)
	        TNT1 AAA 10 A_TakeInventory("OMPressedUse", 1)
	        TNT1 A 0 A_TakeInventory("OMPressedUse", 1)
	        Goto Stay

	  TurnLeft:
		TNT1 A 0
		TNK1 T 1 
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Stay")
		TNT1 A 0 A_PlaySound("OMTANK1", 5, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTnkTreadsDamage" , 100, 0, 0, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE | SXF_ABSOLUTEVELOCITY)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIf(user_tankbasedirection > 359, "TurnLeft2")
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection+4)
		TNK1 T 1
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIf(user_tankbasedirection > 359, "TurnLeft2")
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection+4)
		TNT1 A 0 A_TakeInventory("OMTurnRight", 1)
		TNT1 A 0 A_TakeInventory("OMTurnLeft", 1)
		TNK1 T 1
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving3" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIf(user_tankbasedirection > 359, "TurnLeft2")
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection+4)
		Goto CheckIfStillMoves
	
	 TurnLeft2:
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", 0)
		TNT1 A 0 A_JumpIfInventory("OMAccelerate", 1, "TurnLeftAccel")
		Goto TurnLeft

	 TurnLeftAccel:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("OMTurnLeft", 1)
		TNK1 T 1 
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIf(user_tankbasedirection > 359, "TurnLeft2")
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection+2)
		TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving3" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_PlaySound("OMTANK1", 5, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTnkTreadsDamage" , 100, 0, 0, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE | SXF_ABSOLUTEVELOCITY)
		TNK1 T 1
		TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection+2)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNK1 T 1
		TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection+2)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIF(velz < 0, "Falling")
		TNT1 A 0 A_JumpIfInventory("OMTurnLeft", 1, "TurnLeftAccel")
		TNT1 A 0 A_TakeInventory("OMTurnRight", 1)
		TNT1 A 0 A_TakeInventory("OMTurnLeft", 1)
		Goto CheckIfStillMoves

	 TurnRight:
		TNT1 A 0
		TNK1 T 1 
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Stay")
		TNT1 A 0 A_PlaySound("OMTANK1", 5, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTnkTreadsDamage" , 100, 0, 0, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE | SXF_ABSOLUTEVELOCITY)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIf(user_tankbasedirection == 0, "TurnRIght2")
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection-4)
		TNK1 T 1
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIf(user_tankbasedirection == 0, "TurnRIght2")
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection-4)
		TNT1 A 0 A_TakeInventory("OMTurnLeft", 1)
		TNT1 A 0 A_TakeInventory("OMTurnRight", 1)
		TNK1 T 1
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving3" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIf(user_tankbasedirection == 0, "TurnRIght2")
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection-4)
		Goto CheckIfStillMoves
	
	 TurnRight2:
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", 360)
		TNT1 A 0 A_JumpIfInventory("OMAccelerate", 1, "TurnRightAccel")
		Goto TurnRight	

	 TurnRightAccel:
		TNT1 A 0
		TNK1 T 1
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIf(user_tankbasedirection == 0, "TurnRIght2")
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection-2)
		TNT1 A 0 A_PlaySound("OMTANK1", 5, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTnkTreadsDamage" , 100, 0, 0, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE | SXF_ABSOLUTEVELOCITY)
		TNK1 T 1
		TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving3" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection-2)
		TNK1 T 1 
		TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection-2)
		TNK1 T 1
		TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIF(velz < 0, "Falling")
		TNT1 A 0 A_JumpIfInventory("OMTurnRight", 1, "TurnRightAccel")
		TNT1 A 0 A_TakeInventory("OMTurnLeft", 1)
		TNT1 A 0 A_TakeInventory("OMTurnRight", 1)
		Goto CheckIfStillMoves
	
	 CheckIfStillMoves:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("OMPressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("OMAccelerate", 1, "Accelerate")
		TNT1 A 0 A_JumpIfInventory("OMBackPedal", 1, "BackPedal")
		TNT1 A 0 A_JumpIfInventory("OMTurnLeft", 1, "TurnLeft")
		TNT1 A 0 A_JumpIfInventory("OMTurnRight", 1, "TurnRight")
		TNT1 A 0 A_StopSound(2)
		TNT1 A 0 A_PlaySound("OMTANK2", 5, 1, 1)
		TNT1 A 0 A_PlaySound("OMTANK3", 2)
		
	 Stay:
	        TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_PlaySound("OMTANK2", 5, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIfInventory("OMPressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("OMBackPedal", 1, "BackPedal")
		TNT1 A 0 A_JumpIfInventory("OMAccelerate", 1, "Accelerate")
		TNT1 A 0 A_JumpIfInventory("OMTurnLeft", 1, "TurnLeft")
		TNT1 A 0 A_JumpIfInventory("OMTurnRight", 1, "TurnRight")
		TNK1 T 1
		TNT1 A 0 A_JumpIF(velz < 0, "Falling")
		Goto Stay

	 Pain.TracksDamaged:
	        TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_Jump(32, "DestroyTracks")
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIfInventory("OMPressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("OMBackPedal", 1, "BackPedal")
		TNT1 A 0 A_JumpIfInventory("OMAccelerate", 1, "Accelerate")
		TNK1 T 1
		Goto Stay

	Accelerate:
		TNT1 A 0 A_PlaySound("OMTANK1", 5, 1, 1)
		TNT1 A 0 A_JumpIfInventory("OMTurnLeft", 1, "TurnLeftAccel")
		TNT1 A 0 A_JumpIfInventory("OMTurnRight", 1, "TurnRightAccel")
		TNT1 A 0 A_SpawnItemEx ("OMTnkTreadsDamage" , 100, 0, 0, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE | SXF_ABSOLUTEVELOCITY)
		TNK1 T 1
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Stay")
		TNT1 A 0 A_JumpIfInventory("OMPressedUse", 1, "ExitVehicle")
		TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving3" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNK1 T 1
		TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIfInventory("OMTurnLeft", 1, "TurnLeftAccel")
		TNT1 A 0 A_JumpIfInventory("OMTurnRight", 1, "TurnRightAccel")
		TNK1 T 1
		TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIF(velz < 0, "Falling")
		Goto CheckIfStillMoves

	Backpedal:
		TNT1 A 0 A_PlaySound("OMTANK1", 5, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTnkTreadsDamage" , -100, 0, 0, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE | SXF_ABSOLUTEVELOCITY)
		TNK1 T 1
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Stay")
		TNT1 A 0 ThrustThing(user_tankbasedirection*256/360+128, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving3" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIfInventory("OMTurnRight", 1, "TurnLeft")
		TNT1 A 0 A_JumpIfInventory("OMTurnLeft", 1, "TurnRight")
		TNK1 T 1
		TNT1 A 0 A_JumpIfInventory("OMPressedUse", 1, "ExitVehicle")
		TNT1 A 0 ThrustThing(user_tankbasedirection*256/360+128, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIfInventory("OMTurnRight", 1, "TurnLeft")
		TNT1 A 0 A_JumpIfInventory("OMTurnLeft", 1, "TurnRight")
		TNK1 T 1
		TNT1 A 0 ThrustThing(user_tankbasedirection*256/360+128, 1, 1)
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIF(velz < 0, "Falling")
		Goto CheckIfStillMoves

	Falling:
		TNT1 A 0
		TNT1 A 0 A_CheckFloor("CheckIfStillMoves")
	
	FallingForReal:
		TNT1 A 0
		TNK1 T 1 
		TNT1 A 0 A_JumpIfInventory("OMPressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_JumpIF(velz == 0, "CrashIntoGround")
		TNT1 A 0 A_GiveInventory("OMVehicleFallingCount", 1)
		Loop
		
	CrashIntoGround:
		TNT1 A 0
		TNT1 A 0 A_JumpIfinventory("OMVehicleFallingCount", 6, "CrashIntoGroundViolently")
		TNK1 T 1 
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SpawnItem("OMCrashTankIntotheGround1")
		TNT1 A 0 A_SpawnItem("OMCrashTankIntotheGround2")
		TNT1 A 0 Radius_Quake(1, 6, 0, 4, 0)
		TNT1 A 0 A_PlaySound("OMTNKSHT", 2)
		TNT1 A 0 A_TakeInventory("OMVehicleFallingCount", 100)
		Goto Stay
		
	CrashIntoGroundViolently:
		TNT1 A 0
		TNK1 T 1 
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SpawnItem("OMCrashTankIntotheGround1")
		TNT1 A 0 A_SpawnItem("OMCrashTankIntotheGround2")
		TNT1 A 0 Radius_Quake(8, 24, 0, 4, 0)
		TNT1 A 0 A_PlaySound("TNKCRSH2", 1)
		TNT1 A 0 A_PlaySound("TNKCRSH1", 2)
		TNT1 A 0 A_TakeInventory("OMVehicleFallingCount", 100)
		TNT1 A 0 A_SetPitch(-8.0 + pitch)
		TNK1 T 1
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SetPitch(4.0 + pitch)
		TNK1 T 1
		TNT1 A 0 A_SpawnItemEx ("OMTankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SetPitch(4.0 + pitch)
		Goto Stay

	Death:
	XDeath:
                TNT1 A 1
                TNT1 A 0 A_SpawnItem("OMBigExplosion1112")
	        TNT1 A 0 A_PlaySound("Explosion", 3)
	        TNT1 A 0 A_Scream
	        TNT1 A 0 A_NoBlocking
	        NULL A 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
	        NULL A 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
	        NULL A 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
	        NULL A 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
	        NULL A 0 A_CustomMissile ("OMCrashMetalShards", 96, 0, random (0, 360), 2, random (0, 180))
	        TNT1 A 0 A_SpawnItem("OMDestroyedArmouredVehicle")
	        8762 A 5
	        TNT1 A 0 A_TakeInventory("OMTankGun", 1)
	        TNT1 A 0 A_TakeInventory("OMIsInATank", 1)
	        8762 A 100
	        8762 A -1
	        Stop
	}
}


// Vehicle Weapons

ACTOR OMTankGun : DoomWeapon
{
	Game Doom
	Obituary "%o was blown up by %k's Light Tank."
	Weapon.AmmoUse1 0
	Weapon.AmmoGive1 0
	Weapon.AmmoUse2 0
	Weapon.AmmoGive2 0
	Weapon.AmmoType1 "OMTankShellAmmo"
	Weapon.AmmoType2 "OMHeavyMachinegunAmmo"
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.ALT_AMMO_OPTIONAL
	+WEAPON.NOAUTOAIM
	+INVENTORY.UNDROPPABLE
	+WEAPON.NO_AUTO_SWITCH
	+WEAPON.CHEATNOTWEAPON
	Inventory.Pickupmessage "..."
	Tag "Light Tank Cannon and Turret"
	States
	{
	
	
	Ready:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("OMENGS", 4)
		TNHD W 10
		TNT1 A 0 A_PlaySound("OMINFRA", 1)
		TNHD XYZXYZXYZXYZXYZXYZXYZ 1 BRIGHT
		TNT1 A 0 A_GiveInventory("OMTankReady", 6)
		TNHD X 1 A_GunFlash
		Goto ReadyToFire
		
	ReadyToFire:
	        TNT1 A 0
		TNHD A 1 A_WeaponReady(1)
		TNT1 A 0 A_GiveInventory("OMTankReady", 1)
		NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck2")
		NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck2")
		Loop

		
	Ready2:
	        TNT1 A 0
		TNT1 A 1 A_WeaponReady(1)
		TNT1 A 0 A_GiveInventory("OMTankReady", 1)
		NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck2")
		NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck2")
		Loop

	NotReady:
		TNHD A 1 A_GiveInventory("OMTankReady", 1)
		Goto ReadyToFire

	Deselect:
		TNHD Z 1 A_Lower
		TNT1 A 0 A_ZoomFactor(1.0)
		TNT1 A 0 SetPlayerProperty(0,0,4)
		Loop
		
	Select:
		TNT1 A 0
		TNHD Z 1 A_Raise
		TNHD zzzzzzzzzzzzzzzzzzzzzz 0 A_Raise
		TNHD Z 1 A_Raise
		Goto Ready
	
	Flash:
	
		TNT1 A 0 A_JumpIfInventory("OMTankReady", 5, 1)
		Goto Flashreloading
		TNHD J 1 BRIGHT
		TNT1 A 0 A_JumpIfHealthLower(2, "EmergencyExit")
		TNT1 A 0 A_JumpIfInventory("OMPressedUse", 1, "LightEnd")
		NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck1")
		NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck1")
		TNHD J 1 BRIGHT
		TNT1 A 0 A_JumpIfInventory("OMPressedUse", 1, "LightEnd")
		NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck1")
		NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck1")
		TNHD J 1 BRIGHT
		TNT1 A 0 A_JumpIfInventory("OMPressedUse", 1, "LightEnd")
		NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck1")
		NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck1")
		Goto Flash
		
	FLashReloading:
		TNHD I 1 BRIGHT
		TNT1 A 0 A_JumpIfHealthLower(2, "EmergencyExit")
		TNT1 A 0 A_JumpIfInventory("OMPressedUse", 1, "LightEnd")
		NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck1")
		NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck1")
		TNHD I 1 BRIGHT
		TNT1 A 0 A_JumpIfInventory("OMPressedUse", 1, "LightEnd")
		NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck1")
		NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck1")
		TNHD I 1 BRIGHT
		TNT1 A 0 A_JumpIfInventory("OMPressedUse", 1, "LightEnd")
		NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck1")
		NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck1")
		TNT1 A 0 A_JumpIfInventory("OMTankReady", 5, "Flash")
		Goto Flashreloading

	EmergencyExit:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("OMEMER", 1)
		TNT1 A 0 A_GiveInventory("OMPressedUse")
		TNT1 A 5
		Goto Deselect
		
	Fire:
		TNT1 A 0 A_JumpIfInventory("OMTankShellAmmo", 1, 1)
		Goto NoAmmo
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("OMTankReady", 5, 1)
		TNT1 A 0 A_TakeInventory("OMTankReady", 6, 1)
		TNT1 A 0 A_PlaySound("OMTANKF", 1)
		MISG A 0 A_FireProjectile ("OMTankFireEffect", 0, 1, 0, -24)
		
		//MISG A 0 A_FireCustomMissile("OMTankShell", 0, 1, 0, -24)
		
		MISG A 0 A_FireCustomMissile("OMTankShell",0,1,-16,-16,0)	
		
		TNHD B 2 BRIGHT
		TNT1 A 0 BRIGHT A_SetPitch(pitch - 8.0)
		TNHD C 1
		TNHD DE 1 A_SetPitch(pitch + 2.0)
		TNHD AA 1 A_SetPitch(pitch + 2.0)
		TNT1 A 0 A_GiveInventory("OMTankReady", 5)
		TNT1 A 0 A_PlaySound("OMTANKRE", 3)
		TNT1 A 0 A_TakeInventory("OMTankShellAmmo", 1)
		TNHD AAA 8
		Goto ReadyToFire
		
	NoAmmo:
		TNHD A 2
		TNT1 A 0 A_Print("Ammunition Depleted", 2)
		Goto ReadyToFire 
		
	AltFire:
		TNT1 A 0 A_JumpIfInventory("OMHeavyMachinegunAmmo", 1, 1)
		Goto NoAmmo
		TNT1 A 0 A_PlaySound("OMVEHMG1", 1)
		//TNT1 A 0 A_FireBullets(5,2,1,9)

		//TNT1 A 0 A_FireCustomMissile("DoomImpBall", 0, 1, 0, -24)
		
		TNT1 A 0 A_FireCustomMissile("DoomImpBall",0,1,16,-16,0)		
		
		//TNT1 A 0 A_FireProjectile("DoomImpBall", -32, -16)	
				
		TNT1 A 0 A_TakeInventory("OMHeavyMachinegunAmmo", 1)
		TNHD F 1 BRIGHT
		TNT1 A 0 A_GiveInventory("OMTankReady", 1)
		TNHD G 1 A_GiveInventory("OMTankReady", 1)
		TNHD AA 1 A_GiveInventory("OMTankReady", 1)
		TNT1 A 0 A_ReFire
		Goto ReadyToFire
		
	TooHigh2:
		TNT1 A 0 A_SetPitch(326)
		Goto ReadyToFire

	TooLowCheck2:
		TNT1 A 0 A_SetPitch(16)
		Goto ReadyToFire

	TooHighCheck2:
		TNT1 A 0
		NULL A 0 A_JumpIf (pitch < 325, "TooHigh2")
		Goto ReadyToFire

	TooHigh:
		TNT1 A 0 A_SetPitch(326)
		Goto Flash

	TooLowCheck1:
		TNT1 A 0 A_SetPitch(16)
		Goto Flash
		
	TooHighCheck1:
		TNT1 A 0
		NULL A 0 A_JumpIf (pitch < 325, "TooHigh")
		Goto Flash

	LightEnd:
		TNT1 A 1
		TNT1 A 0 A_Takeinventory("PowerLightAmp", 1)
		Stop
		
	Spawn:
		LAUN A -1
		Stop
		
	}
}
