//One day, one fucking day I will grab a random character and turn it into an Harpy, you can take my words into that.

class Harpa : Actor
{
	//$Category Desgraciados
	//$Title Harpy
	
	Actor itsnotlikeanime;
	Default
	{
		Radius 20;
		Height 56;
		Health 150;
		Speed 15;
		FloatSpeed 10;
		DamageFunction (random(10,14));
		PainChance 60;
		MinMissileChance 140;
		Monster;
		FloatBobStrength 0.6;
		DamageFactor "Blal", 25;
		DamageFactor "Boomerangz", 255;
		DamageFactor "Grenade", 30;
		DamageFactor "Diabetes", 0.90;
		DamageFactor "Maser", 250;
		DamageFactor "Ass", 0.6;
		DamageFactor "Powder", 250;
		DamageFactor "Radiation", 85;
		DamageFactor "Steel", 20;
		DamageFactor "Air", 0;
		DamageFactor "Fire", 205;
		DamageFactor "Time", 20;
		DamageFactor "HipTo", 10;
		DamageFactor "Bloon", 0.55;
		DamageFactor "Huje", 0;
		DamageFactor "Kaboomz", 13;
		DamageFactor "Images", 0;
		DamageFactor "Poison", 175;
		DamageFactor "Ramming", 150;
		DamageFactor "Ice", 150;
		DamageFactor "Lightning", 203;
		+Float;
		+FloatBob;
		+NoGravity;
		+NoLiftDrop;
		+FloorClip;
		+NoInfightSpecies;
		ActiveSound "harpy/act";
		DeathSound "harpy/death";
		PainSound "harpy/pain";
		SeeSound "harpy/see";
	}
	
	States
	{
		Spawn:
		 TNT1 A 0 NoDelay {
			if (bSTANDSTILL) {
				bFLOATBOB = false;
				return ResolveState ("Idle");
			}
			return ResolveState ("Look");
		 }
		Look:
		 HRPY AABBCC 3 A_Look;
		 TNT1 A 0 A_PlaySound ("harpy/fly", CHAN_BODY);
		 HRPY DDCCBB 3 A_Look;
		 loop;
		Idle:
		 HRPY D 3 A_Look;
		 loop;
		See:
		 TNT1 A 0 { bFloatBob = false; }
		 HRPY ABC 4 A_Chase;
		 TNT1 A 0 A_PlaySound ("harpy/fly", CHAN_BODY);
		 HRPY DCB 4 A_Chase;
		 goto See+1;
		Missile:
		 HRPY E 8 A_FaceTarget;
		 TNT1 A 0 A_PlaySound ("harpy/dive", CHAN_5);
		 HRPY F 35 A_SkullAttack (18);
		 HRPY E 5 A_Stop;
		 goto See;
		Pain:
		 HRPY G 8 A_Pain;
		 goto See;
		Death:
		 HRPY H 5 A_ScreamAndUnblock;
		 HRPY IJKL 5;
		 TNT1 A 0 A_JumpIf (floorz!=self.pos.z, "Fall");
		Ground:
		 TNT1 A 0 A_PlaySound ("harpy/fall");
		 HRPY M 5 { bFloatBob = false; }
		 HRPY N -1;
		 stop;
		Fall:
		 HRPY L 1 A_CheckFloor ("Ground");
		 loop;
	}
	
	override bool Slam (actor victim)
	{
		if (victim != null && victim.bShootable && victim.GetSpecies() != self.GetSpecies()) {
			A_PlaySound ("harpy/scratch", CHAN_6);
		}
		Super.Slam (victim);
		return true;
	}
}