

//===========================================================================
//
// Modded Chaingunner Only drops clips
//
//===========================================================================
/*class ClipDropper : ChaingunGuy
{
	Default
	{
				Dropitem "Clip";
	}
}*/

//Shadow
Class Shadow : Actor
{
  Default
  {
    Health 80;
    Radius 20;
    Height 56;
    Mass 100;
    RenderStyle "Translucent";
    Alpha 0.7;
    Speed 8;
    PainChance 200;
    PainSound "Shadow/pain";
    DeathSound "Shadow/death";
    ActiveSound "Shadow/active";
    Obituary "%o was assassinated by a shadow.";
    Monster;
    +FLOORCLIP
  }

  States
  {
  Spawn:
  See:
    SHDW E 15;
    SHDW AAA 1 A_Chase();
    SHDW A 0 A_SpawnItemEx("ShadowGhostA", 0,0,0, 0,0,0, 0, SXF_CLIENTSIDE);
    SHDW BBB 1 A_Chase();
    SHDW B 0 A_SpawnItemEx("ShadowGhostB", 0,0,0, 0,0,0, 0, SXF_CLIENTSIDE);
    SHDW CCC 1 A_Chase();
    SHDW C 0 A_SpawnItemEx("ShadowGhostC", 0,0,0, 0,0,0, 0, SXF_CLIENTSIDE);
    SHDW DDD 1 A_Chase();
    SHDW D 0 A_SpawnItemEx("ShadowGhostD", 0,0,0, 0,0,0, 0, SXF_CLIENTSIDE);
    SHDW AAA 1 A_Chase();
    SHDW A 0 A_SpawnItemEx("ShadowGhostA", 0,0,0, 0,0,0, 0, SXF_CLIENTSIDE);
    SHDW BBB 1 A_Chase();
    SHDW B 0 A_SpawnItemEx("ShadowGhostB", 0,0,0, 0,0,0, 0, SXF_CLIENTSIDE);
    SHDW CCC 1 A_Chase();
    SHDW C 0 A_SpawnItemEx("ShadowGhostC", 0,0,0, 0,0,0, 0, SXF_CLIENTSIDE);
    SHDW DDD 1 A_Chase();
    SHDW D 0 A_SpawnItemEx("ShadowGhostD", 0,0,0, 0,0,0, 0, SXF_CLIENTSIDE);
    Goto See+1;
  Missile:
    SHDW EEEEEEEEEEEEEEE 2 A_FaceTarget();
  Shoot:
    SHDW F 5 A_FaceTarget();
    SHDW G 5 BRIGHT A_SpawnProjectile("ShadowBall");
    SHDW F 5 A_FaceTarget();
    SHDW EEEEEEEEEE 2 A_FaceTarget();
    SHDW E 1 A_SpidRefire();
    Loop;
  Pain:
    SHDW H 4;
    SHDW H 4 A_Pain();
    Goto See+1;
  Death:
    SHDW I 6 A_Scream();
    SHDW J 5;
    SHDW K 5 A_SpawnItemEx("Shadowtorso", 0,0,0, 1,0,0, 0, SXF_CLIENTSIDE);
    SHDW L 5 A_Fall();
    SHDW MNO 6;
    SHDW P -1;
    Stop;
  XDeath:
    SHDX A 8;
    SHDX B 6 A_XScream();
    SHDX C 6;
    SHDX D 6 A_Fall();
    SHDX E 6;
    SHDX F 6;
    SHDX G -1;
    Stop;
  Raise:
    SHDW MKLJI 8;
    Goto See;
  }
}

Class ShadowBall : Actor
{
  Default
  {
    Radius 6;
    Height 8;
    Speed 12;
    Damage 4;
    RenderStyle "Add";
    Alpha 0.75;
    SeeSound "Shadow/attack";
    DeathSound "imp/shotx";
    Decal "DoomImpScorch";
    Projectile;
    +RANDOMIZE
  }

  States
  {
  Spawn:
    SBAL ABC 4 BRIGHT A_SpawnItemEx("ShadowTrail", 0,0,0, 0,0,0, 0, SXF_CLIENTSIDE);
    Loop;
  Death:
    SBAL C 5 Bright;
    SBAL DEFGH 4 BRIGHT;
    Stop;
  }
}

Class ShadowGhostA : Actor
{
  Default
  {
    Radius 4;
    Height 8;
    Speed 0;
    Damage 0;
    Mass 75;
    RenderStyle "Translucent";
    Alpha 0.3;
    PROJECTILE;
  }

  States
  {
  Spawn:
    SHDW A 10;
    Stop;
  }
}

