Actor NewBulletPuff : BulletPuff {
	DamageType "Bullet"
	+MTHRUSPECIES
	States {
		Spawn:
			PUFF A 0
			TNT1 A 0 A_SpawnDebris("SparkPuff", 1)
			TNT1 A 0 A_SpawnItemEx("WallHitSpark", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_CLIENTSIDE)
			PUFF A 4 bright A_PlaySound("puff/ric")
			PUFF B 4
		Melee:
			PUFF CD 4
		stop
	}
}

Actor NewBulletPuff_MagicExtra : NewBulletPuff {
	DamageType "BulletMagicX"
}

Actor SpiderMBulletPuff : NewBulletPuff {
	DamageType "BigSpider"
}

Actor NewBulletPuff_FullDMG : NewBulletPuff {
	DamageType "BulletFull"
}

Actor NewBulletPuff_MagicExtraFullDMG : NewBulletPuff {
	DamageType "BulletMagicXFull"
}

Actor NewBulletPuffMinigun : NewBulletPuff {
	+THRUGHOST
}

Actor NewBulletPuff_Rail : NewBulletPuff {
	DamageType "Bullet"
	Species "Player"
	+THRUSPECIES
	+MTHRUSPECIES
	+NODAMAGETHRUST
}

Actor NewBulletPuff_RailFull : NewBulletPuff_Rail {
	DamageType "BulletFull"
}

Actor FistPuff {
	VSpeed 1
    +NOBLOCKMAP
    +NOGRAVITY
    +PUFFONACTORS
	+THRUGHOST
	+MTHRUSPECIES
	attacksound "weapons/fistwall"
    seesound "weapons/fisthit"
	DamageType "Melee"
	States {
		Crash:
			TNT1 A 0
			TNT1 AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 1
		Stop
		Spawn:
			TNT1 A 1
		Stop
	}
}

Actor SicklePuff : HammerPuff {
	+MTHRUSPECIES
	+PUFFGETSOWNER
	Damagetype "Melee_Magic"
	AttackSound "weapons/swingwall"
	SeeSound "weapons/swinghit"
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("SickleHealer", 1)
		Crash:
			TNT1 AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			VFX2 A 1
			VFX2 A 1 A_GiveToTarget("ScreenPitch", 1)
			VFX2 A 2 A_GiveToTarget("ScreenPitchBack", 1)
			VFX2 BCDE 4
		Stop
	}
}

Actor ExcalibatPuff : HammerPuff {
	+MTHRUSPECIES
	+THRUGHOST
	+PUFFGETSOWNER
	Damagetype "Melee_UndeadXtra"
	AttackSound "weapons/swingwall"
	SeeSound "weapons/swinghit"
	States {
		Spawn:
			TNT1 A 0
			TNT1 AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			VFX2 ABCDE 4
		Stop
	}
}

Actor SickleHealer : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 HealThing(2)
		Stop
	}
}

Actor ScreenPitch : DND_Activator {
	States {
		Use:
			TNT1 A 0 A_SetPitch(Pitch-2)
		Stop
	}
}

Actor ScreenPitchBack : DND_Activator {
	States {
		Use:
			TNT1 A 0 A_SetPitch(Pitch+2)
		Stop
	}
}

Actor SicklePuff_FullDMG : SicklePuff {
	DamageType "Melee_MagicFull"
}

Actor ExcalibatPuff_FullDMG : ExcalibatPuff {
	DamageType "Melee_UndeadXtraFull"
	-THRUGHOST
}

Actor FistPuff_FullDMG : FistPuff {
	DamageType "MeleeFull"
	-THRUGHOST
}

Actor ChainsawPuff : BulletPuff {
	SeeSound "Weapons/SawHit"
	AttackSound "Weapons/SawScreech"
	Decal "ChainsawMark"
	DamageType "Melee"
	RenderStyle Add
	Alpha 0.8
	Scale 0.4
	+MTHRUSPECIES
	+THRUGHOST
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(128, "Alt")
			CSF1 ABCDEFGHIJ 1 Bright A_FadeOut(0.08)
		Stop
		Alt:
			CSF2 ABCDEFGHIJ 1 Bright A_FadeOut(0.08)
		Stop
	}
}

Actor DChainsawPuff : ChainsawPuff {
	+FORCEPAIN
}

Actor ChainsawPuff_FullDMG : ChainsawPuff {
	DamageType "MeleeFull"
	-THRUGHOST
}

Actor DChainsawPuff_FullDMG : ChainsawPuff_FullDMG {
	+FORCEPAIN
}

Actor LeadBulletPuff : BulletPuff {
	DamageType "Energy"
	Decal "LeadBulletDecal"
	Renderstyle Add
	Alpha 0.6
	Scale 0.1
	Vspeed 0
	+FOILINVUL
	+ALWAYSPUFF
	+PUFFONACTORS
	+MTHRUSPECIES
	+CLIENTSIDEONLY
	var int user_scaler;
	States {
	  Spawn:
	  Melee:
		TNT1 A 0 NoDelay A_SetUserVar("user_scaler", 1) 
		TNT1 a 0 A_Jump(255,"Type1","Type2","Type3","Type4","Type5","Type6","Type7","Type8")
	Type1:
		DB21 ABCDEFGHI 1 Bright A_SetScale(scaleX + user_scaler * 0.01)
		Stop
	Type2:
		DB21 JKLMNOPQR 1 Bright A_SetScale(scaleX+user_scaler * 0.01)
		Stop
	Type3:
		DB22 ABCDEFGHI 1 Bright A_SetScale(scaleX+user_scaler * 0.01)
		Stop
	Type4:
		DB22 JKLMNOPQR 1 Bright A_SetScale(scaleX+user_scaler * 0.01)
		Stop
	Type5:
		DB23 ABCDEFGHI 1 Bright A_SetScale(scaleX+user_scaler * 0.01)
		Stop
	Type6:
		DB23 JKLMNOPQR 1 Bright A_SetScale(scaleX+user_scaler * 0.01)
		Stop
	Type7:
		DB24 ABCDEFGHI 1 Bright A_SetScale(scaleX+user_scaler * 0.01)
		Stop
	Type8:
		DB24 JKLMNOPQR 1 Bright A_SetScale(scaleX+user_scaler * 0.01)
		Stop
	}
}

Actor LeadBulletPuff_FullDMG : LeadBulletPuff {
	DamageType "EnergyFull"
}

Actor NewBulletPuffMag : NewBulletPuff {
	+FOILINVUL
}

Actor NewBulletPuffMag_FullDMG : NewBulletPuffMag {
	DamageType "BulletFull"
}

Actor MagnumPuff : NewBulletPuff {
	States {
		Spawn:
			PUFF A 0
			TNT1 A 0 A_SpawnDebris("SparkPuff", 1)
			TNT1 A 0 A_SpawnItemEx("MagnumWallHitSpark", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_CLIENTSIDE)
			MPUF A 4 Bright A_PlaySound("puff/ric")
			MPUF B 4 Bright
		Melee:
			MPUF CD 4
		stop
	}
}

Actor MagnumPuff_FullDMG : MagnumPuff {
	DamageType "BulletFull"
}