//======================================================================
//  Original credits
//======================================================================
//  DECORATE: 	Eric Ou
//	Sounds:		Id Software
//  Sprites: 	Id Software (edits by Eric Ou)
//	GLDEFs: 	n/a
//======================================================================
//  Additional credits
//======================================================================
//	Sounds:		Westwood Studios
//======================================================================

ACTOR Draugr : Revenant
{
	Tag "Draugr"
	Health 650 
	Obituary "%o got incinerated by a draugr's flamethrower."
	HitObituary "%o was beaten to death by a draugr."
	SeeSound "skeleton/sight"
	PainSound "skeleton/pain"
	DeathSound "skeleton/death"
	ActiveSound "skeleton/active"
	MeleeSound "skeleton/melee"
	Speed 8
	MeleeThreshold 0
	+DontHarmClass
	+DontHarmSpecies
	States 
	{ 
	Spawn:
		SKE2 AB 10 A_Look
		Loop
	See:    
		SKE2 AABBCCDDEEFF 2 A_Chase
		Loop
	Melee:
		TNT1 A 0 A_Jump(128, "Flamethrower") //chance to use flamethrower for melee
		SKE2 J 0 A_FaceTarget
		SKE2 J 6 A_SkelWhoosh
		SKE2 K 6 A_FaceTarget
		SKE2 L 6 A_SkelFist
		Goto See
	Missile:
		TNT1 A 0 A_JumpIfCloser(256, "Flamethrower")
		SKE2 G 10 Bright A_FaceTarget
		SKE2 H 15 Bright A_FaceTarget
		SKE2 I 10 Bright A_SkelMissile //A_CustomMissile("DraugrClusterMissile", 64, -14)
		SKE2 I 10 A_FaceTarget
		Goto See
	Flamethrower:
		SKE2 G 5 Bright A_FaceTarget
		TNT1 A 0 Bright A_PlaySound ("weapons/flamethrower")
		SKE2 H 1 Bright A_CustomMissile("DMR_FlamethrowerBall", 64, -14, random(-3,3))
		SKE2 H 1 Bright A_CustomMissile("DMR_FlamethrowerBall", 64, -14, random(-3,3))
		SKE2 H 1 Bright A_CustomMissile("DMR_FlamethrowerBall", 64, -14, random(-3,3))
		SKE2 H 1 Bright A_FaceTarget
		SKE2 H 1 Bright A_CustomMissile("DMR_FlamethrowerBall", 64, -14, random(-3,3))
		SKE2 H 1 Bright A_CustomMissile("DMR_FlamethrowerBall", 64, -14, random(-3,3))
		SKE2 H 1 Bright A_CustomMissile("DMR_FlamethrowerBall", 64, -14, random(-3,3))
		SKE2 H 1 Bright A_FaceTarget
		SKE2 H 1 Bright A_CustomMissile("DMR_FlamethrowerBall", 64, -14, random(-3,3))
		SKE2 H 1 Bright A_CustomMissile("DMR_FlamethrowerBall", 64, -14, random(-3,3))
		SKE2 H 1 Bright A_CustomMissile("DMR_FlamethrowerBall", 64, -14, random(-3,3))
		SKE2 I 5 A_FaceTarget
		Goto See
	Pain:
		SKE2 M 5
		SKE2 M 5 A_Pain
		Goto See
	Death:
		SKE2 N 7
		SKE2 O 7 A_Scream
		SKE2 P 7 A_NoBlocking
		SKE2 QR 7
		SKE2 S -1
		Stop
	Raise:
		SKE2 SRQPON 5
		Goto See 
	} 
}


