///////////////////////////////////////////////
// -- Facemaw: AKA "Vagina Zombie" -- //
///////////////////////////////////////////////

ACTOR FacemawPuke
{
  Radius 13
  Height 8
  Speed 25
  Damage 2
  Projectile
  +RANDOMIZE
  RenderStyle Add
  Alpha 0.9
  Scale 0.5
  Decal "AcidSplash"
  DamageType "Vomit"
  Obituary "%o was spit on by a Facemaw." // "%o was melted by %k's plasma gun."
  States
  {
  Spawn:
	VOMT A 0
	VOMT A 0 A_PlaySoundEx("acid/loop","Body",true)
  Flying:
	VOMT AABB 1 bright A_SpawnItemEx("PukeFX",0,0,0)
	Loop
  Death:
	VOMT A 0 A_StopSoundEx("Body")
	VOMT A 0 A_PlaySoundEx("acid/splash","Body")
	CRFX C 0// A_SpawnItemEx("CranusBallExplodeFX",0,0,0)
	TNT1 A 1
    Stop
  }
}

ACTOR PukeFX
{
	+NOBLOCKMAP
	+CLIENTSIDEONLY
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 AAAA 0 A_SpawnItemEx("PukePuff",random(-1,1),random(-1,1),random(-1,1),0,random(-2,2),random(-2,2))
	Stop
	}
}

ACTOR PukePuff
{
	+NOBLOCKMAP
	+CLIENTSIDEONLY
	Renderstyle Add
	Alpha 0.9
	Scale 0.3
	States
	{
	Spawn:
	VOMT CCCCCCCCCC 1 A_FadeOut(0.1)
	Stop
	}
}


