//For use of addon-related bot-scripts. If found on a bot the script fails and stops.
//Employ as needed in addons official or not.
actor DontAlterBot : Inventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 1
loop
}
}

actor NoAchievements : Inventory//Disables the gaining of achievements if desired.
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 1
loop
}
}

//Used for checking if bots are attacking something.
actor BotAttack : Inventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 1
loop
}
}
actor BotReady : Inventory//Or when not attacking something.
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 1
loop
}
}
actor BotSingleplayer : Inventory//For singleplayer bot handling.
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 1
loop
}
}
//Used for addon compability with GVH: Rainbow Edition (GVH:RE), prohibits morphing.
Actor NoRainbowMorph : Inventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 1
loop
}
}

//Items for the Desperation mechanic.
/*Actor DontDoDesperation : Health
{
  Inventory.Amount 1
  Inventory.MaxAmount 1
}*/
//Disable Desperation boost trigger for holder of this item.
actor DontDoDesperation : Inventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 1
loop
}
}

actor Desperation : Inventory
{
inventory.amount 1
inventory.maxamount 10
States
{
Spawn:
TNT1 A 1
loop
}
}

actor GhoulAmmo : Ammo
{
  inventory.pickupmessage ""
  inventory.amount 3
  inventory.maxamount 3
  inventory.icon "GHOULAMM"
  ammo.backpackamount 3
  ammo.backpackmaxamount 3
  +INVENTORY.IGNORESKILL
  states
  {
  Spawn:
    TNT1 A -1
    stop
  }
}

actor Botshowpain : PowerDamage
{
damagefactor "nothing", 1.0
powerup.duration 25//35
//inventory.icon "JMORPH"
}
actor Botshowpain2 : BotShowPain
{
powerup.duration 65//25
}
actor Botshowpain3 : BotShowPain
{
powerup.duration 65
}

actor ChokeHealer : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
states
{
Spawn:
TNT1 A -1
stop
Pickup:
Use:
TNT1 A 0 ACS_ExecuteAlways(613,0)//3
stop
}
}

actor HealDelay : PowerDamage
{
damagefactor "nothing", 1.0
powerup.duration 17//85
//inventory.icon "JMORPH"
}

actor CreepGotya : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 1
loop
Pickup:
ANT1 A 0 A_PlaySoundEx("creepgotya", "SoundSlot5")
stop
}
}

actor CreeperStunCheck : Inventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 1
loop
}
}



actor Reflectdummy : ScriptedMarine
{
+REFLECTIVE
+INVULNERABLE
}


actor Railtester : ChaingunGuy
{
damage 1
states
{
Missile:
CPOS E 10 A_FaceTarget
CPOS FE 4 bright A_MonsterRail
CPOS F 1 A_CPosRefire
goto Missile+1
}
}

actor Cheapcheck : Inventory // Used to prevent R_Drawtrans false and any other BS settings to cheat.
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 1
Loop
}
}

actor Creeperhealth : Health
{
//  inventory.pickupmessage "Boo"
  inventory.amount 70
  inventory.maxamount 70
  states
  {
  Spawn:
    TNT1 A -1
    stop
  }

}

actor gibmeplz // Test the gibs
{
damagetype "Jitter"
PROJECTILE
Speed 1
States
{
Spawn:
TNT1 A 1
TNT1 A 0 A_Explode(255,255,1)
Stop
}
}

actor bob : DoomImp
{
states
{
  Missile:
    TROO EF 8 A_FaceTarget
    TROO G 6 A_CustomMissile("CreeperBall",0,0,0)
    loop
}
}

actor bill : DoomImp
{
states
{
Missile:
TROO EF 5
TROO E 0 A_FaceTarget
TROO E 0 A_CustomMissile("CreeperBall",0,0,0,2,0)
TROO EF 5
TROO E 0 A_FaceTarget
TROO E 0 A_CustomMissile("SjasAttack",0,0,0,2,0)
TROO EF 5
TROO E 0 A_FaceTarget
TROO E 0 A_CustomMissile("JitterskullAttack",0,0,0,2,0)
loop
}
}

//More B-named imps for testing!
actor bert : DoomImp
{
states
{
Missile:
TROO EF 30
TROO E 0 A_FaceTarget
TROO E 0 A_PlaySoundEx("weapons/bowpowerup","Weapon")
TROO E 0 A_SpawnItem("NormalRadius",0 ,0, 0)
Loop
}
}

actor biff : DoomImp
{
states
{
Missile:
TROO EF 30
TROO E 0 A_FaceTarget
RED5 A 0 A_PlaySoundEx("weapons/firespin","Weapon")
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",40,0,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",20,20,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",0,40,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",-20,20,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",-40,0,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",-20,-20,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",0,-40,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",20,-20,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",40,0,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",20,20,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",0,40,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",-20,20,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",-40,0,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",-20,-20,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",0,-40,0,0,0,0,0,0)
TROO F 0 A_SpawnItem("FireRadius",0 ,0, 0)
TROO F 2 bright A_SpawnItemEx("FireSpinAttack",20,-20,0,0,0,0,0,0)
Loop
}
}

actor IceImp : Doomimp
{
states
{
Missile:
TROO E 2
TROO E 0 A_PlayWeaponSound("icerain")
TROO FFFFFFF 2 A_SpawnItemEx("IceFallSpawner", random(-200,200), random(-200,200), 9999,0,0,0,0,SXF_NOCHECKPOSITION)
TROO E 1
Loop
}
}

actor SawImp : DoomImp
{
states
{
  Missile:
    TROO EF 8 A_FaceTarget
    TROO G 12 A_CustomMissile("BuzzSawThrown",0,0,0)
    loop
}
}

