ACTOR OccultSpellbook : Weapon 17601
{
//$Category Weapons/DUST
//$Sprite OBOKA0
//$Title "Occult Spellbook"
  Inventory.PickupSound "HellStaff/Pickup" 
  Weapon.PreferredSkin "AdvancedNecronomicon-Marine"
  Weapon.AmmoGive1 50 
  Weapon.AmmoUse1 1
  Weapon.AmmoType1 "DustMana"
  Weapon.AmmoType2 "DustMana"
  Tag "Occult Spellbook"
  Inventory.PickupMessage "You found the Occult Spellbook! What chaotic sorcery does this thing hold?"
  +FLOATBOB
  +WEAPON.NOALERT
  +INVENTORY.UNDROPPABLE
  States
  {
  Spawn:
	OBOK A -1 
	Loop
  Ready: 
	TNT1 A 0 A_JumpIfInventory("OccultDarkMatterToken2",1,"Ready2")
	TNT1 A 0 A_JumpIfInventory("OccultChaosLightningToken2",1,"Ready3")
	//TNT1 A 0 A_GiveInventory("OccultLaserToken",1)
  ReadyLoop:
	SPBK A 1 A_WeaponReady 
	Loop
  Ready2: 
	SPBD A 1 A_WeaponReady
	Loop
  Ready3: 
	SPBC A 1 A_WeaponReady
	Loop
  Deselect:
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	TNT1 A 0 A_JumpIfInventory("OccultDarkMatterToken2",1,"Deselect2")
	TNT1 A 0 A_JumpIfInventory("OccultChaosLightningToken2",1,"Deselect3")
	SPBK A 1 A_Lower
	Goto Deselect+4
  Deselect2:
	SPBD A 1 A_Lower
	Loop
  Deselect3:
	SPBC A 1 A_Lower
	Loop
  Select: 
	TNT1 A 0 A_JumpIfInventory("OccultDarkMatterToken2",1,"Select2")
	TNT1 A 0 A_JumpIfInventory("OccultChaosLightningToken2",1,"Select3")
	SPBK A 1 A_Raise 
	Loop
  Select2: 
	SPBD A 1 A_Raise 
	Loop
  Select3: 
	SPBC A 1 A_Raise 
	Loop
  Fire:
	TNT1 A 0 A_AlertMonsters
	TNT1 A 0 A_JumpIfInventory("OccultDarkMatterToken2",1,"Fire2")
	TNT1 A 0 A_JumpIfInventory("OccultChaosLightningToken2",1,"Fire3")
	TNT1 A 0 A_JumpIfNoAmmo("Ready")
	SPBK A 10 A_Playsound("Spellbook/Charge")
	SPBK BCDEF 4
  FireContinue:
	SPBK A 0 A_JumpIfNoAmmo("Firestop")
	TNT1 A 0 A_PlaySound("Spellbook/Fire1")
	SPBK GH 2 Bright A_RailAttack(random(6,8)*5,5,1,"none","none",RGF_SILENT,6,"PlayerRailPuff",0,0,0,0,0,0,"OccultLaserTrail",-2)
	TNT1 A 0 A_PlaySound("Spellbook/Fire1")
	SPBK IJ 2 Bright A_RailAttack(random(6,8)*5,5,1,"none","none",RGF_SILENT,6,"PlayerRailPuff",0,0,0,0,0,0,"OccultLaserTrail",-2)
	TNT1 A 0 A_Refire("FireContinue")
  FireStop:
	SPBK FEDCB 4
	Goto Ready
  Fire2:
	TNT1 A 0 A_JumpIfInventory("DustMana",30,"Fire2Continue")
	Goto Ready2
  Fire2Continue:
	SPBD A 10 A_Playsound("Spellbook/Charge")
	SPBD BCD 4
	TNT1 A 0 A_TakeInventory("DustMana",30,TIF_NOTAKEINFINITE)
	SPBD E 10 A_FireCustomMissile("PlayerDarkMatterBall",0,0)
	SPBD FGHIJKL 3
	Goto Ready2
  Fire3:
	TNT1 A 0 A_JumpIfInventory("DustMana",100,"Fire3Continue")
	Goto Ready3
  Fire3Continue:
	SPBC A 5 A_Playsound("Spellbook/Charge2")
	SPBC BCDEF 3
	TNT1 A 0 A_JumpIfInventory("LegDoubleFiringSpeed",1,"Fire3Rune")
	TNT1 A 0 A_FireCustomMissile("OccultSpellbookChaosCharging",0,0,0,30)
	Goto Fire3Continue2
  Fire3Rune:
	TNT1 A 0 A_FireCustomMissile("OccultSpellbookChaosCharging2",0,0,0,30)
  Fire3Continue2:
	SPBC GHIJGHIJGH 5
	TNT1 A 0 A_TakeInventory("DustMana",100,TIF_NOTAKEINFINITE)
	TNT1 A 0 A_PlaySound("comet/launch",7)
	TNT1 A 0 A_PlaySound("legsoul/attack2",6)
	SPBC K 6 A_FireCustomMissile("ChaosSuperLightningProjPlayer",0,0)
	SPBC LM 5
	SPBC NOGFEDCB 3
	Goto Ready3
	
  AltFire:
	TNT1 A 0 A_JumpIfInventory("OccultCanUpgrade",1,"AltFireContinue")
	TNT1 A 0 A_Print("You need souls in order to change spells!")
	Goto Ready
  AltFireContinue:
	TNT1 A 0 A_JumpIfInventory("OccultChaosLightningToken",1,"AltFireContinue2")
	TNT1 A 0 A_JumpIfInventory("OccultDarkMatterToken",1,"AltFireContinue3")
	Goto Ready
  AltFireContinue2:
	TNT1 A 0 A_JumpIfInventory("OccultDarkMatterToken",1,"AltFireContinue4")
	TNT1 A 0 A_JumpIfInventory("OccultChaosLightningToken2",1,"ChaosToLasers")
	Goto LasersToChaos
  AltFireContinue3:
	TNT1 A 0 A_JumpIfInventory("OccultDarkMatterToken2",1,"DarkMatterToLasers")
	Goto LasersToDarkMatter
  AltFireContinue4:
	TNT1 A 0 A_JumpIfInventory("OccultDarkMatterToken2",1,"DarkMatterToChaos")
	TNT1 A 0 A_JumpIfInventory("OccultChaosLightningToken2",1,"ChaosToLasers")
	Goto LasersToDarkMatter
	
  LasersToDarkMatter:
	TNT1 A 0 A_Print("Dark Matter")
	SPBK A 12 A_GunFlash
	TNT1 A 0 A_GiveInventory("OccultDarkMatterToken2")
	SPBD A 12
	Goto Ready
	
  DarkMatterToLasers:
	TNT1 A 0 A_Print("Occult Lasers")
	SPBD A 12 A_GunFlash
	TNT1 A 0 A_TakeInventory("OccultDarkMatterToken2")
	SPBK A 12
	Goto Ready
	
  DarkMatterToChaos:
	TNT1 A 0 A_Print("Chaos Lightning")
	SPBD A 12 A_GunFlash
	TNT1 A 0 A_TakeInventory("OccultDarkMatterToken2")
	TNT1 A 0 A_GiveInventory("OccultChaosLightningToken2")
	SPBC A 12
	Goto Ready
	
  LasersToChaos:
	TNT1 A 0 A_Print("Chaos Lightning")
	SPBK A 12 A_GunFlash
	TNT1 A 0 A_GiveInventory("OccultChaosLightningToken2")
	SPBC A 12
	Goto Ready
	
  ChaosToLasers:
	TNT1 A 0 A_Print("Occult Lasers")
	SPBC A 12 A_GunFlash
	TNT1 A 0 A_TakeInventory("OccultChaosLightningToken2")
	SPBK A 12
	Goto Ready
	
  Flash:
	TNT1 A 0 A_Playsound("Soul/Fire")
	SPBF A 2 Bright
	SPBF B 2 Bright
	SPBF C 2 Bright
	SPBF D 2 Bright
	SPBF E 8 Bright
	SPBF D 2 Bright
	SPBF C 2 Bright
	SPBF B 2 Bright
	SPBF A 2 Bright
	Stop
  }
}

