Actor SNOIC 3666
{
	Radius 28
	Height 68
	Mass 16
	Scale 0.3
	Health 7000
	Speed 20
	
	
	Monster
	
	+SOLID
	+JUMPDOWN
	+QUICKTORETALIATE
	+TELESTOMP
	+NOBLOCKMONST
	+FLOORCLIP
	+SLIDESONWALLS
	+DONTMORPH
	+PUSHABLE
	+NOFEAR
	+REFLECTIVE
	+DEFLECT
	+FOILINVUL
	+DONTSQUASH
	+Boss
	
	MaxStepHeight 48
	MaxDropOffHeight 1024
	MeleeRange 282
	damagefactor "Cut", 0.1
	damagefactor "Blood", 0.0 damagefactor "BlueBlood", 0.0 damagefactor "GreenBlood", 0.0
	damagefactor "Avoid", 0.0
	PainChance "Kick", 255
	
	Obituary "%o was consumed."

	seesound "snoic/oneliner"
	deathsound "snoic/death"
	painsound "null/off"
	activesound "snoic/oneliner"

	States
	{
	Spawn:
		SNOI P 10 A_LOOK
		Loop
	Idle:
		SNOI A 10 A_LOOK
		Loop
	See:
		TNT1 A 0
		TNT1 A 0 A_JumpifInventory("KilledEXE",1,"See2")
		TNT1 A 0 A_SetInvulnerable
		SNOI P 40 A_GiveInventory("KilledEXE")
		SNOI Q 3 A_playsound("imp/melee")
		TNT1 AAAAAA 0 A_CustomMissile("Blood",56.0,0,random (0, 360),CMF_TRACKOWNER|CMF_AIMDIRECTION,random (0, 315))
		TNT1 A 0 A_FACETARGET
		TNT1 A 0 A_CustomMissile("EXEHEAD",56.0,40,random (180, 270),CMF_TRACKOWNER,random (0, 160))
		SNOI G 3 A_CustomMissile("EXEBODY",56.0,40,random (90, 180),CMF_TRACKOWNER,random (0, 160))
		SNOI FJ 3
		SNOI A 10 A_FACETARGET
		TNT1 A 0 A_UnSetInvulnerable
		Goto Chase
	See2:
		SNOI ACDEF 2
		SNOI A 10 A_FACETARGET
		Goto Chase
	Chase:
		TNT1 A 0 A_Jump(4, "Stealth")
		SNOI CA 2 A_Chase
		SNOI A 0 ThrustThing(angle*256/360, 2, 0, 0)
		SNOI DE 2 A_wander
		SNOI FG 2 A_chase
		TNT1 A 0 ThrustThing(angle*256/360, 2, 0, 0)
		SNOI HI 2 A_Chase
		TNT1 A 0 ThrustThing(angle*256/360, 2, 0, 0)
		SNOI J 2 A_chase
		TNT1 A 0 A_Jump(15, "jump")
		TNT1 A 0 A_JumpIfHealthLower(500,"SolarisMockery")
		TNT1 A 0 A_JumpIfCloser(1024,"Chase")
		Goto Persue
	Persue:
		TNT1 A 0 A_JumpIfTargetinLOS("Chase",0,90)
		Goto Stealth

//Get ready to be [i]SPOOKED[/i]

	Stealth:
		TNT1 A 0 A_PLAYSOUND("snoic/fade")
		SNOI AAAAAAAAAA 1 A_Fadeto(0.0,0.1,0)
		TNT1 A 0 A_Changeflag(Noclip,1)
		TNT1 A 0 A_Changeflag(Invisible,1)
		Goto StealthyChase
	StealthyChase:
		SNOI A 0 ThrustThing(angle*256/360, 20, 0, 0)
		SNOI A 1 A_FaceTarget
		SNOI A 1 A_Wander
		TNT1 A 0 A_Jump(1,"Return")
		TNT1 A 0 A_JumpIfCloser(128,"Return")
		Loop
	Return:
		TNT1 A 0 A_PLAYSOUND("snoic/appear")
		TNT1 A 0 A_Recoil(-10)
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_Changeflag(Noclip,0)
		SNOI AAAAAAAAAA 1 A_Fadeto(1.0,0.1,0)
		NULL AAAAAAA 0 A_Custommissile("Baronball",random(0,64),random(-64,64))
		TNT1 A 0 A_Changeflag(Invisible,0)
		SNOI A 0 A_LOOK
		Goto Chase
		
//End of spooky stealth mode

	Jump:
		SNOI J 1 A_FaceTarget
		TNT1 A 0 A_PLAYSOUND("snoic/jump")
		TNT1 A 0 ThrustThing(angle*256/360, 25, 0, 0)
        TNT1 A 0 ThrustThingz(0,64,0,1)
		SNOI J 1 A_FaceTarget
		Goto Falling
	Falling:
		TNT1 A 0 A_FaceTarget
		SNOI JJJJ 1 A_CheckFloor("Land")
		TNT1 A 0 A_JumpIf (momz == 0, "Land")
		Loop
	Land:
		SNOI I 1
		TNT1 A 0 A_Playsound("snoic/hitground")
		SNOI A 1
		Goto Chase
	Melee:
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_RECOIL(-20)
		SNOI K 2 A_Playsound("snoic/melee")
		SNOI LM 2
		SNOI NO 2 A_CustomMissile("SnoicAttack",0,0,0,0)
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_RECOIL(-20)
		SNOI K 2 A_Playsound("snoic/melee")
		SNOI LM 2
		SNOI NO 2 A_CustomMissile("SnoicAttack",0,0,0,0)
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_RECOIL(-20)
		SNOI K 2 A_Playsound("snoic/melee")
		SNOI LM 2
		SNOI NO 2 A_CustomMissile("SnoicAttack",0,0,0,0)
		TNT1 A 0 A_Jump(2, "Stealth")
		Goto Chase
	Missile:
		TNT1 A 0
		TNT1 A 0 A_Jump(255,"SpectrePlague","SolarisMockery")
		Goto Chase
	SolarisMockery:
		NULL AAAAAAA 0 A_Custommissile("Baronball",random(0,64),random(-64,64))
		Goto Chase
	SpectrePlague:
		TNT1 A 0
		TNT1 A 0 A_FaceTarget
		SNOI JIKLM 1 A_Playsound("snoic/appear")
		TNT1 A 0 A_SpawnItemEx("SnoicSpectre",64,64,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
		Goto Chase
	Pain.KillMe:
		SNOI A 1 A_Playsound("Snoic/oneliner")
		Goto Chase
    Pain.Kick:	
	    TNT1 A 0
		TNT1 A 0 ThrustThingZ(0,30,0,1)
		TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
		SNOI A 1 A_facetarget
        SNOI A 6 ThrustThing(angle*256/360+128, 10, 0, 0)
        SNOI A 8
		TNT1 A 0 A_facetarget
		SNOI A 1 A_Recoil(-40)
		SNOI A 0 A_ChangeFlag("NOPAIN", 0)
		Goto Chase	
	Pain.Taunt:
		SNOI A 1 A_Playsound("Snoic/oneliner")
		TNT1 A 0 A_Recoil(-550)
		Goto Chase	
	Death:
		SNOI B 1
		SNOI B 25 A_Scream
		SNOI BBBBBBBBBB 8 A_FadeTo(0.0,0.1,0)
		SNOI BBBBBB 50
		SNOI BBBBBBBBBB 6 A_FadeTo(1.0,0.1,0)
		SNOI B 40
		SNOI BBBBBBBBBB 6 A_FadeTo(0.0,0.1,0)
		Stop
	Death.ExplosiveImpact:
        TNT1 A 0
		Goto Death
    Death.Fatality:
	   
	   
	    SNOI A 1 A_Pain
		
		TNT1 A 0 A_JumpIfIntargetInventory("FistsSelected", 1, 1)
		Goto Death.ExplosiveImpact
		
		TNT1 A 0 A_GiveToTarget("GoFatality", 1)
        TNT1 A 0 A_GiveToTarget("SnoicFatality", 1)
		TNT1 A 0 A_STOP
        SNOI A 6 A_NoBlocking
        TNT1 A 0 A_BossDeath
		Stop
	}
}

ACTOR SnoicAttack: BaronBall
{
	Radius 20
	Height 40
	DamageType Rip
	Projectile 
	RenderStyle Add
	Alpha 0.6
	+RANDOMIZE
	+FORCEXYBILLBOARD
	-DONTHURTSPECIES
    +THRUGHOST
    +BLOODSPLATTER 
    +THRUGHOST
    Damage 4
	SeeSound "None"
	DeathSound "none"
	Decal "none"
    Speed 13
	Obituary "%o died within."
	States
	{
	Spawn:
		TNT1 A 4 BRIGHT
		Stop
	Death:
        TNT1 A 0 A_PlaySound("snoic/landhit")
		TNT1 A 0 BRIGHT
		Stop
	}
}

ACTOR SnoicSpectre: Snoic
{

	Mass 1
	Health 1
	Speed 15
	DamageType Rip
	Damage 10
	
	Renderstyle Fuzzy
	
	-SOLID
	-TELESTOMP
	-SLIDESONWALLS
	-PUSHABLE
	-REFLECTIVE
	-DEFLECT
	-FOILINVUL
	-NOGRAVITY
	-DONTSQUASH
	+TOUCHY
	
	
	Monster
	
	States
	{
	Spawn:
		TNT1 A 0 A_FACETARGET
		TNT1 A 0 A_JumpIfInventory("Deathtimer", 20, "Death") // Jump to the Forget state when the timer reaches 20 
		TNT1 A 0 A_RECOIL(-16)
		SNOI K 1 A_Playsound("snoic/melee")
		SNOI LM 1
		SNOI NO 1 A_CustomMissile("SnoicAttack",0,0,0,0)
		TNT1 A 0 A_FACETARGET
		TNT1 A 0 A_RECOIL(-20)
		SNOI K 1 A_Playsound("snoic/melee")
		SNOI LM 1
		SNOI NO 2 A_CustomMissile("SnoicAttack",0,0,0,0)
		TNT1 A 0 A_FACETARGET
		TNT1 A 0 A_RECOIL(-20)
		SNOI K 1 A_Playsound("snoic/melee")
		SNOI LM 1
		SNOI NO 1 A_CustomMissile("SnoicAttack",0,0,0,0)
		TNT1 A 0 A_FACETARGET
		TNT1 A 0 A_GiveInventory("Deathtimer",1)
		Loop
	Death:
		TNT1 A 0
	    TNT1 A 0 A_Playsound("Snoic/fade")
		SNOI KLMNOKLMNO 1 A_Fadeto(0.0,0.1,0)
		TNT1 A 1 A_NoBlocking
		TNT1 A -1
		Stop
	Death.Fatality:	  
	    TNT1 A 0
	    TNT1 A 0
		Goto Death
	}
}

actor EXEHEAD
{   
    Radius 8
    Height 8
    Speed 10
    Scale 1.2
	Damage 0
	Mass 1
	Gravity 0.80
	Bouncefactor 0.5
	damagetype Blood
	+Doombounce
    +NOBLOCKMAP
	+MISSILE
    +NOTELEPORT
    +MOVEWITHSECTOR
    +CLIENTSIDEONLY
    +RIPPER
    +BLOODLESSIMPACT 
	-DONTSPLASH
	+THRUGHOST
	+THRUACTORS
	States    
	{
    Spawn:	
		EXE1 ABCDEF 5 A_SpawnItemEX("Blood",0,0,0,1)
		TNT1 A 0 A_Checkfloor("Death")
		TNT1 A 0 A_Jumpif(momz == 0,"Death")
		Loop 
    Death:
		TNT1 A 0
		TNT1 A 0 A_JUMP(256,"1","2","3")
		Stop
	1:
		EXE1 C -1
		Stop
	2:
		EXE1 D -1
		Stop
	3:
		EXE1 E -1
		Stop
	}
}

Actor EXEBODY : EXEHEAD
{
	States
	{
    Spawn:	
		EXE2 A 5 A_SpawnItemEX("Blood",0,0,0,1)
		TNT1 A 0 A_Checkfloor("Death")
		TNT1 A 0 A_Jumpif(momz == 0,"Death")
		Loop
	Death:
		EXE2 B -1
		Stop
	}
}

Actor SnoicFatality : Inventory
{
inventory.maxamount 1
}

Actor KilledEXE : Inventory
{
inventory.maxamount 1
}

Actor DeathTimer : Inventory
{
inventory.maxamount 20
}