ACTOR Excalibat : weapon 
{
     Weapon.SlotNumber 1
     Weapon.UpSound "gen/wepswitch"
     Weapon.SelectionOrder 903
     Inventory.PickupSound "gen/pickup"
     Inventory.Pickupmessage "You picked up the Excalibat!"
     Weapon.Kickback 175
     Weapon.AmmoType "BMissiles"
     Weapon.AmmoGive 10
     Weapon.AmmoUse 1
     scale 0.5
     +FloatBob
     +NOAUTOAIM 
     AttackSound "excalibat/hit"
     Obituary "%k \cbkilled\c- %o \cb- STRIKE YOU'RE OUT!!!\c-"
     HitObituary "%k \cbhit a home run,\c- %o \cbtook it in the face.\c-"
     
     States 
     { 
     Spawn: 
        PBAT A -1 BRIGHT
        LOOP 
     Ready:
        EXBT A 1 A_WeaponReady 
        EXBT A 0 A_TakeInventory("BattCharge",999)
        LOOP 
     Deselect: 
        EXBT A 1 A_Lower 
        LOOP 
     Select:
        EXBT A 1 A_Raise
     	EXBT A 0 A_TakeInventory("BattCharge",999)
        LOOP
         
         
         //This was a real pain in the ass to code....
         
     Fire:
      	EXBT A 0 A_JumpIfInventory("BattCharge",3,"Level3")
        EXBT A 0 A_JumpIfInventory("BattCharge",2,"Level2")
        EXBT A 0 A_JumpIfInventory("BattCharge",1,"Level1")
        
	//EXBT A 1 Offset(0,32)
	//EXBT A 1 Offset(0,34) 
	//EXBT A 1 Offset(0,36)
	//EXBT A 1 Offset(0,38)
	//EXBT A 1 Offset(0,40)
	//EXBT A 1 Offset(0,42)

	EXBT A 6 A_GiveInventory("BattCharge",1)
	EXBT C 0 A_Refire
    Goto Ready
      Altfire: // to make it more user friendly
		EXBT C 1 Offset(40,32) BRIGHT 
		EXBT C 1 Offset(30,34) BRIGHT A_PlaySound("excalibat/swing")
		EXBT C 1 Offset(20,36) BRIGHT
		EXBT C 1 Offset(10,38) BRIGHT
		EXBT C 1 Offset(0,40) BRIGHT 
		EXBT C 1 Offset(-10,42) BRIGHT A_SetReflectiveInvulnerable
		EXBT C 1 Offset(-20,44) BRIGHT
		EXBT D 1 Offset(20,46) BRIGHT
		EXBT D 1 Offset(10,48) BRIGHT
		EXBT D 1 Offset(0,50) BRIGHT A_CustomPunch(150,1,0,"Nothing",192)
		EXBT E 1 Offset(30,52) BRIGHT
		EXBT E 1 Offset(10,54) BRIGHT
		EXBT E 1 Offset(0,56) BRIGHT
		EXBT E 1 Offset(-30,58) BRIGHT
		EXBT E 1 Offset(-50,60) BRIGHT A_UnSetReflectiveInvulnerable
		EXBT E 1 Offset(-70,62) BRIGHT
		EXBT E 1 Offset(-90,64) BRIGHT
		EXBT E 1 Offset(-110,64) BRIGHT
		EXBT F 1 Offset(0,64) BRIGHT
		EXBT F 1 Offset(-20,64) BRIGHT
		EXBT F 1 Offset(-40,64) BRIGHT 
		EXBT F 1 Offset(-60,64) BRIGHT
		EXBT F 1 Offset(-80,64) BRIGHT 
		TNT1 A 0 Offset(0,32)
		EXBT A 0 Offset(0,32) BRIGHT A_refire
		TNT1 A 0 Offset(0,32) BRIGHT
        Goto Ready
      Level1:  
        EXBT B 0 A_UnSetReflective
		EXBT B 0 A_PlaySound("excalibat/charge")
		
		EXBT AAAAAAAAAA 2 A_JumpIf(ACS_ExecuteWithResult(992,0) == 0, "Ready")

		EXBT B 0 A_GiveInventory("BattCharge",1)
		EXBT B 0 A_Refire
        EXBT B 0 A_TakeInventory("BattCharge",999)
        Goto Ready
      Level2: 
		EXBT B 0 A_UnSetReflective

		EXBT A 2 A_JumpIf(ACS_ExecuteWithResult(992,0) == 0, "Ready")
		EXBT H 2 Offset(0,32) A_JumpIf(ACS_ExecuteWithResult(992,0) == 0, "Raise1")
		EXBT I 2 Offset(0,36) A_JumpIf(ACS_ExecuteWithResult(992,0) == 0, "Raise2")
		EXBT J 2 Offset(0,42) A_JumpIf(ACS_ExecuteWithResult(992,0) == 0, "Raise3")
		EXBT K 2 Offset(0,46) A_JumpIf(ACS_ExecuteWithResult(992,0) == 0, "Raise4")
		EXBT L 2 Offset(0,50) A_JumpIf(ACS_ExecuteWithResult(992,0) == 0, "Raise5")

		EXBT A 0 A_GiveInventory("BattCharge",1)
		EXBT B 0 A_Refire
		EXBT B 0 A_TakeInventory("BattCharge",999)
        Goto Ready  
      Level3: // 32
        EXBT LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL 2 Offset(0,52) A_JumpIf(ACS_ExecuteWithResult(992,0) == 0, "Raise5")
        EXBT L 1 Offset(0,42) 
		EXBT L 1 Offset(0,32)
		EXBT C 1 Offset(40,32) BRIGHT 
		EXBT C 1 Offset(30,32) BRIGHT 
		EXBT C 1 Offset(20,32) BRIGHT
		EXBT C 1 Offset(10,32) BRIGHT
		EXBT C 1 Offset(0,32) BRIGHT  A_PlaySound("excalibat/blast")
		EXBT C 1 Offset(-10,32) BRIGHT
		TNT1 A 0 A_JumpIfInventory("CoopModeOn", 1, "CoopFire")
		EXBT C 1 Offset(-20,32) BRIGHT A_FireCustomMissile ("Baseball",-35,1,0,0)
		EXBT D 1 Offset(20,32) BRIGHT  A_FireCustomMissile ("Baseball",-28,0,0,0)
		EXBT D 1 Offset(10,32) BRIGHT  A_FireCustomMissile("Baseball",-21,0,0,0)
		EXBT D 1 Offset(0,32) BRIGHT   A_FireCustomMissile("Baseball",-14,0,0,0)
		EXBT E 1 Offset(30,32) BRIGHT  A_FireCustomMissile("Baseball",-7,0,0,0)
		EXBT E 1 Offset(10,32) BRIGHT  A_FireCustomMissile("Baseball",0,0,0,0)
		EXBT E 1 Offset(0,32) BRIGHT   A_FireCustomMissile("Baseball",7,0,0,0)
		EXBT E 1 Offset(-30,32) BRIGHT A_FireCustomMissile("Baseball",14,0,0,0)
		EXBT E 1 Offset(-50,32) BRIGHT A_FireCustomMissile("Baseball",21,0,0,0)
		EXBT E 1 Offset(-70,32) BRIGHT A_FireCustomMissile("Baseball",28,0,0,0)
		EXBT E 1 Offset(-90,32) BRIGHT A_FireCustomMissile("Baseball",35,0,0,0)
		Continue:
		EXBT E 1 Offset(-110,32) BRIGHT
		EXBT F 1 Offset(0,32) BRIGHT
		EXBT F 1 Offset(-20,32) BRIGHT
		EXBT F 1 Offset(-40,32) BRIGHT
		EXBT F 1 Offset(-60,32) BRIGHT
		EXBT F 1 Offset(-80,32) BRIGHT A_TakeInventory("BattCharge",999)
		TNT1 A 0 A_JumpIfInventory("BMissiles", 1, 2)
		TNT1 A 0 A_TakeInventory("Excalibat", 1)
	  Goto Ready
		TNT1 A 0
	  Goto Ready
	  Raise5:
		EXBT L 2 offset(0,50)
	  Raise4:
	    EXBT K 2 offset(0,46)
	  Raise3:
	    EXBT J 2 offset(0,42)
	  Raise2:
	    EXBT I 2 offset(0,36)
	  Raise1:
		EXBT H 2 offset(0,32)
	  Goto Ready
	  CoopFire:
	  	EXBT C 1 Offset(-20,32) BRIGHT A_FireCustomMissile ("BaseballCoop",-35,1,0,0)
		EXBT D 1 Offset(20,32) BRIGHT  A_FireCustomMissile ("BaseballCoop",-28,0,0,0)
		EXBT D 1 Offset(10,32) BRIGHT  A_FireCustomMissile("BaseballCoop",-21,0,0,0)
		EXBT D 1 Offset(0,32) BRIGHT   A_FireCustomMissile("BaseballCoop",-14,0,0,0)
		EXBT E 1 Offset(30,32) BRIGHT  A_FireCustomMissile("BaseballCoop",-7,0,0,0)
		EXBT E 1 Offset(10,32) BRIGHT  A_FireCustomMissile("BaseballCoop",0,0,0,0)
		EXBT E 1 Offset(0,32) BRIGHT   A_FireCustomMissile("BaseballCoop",7,0,0,0)
		EXBT E 1 Offset(-30,32) BRIGHT A_FireCustomMissile("BaseballCoop",14,0,0,0)
		EXBT E 1 Offset(-50,32) BRIGHT A_FireCustomMissile("BaseballCoop",21,0,0,0)
		EXBT E 1 Offset(-70,32) BRIGHT A_FireCustomMissile("BaseballCoop",28,0,0,0)
		EXBT E 1 Offset(-90,32) BRIGHT A_FireCustomMissile("BaseballCoop",35,0,0,0)
	  Goto Continue
   } 
}

