ACTOR Summoner : Archvile
{
Health 1200
GibHealth 90
DropItem "LifeEssence" 0
DropItem "ArmorBonusMax" 0
DropItem "BossLifeEssence" 128 25
DropItem "BossArmorBonusMax" 128 1
DropItem "DemonEnergyLarge" 128 200
Obituary "%o had %h life drained by a Summoner."
Scale 1.1
Species "Viles"
DamageFactor "VileFires", 0.0
PainChance "Mine", 128
PainChance "SoulToxic", 1
PainChance "FatFlamer", 1
PainChance "FiendFire", 1
PainChance "CacoShocks", 1
PainChance "HFRFire", 1
SeeSound "Summoner/Sight"
ActiveSound "Summoner/Active" 
PainSound "Summoner/Pain"
DeathSound "Summoner/Death"
+DONTHARMSPECIES
+NOTARGET
+DONTRIP
Tag "\c[l0]Summoner\c-"
States 
{ 
Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("SummonerCubesToken",1,"Cont")
	TNT1 A 0 A_GiveInventory("SummonerCubesToken",1)
	TNT1 A 0 A_SpawnItemEx("SummonerCubes",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
Cont:
    SUMN A 10 A_Look 
    Loop 
See:
    TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
    SUMN AABBCC 2 A_VileChase
    TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
    SUMN DDEEFF 2 A_VileChase
	TNT1 A 0 A_Jump(64,"Rush")
	TNT1 A 0 A_Jump(84,"Summon")
    Loop
Rush:
	TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN A 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN A 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN B 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN B 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN C 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN C 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN D 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN D 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN E 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN E 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN F 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN F 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN A 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN A 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN B 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN B 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN C 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN C 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN D 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN D 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN E 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN E 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN F 1 A_VileChase
    TNT1 A 0 A_SpawnItem("SummonerFX",0,0)
    SUMN F 1 A_VileChase
	TNT1 A 0 A_Jump(42,"Summon")
    TNT1 A 0 A_Jump(150,"See")
    Loop
Summon:
	TNT1 A 0 A_JumpIfTargetInLOS(1)
	Goto See
	TNT1 A 0 A_PlaySoundEx("Summoner/Sight",CHAN_VOICE)
    SUMN G 20 A_FaceTarget
	TNT1 A 0 A_PlaySound("brain/spit")
	TNT1 A 0 A_SpawnItemEx("SummonerCube",0,0,65,FRandom(10,20),0,FRandom(0,2),0,SXF_SETMASTER)
	TNT1 A 0 A_SpawnItemEx("SummonerCube",0,0,65,0,FRandom(8,16),FRandom(0,2),135,SXF_SETMASTER)
	TNT1 A 0 A_SpawnItemEx("SummonerCube",0,0,65,0,FRandom(-8,-16),FRandom(0,2),235,SXF_SETMASTER)
	SUMN HG 10
    Goto See
Missile:
	TNT1 A 0 A_PlaySound("Summoner/Start")
    SUMN L 12 A_FaceTarget
	TNT1 A 0 A_VileTarget("SummonerDrainAttack")
	SUMN K 5 Bright A_FaceTarget
	TNT1 A 0 A_JumpIfTargetInLOS("Heal1")
	SUMN K 5 Bright A_FaceTarget
	TNT1 A 0 A_JumpIfTargetInLOS("Heal2")
    SUMN K 5 Bright A_FaceTarget
	TNT1 A 0 A_JumpIfTargetInLOS("Heal3")
	SUMN K 5 Bright A_FaceTarget
	TNT1 A 0 A_JumpIfTargetInLOS("Heal4")
	SUMN K 5 Bright A_FaceTarget
	SUMN K 3 Bright A_FaceTarget
	SUMN J 2 Bright A_FaceTarget
	TNT1 A 0 A_JumpIfTargetInLOS("Heal5")
	SUMN J 5 Bright A_FaceTarget
	TNT1 A 0 A_JumpIfTargetInLOS("Heal6")
	SUMN I 2 Bright A_FaceTarget
	SUMN I 3 Bright A_FaceTarget
	TNT1 A 0 A_JumpIfTargetInLOS("Heal7")
	SUMN H 5 Bright A_FaceTarget
	TNT1 A 0 A_JumpIfTargetInLOS("Heal8")
	SUMN H 2 Bright A_FaceTarget
	SUMN G 30 Bright A_VileAttack
    Goto See
Heal1:
	TNT1 A 0 A_GiveInventory("Health",20)
	Goto Missile+5
Heal2:
	TNT1 A 0 A_GiveInventory("Health",20)
	Goto Missile+7
Heal3:
	TNT1 A 0 A_GiveInventory("Health",20)
	Goto Missile+9
Heal4:
	TNT1 A 0 A_GiveInventory("Health",20)
	Goto Missile+11
Heal5:
	TNT1 A 0 A_GiveInventory("Health",20)
	Goto Missile+15
Heal6:
	TNT1 A 0 A_GiveInventory("Health",20)
	Goto Missile+17
Heal7:
	TNT1 A 0 A_GiveInventory("Health",20)
	Goto Missile+20
Heal8:
	TNT1 A 0 A_GiveInventory("Health",20)
	Goto Missile+22
Pain:
    SUMN M 10 A_Pain
	TNT1 A 0 A_Jump(164,"FakeOut")
	Goto See
FakeOut:
	TNT1 A 0 A_SpawnItem("SummonerFake",0,0)
	TNT1 A 0 A_Jump(128,"EvadeRight")
EvadeLeft:
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_ChangeFlag(NOPAIN,1)
	TNT1 A 0 ThrustThing(Angle*256/360+64,30,0,0)
    SUMN AABBCCDDEEFF 1 A_SpawnItem("SummonerFX",0,0)
	TNT1 A 0 A_ChangeFlag(NOPAIN,0)
	Goto See
EvadeRight:
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_ChangeFlag(NOPAIN,1)
	TNT1 A 0 ThrustThing(Angle*256/360+192,30,0,0)
    SUMN AABBCCDDEEFF 1 A_SpawnItem("SummonerFX",0,0)
	TNT1 A 0 A_ChangeFlag(NOPAIN,0)
	Goto See
Heal:
	TNT1 A 0 A_PlaySound("brain/spit")
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,0,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,20,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,40,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,60,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,80,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,100,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,120,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,140,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,160,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,180,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,200,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,220,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,240,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,260,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,280,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,300,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,320,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,340,0)
    SUMN HG 24
    Goto See
Death:
	TNT1 A 0 A_TakeInventory("SummonerCubesToken",1)
    SUMN N 6 A_Scream
	TNT1 A 0 A_KillChildren
    SUMN O 5 A_Fall
    SUMN PQ 5
    SUMN R 4
	SUMN S 4 A_SpawnItem("BodyCrash",0,0,0,0)
    SUMN T -1
    Stop
XDeath:
	SUMX A 4 A_TakeInventory("SummonerCubesToken",1)
	SUMX B 3 A_XScream
	SUMX C 3 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128)
	TNT1 A 0 A_KillChildren
	SUMX D 3 A_Fall
	SUMX E 3 A_SpawnItem("BodyCrash",0,0,0,0)
	SUMX FGH 3
	SUMX I -1
	Stop
    }
}

