Class GHAGPsychic : GHAGPokemonmove
{
	Default
	{
		Weapon.SlotNumber 4;
		
		Tag "Psychic";
		Inventory.PickupMessage "Tada! Gardevoir learned \ctPsychic!"; // and thankfully didn't forget anything!
	}
	
	States
	{
		Spawn:
			TMPS A -1;
			stop;
		Select:
			MPUN A 1 A_GHAGRaise();
			Loop;
		Deselect:
			MPUN A 1 A_GHAGLower();
			Loop;
		Ready:
			TNT1 A 0 A_Overlay(-1, "Ready.NoOverlay");
		Ready.Loop:
			MPUN A 1 
			{
				A_WeaponReady();
				A_DrawPsychic();
			}
			Loop;
		Fire:
			TNT1 A 0 A_StartSound("attack/PsychicCharge", CHAN_AUTO);
			HAND HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 1
			{
				int rngrange = 2;
				A_DrawPsychic();
				A_Overlay(-1, "Fire.OverlayCharge");
				A_OverlayOffset(0, random(-rngrange, rngrange), 43 + random(-rngrange, rngrange), WOF_INTERPOLATE);
				A_OverlayFlags(-1, PSPF_FLIP | PSPF_MIRROR, true);
				A_OverlayOffset(-1, -35 - random(-rngrange, rngrange), random(-rngrange, rngrange), WOF_INTERPOLATE);
			}
		Fire.Loop:
			HAND K 1
			{
				A_FireProjectile('GHAGPsychicMissile');
				int rngrange = 2;
				A_Overlay(-1, "Fire.OverlayMirror");
				A_OverlayOffset(0, random(-rngrange, rngrange), 43 + random(-rngrange, rngrange), WOF_INTERPOLATE);
				A_OverlayFlags(-1, PSPF_FLIP | PSPF_MIRROR, true);
				A_OverlayOffset(-1, -35 - random(-rngrange, rngrange), random(-rngrange, rngrange), WOF_INTERPOLATE);
				A_SetTics(GHAGGardevoir(self).GetTicModifier(8, true));
				GHAGGardevoir(self).subtractanger(5);
				A_DrawPsychic();
			}
			HAND K 1
			{
				int rngrange = 2;
				A_DrawPsychic();
				A_Overlay(-1, "Fire.OverlayMirror");
				A_OverlayFlags(-1, PSPF_FLIP | PSPF_MIRROR, true);
				A_OverlayOffset(-1, -35 - random(-rngrange, rngrange), random(-rngrange, rngrange), WOF_INTERPOLATE);
			}
			TNT1 A 0 A_Refire('Fire.Loop');
			Goto Ready;
		Fire.OverlayCharge:
			HAND H 1;
			stop;
		Fire.OverlayMirror:
			HAND K 1;
			loop;
		Ready.NoOverlay:
			TNT1 A 1;
			stop;
		Ready.FloatLayer:
			PSYC ABCDEFGHI 4 Bright;
			Stop;
	}
	
	Action Void A_DrawPsychic()
	{
		A_Overlay(-2, "Ready.FloatLayer", true);
		A_OverlayOffset(-2, 160, 120);
		A_OverlayPivot(-2);
		A_OverlayScale(-2, 2, 2);
		A_OverlayRotate(-2, 360 * sin(gametic));
	}
}

Class GHAGPsychicMissile : Actor
{
	Default
	{
		Speed 60;
		Damage 10;
		Projectile;
		+RollSprite;
	}
	
	override void BeginPlay()
	{
		Super.BeginPlay();
		
		self.roll = random(1, 360);
		
		A_StartSound("Attack/PsychicBeam", CHAN_AUTO, 0, 0.25, ATTN_NORM);
	}
	
	override void tick()
	{
		Super.Tick();
		
		self.roll += 13;
	}
	
	States
	{
		Spawn:
			PSYC ABCDEFGHI 2 Bright;
			Loop;
		Death:
			#### # 1 A_FadeOut(0.075);
			Loop;
	}
}