Actor BatPressing : Inventory
{
	inventory.amount 1
	inventory.maxamount 1
}

actor Baseball
{
    Radius 11
    Height 8
    Speed 50
    Damage (40)
    SCALE 0.50
    PROJECTILE
    +EXTREMEDEATH
    +FOILINVUL
    DeathSound "god/bang"
    States
    {
    Spawn:
        BALL AABBCCDD 1 Bright A_CustomMissile("MissileTrail",0,0,0,0) 
        Loop
    Death:
		TNT1 A 0 A_Explode(64, 128, 0)
		TNT1 A 0 A_Explode(64, 128)
        BOMB ABCDEFGHIJKLMOPQRST 2 Bright
        Stop
    }
} 

Actor BaseBallCoop : BaseBall
{
	Damage (100)
	Species "Player"
	+THRUSPECIES
}

ACTOR BattCharge : Ammo
{
   Inventory.MaxAmount 3
   Ammo.BackpackAmount 0
   Ammo.BackpackMaxAmount 3
}

actor Nothing
{
	DamageType "BaseballBat"
	Obituary "%k \cbhit a home run,\c- %o \cbtook it in the face.\c-"
	States
	{
		spawn:
			TNT1 A 1
		STOP
	}
}

// Rott unique things

Actor GodProtection : PowerProtection
{
	damagefactor "normal", 0.0
	powerup.duration -40
}