actor FireArrowImp : DoomImp
{
states
{
  Missile:
    TROO EF 8 A_FaceTarget
    TROO G 10 A_CustomMissile("FlameArrow",0,0,0)
    loop
}
}

actor ArrowImp : DoomImp//For damage testing.
{
states
{
  Missile:
    TROO EF 8 A_FaceTarget
    TROO G 12 A_CustomMissile("ArrowFire2",0,0,0)
	TROO G 10
    loop
}
}

actor SteamImp : DoomImp
{
damagefactor "Grenade", 0.0
states
{
  Missile:
    TROO EF 8 A_FaceTarget
    TROO G 18 A_CustomMissile("SteamProjectile",0,0,0)
    loop
}
}

actor SteamImp2 : DoomImp
{
damagefactor "Grenade", 0.0
states
{
  Missile:
    TROO EF 8 A_FaceTarget
    TROO G 18 A_CustomMissile("SteamProjectile2",0,0,0)
    loop
}
}

actor LightningArrowImp : DoomImp
{
Health 400
damagefactor "Lightning", 1.6
states
{
  Missile:
    TROO EF 8 A_FaceTarget
    TROO G 18 A_CustomMissile("NewLightningArrow",0,0,0)
    loop
  Pain.Lightning:
    TROO A 0 A_Pain
	TROO A 0 ACS_ExecuteAlways(541,0)
	TROO E 2
	TROO EF 8 A_FaceTarget
	TROO GGG 8 A_CustomMissile("BuzzSawThrown",0,0,0)
	Goto Missile
}
}

actor Cyborgstomp
{
PROJECTILE
+NOBLOOD
damage 0
radius 10
Speed 20
+CLIENTSIDEONLY
deathsound "CyborgStomp"
States
{
Spawn:
TNT1 A 1
Stop
Death:
TNT1 A 0
TNT1 A 1 //A_PlaySound("CyborgStomp")
Stop
}
}

ACTOR ArchvileFirex : ArchvileFire
{
	Speed 5
	+NOINTERACTION
        +NOBLOCKMAP
        +NOCLIP
		+CLIENTSIDEONLY
}

ACTOR ArchvileFirex2 : ArchvileFirex
{
	Speed 2
}

ACTOR ArchvileFirex3 : ArchvileFirex
{
	translation "160:167=96:111"
}

ACTOR ArchvileFirex4 : SpawnFire replaces TeleportFog
{
+NOINTERACTION
+CLIENTSIDEONLY
renderstyle none // No more giving away spawn spots
translation "160:167=192:207"
States
{
Spawn:
FIRE A 0
FIRE A 0 A_PlaySoundEx("newteleportfog","Voice")
FIRE ABCDEFGH 4 Bright
Stop
}
}

ACTOR TelFire : ArchvileFirex4
{
+NOINTERACTION
+CLIENTSIDEONLY
renderstyle translucent
translation "160:167=192:207"
alpha 0.7
States
{
Spawn:
FIRE A 0
FIRE A 0 A_PlaySoundEx("newteleportfog","Voice")
FIRE ABCDEFGH 4 Bright
Stop
}
}

ACTOR ArchvileFirex5 : ArchvileFirex
{
	translation "160:167=80:95"
	VisibleToTeam 1
	+NOTONAUTOMAP
	States
	{
	Spawn:
		FIRE A 1 BRIGHT
		FIRE BAB 1 BRIGHT
		FIRE C 1 BRIGHT
		FIRE BCBCDCDCDEDED 1 BRIGHT
		FIRE E 1 BRIGHT
		FIRE FEFEFGHGHGH 1 BRIGHT
		Stop
	}
}

Actor ArchvileFirePink : ArchvileFirex2
{
	Translation "160:167=250:254"
}

Actor ArchvileFireBlue : ArchvileFirex2
{
	Translation "160:167=192:207"
}

Actor IodsaDeathFire : ArchvileFirex2
{
	States
	{
	Spawn:
	TNT1 A 0 A_CustomMissile("ArchvileFirex2", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirex2", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirex2", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirex2", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirex2", 0,0,random(0,360), 2,0)
	TNT1 A 24
	TNT1 A 0 A_CustomMissile("ArchvileFirex2", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirex2", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirex2", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirex2", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirex2", 0,0,random(0,360), 2,0)
	Stop
	}
}

Actor MareDeathFire : IodsaDeathFire
{
	States
	{
	Spawn:
	TNT1 A 0 A_CustomMissile("ArchvileFirePink", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirePink", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirePink", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirePink", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirePink", 0,0,random(0,360), 2,0)
	TNT1 A 24
	TNT1 A 0 A_CustomMissile("ArchvileFirePink", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirePink", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirePink", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirePink", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFirePink", 0,0,random(0,360), 2,0)
	Stop
	}
}

Actor ElderOneDeathFire : IodsaDeathFire
{
	States
	{
	Spawn:
	TNT1 A 0 A_CustomMissile("ArchvileFireBlue", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFireBlue", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFireBlue", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFireBlue", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFireBlue", 0,0,random(0,360), 2,0)
	TNT1 A 24
	TNT1 A 0 A_CustomMissile("ArchvileFireBlue", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFireBlue", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFireBlue", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFireBlue", 0,0,random(0,360), 2,0)
	TNT1 A 0 A_CustomMissile("ArchvileFireBlue", 0,0,random(0,360), 2,0)
	Stop
	}
}

ACTOR Cuthead replaces Hissy
{
- SOLID
+NOBLOCKMAP
Scale 0.1
States
{
Spawn:
DECR A -1
Loop
}
}