ACTOR RaperPrimary : Ammo
{
  Inventory.Amount 1
  Inventory.MaxAmount 20
  Ammo.BackpackAmount 0
  Ammo.BackpackMaxAmount 0
  Inventory.Icon "ROCKA0"
}

ACTOR RaperSecondary : Ammo
{
  Inventory.Amount 1
  Inventory.MaxAmount 100
  Ammo.BackpackAmount 10
  Ammo.BackpackMaxAmount 100
  Inventory.Icon "ROCKA0"
}

ACTOR 8BallFX
{
	+CLIENTSIDEONLY
	+NOBLOCKMAP
	+NOGRAVITY
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("8BallSmoke",0,0,0)
		TNT1 AA 0 A_SpawnItemEx("8BallSpark",random(-1,1),random(-3,3),random(-3,3),-5,random(-2,2),random(-2,2))
		TNT1 A 0 A_SpawnItemEx("8BallFlare",0,0,0)
		Stop
	}
}

ACTOR 8BallSmoke
{
	+CLIENTSIDEONLY
	+NOBLOCKMAP
	+NOGRAVITY
	Renderstyle Add
	Scale 0.75
	Alpha 0.25
	States
	{
		Spawn:
		SMKP ABCDEFGHIJK 1 A_FadeOut(0.05)
		Stop
	}
}

ACTOR 8BallSpark : 8BallSmoke
{
	-NOGRAVITY
	Gravity 0.75
	Scale 0.1
	Alpha 0.6
	States
	{
		Spawn:
		SPRK A 5 bright
		SPRK AAAAAAAAAA 1 bright A_FadeOut(0.1)
		Stop
	}
}

ACTOR 8BallFlare
{
	+CLIENTSIDEONLY
	+NOGRAVITY
	+NOBLOCKMAP
	Renderstyle Add
	Scale 0.2
	Alpha 0.4
	States
	{
		Spawn:
		IGLO A 0
		IGLO A 1 bright
		TNT1 A 1
		Stop
	}
}

ACTOR 8BallDud : RPGDud
{
	States
	{
		Spawn:
		8BLM A 1
		Loop
		
		Death:
		8BLM A 200
		8BLM AAAAAAAAAA 1 A_FadeOut(0.1)
		Stop
	}
}

// Used to be clusterbomb
ACTOR RapeParent
{
  Radius 8
  Height 8
  Speed 30
  Damage 100
  Projectile
  Scale 1.0
  Obituary "%k \cJ> \cKCorpse Raper \cJ> \cD%o" // "%o rode %k's rocket."
  States
  {
  Spawn:
	RPGR A 0
	RPGR A 0 A_PlaySoundEx("raper/loop","Body",true)
	Goto Flying
  Flying:
	8BLM A 0 A_SpawnItemEx("8BallFX",0,0,0)
	8BLM A 0 A_GiveInventory("DudTimer",1)
    8BLM A 1 Bright
    Loop
  Dud:
	MISL A 0 A_STOP
	//MISL A 0 A_SpawnItemEx("8BallDud",0,0,0)
	MISL A 0 A_CustomMissile("8BallDud",0,0,0,0,-90)
	MISL A 0 A_PlaySoundEx("rpg/dud","Body")
	Stop
  Death:
	MISL A 0 A_StopSoundEx("Body")
	
	MISL A 0 A_JumpIfInventory("DudTimer",5,1)
	Goto Dud
    //MISL B 0 Bright A_Explode(250,128)
    TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_SpawnItemEx("UltraExplosionRPG")
	TNT1 A 0 A_CheckFloor("FloorChunks")
	TNT1 A 0 A_CheckCeiling("CeilingChunks")
	Goto WallChunks
  WallChunks:
	TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RPGFragment",random(-2,2),random(-2,2),random(-2,2),random(-20,10),random(-5,5),Random(-2,1))
	Goto End
  FloorChunks:
	TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RPGFragment",random(-2,2),random(-2,2),random(-2,2),random(-5,5),random(-5,5),Random(10,20))
	Goto End
  CeilingChunks:
	TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RPGFragment",random(-2,2),random(-2,2),random(-2,2),random(-5,5),random(-5,5),Random(-20,-10))
	Goto End
  End:
    TNT1 A 20
    stop
  }
}


ACTOR RapeCharge : Inventory { Inventory.MaxAmount 10 }

