ACTOR BloodGhost
{
  Health 100
  Radius 16
  Height 56
  Mass 50
  Speed 8
  PainChance 136
  Monster
  DropItem "GhostHealthBonus"
  +FLOAT
  +NOGRAVITY
  +MISSILEMORE
  +DONTFALL
  +NOICEDEATH
  AttackSound "wattack"
  SeeSound "wsight"
  PainSound "wpain"
  DeathSound "wdeath"
  ActiveSound "widle"
  Obituary "%o was spooked by a Blood Ghost." // "%o was spooked by a lost soul."
  States
  {
  Spawn:
    GHST AB 10 A_Look
    Loop
  See:
    GHST AABB 3 A_Chase
    Loop
  Missile:
	TNT1 A 0 A_SpawnProjectile ("Ghostball")
	TNT1 A 0 A_Playsound ("wattack")
    GHST E 6 Bright A_FaceTarget
    Goto SEE
  MELEE:
    GHST C 10 Fast A_FaceTarget
    GHST D 8 Fast A_CustomMeleeAttack (15,"Whit2")
    Goto SEE
  Pain:
    GHST F 3 Fast
    GHST F 3 Fast A_Pain
    Goto See
  Death:
    GHST F 4
    GHST G 4 A_ScreamAndUnblock
    GHST H 4
    GHST I 4
    GHST JKLM 4
    GHST N 4 A_ChangeFlag(NOGRAVITY,false)
    GHST O -1
  Crash:
    GHST P -1 A_SetFloorClip
    Stop
	xDeath:
    POSS I 0 A_xScream
	tnt1 a 0 A_SpawnDebris ("GhostBlood",FALSE,random (1,5),random (1,5))
	tnt1 a 0 A_SpawnDebris ("GhostGib1",FALSE,random (1,5),random (1,3))
	tnt1 a 0 A_SpawnDebris ("GhostGib2",FALSE,random (1,5),random (1,3))
	tnt1 a 0 A_SpawnDebris ("GhostGib3",FALSE,random (1,5),random (1,3))
	tnt1 a 0 A_SpawnDebris ("GhostGib4",FALSE,random (1,5),random (1,3))
	tnt1 a 0 A_SpawnDebris ("GhostGib5",FALSE,random (1,5),random (1,3))
	tnt1 a 1 A_SpawnDebris ("GhostGib6",FALSE,random (1,5),random (1,3))
	stop
  }
}
ACTOR Ghostball
{
  Radius 6
  Height 8
  Speed 15
  FastSpeed 30
  Damage 3
  Projectile
  RenderStyle Add
  Alpha 1
  DeathSound "WHIT"
  States
  {
  Spawn:
    GBOM AE 4 Bright
    Loop
  Death:
    GBOM BCD 6 Bright
    Stop
  }
}
ACTOR GhostBlood
{
  Mass 5
  +NOBLOCKMAP
  +NOTELEPORT
  Health 30
  +ALLOWPARTICLES
  States
  {
  Spawn:
    GHG2 HIJK 8
    Stop
  }
}
ACTOR GhostGib1
{
  Mass 5
  Health 1
  States
  {
  Spawn:
    GHGB ABCDEFGH 8
	GHGB A -1
    Stop
  }
}
ACTOR GhostGib2
{
  Mass 5
  Health 1
  States
  {
  Spawn:
    GHGB IJ 8
	GHGB K -1
    Stop
  }
}
ACTOR GhostGib3
{
  Mass 5
  Health 1
  States
  {
  Spawn:
    GHGB LMN 8
	GHGB O -1
    Stop
  }
}
ACTOR GhostGib4
{
  Mass 5
  Health 1
  States
  {
  Spawn:
    GHGB QRSTUVW 8
	GHGB Q -1
    Stop
  }
}
ACTOR GhostGib5
{
  Mass 5
  Health 1
  States
  {
  Spawn:
    GHGB XYZ 8
	GHG2 ABC 8
	GHG2 C -1
    Stop
  }
}
ACTOR GhostGib6
{
  Mass 5
  Health 1
  +RANDOMIZE
  States
  {
  Spawn:
	GHG2 D -1
	GHG2 E -1
	GHG2 F -1
	GHG2 G -1
    Stop
  }
}
ACTOR GhostHealthBonus : Health
{
  +COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.Amount 1
  Inventory.MaxAmount 200
  Inventory.PickupMessage "Picked up a ghostly health bonus." // "Picked up a health bonus."
  States
  {
  Spawn:
    GHPK ABCDCB 6 bright
    Loop
  }
}

ACTOR Chiller 132
{
	Health 400
	PainChance 20
	Speed 18
	Height 55
	Mass 150
	Bloodcolor Black
	MONSTER
	+NOGRAVITY 
        +DROPOFF 
        +FLOAT
	+FLOORCLIP
        +MISSILEMORE
        +NOICEDEATH
        +GHOST
        minmissilechance 10
        Damagefactor "Ice", 0
        Renderstyle Translucent
        Alpha 0.85
	SeeSound "chiller/sight"
	PainSound "chiller/pain"
	DeathSound "chiller/death"
	ActiveSound "chiller/active"
	HitObituary "The cold touch of the Chiller made %o freeze in fear."
	Obituary "%o got the cold shoulder."
        States
	{
        Spawn:
		CHIL A 9 A_Look
		CHIL A 0 A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
		CHIL A 0 A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
		CHIL A 0 A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
		CHIL B 9 A_Look
		CHIL B 0 A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
		CHIL B 0 A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
		CHIL B 0 A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
		Loop
	See:
		CHIL A 3 bright A_Chase
    		CHIL A 0 bright A_SpawnItemEx("ChillerTrailA", 0, 0, 0, 0, 0, 0, 0, 128)
			CHIL A 0 bright A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
    		CHIL A 3 bright A_Chase
    		CHIL A 0 bright A_SpawnItemEx("ChillerTrailA", 0, 0, 0, 0, 0, 0, 0, 128)
			CHIL A 0 bright A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
    		CHIL B 3 bright A_Chase
    		CHIL B 0 bright A_SpawnItemEx("ChillerTrailB", 0, 0, 0, 0, 0, 0, 0, 128)
			CHIL A 0 bright A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
    		CHIL B 3 bright A_Chase
    		CHIL B 0 bright A_SpawnItemEx("ChillerTrailB", 0, 0, 0, 0, 0, 0, 0, 128)
			CHIL A 0 bright A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
    		CHIL C 3 bright A_Chase
    		CHIL C 0 bright A_SpawnItemEx("ChillerTrailC", 0, 0, 0, 0, 0, 0, 0, 128)
			CHIL A 0 bright A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
    		CHIL C 3 bright A_Chase
    		CHIL C 0 bright A_SpawnItemEx("ChillerTrailC", 0, 0, 0, 0, 0, 0, 0, 128)
			CHIL A 0 bright A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
    		CHIL D 3 bright A_Chase
    		CHIL D 0 bright A_SpawnItemEx("ChillerTrailD", 0, 0, 0, 0, 0, 0, 0, 128)
			CHIL A 0 bright A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
    		CHIL D 3 bright A_Chase
    		CHIL D 0 bright A_SpawnItemEx("ChillerTrailD", 0, 0, 0, 0, 0, 0, 0, 128)
			CHIL A 0 bright A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
		Loop
	Pain:
		CHIL G 6
		CHIL G 6 A_Pain
		Goto See
	Melee:
		CHIL F 1 A_FaceTarget
		CHIL F 0 A_CustomMissile("ChillerFog",32,0,random(1,359),2,random(-10,20))
		CHIL F 3 A_CustomMeleeAttack(random(5,30),"chiller/melee","none","ice")
		Goto See
	Missile:
		TNT1 A 0 A_Jump (72,"MissileTri")
		CHIL E 10 A_FaceTarget
		CHIL F 0 A_CustomMissile("ChillerFog",32,0,45,0)
		CHIL F 0 A_CustomMissile("ChillerFog",32,0,315,0)
		CHIL F 10 A_CustomMissile("IceRipper",32,0,0,0)
		Goto See
	MissileTri:
		CHIL E 10 A_FaceTarget
		CHIL F 0 A_CustomMissile("ChillerFog",32,0,45,0)
		CHIL F 0 A_CustomMissile("ChillerFog",32,0,315,0)
		CHIL F 0 A_CustomMissile("IceRipper",32,0,-6,0)
		CHIL F 0 A_CustomMissile("IceRipper",32,0,6,0)
		CHIL F 10 A_CustomMissile("IceRipper",32,0,0,0)
		Goto See
	Death:
		CHIL H 5 A_ScreamAndUnblock
		CHIL I 5 A_Gravity
                CHIL I 0 A_CustomMissile("ChillerFog2",32,0,45,0)
		CHIL I 0 A_CustomMissile("ChillerFog2",32,0,90,0)
                CHIL I 0 A_CustomMissile("ChillerFog2",32,0,135,0)
		CHIL I 0 A_CustomMissile("ChillerFog2",32,0,180,0)
                CHIL I 0 A_CustomMissile("ChillerFog2",32,0,225,0)
		CHIL I 0 A_CustomMissile("ChillerFog2",32,0,270,0)
                CHIL I 0 A_CustomMissile("ChillerFog2",32,0,315,0)
		CHIL I 0 A_CustomMissile("ChillerFog2",32,0,0,0)
		CHIL JKLM 5 A_FadeOut(0.1)
		CHIL N 0 A_SetTranslucent(0.01)
		CHIL N -1
		Stop
	Raise:
		CHIL NMLKJ 5 A_FadeIn(0.1)
		CHIL I 5 A_NoGravity
		CHIL H 5 A_SetTranslucent(0.85)
		Goto See
}
}

Actor IceRipper
{
radius 5
height 5
damage (random(4,12))
speed 15
Damagetype Ice
Renderstyle add
Alpha 0.90
seesound "chiller/fire"
deathsound "chiller/explode"
DONTHURTSHOOTER
PROJECTILE
+RIPPER
+NODAMAGETHRUST
states
{
Spawn:
ICEB A 1 bright A_SpawnItemEX("RipperMist", 0, 0, 0, 0, 0, 0, 0, 12)
loop
Death:
ICEB B 3 bright A_SetTranslucent(0.90,1)
ICEB B 0 bright A_Explode
ICEB CDE 3 bright
stop
}
}


Actor RipperMist
{
  Radius 1
  Height 1
  +NoGravity
  +NoClip
  RenderStyle Add
  Alpha 0.6
  Scale 0.6
  States
  {
  Spawn:
    NULL A 2
    MIST ABCDE 2 A_FadeOut(0.2)
    Loop
  }
}

Actor ChillerTrailA
{
  Radius 4
  Height 8
  Speed 0
  Scale 0.9
  Mass 75
  RenderStyle "Translucent"
  Alpha 0.3
  PROJECTILE
  States
  {
  Spawn:
    CHIL A 10 bright A_FadeOut(0.05)
    Stop
  }
}

Actor ChillerTrailB
{
  Radius 4
  Height 8
  Speed 0
  Scale 0.9
  Mass 75
  RenderStyle "Translucent"
  Alpha 0.3
  PROJECTILE
  States
  {
  Spawn:
    CHIL B 10 bright A_FadeOut(0.05)
    Stop
  }
}

