ACTOR Emtalic : GhoulBaseFloat
{ //Scripted (Samara and Halloween mode will not spawn this ghoul if replaced)
//Creator: Fluffy
//Origin: Ghouls VS Humans
//Sprite: XEMT
//Title: "Emtalic" 
Scale 0.2
Height 62
Radius 15
Speed 15
Damage 30
Health 3500
+NOBLOCKMONST
+DROPOFF
MaxTargetRange 800
Obituary "%o was trashed and scattered by Emtalic."
painchance 20
BloodColor "None"
BloodType "WeaverBitsSpawner"
SeeSound "EMTLTANT"
ActiveSound "EMTLTANT"
PainSound "EMTLPAIN"
DeathSound "EMTLPAIN"
Tag "\c[m3]Emtalic\c-"
var int user_attackloop;
States
{
  Spawn:
    TNT1 A 0 A_Look
	XEMT IIJJKK 1 A_Wander
	Loop
  See:
    TNT1 A 0 A_Stop
  SeeLoop:
	TNT1 A 0 A_ChangeFlag(NOPAIN,0)
	XEMT IIJJKK 1 A_Chase
    TNT1 A 0 A_SpawnItemEx("WalkVise",0,random(-20,20),random(10,30),0,0,8,0,0,128)
	TNT1 A 0 A_SpawnItemEx("WalkGear",0,random(-20,20),random(10,30),0,0,8,0,0,128)
	Loop
  Melee:
	TNT1 A 0 A_ChangeFlag(NOPAIN,0)
	TNT1 A 0 A_CustomMeleeAttack(80,"singenjitsu/melee")
	XEMT LMN 2
	Goto See
  Missile:
	TNT1 A 0 A_JumpIfCloser(350,"Charge")
	XEMT L 5 A_CustomMissile("ViseAndGearSpawner",0)
	XEMT MNLMN 5 A_CustomMissile("ViseAndGearSpawner",0,0,frandom(-6,6))
	Goto See
  Charge:
    TNT1 A 0 A_Stop
	TNT1 A 0 A_PlaySound("RAMSTART",2)
	TNT1 A 0 A_ChangeFlag(NOPAIN,1)
	TNT1 A 0 A_SetUserVar("user_attackloop",0)
	XEMT LMNLMNLMN 3
	TNT1 A 0 A_PlaySound("RAMCHARG")
  ChargeLoop:
    TNT1 A 0 A_JumpIf(user_attackloop >= 8,"See")
    TNT1 A 0 A_SetUserVar("user_attackloop",user_attackloop+1)
    TNT1 A 0 A_Chase("Melee","")
    XEMT M 2 A_SkullAttack(19)
	TNT1 A 0 A_Chase("Melee","")
	XEMT N 2 A_SkullAttack(19)
	TNT1 A 0 A_Chase("Melee","")
	XEMT L 2 A_SkullAttack(19)
	Loop
  Pain:
	XEMT L 4 A_Pain
	Goto See
  Death:
	TNT1 A 0 A_SpawnItem("DarknessRing", 1, 32)
	TNT1 A 0 A_PlaySound("emtalic/death")
	XEMT CCCCDDDDEEEEFFFF 2 A_SpawnItemEx("GhoulFireX2",0,0,random(5,50),frandom(0,4),0,frandom(-2,2),random(0,360))
	TNT1 A 5
	TNT1 A 0 A_Fall
	Stop
	}
}

Actor ViseAndGearSpawner
{
Radius 5
Height 10
Speed 25
Scale 0.12
Damage 8
DamageType "SjasScream"
Obituary "%o was ripped by %k saw blades."
PROJECTILE
+MISSILE
+FLOORHUGGER
+RIPPER
States
{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("SawGearThrow",5,1.0,TRUE)
	SpawnLoop:
		SWBD A 2 A_SpawnItemEx("Gear",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD B 2 A_SpawnItemEx("Vise",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD A 2 A_SpawnItemEx("Gear",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD B 2 A_SpawnItemEx("Vise",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD A 2 A_SpawnItemEx("Gear",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD B 2 A_SpawnItemEx("Vise",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD A 2 A_SpawnItemEx("Gear",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD B 2 A_SpawnItemEx("Vise",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD A 2 A_SpawnItemEx("Gear",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD B 2 A_SpawnItemEx("Vise",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD A 2 A_SpawnItemEx("Gear",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD B 2 A_SpawnItemEx("Vise",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD A 2 A_SpawnItemEx("Gear",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD B 2 A_SpawnItemEx("Vise",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD A 2 A_SpawnItemEx("Gear",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		SWBD B 2 A_SpawnItemEx("Vise",0,0,9,random(-2,2),random(-2,2),random(4,8),0,0,128)
		Loop
	Death:
	    TNT1 A 0 A_StopSound(5)
		SWBD CDE 2
		Stop
	}
}

Actor SmallSawBlade : ViseAndGearSpawner
{
Speed 26
Damage 4
Scale 0.12
States
{
	Spawn:
		SWBD ABABABABABAB 2
		Loop
	}
}

Actor RandomGearViseSpawner : RandomSpawner
{
DropItem "WalkVise" 256 1
DropItem "WalkGear" 256 1
}

Actor WalkVise
{
BounceCount 2
Scale 0.03
PROJECTILE
Seesound "EmtalicSlide"
+THRUACTORS
-NOGRAVITY
+NOBLOCKMAP
+DOOMBOUNCE
States
{
	Spawn:
		VISE ABCDEFGH 2
		Loop
	Death:
		VISE C 28
		Stop
	}
}

Actor WalkGear : WalkVise
{
Scale 0.036
States
{
	Spawn:
		TNT1 A 0
		goto Death
	Death:
		TNT1 A 0 A_Jump(255,"S1","S2","S3","S4")
		goto S1
	S1:
		GEAR A 28
		stop
	S2:
		GEAR B 28
		stop
	S3:
		GEAR C 28
		stop
	S4:
		GEAR D 28
		stop
	}
}

Actor Vise
{
Radius 4
Height 4
BounceCount 2
Scale 0.03
Bouncesound "EmtalicSlide"
+THRUACTORS
+NOBLOCKMAP
+BOUNCEONFLOORS
+MBFBOUNCER
+CLIENTSIDEONLY
+USEBOUNCESTATE
States
{
	Spawn:
		VISE A 0
	See:
		VISE ABCDEFGH 5
		Loop
	Bounce:
	    TNT1 A 0 A_ChangeFlag(USEBOUNCESTATE,0)
	    VISE ABCDEFGH 5
	Death:
		VISE C 100
		Stop
	}
}

Actor Gear : Vise
{
Scale 0.036
States
{
	Spawn:
	    GEAR A 0
	See:
		GEAR ABCD 5
		Loop
	Bounce:
	Death:
		TNT1 A 0 A_Jump(255,"S1","S2","S3","S4")
		goto S1
	S1:
		GEAR A 100
		stop
	S2:
		GEAR B 100
		stop
	S3:
		GEAR C 100
		stop
	S4:
		GEAR D 100
		stop
	}
}

Actor RandomGearViseSpawner2 : RandomSpawner
{
DropItem "Vise" 256 1
DropItem "Gear" 256 1
}