
//******************************************************************************
//**** While Heretical Doom doesn't use hitscans, there are some puff based ****
//******** effects.  They will all be consolidated here for organization *******
//******************************************************************************


//==============================================================================
//============================== DRAGON CLAW PUFFS =============================
//==============================================================================


Actor BrutalDragonPuff : BulletPuff
{
	VSpeed 0
	Alpha 0.9
	Renderstyle Add
	DamageType "Staff"
	Scale 0.13
	+FORCEXYBILLBOARD
	-ALLOWPARTICLES
	+PUFFONACTORS
	+ALWAYSPUFF
	+MTHRUSPECIES
	+NOEXTREMEDEATH
	-ALWAYSPUFF
	+THRUGHOST
	
	States
	{
		Melee:
		Spawn:
			TNT1 A 0
			TNT1 AAAAA 0 A_SpawnItemEx("BrutalDragonPuffSpark",0,0,4,frandom(-3.2,3.2),frandom(-3.2,3.2),frandom(-3.2,3.2))
			SH1K A 1 Bright Light("SWFAP0") A_PlaySound("STAFHIT1")
		Death:
			SH1K A 0 A_SetScale(scalex*0.7,scaley*0.7)
			SH1K B 1 Bright Light("SWFAP0")A_FadeOut(0.1)
			SH1K A 0 A_SetScale(scalex*0.7,scaley*0.7)
			SH1K C 1 Bright Light("SWFAP0")A_FadeOut(0.1)
			SH1K A 0 A_SetScale(scalex*0.7,scaley*0.7)
			SH1K D 1 Bright Light("SWFAP0")A_FadeOut(0.1)
			SH1K A 0 A_SetScale(scalex*0.7,scaley*0.7)
			SH1K E 1 Bright Light("SWFAP0")A_FadeOut(0.1)
		Fade:
			SH1K A 0 A_SetScale(scalex*0.7,scaley*0.7)
			SH1K F 1 Bright A_FadeOut(0.1)
			Loop
		XDeath:
			TNT1 A 1 A_PlaySound("STAFHIT2")
			Stop
	}
}

Actor BrutalDragonPuffSpark
{
	Radius 2
	Height 2
	RenderStyle Add
	Alpha 0.9
	Scale 0.045
	+NOINTERACTION
	+CLIENTSIDEONLY
	+FORCEXYBILLBOARD
	+NOGRAVITY
	+DONTSPLASH
	
	States
	{
		Spawn:
		SH1K G 1 Bright A_FadeOut(0.05)
		SH1K A 0 Bright A_SetScale(scalex*0.79,scaley*0.79)
		SH1K A 0 A_ChangeVelocity(frandom(-1,1),frandom(-1,1),frandom(-1,1),CVF_RELATIVE)
		loop
	}
}

//==============================================================================
//============================== MELEE STAFF PUFFS =============================
//==============================================================================