Actor ChillerTrailC
{
  Radius 4
  Height 8
  Speed 0
  Scale 0.9
  Mass 75
  RenderStyle "Translucent"
  Alpha 0.3
  PROJECTILE
  States
  {
  Spawn:
    CHIL C 10 bright A_FadeOut(0.05)
    Stop
  }
}

Actor ChillerTrailD
{
  Radius 4
  Height 8
  Speed 0
  Scale 0.9
  Mass 75
  RenderStyle "Translucent"
  Alpha 0.3
  PROJECTILE
  States
  {
  Spawn:
    CHIL D 10 bright A_FadeOut(0.05)
    Stop
  }
}

Actor ChillerFog
{
  Radius 1
  Height 1
  Speed 2
  +NoGravity
  +NoClip
  RenderStyle Add
  Alpha 0.9
  Scale 1.5
  States
  {
  Spawn:
    FFFG A 4 A_FadeOut(0.08)
    Loop
  }
}

Actor BlotSmoke
{
	+NOINTERACTION
	+CLIENTSIDEONLY
	RenderStyle Translucent

		States
		{
			Spawn:
				TNT1 A 0 NoDelay A_Jump (256, "Blot1", "Blot2", "Blot3", "Blot4")
			Blot1:
				BLOT A 2
				BLOT BCDE 2 A_FadeOut (0.2)
				Stop
			Blot2:
				BLOT F 2
				BLOT GHIJ 2 A_FadeOut (0.2)
				Stop
			Blot3:
				BLOT K 2
				BLOT LMNO 2 A_FadeOut (0.2)
				Stop
			Blot4:
				BLOT P 2
				BLOT QRST 2 A_FadeOut (0.2)
				Stop
  }
}

Actor Blot 20501
{
	//$Title Blot
	//$Category Monsters
	//$Angled
	//$Sprite BLOPA0

	Obituary "%o was engulfed by a blot."
	Health 20
	Radius 8
	Height 16
	Mass 50
	Speed 0
	Deathsound "Blot/Death"
	DamageFactor "Blot", 0
	BloodType None
	Scale 0.6
  
	MONSTER
	-SOLID
	-CANPASS
	+STANDSTILL
	+MISSILEMORE
	+MISSILEEVENMORE
	+DONTHURTSPECIES
	+NODAMAGETHRUST
	+BLOODLESSIMPACT
	+LOWGRAVITY
	+BRIGHT
	
		States
		{
			Spawn:
				EYES A 10 A_Look
				Loop
			IdleSpawn:
				EYES A 1 A_LookEx (LOF_NOSEESOUND, 0, 0, 0, 360)
				EYES AAA 0 A_SpawnItemEx ("BlotSmoke", -4, random (-10, 10), random (-10, 10), 0, random (-1, 1), random (-1, 1))
				Loop
			See:
				EYES A 1 A_Chase
				EYES AAA 0 A_SpawnItemEx ("BlotSmoke", -4, random (-10, 10), random (-10, 10), 0, random (-1, 1), random (-1, 1))
				Loop
			Missile:
				EYES A 0 A_CheckSight ("IdleSpawn")
			LeapSight:
				EYES B 1 A_FaceTarget
				EYES BBB 0 A_SpawnItemEx ("BlotSmoke", -4, random (-10, 10), random (-10, 10), 0, random (-1, 1), random (-1, 1))
				EYES B 1 ThrustThingZ (0, 13, 0, 0)
				EYES BBB 0 A_SpawnItemEx ("BlotSmoke", -4, random (-10, 10), random (-10, 10), 0, random (-1, 1), random (-1, 1))
				TNT1 B 0 ThrustThing(angle*256/360, 8, 0, 0)
				TNT1 B 0 A_PlaySound ("Blot/Attack")
			MidLeap:
				EYES B 1 A_SpawnItem ("BlotDamage")
				EYES BBB 0 A_SpawnItemEx ("BlotSmoke", -4, random (-10, 10), random (-10, 10), 0, random (-1, 1), random (-1, 1))
				TNT1 B 0 A_JumpIf (velz < 0, "Falling")
				Loop
			Falling:
				EYES A 1 A_SpawnItem ("BlotDamage")
				EYES AAA 0 A_SpawnItemEx ("BlotSmoke", -4, random (-10, 10), random (-10, 10), 0, random (-1, 1), random (-1, 1))
				TNT1 A 0 A_CheckFloor ("Land")
				Loop
			Land:
				EYES A 1 A_Stop
				EYES AAA 0 A_SpawnItemEx ("BlotSmoke", -4, random (-10, 10), random (-10, 10), 0, random (-1, 1), random (-1, 1))
				EYES A 0 A_ClearTarget
				Goto IdleSpawn
			Death:
				TNT1 A 1 A_Stop
				TNT1 A 0 A_ScreamAndUnblock
				TNT1 AAAAAAAA 1 A_SpawnItemEx ("BlotSmoke", 0, 0, 0, random (-4, 4), 0, random (-4, 4), random(0, 360))
				Stop
		}
}

Actor BlotDamage
{
	Radius 2
	Height 2
	Speed 0
	DamageType "Blot"
	
	Projectile
	+NODAMAGETHRUST
	+BLOODLESSIMPACT

		States
		{
			Spawn:
				TNT1 A 1 NoDelay A_Explode (1, 40, 0)
				Stop
		}
}

Actor Carrionnette 3101
{
	//$Title Carrionnette
	//$Category Monsters
	Health 200
	Radius 16
	Height 64
	MeleeRange 72
	PainChance 100
	Speed 24
	FastSpeed 32
	Monster
	SeeSound "Lanky/See"
	MeleeSound "Skeleton/Melee"
	ActiveSound "Lanky/Active"
	PainSound "Lanky/Pain"
	DeathSound "Misc/Gibbed"
	Obituary "%o was struck by the gory sight of a Carrionnette"
	HitObituary "%o was clocked upside the head by a Carrionnette"
	+MissileMore //Extra angry.
	States
	{
		Spawn:
			LANK AB 10 A_LookEx
			Loop
		See:
			LANK ABCD 4 A_Chase
			Loop
		Melee:
			LANK E 8 A_FaceTarget
			LANK F 6 A_FaceTarget
			LANK G 4 A_CustomMeleeAttack (40,"Skeleton/Melee")
			Goto See
		Missile:
			TNT1 A 0 A_JumpIfCloser (640,"MayLeap")
			LANK EF 4 A_FaceTarget
			LANK G 2 A_CustomMissile ("CarrionnetteShot",48)
			LANK FE 2
			Goto See
		MayLeap:
			TNT1 A 0 A_Jump (150,"Leap")
			Goto Missile+1 //Decided against jumping, go back to firing.
		Leap:
			TNT1 A 0 A_PlaySound ("Lanky/Jump",CHAN_VOICE)
			LANK H 3 A_FaceTarget
			TNT1 A 0 A_ChangeVelocity (16,0,14,CVF_RELATIVE)
			//Intentional fall through to leap check mode.
		LeapLoop:
			LANK I 1 A_JumpIfCloser (MeleeRange,"Melee") //Target in range, smack 'em.
			TNT1 A 0 A_CheckFloor ("See") //Hit the ground without getting in range.
			Loop
		Pain:
			LANK J 4
			LANK J 4 A_Pain
			Goto See
		Death:
			LANK K 6 A_Scream
			LANK L 6 A_NoBlocking
			LANK MNOPQ 3
			LANK Q -1
			Stop
		Raise:
			LANK QPONMLKJ 3
			Goto See
	}
}

Actor CarrionnetteShot
{
	Speed 25
	FastSpeed 35
	Damage (Random (2,5)*10-5)
	Projectile
	SeeSound "Lanky/Shot"
	DeathSound "Baron/ShotX"
	Decal "RevenantScorch"
	States
	{
		Spawn:
			LANK RS 4
			Loop
		Death:
			LANK TUV 6
			Stop
	}
}

ACTOR ShadowBeast 30123
{
  OBITUARY "%o was killed by a shadow beast."
  Bloodcolor "70 AC 00"
  Health 500
  Radius 40
  Height 80
  Mass 500
  Speed 12
  PainChance 144
  SEESOUND "shadowbeast/sight"
  PAINSOUND "shadowbeast/pain"
  DEATHSOUND "shadowbeast/death"
  ACTIVESOUND "shadowbeast/active"
  MONSTER
  +FloorClip
  states
  {
  Spawn:
    BDEM AB 10 A_Look
    Loop
  See:
    TNT1 A 0 A_JumpIfHealthLower (250, "Run") 
    BDEM ABCDEF 6 A_Chase
    Loop
  Run:
    TNT1 A 0 A_PlaySound("shadowbeast/sight")
    BDEM AABBCCDDEEFF 2 A_Chase(0,0)
    BDEM AABBCCDDEEFF 2 A_Chase(0,0)
    BDEM AABBCCDDEEFF 2 A_Chase(0,0)
    Goto Missile
  Missile:
    TNT1 A 0 A_JumpIfHealthLower (250, "Missile2") 
    TNT1 A 0 A_Jump(90, 5)
    BDEM H 6 A_FaceTarget
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball1", 56, 0, -8)
    BDEM I 6 A_CustomMissile ("ShadowBeast_Ball1", 56, 0, 8)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball1", 56, 0, 0)
    Goto See
    BDEM H 4 A_FaceTarget
    BDEM I 4 A_CustomMissile ("ShadowBeast_Ball2", 56, 0, -16)
    BDEM I 0 A_FaceTarget
    BDEM I 4 A_CustomMissile ("ShadowBeast_Ball2", 56, 0, -8)
    BDEM I 0 A_FaceTarget
    BDEM I 4 A_CustomMissile ("ShadowBeast_Ball2", 56, 0, 0)
    BDEM I 0 A_FaceTarget
    BDEM I 4 A_CustomMissile ("ShadowBeast_Ball2", 56, 0, 8)
    BDEM I 0 A_FaceTarget
    BDEM I 4 A_CustomMissile ("ShadowBeast_Ball2", 56, 0, 16)
    BDEM I 0 A_FaceTarget
    BDEM I 4 A_CustomMissile ("ShadowBeast_Ball2", 56, 0, 32)
    Goto See
  Missile2:
    TNT1 A 0 A_Jump(90, 15)
    BDEM H 6 A_FaceTarget
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    BDEM I 2 A_CustomMissile ("ShadowBeast_BallFire", 56, 0, random(-8,8))
    Goto See
    BDEM H 16 A_FaceTarget
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, -64)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, 64)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, -56)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, 56)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, -48)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, 48)    
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, -40)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, 40)    
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, -32)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, 32)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, -24)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, 24)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, -16)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, 16)    
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, -8)
    BDEM I 0 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, 8)    
    BDEM I 6 A_CustomMissile ("ShadowBeast_Ball3", 56, 0, 0)
    Goto See
  Pain:
    TNT1 A 0 A_Jump (16, "Spread")
    BDEM G 4 A_Pain
    Goto See
  Death:
    BDEM R 8
    BDEM S 8 A_Scream
    BDEM TUVWX 6
    BDEM Y 6 A_NoBlocking
    BDEM Z -1
    Stop
  Spread:
    TNT1 A 0 A_SpawnItemEx ("ShadowBeast_Spread", 0, 0, 0, 0, 0, 0, 0, 128)
    TNT1 AAAAAAAAAAAAA 0 A_SpawnItemEx ("ShadowBeast_Sparkle", random(0,16), random(0,16), random(16,48), 0, 0, 0, random(0,359), 128)
    TNT1 AAAAA 0 A_SpawnItemEx ("ShadowBeast_Creature", 0, 0, random(16,48), random(0,8), random(0,8), random(0,8), random(0,359), 0)
    TNT1 A 0 A_SetTranslucent (0.0)
    Goto Wander
  Wander:
    TNT1 A 0 A_UnSetShootable
    TNT1 A 0 A_ChangeFlag("NoPain", 1)
    TNT1 A 0 A_Jump(60, 5)
    TNT1 A 0 A_Jump(60, 15)
    TNT1 A 0 A_Jump(60, 25)
    TNT1 A 0 A_Jump(60, 35)
    TNT1 A 0 A_Jump(60, 45)
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2 A_Wander
    BDEM A 3 A_Wander
    BDEM A 0 A_SetTranslucent (0.2)
    BDEM B 3 A_Wander
    BDEM A 0 A_SetTranslucent (0.4)
    BDEM C 3 A_Wander
    BDEM A 0 A_SetTranslucent (0.6)
    BDEM D 3 A_Wander
    BDEM A 0 A_SetTranslucent (0.75)
    BDEM E 3 A_Wander
    BDEM A 0 A_SetTranslucent (0.8)
    BDEM F 3 A_Wander
    BDEM A 0 A_SetTranslucent (1.0)
    TNT1 A 0 A_SetShootable
    TNT1 A 0 A_ChangeFlag("NoPain", 0)
    Goto See
  }
}