Actor OccultCanUpgrade : Inventory { Inventory.MaxAmount 1 }

Actor OccultLaserToken : Inventory { Inventory.MaxAmount 1 }

Actor OccultDarkMatterToken : Inventory { Inventory.MaxAmount 1 }
Actor OccultDarkMatterToken2 : Inventory { Inventory.MaxAmount 1 }

Actor OccultChaosLightningToken : Inventory { Inventory.MaxAmount 1 }
Actor OccultChaosLightningToken2 : Inventory { Inventory.MaxAmount 1 }










ACTOR OccultLaserTrail : BFG9500Trail
{
+NOTIMEFREEZE
Scale 0.02
Alpha 0.95
States
{
Spawn:
	SPKR A 3 Bright
	Stop
	}
}


ACTOR PlayerDarkMatterBall : PainLordDarkMatter
{
  //Damage 30   might change this idk
  Damagetype "Normal"
  Species "Player"
  +THRUSPECIES
  -FORCERADIUSDMG
  States
  {
  Death:
	TNT1 A 0
	TNT1 A 0 A_Playsound("PainLord/Explode1",7)
	TNT1 AAAA 0 A_SpawnItemEx("Debris",0,0,Random(20,40),Random(4,-4),Random(4,-4),Random(4,8),0,128)
	TNT1 AAA 0 A_CustomMissile("BlueKaboom", 0, 0, random(0,360), 2, random(0,360))	
	TNT1 AAA 0 A_CustomMissile("SmokeFX2", 0, 0, random(0,360), 2, random(0,360))
	TNT1 A 0 A_SpawnItemEx("PainLordDeathExplosionSpawner",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_SpawnItemEx("ShadowVaporSpawnerPlayer",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_Explode(400,200)
	TNT1 A 15 Radius_Quake(5,15,0,20,0)
	Stop
	}
}

ACTOR ShadowVaporSpawnerPlayer : ShadowVaporSpawnerDust
{
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ShadowVaporPlayer",0,0,0,random(4,-4),random(4,-4),random(4,-4),random(0,359),32)
	PLAY A 2
	PLAY BCDEF 4
	Stop
  }
}

ACTOR ShadowVaporPlayer : ShadowVaporDust
{
  Species "Player"
  Damagetype "Player"
}



ACTOR ChaosSuperLightningProjPlayer : ChaosSuperLightningProj
{
  Damage 50
  Damagetype "Normal"
  Species "Player"
  +THRUSPECIES
  States
  {
  Death:
	TNT1 AAAAAA 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, random(15,35), 0, 0, 0, 0, 128)  
	TNT1 AAAAAA 0 A_CustomMissile("SmokeFX", random(15,35), 0, random(0,360), 2, random(0,360))
	TNT1 AAAAAAAAA 0 A_CustomMissile("Kaboom11",random(15,35),0,random(0,360),2,random(0,360))
	TNT1 A 0 A_SpawnItem("PlayerDTBFGEx",0,-10)
	TNT1 A 0 Radius_Quake(20,8,0,12,0)
	BFE3 A 4 Bright A_Explode(400,400,1,0,200)
	TNT1 A 0 A_ChangeFlag("FORCERADIUSDMG",0)
	BFE3 B 4 Bright A_Explode(400,400,1,0,200)
	BFE3 CDEF 5 Bright A_Explode(100,800,0,0,200)
	stop
   }
}

