




ACTOR AgonyElemental: FBD_PainElemental 17888
{
	//$category "FBD Monsters"
	
	Translation "208:223=168:176", "48:79=16:47", "128:143=16:47", "144:151=39:39", "13:15=[64,0,0]:[0,0,0]", "5:8=[32,0,0]:[0,0,0]", "236:239=[74,0,0]:[40,0,0]", "224:231=168:171", "160:167=171:183", "232:235=179:179", "9:12=47:47", "1:2=[36,0,0]:[21,0,0]", "80:111=[255,140,223]:[34,0,0]"
	
	Health 1200
	
	DropItem "DemonStrengthRune" 15
	
	// half the pain elemental's
	damagefactor "Shrapnel", 1.5 
	damagefactor "ExplosiveImpact", 1.5
	DamageFactor "FriendlyExplosion", 1.5
	
	Tag "$AGONY_ELEMENTAL" // "Agony Elemental"
	Obituary "$O_AGONY_ELEMENTAL" // "%o was washed away by a shockwave of agony"
	
	// unlike pain elemental, no related states
	DamageFactor "YouMustDuck", 0.0
	PainChance "YouMustDuck", 0
	DamageFactor "Avoid", 0.0 
	PainChance "Avoid", 0
	
	//$Sprite PAINF1
	
	States {
	
		Raise:
			Stop // delete the state

		Pain.Ice:
			"----" A 20 A_Pain
			Goto Pain
			
		Pain.Avoid:
		Pain.YouMustDuck:
			TNT1 A 0
			TNT1 A 0 HealThing(1)
		Pain:
			TNT1 A 0 A_Pain
			PAIN G 3 A_ChangeFlag("NOPAIN", 1)
			PAIN D 4 A_FaceTarget
			PAIN E 4 A_Recoil(4)
			PAIN F 2 BRIGHT A_Recoil(4)
			PAIN F 2 BRIGHT A_PainAttack("FBD_Hater")			
			PAIN G 0 A_ChangeFlag("NOPAIN", 0)
			PAIN GG 10 A_Chase ("","", CHF_FASTCHASE) // hexen boss dodging 
				// this *is* interrupted by pain resulting in him firing haters 
				// like a machinegun while dodging
			Goto See
			
		Missile:
			TNT1 A 0 A_TakeInventory("EnemyMemory", 30)
			PAIN D 7 A_FaceTarget
			PAIN E 7 A_FaceTarget
			PAIN F 5 BRIGHT A_FaceTarget
			PAIN F 2 BRIGHT A_PainAttack("FBD_Hater")
			PAIN ED 7
			Goto See

		Death:
			PAIN H 8 BRIGHT
			PAIN I 8 BRIGHT A_Scream
			
			// 128 damage each (32x4 over 12 tics) in a radius of 128:
			// + built in sfx
			TNT1 AAA 0 A_CustomMissile ("HaterGonnaHate", 32, 0, random (0, 360), 2, random (-90, 90))
			
			TNT1 A 0 BRIGHT A_PainDie("FBD_Hater")
			Goto Poof
			
		Death.Fatality:
			TNT1 A 0 A_Pain
			TNT1 A 0 A_JumpIfIntargetInventory("FistsSelected", 1, 1)
			Goto Death
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteWithResult("DropFatalityBonuses", 20, 15) // health, armor
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_GiveToTarget("GoFatality", 1)
			TNT1 A 0 A_GiveToTarget("ErsatzFatalityEpic", 1)
			TNT1 A 0 A_ChangeFlag("CORPSE", 0)
			Goto Poof
			
		Death.Ice: 
		Death.Freeze:
		Death.Frost:
		Death.IOS_Frost:
			TNT1 A 0 A_NoBlocking
			//This thing *never* emits any lost souls on shattering, unlike FrozenPainElemental
			// so in effect you *eliminate* the agony elemental by ice damage and avoid any future explosion
			TNT1 A 0 A_SpawnItemEx("PermafrostPainElemental",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 30 A_ChangeFlag("CORPSE", 0)
			Stop	
			
		Death.Telefrag:
		Death.ExplodeHarmlessly:
			TNT1 A 0
			TNT1 A 0 A_NoBlocking
			Goto Poof
			
		Pain.KillMe:
		Pain.Taunt:
			TNT1 A 0
			TNT1 A 0 HealThing(1)
			Goto Missile
		Death.KillMe:
		Death.Taunt:
		Death.Avoid:
		Death.YouMustDuck:
			// fire one last lost soul
			PAIN D 4 A_FaceTarget
			PAIN E 4 A_FaceTarget
			PAIN F 6 BRIGHT A_PainAttack("FBD_Hater")
			PAIN EG 4
			Goto Death			
			
		Poof:
			TNT1 A 0 A_NoBlocking
			TNT1 AAAAAAAAAA 0 A_CustomMissile ("HaterExplosionSfx", 28, 0, random (0, 360), 2, random (-90, 90))
			
			PAIN JK 2 BRIGHT A_CustomMissile ("HaterExplosionSfxFast", 28, 0, random (0, 360), 2, random (-90, 90))
			
			TNT1 AAAAAA 0 bright A_CustomMissile ("SuperGoreSpawner", 5, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 180))
			TNT1 AAAAAAAAA 0 A_CustomMissile ("CeilBloodLauncherLong", 0, 0, random (0, 360), CMF_AIMDIRECTION, random (50, 130))
			TNT1 AAAAAAAAAAAA 0 A_CustomMissile ("BloodMistExtraBig", 30, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 90))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 30, 0, random (0, 360), CMF_AIMDIRECTION, random (40, 90))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 30, 0, random (0, 360), CMF_AIMDIRECTION, random (40, 90))
			TNT1 AA 0 A_CustomMissile ("XDeath1", 30, 0, random (0, 360), CMF_AIMDIRECTION, random (40, 90))
			
			PAIN LM 2 BRIGHT A_CustomMissile ("HaterExplosionSfxFast", 28, 0, random (0, 360), 2, random (-90, 90))
			Stop
	}
}