ACTOR ShadowBeast_Spread
{   
	Radius 1
	Height 1
	Damage 0
	Speed 0
	PROJECTILE
	states
	{
		Spawn:
		  TNT1 A 0
		  TNT1 A 0 A_PlaySound ("shadowbeast/spread")
		  BDEM JKLMNOP 8
	          BDEM Q 70 
	          BDEM QQQQQQQQQQ 1 A_FadeOut(0.1)
		  stop
	}
}

ACTOR ShadowBeast_Creature
{
  Alpha 1.0
  Renderstyle Add
  Speed 16
  MONSTER
  -SOLID
  -SHOOTABLE
  +FLOAT
  +NOGRAVITY
  states
  {
  	Spawn:
  	  TNT1 A 0
  	  TNT1 A 0 A_Playsound("shadowbeast/spiritsit")
  	  Goto See
  	See:
	  TNT1 A 0 A_Jump(60, 5)
    	  TNT1 A 0 A_Jump(60, 15)
          TNT1 A 0 A_Jump(60, 25)
          TNT1 A 0 A_Jump(60, 35)
          TNT1 A 0 A_Jump(60, 45)
	  BDSP ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB 2 A_Chase
	  Goto Death  
	Melee:
	  BDSP AB 2 A_CustomMeleeAttack(5)
	  Goto See
	Death:
	  TNT1 A 0 A_Playsound("shadowbeast/spiritdth")
	  BDSP EFGHIJ 5
	  Stop
  }
}

ACTOR ShadowBeast_Sparkle
{   
	Alpha 1.0
        Renderstyle Add
	Radius 1
	Height 1
	Damage 0
	Speed 0
	PROJECTILE
	Scale 1.0

	states
	{
		Spawn:
		  TNT1 A 0
		  TNT1 A 0 A_Jump(128,4)
		  TNT1 A 0 A_Jump(128,2)
		  BDP1 GHI 5
		  stop
	}
}

ACTOR ShadowBeast_BallFire
{
  Alpha 1.0  
  Renderstyle Add
  Speed 15
  Radius 10
  Height 6
  Damage 1
  DamageType Poison
  Projectile
  +SPAWNSOUNDSOURCE
  +RIPPER
  RenderStyle Add
  SeeSound "shadowbeast/pr1death"
  Decal MummyScorch
  States
  {
  Spawn:
    BDP2 DEFGH 5 Bright
    Goto Death
  Death:
    TNT1 A 0
    Stop
  }
}

ACTOR ShadowBeast_Ball1
{
  Alpha 1.0  
  Renderstyle Add
  Speed 15
  Radius 10
  Height 6
  Damage 5
  DamageType Poison
  Projectile
  +SPAWNSOUNDSOURCE
  RenderStyle Add
  SeeSound "shadowbeast/pr1sight"
  DeathSound "shadowbeast/pr1death"
  States
  {
  Spawn:
    BDP2 ABC 4 Bright
    Loop
  Death:
    BDP2 DE 4 Bright
    BDP2 FGH 3 Bright
    Stop
  }
}

ACTOR ShadowBeast_Ball2
{
   Alpha 1.0
   Renderstyle Add
   Radius 8
   Height 6
   Damage 2
   Speed 16
   PROJECTILE
   +Randomize
   SeeSound "shadowbeast/pr2sight"
   DeathSound "shadowbeast/pr2death"
   Decal PlasmaScorchLower
   States
     {
     Spawn:
     BDP1 D 1 A_BishopMissileWeave
     BDP1 E 1 A_BishopMissileWeave
     loop
     Death:
     BDP1 FGHI 3
     Stop
   }
}

ACTOR ShadowBeast_Ball3
{
   Alpha 1.0
   Scale 1.4
   Renderstyle Add
   Radius 8
   Height 6
   Damage 10
   Speed 20
   PROJECTILE
   +Randomize
   SeeSound "shadowbeast/pr2sight"
   DeathSound "shadowbeast/pr2death"
   Decal PlasmaScorchLower
   States
     {
     Spawn:
     BDP1 DEDEDEDED 2 A_BishopMissileWeave
     BDP1 ED 2 A_BishopMissileWeave
     TNT1 A 0 A_FadeOut(0.20)
     Goto Spawn+9
     Death:
     BDP1 FGHI 3
     Stop
   }
}

ACTOR dukeArmor : basicarmorpickup
{
   Armor.SavePercent 100
   Armor.SaveAmount 500
   States
   {
   Spawn:
      ARMR E 1 
      Loop
   }
 }

ACTOR Hellduke : Cyberdemon 30108
{
  Health 3500
  Tag "Hellduke"
  SeeSound "hellduke/sight"
  DeathSound "hellduke/death"
  Obituary "%o was blasted away by the Hellduke."
  var float user_LaunchAngle;
  MeleeRange 72
  DamageFactor weppoisonlinger, 0.125
  +ALLOWPAIN
  +NOTARGET
  States
  {
  Spawn:
    DUKE A 0
	DUKE A 1 A_SetInventory("dukeArmor",1)
    DUKE AB 10 A_Look
    Goto Spawn+2
  See:
    DUKE A 3 A_Hoof
	DUKE ABB 3 A_Chase
	DUKE C 3 A_Hoof
    DUKE CDD 3 A_Chase
    Loop
  Missile:
    DUKE E 0 A_Jump(80,"Missile2")
    DUKE E 6 A_FaceTarget
    DUKE F 12 Bright A_CustomMissile("DukeShot",60,-24)
    DUKE E 12 A_FaceTarget
    DUKE F 12 Bright A_CustomMissile("DukeShot",60,-24)
    DUKE E 12 A_FaceTarget
    DUKE F 12 Bright A_CustomMissile("DukeShot",60,-24)
    Goto See
  Missile2:    
    DUKE Q 0 A_JumpIfCloser(368,"Missile")
	DUKE Q 0 A_SetUserVar("user_LaunchAngle", frandom(-35,10))
    DUKE Q 6 A_FaceTarget
    DUKE R 12 Bright A_SpawnProjectile("DukeNade",78,-27,0,CMF_ABSOLUTEPITCH,user_LaunchAngle)
    DUKE Q 12 A_FaceTarget
    DUKE R 12 Bright A_SpawnProjectile("DukeNade",78,-27,0,CMF_ABSOLUTEPITCH,user_LaunchAngle)
    DUKE Q 12 A_FaceTarget
    DUKE R 12 Bright A_SpawnProjectile("DukeNade",78,-27,0,CMF_ABSOLUTEPITCH,user_LaunchAngle)
    Goto See
  Melee:     
    DUKE ST 8 A_FaceTarget
	DUKE U 8 A_CustomMeleeAttack(17 * random(1,10),"baron/melee")
	DUKE U 0 A_CustomMissile("DukeHit",32)
	Goto See
  Pain:
    DUKE G 10 A_Pain
    Goto See
  Death:
    DUKE H 10 Bright
    DUKE I 10 Bright A_Scream
    DUKE JKL 10 Bright
    DUKE M 10 Bright A_NoBlocking
    DUKE NO 10 Bright
    DUKE P 30
    DUKE P -1 A_BossDeath
    Stop
  }
}

ACTOR RedPuff
{   
   Radius 0
   Height 1
   RENDERSTYLE ADD
   Alpha 0.85
   +NOGRAVITY
   +NOBLOCKMAP
   +FORCEXYBILLBOARD   
   States
   {
   Spawn:
      TNT1 A 3 Bright
      RPUF ABCDE 3 Bright
      Stop 
   }
}

ACTOR RedPuff2 : RedPuff
{ 
   States
   {
   Spawn:
      TNT1 A 3 Bright
      HBA2 EFGHI 3 Bright      
      Stop 
   }
}

ACTOR IrePuff : RedPuff
{ 
   States
   {
   Spawn:
      TNT1 A 3 Bright
      IRFX ABCDEF 3 Bright
      Stop 
   }
}

ACTOR DukeShot : Rocket
{
Speed 20
Renderstyle add
Alpha 1.0
SeeSound "weapons/Hellfi"
DeathSound "weapons/hellex"
+THRUGHOST
+FORCEXYBILLBOARD
+EXPLODEONWATER
-DEHEXPLOSION
-ROCKETTRAIL
States
	{
	Spawn: 
		HBAL ABCD 3 Bright A_SpawnItemEx("IrePuff",0,0,0,0,0,0,0,8)
		loop
	Death:
		HBAL E 4 Bright A_Explode(128,128,1)
		HBAL FFFFFFFFFFFF 0 Bright A_SpawnItemEx("RedPuff2",0,0,0,3,0,Frandom(-5,5),Frandom(0,360),0,0)
		HBAL F 4 Bright A_SpawnItemEx("RedPuff2",0,0,0,3,0,Frandom(-5,5),Frandom(0,360),0,0)
		HBAL GHI 4 Bright
		stop
	}
}

