Size;

Blockade(X, Y)
{
	Size = 60;
	Side = floor(Rand(0, 4));
	if (Side != 0) B_AddNew(X - Size, Y - Size, X + Size, Y - Size);
	if (Side != 1) B_AddNew(X + Size, Y - Size, X + Size, Y + Size);
	if (Side != 2) B_AddNew(X + Size, Y + Size, X - Size, Y + Size);
	if (Side != 3) B_AddNew(X - Size, Y + Size, X - Size, Y - Size);
}

EveryTurn(Turn)
{
	if (Turn == 1)
	{
		SetActive("SHIPS");
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		S_GiveDrop();
		//S_GiveMiss(0, 0, 0, 0, 0, 0);
		//S_GiveComp(2, 16, -1, -1, -1, -1, -1);

		for (x = GetWorldMin()+50; x < GetWorldMax(); x = x + 300)
		{
			for (y = GetWorldMin()+50; y < GetWorldMax(); y = y + 300)
			{
				if (Rand(0, 1) < 0.10)
				{
					SpawnUpgrade(x, y, 5, -1, -1, -1, -1, -1);
					call-script Blockade(x, y);
				}
				else
					SpawnUpgrade(x, y, 6, -1, -1, -1, -1, -1);
			}
		}
	}

	if (mod(Turn, 10) < 0.1) //once every 10 turns
	{
		SetActive("SHIPS");
		S_Replenish();
	}

	SetActive("SHIPS");
	S_Injure(-1);
}

OnDamageSHIPS(Amount)
{
	SetActive("INJURED");
	if (S_GetSize() - Amount * 2 < 4)
	{
		S_SetSize(2);
		Amount = 999; //deal 999 damage
	}
	else if (Amount > 0)
	{
		S_SetSize(S_GetSize() - Amount * 2);
		Amount = 0; //no damage done
	}
	else
	{
		S_SetSize(S_GetSize() - Amount * 1);
		Amount = 0;
	}	
}

OnHitSHIPS()
{
	//this will be called twice, once for each ship.  SO.
	SetActive("COLLIDER"); //object of type SHIPS
	if (S_GetSize() < 4)
		return;

	SetActive("COLLIDED"); //Object struck by SHIPS member
	IsAlso("COLLIDED", "SHIPS"); //if they're a ship too...
	if (Exists() != 0) //two ships colliding...
	{
		SetActive("COLLIDER"); //first ship
		tempSize = S_GetSize();
		SetActive("COLLIDED"); //other ship
		if (S_GetSize() * 0.8 > tempSize)
		{
			S_Injure(-tempSize / 2);
			SetActive("COLLIDER");
			S_Injure(999);
		}
	}
}

OnPickupUpgradeSHIPS(Type, X, Y)
{
	if (Type == 5)
	{
		SetActive("UPGRADED");
		S_Injure(-40);
		Type = -1;

		B_DestroyNear(X, Y, Size + 20);
	}
	else if (Type == 6)
	{
		SetActive("UPGRADED");
		S_Injure(-4);
		Type = -1;
	}
}

OnDropUpgrade(Type, X, Y)
{
	if (Type == 5)
	{
		Type = -1;
	}
	else if (Type == 6)
	{
		Type = -1;
	}
}