ACTOR Plamexis : GenericBoss
{
  FloatSpeed 10
  Speed 5
  Health 8000
  +NORADIUSDMG
  +QUICKTORETALIATE
  +DONTMORPH
  +NOTIMEFREEZE
  +NOTELEFRAG
  +BOSSDEATH
  Painchance 15
  Species "Cybers"
  DamageFactor "PlayerFireSword", 0.0
  DamageFactor "PDTBFG", 0.3
  DamageFactor "PDTBFGTracer", 0.3
  DamageFactor "Cyber10K", 0.0
  DamageFactor "Legendary", 0.0
  DamageFactor "LegendaryPlayer", 0.0
  DamageFactor "LegendaryGuru", 0.0
  DamageFactor "LegendaryGuruPlayer", 0.3
  DamageFactor "LegendaryPlayer", 0.3
  DamageFactor "BFGSplash", 0.25
  DamageFactor "BFGSpray", 0.25
  DamageFactor "PlayerDevBall", 0.020
  DamageFactor "PlayerDevBall2", 0.020
  DamageFactor "DBFG", 0.015
  DamageFactor "DBFG10K", 0.015
  DamageFactor "DBFG10K2", 0.65
  DamageFactor "PlayerDBFG", 0.015
  DamageFactor "PlayerDBFG2", 0.65
  DamageFactor "PlayerDBFG10K", 0.015
  DamageFactor "PlayerDBFG10K2", 0.65
  DamageFactor "UltimateLegendary", 0.0
  DamageFactor "Extreme", 0.0
  DamageFactor "PyroShot", 0.0
  DamageFactor "PlayerPyro", 0.0
  DamageFactor "PDTPuff", 0.0
  DamageFactor "Ice", 0.0
  DamageFactor "FreezerBurn", 0.0
  DamageFactor "SuperWeapon", 0.0
  DamageFactor "DemolisherEx", 0.0
  DamageFactor "DarkDemoEx", 0.0
  DamageFactor "CerChainguns", 0.0
  DamageFactor "CerEnergyBall", 0.0
  DamageFactor "LegMind", 0.0
  DamageFactor "BeheComet", 0.0
  DamageFactor "NobleComet", 0.0
  DamageFactor "CacoComet", 0.0
  DamageFactor "CadaverRocket", 0.0
  DamageFactor "HellComet", 0.0
  DamageFactor "Legendary1", 0.0
  DamageFactor 0.5
  DropItem "BossLifeEssence", 256
  DropItem "BossArmorBonusMax", 256
  DropItem "HellfireUltrasphere", 256, 1
  DropItem "SkullOfPower", 256
  DropItem "DemonicChalice", 256
  DropItem "BigGas", 256, 100
  DropItem "Welder", 256, 1
  DropItem "PyroCannon", 256, 1
  Obituary "%o was irradiated by Plamexis."
  Tag "\c[l4]Plamexis\c-"
  var int user_music;
  var int user_missile;
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("Disable2hu") == 1, "Remove")
  SpawnLoop:
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_Gravity
	TNT1 A 0 A_ChangeFlag("NODAMAGE",1)
	TNT1 A 0 A_ChangeFlag("FLOAT",0)
	TNT1 A 0 A_ChangeFlag("NOPAIN",1)
    UNYU UVW 4 A_LookEx(LOF_FULLVOLSEESOUND,0,0,0,360,"See2")
	Loop
  See2:
    UNYU TSRQ 4
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 A 0 A_NoGravity
	TNT1 A 0 A_ChangeFlag("NODAMAGE",0)
	TNT1 A 0 A_ChangeFlag("FLOAT",1)
	TNT1 A 0 A_ChangeFlag("NOPAIN",0)
    Goto See
  Idle:
    UNYU AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMM 1 A_Look
    Loop
  Remove:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("Cyberdemon",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLEARCALLERTID|SXF_SETMASTER|SXF_TRANSFERPOINTERS|SXF_TRANSFERAMBUSHFLAG)
	TNT1 A 0 A_ChangeFlag("COUNTKILL", FALSE)
	TNT1 A 0
	Stop
  See:
    UNYU AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMM 1 A_Chase
    Loop
  Pain:
    UNYU N 10 A_Pain
    Goto See
  Melee:
  Missile:
    TNT1 A 0 A_Jump(200,"Orbs1","Orbs2","Laser")
    TNT1 A 0 A_Jump(256,"BigOrb","Pyrocannon","FireRain")
    Goto See
  Orbs1:
    UNY2 ABCDE 5
	TNT1 A 0 A_SetUserVar("user_missile",0)
  Orbs1Loop:
	TNT1 A 0 A_JumpIf(user_missile >= 14,"OrbsEnd")	 
	TNT1 A 0 A_SetUserVar("user_missile",user_missile+1)
	TNT1 A 0 A_Playsound("remishot",0)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(-20,20),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(-20,20),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(70,110),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(70,110),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(-110,-70),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(-110,-70),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(160,200),CMF_ABSOLUTEANGLE)
	UNY2 F 8 A_CustomMissile("StrongUtsuhoOrb",30,0,random(160,200),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_Playsound("remishot",0)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(25,65),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(25,65),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(-65,-25),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(-65,-25),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(-155,-115),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(-155,-115),CMF_ABSOLUTEANGLE)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(115,155),CMF_ABSOLUTEANGLE)
	UNY2 F 5 A_CustomMissile("StrongUtsuhoOrb",30,0,random(115,155),CMF_ABSOLUTEANGLE)
	Loop
  OrbsEnd:
	UNY2 EDCBA 5
	Goto See
  Orbs2:
    UNY2 ABCDE 5
	TNT1 A 0 A_SetUserVar("user_missile",0)
  Orbs2Loop:
	TNT1 A 0 A_JumpIf(user_missile >= 22,"OrbsEnd")	 
	TNT1 A 0 A_SetUserVar("user_missile",user_missile+1)
	TNT1 A 0 A_Playsound("remishot",0)
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(-20,20))
	TNT1 A 0 A_CustomMissile("StrongUtsuhoOrb",30,0,random(-20,20))
	UNY2 F 4 A_CustomMissile("StrongUtsuhoOrb",30,0,random(-20,20))
	Loop
  Laser:
    UNY2 ABCDE 7
	TNT1 A 0 A_PlaySound("Plamexis/Ding",1)
	UNY2 F 25 A_CustomMissile("PlamexisLaser",30)
	TNT1 A 0 A_PlaySound("Plamexis/Ding",1)
	UNY2 F 25 A_CustomMissile("PlamexisLaser",30)
	TNT1 A 0 A_PlaySound("Plamexis/Ding",1)
	UNY2 F 25 A_CustomMissile("PlamexisLaser",30)
	UNY2 EDCBA 5
	Goto See
  BigOrb:
    UNY3 ABC 5
	TNT1 A 0 A_Stop
	TNT1 A 0 ACS_NamedExecuteAlways("PlamexisWarning")
	TNT1 A 0 A_Playsound("Utsuho/alert",7,1,0,ATTN_NONE)
	TNT1 A 0 A_PlaySound("Arcradimus/BFGCharge")
	TNT1 A 0 A_ChangeFlag("NOPAIN",1)
	UNY3 DEFGHIJ 5
	TNT1 A 0 A_SpawnItemEx("ArcradimusBallCharging1",0,0,92)
	UNY3 EFGHIJ 5
	TNT1 A 0 A_SpawnItemEx("ArcradimusBallCharging2",0,0,92)
	UNY3 EFGHIJ 5
	TNT1 A 0 A_SpawnItemEx("ArcradimusBallCharging3",0,0,92)
	UNY3 EFGHIJ 5
	TNT1 A 0 A_SpawnItemEx("ArcradimusBallCharging4",0,0,92)
	UNY3 EFGHIJ 5
	TNT1 A 0 A_SpawnItemEx("ArcradimusBallCharging5",0,0,92)
	UNY3 EFGHIJ 5
	TNT1 A 0 A_SpawnItemEx("ArcradimusBallCharging5",0,0,92)
	UNY3 EFGHIJ 5
	TNT1 A 0 A_CustomMissile("ArcradimusBall",92,0,0,0)
	UNY3 EFGHIJ 5
	TNT1 A 0 A_ChangeFlag("NOPAIN",0)
	UNY3 CBA 5
	Goto See
  Pyrocannon:
	UNY3 ABC 5
	TNT1 A 0 A_Stop
	TNT1 A 0 ACS_NamedExecuteAlways("PlamexisWarning")
	TNT1 A 0 A_Playsound("Utsuho/alert",7,1,0,ATTN_NONE)
	TNT1 A 0 A_ChangeFlag("NOPAIN",1)
	UNY3 DEFGHIJ 5 A_SpawnItemEx("HFCyberFlameSpawner")
	TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_PlaySound("HFCyb/laugh2")	
	TNT1 A 0 A_SpawnItemEx("PlamHFCyberPyrocannon",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	UNY3 EFGHIJEFGHIJ 5 A_SpawnItemEx("HFCyberFlameSpawner")
	TNT1 A 0 A_PlaySound("weapons/PCNNF",1)
	TNT1 A 0 A_CustomMissile("PyroShot",58,-26,0)
	UNY3 EFGHIJ 5 A_SpawnItemEx("HFCyberFlameSpawner")
	TNT1 A 0 A_ChangeFlag("NOPAIN",0)
	Goto See
  FireRain:
	UNY3 ABC 5
	TNT1 A 0 A_Stop
	TNT1 A 0 ACS_NamedExecuteAlways("PlamexisWarning")
	TNT1 A 0 A_Playsound("Utsuho/alert",7,1,0,ATTN_NONE)
	TNT1 A 0 A_ChangeFlag("NOPAIN",1)
	UNY3 DEFGHIJEFGHIJ 5  
	TNT1 A 0 A_SetUserVar("user_missile",0)
  FireRainLoop:
	TNT1 A 0 A_JumpIf(user_missile >= 8,"FireRainEnd")	 
	TNT1 A 0 A_SetUserVar("user_missile",user_missile+1)
	UNY3 EFGHIJ 5 A_SpawnItemEx("PlamexisFireRainSpawner",random(-1500,1500),random(-1500,1500),0,0,0,0,SXF_NOCHECKPOSITION)
	Loop
  FireRainEnd:
	TNT1 A 0 A_ChangeFlag("NOPAIN",0)
	UNY3 EFGHIJEFGHIJ 5
	Goto See
  Death:
    UNYU N 3
    UNYU OP 15
	UNYU A 0 A_NoBlocking
    UNYU A 0 A_Scream
	TNT1 A 0 Bright A_Mushroom("HFCyberMushroomFireballs2",12)
	TNT1 A 0 A_SpawnItemEx("HFCyberPyroBoom2")
	TNT1 A 0 A_SpawnItemEx("BossDeathExplode",0,0,32)
	TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("2huBossDeathFlame",0,0,20,random(-3,3),random(-3,3),random(-3,3))
	TNT1 AAAAAAAAAAA 1 A_SpawnItemEx("2huBossDeathFlame3",0,0,random(5,55),random(-15,15),random(-15,15),random(-15,30))
	TNT1 A 30
	TNT1 A 1 A_KillMaster
    Stop
  }
}

