ACTOR HornedImp
{
//Creator: "pdxbla's "VDP-MonsterRandomizer" & ElAnexo
//Origin: Realm667
//Sprite: HOIM
//Title: "Horned Imp"
  Health 480
  Radius 20
  Height 56 
  Scale 1.1
  Mass 100
  Speed 16
  PainChance 85
  Monster
  Species "Imps"
  SeeSound "imptaunt"
  PainSound "hihurt"
  DeathSound "hideath"
  ActiveSound "imptaunt"
  Obituary "%o was ambushed by a Horned Imp"
  DropItem "LifeEssence", 256
  DropItem "ArmorBonusMax", 256
  DropItem "Assault Shotgun", 80, 1
  DropItem "Mineammo", 100, 1
  DropItem "Mineammo", 128, 1
  DropItem "Mineammo", 128, 1
  DropItem "NewShell"
  DamageFactor "HornedAttack", 0
  Tag "Horned Imp"
  +DONTHARMSPECIES
  +FLOORCLIP
  +NOBLOCKMONST
  +SEEINVISIBLE
  States
  {
  Spawn:
	TNT1 A 0 A_TakeInventory("Patience",2200)
    TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE",0)
    TNT1 A 0 A_ChangeFlag("MISSILEMORE",0)
    TNT1 A 0 A_ChangeFlag("FRIGHTENED",0)
    HOIM AA 10 A_Look
    Loop
  See:
	TNT1 A 0 A_TakeInventory("Running",2)
	TNT1 A 0 A_TakeInventory("Patience",2200)
    TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE",0)
    TNT1 A 0 A_ChangeFlag("MISSILEMORE",0)
    TNT1 A 0 A_ChangeFlag("FRIGHTENED",0)
    HOIM ABCD 3 A_Chase
    Loop
  Laugh:
	TNT1 A 0 A_JumpIfCloser(150,"Missile")
	HOI2 ABC 6
	TNT1 A 0 A_PlaySound("HITAUNT")
	HOI2 DEFGHIJKLMNO 6
	Goto Scared
  PutMineAndRun:	
    TNT1 AA 0
	TNT1 A 0 A_Jump(200,1)
	TNT1 A 0 A_JumpIfInventory("HornedImpInv",3,3)
    TNT1 A 0 A_SpawnItemEx("HornetImpMine",0,0,3,0,0,Random(5,8))
	TNT1 A 0 A_GiveInventory("HornedImpInv",1)
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE)
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE)
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE) 
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE) 
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE)
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE) 
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE)
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE) 
	Goto Scared+2
  Scared:
	TNT1 A 0 A_GiveInventory("Running",1)
	TNT1 A 0 A_Jump(200,1)
	TNT1 A 0 A_JumpIfInventory("HornedImpInv",3,3)
    TNT1 A 0 A_SpawnItemEx("HornetImpMine",0,0,3,0,0,Random(5,8))
	TNT1 A 0 A_GiveInventory("HornedImpInv",1)
	TNT1 A 0 A_PlaySound("HornedImp/act",CHAN_VOICE)
    TNT1 A 0 A_ChangeFlag("FRIGHTENED",1)
    TNT1 A 0 A_ChangeFlag("MISSILEMORE",1)
    TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE",1)
    TNT1 A 0 A_JumpIfTargetInLOS(1,360)
	Goto WhereHasItGone
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE) 
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE)
    TNT1 A 0 A_JumpIfTargetInLOS(1,360)
	Goto WhereHasItGone
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE) 
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE)
    TNT1 A 0 A_JumpIfTargetInLOS(1,360)
	Goto WhereHasItGone
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE) 
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE)
	TNT1 A 0 A_JumpIfCloser(250,"See")
  EvenMoreScared:
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE) 
	TNT1 A 0 A_JumpIfCloser(600,"PutMineAndRun")
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE)
    TNT1 A 0 A_JumpIfTargetInLOS(1,360)
	Goto WhereHasItGone
	TNT1 A 0 A_JumpIfCloser(600,"PutMineAndRun")
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE)  
	TNT1 A 0 A_JumpIfCloser(600,"PutMineAndRun")
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE)
    TNT1 A 0 A_JumpIfTargetInLOS(1,360)
	Goto WhereHasItGone 
	TNT1 A 0 A_JumpIfCloser(600,"PutMineAndRun")
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE) 
	TNT1 A 0 A_JumpIfCloser(600,"PutMineAndRun")
    HOIM ABCD 1 A_Chase("","MissileRunning",CHF_NOPLAYACTIVE) 
    TNT1 A 0 A_JumpIfTargetInLOS(1,360)
	Goto WhereHasItGone
	TNT1 A 0 A_Jump(155,"PutMineAndRun")
	TNT1 A 0 A_JumpIfCloser(600,"PutMineAndRun")
    TNT1 A 0 A_JumpIfTargetInLOS("EvenMoreScared",360)
	TNT1 A 0 A_JumpIfCloser(250,"See")
  WhereHasItGone: 
    TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE",0)
    TNT1 A 0 A_ChangeFlag("MISSILEMORE",0)
    TNT1 A 0 A_ChangeFlag("FRIGHTENED",0)  
    TNT1 A 0 A_JumpIfTargetInLOS("See",360)
    HOIM ABCD 3 A_Chase
    TNT1 A 0 A_JumpIfTargetInLOS("See",360)
    HOIM ABCD 3 A_Chase
    TNT1 A 0 A_JumpIfTargetInLOS("See",360)
    HOIM ABCD 3 A_Chase
    TNT1 A 0 A_JumpIfTargetInLOS("See",360)  
  Campear:
    TNT1 A 0 A_JumpIfInventory("Patience",450,"See")
	TNT1 A 0 A_FaceTarget
    HOIM E 1 A_Chase("","MissileCamping2",CHF_DONTMOVE|CHF_NOPLAYACTIVE)
	TNT1 A 0 A_Giveinventory("Patience",1)
	Loop
  Missile:
	TNT1 A 0 A_Jump(40,"Laugh")
	TNT1 A 0 A_TakeInventory("Patience",2200)
	TNT1 A 0 A_TakeInventory("HornedImpInv",3)
    TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE",0)
    TNT1 A 0 A_ChangeFlag("MISSILEMORE",0)
    TNT1 A 0 A_ChangeFlag("FRIGHTENED",0)
    HOIM E 12 A_FaceTarget 
    TNT1 A 0 Bright A_CustomBulletAttack (15, 8, 5, 2, "BulletPuffHorny")
    TNT1 A 0 A_PlaySoundEx("shotguy/attack","auto",0,0)
    HOIM F 5 Bright 
    HOIM E 5
	TNT1 A 0 A_Jump(40,"See")
    Goto Scared
  MissileRunning: 
	TNT1 A 0 A_JumpIfCloser(150,"See")
	TNT1 A 0 A_Jump(170,"Scared")
	TNT1 A 0 A_TakeInventory("Patience",800)
    TNT1 A 0 A_FaceTarget  
    TNT1 A 0 A_PlaySoundEx("shotguy/attack","auto",0,0)
    TNT1 A 0 Bright A_CustomBulletAttack (15, 8, 5, 2, "BulletPuffHorny")
    HOIM FFF 1 Bright A_Chase("","")
    HOIM E 1 A_Chase("","")
    Goto Scared+2
  MissileCamping2: 
	TNT1 A 0 A_TakeInventory("Patience",2200)
	TNT1 A 0 A_PLaySoundEx("shatgun/agarrar","auto",0,0)
	TNT1 A 0 A_FaceTarget 
	HOIM E 1 A_Recoil(1) 
	TNT1 A 0 A_FaceTarget 
	HOIM E 1 A_Recoil(1) 
	TNT1 A 0 A_FaceTarget 
	HOIM E 1 A_Recoil(1) 
	TNT1 A 0 A_FaceTarget 
	HOIM E 1 A_Recoil(1) 
	TNT1 A 0 A_FaceTarget 
	HOIM E 1 A_Recoil(1) 
	TNT1 A 0 A_FaceTarget 
	HOIM E 1 A_Recoil(1) 
	TNT1 A 0 A_FaceTarget 
	HOIM E 1 A_Recoil(1) 
	TNT1 A 0 A_FaceTarget
	HOIM E 1 A_Recoil(1)
	TNT1 A 0 A_FaceTarget 
	HOIM E 1 A_Recoil(1) 
	TNT1 A 0 A_FaceTarget 
	HOIM E 1 A_Recoil(1) 
	TNT1 A 0 A_FaceTarget 
	HOIM E 1 A_Recoil(1) 
	TNT1 A 0 A_FaceTarget 
	HOIM E 1 A_Recoil(1) 
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_Jump(60,"Laugh")
	TNT1 A 0 A_PlaySoundEx("shotguy/attack","auto",0,0)
    HOIM F 2 Bright A_CustomBulletAttack (15, 8, 5, 2, "BulletPuffHorny")
    HOIM E 5
	TNT1 A 0 A_Jump(60,"See")
    Goto Scared
  Pain:
	TNT1 A 0 A_JumpIfInventory("Running",1,"PainNormal")
	HOIM G 3
    HOIM G 3 A_Pain
	TNT1 A 0 A_Jump(60,"See")
    Goto Scared
  PainNormal:
    TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE",0)
    TNT1 A 0 A_ChangeFlag("MISSILEMORE",0)
    TNT1 A 0 A_ChangeFlag("FRIGHTENED",0) 
	TNT1 A 0 A_TakeInventory("Patience",800)
    HOIM G 3
    HOIM G 3 A_Pain
    Goto See
  Death:
    HOIM H 5
    HOIM I 5 A_Scream
    HOIM J 5 A_NoBlocking
    HOIM K 10
	HOIM LM 5
    HOIM N -1
    Stop
  XDeath:
    HOIM O 5
    HOIM P 5 A_XScream
    HOIM Q 5 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
    HOIM R 10 A_NoBlocking
	HOIM STUV 5
    HOIM W -1
    Stop
  Raise:
    TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
    HOIM H 5
    HOIM NMLKJI 5
    Goto See
  }
}

