Actor ChaosSoul 17555
{
//$Category Monsters/DUST
//$Sprite CHOSA1
//$Title "Chaos Soul"
  Monster
  Health 200
  Height 56
  Radius 16
  Mass 50
  Speed 12
  FloatSpeed 12
  Damage (15)
  PainChance "SoulToxic", 0
  PainChance 100
  BloodColor "Green"
  +FLOAT
  +NOGRAVITY
  +MISSILEMORE
  +DONTHARMCLASS
  +DONTHARMSPECIES
  +DONTFALL
  +NOICEDEATH
  Species "EleSouls"
  Damagetype "Souls"
  DamageFactor "CurseComet", 0.0
  DamageFactor "HelementalComet", 0.0
  DamageFactor "SoulToxic", 0.0
  DamageFactor "BombBreath", 0.0
  DropItem "LifeEssence" 128
  DropItem "ArmorBonusMax" 128
  DropItem "DustMana" 70
  SeeSound "ChaosSoul/Sight"
  AttackSound "ChaosSoul/Sight"
  PainSound "ChaosSoul/pain"
  DeathSound "ChaosSoul/death"
  Obituary "%o was driven insane by a Chaos Soul."
  HitObituary "%o's head was taken by a Chaos Soul."
  Tag "\c[q9]Chaos Soul\c-"
  var int user_phase;
  States
  {
  Spawn:
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
	CHOS A 2 Bright A_Look
	Loop
  See:
    TNT1 A 0 A_SetTranslucent(1)
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
	CHOS A 2 Bright A_Chase
	TNT1 A 0 A_Jump(10,"Phase")
	Loop	
  Phase:
    TNT1 A 0 A_PlaySound("phaseimp/teleport")
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 A_FaceTarget
	TNT1 AA 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
    CHOS A 1 A_SetTranslucent(0.75)
	TNT1 AA 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
    CHOS A 1 A_SetTranslucent(0.50)
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
	TNT1 AA 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
    CHOS A 1 A_SetTranslucent(0.25)
	TNT1 AA 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
    CHOS A 1 A_SetTranslucent(0)
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
	TNT1 AA 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
	TNT1 A 0 A_SetUserVar("user_phase",0)
	Goto Phased
  Phased:
    TNT1 A 0 A_JumpIf(user_phase >= 30,"Phased2")
	TNT1 A 0 A_SetUserVar("user_phase",user_phase+1)
	TNT1 A 0 A_ExtChase(0,0)
	CHOS A 1 A_ExtChase(0,0)
	Loop
  Phased2:
	TNT1 A 0 A_Chase(0,0)
	CHOS A 1 A_Chase(0,0)
	TNT1 A 0 A_Jump(30,"Unphase")
	Loop
  UnPhase:
    TNT1 A 0 A_PlaySound("phaseimp/teleport")
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
	TNT1 AA 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
    CHOS A 1 A_SetTranslucent(0)
	TNT1 AA 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
    CHOS A 1 A_SetTranslucent(0.25)
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
	TNT1 AA 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
    CHOS A 1 A_SetTranslucent(0.50)
	TNT1 AA 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
    CHOS A 1 A_SetTranslucent(0.75)
	TNT1 AA 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
	TNT1 A 0 A_SetTranslucent(1)
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 A_FaceTarget
	TNT1 A 0 A_JumpIfTargetInLOS("Missile")
    Goto See
  Missile:
	TNT1 A 0 A_JumpIfHealthLower(50,"Kamikaze")
	TNT1 A 0 A_Jump(80,"Lightning")
  Normal:
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	CHOS A 1 Bright A_SpawnItemEx("ChaosSoulSmokeSpawner")
	CHOS B 1 Bright A_SkullAttack(40)
	CHOS BBBBBBBBBBBBBBBBBBBBBBBBB 2 Bright A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS B 0 Thing_Stop(0)
	Goto See
  Lightning:
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS B 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
	CHOS B 2 Bright A_CustomMissile("ChaosLightning",10,0,0)
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS B 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
	CHOS B 2 Bright A_CustomMissile("ChaosLightning",10,0,0)
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS A 2 Bright A_FaceTarget
	Goto See
  Kamikaze:
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS B 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS B 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS B 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS B 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS B 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner2")
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
    CHOS B 2 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("ChaosSoulKamikaze",0)
	TNT1 A 1 A_ChangeFlag(COUNTKILL,0)
	Stop
  Pain:
    TNT1 A 0 A_SetTranslucent(1)
	TNT1 A 0 A_Stop
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
	CHOS C 2 Bright
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
	CHOS C 2 Bright A_Pain
	Goto See
  Death:
    TNT1 A 0
    TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
	CHOS C 4 Bright A_NoGravity
	CHOS D 4 Bright A_Scream
    TNT1 AA 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128) 
	TNT1 AAAA 0 A_CustomMissile("SmokeFX2", 15, 0, random(0,360), 2, random(0,360))
	TNT1 A 0 A_CustomMissile("Chaos10KEx", 15, 0, random(0,360), 2, random(0,360))
	TNT1 AAAA 0 A_SpawnItemEx("Debris",0,0,15,Random(4,-4),Random(4,-4),Random(4,8),0,128)
	CHOS E 3 Bright
	CHOS F 2 Bright A_NoBlocking
	CHOS G 4
	CHOS H 4 
    Stop
	}
}