ACTOR DukeNade : DukeShot
{
Damage 25 
BounceCount 3
Reactiontime 35
Gravity 0.5
SeeSound "weapons/firbfi"
BounceSound "weapons/casbal"
BounceType "Hexen"
Obituary "%o couldn't dodge %k's hell-bomb."
+FORCEXYBILLBOARD
+EXPLODEONWATER
+DONTBOUNCEONSHOOTABLES
-NOGRAVITY   
States
	{
	Spawn: 
		HBA3 ABC 3 Bright A_SpawnItemEx("RedPuff",0,0,0,0,0,0,0,8)
		HBA3 A 0 Bright A_CountDown
		loop
	Death:
		HBA3 D 0 A_NoGravity
		HBA3 D 3 Bright
		HBA3 E 3 Bright A_Explode(144,144,1,0,32)
		HBA3 FGHIJKLM 3 Bright
		stop
	}
}

ACTOR DukeHit
{
Projectile
Radius 0
Height 1
Speed 0
Renderstyle none
+PUFFONACTORS
+PUFFGETSOWNER
+LOOKALLAROUND
+NOEXTREMEDEATH
States
	{
	Spawn:
		TNT1 A 1 
		TNT1 A 3 Bright A_Explode(24,128,0,0,128)
		Stop
	Crash:
		TNT1 A 3 A_PlaySound("weapons/vblwal")
		Stop
	}
}

ACTOR FemaleScientist3
{
  Game Doom
  obituary "%o was bludgeoned to death by a zombie scientist."
  health 15
  mass 90
  speed 10
  Radius 19
  Height 52
  painchance 200
  seesound "fem/sight"
  painsound "fem/pain"
  deathsound "fem/death"
  activesound "fem/active"
  MONSTER
  +FLOORCLIP
  States
  {
   Spawn:
    FSZC AB 10 A_Look
    loop
  See:
    FSZC AABBCCDD 4 A_Chase
    loop
  Melee:
    FSZC E 4 A_FaceTarget
    FSZC F 8 A_CustomMeleeAttack (random (1, 5) *5, "knifehit", "skeleton/swing")
    FSZC D 4
    goto See
  Pain:
    FSZC G 3
    FSZC G 3 A_Pain
    goto See
  Death:
    FSZC H 5
    FSZC I 5 A_Scream
    FSZC J 5 A_NoBlocking
    FSZC K 5
    FSZC L 5
    FSZC M 5
    FSZC N -1
    stop
  XDeath:
    FSZC O 5
    FSZC P 5 A_XScream
    FSZC Q 5 A_NoBlocking
    FSZC RSTUV 5
    FSZC W -1
    stop
  Raise:
    FSZC MLKJIH 5
    goto See
  }
}

ACTOR FemaleScientist4
{
  Game Doom
  obituary "%o was poisoned by a zombie scientist."
  health 30
  mass 90
  speed 10
  Radius 19
  Height 52
  painchance 200
  seesound "fem/sight"
  painsound "fem/pain"
  deathsound "fem/death"
  activesound "fem/active"
  MONSTER
  +FLOORCLIP
  States
  {
   Spawn:
    FSZS AB 10 A_Look
    loop
  See:
    FSZS AABB 4 A_Chase
    TNT1 A 0 A_JumpIfCloser (128, "Squirt")
    FSZS CCDD 4 A_Chase
    TNT1 A 0 A_JumpIfCloser (128, "Squirt")
    loop
  Melee:
    FSZS E 4 A_FaceTarget
    FSZS E 0 A_SkelWhoosh
    FSZS F 8 A_CustomMeleeAttack (random (1, 5) *3, "knifehit", "skeleton/swing")
    FSZS F 0 A_CustomMissile ("PoisonDrop", 32, 8, 0, CMF_OFFSETPITCH, 12) 
	goto See
  Squirt:
    FSZS E 4 A_FaceTarget
    FSZS F 0 A_PlaySound ("skeleton/swing")
    FSZS F 1 A_CustomMissile ("PoisonDrop", 32, 8, 0, CMF_OFFSETPITCH, 12) 
    FSZS F 1 A_CustomMissile ("DummyDrop", 32, 8, 0, CMF_OFFSETPITCH, 12)  
    FSZS F 1 A_CustomMissile ("DummyDrop", 32, 8, 0, CMF_OFFSETPITCH, 12)  
    FSZS F 1 A_CustomMissile ("DummyDrop", 32, 8, 0, CMF_OFFSETPITCH, 12) 
    FSZS F 1 A_CustomMissile ("PoisonDrop", 32, 8, 0, CMF_OFFSETPITCH, 12) 
    FSZS F 1 A_CustomMissile ("DummyDrop", 32, 8, 0, CMF_OFFSETPITCH, 12)  
    FSZS F 1 A_CustomMissile ("DummyDrop", 32, 8, 0, CMF_OFFSETPITCH, 12)  
    FSZS F 1 A_CustomMissile ("DummyDrop", 32, 8, 0, CMF_OFFSETPITCH, 12) 
    FSZS D 4
    goto See
  Pain:
    FSZS G 3
    FSZS G 3 A_Pain
    goto See
  Death:
    FSZS H 5
    FSZS I 5 A_Scream
    FSZS J 5 A_NoBlocking
    FSZS K 5
    FSZS L 5
    FSZS M 5
    FSZS N -1
    stop
  XDeath:
    FSZS O 5
    FSZS P 5 A_XScream
    FSZS Q 5 A_NoBlocking
    FSZS RSTUV 5
    FSZS W -1
    stop
  Raise:
    FSZS MLKJIH 5
    goto See
  }
}



actor PoisonDrop
{
  Game Doom
  Radius 3
  Height 3
  Scale 0.5
  Speed 10
  FastSpeed 15
  Damage 1
  PoisonDamage 5
  Alpha 1
  bloodcolor "DarkGreen"
  Decal "BloodSplat"
  Projectile
  -NOGRAVITY
  +RANDOMIZE
  states
  {
  Spawn:
    POIS ABCD 4
    goto Active
  Active:
    POIS D 4
    loop
  Death:
    TNT1 A 0
    stop
  }
}

actor DummyDrop
{
  Game Doom
  Radius 3
  Height 3
  Scale 0.5
  Speed 10
  FastSpeed 15
  Damage 0
  Alpha 1
  bloodcolor "DarkGreen"
  Decal "BloodSplat"
  Projectile
  -NOGRAVITY
  +RANDOMIZE
  states
  {
  Spawn:
    POIS ABCD 4
    goto Active
  Active:
    POIS D 4
    loop
  Death:
    TNT1 A 0
    stop
  }
}

actor Jackal : DoomImp 30121
{
  obituary "%o was condemned by a Jackal."
  hitobituary "%o had their lifeforce drained by a Jackal."
  health 60
  radius 20
  height 56
  mass 124
  speed 16
  painchance 200
  seesound "monster/jaklsit"
  painsound "monster/jaklpai"
  deathsound "monster/jakldth"
  activesound "monster/jaklact"
  MONSTER
  +FLOORCLIP
  +DONTHARMCLASS
  +MISSILEMORE
  states
  {
  Spawn:
    jakl AB 10 A_Look
  loop
  See:
    jakl AABBCCDD 3 A_Chase
  loop
  Melee:
    jakl EF 2 A_FaceTarget
    jakl G 5 A_CustomMeleeAttack(3, "monster/drain", "monster/drain", Melee, True)
	jakl G 0 HealThing (3)
    jakl G 5 A_CustomMeleeAttack(3, "monster/drain", "monster/drain", Melee, True)
	jakl G 0 HealThing (3)
    jakl G 5 A_CustomMeleeAttack(3, "monster/drain", "monster/drain", Melee, True)
	jakl G 0 HealThing (3)
  goto See
  Missile:
    jakl EF 5 A_FaceTarget
    jakl GGG 5 A_SpawnProjectile("JackalBolt",32,3)
  goto see
  Pain:
    jakl H 2
    jakl H 2 A_Pain
  goto See
  Death:
    jakl I 0
    jakl J 8 A_Scream
    jakl K 6
    jakl L 6 A_NoBlocking
    jakl M -1
  stop
  XDeath:
    jakl N 5
    jakl O 5 A_XScream
    jakl P 5
    jakl Q 5 A_NoBlocking
    jakl RST 5
    jakl U -1
  stop
  Raise:
    jakl ML 8
    jakl KJI 6
  goto See
  }
}
Actor JackalBolt : DoomImpBall
{
  Radius 8
  Height 6
  Speed 16
  Damage 3
  Scale 0.75
  RENDERSTYLE "ADD"
  ALPHA 0.67
  SeeSound "monster/attack"
  DeathSound "monster/shotx"
  Decal "DoomImpScorch"
  PROJECTILE

  States
  {
  Spawn:
  JBLT A 5 Bright
  Loop
  Death:
  JBLT BCDE 3 Bright
  Stop
  }
}

actor NImp : Doomimp 6464
{
	Speed 16
	PainChance 128
	RenderStyle Translucent
	Alpha 0.80
	HitObituary "$%o was put to sleep by a Nightmare Imp"
	Obituary "%o was lacerated by a Nightmare Imp."
	seesound "monster/ntrsit"
	painsound "monster/ntrpai"
	deathsound "monster/ntrdth"
	activesound "monster/ntract"
States
	{
	Spawn:
		NTRO AB 10 A_Look
		Loop
	See:
		NTRO AABBCCDD 3 A_Chase
		Loop
	Melee:
		NTRO EF 8 A_FaceTarget
		NTRO G 6 A_CustomMeleeAttack(3 * random(1, 8), "monster/melee")
		Goto See
	Missile:
		NTRO EF 8 A_FaceTarget
		NTRO G 6 A_CustomMissile("NImpBall", 32)
		Goto See
	Pain:
		NTRO H 2
		NTRO H 2 A_Pain
		Goto See
	Death:
		NTRO I 8
		NTRO J 8 A_Scream
		NTRO K 6
		NTRO L 6 A_NoBlocking
		NTRO M -1
		Stop
	XDeath:
		NTRO N 5
		NTRO O 5 A_XScream
		NTRO P 5
		NTRO Q 5 A_NoBlocking
		NTRO RST 5
		NTRO U -1
		Stop
	Raise:
		NTRO ML 8
		NTRO KJI 6
		Goto See
  }
}
actor NImpball : DoomImpBall
{
	Damage 3
	Speed 20
	FastSpeed 40
	RenderStyle Add
	Alpha 0.80
	Decal DoomImpScorch
	States
	{
	Spawn:
		NBAL AB 4 Bright
		Loop
	Death:
		NBAL CDE 6 Bright
		Stop
  }
}

ACTOR RapidFireTrooper 3201
{
	//$Category Monsters
   Health 30
   Radius 20
   Height 56
   Speed 8
   PainChance 200
   MONSTER
   +FLOORCLIP
   DropItem Clip
   SeeSound "grunt/sight"
   PainSound "grunt/pain"
   DeathSound "grunt/death"
   ActiveSound "grunt/active"
   Obituary "%o was surprised by the zombie's weaponry."
   Decal BulletChip
   States
   {
   Spawn:
      RFTR AB 10 A_Look
      Loop
   See:
      RFTR AABBCCDD 4 A_Chase
      Loop
   Missile:
      RFTR E 10 A_FaceTarget
      RFTR F 5 Bright A_PosAttack
      RFTR E 5 A_CPosRefire
      Goto Missile+1
   Pain:
      RFTR G 3
      RFTR G 3 A_Pain
      Goto See
   Death:
      RFTR H 5
      RFTR I 5 A_Scream
      RFTR J 5 A_Fall
      RFTR K 5
      RFTR L -1
      Stop
    XDeath:
      RFTR M 5
      RFTR N 5 A_XScream
      RFTR N 5
      RFTR P 5 A_Fall
      RFTR QRST 5
      RFTR U -1
      Stop
   Raise:
      RFTR KJ 5
      RFTR IH 5
      Goto See
   }
}

