
// ------------------------------------------------------------
//   Archvile
// ------------------------------------------------------------

ACTOR BloodyHellFire
{
	+ISMONSTER
	+LOOKALLAROUND
	Damagetype "Thermal"
	Renderstyle Add
	Alpha 0.8
	Radius 8
	Height 36
	damage 24
	MeleeRange 24
	Speed 6
	maxstepheight 1024
	maxdropoffheight 1024
	SeeSound "misc/firecrkl"
	//ActiveSound "misc/firecrkl"
	DeathSound "misc/firecrkl"
	Obituary "%o was roasted by an archvile."
	States
	{
	Spawn:
		FIRE A 0
		FIRE AB 2 BRIGHT A_Look
		loop
	See:
		TNT1 A 0 A_PlaySound ("misc/firecrkl")
		TNT1 A 0 A_JumpIfInventory ("Timer", 96, "Death")
		TNT1 A 0 A_GiveInventory ("Timer", random(1,2))
		FIRE CCCDDD 1 BRIGHT A_Chase
		FIRE D 0 A_CustomMissile ("BloodyHellFireTail", 0, 0, 0, 2, 0)
		loop
	Missile:
		TNT1 A 0 A_JumpIfCloser (128, 3)
		TNT1 A 0 A_FaceTarget
		FIRE C 1 BRIGHT A_CustomMissile ("HeckFire", 0, 0, 0)
		goto See
		FIRE CDCD 1 BRIGHT A_Wander
		goto See
	Melee:
		TNT1 A 0 A_FaceTarget
		FIRE CD 2 BRIGHT A_Recoil (-2)
		FIRE E 0 BRIGHT A_VileAttack
		FIRE EFGHABCD 2 BRIGHT
		TNT1 A 0 A_GiveInventory ("Timer", 96)
		goto See
	Death:
		FIRE E 2 BRIGHT A_Scream
		FIRE F 2 BRIGHT A_NoBlocking
		FIRE EFEFGH 2 BRIGHT
		Stop
	}
}
ACTOR BloodyHellFireTail
{
	projectile
	+floorhugger
	-solid
	+slidesonwalls
	+noexplodefloor
	RenderStyle Add
	Damagetype "Thermal"
	Alpha 0.6
	scale 0.8
	speed 2
	seesound "misc/firecrkl"
	States
	{
	Spawn:
		FIRE CDCDC 2 BRIGHT
		FIRE BABA 2 BRIGHT A_FadeOut (0.2)
		Stop
	}
}


ACTOR HeckFire
{
	projectile
	+ripper
	-nogravity
	gravity 0.6
	+slidesonwalls
	+noexplodefloor
	+seekermissile
	+nodamagethrust
	+bloodlessimpact
	-noblockmap
	damagetype "Thermal"
	renderstyle add
	alpha 0.7
	Speed 10
	radius 8
	height 16
	Damage (random(0,2))
	States
	{
	Spawn:
		TNT1 A 0
		FIRE ABAB 2 BRIGHT
		TNT1 A 0 A_Gravity
		FIRE ABAB 2 BRIGHT A_SeekerMissile (2, 4)
	See:
		FIRE A 2 BRIGHT A_PlaySound ("misc/firecrkl")
		FIRE B 2 BRIGHT A_NoGravity
		FIRE ABAB 2 BRIGHT A_SeekerMissile (4, 8)
		FIRE A 2 BRIGHT A_Jump (24, 2)
		FIRE B 2 BRIGHT A_Gravity
		Loop
	Death:
		FIRE CDCDEFEFGH 2 BRIGHT
		Stop
	}
}