ACTOR OccultSpellbookChaosCharging
{
  RenderStyle Add
  Scale 0.2
  +MISSILE
  +NOINTERACTION
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    CLIG ABCDEABCDE 1 Bright A_Warp(AAPTR_TARGET,60,0,30,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_SetScale(0.4)
    CLIG ABCDEABCDE 1 Bright A_Warp(AAPTR_TARGET,60,0,30,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_SetScale(0.6)
    CLIG ABCDEABCDE 1 Bright A_Warp(AAPTR_TARGET,60,0,30,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_SetScale(0.8)
    CLIG ABCDEABCDE 1 Bright A_Warp(AAPTR_TARGET,60,0,30,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_SetScale(1.0)
    CLIG ABCDEABCDE 1 Bright A_Warp(AAPTR_TARGET,60,0,30,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    Stop
  }
}

ACTOR OccultSpellbookChaosCharging2 : OccultSpellbookChaosCharging
{
  States
  {
  Spawn:
    CLIG ABCDEA 1 Bright A_Warp(AAPTR_TARGET,60,0,30,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_SetScale(0.4)
    CLIG BCDEAB 1 Bright A_Warp(AAPTR_TARGET,60,0,30,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_SetScale(0.6)
    CLIG CDEABC 1 Bright A_Warp(AAPTR_TARGET,60,0,30,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_SetScale(0.8)
    CLIG DEABCD 1 Bright A_Warp(AAPTR_TARGET,60,0,30,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_SetScale(1.0)
    CLIG EABCDE 1 Bright A_Warp(AAPTR_TARGET,60,0,30,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    Stop
  }
}