ACTOR ZombieScientist3
{
  Game Doom
  obituary "%o was axe-murdered by a zombie scientist."
  health 20
  mass 90
  speed 8
  Radius 20
  Height 52
  painchance 200
  seesound "grunt/sight"
  painsound "grunt/pain"
  deathsound "grunt/death"
  activesound "grunt/active"
  MONSTER
  +FLOORCLIP
  States
  {
   Spawn:
    SCZH AB 10 A_Look
    loop
  See:
    SCZH AABBCCDD 4 A_Chase
    loop
  Melee:
    SCZH E 8 A_FaceTarget
    SCZH F 16 A_CustomMeleeAttack (random (2, 6) *5, "skeleton/melee", "skeleton/swing")
    SCZH E 4
    goto See
  Pain:
    SCZH G 3
    SCZH G 3 A_Pain
    goto See
  Death:
    SCZH H 5
    SCZH I 5 A_Scream
    SCZH J 5 A_NoBlocking
    SCZH K 5
    SCZH L 5
    SCZH M 5
    SCZH N -1
    stop
  XDeath:
    SCZH O 5
    SCZH P 5 A_XScream
    SCZH Q 5 A_NoBlocking
    SCZH RSTUV 5
    SCZH W -1
    stop
  Raise:
    SCZH MLKJIH 5
    goto See
  }
}

ACTOR Priest 30118
{
Health 150
PainChance 170
Speed 8
Scale 0.90
Radius 20
Height 56
Mass 150
MONSTER
+FLOORCLIP
+DONTHURTSPECIES
-NOGRAVITY
-FLOAT
Obituary "An Acolyte was promoted for killing %o."
SeeSound "monster/acosit"
PainSound "monster/acopai"
DeathSound "monster/acodth"
ActiveSound "monster/acoact"
States
   {
   Spawn:
       ACOL AB 10 A_Look
       Loop
   See:
       ACOL AAABBB 4 A_Chase
       ACOL A 0 A_Jump(96,1)
       Loop
       ACOL A 0 A_Chase
       ACOL A 1 A_Playsound("monster/blur")
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 0 A_Jump(96,1)
       Goto See+8
       ACOL B 0
       Goto See
   Missile:
       ACOL D 8 Bright A_FaceTarget
       ACOL E 5 Bright A_FaceTarget
       ACOL F 3 Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       Goto See
   Pain:
       ACOL C 2
       ACOL C 2 A_Pain
       Goto See
   Death:
       ACOL G 8 Bright A_Scream
       ACOL H 5 Bright
       ACOL I 5 Bright
       ACOL J 5 Bright A_NoBlocking
       ACOL KLM 5 Bright
       ACOL N 5 A_CustomMissile("AcolFX1",54,0,0,0)
       ACOL O 5
       ACOL P -1
       Stop
   Raise:
       ACOL PONMLKJIHG 5
       Goto See
   }
}

ACTOR AcolFX2
{
   Radius 2
   Height 2
   Speed 0
   Scale 0.90
   PROJECTILE
   +ClientSideOnly
   RENDERSTYLE Translucent
   ALPHA 0.90
   States
   {
   Spawn:
      TNT1 A 3
      ACOL A 5 A_FadeOut(0.10)
      goto Spawn+1
   }
}

ACTOR AcolyteShot
{
   Radius 8
   Height 16
   Speed 10
   Damage 1
   RENDERSTYLE ADD
   ALPHA 0.67
   PROJECTILE
   +THRUGHOST
   +SEEKERMISSILE
   +FLOATBOB
   SeeSound "monster/acosht"
   DeathSound "monster/acohit"
   Decal "BishopScorch"
   States
   {
   Spawn:
      CFX1 A 1 Bright A_CStaffMissileSlither
      CFX1 A 1 Bright A_CStaffMissileSlither
      CFX1 B 1 Bright A_CStaffMissileSlither
      CFX1 B 1 Bright A_CStaffMissileSlither
      CFX1 B 0 Bright A_SeekerMissile(1,3)
      loop
   Death:
      CFX1 CDEFGH 3 Bright
      stop
   }
}

ACTOR AcolFX1
{
   Radius 0
   Height 2
   Speed 0
   PROJECTILE
   +ClientSideOnly
   RENDERSTYLE Translucent
   ALPHA 0.67
   States
   {
   Spawn:
      ACOL QRSTUVW 4
      Stop
   }
}

ACTOR Banshee 31118
{
  Health 800
  Radius 15
  Height 60
  Mass 50
  Speed 17
  PainChance 100
  +QUICKTORETALIATE 
  +FLOORCLIP 
  +NOTARGET
  SeeSound "Banshee/Sight"
  PainSound "Banshee/Pain"
  DeathSound "Banshee/Death"
  ActiveSound "Banshee/Active"
  MeleeSound "Banshee/Raise"
  MONSTER
  Obituary "%o Heard The Banshee's Wail"
  States
  {
  Spawn:
    BANS A 1 A_Look
    Loop
  See:
    BANS A 1 A_TakeInventory("BansheePainToken",2)
    BANS A 1 A_TakeInventory("BansheeMissile5Token",50)
    BANS A 1 A_UnSetInvulnerable
    BANS A 1 A_VileChase
    BANS A 1 A_SpawnItem("BansheeTrail",0,0)
    BANS A 0 A_Jump(20,"BansheeTeleport")
    Loop
  Missile:
    BANS A 0 A_Jump(20,"Missile3")
    BANS A 0 A_Jump(50,"Missile4")
    BANS A 0 A_Jump(256,"Missile2", "Melee","Missile1", "Missile5", "Missile6")
    Goto See
  Missile1:
    BANS B 0 A_FaceTarget
    BANS BCD 2
    BANS B 0 A_DualPainAttack ("LostSoulHexenCompatible")
    Goto See
  Missile2:  
    BANS B 0 A_FaceTarget
    BANS BCD 2
    BANS D 0 A_CustomMissile("BansheeFire",  50, 0,  -8)
    BANS D 0 A_CustomMissile("BansheeFire",  50, 0,   0)
    BANS D 0 A_CustomMissile("BansheeFire",  50, 0,   8)
    Goto See
  Missile3:  
    BANS B 0 A_FaceTarget
    BANS BCD 2 
    BANS B 0 A_Jump(256,"BansheeTeleport")
    Goto See
  Missile4:  
    BANS B 0 A_FaceTarget
    BANS BCD 2
    BANS D 0 A_CustomMissile("BansheeFire3")
    Goto See
  Missile5:  
    BANS B 0 A_FaceTarget
    BANS BCD 1
    BANS D 0 A_CustomMissile("BansheeFire4")
    BANS D 0 A_GiveInventory("BansheeMissile5Token",1)
    BANS D 0 A_JumpIfInventory("BansheeMissile5Token",50,"See")
    BANS D 1 A_CPosRefire
    Goto Missile5+2
  Missile6:  
    BANS B 0 A_FaceTarget
    BANS BCD 2
    BANS D 0 A_CustomMissile("BansheeFire5", 50, 0,-160)
    BANS D 0 A_CustomMissile("BansheeFire5", 50, 0,-128)
    BANS D 0 A_CustomMissile("BansheeFire5", 50, 0,-96 )
    BANS D 0 A_CustomMissile("BansheeFire5", 50, 0,-64 )
    BANS D 0 A_CustomMissile("BansheeFire5", 50, 0,-32 )
    BANS D 0 A_CustomMissile("BansheeFire5", 50, 0, 0  )
    BANS D 0 A_CustomMissile("BansheeFire5", 50, 0, 32 )
    BANS D 0 A_CustomMissile("BansheeFire5", 50, 0, 64 )
    BANS D 0 A_CustomMissile("BansheeFire5", 50, 0, 96 )
    BANS D 0 A_CustomMissile("BansheeFire5", 50, 0, 128)
    BANS D 4 A_CustomMissile("BansheeFire5", 50, 0, 160)
    Goto See
  Melee:
    BANS B 0 A_FaceTarget
    BANS BCD 1
    BANS D 0 A_CustomMissile("BansheeFire2", 50, 0,-160)
    BANS D 0 A_CustomMissile("BansheeFire2", 50, 0,-128)
    BANS D 0 A_CustomMissile("BansheeFire2", 50, 0,-96 )
    BANS D 0 A_CustomMissile("BansheeFire2", 50, 0,-64 )
    BANS D 0 A_CustomMissile("BansheeFire2", 50, 0,-32 )
    BANS D 0 A_CustomMissile("BansheeFire2", 50, 0, 0  )
    BANS D 0 A_CustomMissile("BansheeFire2", 50, 0, 32 )
    BANS D 0 A_CustomMissile("BansheeFire2", 50, 0, 64 )
    BANS D 0 A_CustomMissile("BansheeFire2", 50, 0, 96 )
    BANS D 0 A_CustomMissile("BansheeFire2", 50, 0, 128)
    BANS D 4 A_CustomMissile("BansheeFire2", 50, 0, 160)
    Goto See
  BansheeTeleport:
    BANS A 0 A_SetInvulnerable
    BANS A 1 A_SetTranslucent(0.90)
    BANS A 1 A_SetTranslucent(0.80)
    BANS A 1 A_SetTranslucent(0.70)
    BANS A 1 A_SetTranslucent(0.60)
    BANS A 1 A_SetTranslucent(0.50)
    BANS A 1 A_SetTranslucent(0.40)
    BANS A 1 A_SetTranslucent(0.30)
    BANS A 1 A_SetTranslucent(0.20)
    BANS A 1 A_SetTranslucent(0.10)
    BANS A 0 A_Jump(128,25)
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_ExtChase(0,0,1,1)
    TNT1 A 0 A_Jump(128,25)
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_ExtChase(0,0,1,1)
    BANS A 1 A_SetTranslucent(0.10)
    BANS A 1 A_SetTranslucent(0.20)
    BANS A 1 A_SetTranslucent(0.30)
    BANS A 1 A_SetTranslucent(0.40)
    BANS A 1 A_SetTranslucent(0.50)
    BANS A 1 A_SetTranslucent(0.60)
    BANS A 1 A_SetTranslucent(0.70)
    BANS A 1 A_SetTranslucent(0.80)
    BANS A 1 A_SetTranslucent(0.90)
    BANS A 1 A_SetTranslucent(1.0)
    BANS A 0 A_UnSetInvulnerable
    goto See    
  Heal:
    BANS BCD 5 BRIGHT
    Goto See
  Pain:
    BANS A 5 A_GiveInventory("BansheePainToken",5)
    BANS A 5 A_Pain
    BANS A 5 A_JumpIfInventory("BansheePainToken",25,"Missile4")
    Goto See
  Death:
    BANS G 2 A_Scream
    BANS H 2 A_NoBlocking
    BANS I 2 A_CustomMissile("SpawnFire", 0, 0, 0)
    BANS I 2 A_CustomMissile("SpawnFire", 0, 0, 0)
    BANS IJKLMNOPQR 2
    BANS R -1
    Stop
  }
}

