ACTOR FireflyTrooper : ZBaseActor 19124
{
  Obituary "%o was roasted by a Firefly Trooper."
  Health 220
  Radius 20
  Height 58
  Mass 1000
  Speed 12
  seesound "alien/sight"
  painsound "alien/pain"
  deathsound "alien/death"
  activesound "alien/active"
  DropItem IncineratorAmmo 32 50
  dropitem "BootsPickup" 8
  PainChance 85
  painchance "FireBurning", 200
  painchance "MightyBoot", 128
  painchance "BootStun", 256
  painchance "MicrowaveBlast", 256
  MONSTER
  +FLOORCLIP
  FloatBobStrength 0.5
  WoundHealth 10
  Scale 0.70
  damagefactor "Shrinker", 0.0
  damagefactor "AlienzShrinker", 0.0
  damagefactor "Shrinkerhit", 0.0
  Species "CycloidIncineratorFireflys"
  +DOHARMSPECIES
  +NOINFIGHTSPECIES
  +DONTHARMCLASS
  +MISSILEMORE
  States
  {
  Spawn:
    FFT3 A 0
    "####" "#" 0 Thing_ChangeTID(0,1000)
    FFT3 A 10 A_Look
    Loop
  SeeNoFly:
    "####" "#" 0 A_SetHeightOffset(0)
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_ChangeFlag("NOGRAVITY",0)
    "####" "#" 0 A_ChangeFlag("FLOAT",0)
    "####" "#" 0 A_ChangeFlag("FLOATBOB",0)
    "####" "#" 0 A_ChangeFlag("SOLID",1)
    "####" "#" 0 A_TakeInventory("FireflyTrooperFlyAttacking",1)
    FFT3 AAABBB 2 A_Chase
    FFT3 CCCDDD 2 A_Chase
    goto See
  See:
    "####" "#" 0 A_SetHeightOffset(0)
    "####" "#" 0 A_JumpIfInventory("FireflyTrooperFlyAttacking",1,"Decide")
    FFT3 AAABBB 2 A_ChaseD3D
    FFT3 CCCDDD 2 A_ChaseD3D
    "####" "#" 0 A_Jump(16,"Fly")
    Loop
  Decide:
    "####" "#" 0 A_SetHeightOffset(-7)
    FFT3 I 10 A_FaceTarget
    "####" "#" 0 A_Jump(256,1,2,3)
    "####" "#" 0
    goto Fly+4
    "####" "#" 0
    goto MissileFly
    "####" "#" 0 A_JumpIf(z - floorz > 250, "Decide")
    "####" "#" 0 A_JumpIf(GetZAt(radius,0) != floorz || GetZAt(-radius,0) != floorz || GetZAt(0,radius) != floorz || GetZAt(0,-radius) != floorz, "Decide")
    goto SeeNoFly
  Fly:
    "####" "#" 0 A_Jump(16,2)
    "####" "#" 0 A_CheckSight("See")
    FFT3 A 1
    FFT3 A 1 ThrustThingZ(0,10,0,1)
    "####" "#" 0 A_InvulnerablePlus(1)
    "####" "#" 0 A_ChangeFlag("NOGRAVITY",1)
    "####" "#" 0 A_CustomMissile("FireflyTrooperEffect1",0,0,0)
  Shrink:
    FFT3 I 2 {A_SetScale(ScaleX - 0.04, ScaleY - 0.04); A_SpawnItemEx("ShrunkBlur",0,0,0,0,0,0,angle,SXF_TRANSFERSPRITEFRAME|SXF_TRANSFERSCALE|SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION|SXF_ABSOLUTEANGLE);}
    "####" "#" 0 A_JumpIf(ScaleX > 0.1 && ScaleY > 0.1, "Shrink")
    "####" "#" 0 A_Shrink("A","A","A","A",0,0,0,"SeeNoFly","FireflyTrooper","SeeFly","FireflyTrooperFly")
    "####" "#" 0 A_Remove(AAPTR_DEFAULT)
    stop
  Missile:
    FFT3 E 1
    "####" "#" 0 A_JumpIfCloser(260,"Flamer")
  Laser:
    "####" "#" 0 A_SetHeightOffset(-21)
    "####" "#" 0 A_Jump(128,"Laser2","Laser3")
    FFT3 G 6 A_FaceTarget
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    FFT3 H 6 bright A_CustomMissile("AlienBullet",26,10,random[RIDMONSTERAT](-8,8))
    FFT3 G 6
    goto See
  Laser2:
    FFT3 G 6 A_FaceTarget
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    FFT3 H 6 bright A_CustomMissile("AlienBullet",26,10,random[RIDMONSTERAT](-8,8))
    FFT3 G 6
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    "####" "#" 0 bright A_CustomMissile("AlienBullet",26,10,random[RIDMONSTERAT](-8,8))
    goto See
  Laser3:
    FFT3 G 10 A_FaceTarget
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    FFT3 H 6 bright A_CustomMissile("AlienBullet",26,10,-8)
    FFT3 G 6 A_FaceTarget
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    FFT3 H 6 bright A_CustomMissile("AlienBullet",26,10,0)
    FFT3 G 6 A_FaceTarget
    "####" "#" 0 A_PlayWeaponSound("alien/attack")
    FFT3 H 6 bright A_CustomMissile("AlienBullet",26,10,8)
    FFT3 G 10 A_FaceTarget
    goto See
  Flamer:
    "####" "#" 0 A_Jump(32,"Laser")
    FFT3 E 10 A_FaceTarget
    "####" "#" 0 A_CustomMissile("MuzzleFlashFast",32,5,0)
    "####" "#" 0 A_PlaySound("duke/flame",0)
    FFT3 E 1 A_FaceTarget
    FFT3 F 1 Bright A_CustomMissile("FireFlyFlameBreath",49,10,Random[RIDMONSTERAT](-5,5))
    FFT3 E 1
    FFT3 F 1 Bright A_CustomMissile("FireFlyFlameBreath",49,10,Random[RIDMONSTERAT](-5,5))
    FFT3 E 1
    FFT3 F 1 Bright A_CustomMissile("FireFlyFlameBreath",49,10,Random[RIDMONSTERAT](-5,5))
    "####" "#" 0 A_CustomMissile("MuzzleFlashFast",32,5,0)
    "####" "#" 0 A_PlaySound("duke/flame",0)
    FFT3 E 1 A_FaceTarget
    FFT3 F 1 Bright A_CustomMissile("FireFlyFlameBreath",49,10,Random[RIDMONSTERAT](-5,5))
    FFT3 E 1
    FFT3 F 1 Bright A_CustomMissile("FireFlyFlameBreath",49,10,Random[RIDMONSTERAT](-5,5))
    FFT3 E 1
    FFT3 F 1 Bright A_CustomMissile("FireFlyFlameBreath",49,10,Random[RIDMONSTERAT](-5,5))
    "####" "#" 0 A_CustomMissile("MuzzleFlashFast",32,5,0)
    "####" "#" 0 A_PlaySound("duke/flame",0)
    FFT3 E 1 A_FaceTarget
    FFT3 F 1 Bright A_CustomMissile("FireFlyFlameBreath",49,10,Random[RIDMONSTERAT](-5,5))
    FFT3 E 1
    FFT3 F 1 Bright A_CustomMissile("FireFlyFlameBreath",49,10,Random[RIDMONSTERAT](-5,5))
    FFT3 E 1
    FFT3 F 1 Bright A_CustomMissile("FireFlyFlameBreath",49,10,Random[RIDMONSTERAT](-5,5))
    "####" "#" 0 A_CPosRefire
    "####" "#" 0 A_Jump(128,"See")
    "####" "#" 0 A_JumpIfCloser(260,2)
    "####" "#" 0 A_Jump(256,"See")
    "####" "#" 0
    goto Flamer+2
  MissileFly:
    "####" "#" 0 A_SetHeightOffset(-7)
    "####" "#" 0 A_GiveInventory("FireflyTrooperFlyAttacking",1)
    "####" "#" 0 A_PlaySound("alien/jetpack",7,2,1)
    "####" "#" 0 A_ChangeFlag("NOGRAVITY",1)
    "####" "#" 0 A_ChangeFlag("FLOAT",1)
    "####" "#" 0 A_ChangeFlag("FLOATBOB",1)
    "####" "#" 0 A_ChangeFlag("SOLID",0)
    FFT3 I 10 A_FaceTarget
    "####" "#" 0 A_PlaySound("Freezer/Shoot",0)
    "####" "#" 0 A_FaceTarget
    FFT3 J 8 Bright A_CustomMissile("FireFlyBigFireBall",26,10,Random[RIDMONSTERAT](-5,5))
    FFT3 I 10 A_CPosRefire
    "####" "#" 0 A_Jump(128,"See")
    goto MissileFly+8
  Pain.BootStun:
    "####" "#" 0 A_SetHeightOffset(0)
    "####" "#" 0 A_Jump(128,"Pain2BootStun")
    FFT3 K 9 A_PlayVoiceSoundPitch("Pain")
    FFT3 K 9
    goto See
  Pain2BootStun:
    FFT3 N 9 A_PlayVoiceSoundPitch("Pain")
    FFT3 N 9
    goto See
  Pain:
    "####" "#" 0 A_SetHeightOffset(0)
    "####" "#" 0 A_Jump(128,"Pain2")
    FFT3 K 3
    FFT3 K 3 A_PlayVoiceSoundPitch("Pain")
    goto See
  Pain2:
    FFT3 N 3
    FFT3 N 3 A_PlayVoiceSoundPitch("Pain")
    goto See
  Pain.MicrowaveBlast:
    "####" "#" 0 A_SetHeightOffset(0)
    FFT3 K 1
    "####" "#" 0 A_CheckThump("Pain.BootStun")
    loop
  Death:
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_ChangeFlag("FLOATBOB",0)
    FFT3 K 1
    FFT3 L 10 Bright A_PlayVoiceSoundPitch("Pain")
    FFT3 M 10 Bright 
    FFT3 L 10 Bright 
    FFT3 M 10 Bright 
    FFT3 L 28 Bright
    "####" "#" 0 A_PlayVoiceSoundPitch("Death","",4)
    "####" "#" 0 A_SpawnItemEx("ExpanderExplosion",0,0,32,0,0,0,0,1,0)
    goto Death.Explosion
  XDeath:
  Death.BossStomp:
    "####" "#" 0 A_XScream
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_ChangeFlag("FLOATBOB",0)
    "####" "#" 0 A_Gravity
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnDebris("DukeGibs1NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyHead1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5")
    TNT1 A 1
    Stop
  Death.PlasmaGib:
    "####" "#" 0 A_SpawnItemEx("DukePlasmaExplosion",0,0,32,0,0,0,0,1,0)
    "####" "#" 0 A_XScream
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_ChangeFlag("FLOATBOB",0)
    "####" "#" 0 A_Gravity
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnDebris("DukeGibs1NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyHead1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5")
    TNT1 A 1
    Stop
  Death.Explosion:
  Death.RocketExplosion:
    "####" "#" 0 A_XScream
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_ChangeFlag("FLOATBOB",0)
    "####" "#" 0 A_Gravity
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyHead1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5")
    TNT1 A 1
     Stop
  Death.ExplosiveShotgun:
  Death.ShellExplosion:
    "####" "#" 0 A_XScream
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_ChangeFlag("FLOATBOB",0)
    "####" "#" 0 A_Gravity
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs1NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyHead1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5")
    TNT1 A 1
    Stop
  Gib1:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB1 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 35 A_Gravity
    GIB1 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_FadeOut(0.1)
    Stop
  Gib2:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB2 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 35 A_Gravity
    GIB2 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_FadeOut(0.1)
    Stop
  Gib3:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB3 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 35 A_Gravity
    GIB3 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_FadeOut(0.1)
    Stop
  Gib4:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB4 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 35 A_Gravity
    GIB4 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_FadeOut(0.1)
    Stop
  Gib5:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB5 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 35 A_Gravity
    GIB5 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_FadeOut(0.1)
    Stop
  Wound.Expander:
   "####" "#" 0 A_Die("Expander")
  Death.Expander:
    "####" "#" 0 A_ChangeFlag("DONTCORPSE",1)
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_PlaySound("expander/expand")
    "####" "#" 0 A_JumpIfInventory("FireflyTrooperFlyAttacking",1,3)
    "####" "#" 0 A_ChangeFlag("FLOATBOB",0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_NoGravity
    "####" "#" 0 {A_UnsetShootable; A_UnsetSolid;}
  Expand:
    FFT3 K 1 A_SetScale(ScaleX + 0.01, ScaleY + 0.01)
    "####" "#" 0 A_JumpIf(ScaleX < 1.15 && ScaleY < 1.15, "Expand")
    FFT3 KKKKK 1
    "####" "#" 0 A_SetScale(0.7, 0.7)
    "####" "#" 0 A_PlayVoiceSoundPitch("Death","",4)
    "####" "#" 0 A_SpawnItemEx("ExpanderExplosion",0,0,32,0,0,0,0,1,0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    goto Death.Explosion
  Wound.Ice:
    "####" "#" 0 A_Freeze("SeeNoFly")
    "####" "#" 0 A_Remove(AAPTR_DEFAULT)
    TNT1 A 1
    stop
  Death.MonsterSlimer:
    FFT3 K 10 {A_PlayVoiceSoundPitch("Death"); A_SpawnItemEx("SlimerEatingMonster");}
    FFT3 KK 10
    stop
  Death.Headshot:
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_ChangeFlag("FLOATBOB",0)
    "####" "#" 0 A_XScream
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyHead1",TRUE, 1.0, 1.0)
    3FT3 K 21 A_NoBlocking
    3FT3 L 14
    3FT3 M 7
    3FT3 N 7
    "####" "#" 0 A_SpawnItemEx("DukeRedBloodPool")
    3FT3 O 20
    3FT3 P 10 Bright
    3FT3 Q 10 Bright
    3FT3 P 10 Bright
    3FT3 Q 10 Bright
    3FT3 P 28 Bright
    "####" "#" 0 A_SpawnItemEx("ExpanderExplosion",0,0,32,0,0,0,0,1,0)
    "####" "#" 0 A_XScream
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("FireflyLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5")
     Stop
  }
}

ACTOR FireflyTrooperFly : ShrunkEnemy
{
  Obituary "%o was roasted by a Firefly Trooper."
  health 10
  Radius 20
  height 45
  Mass 1000
  Speed 10
  seesound "alien/sight"
  painsound "alien/pain"
  deathsound "alien/death"
  activesound "alien/active"
  DropItem IncineratorAmmo 32 50
  dropitem "BootsPickup" 8
  -FRIGHTENED
  Scale 0.10
  +INVULNERABLE
  +GHOST
  PainChance 85
  WoundHealth 10
  Species "CycloidIncineratorFireflys"
  +DOHARMSPECIES
  +NOINFIGHTSPECIES
  +DONTHARMCLASS
  +FLOAT
  +NOGRAVITY
  +NOICEDEATH
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
  Idle:
    FFT3 I 0 NoDelay
    "####" "#" 0 Thing_ChangeTID(0,1000)
    FFT3 I 1 {A_Look; A_CustomMissile("FireflyTrooperLight1",4,0,0);}
    FFT3 I 2 A_Look
    FFT3 I 1 {A_Look; A_CustomMissile("FireflyTrooperLight2",4,0,0);}
    FFT3 I 2 A_Look
    FFT3 I 1 A_Look
    Loop
  SeeFly:
    "####" "#" 0 A_PlaySound("alien/jetpack",7,2,1)
    FFT3 I 1 {A_Chase; A_CustomMissile("FireflyTrooperLight1",4,0,0);}
    FFT3 I 2 A_Chase
    FFT3 I 1 {A_Chase; A_CustomMissile("FireflyTrooperLight2",4,0,0);}
    FFT3 I 2 A_Chase
    FFT3 I 1 A_Chase
    Goto See
  See:
    "####" "#" 0 A_PlaySound("alien/jetpack",7,2,1)
    "####" "#" 0 A_Jump(10,"See2")
    "####" "#" 0 A_CheckFloorPlus("NoFly")
    FFT3 I 1 {A_Chase; A_CustomMissile("FireflyTrooperLight1",4,0,0);}
    FFT3 I 2 A_Chase
    FFT3 I 1 {A_Chase; A_CustomMissile("FireflyTrooperLight2",4,0,0);}
    FFT3 I 2 A_Chase
    FFT3 I 1 A_Chase
    Goto See
  See2:
    "####" "#" 0 A_PlaySound("alien/jetpack",7,2,1)
    "####" "#" 0 A_CheckFloorPlus("NoFly")
    "####" "#" 0 A_SentinelBob
    FFT3 I 1 {A_Chase; A_CustomMissile("FireflyTrooperLight1",4,0,0);}
    FFT3 I 2 A_Chase
    FFT3 I 1 {A_Chase; A_CustomMissile("FireflyTrooperLight2",4,0,0);}
    FFT3 I 2 A_Chase
    FFT3 I 1 A_Chase
    Goto See
  NoFly:
    "####" "#" 0 A_JumpIf( A_SetSize(-1, 58, true) == false, "SeeFly")
    "####" "#" 0 A_ChangeFlag("SOLID",1)
    "####" "#" 0 A_CustomMissile("FireflyTrooperEffect2",0,0,0)
  Unshrink:
    FFT3 A 2 {A_SetScale(ScaleX + 0.04, ScaleY + 0.04); A_SpawnItemEx("ShrunkBlur",0,0,0,0,0,0,angle,SXF_TRANSFERSPRITEFRAME|SXF_TRANSFERSCALE|SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION|SXF_ABSOLUTEANGLE);}
    "####" "#" 0 A_JumpIf(ScaleX < 0.7 && ScaleY < 0.7, "Unshrink")
    "####" "#" 0 A_Unshrink
    "####" "#" 0 A_Remove(AAPTR_DEFAULT)
    stop
  Missile:
    "####" "#" 0 A_Jump(160,"See")
    "####" "#" 0 A_JumpIf( A_SetSize(-1, 51, true) == false, "SeeFly")
    "####" "#" 0 A_ChangeFlag("SOLID",1)
    "####" "#" 0 A_CustomMissile("FireflyTrooperEffect2",0,0,0)
  UnshrinkAttack:
    FFT3 J 2 {A_SetScale(ScaleX + 0.04, ScaleY + 0.04); A_SpawnItemEx("ShrunkBlur",0,0,0,0,0,0,angle,SXF_TRANSFERSPRITEFRAME|SXF_TRANSFERSCALE|SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION|SXF_ABSOLUTEANGLE);}
    "####" "#" 0 A_JumpIf(ScaleX < 0.7 && ScaleY < 0.7, "UnshrinkAttack")
    "####" "#" 0 A_Unshrink(false,"MissileFly")
    "####" "#" 0 A_Remove(AAPTR_DEFAULT)
    stop
//  Pain:
//    FFT3 K 3
//    FFT3 K 3 A_Pain
//    Goto See
  Death:
  XDeath:
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_XScream
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnDebris("DukeGibs3NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    TNT1 A 1
    stop
  }
}

actor CycloidIncineratorFirefly : FireflyTrooper
{
  +FLOAT
  +FLOATBOB
  +NOGRAVITY
  -SOLID
  FloatBobStrength 0.5
  states
  {
  Spawn:
    FFT3 I 0
    FFT3 I 0 A_GiveInventory("FireflyTrooperFlyAttacking",1)
    FFT3 I 0 A_Recoil (-10)
    FFT3 IIIIIIIIII 2 A_SpawnItemEx("ShrunkBlur",0,0,0,0,0,0,angle,SXF_TRANSFERSPRITEFRAME|SXF_TRANSFERSCALE|SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION|SXF_ABSOLUTEANGLE)
    goto Fly+4
  Idle:
    FFT3 A 0
    FFT3 A 10 A_Look
    Loop
  }
}

actor FireflyTrooperFlyAttacking : Inventory
{
  inventory.amount 0
  inventory.maxamount 1
}

actor FireflyTrooperEffect1
{
  radius 1
  height 1
  speed 0
  +NOCLIP
  PROJECTILE
  scale 0.75
  states
  {
  Spawn:
    DFFE ABCDEFGH 2 BRIGHT
    stop
  }
}

actor FireflyTrooperEffect2
{
  radius 1
  height 1
  speed 0
  +NOCLIP
  PROJECTILE
  scale 0.5
  states
  {
  Spawn:
    DFFE HGFEDCBA 2 BRIGHT
    stop
  }
}

actor FireflyTrooperLight1
{
  radius 1
  height 1
  speed 0
  +NOCLIP
  PROJECTILE
  scale 0.3
  RenderStyle Add
  Alpha 0.5
  states
  {
  Spawn:
    DFFL ABC 1 BRIGHT A_SpawnItem ("YellowFlareSmall", 0)
    stop
  }
}

actor FireflyTrooperLight2
{
  radius 1
  height 1
  speed 0
  +NOCLIP
  PROJECTILE
  scale 0.3
  RenderStyle Add
  Alpha 0.5
  states
  {
  Spawn:
    DFFL DEFG 1 BRIGHT A_SpawnItem ("YellowFlareSmall", 0)
    stop
  }
}