ACTOR StrongUtsuhoOrb : GenericSuperOrb
{
  Speed 40
  damage 6
  SeeSound " "
  States
  {
  Spawn:
    CLBB F 1 Bright
    Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_Explode(40,100)
	TNT1 A 0 A_SpawnItem("YellowProjExplodeLarge")
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("YellowProjParticleSuperLarge",0,0,0,frandom(-4,4),frandom(-4,4),frandom(-4,4),random(0,359))
    CLBB F 1 Bright A_FadeOut(0.2)
    Goto Death+3
  }
}

ACTOR PlamexisFireRainSpawner : RainCometSpawner
{
//+NOTIMEFREEZE
Speed 20
States
{
Spawn:
	TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_Wander
	CMRA ABCDEFGHIJABCDEFGHIJ 2 Bright A_Wander
    TNT1 A 0 A_CustomMissile("PlamexisFireRain",-18,random(0,20),random(0,360),2)
	CMRA AAABBBCCC 1 Bright A_Wander
    TNT1 A 0 A_CustomMissile("PlamexisFireRain",-18,random(0,20),random(0,360),2)
	CMRA EEEFFFGGG 1 Bright A_Wander
    TNT1 A 0 A_CustomMissile("PlamexisFireRain",-18,random(0,20),random(0,360),2)
	CMRA HHHIIIJJJ 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("PlamexisFireRain",-18,random(0,20),random(0,360),2)
FadeOut:
	CMRA ABCDEFGHIJ 2 Bright A_FadeOut(0.06)
    Goto FadeOut
	}
}