actor BansheeFire
{
  Game Doom
  Radius 13
  Height 8
  Speed 15
  Damage 2
  Projectile
  +RANDOMIZE
  +RIPPER
  +DEHEXPLOSION
  +ROCKETTRAIL
  SeeSound "Banshee/ASpawn"
  DeathSound "Banshee/ADeath"
  Obituary "%o Heard The Banshee's Wail."
  Decal "DoomImpScorch"
  DamageType Fire
  States
  {
  Spawn:
    BANB A 1 BRIGHT A_SpawnItem("BansheeFireTrail",0,0)
    BANB A 4
    loop
  Death:
    BAL1 CDE 3 bright
    stop
  }
}

actor BansheeFire2
{
  Game Doom
  Radius 13
  Height 8
  Speed 15
  Damage 2
  Projectile
  +RANDOMIZE
  +DEHEXPLOSION
  +ROCKETTRAIL
  SeeSound "Banshee/ASpawn"
  DeathSound "Banshee/ADeath"
  Obituary "%o Heard The Banshee's Wail."
  Decal "DoomImpScorch"
  DamageType Fire
  States
  {
  Spawn:
    BANB A 1 BRIGHT A_SpawnItem("BansheeFireTrail",0,0)
    BANB A 4
    loop
  Death:
    BAL1 CDE 3 bright
    stop
  }
}

actor BansheeFire3
{
  Game Doom
  Radius 24
  Height 24
  Speed 15
  Damage 100
  Projectile
  +NOGRAVITY
  +SPAWNCEILING
  +SEEKERMISSILE
  +RANDOMIZE
  +DEHEXPLOSION
  +ROCKETTRAIL
  Scale 3.0
  SeeSound "Banshee/ASpawn"
  DeathSound "Banshee/ADeath"
  Obituary "%o Heard The Banshee's Wail."
  Decal "Scorch"
  DamageType Fire
  States
  {
  Spawn:
    BANB A 1 BRIGHT A_SeekerMissile (50,50)
    BANB A 0 BRIGHT A_SpawnItem("BansheeFireTrail",0,0)
    BANB A 1 BRIGHT A_GiveInventory("BansheeFire3Token",1)
    BANB A 1 BRIGHT A_JumpIfInventory("BansheeFire3Token",30,"Die")
    Goto Spawn
  Die:
    BANB A 0 A_Die
  Death:
    BAL1 CDE 3 bright
    stop
  }
}

actor BansheeFire4
{
  Game Doom
  Radius 13
  Height 8
  Speed 25
  Damage 2
  Projectile
  +RANDOMIZE
  +DEHEXPLOSION
  +ROCKETTRAIL
  SeeSound "Banshee/ASpawn"
  DeathSound "Banshee/ADeath"
  Obituary "%o Heard The Banshee's Wail."
  DamageType Fire
  States
  {
  Spawn:
    BANF ABCDEFGH 3
    BANF H 0 A_DIE
    Stop
  Death:
    BANF H 3 bright
    stop
  }
}

actor BansheeFire5
{
  Game Doom
  Radius 13
  Height 8
  Speed 20 
  Damage 2
  Projectile
  +SEEKERMISSILE
  +FLOORHUGGER
  +RIPPER
  +RANDOMIZE
  +DEHEXPLOSION
  +ROCKETTRAIL
  SeeSound "Banshee/ASpawn"
  DeathSound "Banshee/ADeath"
  Obituary "%o Heard The Banshee's Wail."
  DamageType Fire
  States
  {
  Spawn:
    BAFT A 1 BRIGHT A_SeekerMissile (50,50)
    BAFT A 2 A_SpawnItem("BansheeFireTrail2",0,0)
    BAFT A 1 BRIGHT A_GiveInventory("BansheeFire3Token",1)
    BAFT A 1 BRIGHT A_JumpIfInventory("BansheeFire3Token",30,"Die")
    Goto Spawn
  Die:
    BAFT A 0 A_Die
  Death:
    BAFT BCDEFGH 3 bright
    stop
  }
}

ACTOR BansheeTrail
{   
   Radius 20
   Height 56
   Speed 0
   PROJECTILE
   RENDERSTYLE Translucent
   ALPHA 0.90
   States
   {
   Spawn:
      TNT1 A 3
      BANS A 3 A_FadeOut(0.10)
      goto spawn+1
   }
}

ACTOR BansheeFireTrail
{   
   Radius 20
   Height 56
   Speed 0
   PROJECTILE
   RENDERSTYLE Translucent
   Scale 0.50
   ALPHA 0.90
   States
   {
   Spawn:
      TNT1 A 3
      BANF ABCDEFGH 3 Bright A_FadeOut(0.10)
      Stop
   }
}

ACTOR BansheeFireTrail2
{   
   Radius 20
   Height 56
   Speed 0
   PROJECTILE
   RENDERSTYLE Translucent
   Scale 0.50
   ALPHA 0.90
   States
   {
   Spawn:
      TNT1 A 3
      BAFT ABCDEFG 3 Bright A_FadeOut(0.10)
      Stop
   }
}

actor BansheePainToken : Ammo
{
	Inventory.MaxAmount 50
}

actor BansheeFire3Token : Ammo
{
	Inventory.MaxAmount 50
}

actor BansheeMissile5Token : Ammo
{
	Inventory.MaxAmount 50
}

ACTOR LostSoulHexenCompatible
{
  Health 100
  Radius 16
  Height 56
  Mass 50
  Speed 8
  Damage 3
  PainChance 256
  Monster
  +FLOAT
  +NOGRAVITY
  +MISSILEMORE
  +DONTFALL
  +NOICEDEATH
  AttackSound "skull/melee"
  PainSound "skull/pain"
  DeathSound "skull/death"
  ActiveSound "skull/active"
  RenderStyle SoulTrans
  Obituary "%o was spooked by a lost soul."
  States
  {
  Spawn:
    SKUL AB 10 BRIGHT A_Look
    Loop
  See:
    SKUL AB 6 BRIGHT A_Chase
    Loop
  Missile:
    SKUL C 10 BRIGHT A_FaceTarget
    SKUL D 4 BRIGHT A_SkullAttack
    SKUL CD 4 BRIGHT
    Goto Missile+2
  Pain:
    SKUL E 3 BRIGHT
    SKUL E 3 BRIGHT A_Pain
    Goto See
  Death:
    SKUL F 6 BRIGHT
    SKUL G 6 BRIGHT A_Scream
    SKUL H 6 BRIGHT
    SKUL I 6 BRIGHT A_NoBlocking
    SKUL J 6
    SKUL K 6
    Stop
  }
}

ACTOR BlackTorch 31119
{
Radius 16
Height 60
+SOLID
States
{
Spawn:
	BTOR ABCDEFGH 3 Bright
	Loop
}
}

Actor Chandelier1Switchable : SwitchableDecoration 31120
{
  Radius 10
  Height 21
  Activation THINGSPEC_Switch
  +NOGRAVITY
  +SPAWNCEILING
  +SOLID
  +USESPECIAL
  States
  {
  Spawn:
    CHAN D -1
    Stop
  Active:
    TNT1 A 0 A_PlaySound("DSCHAFIR", CHAN_BODY, 1.0, 1)
    CHAN ABC 4
    Goto Active+1
  Inactive:
    CHAN D -1 A_StopSound(CHAN_BODY)
    Stop
  }
}

Actor Chandelier1Off
{
  Radius 10
  Height 21
  +NOGRAVITY
  +SPAWNCEILING
  States
  {
  Spawn:
    CHAN D -1
    Stop
  }
}

Actor Chandelier1On
{
  Radius 10
  Height 21
  +NOGRAVITY
  +SPAWNCEILING
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_PlaySound("DSCHAFIR", CHAN_BODY, 1.0, 1)
    CHAN ABC 4
    Goto Spawn+2
  }
}

Actor Chandelier2Switchable : SwitchableDecoration 31121
{
  Radius 10
  Height 21
  Activation THINGSPEC_Switch
  +NOGRAVITY
  +SPAWNCEILING
  +SOLID
  +USESPECIAL
  States
  {
  Spawn:
    CHAN H -1
    Stop
  Active:
    TNT1 A 0 A_PlaySound("DSCHAFIR", CHAN_BODY, 1.0, 1)
    CHAN EFG 4
    Goto Active+1
  Inactive:
    CHAN H -1 A_StopSound(CHAN_BODY)
    Stop
  }
}

Actor Chandelier2Off
{
  Radius 10
  Height 21
  +NOGRAVITY
  +SPAWNCEILING
  States
  {
  Spawn:
    CHAN H -1
    Stop
  }
}

Actor Chandelier2On
{
  Radius 10
  Height 21
  +NOGRAVITY
  +SPAWNCEILING
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_PlaySound("DSCHAFIR", CHAN_BODY, 1.0, 1)
    CHAN EFG 4
    Goto Spawn+2
  }
}

Actor Chandelier3Switchable : SwitchableDecoration
{
  Radius 10
  Height 21
  Activation THINGSPEC_Switch
  +NOGRAVITY
  +SPAWNCEILING
  +SOLID
  +USESPECIAL
  States
  {
  Spawn:
    CHAN M -1
    Stop
  Active:
    TNT1 A 0 A_PlaySound("DSCHAFIR", CHAN_BODY, 1.0, 1)
    CHAN IJL 4
    Goto Active+1
  Inactive:
    CHAN M -1 A_StopSound(CHAN_BODY)
    Stop
  }
}

Actor Chandelier3Off
{
  Radius 10
  Height 21
  +NOGRAVITY
  +SPAWNCEILING
  States
  {
  Spawn:
    CHAN M -1
    Stop
  }
}

Actor Chandelier3On
{
  Radius 10
  Height 21
  +NOGRAVITY
  +SPAWNCEILING
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_PlaySound("DSCHAFIR", CHAN_BODY, 1.0, 1)
    CHAN IJL 4
    Goto Spawn+2
  }
}

Actor Chandelier4Switchable : SwitchableDecoration
{
  Radius 10
  Height 21
  Activation THINGSPEC_Switch
  +NOGRAVITY
  +SPAWNCEILING
  +SOLID
  +USESPECIAL
  States
  {
  Spawn:
    CHAN Q -1
    Stop
  Active:
    TNT1 A 0 A_PlaySound("DSCHAFIR", CHAN_BODY, 1.0, 1)
    CHAN NOP 4
    Goto Active+1
  Inactive:
    CHAN Q -1 A_StopSound(CHAN_BODY)
    Stop
  }
}

Actor Chandelier4Off
{
  Radius 10
  Height 21
  +NOGRAVITY
  +SPAWNCEILING
  States
  {
  Spawn:
    CHAN Q -1
    Stop
  }
}

