//This is honestly absurd to a sertain degree, and I like it.

Class Banshesh : Actor  //I'm sorry for naming her like that, but I want the Leg of rush compatibilty here.
{
	//$Category Desgraciados
	//$Title Banshee Woman
	
	Actor iliketechnicalstuff;  //...I have my doubts now...
	Default
	{
	Health 800;
	Radius 15;
	Height 60;
	Mass 50;
	Speed 17;
	PainChance 100;
	+QUICKTORETALIATE; 
	+FLOORCLIP;
	DamageFactor "Blal", 65;
	DamageFactor "Boomerangz", 100;
	DamageFactor "Grenade", 255;
	DamageFactor "Diabetes", 35;
	DamageFactor "Ass", 150;
	DamageFactor "Radiation", 0.55;
	DamageFactor "Maser", 15;
	DamageFactor "Steel", 25;
	DamageFactor "Fire", 0;
	DamageFactor "Air", 0;
	DamageFactor "HipTo", 7;
	DamageFactor "Bloon", 0.13;
	DamageFactor "Powder", 0.7;
	DamageFactor "Time", 0.50;
	DamageFactor "Huje", 3;
	DamageFactor "Kaboomz", 50;
	DamageFactor "Images", 15;
	DamageFactor "Poison", 2;
	DamageFactor "Ramming", 15;
	DamageFactor "Ice", 4;
	DamageFactor "Lightning", 3;
	+NOTARGET;
	+NoInfightSpecies;
	+DONTMORPH;
	SeeSound "Banshesh/Sight";
	PainSound "Banshesh/Pain";
	DeathSound "Banshesh/Death";
	ActiveSound "Banshesh/Active";
	MeleeSound "Banshesh/Raise";
	MONSTER;
	Obituary "%o Heard The Banshee's Wail.";
	Tag "Banshee";
	}
	States
	{
	Spawn:
		BANS A 1 A_Look();
		Loop;
	See:
		BANS A 1 A_TakeInventory("BansheshPaintToken",2);
		BANS A 1 A_TakeInventory("BansheeMiss5Token",50);
		BANS A 1 A_UnSetInvulnerable();
		BANS A 1 A_VileChase();
		BANS A 1 A_SpawnItem("BansheshTail",0,0);
		BANS A 0 A_Jump(20,"BansheeTeleport");
		Loop;
	Missile:
		BANS A 0 A_Jump(20,"Missile3");
		BANS A 0 A_Jump(50,"Missile4");
		BANS A 0 A_Jump(256,"Missile2", "Melee","Missile1", "Missile5", "Missile6");
		Goto See;
	Missile1:
		BANS B 0 A_FaceTarget();
		BANS BCD 2;
		BANS B 0 A_DualPainAttack ("LostSucker");
		Goto See;
	Missile2:
		BANS B 0 A_FaceTarget();
		BANS BCD 2;
		BANS D 0 A_spawnprojectile("Bansheshfire",  50, 0,  -8);
		BANS D 0 A_spawnprojectile("Bansheshfire",  50, 0,   0);
		BANS D 0 A_spawnprojectile("Bansheshfire",  50, 0,   8);
		Goto See;
	Missile3:
		BANS B 0 A_FaceTarget();
		BANS BCD 2;
		BANS B 0 A_Jump(256,"BansheeTeleport");
		Goto See;
	Missile4:
		BANS B 0 A_FaceTarget();
		BANS BCD 2;
		BANS D 0 A_spawnprojectile("Bansheshfire3");
		Goto See;
	Missile5:
		BANS B 0 A_FaceTarget();
		BANS BCD 1;
		BANS D 0 A_spawnprojectile("BansheshFire4");
		BANS D 0 A_GiveInventory("BansheeMiss5Token",1);
		BANS D 0 A_JumpIfInventory("BansheeMiss5Token",50,"See");
		BANS D 1 A_CPosRefire();
		Goto Missile5+2;
	Missile6:
		BANS B 0 A_FaceTarget();
		BANS BCD 2;
		BANS D 0 A_spawnprojectile("BansheshFire5", 50, 0,-160);
		BANS D 0 A_spawnprojectile("BansheshFire5", 50, 0,-128);
		BANS D 0 A_spawnprojectile("BansheshFire5", 50, 0,-96 );
		BANS D 0 A_spawnprojectile("BansheshFire5", 50, 0,-64 );
		BANS D 0 A_spawnprojectile("BansheshFire5", 50, 0,-32 );
		BANS D 0 A_spawnprojectile("BansheshFire5", 50, 0, 0  );
		BANS D 0 A_spawnprojectile("BansheshFire5", 50, 0, 32 );
		BANS D 0 A_spawnprojectile("BansheshFire5", 50, 0, 64 );
		BANS D 0 A_spawnprojectile("BansheshFire5", 50, 0, 96 );
		BANS D 0 A_spawnprojectile("BansheshFire5", 50, 0, 128);
		BANS D 4 A_spawnprojectile("BansheshFire5", 50, 0, 160);
		Goto See;
	Melee:
		BANS B 0 A_FaceTarget();
		BANS BCD 1;
		BANS D 0 A_spawnprojectile("Bansheshfire2", 50, 0,-160);
		BANS D 0 A_spawnprojectile("Bansheshfire2", 50, 0,-128);
		BANS D 0 A_spawnprojectile("Bansheshfire2", 50, 0,-96 );
		BANS D 0 A_spawnprojectile("Bansheshfire2", 50, 0,-64 );
		BANS D 0 A_spawnprojectile("Bansheshfire2", 50, 0,-32 );
		BANS D 0 A_spawnprojectile("Bansheshfire2", 50, 0, 0  );
		BANS D 0 A_spawnprojectile("Bansheshfire2", 50, 0, 32 );
		BANS D 0 A_spawnprojectile("Bansheshfire2", 50, 0, 64 );
		BANS D 0 A_spawnprojectile("Bansheshfire2", 50, 0, 96 );
		BANS D 0 A_spawnprojectile("Bansheshfire2", 50, 0, 128);
		BANS D 4 A_spawnprojectile("Bansheshfire2", 50, 0, 160);
		Goto See;
	BansheeTeleport:
		BANS A 0 A_SetInvulnerable();
		BANS A 1 A_SetTranslucent(0.90);
		BANS A 1 A_SetTranslucent(0.80);
		BANS A 1 A_SetTranslucent(0.70);
		BANS A 1 A_SetTranslucent(0.60);
		BANS A 1 A_SetTranslucent(0.50);
		BANS A 1 A_SetTranslucent(0.40);
		BANS A 1 A_SetTranslucent(0.30);
		BANS A 1 A_SetTranslucent(0.20);
		BANS A 1 A_SetTranslucent(0.10);
		BANS A 0 A_Jump(128,25);
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_ExtChase(0,0,1,1);
		TNT1 A 0 A_Jump(128,25);
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_ExtChase(0,0,1,1);
		BANS A 1 A_SetTranslucent(0.10);
		BANS A 1 A_SetTranslucent(0.20);
		BANS A 1 A_SetTranslucent(0.30);
		BANS A 1 A_SetTranslucent(0.40);
		BANS A 1 A_SetTranslucent(0.50);
		BANS A 1 A_SetTranslucent(0.60);
		BANS A 1 A_SetTranslucent(0.70);
		BANS A 1 A_SetTranslucent(0.80);
		BANS A 1 A_SetTranslucent(0.90);
		BANS A 1 A_SetTranslucent(1.0);
		BANS A 0 A_UnSetInvulnerable();
		goto See;
	Heal:
		BANS BCD 5 BRIGHT;
		Goto See;
	Pain:
		BANS A 5 A_GiveInventory("BansheshPaintToken",5);
		BANS A 5 A_Pain();
		BANS A 5 A_JumpIfInventory("BansheshPaintToken",25,"Missile4");
		Goto See;
	Death:
		BANS G 2 A_Scream();
		BANS H 2 A_NoBlocking();
		BANS I 2 A_spawnprojectile("SpawnFire", 0, 0, 0);
		BANS I 2 A_spawnprojectile("SpawnFire", 0, 0, 0);
		BANS IJKLMNOPQR 2;
		BANS R -1;
		Stop;
	}
}