ACTOR ArchFiend : Archvile replaces ArchVile
{
	Radius 16
	Height 56
	Scale 0.8
	RenderStyle Add
	BloodColor "ff ff 44"
	Speed 12
	PainChance 72
	Health 1000000
//	+NODAMAGE
	+NORADIUSDMG
	+SHADOW
//	-SOLID
	-NOTARGET
	DropItem Megasphere
	States
	{
	See:
		VILE AABBCCDDEEFF 2 A_VileChase
		Goto See+1
	Missile:
		VILE G 8 BRIGHT A_FaceTarget
		VILE H 0 A_ChangeFlag ("SHOOTABLE", 1)
		VILE H 3 BRIGHT A_ChangeFlag ("FRIGHTENED", 0)
		VILE HHH 3 BRIGHT A_CustomMissile ("HeckFire", 16, 0, random(-4,4))
		VILE IJ 8 BRIGHT
		VILE K 3 BRIGHT
		VILE KKK 3 BRIGHT A_CustomMissile ("HeckFire", 16, 0, 8)
		VILE LM 8 BRIGHT
		VILE N 3 BRIGHT
		VILE NNN 3 BRIGHT A_CustomMissile ("HeckFire", 16, 0, -8)
		VILE O 8 BRIGHT A_SpawnItemEx ("BloodyHellFire", 4,0,0, 0,0,0, 0,32,0)
		VILE P 20 BRIGHT
		Goto See
	Heal:
		VILE A 0 A_ChangeFlag ("SHOOTABLE", 1)
		VILE "[\]" 10 BRIGHT A_ChangeFlag ("FRIGHTENED", 0)
		Goto See
	Pain:
		TNT1 A 0 A_JumpIf (alpha < 0.6, "Dying")
		TNT1 A 0 A_SpawnItem ("DistantRocket", 1, 1, 0, 0)
		VILE Q 0 A_SpawnItem ("SpawnFire", 0.1, 28, 0, 0)
		VILE Q 0 A_Explode (46, 196)
		VILE Q 0 bright Radius_Quake (3, 36, 3, 8, 0)
		VILE Q 0 A_ChangeFlag ("SHOOTABLE", 0)
		VILE Q 0 A_ChangeFlag ("FRIGHTENED", 1)
		VILE Q 2 A_Pain
		VILE Q 20 A_FadeOut (0.06)
		goto Pained
	Pained:
		VILE AAABBBCCCDDDEEEFFF 1 A_VileChase
		VILE F 0 A_Jump (32, 1)
		loop
		VILE F 0 A_ChangeFlag ("FRIGHTENED", 0)
		VILE F 0 A_ChangeFlag ("SHOOTABLE", 1)
		goto See
	Dying:
		VILE Q 0 bright A_ChangeFlag ("nodamage", 0)
		VILE Q 0 bright A_SetTranslucent (0.6,1)
		VILE Q 0 bright A_Die
		goto Death
	Death:
		TNT1 A 0 A_SpawnItemEx ("tempshieldyellow", 0,0,0, 0,0,0, 0,32)
		VILE Q 42 bright A_Pain
		VILE Q 0 A_FaceTarget
		VILE Q 0 Radius_Quake (2, 40, 0, 12, 0)
		VILE G 6 bright A_SetTranslucent (0.8, 1)
		VILE G 6 A_SetTranslucent (0.4, 1)
		VILE G 6 bright A_SetTranslucent (0.8, 1)
		VILE G 6 A_SetTranslucent (0.4, 1)
		VILE G 6 bright A_Pain
		VILE Q 0 Radius_Quake (4, 40, 1, 12, 0)
		VILE G 4 bright A_SetTranslucent (0.8, 1)
		VILE G 4 A_SetTranslucent (0.4, 1)
		VILE G 4 bright A_SetTranslucent (0.8, 1)
		VILE G 4 A_SetTranslucent (0.4, 1)
		VILE G 4 bright A_Pain
		VILE G 2 bright A_SetTranslucent (0.8, 1)
		VILE G 2 A_SetTranslucent (0.4, 1)
		VILE G 2 bright A_SetTranslucent (0.8, 1)
		VILE G 2 A_SetTranslucent (0.4, 1)
		VILE G 0 A_SetTranslucent (1, 1)
		VILE Q 0 Radius_Quake (6, 8, 1, 12, 0)
		VILE GGG 2 bright A_Pain
	XDeath:
		VILE Q 0 A_SpawnItem ("SpawnFire", 0.1, 28, 0, 0)
		TNT1 AA 0 A_SpawnItemEx ("DistantRocket", 0,0,0, 0,0,0, 0,32,0)
		VILE Q 0 A_PlayWeaponSound ("weapons/rocklx")
		VILE Q 0 A_Explode (72, 196)
		VILE Q 6 bright A_Scream
		VILE Q 14 bright Radius_Quake (8, 66, 3, 12, 0)
		VILE Q 0 A_SpawnItem ("SpawnFire", 0.1, 30, 0, 0)
		VILE Q 0 A_SpawnItem ("SpawnFire", 0.6, 28, 0, 0)
		VILE QQQQQQQQ 0 A_CustomMissile ("HeckFire", random(12, 32), 0, random(0, 360), 2, random(-2, 12))
		goto Fade
	Fade:
		VILE Q 2 A_SpawnItemEx ("VileShard", random(-4,4),random(-4,4),random(28, 48), 0,0,0, random(0,360),32)
		VILE Q 8 A_FadeOut (0.05)
		VILE Q 0 A_JumpIf (alpha < 0.10, 1)
		loop
		VILE Q 8 A_FadeOut (0.04)
		TNT1 A 8
		TNT1 A 0 A_GivetoTarget("HDKillCount",1)
		TNT1 A 0 ACS_ExecuteAlways(558,0,0,1,50)
		TNT1 A 0 A_NoBlocking
		stop
	}
}
actor ArchAngel : ArchFiend 23010
{
	+friendly
	maxstepheight 96
	maxdropoffheight 96
	states
	{
	Fade:
		VILE Q 2 A_SpawnItem ("VileShard", 0.1, random(28, 48), 1, 0)
		VILE Q 8 A_FadeOut (0.05)
		VILE Q 0 A_JumpIf (alpha < 0.10, 1)
		loop
		VILE Q 8 A_FadeOut (0.04)
		TNT1 A 8
		TNT1 A 0 A_NoBlocking
		stop
	}
}

actor VileShard
{
	+ismonster
	+float
	+nogravity
	+noclip
	+lookallaround
	translation 1
	scale 0.6
	radius 0
	height 0
	renderstyle add
	speed 5
	states
	{
	spawn:
		APLS A 0
		APLS A 0 A_SetGravity (0.1)
		APLS AB 1 bright A_Look
		loop
	see:
		APLS A 0 A_Jump (64, 2)
		APLS A 0 ThrustThingZ (0, random(-4, 8), 0, 0)
		APLS A 2 bright A_JumpIf(alpha < 0.1, "see2")
		APLS B 2 A_Wander
		APLS A 0 A_CustomMissile ("VileShardTail", 0, random(-24, 24), random(-24, 24), 2, random(-14, 14))
		APLS A 2 bright
		APLS A 0 A_Wander
		APLS B 2 bright A_FadeOut (0.05)
		APLS A 0 A_Wander
		loop
	see2:
		TNT1 A 4 A_VileChase
		TNT1 AA 4 A_Wander
		loop
	heal:
		TNT1 A 1
		stop
	}
}
actor VileShardTail
{
	projectile
	speed 2
	scale 0.4
	translation 1
	+noclip
	+nogravity
	renderstyle add
	states
	{
	spawn:
		APLS A 0
		APLS AB 2 A_FadeOut (0.01)
		APLS A 0 ThrustThingZ (0, random(-4, 8), 0, 0)
		loop
	}
}