Class ShadowGhostB : ShadowGhostA
{
  States
  {
  Spawn:
    SHDW B 10;
    Stop;
  }
}

Class ShadowGhostC : ShadowGhostA
{
  States
  {
  Spawn:
    SHDW C 10;
    Stop;
  }
}

Class ShadowGhostD : ShadowGhostA
{
  States
  {
  Spawn:
    SHDW D 10;
    Stop;
  }
}

Class Shadowtorso : Actor
{
  Default
  {
    Radius 12;
    Height 15;
    Speed 1;
    Mass 5000;
    RenderStyle "Translucent";
    alpha 0.7;
    +DoomBounce
  }

  States
  {
  Spawn:
    SHDW QRS 5;
    SHDW T 5 A_Fall();
    SHDW U 5;
    SHDW V -1;
    Stop;
  }
}

Class ShadowTrail : Actor
{
  Default
  {
    Radius 1;
    Height 1;
    Speed 0;
    RENDERSTYLE "ADD";
    ALPHA 0.6;
    PROJECTILE;
    +NOCLIP
  }

  States
  {
  Spawn:
    SHTR ABCDEF 4 Bright;
    Stop;
  }
}

Class VoidDarkImp : Actor
{
  Default
  {
    Health 130;
    Radius 20;
    Height 56;
    Speed 7;
    PainChance 200;
    SeeSound "imp/sight";
    PainSound "imp/pain";
    DeathSound "imp/death";
    ActiveSound "imp/active";
    Obituary "%o was cursed by a dark imp.";
    HitObituary "%o was touched by a dark imp.";
    MONSTER;
    +FLOORCLIP
  }

  States
  {
  Spawn:
    DRKV AB 10 A_Look();
    Loop;
  See:
    DRKV AABBCCDD 3 A_Chase();
    Loop;
  Melee:
    DRKV EF 8 A_FaceTarget();
    DRKV G 6 A_CustomComboAttack("DarkNormal", 32, 3*random(1,8), "imp/melee");
    Goto See;
  Missile:
    DRKV E 0 A_Jump(64,"Missile2");
    DRKV EF 8 A_FaceTarget();
    DRKV G 6 A_SpawnProjectile("DarkNormal", 32, 0, 0);
    Goto Missile3;
  Missile2:
    DRKV IJ 8 Bright A_FaceTarget();
    DRKV K 6 Bright A_SpawnProjectile("DarkStrong", 32, 0, 0);
  Missile3:
    DRKV E 0 A_Jump(64,"Missile4");
    DRKV EF 8 A_FaceTarget();
    DRKV G 6 A_SpawnProjectile("DarkNormal", 32, 0, 0);
    Goto See;
  Missile4:
    DRKV IJ 8 Bright A_FaceTarget();
    DRKV K 6 Bright A_SpawnProjectile("DarkStrong", 32, 0, 0);
    Goto See;
  Pain:
    DRKV H 2;
    DRKV H 2 A_Pain();
    Goto See;
  Death:
    DRKV L 8;
    DRKV M 8 A_Scream();
    DRKV N 5;
    DRKV O 5 A_Fall();
    DRKV P -1;
    Stop;
  XDeath:
    DRKI N 5;
    DRKI O 5 A_XScream();
    DRKI P 5;
    DRKI Q 5 A_Fall();
    DRKI RST 5;
    DRKI U -1;
    Stop;
  Raise:
    DRKV PO 8;
    DRKV NML 6;
    Goto See;
  }
}

Class DarkNormal : Actor
{
  Default
  {
    Radius 8;
    Height 6;
    Speed 9;
    Damage 3;
    RENDERSTYLE "ADD";
    ALPHA 0.67;
    SeeSound "imp/attack";
    DeathSound "imp/shotx";
    Decal "DoomImpScorch";
    PROJECTILE;
  }

  States
  {
  Spawn:
    DKB1 AB 4 Bright;
    Loop;
  Death:
    DKB1 CDE 4 Bright;
    Stop;
  }
}

Class DarkStrong : Actor
{
  Default
  {
    Radius 8;
    Height 6;
    Speed 9;
    Damage 6;
    RENDERSTYLE "ADD";
    ALPHA 0.67;
    SeeSound "imp/attack";
    DeathSound "imp/shotx";
    Decal "DoomImpScorch";
    PROJECTILE;
  }

  States
  {
  Spawn:
    DKB2 AB 4 Bright A_SpawnItemEx("DarkTail", 0, 0, 0, 0, 0, 0, 0, 128);
    Loop;
  Death:
    DKB2 CDE 4 Bright;
    Stop;
  }
}