ACTOR SummonerCubesToken : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }
ACTOR CubeSpawnedToken : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 }

ACTOR SummonerCubes
{
Scale 0.38
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+NOINTERACTION
States
{
Spawn:
	SUMC AAAABBBBCCCCDDDD 1 Bright A_Warp(AAPTR_TARGET,0,0,68,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_JumpIfInventory("SummonerCubesToken",1,"Spawn",AAPTR_TARGET)
	SUMC AAAABBBBCCCCDDDD 1 Bright A_Warp(AAPTR_TARGET,0,0,68,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_JumpIfInventory("SummonerCubesToken",1,"Spawn",AAPTR_TARGET)
	SUMC AAAABBBBCCCCDDDD 1 Bright A_Warp(AAPTR_TARGET,0,0,68,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_JumpIfInventory("SummonerCubesToken",1,"Spawn",AAPTR_TARGET)
	Goto AliveCheck
AliveCheck:
	TNT1 A 0 A_JumpIfInventory("SummonerCubesToken",1,"Spawn",AAPTR_TARGET)
Dead:
	SUMC A 4 A_SetScale(0.28,0.28)
	SUMC B 4 A_SetScale(0.18,0.18)
	SUMC C 4 A_SetScale(0.08,0.08)
	SUMC D 4 A_SetScale(0.04,0.04)
	Goto Null
	}
}

ACTOR SummonerFX : ExileFX
{   
Scale 1.1
States
{
Spawn:
	TNT1 A 1
    SUMN ABCDEF 2 A_FadeOut(0.1)
    Stop
    }
}

ACTOR SummonerFake : SummonerFX
{
Alpha 1
States
{
Spawn:
	TNT1 A 1
	SUMN L 15 A_FadeOut(0.08)
    SUMN KJIHG 15 Bright A_FadeOut(0.08)
    Stop
    }
}

ACTOR SummonerDrainAttack : IFire
{
Scale 0.85
RenderStyle Translucent
Alpha 0.45
DamageType "VileFires"
Obituary "%o drained by a Summoner."
States
{
Spawn:
    TNT1 A 0
    SMBL B 1 Bright A_PlaySoundEx("Summoner/Drain","Voice",1) 
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
    SMBL B 1 Bright A_Explode(Random(1,3),62)
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
    SMBL C 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
    SMBL D 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
    SMBL C 2 Bright A_Fire
	TNT1 A 0 A_CustomMissile("DrainingTarget",0,0,0,0)
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
    SMBL B 2 Bright A_Explode(Random(1,3),62)
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
    SMBL C 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
    SMBL D 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
    SMBL C 2 Bright A_Fire
	TNT1 A 0 A_CustomMissile("DrainingTarget",0,0,0,0)
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
    SMBL B 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
    SMBL C 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
    SMBL D 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)	
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL C 2 Bright A_Fire
	TNT1 A 0 A_CustomMissile("DrainingTarget",0,0,0,0)
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL B 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL C 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL D 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL C 2 Bright A_Fire
	TNT1 A 0 A_CustomMissile("DrainingTarget",0,0,0,0)
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL B 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL C 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)	
    SMBL D 2 Bright A_Explode(Random(1,3),62)
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
    SMBL C 2 Bright A_Fire
	TNT1 A 0 A_CustomMissile("DrainingTarget",0,0,0,0)
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL B 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL C 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL D 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL C 2 Bright A_Fire
	TNT1 A 0 A_CustomMissile("DrainingTarget",0,0,0,0)
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL B 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL C 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL D 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL C 2 Bright A_Fire
	TNT1 A 0 A_CustomMissile("DrainingTarget",0,0,0,0)
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL B 2 Bright A_Fire
	TNT1 A 0 A_SpawnItem("SummonerBloodSpawner",0,0,0,0)
	TNT1 A 0 A_Explode(Random(1,3),62)
	SMBL C 2 Bright A_Fire	
	TNT1 A 1 A_StopSoundEx("Voice")
	TNT1 A 1 A_PlaySound("vile/stop")
    Stop
	}
}

ACTOR DrainingTarget
{
Radius 3
Height 3
Speed 0
Damage 0
PROJECTILE
+SEEKERMISSILE
+RIPPER
+NOBOSSRIP
+BLOODLESSIMPACT
States
{
Spawn:
	TNT1 A 0 NoDelay A_RearrangePointers(AAPTR_TRACER,AAPTR_DEFAULT,AAPTR_TARGET,0)
	TNT1 A 0 A_FaceTarget
	TNT1 A 1 A_CustomMissile("DrainingBall",FRandom(25,50),FRandom(40,-40),0,CMF_TRACKOWNER)
	Stop
	}
}

ACTOR DrainingBall : DrainingTarget
{
Radius 3
Height 3
Speed 15
Scale 0.5
DeathSound "gib/bounce"
Decal BloodSplat07
RenderStyle Translucent
Alpha 0.45
States
{
Spawn:
	TNT1 A 0 NoDelay A_RearrangePointers(AAPTR_MASTER,AAPTR_DEFAULT,AAPTR_TARGET,0)
Cont:
	TNT1 A 0 A_SpawnItem("SummonerBlood",0,0,0,0)
	TNT1 A 0 A_ChangeVelocity(FRandom(-1,1),FRandom(-1,1),FRandom(-1,1))
    BLDB A 3 Bright A_SeekerMissile(10,45)
	TNT1 A 0 A_ChangeVelocity(FRandom(-1,1),FRandom(-1,1),FRandom(-1,1))
	BLDB B 3 Bright A_SeekerMissile(10,45)
	Loop
Death:
	BLDB CDE 3 Bright A_SpawnItem("SummonerBlood",0,0,0,0)
	Stop
	}
}

ACTOR SummonerBlood : NewBlood
{
States
{
Spawn:
Spray:
    TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("BloodSpray",0,0,0,FRandom(1,-1),FRandom(1,-1),FRandom(1,2),0,129)
	TNT1 A 0 A_SpawnItemEx("NewFlyingBlood",0,0,0,FRandom(5,-5),FRandom(5,-5),FRandom(3,6),0,129)	
	TNT1 A 1 A_Jump(128,"ExtraBlood")	
	Stop
ExtraBlood:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("SmallFlyingBlood",0,0,0,FRandom(5,-5),FRandom(5,-5),FRandom(3,6),0,129)
	Stop
	}
}

ACTOR SummonerBloodSpawner : RedParticleSpawner
{
States
{
Spawn:
    TNT1 A 0
	TNT1 A 0 A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
    TNT1 A 0 A_SpawnItemEx("SummonerBlood",FRandom(16,-16),FRandom(16,-16),FRandom(12,62),FRandom(2,-2),FRandom(2,-2),FRandom(2,-2),0,0,128)
    TNT1 A 1
    Stop
	}
}

ACTOR SummonerCube
{
Height 36
Radius 36
Health 0x7FFFFFFF
Mass 0x7FFFFFFF
Scale 0.4
Species "SCube"
Gravity 0.4
BounceFactor 0.25
WallBounceFactor 0.5
SeeSound "weapons/rocketdrumbounce"
+THRUSPECIES
+MISSILE
+DROPOFF
+NOTELEPORT
+DONTSPLASH
+DOOMBOUNCE
+BOUNCEONACTORS
+ISMONSTER
+SHOOTABLE
+NORADIUSDMG
+NOBLOCKMAP
+NOTARGET
+SOLID
States
{
Spawn:
	TNT1 A 0 NoDelay A_RearrangePointers(AAPTR_MASTER,AAPTR_MASTER,AAPTR_NULL,0)
	TNT1 A 0 A_StopSound
Cont:
	SUM2 ABCD 4 Bright
	Loop
Death:
	TNT1 A 0 A_JumpIfInventory("CubeSpawnedToken",1,"KillSpawned")
	TNT1 A 0 A_GiveInventory("CubeSpawnedToken",1)
	TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	TNT1 A 0 A_Jump(96,"Pinky")
	TNT1 A 0 A_Jump(76,"Rev")
	TNT1 A 0 A_Jump(56,"Knight")
	TNT1 A 0 A_Jump(36,"Baron")
Normal:
	TNT1 A 0 A_SpawnItemEx("SummonerImpSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Goto Flags
Pinky:
	TNT1 A 0 A_SpawnItemEx("SummonerDemonSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Goto Flags
Rev:
	TNT1 A 0 A_SpawnItemEx("SummonerRevenantSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Goto Flags
Knight:
	TNT1 A 0 A_SpawnItemEx("SummonerHellKnightSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Goto Flags
Baron:
	TNT1 A 0 A_SpawnItemEx("SummonerBaronSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	Goto Flags
Flags:
	TNT1 A 0 A_ChangeFlag(SOLID,0)
	TNT1 A 0 A_ChangeFlag(NOINTERACTION,1)
WaitLoop:
    TNT1 A 1
    Loop
KillSpawned:
	TNT1 A 1 A_KillChildren
	Stop
	}
}

ACTOR SummonerImpSpawner : RandomSpawner
{
DropItem "Imp", 256, 61
DropItem "VoidImp", 256, 26
DropItem "Devil", 256, 10
DropItem "CryoImp", 256, 10
DropItem "PyroImp", 256, 10
DropItem "ToxicImp", 256, 7
DropItem "PhaseImp", 256, 6
DropItem "NetherImp", 256, 4
DropItem "GoreImp", 256, 4
DropItem "Hellion", 256, 3
DropItem "CerebralImp", 256, 2
}

ACTOR SummonerDemonSpawner : RandomSpawner
{
DropItem "BullFiend", 256, 65
DropItem "CyberFiend", 256, 24
DropItem "MagmaFiend", 256, 8
DropItem "PhaseFiend", 256, 6
DropItem "CorruptFiend", 256, 6
DropItem "ToxicFiend", 256, 2
}

ACTOR SummonerRevenantSpawner : RandomSpawner
{
DropItem "Guardian", 256, 90
DropItem "Cadaver", 256, 16
DropItem "HellfireRevenant", 256, 12
DropItem "WidowMaker", 256, 10
DropItem "Famine", 256, 10
DropItem "CerebralIncarnate", 256, 3
DropItem "War", 256, 2
}

ACTOR SummonerHellKnightSpawner : RandomSpawner
{
DropItem "HellKnight~", 256, 83
DropItem "HellArchon", 256, 10
DropItem "PyroDemon", 256, 9
DropItem "CryoDemon", 256, 9
DropItem "CyberNoble", 256, 5
DropItem "ToxicLord", 256, 3
DropItem "HellDuke" 256, 3
DropItem "DarkCyberNoble" 256, 3
}

ACTOR SummonerBaronSpawner : RandomSpawner
{
DropItem "BruiserDemon", 256, 14
DropItem "CyberBaron", 256, 11
DropItem "Damned", 256, 11
DropItem "Afrit", 256, 10
DropItem "Cybruiser", 256, 8
DropItem "PainLord", 256, 6
DropItem "LesserCardinal", 256, 5
DropItem "PhaseOverlord", 256, 3
DropItem "CorruptionServant", 256, 3
}