ACTOR PlamexisFireRain : GenericWeakOrb
{
  Speed 10
  -FLOAT
  -NOGRAVITY
  +SPAWNCEILING
  +MTHRUSPECIES
  +FORCERADIUSDMG
  DeathSound "FANTASYSEAL"
  Scale 0.4
  States 
  {
  Spawn:
    CLBB F 1 Bright A_SpawnItemEx("PlamexisFireRainTrail",0,0,0,frandom(-4,4),frandom(-4,4),frandom(0,10))
    Loop
  Death:
	TNT1 A 0 A_PlaySound("Plamexis/Laser",7)
    PLAL AB 3 Bright
	PLAL CDEF 3 Bright A_Explode(60,200)
	PLAL GHIJ 3 Bright A_Explode(60,120)
	PLAL KL 3 Bright
    Stop
	}
}

ACTOR PlamexisFireRainTrail : BaseProjectileEffect
{
  Scale 0.1
  States
  {
  Spawn:
	CLBA F 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(ScaleX-0.002)
    Loop
  }
}

ACTOR PlamexisLaser : FastProjectile
{
  Radius 8
  Speed 100
  Height 8
  Damage 5
  Scale 0.6
  +RIPPER
  +FORCERADIUSDMG
  SeeSound "Plamexis/LaserFire"
  MissileType "PlamexisLaserTrail"
  MissileHeight 8
  Damagetype "Touhou"
  States
  {
  Spawn:
	//TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("YellowProjParticleSuperLarge2",0,0,0,frandom(0,6),frandom(-6,6),frandom(-6,6))
	TNT1 A 0 NoDelay A_SpawnItemEx("GuruChunkSpark",0,0,0,3)
  SpawnLoop:
    TNT1 A 1 A_Explode(30,200)
    Loop
  Death:
	TNT1 A 0 A_Explode(450,200)
    TNT1 AAAAAAAAAAAAAAA 1 A_SpawnItemEx("GuruChunkSpark",0,0,0,frandom(-6,6),frandom(-6,6),frandom(-6,6))
    Stop
  }
}

ACTOR PlamexisLaserTrail : BaseProjectileEffect
{
  Scale 1.0
  States
  {
  Spawn:
    CLBA FFFFFFFFFFFFFFFFF 1 Bright
  SpawnLoop:
    TNT1 A 0 A_SetScale(ScaleX-0.05)
    CLBA K 1 A_FadeOut(0.1)
    Loop
  }
}

ACTOR PlamHFCyberPyrocannon
{
  +NOINTERACTION
  +CLIENTSIDEONLY
  Renderstyle Translucent
  Alpha 0.7
  States
  {
  Spawn:
	HFCY EEEEEEEEEEEE 5 A_FaceTarget
	HFCY F 5 Bright
	HFCY E 1 A_FadeOut(0.1)
	Wait
	}
}