//Scripts
const int ExtraLegendaryRuneFix = 2097;
const int ExtraBFG_Annihilate = 2098;
const int Extra_CheckActorMonster = 2099;

ACTOR MarkerItem : Inventory { Inventory.MaxAmount 1 }

ACTOR Unknown
{
Radius 32
Height 56
+NOGRAVITY
+NOBLOCKMAP
+DONTSPLASH
+FLOATBOB
States
	{
	Spawn:
		UNKN A 35
		Loop
	}
}

Actor LegendaryRune : CustomInventory 30303
{
+FLOATBOB
+COUNTITEM
+NOTIMEFREEZE
-INVENTORY.AUTOACTIVATE
ActiveSound "Pickups/Legruneidle"
Inventory.PickupMessage "Legendary Rune obtained!  That's 3 runes in 1!"
Inventory.Amount 1
Inventory.MaxAmount 1
States
	{
	Spawn:
		TNT1 A 0 Bright A_CustomMissile("YellowSparkleSpawner",0,0,random(0,-360),2,random(0,360))
		TNT1 A 0 Bright A_LoopActiveSound
		LGRN AAAAAA 10 Bright A_CustomMissile("LegendaryRuneFlameSpawner",-20,0,random(0,-360),2,random(0,360))
		Loop
	Pickup:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("LegendaryRuneItem",1,"Nope")
		TNT1 A 0 A_PlaySound("Pickups/Legrune",CHAN_ITEM)
		TNT1 A 0 A_GiveInventory("LegRuneDoubleDamage",1)
		TNT1 A 0 A_GiveInventory("LegDoubleFiringSpeed",1)
		TNT1 A 0 A_GiveInventory("LegProtection",1)
		TNT1 A 0 A_GiveInventory("LegIronFeet",1)
		TNT1 A 1 A_GiveInventory("LegendaryRuneItem",1)
		TNT1 A 0 ACS_ExecuteAlways(ExtraLegendaryRuneFix,0)
		TNT1 A 1 A_StopSound(CHAN_VOICE)
		Stop
	Nope:
		TNT1 A 1
		Stop	
	}
}

Actor LegRuneDoubleDamage : PowerDamage
{
+INVENTORY.HUBPOWER
+INVENTORY.PERSISTENTPOWER
+NOTIMEFREEZE
DamageFactor "Normal", 2
Powerup.Duration 0x7FFFFFFF
}

Actor LegDoubleFiringSpeed : PowerDoubleFiringSpeed
{
+INVENTORY.HUBPOWER
+INVENTORY.PERSISTENTPOWER
+NOTIMEFREEZE
Powerup.Duration 0x7FFFFFFF
}


Actor LegProtection : PowerProtection
{
+INVENTORY.PERSISTENTPOWER
+INVENTORY.HUBPOWER
+NORADIUSDMG
+NOTIMEFREEZE
Powerup.Duration 0x7FFFFFFF
DamageFactor "Normal", 0.75
ActiveSound "Pickups/LegProtectionActive"
}

Actor LegIronFeet : PowerIronFeet
{
+INVENTORY.HUBPOWER
+INVENTORY.PERSISTENTPOWER
+NOTIMEFREEZE
DamageFactor "Slime", 0.0
Powerup.Duration 0x7FFFFFFF
Powerup.Color "00 00 00", 0.0
}

ACTOR LegendaryRuneItem : Weapon
{
Weapon.SelectionOrder 99999
+NOTIMEFREEZE
+WEAPON.NOALERT
+INVENTORY.UNDROPPABLE
+WEAPON.CHEATNOTWEAPON
+WEAPON.NO_AUTO_SWITCH
States
	{
	Spawn:
		TNT1 A 1
		Stop
	Ready:
		TNT1 A 1
		Loop
	Deselect:
		TNT1 A 1 A_Raise
		Loop
	Select:
		TNT1 A 1 A_Lower
		Loop
	Fire:
		TNT1 A 1
		Goto Ready
	}
}