Class DarkTail : Actor
{
  Default
  {
    RENDERSTYLE "ADD";
    ALPHA 0.5;
    PROJECTILE;
    +NOCLIP
  }

  States
  {
  Spawn:
    DKBT ABCDEF 2 Bright;
    Stop;
  }
}

Class RapidFireTrooper : Actor
{
  Default
  {
    Health 30;
    Radius 20;
    Height 56;
    Speed 8;
    PainChance 200;
    DropItem "Clip";
    SeeSound "grunt/sight";
    PainSound "grunt/pain";
    DeathSound "grunt/death";
    ActiveSound "grunt/active";
    Obituary "%o was surprised by the zombie's weaponry.";
    Decal "BulletChip";
    MONSTER;
    +FLOORCLIP
  }

  States
  {
  Spawn:
    RFTR AB 10 A_Look();
    Loop;
  See:
    RFTR AABBCCDD 4 A_Chase();
    Loop;
  Missile:
    RFTR E 10 A_FaceTarget();
    RFTR F 5 Bright A_PosAttack();
    RFTR E 5 A_CPosRefire();
    Goto Missile+1;
  Pain:
    RFTR G 3;
    RFTR G 3 A_Pain();
    Goto See;
  Death:
    RFTR H 5;
    RFTR I 5 A_Scream();
    RFTR J 5 A_Fall();
    RFTR K 5;
    RFTR L -1;
    Stop;
   XDeath:
    RFTR M 5;
    RFTR N 5 A_XScream();
    RFTR N 5;
    RFTR P 5 A_Fall();
    RFTR QRST 5;
    RFTR U -1;
    Stop;
  Raise:
    RFTR KJIH 5;
    Goto See;
   }
}

Class Machinegunguy : Actor
{
  Default
  {
    Health 40;
    Radius 20;
    Height 56;
    Speed 8;
    PainChance 150;
    SeeSound "grunt/sight";
    PainSound "grunt/pain";
    DeathSound "grunt/death";
    ActiveSound "grunt/active";
    Obituary "%o was riddled by a machinegun-wielding zombieman.";
    Decal "bulletchip";
    DropItem "Clip";
    DropItem "UACBattleRifle"; //If your mod has a machinegun
    Monster;
    +FLOORCLIP
  }

  States
  {
  Spawn:
    MGPO AB 10 A_Look();
    Loop;
  See:
    MGPO AABBCCDD 4 A_Chase();
    Loop;
  Missile:
    MGPO E 8 A_FaceTarget();
    MGPO F 0 A_playsound("MGzombieshoot");
    MGPO F 3 BRIGHT A_CustomBulletAttack(12,0,1,random(1,5)* 3,"BulletPuff",0,CBAF_NORANDOM);
    MGPO E 3;
    MGPO F 0 A_playsound("MGzombieshoot");
    MGPO F 3 BRIGHT A_CustomBulletAttack(12,0,1,random(1,5)* 3,"BulletPuff",0,CBAF_NORANDOM);
    MGPO E 3;
    MGPO F 0 A_playsound("MGzombieshoot");
    MGPO F 3 BRIGHT A_CustomBulletAttack(12,0,1,random(1,5)* 3,"BulletPuff",0,CBAF_NORANDOM);
    MGPO E 3;
    MGPO F 0 A_playsound("MGzombieshoot");
    MGPO F 3 BRIGHT A_CustomBulletAttack(12,0,1,random(1,5)* 3,"BulletPuff",0,CBAF_NORANDOM);
    MGPO E 3;
    MGPO F 0 A_playsound("MGzombieshoot");
    MGPO F 3 BRIGHT A_CustomBulletAttack(12,0,1,random(1,5)* 3,"BulletPuff",0,CBAF_NORANDOM);
    MGPO E 10;
    Goto See;
  Pain:
    MGPO G 3;
    MGPO G 3 A_Pain();
    Goto See;
  Death:
    MGPO H 5;
    MGPO I 5 A_Scream();
    MGPO J 5 A_NoBlocking();
    MGPO K 5;
    MGPO L -1;
    Stop;
  XDeath:
    MGPO M 5;
    MGPO N 5 A_XScream();
    MGPO O 5 A_NoBlocking();
    MGPO PQRST 5;
    MGPO U -1;
    Stop;
/*
  Death.chainsaw:
    MGPS A 3;
    MGPS B 3 A_XScream();
    MGPS I 0 A_SpawnItemEx("Blood", 0,0,22, -4, 0,6, 0, SXF_CLIENTSIDE);
    MGPS I 0 A_SpawnItemEx("Blood", 0,0,22, -3,-1,4, 0, SXF_CLIENTSIDE);
    MGPS I 0 A_SpawnItemEx("Blood", 0,0,22, -2,-1,5, 0, SXF_CLIENTSIDE);
    MGPS I 0 A_SpawnItemEx("Blood", 0,0,22,  0,-2,6, 0, SXF_CLIENTSIDE);
    MGPS I 0 A_SpawnItemEx("Blood", 0,0,22,  2, 0,6, 0, SXF_CLIENTSIDE);
    MGPS I 5 A_SpawnItemEx("Machinegunguytorso", 0,0,22, -2,0,5, 0, SXF_CLIENTSIDE);
    MGPS J 5;
    MGPS K 5 A_NoBlocking();
    MGPS LM 5;
    MGPS N -1;
    Stop;
*/
  Raise:
    MGPO K 5;
    MGPO JIH 5;
    Goto See;
  }
}