Class Bansheshfire : Actor
{
	Default
	{
	Radius 13;
	Height 8;
	Speed 15;
	Damage 2;
	Projectile;
	+RANDOMIZE;
	+RIPPER;
	+DEHEXPLOSION;
	+ROCKETTRAIL;
	SeeSound "Banshesh/ASpawn";
	DeathSound "Banshesh/ADeath";
	Obituary "%o Heard The Banshee's Wail.";
	Decal "DoomImpScorch";
	DamageType "Fire";
	}
	States
	{
	Spawn:
		BANB A 1 BRIGHT A_SpawnItem("BansheshFireTail",0,0);
		BANB A 4;
		loop;
	Death:
		BAL1 CDE 3 bright;
		stop;
	}
}

Class Bansheshfire2 : Actor
{
	Default
	{
	Radius 13;
	Height 8;
	Speed 15;
	Damage 2;
	Projectile;
	+RANDOMIZE;
	+DEHEXPLOSION;
	+ROCKETTRAIL;
	SeeSound "Banshesh/ASpawn";
	DeathSound "Banshesh/ADeath";
	Obituary "%o Heard The Banshee's Wail.";
	Decal "DoomImpScorch";
	DamageType "Fire";
	}
	States
	{
	Spawn:
		BANB A 1 BRIGHT A_SpawnItem("BansheshFireTail",0,0);
		BANB A 4;
		loop;
	Death:
		BAL1 CDE 3 bright;
		stop;
	}
}