//flamethrower
Actor DMR_FlamethrowerBall
{
	Radius 4
	Height 4
	Speed 16
	Damage 1
	Projectile
	RenderStyle Add
	DamageType Fire
	Alpha 0.67
	Scale 0.7
	DontHurtShooter
	+ThruGhost
	States
	{
	Spawn:
		TNT1 A 2 Bright
		FRFX ABCD 2 Bright A_Explode(1,8)
		FRFX D 0 Bright A_Lowgravity
		TNT1 A 0 Bright A_SetScale(0.8)
		FRFX EFG 2 Bright A_Explode(1,16)
		TNT1 A 0 Bright A_SetScale(0.9)
		FRFX HIJ 2 Bright A_Explode(1,32)
		TNT1 A 0 Bright A_SetScale(1)
		FRFX KLM 2 Bright A_Explode(1,64)
		FRFX NO 2 Bright
		Stop
	Death:
		TNT1 A 0 Bright A_SetScale(1)
		FRFX HIJ 2 Bright A_Explode(1,64)
		FRFX KLM 2 Bright A_Explode(1,64)
		FRFX NO 2 Bright
		Stop
	}
}

//homing missile that breaks up in partially homing clusters near its target
/*
ACTOR DraugrClusterMissile
{
	Radius 11
	Height 8
	Speed 15
	Damage 5
	Projectile
	+RANDOMIZE
	+SEEKERMISSILE
	SeeSound "skeleton/attack"
	DeathSound "skeleton/tracex"
	Obituary "%o couldn't dodge a draugr's clustermissile."
	Scale 0.8
	States
	{
	Spawn:
		HMIS A 1 Bright A_Tracer2 //{
			//A_Tracer2
			//If(GetCvar("dmr_fancydoom")) {
		//A_SpawnItemEx("DMR_MediumFireballTrail",-18,0,2,frandom(-1,0),frandom(-1,1),frandom(0,1)); 
		//A_SpawnItemEx("DMR_MediumSmokeCloud",-18,0,2,frandom(-1,0),frandom(-1,1),frandom(0,1)); 
			//}
		//}
		HMIS A 0 A_JumpIfTracerCloser(120, "Death")
		Loop
	Death:
		TNT1 AAA 0 A_SpawnItemEx("DMR_FireBouncingDebris",random(-2,2),random(-2,2),random(-2,2),frandom(-8,8),frandom(-8,8),frandom(-2,8)) 
		//{
			//If(GetCvar("dmr_fancydoom")) {
		TNT1 AAA 0 A_SpawnItemEx("DMR_FireBouncingDebris",random(-2,2),random(-2,2),random(-2,2),frandom(-8,8),frandom(-8,8),frandom(-2,8)) 
			//}
		//}
		//TNT1 A 0 A_Stop
			//split up in subprojectiles, which can randomly home in or not
		TNT1 A 0 A_CustomMissile("DraugrSubProjectile", 0, 0, 0+random(0,370))
		TNT1 A 0 A_CustomMissile("DraugrSubProjectile", 0, 0, 0+random(0,370))
		TNT1 A 0 A_CustomMissile("DraugrSubProjectile", 0, 0, 0+random(0,370))
		//}
		MISL B 8 Bright A_Explode(10, 48)
		MISL C 6 Bright
		MISL D 4 Bright
		Stop
	}
}

//non-blocking FX trail
Actor DMR_ProjectileTrail
{
	+NOINTERACTION
	+FORCEXYBILLBOARD
	RenderStyle Add
	States
	{
	Spawn:
		FFX1 ABCDEF 1 Bright A_FadeOut(0.045)
		//{
			//A_FadeOut(0.045);
		TNT1 A 0 A_SetScale(ScaleX-0.01)
		//}
		Loop
	}
}

//fire trail
Actor DMR_FireballTrail : DMR_ProjectileTrail
{
	Scale 0.35
	States
	{
	Spawn:
        FFX1 ABCDEF 1 Bright A_FadeOut(0.045)
		//{
			//A_FadeOut(0.045);
		TNT1 A 0 A_SetScale(ScaleX-0.01)
		//}
		Loop
	}
}

//smoke trail
Actor DMR_SmokeCloud : DMR_ProjectileTrail
{
	RenderStyle Translucent
	Scale 0.25
	Alpha 0.6
	States
	{
	Spawn:
		SMOK ABCDEFGHIJ 2
		Stop
	}
}

//bouncing FX
Actor DMR_BouncingDebris
{
	+MISSILE
	+THRUACTORS
	+NOTELEPORT
	+DONTSPLASH
	Height 2
	Radius 2
	Bouncetype Doom
	BounceFactor 0.5
	Gravity 0.75
	RenderStyle Add
	States
	{
	Spawn:
		FFX1 ABCDEF 1 Bright A_FadeOut(0.045)
			
		TNT1 A 0 A_SetScale(ScaleX-0.01)
		
		Loop
	}
}

//bounding flame debris
Actor DMR_FireBouncingDebris : DMR_BouncingDebris
{
	Scale 0.7
}


ACTOR DarkInquisitorSubProjectile
{
	Radius 11
	Height 8
	Speed 10
	Damage 5
	Projectile
	+SEEKERMISSILE
	+RANDOMIZE
	Scale 0.5
	var int user_lifetime;
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_Jump(128,"Homing") 
		TNT1 A 0 A_SetUserVar(user_lifetime, random(75,100)) //set fuel lifetime
		TNT1 A 0 A_JumpIf(user_lifetime < 1,"Death")
		HMIS A 1 Bright 	A_SpawnItemEx("DMR_FireballTrail",-25,0,5,frandom(-1,0),frandom(-1,1),frandom(0,1))
		//{
		
			//If(GetCvar("dmr_fancydoom")) {
				//If(user_lifetime > 20) { //stop fire exhaust if fuel is running low 
					//A_SpawnItemEx("DMR_FireballTrail",-25,0,5,frandom(-1,0),frandom(-1,1),frandom(0,1)); 
				//}
			//}
			//A_SetUserVar(user_lifetime, user_lifetime-1); //decrease fuel lifetime
		//}
		HMIS A 1 BRIGHT A_Weave(random(1,2), random(1,2), frandom(0.5,1.5), frandom(0.5,1.5))
		Goto Spawn+2
	Homing:
		TNT1 A 0 A_SetUserVar(user_lifetime, random(75,100)) //set fuel lifetime
		TNT1 A 0 A_JumpIf(user_lifetime < 1,"Death")
		HMIS A 1 Bright A_Tracer2
		TNT1 A 0 A_SpawnItemEx("DMR_FireballTrail",-25,0,5,frandom(-1,0),frandom(-1,1),frandom(0,1))
		TNT1 A 0 A_SpawnItemEx("DMR_SmokeCloud",-25,0,5,frandom(-1,0),frandom(-1,1),frandom(0,1))
		//{ 
			//A_Tracer2
			//If(GetCvar("dmr_fancydoom")) {
				//If(user_lifetime > 20) { //stop fire exhaust if fuel is running low 
					//A_SpawnItemEx("DMR_FireballTrail",-25,0,5,frandom(-1,0),frandom(-1,1),frandom(0,1)); 
				//}
				//A_SpawnItemEx("DMR_SmokeCloud",-25,0,5,frandom(-1,0),frandom(-1,1),frandom(0,1)); 
			//}
			//A_SetUserVar(user_lifetime, user_lifetime-1); //decrease fuel lifetime
		//}
		HMIS A 1 BRIGHT A_Weave(random(1,2), random(1,2), frandom(0.5,1.5), frandom(0.5,1.5))
		Goto Homing+1
	Death:
		TNT1 A 0 A_Stop 
		TNT1 A 0 A_PlaySound("skeleton/tracex",2)
		//{
		
			//A_Stop;
			//A_PlaySound("skeleton/tracex",2);
		//}
		TNT1 AAA 0 A_SpawnItemEx("DMR_FireBouncingDebris",random(-1,1),random(-1,1),random(-1,1),frandom(-5,5),frandom(-5,5),frandom(-1,5))
		//{
			//If(GetCvar("dmr_fancydoom")) { 
				//A_SpawnItemEx("DMR_FireBouncingDebris",random(-1,1),random(-1,1),random(-1,1),frandom(-5,5),frandom(-5,5),frandom(-1,5));
			//}
		//}
		FBXP A 8 Bright
		FBXP B 6 Bright
		FBXP C 4 Bright
		Stop
	}
}

//exactly the same as DarkInquisitorSubProjectile, seperately so we can apply the custom damagetype in the Guncaster patch
ACTOR DraugrSubProjectile : DarkInquisitorSubProjectile { }
*/