actor ShadowSatyr
{
    //$Category Monsters
    Health 400
    Radius 18
    Height 48
    Scale 0.75
    Speed 13
    PainChance 50
    Mass 350
	BloodColor "cf 00 b0"
	DamageFactor "fire", 0.0
    MONSTER 
    +FLOORCLIP
	Species "Fiends"
    SeeSound "satyr/sight"
    PainSound "knight/pain"
    DeathSound "satyr/death"
    ActiveSound "knight/active"
    MeleeSound "baron/melee"
    HitObituary "%o was mauled by a Shadow Satyr."
	Obituary "%o was melted from the Shadows by a Satyr."
    DropItem "LifeEssence" 120
    DropItem "ArmorBonusMax" 110
	DropItem "DemonAmmo" 100
    MeleeDamage 16
    States
    {
    Spawn:
        SSTY B 10 A_Look
        Loop
    See:
        SSTY AABB 3 A_Chase
        TNT1 A 0 A_SpawnItem("HoofStep",0,0,0,0)
        SSTY CCDD 3 A_Chase
        TNT1 A 0 A_SpawnItem("HoofStep",0,0,0,0)
        Loop
    Melee:
	    TNT1 A 0 A_Jump(100,"StandardMelee")
		TNT1 A 0 A_Jump(55,"FastMelee")
        Goto See		
	StandardMelee:
        SSTY EF 6 A_FaceTarget
        SSTY G 6 A_MeleeAttack
        SSTY PQ 5 A_FaceTarget
        SSTY R 6 A_MeleeAttack
        Goto See
	FastMelee:
	    SSTY EF 3 A_FaceTarget
        SSTY G 3 A_MeleeAttack
        SSTY PQ 3 A_FaceTarget
        SSTY R 3 A_MeleeAttack
        Goto See
	Missile:
	    TNT1 A 0 A_JumpIfCloser(200, "RushLungeCheck")
        TNT1 A 0 A_Jump(90,"StandardBallCombo")
        TNT1 A 0 A_Jump(60,"SpreadBall")
		TNT1 A 0 A_Jump(45,"SpreadBallHeavy")
        TNT1 A 0 A_Jump(30,"SeekerBallCombo")
    StandardBallCombo:
	    SSTY EF 6 A_FaceTarget
        SSTY G 6 Bright A_Custommissile("SSatyrBall", 32, 0, 0)
        SSTY PQ 6 A_FaceTarget
        SSTY R 6 Bright A_Custommissile("SSatyrBall", 32, 0, 0)
        SSTY EF 6 A_FaceTarget
        SSTY G 6 Bright A_Custommissile("SSatyrBall", 32, 0, 0)
		SSTY PQ 6 A_FaceTarget
        SSTY R 6 Bright A_Custommissile("SSatyrBall", 32, 0, 0)
        Goto See
    SpreadBall:
	    SSTY EF 6 A_FaceTarget
        SSTY G 0 Bright A_Custommissile("SSatyrBall", 32, 0, -15)
        SSTY G 0 Bright A_Custommissile("SSatyrBall", 32, 0, 0)
        SSTY G 6 Bright A_Custommissile("SSatyrBall", 32, 0, 15)
		SSTY PQ 6 A_FaceTarget
        SSTY R 0 Bright A_Custommissile("SSatyrBall", 32, 0, -15)
        SSTY R 0 Bright A_Custommissile("SSatyrBall", 32, 0, 0)
        SSTY R 6 Bright A_Custommissile("SSatyrBall", 32, 0, 15)
        Goto See
	SpreadBallHeavy:
        SSTY EF 6 A_FaceTarget
		SSTY G 0 Bright A_Custommissile("SSatyrBall", 32, 0, -25)
        SSTY G 0 Bright A_Custommissile("SSatyrBall", 32, 0, -15)
        SSTY G 0 Bright A_Custommissile("SSatyrBall", 32, 0, 0)
        SSTY G 6 Bright A_Custommissile("SSatyrBall", 32, 0, 15)
		SSTY G 0 Bright A_Custommissile("SSatyrBall", 32, 0, 25)
		SSTY PQ 6 A_FaceTarget
		SSTY G 0 Bright A_Custommissile("SSatyrBall", 32, 0, -25)
        SSTY R 0 Bright A_Custommissile("SSatyrBall", 32, 0, -15)
        SSTY R 0 Bright A_Custommissile("SSatyrBall", 32, 0, 0)
        SSTY R 6 Bright A_Custommissile("SSatyrBall", 32, 0, 15)
		SSTY G 0 Bright A_Custommissile("SSatyrBall", 32, 0, 25)
        Goto See	
    SeekerBallCombo:
        SSTY EF 6 A_FaceTarget
        SSTY G 6 Bright A_Custommissile("ShadowBallEX", 32, 0, 0)
        SSTY PQ 6 A_FaceTarget
        SSTY R 6 Bright A_Custommissile("ShadowBallEX", 32, 0, 0)
        SSTY EF 6 A_FaceTarget
        SSTY G 6 Bright A_Custommissile("ShadowBallEX", 32, 0, 0)
		SSTY PQ 6 A_FaceTarget
        SSTY R 6 Bright A_Custommissile("ShadowBallEX", 32, 0, 0)
        Goto See
	RushLungeCheck:
	    TNT1 A 0 A_Jump(128, "RushLunge")
		TNT1 A 0 A_Jump(140, "RushLungeR")
	RushLunge:
        TNT1 A 0 A_PlaySound("demon/melee")
	    SSTY EF 7 A_FaceTarget
	    TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,1)
	    TNT1 A 0 ThrustThingZ(0,20,0,1)
	    SSTY F 2 A_Recoil(-24)
	    SSTY F 3 A_CustomMissile("PinkyLunge",18,0,0,CMF_AIMDIRECTION)
	    SSTY G 6
	    SSTY G 2 A_ScaleVelocity(0.2)
	    TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,0)
	    SSTY G 1 A_ScaleVelocity(0)
	    Goto See		
	RushLungeR:
        TNT1 A 0 A_PlaySound("demon/melee")
	    SSTY PQ 7 A_FaceTarget
	    TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,1)
	    TNT1 A 0 ThrustThingZ(0,20,0,1)
	    SSTY Q 2 A_Recoil(-24)
	    SSTY Q 3 A_CustomMissile("PinkyLunge",18,0,0,CMF_AIMDIRECTION)
	    SSTY R 6
	    SSTY R 2 A_ScaleVelocity(0.2)
	    TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,0)
	    SSTY R 1 A_ScaleVelocity(0)
	    Goto See		
    Pain:
        SSTY H 2
        SSTY H 2 A_Pain
		TNT1 A 0 A_Jump(100, "PainLunge")
        Goto See
	PainLunge:
        TNT1 A 0 A_ChangeFlag("NOPAIN",1)
        TNT1 A 0 A_PlaySound("demon/melee")
	    SSTY EF 7 A_FaceTarget
	    TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,1)
	    TNT1 A 0 ThrustThingZ(0,20,0,1)
	    SSTY F 2 A_Recoil(-24)
	    SSTY F 3 A_CustomMissile("PinkyLunge",18,0,0,CMF_AIMDIRECTION)
	    SSTY G 6
	    SSTY G 2 A_ScaleVelocity(0.2)
	    TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,0)
	    SSTY G 1 A_ScaleVelocity(0)
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
	    Goto See	
    Death:
        SSTY I 5
        SSTY J 5 A_Scream
        SSTY K 6
        SSTY L 7 A_Fall
        SSTY M 4
        SSTY N 4
        SSTY O -1
        Stop
    Raise:
        SSTY ONMLKJI 8
        Goto See
    }
}

