ACTOR CursedZombie : NemesisZombie
{
//Creator: Complex Doom CF 3.0 team
//Origin: Complex Doom CF 3.0 Aprilfools
//Sprite: CSZO/CSZI
//Title: "Cursed Zombie"
Health 2500
Speed 40
BloodColor "Pink"
DamageFactor 0.6
DamageFactor "Cursed", 0.0
DropItem "NemesisHealthBonusMax", 256, 32
DropItem "NemesisArmorBonus32", 256
DropItem "NemesisHealthBonusMax", 256, 32
DropItem "NemesisArmorBonus32", 256
DropItem "EnragedLegendaryArmor", 85, 1
DropItem "LegAmmoSphere", 88, 3
DropItem "EnragedLegendaryPowerShard", 35, 1
DropItem "HandGrenadeAmmo", 235, 2
DropItem "MineAmmo", 235, 2
DropItem "Backpack", 198, 1
DropItem "Armorplate", 205, 1
DropItem "Portablemedkit", 210, 1
DropItem "CRDemonAmmoBox", 200 
DropItem "CRDemonAmmo", 250 
DropItem "LegendaryRune", 180, 1
DropItem "Cursed Rifle", 128, 1
SeeSound "CursedZombie/Sight"
PainSound "CursedZombie/Pain"
DeathSound "CursedZombie/Death"
ActiveSound "CursedZombie/Active"
Obituary "%o was converted into a baddon maker by a Cursed Zombie."
Tag "\c[p7]Cursed Zombie\c-"
States
{
  Spawn:
	CSZO A 10 Bright A_Look
	TNT1 A 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	CSZI A 10 Bright A_Look
	TNT1 AA 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	Loop
  See:
	TNT1 A 0 A_JumpIf(user_music == 1,3)
	TNT1 A 0 ACS_NamedExecuteAlways("StartMonsterMusic",0,2046)
	TNT1 A 0 A_SetUserVar("user_music",1)
	TNT1 A 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	TNT1 A 0 A_JumpIfTargetInLOS("Strafing")
	CSZO AA 3 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	CSZO BB 3 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_JumpIfTargetInLOS("Strafing")
	CSZO CC 3 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	CSZO DD 3 Bright A_Chase
	TNT1 A 0 A_Jump(20,"Teleport")
	TNT1 A 0 A_Jump(80,"Rush")
	TNT1 A 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	Loop
  Rush:
	TNT1 A 0 A_JumpIfTargetInLOS("Strafing")
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	TNT1 A 0 A_SpawnItemEx("CursedZombieGhostA",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	CSZO A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedZombieGhostA",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	CSZO A 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedZombieGhostB",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	CSZO B 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedZombieGhostB",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	CSZO B 1 Bright A_Chase
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	TNT1 A 0 A_SpawnItemEx("CursedZombieGhostC",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	CSZO C 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedZombieGhostC",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	CSZO C 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedZombieGhostD",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	CSZO D 1 Bright A_Chase
	TNT1 A 0 A_SpawnItemEx("CursedZombieGhostD",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	CSZO D 1 Bright A_Chase
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	TNT1 A 0 A_Jump(84,"See")
	TNT1 A 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	Loop
  Teleport:
	CSZO A 1 Bright A_UnSetShootable
	TNT1 AAAA 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	CSZO AAAAAAAAAA 1 Bright A_FadeOut(0.1,0)
	CSZO A 2 Bright
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	CSZO A 1 Bright A_PlayWeaponSound("boss/teleport")
	TNT1 AAAA 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	CSZO AAAAAAAAAA 1 Bright A_FadeIn(0.1)
	CSZO A 1 Bright A_SetShootable
	Goto See  
  Strafing:
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	CSZO AA 2 Bright A_GiveInventory("CursedZombieStrafing",1)
	TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	CSZO BB 2 Bright A_GiveInventory("CursedZombieStrafing",1)
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	CSZO CC 2 Bright A_GiveInventory("CursedZombieStrafing",1)  
	TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	CSZO DD 2 Bright A_GiveInventory("CursedZombieStrafing",1)
	Goto See
  Pause:
	TNT1 A 0 A_PlaySound("weapons/demontechsteam")
	CSZO EEEEE 3 Bright A_GiveInventory("CursedZombieStrafing",1)
	Goto See  
  Missile:
	TNT1 A 0 A_SetShootable
	TNT1 A 0 A_UnsetInvulnerable
	TNT1 A 0 A_SetTranslucent(1)
	CSZO EEE 2 Bright A_GiveInventory("CursedZombieStrafing",1)
  MissileLoop:
	CSZO E 4 Bright A_GiveInventory("CursedZombieStrafing",1)
	TNT1 A 0 A_GiveInventory("CursedZombieStrafing",1)
	TNT1 A 0 A_CustomMissile("CursedRifleShotEnemy",32,0,random(-2,2),0)
	CSZO F 4 Bright A_PlaySoundEx("CursedRifle/Fire","Weapon")
	TNT1 A 0 A_Jump(10,"MidAttackTeleport")
	TNT1 A 0 A_Jump(24,"Pause")
	TNT1 A 0 A_SpidRefire
	Loop
  MidAttackTeleport:
	CSZO E 1 Bright A_UnSetShootable
	TNT1 AAAA 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	CSZO E 1 Bright A_FadeOut(0.1,0)
	TNT1 A 0 A_GiveInventory("CursedZombieStrafing",1)
	CSZO EEE 1 Bright A_FadeOut(0.1,0)
	TNT1 A 0 A_GiveInventory("CursedZombieStrafing",1)
	CSZO EEE 1 Bright A_FadeOut(0.1,0)
	TNT1 A 0 A_GiveInventory("CursedZombieStrafing",1)
	CSZO EEE 1 Bright A_FadeOut(0.1,0)
	CSZO E 2 Bright
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	CSZO E 1 Bright A_PlayWeaponSound("boss/teleport")
	TNT1 AAAA 0 A_SpawnItemEx("CursedHellionSmokeSpawner")
	CSZO EEEEEEEEEE 1 Bright A_FadeIn(0.1)
	CSZO EEE 1 Bright A_FadeIn(0.1)
	TNT1 A 0 A_GiveInventory("CursedZombieStrafing",1)
	CSZO EEE 1 Bright A_FadeIn(0.1)
	TNT1 A 0 A_GiveInventory("CursedZombieStrafing",1)
	CSZO EEE 1 Bright A_FadeIn(0.1)
	TNT1 A 0 A_GiveInventory("CursedZombieStrafing",1)
	CSZO E 1 Bright A_FadeIn(0.1)
	CSZO E 1 Bright A_SetShootable
	Goto MissileLoop
  Pain:
	TNT1 A 0 A_Jump(30,"Teleport")
  Pain2:
	TNT1 A 0 A_Jump(192,"PainMissile")
	CSZO G 3 Bright A_GiveInventory("CursedZombieStrafing",1)
	TNT1 A 0 A_Pain
	CSZO G 3 Bright A_GiveInventory("CursedZombieStrafing",1)
	Goto See
  PainMissile: 
	CSZO G 3 Bright A_GiveInventory("CursedZombieStrafing",1)
	TNT1 A 0 A_Pain
	CSZO G 3 Bright A_GiveInventory("CursedZombieStrafing",1)
	Goto Missile  
  Death:
	TNT1 A 0 A_StopSound(6)	
    //TNT1 A 0 A_Jump(36,"LegendarySoul")
	CSZO H 5 A_Scream
	CSZO I 5 A_Fall
	CSZO J 5 A_SpawnItem("BodyCrash",0,0,0,0)
	CSZO K 5 
	CSZO L -1
	Stop
  LegendarySoul:
    TNT1 A 0 A_StopSound(6)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSZO H 5 A_Scream
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
    CSZO I 5 A_Fall
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0) //TrueCursedHellionSmokeSpawner
    CSZO J 5 A_SpawnItem("BodyCrash",0,0,0,0)
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
    CSZO K 5 
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
    CSZO L 5
	TNT1 A 0 A_SpawnItem("CursedHellionSmokeSpawner",0,0,0,0)
	CSZO L 140
	CSZO L 0 A_PlaySoundEx("brain/spit","Voice",0,2)
	CSZO LLLLLLLLLLLLLLLLL 2 Bright A_GiveInventory("NemesisSoulEvent",1)
	CSZO LLLLLLLLLLLLLLLLL 2 Bright A_GiveInventory("NemesisSoulEvent",1)
	CSZO LLLLLLLLLLLLLLLLL 2 Bright A_GiveInventory("NemesisSoulEvent",1)
	TNT1 A 0 A_SpawnItemEx("NemesisSoul",0,0,16,0,0,0,0,32)
	TNT1 A 0 A_SpawnItemEx("TeleportFog",0,0,16,0,0,0,0,32)
	CSZO L -1
	Stop
  XDeath:
	TNT1 A 0 A_StopSound(6)
	CSZO O 3 A_SpawnItemEx("NemesisGibbedGenerator",0,0,0,0,0,0,0,128,0)
	CSZO P 3 A_XScream
	CSZO R 3 A_Fall
	CSZO STUV 3 
	CSZO W -1
	Stop
  }
}

ACTOR CursedZombieGhostA
{
Scale 1.1
Renderstyle Translucent
Alpha 0.7
+NOGRAVITY
+NOTIMEFREEZE
+NOINTERACTION
+CLIENTSIDEONLY
States
{
  Spawn:
	TNT1 A 0 
	TNT1 A 1 A_JumpIf(ACS_ExecuteWithResult(304) == 1,"NULL")
  Fade:
	CSZO A 2 A_FadeOut(0.1,1)
	Wait
  }
}

ACTOR CursedZombieGhostB : CursedZombieGhostA
{
States
  {
  Fade:
	CSZO B 2 A_FadeOut(0.1,1)
	Wait
  }
}

ACTOR CursedZombieGhostC : CursedZombieGhostA
{
States
  {
  Fade:
	CSZO C 2 A_FadeOut(0.1,1)
	Wait
  }
}

ACTOR CursedZombieGhostD : CursedZombieGhostA
{
States
  {
  Fade:
	CSZO D 2 A_FadeOut(0.1,1)
	Wait
  }
}

ACTOR CursedZombieGhostE : CursedZombieGhostA
{
States
  {
  Fade:
	CSZO E 2 A_FadeOut(0.1,1)
	Wait
  }
}

ACTOR CursedZombieGhostF : CursedZombieGhostA
{
States
  {
  Fade:
	CSZO F 2 A_FadeOut(0.1,1)
	Wait
  }
}

Actor CursedZombieStrafing : CustomInventory
{
-COUNTITEM
+NOTIMEFREEZE
+INVENTORY.QUIET
+INVENTORY.UNDROPPABLE
+INVENTORY.ALWAYSPICKUP
+INVENTORY.AUTOACTIVATE
Inventory.Amount 1
Inventory.MaxAmount 0
States
  {
  Pickup:
	NULL A 1 
	NULL A 1 A_SpawnItemEx("CursedHellionSmokeSpawner")
	NULL A 1 A_Jump(188,2)
	NULL A 1 A_GiveInventory("LegZombieJumping",1)
	NULL A 1 A_JumpIf(velx != 0 || vely != 0,2)
	NULL A 1 A_Jump(256,2)
	NULL A 1 A_Jump(235,5)
	NULL A 1 A_JumpIfInventory("LegZombieStrafeSens",1,3)
	NULL A 1 A_GiveInventory("LegZombieStrafeSens",1)
	NULL A 1 A_Jump(256,2)  
	NULL A 1 A_TakeInventory("LegZombieStrafeSens",1)
	NULL A 1 A_JumpIfInventory("LegZombieStrafeSens",1,3)
	NULL A 1 ThrustThing(angle*256/360+38.7,6,0,0)
	NULL A 1 A_Jump(256,2)  
	NULL A 1 ThrustThing(angle*256/360+38.7,-6,0,0)
	NULL A 1 A_FaceTarget
	NULL A 1 A_Jump(24,2)
	NULL A 1 A_JumpIfCloser(300,2)
	NULL A 1 A_Recoil(-1)
	Stop
	NULL A 1 A_Recoil(1)
	Stop  
  }
}