Actor Chandelier4On
{
  Radius 10
  Height 21
  +NOGRAVITY
  +SPAWNCEILING
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_PlaySound("DSCHAFIR", CHAN_BODY, 1.0, 1)
    CHAN NOP 4
    Goto Spawn+2
  }
}

actor CrimsonBanner 31122
{
	+SOLID
	radius 8
	height 132
	
	states
	{
	spawn:
		BNR2 A -1
		Stop
	}
}

actor VioletBanner : CrimsonBanner 31123
{
	states
	{
	spawn:
		BNR2 B -1
		Stop
	}
}

actor GreenBanner : CrimsonBanner 31124
{
	states
	{
	spawn:
		BNR2 C -1
		Stop
	}
}

actor BlueBanner : CrimsonBanner 31125
{
	states
	{
	spawn:
		BNR2 D -1
		Stop
	}
}
ACTOR DiscipleStatue1 15740
{
	//$Title Disciple Statue Stone
	//$Category Obstacles/Disciple Statues
	//$NotAngled
	//$IsDecoration
	
	Radius 10
	Height 76
	Scale 0.7
	+SOLID
	
		States
		{
			Spawn:
				DISS A -1
				Stop
		}
}

ACTOR DiscipleStatue2 : DiscipleStatue1 15741
{
	//$Title Disciple Statue Marble
	
		States
		{
			Spawn:
				DISS B -1
				Stop
		}
}

ACTOR DiscipleStatue3 : DiscipleStatue1 15742
{
	//$Title Disciple Statue Swamp
	
		States
		{
			Spawn:
				DISS C -1
				Stop
		}
}

ACTOR DiscipleStatue4 : DiscipleStatue1 15743
{
	//$Title Disciple Statue Ice
	
		States
		{
			Spawn:
				DISS D -1
				Stop
		}
}

ACTOR DiscipleStatue5 : DiscipleStatue1 15744
{
	//$Title Disciple Statue Fire
	
		States
		{
			Spawn:
				DISS E -1
				Stop
		}
}

ACTOR DiscipleStatue6 : DiscipleStatue1 15745
{
	//$Title Disciple Statue Rust
	
		States
		{
			Spawn:
				DISS F -1
				Stop
		}
}

ACTOR DiscipleStatue7 : DiscipleStatue1 15746
{
	//$Title Disciple Statue Red
	
		States
		{
			Spawn:
				DISS G -1
				Stop
		}
}

ACTOR DiscipleStatue8 : DiscipleStatue1 15747
{
	//$Title Disciple Statue Bronze
	
		States
		{
			Spawn:
				DISS H -1
				Stop
		}
}

ACTOR DiscipleStatue9 : DiscipleStatue1 15748
{
	//$Title Disciple Statue Copper
	
		States
		{
			Spawn:
				DISS I -1
				Stop
		}
}

ACTOR DiscipleStatue10 : DiscipleStatue1 15749
{
	//$Title Disciple Statue Gold
	
		States
		{
			Spawn:
				DISS J -1
				Stop
		}
}

Actor Thrall 30119 
{ 
  Health 75
  PainChance 200
  DropItem Fire
  Scale 0.90
  Speed 8 
  Radius 20 
  Height 56 
  Mass 100 
  Monster
  +FloorClip
  +DontHurtSpecies
  Obituary "%o was killed by a lowly Cultist."
  SeeSound "monster/culsit" 
  AttackSound "monster/culatk" 
  PainSound "monster/culpai" 
  DeathSound "monster/culdth" 
  ActiveSound "monster/culact"
  States 
  { 
  Spawn: 
    CULT AB 10 A_Look 
    Loop 
  See: 
    CULT AABBCCDD 2 A_Chase 
    Loop 
  Missile:
    CULT EE 5 A_FaceTarget
    CULT F 0 Bright A_CustomMissile("ThrallShot1",42,-6,0,1,0)
    CULT F 0 Bright A_CustomMissile("ThrallShot1",42,6,0,1,0)
    CULT F 8 Bright A_PlaySound("monster/culatk")
    Goto See
  Pain: 
    CULT G 2 
    CULT G 2 A_Pain 
    Goto See 
  Death: 
    CULT H 8 
    CULT I 8 A_Scream 
    CULT J 4 
    CULT K 4 A_NoBlocking 
    CULT L 4 
    CULT M -1 
    Stop
  XDeath:
    CULT N 5 
    CULT O 5 A_XScream 
    CULT P 5 A_NoBlocking 
    CULT QRSTUV 5 
    CULT W -1 
  Raise: 
    CULT MLKJHI 5 
    Goto See 
  } 
}

Actor ThrallShot1
{
  Radius 4
  Height 6
  Speed 20
  Damage 1
  RenderStyle Add
  Alpha 0.67
  Projectile
  +ThruGhost
  DeathSound "monster/disht1"
  States
  {
  Spawn:
    CFX4 A 2 Bright
    CFX4 B 2 Bright
    Loop
  Death:
    CFX4 CDEF 3 Bright
    Stop
  }
}

//definition for the Nosferati
//he can fire multiple projectiles, seeking projectiles, teleport, perform a melee attack, or charge into melee range
Actor Nosferati 31127
{
  //$Category Monsters
  //$Title "Nosferati"
  Health 400
  Radius 20
  Height 64
  Mass 250
  Speed 12
  Painchance 64
  Monster
  +FLOAT
  +NOGRAVITY
  +MISSILEMORE
  //+TELESTOMP <- enable this if it makes sense for the game you're using him in (e.g. Hexen)
  SeeSound "nosferati/sight"
  //no attack sound assigned; I play it manually
  PainSound "nosferati/pain"
  DeathSound "nosferati/death"
  ActiveSound "nosferati/active"
  Obituary "%o was cursed by a Nosferati."
  HitObituary "%o was flayed by a Nosferati."
  States
  {
  Spawn:
    NOSF AB 20 A_Look
    Loop
  See:
    NOSF A 3 A_Chase
    NOSF A 4 A_Chase
    NOSF A 3 A_Chase
    NOSF A 4 A_Chase
    NOSF B 3 A_Chase
    NOSF B 4 A_Chase
    NOSF B 3 A_Chase
    NOSF B 4 A_Chase
    Loop
  Melee:
    TNT1 A 0 A_Stop
    NOSF H 6 A_FaceTarget
	NOSF I 6 A_FaceTarget
	NOSF J 0 A_PlaySound("nosferati/attack")
	NOSF J 12 A_CustomMeleeAttack(random(1,8)*7, "nosferati/melee", none, melee, true)
	Goto See
  Missile:
    TNT1 A 0 A_JumpIfCloser(192, "ShortRange")
	TNT1 A 0 A_JumpIfCloser(384, "MediumRange")
	Goto LongRange
  ShortRange:
    TNT1 A 0 A_Stop
    TNT1 A 0 A_Jump(176, "MultiShot")
	TNT1 A 0 A_Jump(176, "AggressiveTeleport", "Charge")
	TNT1 A 0 A_Jump(128, "Teleport")
	Goto BatShot
  MediumRange:
    TNT1 A 0 A_Stop
	TNT1 A 0 A_Jump(176, "MultiShot", "BatShot")
	TNT1 A 0 A_Jump(176, "AggressiveTeleport", "Charge")
	Goto Teleport
  LongRange:
	TNT1 A 0 A_Stop
	TNT1 A 0 A_Jump(176, "BatShot")
	TNT1 A 0 A_Jump(176, "Teleport", "Charge")
	Goto MultiShot
  MultiShot:
    NOSF C 4 A_FaceTarget
	NOSF D 4 Bright A_FaceTarget
	NOSF C 4 A_FaceTarget
	NOSF D 4 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("nosferati/attack")
	TNT1 A 0 Bright A_CustomMissile(NosferatiShot, 48, 0, 0, CMF_AIMOFFSET)
	TNT1 A 0 Bright A_CustomMissile(NosferatiShot, 48, 10, 4, CMF_AIMOFFSET)
	TNT1 A 0 Bright A_CustomMissile(NosferatiShot, 48, -10, -4, CMF_AIMOFFSET)
	NOSF E 12 Bright
	Goto See
  BatShot:
	NOSF C 4 A_FaceTarget
	NOSF F 4 Bright A_FaceTarget
	NOSF C 4 A_FaceTarget
	NOSF F 4 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("nosferati/attack")
	TNT1 A 0 Bright A_CustomMissile(NosferatiBatShot, random(16, 48), random(-16, 16), random(-8, 8), CMF_AIMOFFSET)
	TNT1 A 0 Bright A_CustomMissile(NosferatiBatShot, random(16, 48), random(-16, 16), random(-8, 8), CMF_AIMOFFSET)
	TNT1 A 0 Bright A_CustomMissile(NosferatiBatShot2, random(16, 48), random(-16, 16), random(-8, 8), CMF_AIMOFFSET)
	TNT1 A 0 Bright A_CustomMissile(NosferatiBatShot2, random(16, 48), random(-16, 16), random(-8, 8), CMF_AIMOFFSET)
	TNT1 A 0 Bright A_CustomMissile(NosferatiBatShot3, random(16, 48), random(-16, 16), random(-8, 8), CMF_AIMOFFSET)
	TNT1 A 0 Bright A_CustomMissile(NosferatiBatShot3, random(16, 48), random(-16, 16), random(-8, 8), CMF_AIMOFFSET)
	NOSF G 12 Bright
	Goto See
  Teleport:
    NOSF C 4 A_FaceTarget
	NOSF D 4 Bright A_FaceTarget
	NOSF C 4 A_FaceTarget
	NOSF D 4 Bright A_FaceTarget
	NOSF C 4 A_FaceTarget
	NOSF D 4 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("nosferati/attack")
	TNT1 A 0 Bright A_SpawnItem("NosferatiWarp", 0, 32)
    TNT1 A 0 Bright A_UnSetShootable
	NOSF C 1 A_SetTranslucent(0.9)
	NOSF C 1 A_SetTranslucent(0.8)
	NOSF C 1 A_SetTranslucent(0.7)
	NOSF C 1 A_SetTranslucent(0.6)
	NOSF C 1 A_SetTranslucent(0.5)
	NOSF C 1 A_SetTranslucent(0.4)
	NOSF C 1 A_SetTranslucent(0.3)
	NOSF C 1 A_SetTranslucent(0.2)
	NOSF C 1 A_SetTranslucent(0.1)
	TNT1 A 0 A_Jump(128,30)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander    
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Chase(0,0,CHF_NOPLAYACTIVE|CHF_NIGHTMAREFAST)
	TNT1 A 0 A_SpawnItem("NosferatiWarp", 0, 32)
	NOSF C 1 A_SetTranslucent(0.1)
	NOSF C 1 A_SetTranslucent(0.2)
	NOSF C 1 A_SetTranslucent(0.3)
	NOSF C 1 A_SetTranslucent(0.4)
	NOSF C 1 A_SetTranslucent(0.5)
	NOSF C 1 A_SetTranslucent(0.6)
	NOSF C 1 A_SetTranslucent(0.7)
	NOSF C 1 A_SetTranslucent(0.8)
	NOSF C 1 A_SetTranslucent(0.9)
	NOSF C 1 A_SetTranslucent(1.0)
	TNT1 A 0 A_SetShootable
	GoTo See
  AggressiveTeleport: //this version is designed to get him closer to the player than the "regular" teleport
    NOSF C 4 A_FaceTarget
	NOSF D 4 Bright A_FaceTarget
	NOSF C 4 A_FaceTarget
	NOSF D 4 Bright A_FaceTarget
	NOSF C 4 A_FaceTarget
	NOSF D 4 Bright A_FaceTarget
	TNT1 A 0 Bright A_PlaySound("nosferati/attack")
	TNT1 A 0 Bright A_SpawnItem("NosferatiWarp", 0, 32)
    TNT1 A 0 Bright A_UnSetShootable
	NOSF C 1 A_SetTranslucent(0.9)
	NOSF C 1 A_SetTranslucent(0.8)
	NOSF C 1 A_SetTranslucent(0.7)
	NOSF C 1 A_SetTranslucent(0.6)
	NOSF C 1 A_SetTranslucent(0.5)
	NOSF C 1 A_SetTranslucent(0.4)
	NOSF C 1 A_SetTranslucent(0.3)
	NOSF C 1 A_SetTranslucent(0.2)
	NOSF C 1 A_SetTranslucent(0.1)
	TNT1 A 0 A_Jump(128,60)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Chase(0,0,CHF_NOPLAYACTIVE|CHF_NIGHTMAREFAST)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Chase(0,0,CHF_NOPLAYACTIVE|CHF_NIGHTMAREFAST)
	TNT1 A 0 A_SpawnItem("NosferatiWarp", 0, 32)
	NOSF C 1 A_SetTranslucent(0.1)
	NOSF C 1 A_SetTranslucent(0.2)
	NOSF C 1 A_SetTranslucent(0.3)
	NOSF C 1 A_SetTranslucent(0.4)
	NOSF C 1 A_SetTranslucent(0.5)
	NOSF C 1 A_SetTranslucent(0.6)
	NOSF C 1 A_SetTranslucent(0.7)
	NOSF C 1 A_SetTranslucent(0.8)
	NOSF C 1 A_SetTranslucent(0.9)
	NOSF C 1 A_SetTranslucent(1.0)
	TNT1 A 0 A_SetShootable
	Goto See
  Charge: //note that this does no damage; it's just to get him into melee range quickly
    NOSF C 8 A_FaceTarget
	TNT1 A 0 A_PlaySound("nosferati/attack")
	TNT1 A 0 A_SkullAttack
	NOSF CCCCCCCCCC 1 A_SpawnItemEx("NosferatiSpeedTrail", 0, 0, 0, 0, 0, 0, 0)
	TNT1 A 0 A_SkullAttack
	NOSF CCCCCCCCCC 1 A_SpawnItemEx("NosferatiSpeedTrail", 0, 0, 0, 0, 0, 0, 0)
	TNT1 A 0 A_SkullAttack
	NOSF CCCCCCCCCC 1 A_SpawnItemEx("NosferatiSpeedTrail", 0, 0, 0, 0, 0, 0, 0)
	TNT1 A 0 A_SkullAttack
	NOSF CCCCCCCCCC 1 A_SpawnItemEx("NosferatiSpeedTrail", 0, 0, 0, 0, 0, 0, 0)
	TNT1 A 0 A_SkullAttack
	NOSF CCCCCCCCCC 1 A_SpawnItemEx("NosferatiSpeedTrail", 0, 0, 0, 0, 0, 0, 0)
	TNT1 A 0 A_SkullAttack
	NOSF CCCCCCCCCC 1 A_SpawnItemEx("NosferatiSpeedTrail", 0, 0, 0, 0, 0, 0, 0)
	TNT1 A 0 A_Stop
	GoTo See
  Pain:
    NOSF K 3
    NOSF K 3 A_Pain
    Goto See
  Death:
    NOSF L 6
	NOSF M 6 A_Scream
    NOSF NO 6
    NOSF P 6 A_NoBlocking
    NOSF QR 6
	TNT1 A 0 A_SetFloorClip
	NOSF SSSSSSSSSSSSSSSSSSSS 6 A_SpawnItemEx("NosferatiPuff", random(1,10), random(1,10), random(4, 6), 0, 0, 1)
	NOSF S -1
    Stop
  Ice:
    NOSF T 5 A_FreezeDeath
    NOSF T 1 A_FreezeDeathChunks
    Wait
  Raise: //you can disable this if you're playing in a non-raise game environment
    NOSF SRQPONML 6
	TNT1 A 0 A_SetShootable //hold-over from Disciple script; I don't *think* this is necessary
	Goto See
  }
}