Class deadmachinegunguy : Actor
{
  States
  {
  Spawn:
    MGPB A -1;
    Stop;
  }
}

Class machinegunguytorso : Actor
{
  States
  {
  Spawn:
    MGPS CCDEFGHFGFGHFGHFGFGFGHHFGHHHFGFGHHHFG 5;
    MGPS H -1;
    Stop;
  }
}

Class SoulHarvester : Actor
{
  Default
  {
    Health 100;
    Radius 20;
    Height 56;
    Speed 8;
    PainChance 160;
    SeeSound "harvester/sight";
    PainSound "imp/pain";
    DeathSound "harvester/death";
    ActiveSound "imp/active";
    Obituary "%o couldn't evade the soul harvester's attack.";
    MONSTER;
    +FLOORCLIP
  }

  States
  {
  Spawn:
    SLHV AB 10 A_Look();
    Loop;
  See:
    SLHV AABBCCDD 3 A_Chase();
    Loop;
  Melee:
  Missile:
    SLHV EFG 4 A_FaceTarget();
    SLHV HIJK 5 Bright A_FaceTarget();
    SLHV L 8 Bright A_SpawnProjectile("SoulHarvesterBall");
    SLHV M 10;
    Goto See;
  Pain:
    SLHV N 3;
    SLHV N 3 A_Pain();
    Goto See;
  Death:
    SLHV O 7 A_Scream();
    SLHV PQR 7;
    SLHV S 6 A_SpawnItemEx("SoulHarvesterGhost", 0,0,32, 0,0,0, 0, SXF_CLIENTSIDE);
    SLHV T 5 A_Fall();
    SLHV UV 5;
    SLHV W -1;
    Stop;
  XDeath:
    SLHV X 6 A_Xscream();
    SLHV Y 6 A_SpawnItemEx("SoulHarvesterGhost", 0,0,32, 0,0,0, 0, SXF_CLIENTSIDE);
    SLHV Z 6;
    SLHV [ 6 A_Fall();
    SLHV ] 6;
    SLHW A -1;
    Stop;
  Raise:
    SLHV WVUTSRQPO 5;
    Goto See;
  }
}

Class SoulHarvesterBall : Actor
{
  Default
  {
    Radius 8;
    Height 6;
    Scale 0.4;
    Speed 9;
    Damage 2;
    Renderstyle "Add";
    SeeSound "harvester/scream";
    DeathSound "imp/shotx";
    Decal "DoomImpScorch";
    PROJECTILE;
    +SEEKERMISSILE
  }

  States
  {
  Spawn:
    SHBA A 0 Bright A_SpawnItemEx("SoulBallTrail", 0, 0, 0, 0, 0, 0, 180, SXF_CLIENTSIDE);
    SHBA AB 2 Bright A_SeekerMissile(10,20);
    Loop;
  Death:
    SHBA CDEFGHIJKL 4 Bright;
    Stop;
  }
}

Class SoulHarvesterGhost : Actor
{
  Default
  {
    Radius 1;
    Height 1;
    Speed 0;
    RENDERSTYLE "ADD";
    ALPHA 0.7;
    SeeSound "harvester/ghost";
    PROJECTILE;
    +NOCLIP
  }

  States
  {
  Spawn:
  Death:
    SHGH A 0 NoDelay A_PlaySound("Harvester/Ghost");
    SHGH ABCDEFG 4 Bright;
    Stop;
  }
}

Class SoulBallTrail : Actor
{
  Default
  {
    Radius 1;
    Height 1;
    Speed 0;
    RENDERSTYLE "ADD";
    ALPHA 0.5;
    PROJECTILE;
    +NOCLIP
  }

  States
  {
  Spawn:
  Death:
    SBTR H 6;
    SBTR ABCDEFG 4 Bright;
    Stop;
  }
}