Actor GodRevert : CustomInventory
{
	inventory.amount 1
	inventory.maxamount 1
	+Inventory.AUTOACTIVATE
	
	States
	{
		Use:
			TNT1 A 0 A_ChangeFlag("PICKUP", 1)
		Stop
	}
}

  ACTOR "God Hand" : Weapon
  {
     Weapon.SelectionOrder 1
     Weapon.UpSound "gen/wepswitch"
     Inventory.PickupSound "gen/pickup"
      Inventory.Pickupmessage "GOD MODE"
     DamageType "GodHand"
     SCALE 0.50
     +NOGRAVITY
     donthurtshooter
     Obituary "\cbThe God\c- %k \ctook\c- %o\c's soul\c-"
     States 

     { 
     Spawn: 
        GODH A -1 
        LOOP 
     Ready: 
        GODH AAA 35 A_WeaponReady
		TNT1 A 0 A_PlaySound("godsounds")
        Loop
     Deselect: 
     Goto Ready
     Select:
		TNT1 A 0 ACS_ExecuteAlways(987, 0)
        GODH A 1 A_Raise
        Goto Select+1
     Fire: 
        GODH A 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        GODH B 4 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        GODH C 4 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        GODH D 4 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 0 A_PlayWeaponSound("god/zap")
        GODH E 4 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        TNT1 A 0 A_GunFlash
		GODH F 4 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 0 A_FireCustomMissile("GodMissile",0,8,0,10)
        GODH G 4 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        GODH H 6 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        GODH a 0 a_refire
        Goto Ready 	
     } 
  }
  
 actor GodMissile
{
    Radius 8
    Height 6
    Speed 20
    Damage (4000)
    SCALE 0.50
    +FRIENDLY
    +RIPPER
    +FOILINVUL
    +SEEKERMISSILE
    +MISSILE
//    +STEPMISSILE
    +NOWALLBOUNCESND
	+SPECTRAL
	+LOOKALLAROUND
    DONTHURTSHOOTER
    PROJECTILE
	reactiontime 35
	Obituary "%o met %p maker."
    DamageType "RottDisintegrate"
    SeeSound "god/projectile"
    DeathSound "ksphere/death"
    States
    {  
       Spawn:
       GODP AABBCCDDAABBCCDD 1 BRIGHT a_seekermissile(90,90)
	   TNT1 A 0 A_CountDown
       LOOP

    Death:
	TNT1 A 0 A_SpawnItem("GodExplosion")
    BOMB BCDEFGHIJKLMOPQRST 2 Bright
        Stop
   
    }
    
}  

Actor GodExplosion
{
	PROJECTILE
	Speed 0
	Damage 0
	Damagetype "RottExplosion"
	
	States
	{
		Spawn:
			TNT1 AA 0 A_Explode(128, 128, 0)
		Stop
	}
}

Actor AsbestosArmor : PowerProtection
{
	damagefactor "fire", 0.1
	damagefactor "rottfire", 0.0
	damagefactor "rottexplosive", 0.1
	damagefactor "explosive", 0.1
	powerup.duration -45
}

Actor AsbestosIronFeet : PowerIronFeet
{
	powerup.duration -45
	powerup.color 0, 0, 0, 0
}

Actor BulletProofVest : PowerProtection
{
	damagefactor "DoomBullet", 0.0
	powerup.duration -45
}