Actor ShadowBallEX : PhaseImpBall
{
     Translation "250:255=123:127"
}

Actor SSatyrBall : KnightFastBall
{
     States
     {
     Spawn:
        SHAT ABC 1 Bright A_CustomMissile("ShadowBallTrail",Random(-1,1),Random(-1,1))
        Loop
     Death:
		TNT1 A 0
        TNT1 A 0 A_SpawnItemEx("PurpleParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
		TNT1 AAA 0 A_CustomMissile("PurpleKaboomS", 0, 0, random(0,360), 2, random(0,360))
        TNT1 AAA 0 A_CustomMissile("ShadowFire", 4, 2, 0)
		TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))	
    	SHAT DEFG 3 Bright
    	Stop
     }
}

Actor ShadowBallTrail : KnightFBTrail
{
     Translation "112:127=250:255"
}

Actor PurpleKaboomS : Kaboom7
{
     Translation "112:127=250:255"
}

Actor FireExplode
{
   +NOCLIP
   +MISSILE
   +DROPOFF
   DamageType fire
   +RANDOMIZE
   Scale 1.5
   Speed 1
   Damage 3
   RENDERSTYLE ADD
   ALPHA 0.67
   ExplosionDamage 3
   ExplosionRadius 64
   States
   {
   Spawn:
    TNT1 A 8
	FRTF A 3 Bright
	FRTF A 0 A_Explode
	FRTF B 3 Bright
	FRTF B 0 A_Explode
	FRTF C 3 Bright
	FRTF C 0 A_Explode
	FRTF C 0
	FRTF C 0 A_Jump(220,4)
	FRTF C 0 A_CustomMissile("Avafireexplode", 0, 24, 0)
	FRTF C 0 A_CustomMissile("Avafireexplode", 0, 0, 0)
	FRTF C 0 A_CustomMissile("Avafireexplode", 0, -24, 0)
	FRTF DEFGHIJKLMNO 3 Bright
	Stop
}
}

Actor ShadowFire : FireExplode
{
     HitObituary "%o was melted by shadow flames."
     +RIPPER
	 States
     {
     Spawn:
        TNT1 A 8
	    FRTF A 3 Bright
	    FRTF A 0 A_Explode
	    FRTF B 3 Bright
	    FRTF B 0 A_Explode
	    FRTF C 3 Bright
	    FRTF C 0 A_Explode
	    FRTF C 0
	    FRTF C 0 A_Jump(191,4)
	    FRTF C 0 A_CustomMissile("ShadowFire", 0, 24, 0)
	    FRTF C 0 A_CustomMissile("ShadowFire", 0, 0, 0)
	    FRTF C 0 A_CustomMissile("ShadowFire", 0, -24, 0)
	    FRTF DEFGHIJKLMNO 3 Bright
	    Stop
	}
}