actor TritemCyber : Cyberdemon
{
	Health 6000
	MinMissileChance 60
	+MISSILEEVENMORE
}

Actor MAP70_Rabbit 
{
  Monster
  Health 25
  Radius 10
  Height 15
  Speed 4
  Mass 100
  Scale 1
  PainChance 255
  -COUNTKILL
  -SHOOTABLE
  States
  {
  Spawn:
    RABI A 10
	Goto See
  See:
	RABR AABBCCAABBCCAABBCC 3 A_Wander
	TNT1 A 0
	{
		if (Random(0, 255) < 25)
		{
			A_PlaySound("Squeaks");
		}
	}
	TNT1 A 0 A_Jump(28,"Still")
	Loop
  Still:
	RABI A 50
	TNT1 A 0
	{
		if (Random(0, 255) < 25)
		{
			A_PlaySound("Purrs");
		}
	}
	RABI A 50
	TNT1 A 0 A_Jump(56,"Chew")
	TNT1 A 0 A_Jump(28,"See")
  Chew:
	RABI BBBB 3
	{
		if (Random(0, 255) < 25)
		{
			A_PlaySound("RabbitChew");
		}
	}
	RABI CCCDDDCCCDDDCCCDDDCCCDDDCCC 3
	RABI B 10
	TNT1 A 0 A_Jump(28,"Still")
	TNT1 A 0 A_Jump(56,"See")
	loop
  Pain:
	RABR A 1
	Goto RunAway
  RunAway:
	TNT1 A 0 A_ChangeFlag("Frightened", True)
	TNT1 A 0 A_SetSpeed(10,AAPTR_DEFAULT)
	RABR AABBCCAABBCCAABBCCAABBCCAABBCC 2 A_Chase
	RABR AABBCCAABBCCAABBCCAABBCCAABBCC 2 A_Chase
	RABR AABBCCAABBCCAABBCCAABBCCAABBCC 2 A_Chase
	RABR AABBCCAABBCCAABBCCAABBCCAABBCC 2 A_Chase
	RABR AABBCCAABBCCAABBCCAABBCCAABBCC 2 A_Chase
	TNT1 A 0 A_SetSpeed(4,AAPTR_DEFAULT)
	TNT1 A 0 A_ChangeFlag("Frightened", False)
	Goto See
  Death:
	RABD A 1 A_PlaySound("RabDeath")
	RABD AABBBBCCCCDDDDEEEEFFFFGGGG 3
	RABD G -1
	Stop
  }
}

actor MAP70_DivineShadow : Actor
{
	//$Category Monsters
	//$Sprite VIL2G1
	//$Title Divine Shadow

	Health 3500
	Radius 20
	Height 56
	Mass 500
	Speed 20
	PainChance 0
	BloodColor "00 80 00"

	DamageFactor BFGSplash, 0.5

	Species "DivineShadow"
	Monster

	//RenderStyle Add
	//Alpha 0.5

	+QUICKTORETALIATE
	+FLOORCLIP
	+NOTARGET
	+MISSILEMORE
	+MISSILEEVENMORE
	+BOSS
	+DONTTHRUST
	MinMissileChance 0
	MaxTargetRange 1000

	SeeSound "vile/sight"
	PainSound "vile/pain"
	DeathSound "vile/death"
	ActiveSound "vile/active"
	MeleeSound "vile/stop"

	Obituary "%o was disintegrated by a Divine Shadow."

	States
	{
	Spawn:
		VIL1 AB 10 A_Look
		loop

	See:
		VIL1 AABBCC 2 A_Chase
		loop

	Missile:
		TNT1 A 0 A_Jump(64, "MissileLoopStart")
		//goto MissileSingle

	MissileSingle:
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 ACS_NamedExecuteWithResult("DivineShadow::HoldVile", 0, 0, 0, 0)
		TNT1 A 0 A_CustomMissile("DivineShadowAtkLarge", 50.0, 0)
		TNT1 A 0 A_PlaySound("weapons/bfgf")
		VIL2 G 4 BRIGHT
		VIL2 HIJKLMNONP 4 BRIGHT
		goto See

	MissileLoopStart:
		TNT1 A 0 ACS_NamedExecuteWithResult("DivineShadow::Circle", 0, 0, 0, 0)
		goto MissileLoop

	MissileLoop:
		VIL2 A 1 BRIGHT
		loop

	Death:
		VIL3 R 7 A_Scream
		VIL3 S 7 A_NoBlocking
		VIL3 TUWVXY 7
		VIL3 Z -1
		stop
	}
}

actor DivineShadowAtkSmall : BFGBall
{
	Scale 0.5
	Alpha 1.0
	Damage (random(25, 35))
	RenderStyle Add

	+MTHRUSPECIES

	States
	{
	Death:
		BFE1 ABC 8 BRIGHT
		//BFE1 C 8 BRIGHT A_BFGSpray("BFGExtra", 1, 2) // spray doesn't behave correctly here
		BFE1 DEF 8 BRIGHT
		stop
	}
}