ACTOR Patience : Inventory
{
Inventory.Maxamount 800
-INVBAR
}

ACTOR Running : Inventory
{
Inventory.Maxamount 1
-INVBAR
}
 
Actor HornetImpMine
{
Radius 8
Scale 1.1
Height 5
Mass 1000000
Health 20
Damage 0
SeeSound "MINE001"
Species "HornedImps"
DONTHURTSHOOTER
Speed 2
+NOBLOOD
-SHOOTABLE
+MISSILE 
+THRUGHOST
States
{
  Spawn:
	XLQP A 0 A_Gravity
	XLQP AAABBB 4 BRIGHT
	Loop
  Death:
	XLQP A 0 A_SpawnItem("MineBase")
	Stop
	}
}


Actor MineBase
{
Radius 10
Scale 1.1
Height 10
Mass 1000000
Health 1
Damage 1
SeeSound "MINE001"
Species "HornedImps"
DONTHURTSHOOTER
Speed 0
+THRUSPECIES
+NOBLOOD 
+SHOOTABLE
+PAINLESS
+MISSILE
+THRUGHOST
+DEHEXPLOSION
States
{
  Spawn:
	XLQP A 0 A_Gravity
	XLQP AAAAAA 4
	XLQP BBBBBB 4 BRIGHT
	XLQP AAAAAA 4
	XLQP BBBBBB 4 BRIGHT
	XLQP AAAAAA 4
	XLQP BBBBBB 4 BRIGHT
	XLQP AAAAAA 4
	XLQP BBBBBB 4 BRIGHT
	XLQP AAAAAA 4
	XLQP BBBBBB 2 BRIGHT
	XLQP AAAAAA 2
	XLQP BBBBBB 2 BRIGHT
	XLQP CC 2
	XLQP DD 2 BRIGHT
	XLQP C 2
	XLQP D 2 BRIGHT
	XLQP C 1
	XLQP D 1 BRIGHT
	XLQP C 1
	XLQP D 1 BRIGHT
	XLQP C 1
	XLQP D 1 BRIGHT
	XLQP C 1
	XLQP D 1 BRIGHT
	XLQP C 1
	XLQP D 1 BRIGHT
	XLQP C 1
	XLQP D 1 BRIGHT
	XLQP C 1
	XLQP D 1 BRIGHT
	XLQP C 1
	XLQP D 1 BRIGHT
	XLQP C 1
  Death:
	TNT1 A 0 A_AlertMonsters
	TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner",0,0,24,0,0,0,0,128) 
    TNT1 AAA 0 A_CustomMissile("Kaboom3",24,0,random(0,360),2,random(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX2",24,0,random(0,360),2,random(0,360))
    TNT1 AAAA 0 A_SpawnItemEx("Debris",0,0,24,Random(4,-4),Random(4,-4),Random(4,8),0,128)
	TNT1 A 0 A_PlaySound("weapons/rocklx") 
	ADRO E 3 Bright A_Explode(32,64)   
    ADRO F 3 bright  
    ADRO G 3 bright
    ADRO HIJ 3 bright
    stop
   }
}

ACTOR BulletPuffHorny : ModdedBulletPuff { damagetype "HornedAttack" }

DamageType HornedAttack { Factor 1 }

actor HornedImpInv : Inventory { Inventory.Maxamount 3 -invbar }