ACTOR D4Belphegor : D4AbstractMonster
{
	var int user_timer;
	var int user_count;
	var int user_chasecount;
	var int user_leapstrength;
	Health 2000
	Radius 24
	Height 64
	Mass 1000
	Speed 5.667
	PainChance 40
	Speed 10
	Monster
	Scale 1.2
	+FLOORCLIP
	+BOSSDEATH
	+DONTHARMSPECIES
	SeeSound 	"Doom4/Monsters/Baron/Sight"
	PainSound 	"Doom4/Monsters/Baron/Pain"
	DeathSound 	"Doom4/Monsters/Baron/Death"
	ActiveSound "Doom4/Monsters/Baron/Idle"
	Obituary "%o was slayed by a belphegor"
	DropItem "DemonGrenadeDrop", 5
	DropItem "ReaperandUpgradesDropper", 5
	DropItem "BaronRune", 5 // 1/51
	Gravity 0.83
	PainChance "StunBomb", 255
	PainChance "GloryKill", 255
	WoundHealth 100
	MeleeRange 64
	Damage 5
	Species "D4TBaronKind"
	DamageFactor "BFGDamage", 1.35 //slightly more vulnerable to it 
	Tag "Belphegor"
	States
	{
	Spawn:
		BLFG A 0 NODELAY A_SetUserVar(user_bigmonstersound,1)
		Goto Super::Spawn
	Idle:
		BLFG A 10 A_Look 
		Loop
	See:
		BLFG AABBCCDD 3 A_Chase
		Loop
		
	SeeNoMissile:		//reached only when landing after a jump
		BLFG AABBCCDD 3 A_Chase("Melee","")
		Goto See
		
	Missile:
		BLFG M 0 A_PlaySound("Doom4/Monsters/Baron/AttackOneInFive",CHAN_AUTO,1.0,false,0.95)
	//--------------------------------------
	// Regular fireball
	FireBall:	
		"####" "#" 0 A_Jump(128,"FireBallBig")
		BLFG I 6 Light(RedMediumFlicker3) A_FaceTarget 
		BLFG JK 3 Light(RedMediumFlicker3)
		BLFG L 5 Light(RedMediumFlicker3) A_CustomMissile("BelphegorBallNormal")
		BLFG I 6 Light(RedMediumFlicker3) A_FaceTarget 
		BLFG JK 3 Light(RedMediumFlicker3)
		BLFG L 5 Light(RedMediumFlicker3) A_CustomMissile("BelphegorBallNormal")
		BLFG I 6 Light(RedMediumFlicker3) A_FaceTarget 
		BLFG JK 3 Light(RedMediumFlicker3)
		BLFG L 5 Light(RedMediumFlicker3) A_CustomMissile("BelphegorBallNormal")
		Goto See
	//--------------------------------------
	// Charged fireball
	FireBallBig:	
		BLFG MMMM 6 Light(RedMediumFlicker1) A_FaceTarget
	FireBallBigSkip: //sub state to reach after jump discarded
		BLFG M 6 Light(RedMediumFlicker1) A_FaceTarget
		BLFG NO 3 Light(RedMediumFlicker1)
		BLFG P 5 Light(RedMediumFlicker1) A_CustomMissile("BelphegorBallBig")
		Goto See
	//--------------------------------------
	// Melee attack		
	Melee:
		BLFG E 0 A_Jump(256,"Melee1","Melee2")
		
		Melee1:
			BLFG E 3 A_FaceTarget
			BLFG F 3 A_PlaySound("Doom4/Other/MeleeSwing",CHAN_AUTO,1.0,false,1.15)
			BLFG G 3 A_FaceTarget
			BLFG H 5 A_CustomMeleeAttack(random(20,30),"Doom4/Other/MeleeHit","",0,1)
			Goto See
		Melee2:
			BLFG I 3 A_FaceTarget
			BLFG J 3 A_PlaySound("Doom4/Other/MeleeSwing",CHAN_AUTO,1.0,false,1.15)
			BLFG K 3 A_FaceTarget
			BLFG L 5 A_CustomMeleeAttack(random(20,30),"Doom4/Other/MeleeHit","",0,1)
			Goto See
	
	Pain:
		BLFG Q 2
		BLFG Q  2 A_Pain
		Goto See
		
	Death:
		"####" "#" 0  A_SpawnItemEx("SituationalPinata",0,0,32,0,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		"####" "#" 0  A_SpawnItemEx("ReaperandUpgradesDropper",0,0,32,0,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS,245)
		BFGD A 4 A_Scream
		BFGD B 4 Bright
		BFGD C 4 Bright
		BFGD D 4 Bright A_NoBlocking
		BFGD EFGHI 4 Bright 
		BFGD J 4 Bright
		BFGD Z 100
		BFGD Z 1 A_BossDeath
		Stop
	XDeath:
		"####" "#" 0  A_SpawnItemEx("ReaperandUpgradesDropper",0,0,32,0,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS,245)
		Goto Super::Xdeath
	Raise:
		E01D I 3
		E01D HGFEDCBA  3
		Goto See
		
	//-------------------------
	// Regular chainsaw kill
	Death.ChainsawKill:
		TNT1 AAA 0 A_SpawnItemEx("D4PinataHealth",0,0,0,frandom(-4,4),frandom(-4,4),frandom(1,5),0,SXF_NOCHECKPOSITION)
		Goto XDeath
	//-------------------------
	// Chainsaw execution	
	Death.ChainsawPinata:	
		TNT1 A 0 A_GiveToTarget("SuccessfulExecutionToken",1)
		TNT1 A 0 A_SpawnItemEx("ChainsawExecutionPinata",0,0,32,0,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		Goto XDeath
	//-------------------------		
	// BerserkKill
	Death.BerserkKill:
		TNT1 AAAA 0 A_SpawnItemEx("D4PinataHealth",0,0,0,frandom(-4,4),frandom(-4,4),frandom(1,5),0,SXF_NOCHECKPOSITION)
		Goto XDeath
		

	//------------------------------------------------------------------------
	// Start of Stagger / Glory Kill states
	//------------------------------------------------------------------------
	Wound:
		BLFG X 0 A_SetUserVar(user_healto,150)
		Goto WoundStagger	// see MonsterBase.AED
		
	Death.GloryKill:
		BLFG Y 0
		Goto GloryKillGeneric // see MonsterBase.AED
		
	GloryEnd:	//depending on the monster, is what and how much will spawn
		TNT1 A 1 A_SpawnItemEx("GloryKillPinata",0,0,32,0,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		Goto XDeath
	}
}
ACTOR BelphegorBallNormal
{
	Radius 6
	Height 8
	Speed 20
	FastSpeed 25
	Damage 9
	Projectile
	+RANDOMIZE
	+FORCEXYBILLBOARD
	RenderStyle Add
	Alpha 1
	SeeSound "Doom4/Monsters/Generic/ThrowFireballLow"
	DeathSound "Doom4/Other/FireballHit2"
	//scale 0.3
	//Translation "0:255=%[0,0,0]:[0.6,1.4,0]"
	Decal "BaronFireballScorch"
	States
	{
	Spawn:
		FRTM AB 4 BRIGHT Light("RedMediumFlicker2")
		Loop
	Death:
		HIBI A 0 //A_SetScale(0.6)
		FRTM CDE 6 BRIGHT Light("RedMediumFlicker3")	//had to separate
		Stop
	}
}
ACTOR BelphegorBallBig 
{
	Radius 6
	Height 8
	Speed 30
	FastSpeed 35
	Damage 10
	Projectile
	+RANDOMIZE
	RenderStyle Add
	Alpha 1
	SeeSound "Doom4/Monsters/Generic/ThrowFireball"
	DeathSound "Doom4/Monsters/BaronFireBallHit"
	scale 1.5
	//Translation "0:255=%[0,0,0]:[0.6,1.4,0]"
	+FORCEXYBILLBOARD
	Decal "BaronFireballScorchBig"
	States
	{
	Spawn:
		FRTM ABABABABAB 4  BRIGHT Light("RedMediumFlicker1") A_SpawnItemEx("ImpBallFlamelet",random(-2,-8),random(8,-8),random(8,-8),0,0,frandom(0,0.6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION,96)
		Loop
	Death:
		TNT1 A 0 A_Explode(32,100)
		TNT1 A 0 A_SetScale(2.7)
		FRTM CDE 6 Bright Light("RedMediumFlicker3")
		Stop
	}
}