actor DivineShadowAtkTrail
{
	+NOINTERACTION
	+NOGRAVITY

	RenderStyle Add
	Alpha 0.8

	States
	{
	Spawn:
		BFS1 AB 1 BRIGHT
		TNT1 A 0 A_FadeOut(0.1, FTF_REMOVE)
		TNT1 A 0 A_SetScale(scalex-0.1)
		loop
	}
}

actor DivineShadowAtkLarge : BFGBall
{
	Alpha 1.0
	RenderStyle Add
	Speed 20
	Damage 30

	+SEEKERMISSILE
	+MTHRUSPECIES

	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteWithResult("DivineShadow::HoldBall", 0, 0, 0, 0) // basically, this holds the projectile in place for a bit
		BFS2 ABCDEF 6 BRIGHT
		goto SpawnLoop
	SpawnLoop:
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 G 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 G 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 G 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 G 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 H 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 H 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 H 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 H 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		loop
	Death:
		BFE1 ABC 8 Bright
		//BFE1 C 8 Bright A_BFGSpray
		BFE1 DEF 8 Bright
		Stop
	}
}

Actor Diabloist : Archvile
{
  Obituary "%o was set ablaze by a Diabloist."
  Health 1400
  Radius 20
  Height 56
  Mass 500
  Speed 15
  PainChance 10
  BloodColor "08 08 08"
  Monster
  +FireResist
  +FloorClip
  +NoTarget
  +NoRadiusDmg
  +MissileMore
  +Boss
  +DontHurtSpecies
  SeeSound "Monster/diasit"
  PainSound "Monster/diapai"
  DeathSound "Monster/diadth"
  ActiveSound "Monster/diaact"
  States
  {
  Spawn:
    DIAB AB 10 A_Look
    Loop
  See:
    DIAB AABBCCDDEEFF 2 A_Chase
    Loop
  Missile:
    DIAB G 0 Bright A_Jump(128, "Missile2")
    DIAB G 0 Bright A_FaceTarget
    DIAB G 3 Bright A_FaceTarget
    DIAB H 3 Bright A_FaceTarget
    DIAB I 3 A_CustomMissile("DFire", 32, 0, 0)
    DIAB H 3 Bright A_FaceTarget
    DIAB G 3 Bright A_FaceTarget
    DIAB H 3 Bright A_FaceTarget
    DIAB I 3 Bright A_FaceTarget
    DIAB H 3 Bright A_FaceTarget
    DIAB G 3 Bright A_FaceTarget
    DIAB H 3 Bright A_FaceTarget
    DIAB I 3 Bright A_FaceTarget
    DIAB H 3 Bright A_FaceTarget
    DIAB G 3 Bright A_FaceTarget
    DIAB H 3 Bright A_FaceTarget
    DIAB I 3 Bright A_FaceTarget
    DIAB G 3 Bright A_FaceTarget
    DIAB H 3 Bright A_FaceTarget
    DIAB I 3 Bright A_FaceTarget
    DIAB G 0 Bright A_Jump(128, "Missile3")
    Goto See
  Missile2:
    DIAB N 5 Bright A_FaceTarget
    DIAB O 5 Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB P 0 Bright A_FaceTarget
    DIAB P 5 Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB N 0 Bright A_FaceTarget
    DIAB N 5 Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB O 0 Bright A_FaceTarget
    DIAB O 5 Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB P 0 Bright A_FaceTarget
    DIAB P 5 Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB N 0 Bright A_FaceTarget
    DIAB N 5 Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB O 0 Bright A_FaceTarget
    DIAB O 5 Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB P 0 Bright A_FaceTarget
    DIAB P 5 Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB N 0 Bright A_FaceTarget
    DIAB N 5 Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB O 0 Bright A_FaceTarget
    DIAB O 5 Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB P 0 Bright A_FaceTarget
    DIAB P 5 Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB N 0 Bright A_FaceTarget
    DIAB N 5 Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB O 0 Bright A_FaceTarget
    DIAB P 5 Bright
    DIAB P 0 Bright A_Jump(64, "Missile3")
    DIAB P 0 Bright A_Jump(128, "Missile4")
    Goto See
  Missile3:
    DIAB GHIJKLM 5 Bright A_FaceTarget
    DIAB N 5 Bright A_FaceTarget
    DIAB O 1 Bright A_Playsound ("weapons/firbfi")
    DIAB O 4 Bright A_CustomMissile ("DMissile",32,0,0)
    DIAB P 5 Bright
    DIAB P 0 Bright A_Jump (128,1)
    Goto See
  Missile4:
    DIA2 A 8 Bright A_FaceTarget
    DIA2 B 8 Bright A_FaceTarget
    DIA2 C 0 Bright A_CustomMissile ("DTracer",0,-40,0)
    DIA2 C 8 Bright A_CustomMissile ("DTracer",0,40,0)
    Goto See
  Pain:
    DIAB Q 5
    DIAB Q 5 A_Pain
    Goto See
  Death:
    DIAB Q 7
    DIAB R 7 A_Scream
    DIAB S 7 A_NoBlocking
    DIAB TUVW 7
    DIAB XY 5
    DIAB Z -1
    Stop
  }
}