ACTOR VaginaZombie 11602
{
	Health 100
	Radius 20
	Height 58
	Speed 3
	PainChance 24
	Mass 500
	PainChance "QuickMelee", 255
	DamageFactor "head", 1.15
	DamageFactor "minorhead", 1.15
	DamageFactor "Decapitate", 1.15
	DamageFactor "Head_Shotgun", 1.35
	DamageFactor "ExplosiveDamage", 0.5
	DamageFactor "ItemExplode", 0.00
	DamageFactor "Fire", 1.75
	DamageFactor "Dragon", 1.75
	Monster
	+FLOORCLIP
	+NOTARGET
	+NOINFIGHTING
	-FLOAT
	-NOGRAVITY
	MaxDropOffHeight 512
	SeeSound "grunt/sight"
	PainSound "grunt/pain"
	DeathSound "grunt/death"
	ActiveSound "zombie/breath"
	Obituary "%o was bitchslapped by a Facemaw."
	MinMissileChance 252
	States
	{
	Spawn:
		BSZM A 0
		BSZM A 0 A_JumpIfInventory("HasSpawnedHead",1,"Wandering")
		BSZM A 0 ACS_ExecuteWithResult(49,0,0,0)
		BSZM A 0 ACS_ExecuteAlways(625,0,65,1,0)
		BSZM A 0 A_GiveInventory("HasSpawnedHead",1)
		Goto Wandering
	Wandering:
		TNT1 A 0 A_ChangeFlag("FLOAT",0)
		TNT1 A 0 A_Gravity
		BSZM A 0 A_LookEx(0,0,2048,2048,100)
		BSZM A 0 A_JumpIf(waterlevel == 3,"SwimWander")
		VZOM AAAAABBBBB 2 A_Wander
		BSZM A 0 A_LookEx(0,0,2048,2048,100)
		BSZM A 0 A_JumpIf(waterlevel == 3,"SwimWander")
		VZOM CCCCCDDDDD 2 A_Wander
		BSZM A 0 A_LookEx(0,0,2048,2048,100)
		BSZM A 0 A_JumpIf(waterlevel == 3,"SwimWander")
		VZOM EEEEEFFFFF 2 A_Wander
		Loop
	See:
		BSZM A 0 A_TakeInventory("Forgotten",18)
		TNT1 A 0 A_ChangeFlag("FLOAT",0)
		TNT1 A 0 A_Gravity
		BSZM A 0 A_JumpIf(waterlevel == 3,"Swim")
		VZOM AAAABBBB 1 A_Chase
		BSZM A 0 A_JumpIf(waterlevel == 3,"Swim")
		VZOM CCCCDDDD 1 A_Chase
		BSZM A 0 A_JumpIf(waterlevel == 3,"Swim")
		VZOM EEEEFFFF 1 A_Chase
		TNT1 A 0
		Goto See+3
    //=============================================================
	// INCENDIARY
	//=============================================================
	Pain.Fire:
	Pain.Dragon:
	Death.Fire:
		VZOF A 0
		VZOF A 0 A_Jump(32,"DragonPain")
		VZOF A 0 A_JumpIf(health < 100, "DragonPain")
		Goto Pain
	DragonPain:
		TNT1 A 0 ACS_ExecuteAlways(72,0,0,50,20)
		VZOF A 1 bright
		VZOF A 0 A_SpawnItemEx("Flaming_Vagina",0,0,0)
		Stop
	Death.Dragon:
		TNT1 A 0 ACS_ExecuteAlways(72,0,0,50,20)
		VZOF A 1 bright
		VZOF K 0 A_NoBlocking
		VZOF K 0 A_UnsetShootable
		VZOF GHIJ 2 bright
		Goto Charred
	BurningCorpse:
		BSZF A 0 A_JumpIfInventory("CorpseDecayTime",200,"Charred")
		VZOF K 2 bright A_SpawnItemEx("CorpseFlameFX",0,0,0)
		VZOF K 0 A_GiveInventory("CorpseDecayTime",1)
		Loop
	Charred:
		BSZF A 0
		BSZF A 0 A_SpawnItemEx("Charred_Vagina",0,0,0)
		Stop
	//=============================================================
	Swim:
		BSZM A 0 A_ChangeFlag("FLOAT",1)
		BSZM A 0 A_NoGravity
		BSZM A 0 A_JumpIf(waterlevel < 1, "Surface")
		VZOM AABB 3 A_Chase
		VZOM A 0 A_Recoil(-1)
		BSZM A 0 A_JumpIf(waterlevel < 1, "Surface")

		BSZM A 0 A_JumpIf(waterlevel < 1, "Surface")
		VZOM CCDD 3 A_Chase
		VZOM A 0 A_Recoil(-1)
		BSZM A 0 A_JumpIf(waterlevel < 1, "Surface")

		BSZM A 0 A_JumpIf(waterlevel < 1, "Surface")
		VZOM EEFF 3 A_Chase
		VZOM A 0 A_Recoil(-1)
		BSZM A 0 A_JumpIf(waterlevel < 1, "Surface")
		Loop
	SwimWander:
		BSZM A 0 A_ChangeFlag("FLOAT",1)
		BSZM A 0 A_NoGravity
		BSZM A 0 A_JumpIf(waterlevel < 1, "Surface")
		VZOM A 0 A_Look
		VZOM AABB 3 A_Wander
		BSZM A 0 A_JumpIf(waterlevel < 1, "Surface")

		BSZM A 0 A_JumpIf(waterlevel < 1, "Surface")
		VZOM A 0 A_Look
		VZOM CCDD 3 A_Wander
		BSZM A 0 A_JumpIf(waterlevel < 1, "Surface")

		BSZM A 0 A_JumpIf(waterlevel < 1, "Surface")
		VZOM A 0 A_Look
		VZOM EEFF 3 A_Wander
		BSZM A 0 A_JumpIf(waterlevel < 1, "Surface")
		Loop
	Surface:
		TNT1 A 0
		VZOM A 1 A_Facetarget
		TNT1 A 0 A_Recoil(-6)
		TNT1 A 0 ThrustThingZ(0,25,0,1)
		VZOM AAAA 1 A_FaceTarget
		Goto DisableSwimming
	SurfaceWander:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
		VZOM A 1
		TNT1 A 0 A_Recoil(-6)
		TNT1 A 0 ThrustThingZ(0,25,0,1)
		VZOM AAAA 1
		VZOM A 0 A_CheckFloor("DisableSwimming")
		TNT1 A 0 A_Recoil(-6)
		Goto DisableSwimmingWander
	DisableSwimmingWander:
		TNT1 A 0 A_ChangeFlag("FLOAT",0)
		TNT1 A 0 A_Gravity
		Goto Wandering
	DisableSwimming:
		TNT1 A 0 A_ChangeFlag("FLOAT",0)
		TNT1 A 0 A_Gravity
		Goto See+1
	ForgetTarget:
		BSZM A 0 A_GiveInventory("Forgotten",1)
		BSZM A 0 A_JumpIfInventory("Forgotten",18,1)
		Goto See+3
		BSZM A 0
		BSZM A 0 A_TakeInventory("Forgotten",18)
		BSZM A 0 A_ClearTarget
		Goto Wandering
	Melee:
		VZOM A 0 A_JumpIf(4 == (ACS_ExecuteWithResult(50,0,0,0)),"MeleeUnforgiving")
		VZOM A 0 A_JumpIf(3 == (ACS_ExecuteWithResult(50,0,0,0)),"MeleeSuicidal")
		VZOM A 0 A_JumpIf(2 == (ACS_ExecuteWithResult(50,0,0,0)),"MeleeModerate")
		VZOM A 0 A_JumpIf(1 == (ACS_ExecuteWithResult(50,0,0,0)),"MeleeSoft")
		VZOM A 0 A_JumpIf(0 == (ACS_ExecuteWithResult(50,0,0,0)),"MeleeMeat")
		Goto MeleeModerate
	MeleeMeat:
		VZOM G 7 A_FaceTarget
		VZOM H 7 A_FaceTarget
		VZOM I 7 A_CustomMeleeAttack(2 * random(1, 4), "skeleton/melee", "")
		Goto See
	MeleeSoft:
		VZOM G 6 A_FaceTarget
		VZOM H 6 A_FaceTarget
		VZOM I 6 A_CustomMeleeAttack(2 * random(3, 8), "skeleton/melee", "")
		Goto See
	MeleeModerate:
	MeleeSuicidal:
		VZOM G 5 A_FaceTarget
		VZOM H 5 A_FaceTarget
		VZOM I 5 A_CustomMeleeAttack(3 * random(6, 13), "skeleton/melee", "")
		Goto See
	MeleeUnforgiving:
		VZOM G 4 A_FaceTarget
		VZOM H 4 A_FaceTarget
		VZOM I 4 A_CustomMeleeAttack(4 * random(8, 13), "skeleton/melee", "")
		Goto See
	Missile:
		VZOM K 0 A_Jump(128,"See")
		VZOM K 4 A_FaceTarget
		VZOM J 0 A_PlaySoundEx("facemaw/puke","Body")
		VZOM J 0 A_CustomMissile("FacemawPuke",55)
		VZOM J 6 A_FaceTarget
		VZOM K 2 A_FaceTarget
		Goto See
	Pain:
		VZOM L 1
		VZOM L 2 A_Pain
		Goto See
	Pain.Decapitate:
	Pain.head:
	Pain.minorhead:
	Pain.Head_Shotgun:
		VZOM L 1 A_Pain
		Goto See
	Pain.QuickMelee:
		BSZM A 0 A_FaceTarget
		BSZM A 0 A_Recoil(20)
		VZOM A 1
		VZOM A 2 A_Pain
		Goto See
    Death.Decapitate:
    Death.head:
	Death.minorhead:
	Death.Head_Shotgun:
		TNT1 A 0 ACS_ExecuteAlways(72,0,1,65,30)
		TNT1 A 0 A_PlaySound("gore/juicy")
		TNT1 A 0 A_SpawnItemEx("HeadChunkSpawner",0,0,62)
		VZOM M 4
		VZOM N 4 A_NoBlocking
		VZOM OP 4
		BSZM I 0 A_SpawnItemEx("VaginaBody",0,0,0)
		Stop
    Death.MeleeDecap:
		TNT1 A 0 ACS_ExecuteAlways(72,0,1,65,30)
		TNT1 A 0 A_PlaySound("gore/juicy")
		TNT1 A 0 A_SpawnItemEx("DecapChunkSpawner",0,0,62)
		VZOM M 4
		VZOM N 4 A_NoBlocking
		VZOM OP 4
		BSZM I 0 A_SpawnItemEx("VaginaBody",0,0,0)
		Stop
	Death:
		TNT1 A 0 ACS_ExecuteAlways(72,0,0,50,20)
		VZOM M 4 A_Scream
		VZOM N 4 A_NoBlocking
		VZOM OP 4
		BSZM I 0 A_SpawnItemEx("BaseZombieBody",0,0,0)
		Stop
	Death.PointBlank:
	Death.ExplosiveDamage:
		BSZM M 0 ACS_ExecuteAlways(72,0,0,50,30)
		TNT1 A 0 A_SpawnItemEx("GibChunkSpawner_Facemaw",0,0,32)
		TNT1 A 0 A_NoBlocking
		TNT1 A -1
		Stop
	Death.MeleeLeft:
	Death.MeleeRight:
		BZSP A 0 A_PlaySoundEx("skull/hit","Body")
		BZSP A 0 A_Noblocking
		BZSP A 0 A_UnsetShootable
		TNT1 A 0 ACS_ExecuteAlways(72,0,0,30,10)
		TNT1 A 0 A_SpawnItemEx("Torso_VaginaZombie",0,0,40,random(-1,1),random(-1,1),random(3,5))
		SPFL EFG 4
		SPFL H -1
		Stop
	}
}

ACTOR VaginaBody
{
	+THRUACTORS
	+SHOOTABLE
	+MOVEWITHSECTOR
	-NOBLOOD
	-SOLID
	+FLOORCLIP
	+CORPSE
	+NOTELEPORT
	Health 150
	Mass 300000000
	Radius 22
	Height 4
	DamageFactor "Fire", 50.0
	DamageFactor "Dragon", 50.0
	States
	{
	Spawn:
		VZOM Q 1
		Loop
	Pain.Fire:
	Pain.Dragon:
	Death.Fire:
	Death.Dragon:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("BurningVaginaCorpse",0,0,0)
		Stop
	Pain.PointBlank:
	Death.PointBlank:
	Death.ExplosiveDamage:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("GibChunkSpawner",0,0,10)
		Stop
	}
}