ACTOR RainbowBFG10kZombie : CorruptedGeneral
{
//Creator: High Councilor
//Origin: Nexus Infinity
//Sprite: ZPK1
//Title: "Rainbow BFG10k Zombie"
Health 1000
Speed 12
painchance 20
Mass 200
Scale 1.1
Bloodcolor "Blue"
Species "ZombieDeud"
PainChance "GeneralTracer", 0
//DropItem "RainbowBFG10KUpgrade" 10 1 //maybe?... nah, sounds very stupid
DropItem "BFG10K " 200 1
DropItem "PortableMedkit" 190
DropItem "ArmorPlate" 190
DropItem "BackPack" 55
DropItem "NewCell" 50
DropItem "NewCell" 75
DropItem "NewCell" 100
DropItem "HandGrenadeAmmo" 200 1
DropItem "MineAmmo" 123 1
DamageFactor 0.45
DamageFactor "ZombieDev", 0.0
DamageFactor "GeneralTracer", 0.0
DamageFactor "Legendary", 0.5
DamageFactor "LegendaryPlayer", 0.5
DamageFactor "PlayerNemesisPlasma", 0.5
DamageFactor "TrueLegendaryPlayer", 0.5
DamageFactor "TrueLegendaryDamage", 0.5
RadiusDamageFactor 0.25
SeeSound "superzombie/sight"
PainSound "superzombie/pain"
DeathSound "superzombie/death"
ActiveSound "superzombie/active"
obituary "%o was Annihilated by the Rainbow BFG10k Zombie."
Tag "\c[n1]R\c[n2]A\c[n3]I\c[n4]N\c[n5]B\c[n6]O\c[n7]W\c- \c[v2]BFG10K Zombie\c-"
+BOSS
+FLOORCLIP
+MISSILEMORE
+MISSILEEVENMORE
+QUICKTORETALIATE
var int user_missile;
States
{
  Spawn:
    TNT1 AA 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
	ZPK1 A 12 A_Look
	Loop
  See:
    TNT1 A 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
	ZPK1 AA 2 A_Chase
    TNT1 A 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
	ZPK1 BB 2 A_Chase
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
    TNT1 A 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
	ZPK1 CC 2 A_Chase
    TNT1 A 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
	ZPK1 DD 2 A_Chase
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Jump(32,"Rush","Teleport")
	Loop
  Rush:
	TNT1 A 0 A_SpawnItemEx("Rainbow10kZombieGhostA",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZPK1 A 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("Rainbow10kZombieGhostA",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZPK1 A 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("Rainbow10kZombieGhostA",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZPK1 A 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("Rainbow10kZombieGhostB",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZPK1 B 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("Rainbow10kZombieGhostB",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZPK1 B 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("Rainbow10kZombieGhostB",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZPK1 B 1 A_Chase
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("Rainbow10kZombieGhostC",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZPK1 C 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("Rainbow10kZombieGhostC",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZPK1 C 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("Rainbow10kZombieGhostC",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZPK1 C 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("Rainbow10kZombieGhostD",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZPK1 D 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("Rainbow10kZombieGhostD",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZPK1 D 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("Rainbow10kZombieGhostD",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZPK1 D 1 A_Chase
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Jump(64,"See","Teleport")
	Loop
  Teleport:
	ZPK1 A 1 Bright A_UnSetShootable
	TNT1 AAAAAA 0 A_SpawnItem("RainbowZombieLineSpawner")
	ZPK1 A 0 A_PlayWeaponSound("boss/teleport")
	ZPK1 AAAAAAAAAA 2 Bright A_FadeOut(0.1,0)
	ZPK1 A 2 Bright
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	ZPK1 A 1 Bright A_PlayWeaponSound("boss/teleport")
	TNT1 AAAAAA 0 A_SpawnItem("RainbowZombieLineSpawner")
	ZPK1 AAAAAAAAAA 2 Bright A_FadeIn(0.1)
	ZPK1 A 1 Bright A_SetShootable
	Goto See
  Missile:
	TNT1 A 0 A_PlayWeaponSound("weapons/charge15k")
	TNT1 A 0 A_SetUserVar("user_missile",0)
	ZPK1 E 22 A_FaceTarget
  MissileLoop:
	TNT1 A 0 A_JumpIf(user_missile > Random(25,50),"BFG10KEnd")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
    TNT1 A 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
	ZPK1 E 3 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("weapons/bfg15kfire")
    TNT1 A 0 A_Jump(256,"Color1","Color2","Color3","Color4","Color5","Color6","Color7","Color8")
  Color1:
	ZPK1 F 3 Bright A_CustomMissile("RainbowGeneral10k1",32,4,Random(-4,4))
	TNT1 A 0 A_MonsterRefire(64,"BFG10KEnd")
    Goto MissileLoop
  Color2:
	ZPK2 A 3 Bright A_CustomMissile("RainbowGeneral10k2",32,4,Random(-4,4))
	TNT1 A 0 A_MonsterRefire(64,"BFG10KEnd")
    Goto MissileLoop
  Color3:
	ZPK2 B 3 Bright A_CustomMissile("RainbowGeneral10k3",32,4,Random(-4,4))
	TNT1 A 0 A_MonsterRefire(64,"BFG10KEnd")
    Goto MissileLoop
  Color4:
	ZPK2 C 3 Bright A_CustomMissile("RainbowGeneral10k4",32,4,Random(-4,4))
	TNT1 A 0 A_MonsterRefire(64,"BFG10KEnd")
    Goto MissileLoop
  Color5:
	ZPK2 D 3 Bright A_CustomMissile("RainbowGeneral10k5",32,4,Random(-4,4))
	TNT1 A 0 A_MonsterRefire(64,"BFG10KEnd")
    Goto MissileLoop
  Color6:
	ZPK2 E 3 Bright A_CustomMissile("RainbowGeneral10k6",32,4,Random(-4,4))
	TNT1 A 0 A_MonsterRefire(64,"BFG10KEnd")
    Goto MissileLoop
  Color7:
	ZPK2 F 3 Bright A_CustomMissile("RainbowGeneral10k7",32,4,Random(-4,4))
	TNT1 A 0 A_MonsterRefire(64,"BFG10KEnd")
    Goto MissileLoop
  Color8:
	ZPK2 G 3 Bright A_CustomMissile("RainbowGeneral10k8",32,4,Random(-4,4))
	TNT1 A 0 A_MonsterRefire(64,"BFG10KEnd")
    Goto MissileLoop
  BFG10KEnd:
	ZPK1 E 20 A_PlaySound("weapons/bfg15kcooldown")     
	Goto See
  Pain:
	TNT1 A 0 A_Jump(128,"PainMissile")
	ZPK1 G 3
	ZPK1 G 3 A_Pain
	Goto See
  PainMissile:
	ZPK1 G 3
    ZPK1 G 3 A_Pain
	Goto Missile
  Death:
    TNT1 A 0 A_StopSound(6)
    ZPK1 H 5 A_Scream
    ZPK1 I 5 A_Fall
    ZPK1 J 5 A_SpawnItem("BodyCrash",0,0,0,0)
    ZPK1 K 5
    ZPK1 L -1
    Stop
  XDeath:
	ZPK1 A 0 A_PlaySound("gibbage/xsplat")
	ZPK1 O 3 A_SpawnItemEx("BlueGibbedGenerator",0,0,0,0,0,0,0,128,0)
	ZPK1 P 3 A_XScream
	ZPK1 Q 3 A_Fall
	ZPK1 RSTUV 3
	ZPK1 W -1
    Stop
  Raise:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	ZPK1 LKJIH 5
	Goto See
	}
}

//Green
Actor RainbowGeneral10k1 : FastProjectile
{
  Height 1
  Radius 1
  Speed 100 //200
  Projectile
  +THRUSPECIES
  +MTHRUSPECIES
  +NOTIMEFREEZE
  +NOEXTREMEDEATH
  +DONTHARMSPECIES
  +FORCERADIUSDMG
  Decal "Scorch"
  Renderstyle Add
  Alpha 0.85
  Scale 0.25
  deathsound "weapons/bfg95explode"
  Species "ZombieDeud"
  DamageType "GeneralTracer"
  States
  {
  Spawn:
    //TRA2 A 1 Bright
	CLBA H 1 Bright
	Loop
  Xdeath:
  Death:
    TNT1 A 0
	TNT1 A 0 A_SetScale(0.85)
	TNT1 A 0 A_FadeOut(0.25)
	TNT1 A 0 A_SpawnItemEx("BFGShockwave",0,0,0,0,0,0,0,128)
	TNT1 AA 0 A_SpawnItemEx("GreenParticleSpawner",0,0,0,0,0,0,0,128)
    TNT1 AAAA 0 A_CustomMissile("Kaboom13",0,0,random(0,360),2,random(0,360))
    BFE1 A 4 Bright A_Explode(100,180,0)
    BFE1 BCDEF 4 Bright
	Stop
	}
}

//Orange
ACTOR RainbowGeneral10k2 : RainbowGeneral10k1
{
  States
  {
  Spawn:
    //TRA3 A 1 Bright
	CLBA E 1 Bright
    Loop
  Xdeath:
  Death:
    TNT1 A 0
	TNT1 A 0 A_SetScale(0.85)
	TNT1 A 0 A_FadeOut(0.25)
	TNT1 A 0 A_SpawnItemEx("BFGShockwaveRed",0,0,0,0,0,0,0,128)
	TNT1 AA 0 A_SpawnItemEx("RedParticleSpawner",0,0,0,0,0,0,0,128)
    TNT1 AAAA 0 A_CustomMissile("Kaboom14",0,0,random(0,360),2,random(0,360))
    CFE1 A 4 Bright A_Explode(100,180,0)
    CFE1 BCDEF 4 Bright
	Stop
	}
}

//Yellow
ACTOR RainbowGeneral10k3 : RainbowGeneral10k1
{
  States
  {
  Spawn:
    //LRAC A 1 Bright
	CLBA F 1 Bright
    Loop
  Xdeath:
  Death:
    TNT1 A 0
	TNT1 A 0 A_SetScale(0.85)
	TNT1 A 0 A_FadeOut(0.25)
	TNT1 A 0 A_SpawnItemEx("BFGShockwaveGold",0,0,0,0,0,0,0,128)
	TNT1 AA 0 A_SpawnItemEx("LegendaryGoldParticleSpawner",0,0,0,0,0,0,0,128)
    TNT1 AAAA 0 A_CustomMissile("KaboomGold2",0,0,random(0,360),2,random(0,360))
    LFE1 A 4 Bright A_Explode(100,180,0)
    LFE1 BCDEF 4 Bright
	Stop
	}
}

//Blue
ACTOR RainbowGeneral10k4 : RainbowGeneral10k1
{
  States
  {
  Spawn:
    //BRAC A 1 Bright
	CLBA C 1 Bright
    Loop
  Xdeath:
  Death:
    TNT1 A 0
	TNT1 A 0 A_SetScale(0.85)
	TNT1 A 0 A_FadeOut(0.25)
	TNT1 A 0 A_SpawnItemEx("BFGShockwaveBlue",0,0,0,0,0,0,0,128)
	TNT1 AA 0 A_SpawnItemEx("LegendaryBlueParticleSpawner",0,0,0,0,0,0,0,128)
    TNT1 AAAA 0 A_CustomMissile("KaboomBlue2",0,0,random(0,360),2,random(0,360))
	TNT1 A 0 A_Jump(128,"Death2")
    TBE1 A 4 Bright A_Explode(100,180,0)
    TBE1 BCDEF 4 Bright
	Stop
  Death2:
    SFE3 A 4 Bright A_Explode(100,180,0)
    SFE3 BCDEF 4 Bright
	Stop
	}
}

//Red (or enraged)
ACTOR RainbowGeneral10k5 : RainbowGeneral10k1
{
  States
  {
  Spawn:
    //IRAC A 1 Bright
	CLBA B 1 Bright
    Loop
  Xdeath:
  Death:
    TNT1 A 0
	TNT1 A 0 A_SetScale(0.85)
	TNT1 A 0 A_FadeOut(0.25)
	TNT1 A 0 A_SpawnItemEx("BFGShockwaveRed",0,0,0,0,0,0,0,128)
	TNT1 AA 0 A_SpawnItemEx("EnragedParticleSpawner",0,0,0,0,0,0,0,128)
    TNT1 AAAA 0 A_CustomMissile("Kaboom14",0,0,random(0,360),2,random(0,360))
    EFE1 A 4 Bright A_Explode(100,180,0)
    EFE1 BCDEF 4 Bright
	Stop
	}
}

//Purple
ACTOR RainbowGeneral10k6 : RainbowGeneral10k1
{
  States
  {
  Spawn:
    //TPA3 A 1 Bright
	CLBA J 1 Bright
    Loop
  Xdeath:
  Death:
    TNT1 A 0
	TNT1 A 0 A_SetScale(0.85)
	TNT1 A 0 A_FadeOut(0.25)
	TNT1 A 0 A_SpawnItemEx("BFGShockwavePurple",0,0,0,0,0,0,0,128)
	TNT1 AA 0 A_SpawnItemEx("PurpleParticleSpawner",0,0,0,0,0,0,0,128)
    TNT1 AAAA 0 A_CustomMissile("PurpleKaboom2",0,0,random(0,360),2,random(0,360))
    BPE3 A 4 Bright A_Explode(100,180,0)
    BPE3 BCDEF 4 Bright
	Stop
	}
}

//Cyan
ACTOR RainbowGeneral10k7 : RainbowGeneral10k1
{
  States
  {
  Spawn:
    //TRC5 A 1 Bright
	CLBA I 1 Bright
    Loop
  Xdeath:
  Death:
    TNT1 A 0
	TNT1 A 0 A_SetScale(0.85)
	TNT1 A 0 A_FadeOut(0.25)
	TNT1 A 0 A_SpawnItemEx("T3DBFGShotShockwave",0,0,0,0,0,0,0,128)
	TNT1 A 0 A_SpawnItemEx("T3DBFG10kDeathParticleSpawner",0,0,0,0,0,0,0,128)
    //TNT1 AAAA 0 A_CustomMissile("PurpleKaboom2",0,0,random(0,360),2,random(0,360))
    BG3X A 4 Bright A_Explode(100,180,0)
    BG3X BCDEF 4 Bright
	Stop
	}
}

//White
ACTOR RainbowGeneral10k8 : RainbowGeneral10k1
{
  States
  {
  Spawn:
    //TRC5 A 1 Bright
	CLBA D 1 Bright
    Loop
  Xdeath:
  Death:
    TNT1 A 0
	TNT1 A 0 A_SetScale(0.85)
	TNT1 A 0 A_FadeOut(0.25)
	TNT1 A 0 A_SpawnItemEx("NemesisBFGShockwave",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
	TNT1 AA 0 A_SpawnItemEx("NemesisWhiteParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
	TNT1 AAA 0 A_CustomMissile("WhiteNemesisKaboomNoSound",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
    NFE3 A 4 Bright A_Explode(100,180,0)
    NFE3 BCDEF 4 Bright
	Stop
	}
}

ACTOR Rainbow10kZombieGhostA
{
  Scale 1.1
  Radius 20
  Height 56
  Speed 0
  Alpha 0.7
  PROJECTILE
  RENDERSTYLE Translucent
  +CLIENTSIDEONLY
  +NOINTERACTION
  +NOTIMEFREEZE
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1 A_JumpIf(ACS_ExecuteWithResult(304) == 1,"NULL")
    ZPK1 A 2 A_FadeOut(0.10)
    Wait
    }
}

ACTOR Rainbow10kZombieGhostB : Rainbow10kZombieGhostA
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1 A_JumpIf(ACS_ExecuteWithResult(304) == 1,"NULL")
    ZPK1 B 2 A_FadeOut(0.10)
    Wait
    }
}

ACTOR Rainbow10kZombieGhostC : Rainbow10kZombieGhostA
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1 A_JumpIf(ACS_ExecuteWithResult(304) == 1,"NULL")
    ZPK1 C 2 A_FadeOut(0.10)
    Wait
    }
}

ACTOR Rainbow10kZombieGhostD : Rainbow10kZombieGhostA
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1 A_JumpIf(ACS_ExecuteWithResult(304) == 1,"NULL")
    ZPK1 D 2 A_FadeOut(0.10)
    Wait
    }
}

ACTOR RainbowZombieLineSpawner : HemLineSpawner
{
States
{
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1,"NULL")
	TNT1 AAAAA 0 A_SpawnItemEx("RainbowPowerLine",random(32,-32),random(32,-32),random(8,48),0,0,random(1,4),0,128,0) 	
	TNT1 A 1 A_SpawnItemEx("RainbowPowerLine",random(32,-32),random(32,-32),random(8,48),0,0,random(1,4),0,128,0) 
    Stop 
	}
}