Class Bansheshfire3 : Actor
{
	Default
	{
	Radius 24;
	Height 24;
	Speed 15;
	Damage 100;
	Projectile;
	+NOGRAVITY;
	+SPAWNCEILING;
	+SEEKERMISSILE;
	+RANDOMIZE;
	+DEHEXPLOSION;
	+ROCKETTRAIL;
	Scale 3.0;
	SeeSound "Banshesh/ASpawn";
	DeathSound "Banshesh/ADeath";
	Obituary "%o Heard The Banshee's Wail.";
	Decal "Scorch";
	DamageType "Fire";
	}
	States
	{
	Spawn:
		BANB A 1 BRIGHT A_SeekerMissile (50,50);
		BANB A 0 BRIGHT A_SpawnItem("BansheshFireTail",0,0);
		BANB A 1 BRIGHT A_GiveInventory("BansheshFier3Token",1);
		BANB A 1 BRIGHT A_JumpIfInventory("BansheshFier3Token",30,"Die");
		Goto Spawn;
	Die:
		BANB A 0 A_Die();
	Death:
		BAL1 CDE 3 bright;
		stop;
	}
}

Class BansheshFire4 : Actor
{
	Default
	{
	Radius 13;
	Height 8;
	Speed 25;
	Damage 2;
	Projectile;
	+RANDOMIZE;
	+DEHEXPLOSION;
	+ROCKETTRAIL;
	SeeSound "Banshesh/ASpawn";
	DeathSound "Banshesh/ADeath";
	Obituary "%o Heard The Banshee's Wail.";
	DamageType "Fire";
	}
	States
	{
	Spawn:
		BANF ABCDEFGH 3;
		BANF H 0 A_DIE();
		Stop;
	Death:
		BANF H 3 bright;
		stop;
	}
}

Class BansheshFire5 : Actor
{
	Default
	{
	Radius 13;
	Height 8;
	Speed 20;
	Damage 2;
	Projectile;
	+SEEKERMISSILE;
	+FLOORHUGGER;
	+RIPPER;
	+RANDOMIZE;
	+DEHEXPLOSION;
	+ROCKETTRAIL;
	SeeSound "Banshesh/ASpawn";
	DeathSound "Banshesh/ADeath";
	Obituary "%o Heard The Banshee's Wail.";
	DamageType "Fire";
	}
	States
	{
	Spawn:
		BAFT A 1 BRIGHT A_SeekerMissile (50,50);
		BAFT A 2 A_SpawnItem("BansheshFireTail2",0,0);
		BAFT A 1 BRIGHT A_GiveInventory("BansheshFier3Token",1);
		BAFT A 1 BRIGHT A_JumpIfInventory("BansheshFier3Token",30,"Die");
		Goto Spawn;
	Die:
		BAFT A 0 A_Die();
	Death:
		BAFT BCDEFGH 3 bright;
		stop;
	}
}

Class BansheshTail : Actor
{
	Default
	{
	Radius 20;
    Height 56;
    Speed 0;
    PROJECTILE;
    RENDERSTYLE "Translucent";
    ALPHA 0.90;
	}
	States
	{
	Spawn:
		TNT1 A 3;
		BANS A 3 A_FadeOut(0.10);
		goto spawn+1;
	}
}

Class BansheshFireTail : Actor
{
	Default
	{
	Radius 20;
    Height 56;
    Speed 0;
    PROJECTILE;
    RENDERSTYLE "Translucent";
    Scale 0.50;
    ALPHA 0.90;
	}
	States
	{
	Spawn:
		TNT1 A 3;
		BANF ABCDEFGH 3 Bright A_FadeOut(0.10);
		Stop;
	}
}

Class BansheshFireTail2 : Actor
{
	Default
	{
	Radius 20;
    Height 56;
    Speed 0;
    PROJECTILE;
    RENDERSTYLE "Translucent";
    Scale 0.50;
    ALPHA 0.90;
	}
	States
	{
	Spawn:
		TNT1 A 3;
		BAFT ABCDEFG 3 Bright A_FadeOut(0.10);
		Stop;
	}
}

Class BansheshPaintToken : Ammo
{
	Default
	{
	Inventory.MaxAmount 50;
	}
}

Class BansheshFier3Token : Ammo
{
	Default
	{
	Inventory.MaxAmount 50;
	}
}

Class BansheeMiss5Token : Ammo
{
	Default
	{
	Inventory.MaxAmount 50;
	}
}