Actor DFire
{
  Obituary "%o was set ablaze by a Diabloist."
  Radius 0
  Height 1
  Speed 0
  RenderStyle Add
  DamageType Fire
  ALPHA 1.00
  +NoGravity
  +SeekerMissile
  +NoTarget
  +NoDamageThrust
  States
  {
  Spawn:
    HLFR A 2 Bright A_StartFire
    TNT1 A 0 Bright A_Explode(4, 32)
    HLFR B 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(4, 32)
    HLFR A 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(4, 32)
    HLFR B 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(4, 32)
    HLFR C 2 Bright A_FireCrackle
    TNT1 A 0 Bright A_Explode(4, 32)
    HLFR B 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(5, 32)
    HLFR C 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(5, 32)
    HLFR B 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(5, 32)
    HLFR C 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(5, 32)
    HLFR D 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(5, 32)
    HLFR C 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(5, 32)
    HLFR D 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(5, 32)
    HLFR C 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(5, 32)
    HLFR D 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(5, 32)
    HLFR E 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(5, 32)
    HLFR D 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(5, 32)
    HLFR E 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(5, 32)
    HLFR D 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(4, 32)
    HLFR E 2 Bright A_FireCrackle
    TNT1 A 0 Bright A_Explode(4, 32)
    HLFR F 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(3, 32)
    HLFR E 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(3, 32)
    HLFR F 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(3, 32)
    HLFR E 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(2, 32)
    HLFR F 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(2, 32)
    HLFR G 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(2, 32)
    HLFR H 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(1, 32)
    HLFR G 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(1, 32)
    HLFR H 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(1, 32)
    HLFR G 2 Bright A_Fire
    TNT1 A 0 Bright A_Explode(1, 32)
    HLFR H 2 Bright A_Fire
    Stop
  }
}

ACTOR DFlare
{
  Radius 5
  Height 5
  Speed 25
  Damage 4
  SpawnID 252
  RenderStyle Add
  DamageType Fire
  Alpha 0.85
  Projectile
  +ThruGhost
  Obituary "%o was set ablaze by a Diabloist."
  Seesound "weapons/firmfi"
  DeathSound "weapons/firex4"
  States
  {
  Spawn:
    VBAL AB 3 Bright A_SpawnItemEx("MFlareFX", 0, 0, 0, 0, 0, 0, 0, 128)
    Loop
  Death:
    CBAL CDEFG 3 Bright
    Stop
  }
}

Actor DMissile : CFlameMissile
{
  +ThruGhost
}

Actor DTracer
{
  Radius 5
  Height 5
  Speed 15
  ReactionTime 175
  Damage 10
  DamageType Fire
  RenderStyle Add
  Alpha 0.67
  Projectile
  +SeekerMissile
  +FloorHugger
  +ThruGhost
  -NoGravity
  Obituary "%o was set ablaze by a Diabloist."
  Seesound "weapons/diasht"
  DeathSound "weapons/firex3"
  States
  {
  Spawn:
    TNT1 A 1 Bright A_SeekerMissile(10, 15)
    TNT1 A 0 Bright A_Countdown
    TNT1 A 0 Bright A_SpawnItemEx("DTracerPuff", 0, 0, 0, 0, 0, 0, 0, 128)
    Loop
  Death:
    FTRA K 4 Bright
    FTRA L 4 Bright A_Explode(64, 64)
    FTRA MNO 3 Bright
    Stop
  }
}

Actor MFlareFX
{
  Radius 0
  Height 1
  Speed 0
  Projectile
  RenderStyle Add
  Alpha 0.67
  States
  {
  Spawn:
    FDFX ABCDEF 4 Bright
    Stop
  }
}

Actor DTracerPuff
{
  Radius 1
  Height 1
  Speed 0
  RenderStyle Add
  DamageType Fire
  Alpha 0.67
  Projectile
  +FloorHugger
  -NoGravity
  States
  {
  Spawn:
    FTRA ABCDEFGHIJ 3 Bright A_Explode(4, 8)
    stop
  }
}

Actor DMissileTrail : CFlameFloor
{
  +ThruGhost
}

Actor DMissileCircle : CircleFlame
{
 +ThruGhost
}

ACTOR ZombieScientist2
{
  Game Doom
  obituary "%o was prised open 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:
    SCZC AB 10 A_Look
    loop
  See:
    SCZC AABBCCDD 4 A_Chase
    loop
  Melee:
    SCZC E 8 A_FaceTarget
    SCZC F 16 A_CustomMeleeAttack (random (2, 6) *5, "CrowbarHit", "skeleton/swing")
    SCZC E 4
    goto See
  Pain:
    SCZC G 3
    SCZC G 3 A_Pain
    goto See
  Death:
    SCZC H 5
    SCZC I 5 A_Scream
    SCZC J 5 A_NoBlocking
    SCZC K 5
    SCZC L 5
    SCZC M 5
    SCZC N -1
    stop
  XDeath:
    SCZC O 5
    SCZC P 5 A_XScream
    SCZC Q 5 A_NoBlocking
    SCZC RSTUV 5
    SCZC W -1
    stop
  Raise:
    SCZC MLKJIH 5
    goto See
  }
}