ACTOR RapeCannon : DoomWeapon
{
  Weapon.SelectionOrder 2500
  Weapon.AmmoUse 1
  Weapon.AmmoUse2 0
  Weapon.AmmoGive 0
  Weapon.AmmoGive2 10
  Weapon.AmmoType "RaperPrimary"
  Weapon.AmmoType2 "RaperSecondary"
  +WEAPON.NOAUTOFIRE
  Inventory.PickupMessage "You got the Corpse Raper."
  Inventory.PickupSound "raper/boltfwd"
  Tag "Corpse Raper"
  States
  {
  Ready:
	PPSS A 0 A_JumpIfInventory("IsReloading",1,"ReloadCheck")
	PPSS A 0 A_JumpIfInventory("DoBlocking",1,"QuickMelee")
	
	RPRI A 0 A_JumpIfInventory("RapeCharge",10,"Rape10")
	RPRI A 0 A_JumpIfInventory("RapeCharge",9,"Rape9")
	RPRI A 0 A_JumpIfInventory("RapeCharge",8,"Rape8")
	RPRI A 0 A_JumpIfInventory("RapeCharge",7,"Rape7")
	RPRI A 0 A_JumpIfInventory("RapeCharge",6,"Rape6")
	RPRI A 0 A_JumpIfInventory("RapeCharge",5,"Rape5")
	RPRI A 0 A_JumpIfInventory("RapeCharge",4,"Rape4")
	RPRI A 0 A_JumpIfInventory("RapeCharge",3,"Rape3")
	RPRI A 0 A_JumpIfInventory("RapeCharge",2,"Rape2")
	RPRI A 0 A_JumpIfInventory("RapeCharge",1,"Rape1")
    RPRI A 1 A_WeaponReady
    Loop
	
  QuickMelee:
	 RPML A 0 A_GunFlash("RPGKick")
	 RPML A 0 A_GiveInventory("PowerKicking",1)
	 KIKL ABC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 PPSM B 0 A_PlaySoundEx("melee/kick","Weapon")
	 KIKL D 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 PPSM D 0 A_CustomPunch (random(10,20),1,0,"BlockPuff",96)
	 KIKL E 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 KIKL F 3 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 KIKL EDCBA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 RPML A 0 A_TakeInventory("PowerKicking",1)
	 PPSM A 0 A_TakeInventory("DoBlocking",1)
	 Goto Ready
	 
  RPGKick:
	 RPRI A 14
	 Stop
	
 //========================================================================
 // RELOAD CHECKING
 //========================================================================
  
  ReloadCheck:
	 TNT1 A 0 A_TakeInventory("IsReloading",1)
	 TNT1 A 0 A_JumpIfInventory("Perk_Demo",1,"ReloadCheckPerk")
	 TNT1 A 0 A_JumpIfInventory("RaperPrimary",10,"Ready")
	 TNT1 A 0 A_JumpIfInventory("RaperSecondary",1,"ReloadAnim")
	 Goto Ready
	
  ReloadCheckPerk:
	 TNT1 A 0 A_JumpIfInventory("PerkLevel",10,"ReloadCheckPerk10")
	 TNT1 A 0 A_JumpIfInventory("RaperPrimary",15,"Ready")
	 TNT1 A 0 A_JumpIfInventory("RaperSecondary",1,"ReloadAnim")
	 Goto Ready
	 
  ReloadCheckPerk10:
	 TNT1 A 0 A_JumpIfInventory("RaperPrimary",20,"Ready")
	 TNT1 A 0 A_JumpIfInventory("RaperSecondary",1,"ReloadAnim")
	 Goto Ready
  
//==========================================================
	
  Rape10:
	RPRI K 2 A_WeaponReady
	RPRI K 0 A_TakeInventory("RapeCharge",1)
	Goto Ready
  Rape9:
	RPRI L 2 A_WeaponReady
	RPRI K 0 A_TakeInventory("RapeCharge",1)
	Goto Ready
  Rape8:
	RPRI M 2 A_WeaponReady
	RPRI K 0 A_TakeInventory("RapeCharge",1)
	Goto Ready
  Rape7:
	RPRI N 2 A_WeaponReady
	RPRI K 0 A_TakeInventory("RapeCharge",1)
	Goto Ready
  Rape6:
	RPRI O 2 A_WeaponReady
	RPRI K 0 A_TakeInventory("RapeCharge",1)
	Goto Ready
  Rape5:
	RPRI P 2 A_WeaponReady
	RPRI K 0 A_TakeInventory("RapeCharge",1)
	Goto Ready
  Rape4:
	RPRI Q 2 A_WeaponReady
	RPRI K 0 A_TakeInventory("RapeCharge",1)
	Goto Ready
  Rape3:
	RPRI R 2 A_WeaponReady
	RPRI K 0 A_TakeInventory("RapeCharge",1)
	Goto Ready
  Rape2:
	RPRI S 2 A_WeaponReady
	RPRI K 0 A_TakeInventory("RapeCharge",1)
	Goto Ready
  Rape1:
	RPRI T 2 A_WeaponReady
	RPRI K 0 A_TakeInventory("RapeCharge",1)
	Goto Ready
	
  Deselect:
    RPRI A 1 A_Lower
    Loop
  Select:
	TNT1 A 0 A_Raise
	TNT1 A 1 A_WeaponReady
	Goto SelectAnim
  SelectAnim:
	RPRL C 0 A_PlaySoundEx("raper/deploy","SoundSlot5") // Re-hinge
	RPSL ABCD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPSL E 3 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPSL F 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPSL GH 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPSL I 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
    Goto Ready
  Fire:
	MISG A 0 A_JumpIfInventory("RapeCharge",1,"Ready")
	MISG A 0 A_PlayWeaponSound("raper/fire")
	RPGF B 0 A_PlaySoundEx("rpg/firedistant","SoundSlot5")
	RPGF B 0 A_PlaySoundEx("raper/sweetener","SoundSlot6")
	
	MISG A 0 A_FireCustomMissile("RapeParent")
	MISG A 0 A_FireCustomMissile("RapeParent",0,0,16,0)
	MISG A 0 A_FireCustomMissile("RapeParent",0,0,-16,0)
	MISG A 0 A_FireCustomMissile("RapeParent",0,0,0,16)
	MISG A 0 A_FireCustomMissile("RapeParent",0,0,0,-16)
	
	MISG A 0 A_FireCustomMissile("ShakeTheWorld",0,0)
	MISG A 0 A_SetPitch(Pitch-10.0)
	MISG A 0 A_Recoil(10.0)
	MISG A 0 A_GiveInventory("RapeCharge",10)
	RPRI B 1 bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRI CDEFGHIJ 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	Goto Ready
  Flash:
    MISF A 3 Bright A_Light1
    MISF B 4 Bright
    MISF CD 4 Bright A_Light2
    Goto LightDone
  Spawn:
    RPLN V -1
    Stop
	
  //==========================================================
	
  ReloadAnim:
	9MRL A 0 ACS_ExecuteAlways(820,0,0,0,0)
	RPRL A 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL B 3 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL C 0 A_PlaySoundEx("raper/boltback","SoundSlot5") // Unhinge
	RPRL C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL D 3 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL E 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL FG 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL C 0 A_PlaySoundEx("raper/magout","SoundSlot6") // Off
	RPRL HIJK 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL L 3 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL M 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL NOP 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL Q 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL S 3 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL T 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL U 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	RPRL C 0 A_PlaySoundEx("raper/cloth","SoundSlot5")
	RPRL VWXY 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	Goto CalculateAmmo
	
  CalculateAmmo:
	 TNT1 A 0 A_JumpIfInventory("Perk_Demo",1,"CalculateAmmoPerk")
     TNT1 A 0 A_JumpIfInventory("RaperSecondary",1,2)
	 Goto ReloadEnd
	 TNT1 AAA 0
	 TNT1 A 0 A_JumpIfInventory("RaperPrimary",10,"ReloadEnd")
	 TNT1 A 0 A_TakeInventory("RaperSecondary",1)
	 TNT1 A 0 A_GiveInventory("RaperPrimary",1)
	 Loop
	 
  CalculateAmmoPerk:
	 TNT1 A 0 A_JumpIfInventory("PerkLevel",10,"CalculateAmmoPerk10")
     TNT1 A 0 A_JumpIfInventory("RaperSecondary",1,2)
	 Goto ReloadEnd
	 TNT1 AAA 0
	 TNT1 A 0 A_JumpIfInventory("RaperPrimary",15,"ReloadEnd")
	 TNT1 A 0 A_TakeInventory("RaperSecondary",1)
	 TNT1 A 0 A_GiveInventory("RaperPrimary",1)
	 Loop
	 
  CalculateAmmoPerk10:
     TNT1 A 0 A_JumpIfInventory("RaperSecondary",1,2)
	 Goto ReloadEnd
	 TNT1 AAA 0
	 TNT1 A 0 A_JumpIfInventory("RaperPrimary",20,"ReloadEnd")
	 TNT1 A 0 A_TakeInventory("RaperSecondary",1)
	 TNT1 A 0 A_GiveInventory("RaperPrimary",1)
	 Loop
	
  ReloadEnd:
		RPRL C 0 A_PlaySoundEx("raper/magin","SoundSlot6") // On
		RPRL Z 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		RPRM A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		RPRM B 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		RPRM C 3 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		RPRM D 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		RPRL C 0 A_PlaySoundEx("raper/boltfwd","SoundSlot5") // Re-hinge
		RPRM E 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		RPRM F 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		RPRM G 3 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		RPRM H 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		RPRM J 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		RPGR Z 0 A_TakeInventory("DoBlocking",1)
		Goto Ready
	
  }
}