Actor BrutalStaffPuff : BulletPuff
{
	VSpeed 0
	Renderstyle Add
	Alpha 0.9
	+FORCEXYBILLBOARD
	-ALLOWPARTICLES
	+NOEXTREMEDEATH
	+PUFFONACTORS
	+ALWAYSPUFF
	+MTHRUSPECIES
	Scale 0.13
	+NOEXTREMEDEATH
	-ALWAYSPUFF
	+THRUGHOST
	Damagetype "BrutalStaff"
	
	States
	{
		Melee:
		Spawn:
			TNT1 AAAAA 0 A_SpawnItemEx("BrutalStaffPuffSpark",0,0,4,frandom(-3.2,3.2),frandom(-3.2,3.2),frandom(-3.2,3.2))
			KTPF A 1 Bright Light("STAFPUFF01") A_PlaySound("STAFHIT1")
		Death:
			KTPF A 0 A_SetScale(scalex*0.7,scaley*0.7)
			KTPF A 1 Bright Light("STAFPUFF02")A_FadeOut(0.1)
			KTPF A 0 A_SetScale(scalex*0.7,scaley*0.7)
			KTPF A 1 Bright Light("STAFPUFF03")A_FadeOut(0.1)
			KTPF A 0 A_SetScale(scalex*0.7,scaley*0.7)
			KTPF A 1 Bright Light("STAFPUFF04")A_FadeOut(0.1)
			KTPF A 0 A_SetScale(scalex*0.7,scaley*0.7)
			KTPF A 1 Bright Light("STAFPUFF05")A_FadeOut(0.1)
		Fade:
			KTPF A 0 A_SetScale(scalex*0.7,scaley*0.7)
			KTPF A 1 Bright A_FadeOut(0.1)
			Loop
		XDeath:
			TNT1 A 1 A_PlaySound("STAFHIT2")
			Stop
	}
}
Actor BrutalStaffPuffSpark
{
	Radius 2
	Height 2
	RenderStyle Add
	Alpha 0.9
	Scale 0.045
	+NOINTERACTION
	+CLIENTSIDEONLY
	+FORCEXYBILLBOARD
	+NOGRAVITY
	+DONTSPLASH
  
	States
	{
		Spawn:
			KTPF A 1 Bright A_FadeOut(0.05)
			KTPF A 0 Bright A_SetScale(scalex*0.79,scaley*0.79)
			KTPF A 0 A_ChangeVelocity(frandom(-1,1),frandom(-1,1),frandom(-1,1),CVF_RELATIVE)
			loop
	}
}