//his projectile; based off the Disciple's projectile from Heretic
Actor NosferatiShot
{
  Radius 10
  Height 6
  Speed 15
  FastSpeed 20
  Damage 3
  Projectile
  -ACTIVATEIMPACT
  -ACTIVATEPCROSS
  RenderStyle Add
  Decal "WizardScorch"
  DeathSound "nosferati/shothit"
  States
  {
  Spawn:
	NOSB AA 1 BRIGHT A_Weave(2, 2, 2, 1)
	TNT1 A 0 BRIGHT A_CustomMissile("NosferatiShotTrail", 0, 0, 0)
	NOSB AA 1 BRIGHT A_Weave(2, 2, 2, 1)
	TNT1 A 0 BRIGHT A_CustomMissile("NosferatiShotTrail", 0, 0, 0)
	NOSB AA 1 BRIGHT A_Weave(2, 2, 2, 1)
	TNT1 A 0 BRIGHT A_CustomMissile("NosferatiShotTrail", 0, 0, 0)
	NOSB BB 1 BRIGHT A_Weave(2, 2, 2, 1)
	TNT1 A 0 BRIGHT A_CustomMissile("NosferatiShotTrail", 0, 0, 0)
	NOSB BB 1 BRIGHT A_Weave(2, 2, 2, 1)
	TNT1 A 0 BRIGHT A_CustomMissile("NosferatiShotTrail", 0, 0, 0)
	NOSB BB 1 BRIGHT A_Weave(2, 2, 2, 1)
	TNT1 A 0 BRIGHT A_CustomMissile("NosferatiShotTrail", 0, 0, 0)
    Loop
  Death:
    NOSB CDEFG 5 BRIGHT
    Stop
  }
}

//trail effect for his projectile
Actor NosferatiShotTrail
{   
   Radius 0
   Height 1
   PROJECTILE
   RenderStyle Add
   Alpha 0.9
   States
   {
   Spawn:
	  TNT1 A 2 Bright
      NOSB C 1 Bright
	  NOSB DEEEEEEE 1 Bright A_FadeOut(0.1)
      Stop 
   }
}

//special homing projectile
//it occasionally jumps to a non-homing state to induce variance in its flight path, so they don't wind up overlapping as often
Actor NosferatiBatShot
{
  Radius 10
  Height 6
  Speed 10
  FastSpeed 20
  Damage 1
  Projectile
  +SEEKERMISSILE
  +BLOODSPLATTER
  +FLOATBOB
  +RANDOMIZE
  -ACTIVATEIMPACT
  -ACTIVATEPCROSS
  RenderStyle Translucent
  Alpha 0.9
  Decal "BatDecal"
  SeeSound "nosferati/bats"
  DeathSound "nosferati/bathit"
  States
  {
  Spawn:
    NBAT ABCBABCB 3 Bright
	TNT1 A 0 A_Jump(128, "HomingFlight")//has a chance to go straight to its homing state instead of regular state
  RegularFlight: //this state is entered occasionally in order to induce some variance in the bats' flight path
    NBAT ABCB 3 Bright
  HomingFlight:
    TNT1 A 0 A_Jump(128, 2)//has a 50% chance to NOT play its "idle" sound
	TNT1 A 0 A_PlaySound("nosferati/bats")
	NBAT ABCB 3 Bright A_SeekerMissile(10, 20, SMF_PRECISE)
	TNT1 A 0 A_Jump(128, "RegularFlight")//has a chance to jump to its non-homing state temporarily
	Loop
  Death:
    TNT1 A 0 A_ChangeFlag("FLOATBOB", false)
	TNT1 A 0 A_SpawnItemEx("blood", 0, 0, 0, random(3,5), random(0,2), random(1,3), random(140,220))
	TNT1 A 0 A_SpawnItemEx("blood", 0, 0, 0, random(3,5), random(0,2), random(1,3), random(140,220))
	TNT1 A 0 A_SpawnItemEx("blood", 0, 0, 0, random(3,5), random(0,2), random(1,3), random(140,220))
	NBAT AAAAAAAA 3 A_FadeTo(0.1, 0.1, true)
	Stop
  XDeath:
	TNT1 A 0 A_ChangeFlag("FLOATBOB", false)
	NBAT AAAAAAAA 3 A_FadeTo(0.1, 0.1, true)
	Stop
  }
}

//alternate version, with a horizontal weave thrown in
Actor NosferatiBatShot2 : NosferatiBatShot
{
  States
  {
  RegularFlight:
	NBAT ABCB 3 Bright A_Weave(2, 0, 2, 0)
  HomingFlight:
    TNT1 A 0 A_Jump(128, 2)//has a 50% chance to NOT play its "idle" sound
	TNT1 A 0 A_PlaySound("nosferati/bats")
	NBAT A 3 Bright A_Weave(2, 0, 2, 0)
	TNT1 A 0 A_SeekerMissile(10, 20, SMF_PRECISE)
	NBAT B 3 Bright A_Weave(2, 0, 2, 0)
	TNT1 A 0 A_SeekerMissile(10, 20, SMF_PRECISE)
	NBAT C 3 Bright A_Weave(2, 0, 2, 0)
	TNT1 A 0 A_SeekerMissile(10, 20, SMF_PRECISE)
	NBAT B 3 Bright A_Weave(2, 0, 2, 0)
	TNT1 A 0 A_SeekerMissile(10, 20, SMF_PRECISE)
	TNT1 A 0 A_Jump(128, "RegularFlight")//has a chance to jump to its non-homing state temporarily
	Loop
  }
}

//another alternate version; this one removes the floatbob but keeps the weave
Actor NosferatiBatShot3 : NosferatiBatShot
{
  -FLOATBOB
}

//visual effect when he warps; re-colored Hexen teleport fog
Actor NosferatiWarp
{
  Radius 20
  Height 30
  +NOBLOCKMAP
  +NOGRAVITY
  +DROPOFF
  RenderStyle Add
  Alpha 0.7
  //Scale 0.75
  states
  {
  Spawn:
    NOSW ABCDEFGHGFEDC 4 Bright
    Stop
  }
}

//blur effect produced when he does his charge
Actor NosferatiSpeedTrail
{   
   Radius 0
   Height 1
   PROJECTILE
   RenderStyle Translucent
   Alpha 0.9
   States
   {
   Spawn:
	  TNT1 A 2
      NOSF C 1
	  NOSF CCCCCCCC 1 A_FadeOut(0.1)
      Stop 
   }
}

//puff effect produced by his corpse
Actor NosferatiPuff : BulletPuff
{
  Scale 0.5
  States
  {
  Spawn:
    NPUF A 4 bright
    NPUF B 4
  Melee:
    NPUF CDE 4
    Stop
  }
}