ACTOR YellowStar
{
PROJECTILE
Height 0
Radius 0
Speed 2
Scale 0.16
Renderstyle Add
Translation "80:111=160:167"
+CLIENTSIDEONLY
+DOOMBOUNCE
+DONTSPLASH
+NOTELEPORT
+NOGRAVITY
+FORCEXYBILLBOARD
+FLOATBOB
States
	{
	Spawn:
		PTCL ABC 2 Bright A_FadeOut(0.05,1)
		Loop
	}
}

ACTOR YellowSparkleSpawner
{
+CLIENTSIDEONLY
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+NOCLIP
States
	{
	Spawn:
		TNT1 A 0
		TNT1 AA 2 A_SpawnItemEx("YellowStar",random(-15,15),random(-15,15),random(28,44),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		Stop
	}
}

ACTOR LegendarySphereFlame
{
Scale 0.3
RenderStyle Add
+CLIENTSIDEONLY
+MISSILE
+NOCLIP
+DONTSPLASH
+NOBLOCKMAP
+NOGRAVITY
+NOTELEPORT
+FORCEXYBILLBOARD
+NOTIMEFREEZE
+NONETID
States
	{
	Spawn:
		LMKE ABCDEFGHIJKL 2 Bright A_FadeOut(0.1,1)
		Stop
	}
}

ACTOR LegendaryRuneFlame : LegendarySphereFlame
{
Scale 0.1
States
	{
	Spawn:
		LMKE ABCDEFGHIJKL 2 Bright A_FadeOut(0.1,1)
		Stop
	}
}

ACTOR LegendarySphereFlameSpawner 
{
+NOTIMEFREEZE
+CLIENTSIDEONLY
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 0
		TNT1 AAAAAA 0 A_SpawnItemEx("LegendarySphereFlame",random(20,-20),random(20,-20),random(20,40),0,0,random(2,6),0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		Stop
	}
}

ACTOR LegendaryRuneFlameSpawner : LegendarySphereFlameSpawner
{
States
	{
	Spawn:
		TNT1 A 0
		TNT1 AAAAAA 0 A_SpawnItemEx("LegendaryRuneFlame",random(20,-20),random(20,-20),random(20,40),0,0,random(2,6),0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		TNT1 A 1
		Stop
	}
}

ACTOR LPlayerSmoke
{
Scale 0.1
RenderStyle Normal
//+NONETID
//+CLIENTSIDEONLY
+NOINTERACTION
+MISSILE
+DONTSPLASH
+NOBLOCKMAP
+NOGRAVITY
+NOTELEPORT
+THRUACTORS
+FORCEXYBILLBOARD
+NOTIMEFREEZE
States
	{
	Spawn:
		TNT1 A 0 Bright
		LMKE ABCDEFGHIJKL 2 Bright A_FadeOut(0.1,1)
		Stop
	}
}

ACTOR LPlayerSmokeSpawner 
{
//+CLIENTSIDEONLY
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+NOTIMEFREEZE
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 AA 0 Bright A_SpawnItemEx("LPlayerSmoke",random(12,-12),random(12,-12),random(-16,16),0,0,random(1,3),0,SXF_NOCHECKPOSITION)
		TNT1 A 1 Bright
		Stop
	}
}
//==================================================================
ACTOR ExtraBFGBall
{
PROJECTILE
Height 8
Radius 13
Speed 18
Scale 0.55
RENDERSTYLE Translucent
Alpha 0.85
Decal ExtraBFGLightning
Damage 200
+DONTREFLECT
+FORCEXYBILLBOARD
+FORCERADIUSDMG
+MTHRUSPECIES
+DontHurtSpecies
+DontHarmSpecies
Species "Player"
Damagetype "SS"
Obituary "%o had no chance against %k's Extra BFG."
SeeSound "weapons/ExtraBFGFire"
DeathSound ""
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_Jump(128,"ExtraBFGSFX")
		TNT1 A 0 Bright A_AlertMonsters
		TNT1 A 0 Bright A_PlaySound("weapons/ExtraBFGBall",6,1.0,1)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGTrailParticleGreen",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		EGS2 A 1 Bright A_SpawnItemEx("ExtraBFGProjectileAttack",Random(-6,6),Random(-6,6),Random(-4,4),velx,vely,velz,angle,SXF_SETMASTER)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGTrailParticleGreen",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		EGS2 B 1 Bright A_SpawnItemEx("ExtraBFGProjectileAttack",Random(-6,6),Random(-6,6),Random(-4,4),velx,vely,velz,angle,SXF_SETMASTER)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGTrailParticleGreen",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		EGS2 C 1 Bright A_SpawnItemEx("ExtraBFGProjectileAttack",Random(-6,6),Random(-6,6),Random(-4,4),velx,vely,velz,angle,SXF_SETMASTER)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGTrailParticleGreen",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		EGS2 D 1 Bright A_SpawnItemEx("ExtraBFGProjectileAttack",Random(-6,6),Random(-6,6),Random(-4,4),velx,vely,velz,angle,SXF_SETMASTER)
		Loop
	ExtraBFGSFX:
		TNT1 A 0 Bright A_AlertMonsters
		TNT1 A 0 Bright A_PlaySound("weapons/ExtraBFGBall",6,1.0,1)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGLightningGreen",Random(-6,6),Random(-6,6),Random(16,8),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGTrailParticleGreen",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		EGS2 A 1 Bright A_SpawnItemEx("ExtraBFGProjectileAttack",Random(-6,6),Random(-6,6),Random(-4,4),velx,vely,velz,angle,SXF_SETMASTER)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGLightningGreen2",Random(-6,6),Random(-6,6),Random(16,8),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGTrailParticleGreen",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		EGS2 B 1 Bright A_SpawnItemEx("ExtraBFGProjectileAttack",Random(-6,6),Random(-6,6),Random(-4,4),velx,vely,velz,angle,SXF_SETMASTER)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGLightningGreen",Random(-6,6),Random(-6,6),Random(16,8),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGTrailParticleGreen",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		EGS2 C 1 Bright A_SpawnItemEx("ExtraBFGProjectileAttack",Random(-6,6),Random(-6,6),Random(-4,4),velx,vely,velz,angle,SXF_SETMASTER)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGLightningGreen2",Random(-6,6),Random(-6,6),Random(16,8),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGTrailParticleGreen",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		EGS2 D 1 Bright A_SpawnItemEx("ExtraBFGProjectileAttack",Random(-6,6),Random(-6,6),Random(-4,4),velx,vely,velz,angle,SXF_SETMASTER)
		Goto Spawn
	Death:
		TNT1 A 0 Bright 
		TNT1 A 0 Bright A_SetTranslucent(0.75,1)
		TNT1 A 0 Bright Radius_Quake(5,60,0,10,0)
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,10,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,20,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,30,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,40,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,50,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,60,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,70,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,80,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,90,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,100,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,110,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,120,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,130,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,140,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,150,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,160,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,170,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,180,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,190,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,200,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,210,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,220,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,230,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,240,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,250,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,260,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,270,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,280,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,290,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,300,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,310,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,320,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,330,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,340,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("ExtraBFGTracer",0,0,350,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGLightningGreenSpawner",0,0,15,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		EGS2 ABCD 6 Bright A_SpawnItemEx("ExtraBFGShockwave3",0,0,15,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_Explode(480,240,0,0)
		TNT1 AAA 0 Bright A_StopSound(6)
		TNT1 A 0 Bright Radius_Quake(15,20,0,20,0)
		TNT1 A 0 Bright A_PlaySound("weapons/ExtraBFGExplode",6,1.0,0)
		TNT1 A 0 Bright A_SpawnItemEx("ExtraBFGShockwave",0,0,15,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 20 Bright A_SpawnItemEx("ExtraBFGEx",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		Stop
	}
}

ACTOR ExtraBFGLightningGreenSpawner
{
+NOINTERACTION
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_SpawnItemEx("ExtraBFGLightningGreen2",Random(6,-6),Random(6,-6),Random(6,-6),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		Stop
	}
}

ACTOR ExtraBFGLightningGreen2
{
Scale 0.26
RenderStyle Add
Alpha 0.5
+MISSILE
-SOLID
+DROPOFF
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+NOINTERACTION
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CheckSight("Nosfx")
		TNT1 A 0 Bright A_Jump(256,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72)
		EGL1 ABCDEFGHIJKLMNOPQR 0 Bright A_Jump(256,"Death")
		EGL2 ABCDEFGHIJKLMNOPQR 0 Bright A_Jump(256,"Death")
		EGL3 ABCDEFGHIJKLMNOPQR 0 Bright A_Jump(256,"Death")
		EGL4 ABCDEFGHIJKLMNOPQR 0 Bright A_Jump(256,"Death")
		Goto Death
	Death:
		"####" "#" 1 Bright
		Stop
	Nosfx:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR ExtraBFGLightningGreen : ExtraBFGLightningGreen2 { Scale 0.24 }

ACTOR ExtraBFGShockwave
{
PROJECTILE
Height 1
Radius 1
Speed 0
Scale 2.5
Renderstyle Translucent
Alpha 0.85
Damage (0)
+NOINTERACTION
+FORCEXYBILLBOARD
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CheckSight("Nosfx")
		EBSW ABCDEFGHIJKLMNOPQR 2 Bright A_FadeOut(0.04,1)
		Stop
	Nosfx:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR  ExtraBFGShockwave3 : ExtraBFGShockwave 
{
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CheckSight("Nosfx")
		EBSW ABCDEFGHIJKLMNOPQR 1 Bright A_FadeOut(0.04,1)
		Stop
	}
}

ACTOR ExtraBFGEx
{
RenderStyle Add
Alpha 0.85
+NOINTERACTION
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		EGE2 AAAAAABBBBBBCCCCCCDDDDDD 1 Bright A_CustomMissile("ExtraKaboom",0,0,random(0,360),2,random(0,360))
		EGE2 EF 6 Bright
		Stop
	}
}

ACTOR ExtraKaboom
{
PROJECTILE
Height 1
Radius 1
Speed 6
Scale 1.15
Renderstyle Add
Alpha 0.75
Damage (0)
+NOINTERACTION
+FORCEXYBILLBOARD
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CheckSight("Nosfx")
		EBF9 AABBCDEFGHIJKLM 2 Bright A_FadeOut(0.05,1)
		Stop
	Nosfx:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR ExtraBFGProjectileAttack
{
PROJECTILE
Height 1
Radius 1
Speed 18
MissileType "ExtraBFGRailgunSlug"
+ISMONSTER
-COUNTKILL
+LOOKALLAROUND
+QUICKTORETALIATE
+NOTARGET
+FRIENDLY
+THRUACTORS
Damagetype "SS"
Obituary "%o had no chance against %k's Extra BFG."
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CustomMissile("ExtraAnnihilatorSeeker",0,0,random(0,360),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,360))
		TNT1 AAAAA 1 Bright A_LookEx(LOF_NOSOUNDCHECK|LOF_NOSEESOUND,0,1250,0,360,"Attack")
		Goto Death
	Attack:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_FaceTarget
		TNT1 A 0 Bright A_MissileAttack
		TNT1 A 1 Bright A_CustomRailgun(-1,0,NONE,"Green",1,1,2)
		Goto Death
	Death:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR ExtraBFGRailgunSlug : FastProjectile
{
Height 1
Radius 1
Speed 350
Decal None
Damage 8
+RIPPER
+NOBOSSRIP   
+NODAMAGETHRUST
+BLOODLESSIMPACT
+NOTIMEFREEZE
+THRUSPECIES
+DontHurtSpecies
+DontHarmSpecies
Species "Player"  
Damagetype "SS"
States
	{
	Spawn:
		TNT1 A 1
		Loop
	XDeath:
	Death:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR ExtraBFGTracer : FastProjectile
{
Projectile
Height 4
Radius 16
Speed 60
Damage 50
Decal None
+MTHRUSPECIES
+DontHurtSpecies
+DontHarmSpecies
Species "Player"
Damagetype "SS"
States
	{
	Spawn:
		TNT1 A 15 Bright
		Stop
	Death:
		TNT1 A 1 Bright
		Stop
	XDeath:
		TNT1 A 0 Bright
		TNT1 A 1 Bright A_SpawnItem("ExtraCustomSpray")
		Stop
	}
}

ACTOR ExtraCustomSpray
{
Height 1
Radius 1
Speed 0
RENDERSTYLE ADD
Damage (0)
+DROPOFF
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+ACTIVATEPCROSS
+ACTIVATEIMPACT
+EXTREMEDEATH
States
	{
	Spawn:
		TNT1 A 0
		BFE2 A 6 Bright A_SpawnItemEx("GreenParticleSpawnerExtra",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		BFE2 BCD 6 Bright 
		Stop
	}
}

ACTOR GreenParticleSpawnerExtra
{
+DROPOFF
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("ExtraEPSG7",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("ExtraEPSG8",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("ExtraEPSG9",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("ExtraEPSG10",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("ExtraEPSG11",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("ExtraEPSG12",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,SXF_CLIENTSIDE)
		TNT1 A 1
		Stop
	}
}

ACTOR EnergyProjectileSparkGreenExtra
{
Height 0
Radius 0
Mass 0
RENDERSTYLE ADD
Bouncetype Doom
BounceFactor 0.6
Gravity 0.2
Damage (0)
+MISSILE
+DROPOFF
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+THRUACTORS
+DOOMBOUNCE
+FORCEXYBILLBOARD
+CLIENTSIDEONLY
States
	{
	Spawn:
		EBS9 A 2 Bright A_FadeOut(0.08,1)
		Loop
	}
}

ACTOR ExtraEPSG7 : EnergyProjectileSparkGreenExtra { Scale 0.040 }
ACTOR ExtraEPSG8 : EnergyProjectileSparkGreenExtra { Scale 0.035 }
ACTOR ExtraEPSG9 : EnergyProjectileSparkGreenExtra { Scale 0.030 }
ACTOR ExtraEPSG10 : EnergyProjectileSparkGreenExtra { Scale 0.025 }
ACTOR ExtraEPSG11 : EnergyProjectileSparkGreenExtra { Scale 0.020 }
ACTOR ExtraEPSG12 : EnergyProjectileSparkGreenExtra { Scale 0.015 }

ACTOR ExtraBFGTrailParticleGreen : EnergyProjectileSparkGreenExtra
{
+NOGRAVITY
Scale 0.06
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CheckSight("Nosfx")
		EBS9 A 2 Bright A_FadeOut(0.015,1)
		Goto Spawn+2
	Nosfx:
		TNT1 A 1 Bright
		Stop
	}
}

Actor ExtraAnnihilateFadeOut : CustomInventory
{
-COUNTITEM
+INVENTORY.QUIET
+INVENTORY.UNDROPPABLE
+INVENTORY.ALWAYSPICKUP
+INVENTORY.AUTOACTIVATE
Inventory.Amount 1
Inventory.MaxAmount 0
States
	{
	Pickup:
		TNT1 A 1
		TNT1 A 1 A_JumpIf(ACS_ExecuteWithResult(Extra_CheckActorMonster) != 1,"Nop")
		TNT1 A 1 A_FadeOut(0.1,0)
		Stop
	Nop:
		TNT1 A 1
		Fail
	}
}

Actor ExtraAnnihilatorSeeker
{
Projectile
Height 8
Radius 4
Speed 18
Scale 0.06
RenderStyle Add
Alpha 0.45
Reactiontime 105
Damage (0)
+SEEKERMISSILE
+HITTRACER
+THRUSPECIES
Species "Player"
Damagetype "SS"
States
	{
	Spawn:
		EBS9 A 1 Bright
		TNT1 A 0 Bright A_SeekerMissile(25,35,SMF_LOOK|SMF_PRECISE,256,1)
		TNT1 A 0 Bright A_Countdown
		Loop
	Death:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpifTracerCloser(150,"Annihilate")
		EBS9 A 2 Bright
		Stop
	Crash:
	XDeath:
	Annihilate:
		TNT1 A 0 Bright
		TNT1 A 0 Bright ACS_ExecuteAlways(ExtraBFG_Annihilate,0)
		EBS9 A 2 Bright
		Stop
	}
}
//=================================================================================
Actor IsAnSentryGun : Inventory { Inventory.MaxAmount 1 }

Actor SentryGun
{
MONSTER
Health 250
Radius 20
Height 56
Mass 100000
Speed 0
MaxTargetRange 2048
MinMissileChance 80
-COUNTKILL
+FRIENDLY
+FLOORCLIP
+NOFEAR
+NOBLOOD
+NOPAIN
+NORADIUSDMG
+NOICEDEATH
+CANTSEEK
+STANDSTILL
+LOOKALLAROUND
+ALWAYSFAST
+QUICKTORETALIATE
+NEVERRESPAWN
+MTHRUSPECIES
+THRUSPECIES
+DONTHARMCLASS
+DONTHARMSPECIES
Species "Player"
Damagefactor 0.25
Damagefactor "BFGSplash", 0.0 
Damagefactor "DrainLife", 0.0
Damagefactor "Poison", 0.0
Damagefactor "PoisonCloud", 0.0
//Attacksound "sentry/attack"
Obituary "%o was ventilated by an auto-sentry."
Tag "Auto-sentry Gun"
var int user_ammo;
States
	{
	Spawn:
		TNT1 A 0 
		TNT1 A 0 A_GiveInventory("IsAnSentryGun",1)
		TNT1 A 0 A_SetUserVar("user_ammo",400)
		Goto Idle
	Idle:
		SENT AAAAAAAAAAAAAAAA 4 A_Look
		TNT1 A 0 A_PlaySound("Sentry/Active")
		Loop
	See:
		SENT AAAAAAAAAAAAAAAA 4 A_Chase
		TNT1 A 0 A_PlaySound("Sentry/Active")
		Loop
	WrongTarget:
		TNT1 A 0
		TNT1 A 0 A_ClearTarget
		TNT1 A 0 A_ChangeFlag(FRIENDLY,1)
		Goto See
	Missile:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInTargetInventory("IsAnSentryGun",1,"WrongTarget")
		SENT AAAAAAAAAAAAAAAA 1 A_FaceTarget(45)
		Goto Refire
	Refire:
		TNT1 A 0 A_SetUserVar("user_ammo",user_ammo-1)
		TNT1 A 0 A_JumpIf(user_ammo < 1,"Death")
		TNT1 A 0 A_PlaySound("sentry/attack",CHAN_WEAPON,1.0,false)
		SENT B 2 Bright A_CustomBulletAttack(1.0,1.0,1,random(1,5)*25,"SentryGunBulletPuff",2048,CBAF_NORANDOM)
		SENT A 2 A_FaceTarget
		TNT1 A 0 A_MonsterRefire(0,"See")
		Loop
	Death:
		TNT1 A 0
		SENT C 1 A_PlaySoundEx("Sentry/Death","SoundSlot5")
		TNT1 A 0 A_PlaySoundEx("weapons/rocklx","SoundSlot6")
		TNT1 A 0 A_SpawnItem("SentryBoom",0,48)
		SENT C 525
		Goto FadeOut
	FadeOut:
		SENT C 2 A_FadeOut(0.1,1)
		Loop
	}
}

Actor SentryBoom
{
Radius 2
Height 2
Renderstyle Add
+NOINTERACTION
+CLIENTSIDEONLY
States
	{
	Spawn:
		XPL1 ABCDEF 3 Bright
		Stop
	}
}

Actor SentryBox : CustomInventory 32765
{
+COUNTITEM
+INVENTORY.INVBAR
Inventory.MaxAmount 1
Inventory.Icon "SENBB0"
Inventory.PickupMessage "You picked up a sentry gun!"
Tag "Sentry Gun Box"
States
	{
	Spawn:
		SENB A -1
		Loop
	Use:
		TNT1 A 1
		TNT1 A 1 A_GiveInventory("IsAnSentryGun")
		TNT1 A 1 A_SpawnItemEx("SentryGun",56,0,10,0,0,0,0,0,0)
		Stop
	}
}

Actor SentryGunBulletPuff : BulletPuff
{
+DONTHURTSPECIES
+DONTHARMSPECIES
Species "Player"
}
//=================================================================================
Actor AmmoBelt : CustomInventory 32766
{
Scale 1.4
+COUNTITEM
+INVENTORY.ALWAYSPICKUP
Inventory.PickupSound "misc/i_pkup"
Inventory.PickupMessage "You got an ammo belt"
States
	{
	Spawn:
		ABLT A -1
		Loop
	Pickup:
		TNT1 A 1
		TNT1 A 1 Healthing(1)
		TNT1 A 1 A_GiveInventory("ArmorBonus",1)
		TNT1 A 1 A_GiveInventory("Shell",20)
		TNT1 A 1 A_GiveInventory("Clip",50)
		TNT1 A 1 A_GiveInventory("Missile",5)
		TNT1 A 1 A_GiveInventory("Cell",20)
		TNT1 A 1 A_GiveInventory("HandGrenadeAmmo",2)
		TNT1 A 1 A_GiveInventory("GrenadeAmmo",2)
		Stop
	}
}
//=================================================================================
ACTOR ExtraSpawner 32742
{
-SERVERSIDEONLY
+NOBLOCKMAP
+NOSECTOR
+NOGRAVITY
+THRUACTORS
-BOSSDEATH
+SHOOTABLE
+ISMONSTER
+NORADIUSDMG
+NOINTERACTION
+RANDOMIZE
HEALTH 0x7FFFFFFF
Radius 16
Height 56
Mass 0x7FFFFFFF
States
	{
	Spawn:
		TNT1 A 10
		TNT1 A 0 A_Die
		Goto Death
	Death:
		TNT1 A 10
		Stop
	}
}

Actor ExtraAmbushFlag : CustomInventory
{
-COUNTITEM
+INVENTORY.QUIET
+INVENTORY.UNDROPPABLE
+INVENTORY.ALWAYSPICKUP
+INVENTORY.AUTOACTIVATE
inventory.amount 1
inventory.maxamount 0
Tag "AMBUSH"
States
	{
	Pickup:
		TNT1 A 1
		TNT1 A 1 A_ChangeFlag(AMBUSH,1)
		Stop
	}
}
//=================================================================================
Actor DeathKnight 30305
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	}
}
Actor Schabbs 30366
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	}

}
ACTOR RMTerminatorSpawner 30306
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	}

}
ACTOR RMDementedTerminatorSpawner 30307
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	}

}
ACTOR HellFireCyberdemon 30304
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	}

}
ACTOR UndeadKnight 30114
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	}
}
ACTOR LegendaryCardinal 16517
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	}
}
ACTOR Arcradimus 16569
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	}
}

ACTOR LegendaryDoomguy 30310
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	}
}

Actor ArmorSphere : CustomInventory 30438
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	}
}

ACTOR AmmoSphere : CustomInventory 30437
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	}
}

ACTOR HandGrenadeAmmo : Ammo 19353
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	Pickup:
		TNT1 A 1
		Fail
	}
}

ACTOR GrenadeAmmo : Ammo
{
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		Stop
	Pickup:
		TNT1 A 1
		Fail
	}
}