ACTOR ChaosSoulSmokeSpawner : RedParticleSpawner
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 AAA 0 A_SpawnItemEx("ChaosSoulSmoke",7,random(-5,5),random(20,30),2,0,random(2,5),random(90,270),128,0)
    TNT1 A 1
    Stop
    }
}

ACTOR ChaosSoulSmokeSpawner2 : RedParticleSpawner
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 AAAA 0 A_SpawnItemEx("ChaosSoulSmoke",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360))
    TNT1 A 1
    Stop
    }
}

Actor ChaosSoulSmoke : GHellionSmoke
{
  -NOTIMEFREEZE
  Scale 0.2
}

ACTOR ChaosLightning : NetherLightning
{
  Damagetype "Souls"
  Species "Souls"
  Missiletype "ChaosLightningTrailSpawner"
  States
  {
  Spawn:
	CLIG ABCDE 1 Bright
    Loop
  Death:
	TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("Kaboom7", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
	TNT1 A 0 A_SetScale(0.75)
    NLI2 ABCDEFG 1 Bright
    stop
  }
}

actor ChaosLightningTrailSpawner : NetherLightningTrailSpawner
{
  States
  {
  Spawn:
    TNT1 AA 0 A_SpawnItemEx("ChaosLightningTrail", Random(-5, 5), Random(-5, 5), Random(-5, 5), 0, 0, 0, 0, 160)
	Stop
  }
}

actor ChaosLightningTrail : NetherLightningTrail
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    TNT1 A 1
    TNT1 A 0 A_Jump(255, "Puff1", "Puff2", "Puff3")
  Puff1:
    CLIG F 1 Bright A_FadeOut(0.1)
    Loop
  Puff2:
    CLIG G 1 Bright A_FadeOut(0.1)
    Loop
  Puff3:
    CLIG H 1 Bright A_FadeOut(0.1)
    Loop
  }
}


ACTOR Chaos10KEx : Player10KEx
{
  Damage 80
  +FORCERADIUSDMG
  DamageType "ChaosSoul"
  Species "Souls"
  States
  {
  Spawn:
    TNT1 A 0
	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_Detonate
    BFE1 BCDEF 4 Bright
    Stop
  }
}


ACTOR ChaosSoulKamikaze
{
  Radius 16
  Height 56
  Health 50
  Damage 10
  Speed 50
  SeeSound "ChaosSoul/Sight"
  DeathSound "ChaosSoul/Death"
  DamageType "SoulToxic"
  Species "EleSouls"
  BloodColor "Green"
  Tag "\c[q9]Chaos Soul\c-"
  Decal Scorch
  DropItem "LifeEssence" 128
  DropItem "ArmorBonusMax" 128
  DropItem "DustMana" 70
  Projectile
  +SOLID
  +SHOOTABLE
  -NOBLOOD
  -NOBLOODDECALS
  +SKYEXPLODE
  +NOTARGETSWITCH
  -NOBLOCKMAP
  +SEEKERMISSILE
  States
  {
  Spawn:
	CHOS B 2 Bright A_SpawnItem("ChaosSoulSmokeSpawner",0,0,0,0)
    Loop
  Death:
	TNT1 A 0 A_Die
  Explode:
    TNT1 A 0
    TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItemEx("ChaosSoulSmokeSpawner")
	TNT1 A 0 A_Explode(52,128)
	CHOS C 4 Bright A_NoGravity
	CHOS D 4 Bright A_Scream
    TNT1 AA 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128) 
	TNT1 AAAA 0 A_CustomMissile("SmokeFX2", 15, 0, random(0,360), 2, random(0,360))
	TNT1 A 0 A_CustomMissile("Chaos10KEx", 15, 0, random(0,360), 2, random(0,360))
	TNT1 AAAA 0 A_SpawnItemEx("Debris",0,0,15,Random(4,-4),Random(4,-4),Random(4,8),0,128)
	CHOS E 3 Bright
	CHOS F 2 Bright A_NoBlocking
	CHOS G 4
	CHOS H 4 
	Stop
    }
}