actor PigFlyer : ZBaseActorMetal 19139
{
  obituary "%o was shot down by a Pig flyer."
  health 200
  SpawnID 6
  radius 48
  height 48
  mass 1000
  speed 16
  seesound "pig/sight"
  attacksound "alien/shoot"
  MONSTER
  +FLOORCLIP
  +NOBLOOD
  +NOICEDEATH
  +FLOATBOB
  +FLOAT
  +NOGRAVITY
  +MISSILEMORE
  +MISSILEEVENMORE
  +SPAWNFLOAT
  FloatBobStrength 0.5
  damagefactor "AlienzShrinker", 0.0
  damagefactor "Shrinkerhit", 0.0
  damagefactor "Explosion", 0.75
  damagefactor "RocketExplosion", 0.75
  damagefactor "ShellExplosion", 0.86
  damagefactor "Fire", 0.5
  damagefactor "BulletFlame", 0.5
  damagefactor "Shrinker", 0.0
  damagefactor "Expander", 0.25
  damagefactor "Plasma", 1.3
  damagefactor "MicrowaveBlast", 1.3
  painchance 85
  painchance "Fire", 10
  painchance "BulletFlame", 10
  painchance "PlasmaSpark", 256
  painchance "MicrowaveBlast", 256
  gravity 0.25
  Species "Pigcops"
  +DOHARMSPECIES
  +NOINFIGHTSPECIES
  +DONTHARMCLASS
  WoundHealth 10
  +FORCEXYBILLBOARD
  states
  {
  Spawn:
    ENE7 A 0
    "####" "#" 0 ThrustThingZ(0, 50, 0, 1)
    "####" "#" 1
    "####" "#" 0 A_Stop
  Idle:
    ENE7 AA 5 {A_Look; if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_StopSound(7)
    loop
  See:
    ENE7 A 1
    "####" "#" 0 A_PlaySound("alien/jetpack",7,2,1)
    "####" "#" 0 A_Jump(16,"Dodge1","Dodge2")
    ENE7 A 4 {A_Chase; if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    ENE7 A 4 {A_FastChase; if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    Loop
  Dodge1:
    ENE7 B 5 {ThrustThing(angle*256/360+192, 9, 0, 0); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_Chase
    ENE7 B 5 {ThrustThing(angle*256/360+192, 9, 0, 0); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_Chase
    ENE7 B 5 {ThrustThing(angle*256/360+192, 9, 0, 0); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_Chase
    "####" "#" 0 A_Stop
    Goto See
  Dodge2:
    ENE7 C 5 {ThrustThing(angle*256/360+64, 9, 0, 0); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_Chase
    ENE7 C 5 {ThrustThing(angle*256/360+64, 9, 0, 0); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_Chase
    ENE7 C 5 {ThrustThing(angle*256/360+64, 9, 0, 0); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_Chase
    "####" "#" 0 A_Stop
    Goto See
  Missile:
    "####" "#" 0 A_Jump(128,"See")
    ENE7 A 4 {A_FaceTarget; if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_Jump(128,"Missile2","Missile3","Missile4")
  Missile2:
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    ENE7 A 4 bright {A_CustomMissile("PigFlyerBullet",16,-6,random[RIDMONSTERAT](-3,3)); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    ENE7 A 4 {A_FaceTarget; if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    ENE7 A 4 bright {A_CustomMissile("PigFlyerBullet",16,6,random[RIDMONSTERAT](-3,3)); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    ENE7 A 4 {A_FaceTarget; if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    ENE7 A 4 bright {A_CustomMissile("PigFlyerBullet",16,-6,random[RIDMONSTERAT](-3,3)); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    goto see
  Missile3:
    "####" "#" 0 ThrustThing(angle*256/360+64, 9, 0, 0)
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    ENE7 A 4 bright {A_CustomMissile("PigFlyerBullet",16,-6,random[RIDMONSTERAT](-3,3)); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    ENE7 A 4 {A_FaceTarget; if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    ENE7 A 4 bright {A_CustomMissile("PigFlyerBullet",16,6,random[RIDMONSTERAT](-3,3)); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    ENE7 A 4 {A_FaceTarget; if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    ENE7 A 4 bright {A_CustomMissile("PigFlyerBullet",16,-6,random[RIDMONSTERAT](-3,3)); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    goto see
  Missile4:
    "####" "#" 0 ThrustThing(angle*256/360+192, 9, 0, 0)
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    ENE7 A 4 bright {A_CustomMissile("PigFlyerBullet",16,-6,random[RIDMONSTERAT](-3,3)); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    ENE7 A 4 {A_FaceTarget; if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    ENE7 A 4 bright {A_CustomMissile("PigFlyerBullet",16,6,random[RIDMONSTERAT](-3,3)); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    ENE7 A 4 {A_FaceTarget; if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    ENE7 A 4 bright {A_CustomMissile("PigFlyerBullet",16,-6,random[RIDMONSTERAT](-3,3)); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    goto see
  Pain:
    "####" "#" 0 A_SpawnDebris("DukeMechParticle", FALSE, 1.0, 1.0)
    "####" "##" 4 {A_ExtChase(0,0,0,0); if (health > 50) {return;} A_CustomMissile("FlameTrails1", 0, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    goto See
  Pain.MicrowaveBlast:
    "####" "#" 1
    "####" "#" 0 A_CheckThump("Pain")
    loop
  Death.Plasma:
    "####" "#" 0 A_SpawnItemEx("DukePlasmaExplosion",0,0,32,0,0,0,0,1,0)
  Death:
    "####" "#" 0 A_ChangeFlag("FLOATBOB",0)
    "####" "#" 0 A_PlaySound("rpg/blowup")
    "####" "#" 0 A_Recoil(-5)
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnDebris("DukeMechParticle", FALSE, 1.0, 1.0)
    ENE7 A 10 A_SpawnItemEx("PigFlyerExplosionLight",0,0,0,0,0,0,0,0)
    wait
  Crash:
    "####" "#" 0 A_NoBlocking(false)
    "####" "#" 0 A_SpawnDebris("MetalGibs1", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("MetalGibs2", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("MetalGibs3", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("MetalGibs4", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("MetalGibs5", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnItemEx("PigFlyerExplosion",0,0,0,0,0,0,0,0)
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_BossDeath
    "####" "#" 0 A_Explode(128,180)
    "####" "#" 0 A_PlaySound("rpg/blowup")
    "####" "#" 0 A_PlayWeaponSound("rpg/blowup")
    "####" "#" 0 A_Jump(128,3)
    "####" "#" 0 A_SpawnItemEx("PigCopHurt",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
    TNT1 A 35 A_SpawnItemEx("RPGExplosion",0,0,0,0,0,0,0,0)
    stop
    "####" "#" 0 A_PlaySound("pig/death")
    "####" "#" 0 A_SpawnDebris("DukeGibs1", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    TNT1 A 35 A_SpawnItemEx("RPGExplosion",0,0,0,0,0,0,0,0)
    stop
  }
}

actor PigFlyerBullet : AlienBullet
{
  Damage (12)
}

actor PigFlyerExplosion
{
  radius 1
  height 1
  speed 0
  +RANDOMIZE
  +NOCLIP
  PROJECTILE
  scale 0.75
  states
  {
  Spawn:
    TNT1 AAAAAAAAA 0 NoDelay A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 180))
    TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    "####" "#" 0 A_CustomMissile ("RPGExplosion", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAA 0 A_CustomMissile ("ExplosionSmokeFast22", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    "####" "#" 0 A_SpawnItem("BigRicoChet")
    "####" "#" 0 A_SPawnItem("ExplosionAirDisplacementEffect")
    "####" "#" 0 A_PlaySound("rpg/blowup")
    "####" "#" 0 A_PlayWeaponSound("rpg/blowup")
    "####" "#" 0 Radius_Quake(2, 8, 0, 12, 0)
    TNT1 A 2
    TNT1 A 10
    stop
  }
}

actor PigFlyerExplosionLight : PigFlyerExplosion
{
  states
  {
  Spawn:
    TNT1 AAA 0 NoDelay A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 180))
    TNT1 AAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    "####" "#" 0 A_CustomMissile ("RPGExplosion", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAA 0 A_CustomMissile ("ExplosionSmokeFast22", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    "####" "#" 0 A_SpawnItem("BigRicoChet")
    "####" "#" 0 A_SPawnItem("ExplosionAirDisplacementEffect")
    "####" "#" 0 A_PlaySound("rpg/blowup")
    "####" "#" 0 A_PlayWeaponSound("rpg/blowup")
    "####" "#" 0 Radius_Quake(2, 8, 0, 12, 0)
    TNT1 A 2
    TNT1 A 10
    stop
  }
}