Class GHAGIcyWind : GHAGPokemonMove
{
	Default
	{
		Weapon.SlotNumber 5;
		
		Tag "Icy Wind";
		Inventory.PickupMessage "Tada! Gardevoir learned \cnIcy Wind!"; // and thankfully didn't forget anything!
	}
	
	States
	{
		Spawn:
			TMIC A -1;
			stop;
		Select:
			HAND A 1 A_GHAGRaise();
			Loop;
		Deselect:
			HAND A 1 A_GHAGLower();
			Loop;
		Ready:
			HAND A 1 
			{
				A_WeaponReady();
				A_OverlayIce();
			}
			Loop;
		Fire:
			HAND H 10;
			TNT1 A 0 A_ClearOverlays(-10, -1, false);
		Fire.Loop:
			TNT1 A 0 A_IcyWind();
			HAND K 5;
			TNT1 A 0 A_Refire('Fire.Loop');
			goto Ready;
		Ice.Overlay:
			ICYW ABCB 3 A_SetTics(random(10, 20));
			stop;
	}
	
	Action Void A_OverlayIce()
	{
		for (int i = 0; i < 3; ++i)
		{
			int layer = (i + 1) * -1;
			A_Overlay(layer, "Ice.Overlay", true);
			A_OverlayPivot(layer);
			A_OverlayOffset(layer, 210 + (15 * cos((120 * i) + gametic)), 100 + (15 * sin((120 * i) + gametic)));
			A_OverlayScale(layer, 2, 2);
			A_OverlayFlags(layer, PSPF_ADDBOB, false);
		}
	}
	
	Action void A_IcyWind()
	{
		double modifier = GHAGGardevoir(self).getRageModifier();
		int count = 3 + Int(9 * modifier);
		
		int range = 4;
		for (int i = 0; i < count; ++i)
		{
			let crystal = A_FireProjectile('GHAGIcyWindProjectile', 0, false, 5, 10);
			crystal.Vel3DFromAngle(5 + (15 * modifier), self.angle + random(-range, range), self.pitch + random(-range, range));
		}
		GHAGGardevoir(self).subtractAnger(10);
	}
}

Class GHAGIcyWindProjectile : Actor
{
	Default
	{
		Projectile;
		DamageType "Ice";
		+Ripper;
		+BloodlessImpact;
		Damage (1);
		Speed 5;
		radius 8;
		height 12;
		SeeSound "attack/IcyWind";
	}
	States
	{
		Spawn:
			ICYW AAA 4 Bright;
			ICYW BBB 5 Bright;
			ICWC CCC 3 Bright;
			TNT1 AAA 2 Bright;
			ICWC CCC 2 Bright;
			TNT1 AAA 2 Bright;
			ICWC CCC 2 Bright;
			TNT1 AAA 2 Bright;
			ICWC CCC 2 Bright;
			TNT1 AAA 2 Bright;
			ICWC CCC 4 Bright;
		Death:
			TNT1 A 1;
			Stop;
	}
}