ACTOR BrutalPoweredStaffPuff
{
	+NOBLOCKMAP
	+NOGRAVITY
	+PUFFONACTORS
	+FORCEXYBILLBOARD
	RenderStyle Add
	Alpha 0.9
	VSpeed 0.0
	Scale 0.34
	Decal "WallCrack"
	DamageType "PowerStaff"
	
	States
	{
		Spawn:
			TNT1 A 0 NoDelay A_PlaySound("STAFHIT1")
			Goto Puff
		XDeath:
			TNT1 A 0 A_PlaySound("STAFPNCH")
		Puff:
			TNT1 AAAAAAAA 0 A_CustomMissile ("BlueExplosionParticle2", 3, 0, random (0, 360), 2, random (0, 360))
			PUF4 AABBCCDDEEFF 1 Bright A_SpawnItemEx("BlueStaffPuffFlare",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
			Stop
	}
}

ACTOR BrutalKickPuff
{
	+NOBLOCKMAP 
	+NOGRAVITY 
	+BLOODSPLATTER 
	+PUFFONACTORS
	+DONTBLAST
	+SPECTRAL
	+THRUGHOST
	Damagetype "Kick"
	Projectile
	
	States
	{
		Spawn:
			TNT1 A 0 BRIGHT
			TNT1 A 0 Radius_Quake (2, 5, 0, 2, 0)
			TNT1 AAAAA 0 A_SpawnItemEx("KickSmoke",random(-3,3),random(-3,3),random(-3,3),frandom(-1,1),frandom(-1,1),frandom(-1,1),0,SXF_NOCHECKPOSITION)
			TNT1 A 0 A_Explode(24, 24, 0, 1)
			TNT1 A 6 A_PlaySound("BASH1", 1)
			Stop
	}
}

ACTOR BrutalKickPuff2 : BrutalKickPuff
{
	States
	{
		TNT1 A 0 A_RadiusThrust(300000,256,RTF_NOIMPACTDAMAGE | RTF_THRUSTZ,256)
		Goto Super::Spawn
	}
}


//********************************
//Burn Trails used for ground slam
//********************************


ACTOR BurnTrail : BulletPuff
{
	Speed 0
	+FLOORHUGGER
	-NOGRAVITY
	+FORCEXYBILLBOARD
	Alpha 1
	
	States
	{
		Spawn:
		FXFP FEDCBABCDEF 2 Bright
		TNT1 A 0 A_Remove(0)
		Stop
	}
}

ACTOR BurnTrail2 : BurnTrail
{
	Speed 10
	Alpha 0.5
}


//********************************
//Dummy Puff is for Reflector Spin
//********************************


ACTOR DummyPuff
{
	-BLOODSPLATTER
	+BLOODLESSIMPACT
}

ACTOR FakeSwitchPuff : BulletPuff
{
	+BLOODLESSIMPACT
	+PUFFONACTORS
	
	States
	{
		TNT1 A 0
		stop
	}
}


//==============================================================================
//=============================== GAUNTLET PUFFS ===============================
//==============================================================================


ACTOR BrutalGreenGauntletPuff replaces GauntletPuff1
{
	+NOBLOCKMAP
	+NOGRAVITY
	+PUFFONACTORS
	RenderStyle Add
	Alpha 0.9
	VSpeed 0.8
	Damagetype "BrutalGauntlets"
	
	States
	{
		Spawn:
			TNT1 A 0 NoDelay A_JumpIf(GetCVAR("LightShow"),"Fancy")
			TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("GauntletSparks", 3, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAAAAA 0 A_PlaySound("GNTHIT",CHAN_BODY,1.0,True)
			GPUF AAABBBCCCDDD 1 Bright A_SpawnItemEx("GreenGauntletFlare",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
			Stop
		Fancy:
			TNT1 AAAAAAAA 0 A_CustomMissile ("GreenExplosionParticle2", 3, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAAAAA 0 A_PlaySound("GNTHIT",CHAN_BODY,1.0,True)
			GPUF AAABBBCCCDDD 1 Bright A_SpawnItemEx("GreenGauntletFlare",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
			Stop
	}
}

ACTOR PunchyPuff : BrutalGreenGauntletPuff
{
	+FORCEPAIN
	
	States
	{
		Spawn:
			TNT1 A 0 NoDelay A_AlertMonsters(512)
			TNT1 AAAAAAAA 0 A_CustomMissile ("GreenExplosionParticle2", 3, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_RadiusThrust(-500,32,0,32)
			GPUF AAABBBCCCDDD 1 Bright A_SpawnItemEx("GreenGauntletFlare",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
			Stop
	}
}
ACTOR BrutalRedGauntletPuff replaces GauntletPuff2
{
	+NOBLOCKMAP
	+NOGRAVITY
	+PUFFONACTORS
	RenderStyle Add
	Alpha 0.9
	VSpeed 0.8
	Damagetype "BrutalGauntlets"
	
	States
	{
		Spawn:
			TNT1 A 0 NoDelay A_JumpIf(GetCVAR("LightShow"),"Fancy")
			TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("GauntletSparksRed", 3, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAAAAA 0 A_PlaySound("GNTHIT",CHAN_BODY,1.0,True)
			GPUF EEEFFFGGGHHH 1 Bright A_SpawnItemEx("RedGauntletFlare",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
			Stop
		Fancy:
			TNT1 AAAAAAAA 0 A_CustomMissile ("RedExplosionParticle2", 3, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAAAAA 0 A_PlaySound("GNTHIT",CHAN_BODY,1.0,True)
			GPUF EEEFFFGGGHHH 1 Bright A_SpawnItemEx("RedGauntletFlare",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
			Stop
	}
}


//==============================================================================
//================================= MISC. PUFFS ================================
//==============================================================================


ACTOR HereticalPuff : BulletPuff replaces BulletPuff
{
	+THRUGHOST
}

ACTOR GPuff : BulletPuff
{
	Vspeed 0
	+ALWAYSPUFF
	States
	{
		Spawn:
			PUF2 AA 1 Light("GOLDWANDSHOT2")
			PUF2 BB 1 Light("GOLDWANDSHOT3")
			PUF2 CC 1 Light("GOLDWANDSHOT4")
			PUF2 DE 1 Light("GOLDWANDSHOT5")
			Stop
	}
}

ACTOR TorchPuff : BulletPuff
{
	AttackSound "PLRBURN"
	
	+PUFFONACTORS
}