ACTOR RainbowExpMinigunner : RMExplosiveMinigunner
{
//Creator: High Councilor
//Origin: Nexus Infinity
//Sprite: ZMN1
//Title: "Rainbow Explosive Minigunner"
Health 1000
Speed 12
painchance 20
Mass 200
Scale 1.1
Bloodcolor "Blue"
Species "ZombieDeud"
PainChance "GeneralTracer", 0
//DropItem "CommanderExpMinigunUpgrade" 5 1 //Why?
DropItem "Explosive Minigun" 200 1
DropItem "PortableMedkit" 190
DropItem "ArmorPlate" 190
DropItem "BackPack" 55
DropItem "BulletBox" 50
DropItem "BulletMag" 75
DropItem "BulletMag" 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 Exploded by the Rainbow Explosive Minigunner."
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]Explosive Minigunner\c-"
+BOSS
+FLOORCLIP
+MISSILEMORE
+MISSILEEVENMORE
+QUICKTORETALIATE
var int user_missile;
States
{
  Spawn:
    TNT1 AA 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
	ZMN1 A 10 A_Look
	TNT1 AA 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
	ZMN1 "Z" 10 A_Look
	Loop
  See:
    TNT1 A 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
	ZMN1 AA 2 A_Chase
    TNT1 A 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
	ZMN1 BB 2 A_Chase
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
    TNT1 A 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
	ZMN1 CC 2 A_Chase
    TNT1 A 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
	ZMN1 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("RainbowExpMinigunnerGhostA",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZMN1 A 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("RainbowExpMinigunnerGhostA",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZMN1 A 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("RainbowExpMinigunnerGhostA",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZMN1 A 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("RainbowExpMinigunnerGhostB",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZMN1 B 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("RainbowExpMinigunnerGhostB",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZMN1 B 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("RainbowExpMinigunnerGhostB",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZMN1 B 1 A_Chase
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("RainbowExpMinigunnerGhostC",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZMN1 C 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("RainbowExpMinigunnerGhostC",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZMN1 C 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("RainbowExpMinigunnerGhostC",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZMN1 C 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("RainbowExpMinigunnerGhostD",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZMN1 D 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("RainbowExpMinigunnerGhostD",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZMN1 D 1 A_Chase
	TNT1 A 0 A_SpawnItemEx("RainbowExpMinigunnerGhostD",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	ZMN1 D 1 A_Chase
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Jump(64,"See","Teleport")
	Loop
  Teleport:
	ZMN1 A 1 Bright A_UnSetShootable
	TNT1 AAAAAA 0 A_SpawnItem("RainbowZombieLineSpawner")
	ZMN1 A 0 A_PlayWeaponSound("boss/teleport")
	ZMN1 AAAAAAAAAA 2 Bright A_FadeOut(0.1,0)
	ZMN1 A 2 Bright
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	ZMN1 A 1 Bright A_PlayWeaponSound("boss/teleport")
	TNT1 AAAAAA 0 A_SpawnItem("RainbowZombieLineSpawner")
	ZMN1 AAAAAAAAAA 2 Bright A_FadeIn(0.1)
	ZMN1 A 1 Bright A_SetShootable
	Goto See
  Missile:
    TNT1 A 0 A_PlaySound("weapons/expmgunspinstart")
	TNT1 A 0 A_SetUserVar("user_missile",0)
	ZMN1 E 25 A_FaceTarget
  MissileLoop:
	TNT1 A 0 A_JumpIf(user_missile > Random(50,100),"See")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
    TNT1 A 0 A_SpawnItem("RainbowZombieLineSpawner",0,0,0,0)
    ZMN1 E 2 Bright A_PlaySoundEx("weapons/expmgunspin","Voice")
	TNT1 A 0 A_PlaySound("sentient/fire")
    TNT1 A 0 A_Jump(256,"Color1","Color2","Color3","Color4","Color5","Color6","Color7","Color8")
  Color1:
    TNT1 A 0 A_SpawnItemEx("OrangeShellCasing",12,6,28,Random(2,6),0,Random(1,3),Random(-80,-90),128)
	ZMN2 F 2 Bright A_CustomMissile("RainbowMExplosiveTracer1",32,4,frandom(-0.5,0.5),CMF_OFFSETPITCH,frandom(-0.5,0.5))
	//TNT1 A 0 A_CPosAttack
	TNT1 A 0 A_MonsterRefire(64,"See")
    Goto MissileEnd
  Color2:
    TNT1 A 0 A_SpawnItemEx("YellowShellCasing",12,6,28,Random(2,6),0,Random(1,3),Random(-80,-90),128)
	ZMN2 A 2 Bright A_CustomMissile("RainbowMExplosiveTracer2",32,4,frandom(-0.5,0.5),CMF_OFFSETPITCH,frandom(-0.5,0.5))
	//TNT1 A 0 A_CPosAttack
	TNT1 A 0 A_MonsterRefire(64,"See")
    Goto MissileEnd
  Color3:
    TNT1 A 0 A_SpawnItemEx("CorruptShellCasing",12,6,28,Random(2,6),0,Random(1,3),Random(-80,-90),128)
	ZMN2 B 2 Bright A_CustomMissile("RainbowMExplosiveTracer3",32,4,frandom(-0.5,0.5),CMF_OFFSETPITCH,frandom(-0.5,0.5))
	//TNT1 A 0 A_CPosAttack
	TNT1 A 0 A_MonsterRefire(64,"See")
    Goto MissileEnd
  Color4:
    TNT1 A 0 A_SpawnItemEx("RedShellCasing",12,6,28,Random(2,6),0,Random(1,3),Random(-80,-90),128)
	ZMN2 C 2 Bright A_CustomMissile("RainbowMExplosiveTracer4",32,4,frandom(-0.5,0.5),CMF_OFFSETPITCH,frandom(-0.5,0.5))
	//TNT1 A 0 A_CPosAttack
	TNT1 A 0 A_MonsterRefire(64,"See")
    Goto MissileEnd
  Color5:
    TNT1 A 0 A_SpawnItemEx("BlueShellCasing",12,6,28,Random(2,6),0,Random(1,3),Random(-80,-90),128)
	ZMN2 D 2 Bright A_CustomMissile("RainbowMExplosiveTracer5",32,4,frandom(-0.5,0.5),CMF_OFFSETPITCH,frandom(-0.5,0.5))
	//TNT1 A 0 A_CPosAttack
	TNT1 A 0 A_MonsterRefire(64,"See")
    Goto MissileEnd
  Color6:
    TNT1 A 0 A_SpawnItemEx("PurpleShellCasing",12,6,28,Random(2,6),0,Random(1,3),Random(-80,-90),128)
	ZMN2 E 2 Bright A_CustomMissile("RainbowMExplosiveTracer6",32,4,frandom(-0.5,0.5),CMF_OFFSETPITCH,frandom(-0.5,0.5))
	//TNT1 A 0 A_CPosAttack
	TNT1 A 0 A_MonsterRefire(64,"See")
    Goto MissileEnd
  Color7:
    TNT1 A 0 A_SpawnItemEx("CorruptShellCasing",12,6,28,Random(2,6),0,Random(1,3),Random(-80,-90),128)
	ZMN2 E 2 Bright A_CustomMissile("RainbowMExplosiveTracer7",32,4,frandom(-0.5,0.5),CMF_OFFSETPITCH,frandom(-0.5,0.5))
	//TNT1 A 0 A_CPosAttack
	TNT1 A 0 A_MonsterRefire(64,"See")
    Goto MissileEnd
  Color8:
    TNT1 A 0 A_SpawnItemEx("NemesisShellCasing",12,6,28,Random(2,6),0,Random(1,3),Random(-80,-90),128)
	ZMN2 E 2 Bright A_CustomMissile("RainbowMExplosiveTracer8",32,4,frandom(-0.5,0.5),CMF_OFFSETPITCH,frandom(-0.5,0.5))
	//TNT1 A 0 A_CPosAttack
	TNT1 A 0 A_MonsterRefire(64,"See")
    Goto MissileEnd
  MissileEnd:
	TNT1 A 0 A_PlaySound("weapons/expmgunspinstop")
	TNT1 A 0 A_StopSoundEx("Voice")
    TNT1 A 0 A_CPosRefire
    Goto MissileLoop
  Pain:
	TNT1 A 0 A_Jump(128,"PainMissile")
	ZMN1 G 3
	ZMN1 G 3 A_Pain
	Goto See
  PainMissile:
	ZMN1 G 3
    ZMN1 G 3 A_Pain
	Goto Missile
  Death:
    TNT1 A 0 A_StopSoundEx("Voice")
    ZMN1 H 5
    ZMN1 I 5 A_Scream 
    ZMN1 J 5 A_Fall
    ZMN1 K 5 A_SpawnItem("BodyCrash",0,0,0,0)
    ZMN1 LM 5
    ZMN1 N -1
    Stop
  XDeath:
	ZMN1 A 0 A_PlaySound("gibbage/xsplat")
	ZMN1 O 3 A_SpawnItemEx("BlueGibbedGenerator",0,0,0,0,0,0,0,128,0)
	ZMN1 P 3 A_XScream
	ZMN1 Q 3 A_Fall
	ZMN1 RSTUV 3
	ZMN1 W -1
    Stop
  Raise:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	ZMN1 LKJIH 5
	Goto See
	}
}


//Orange
ACTOR RainbowMExplosiveTracer1 : FastProjectile
{
  Height 1
  Radius 1
  Speed 250
  Scale 0.2 //0.8
  Damage 0
  RenderStyle Add
  Alpha 0.85
  DeathSound "sentient/chaingunex"
  DamageType "GeneralTracer"
  Species "ZombieDeud"
  Decal DoomImpScorch
  +FORCERADIUSDMG
  +RANDOMIZE
  +FORCEXYBILLBOARD
  +NOTIMEFREEZE
  States
  {
  Spawn:
	CLBA E 1 Bright
    Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_SetScale(0.8)
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItem("SentientExplosiveEffect")
    MISL B 4 Bright A_Explode(Random(3,6)*5,72)
    MISL CD 3 Bright
    Stop
    }
}

//Yellow
ACTOR RainbowMExplosiveTracer2 : RainbowMExplosiveTracer1
{
  States
  {
  Spawn:
	CLBA F 1 Bright
    Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_SetScale(0.8)
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItem("LegSentientExplosiveEffect")
    LISL B 4 Bright A_Explode(Random(6,9)*5,72)
    LISL CD 3 Bright
    Stop
    }
}

//Green
ACTOR RainbowMExplosiveTracer3 : RainbowMExplosiveTracer1
{
  States
  {
  Spawn:
	CLBA H 1 Bright
	Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_SetScale(0.8)
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItem("GreenSentientExplosiveEffect")
    MECF C 4 Bright A_Explode(Random(6,9)*5,72)
    MECF DE 3 Bright
    Stop
    }
}

//Red
ACTOR RainbowMExplosiveTracer4 : RainbowMExplosiveTracer1
{
  States
  {
  Spawn:
	CLBA B 1 Bright
    Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_SetScale(0.8)
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItem("RedSentientExplosiveEffect")
    EROC C 4 Bright A_Explode(Random(6,9)*5,72)
    EROC DE 3 Bright 
    Stop
    }
}

//Blue
ACTOR RainbowMExplosiveTracer5 : RainbowMExplosiveTracer1
{
  States
  {
  Spawn:
	CLBA C 1 Bright
    Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_SetScale(0.8)
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItem("TrueLegendaryExplosiveEffect")
    BISL B 4 Bright A_Explode(Random(6,9)*5,72)
    BISL CD 3 Bright
    Stop
    }
}

//Purple
ACTOR RainbowMExplosiveTracer6 : RainbowMExplosiveTracer1
{
  States
  {
  Spawn:
	CLBA J 1 Bright
    Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_SetScale(0.8)
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItem("CommanderExplosiveEffect")
    CISL B 4 Bright A_Explode(Random(6,9)*5,72)
    CISL CD 3 Bright
    Stop
    }
}

//Cyan
ACTOR RainbowMExplosiveTracer7 : RainbowMExplosiveTracer1
{
  States
  {
  Spawn:
	CLBA I 1 Bright
    Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_SetScale(0.8)
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItem("BlueSentientExplosiveEffect")
    BCRC C 4 Bright A_Explode(Random(3,6)*5,72)
    BCRC DE 3 Bright
    Stop
    }
}

//White
ACTOR RainbowMExplosiveTracer8 : RainbowMExplosiveTracer1
{
  States
  {
  Spawn:
	CLBA D 1 Bright
    Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_SetScale(0.8)
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItem("WhiteSentientExplosiveEffect")
    NROC C 4 Bright A_Explode(Random(6,9)*5,72)
    NROC DE 3 Bright
    Stop
    }
}

ACTOR GreenSentientExplosiveEffect
{
+CLIENTSIDEONLY
+NOGRAVITY
+NOBLOCKMAP
States
{
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1,"NULL")
	TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner",0,0,0,0,0,0,0,128)
    TNT1 AAA 0 A_CustomMissile("Kaboom6",0,0,random(0,360),2,random(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX6",0,0,random(0,360),2,random(0,360))
	TNT1 A 1
	Stop
	}
}

ACTOR WhiteSentientExplosiveEffect
{
+CLIENTSIDEONLY
+NOGRAVITY
+NOBLOCKMAP
States
{
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1,"NULL")
	TNT1 A 0 A_SpawnItemEx("NemesisWhiteParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    TNT1 AAA 0 A_CustomMissile("WhiteNemesisKaboom4",0,0,random(0,360),2,random(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX6",0,0,random(0,360),2,random(0,360))
	TNT1 A 1
	Stop
	}
}

ACTOR RedSentientExplosiveEffect
{
+CLIENTSIDEONLY
+NOGRAVITY
+NOBLOCKMAP
States
{
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1,"NULL")
	TNT1 A 0 A_SpawnItemEx("EnragedParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    TNT1 AAA 0 A_CustomMissile("EKaboomLN2",0,0,random(0,360),2,random(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX6",0,0,random(0,360),2,random(0,360))
	TNT1 A 1
	Stop
	}
}

ACTOR RainbowExpMinigunnerGhostA
{
  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")
    ZMN1 A 2 A_FadeOut(0.10)
    Wait
    }
}

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

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

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