Moogle's AI Wall Building Code

From OPU Wiki

This Code Should help people with makeing their ai better and more advanced.


void wallBuilder(map_id building,int curX,int curY, BuildingGroup bld,int player,int ewn)
{

int i =0;
bool ok = false;	
Unit u2;
	BuildingGroup &wall= CreateBuildingGroup(Player[player]);

	PlayerVehicleEnum earth(player);
	earth.GetNext(u2);
	if(ewn==0)
	{
		while (u2.GetType()!=mapEarthworker)
		{
			earth.GetNext(u2);	
		}
	}
	else
	{
		for (int q=0; q<ewn;q++)
		{
			earth.GetNext(u2);
			while (u2.GetType()!=mapEarthworker)
			{
				earth.GetNext(u2);
			}	
		}
	}
		
	wall.TakeUnit(u2);
	//bld.SetRect(MAP_RECT(curX-8, curY-8, curX+8, curY+8));

		if(building==mapAdvancedLab)
		{
			for( i =0; i <=3;i++)
			{
				wall.RecordWall(LOCATION(curX-4+i,curY-4),mapWall);
			}
			for( i =0; i <=3;i++)
			{
				wall.RecordWall(LOCATION(curX+1+i,curY-4),mapWall);
			}
			
			for( i =0; i <4;i++)
			{
				wall.RecordWall(LOCATION(curX+4,curY-4+i),mapWall);		
			}
			for( i =0; i <3;i++)
			{
				wall.RecordWall(LOCATION(curX+4,curY+1+i),mapWall);		
			}
			
			
			for( i =0; i <=3;i++)
			{
				wall.RecordWall(LOCATION(curX+4-i,curY+4),mapWall);
			}
			for( i =0; i <=3;i++)
			{
				wall.RecordWall(LOCATION(curX-1-i,curY+4),mapWall);
			}

			
			for( i =0; i <4;i++)
			{
				wall.RecordWall(LOCATION(curX-4,curY+4-i),mapWall);
			}
			for( i =0; i <3;i++)
			{
				wall.RecordWall(LOCATION(curX-4,curY-1-i),mapWall);
			}
		}
		else if(building==mapCommandCenter)
		{
			for( i =0; i <=3;i++)
			{
				wall.RecordWall(LOCATION(curX-4+i,curY-4),mapWall);
			}
			for( i =0; i <=3;i++)
			{
				wall.RecordWall(LOCATION(curX+1+i,curY-4),mapWall);
			}
			
			for( i =0; i <=3;i++)
			{
				wall.RecordWall(LOCATION(curX+4,curY-4+i),mapWall);		
			}
			for( i =0; i <3;i++)
			{
				wall.RecordWall(LOCATION(curX+4,curY+1+i),mapWall);		
			}

			for( i =0; i <=3;i++)
			{
				wall.RecordWall(LOCATION(curX+4-i,curY+3),mapWall);
			}
			for( i =0; i <3;i++)
			{
				wall.RecordWall(LOCATION(curX-1-i,curY+3),mapWall);
			}
			
			for( i =0; i <3;i++)
			{
				wall.RecordWall(LOCATION(curX-4,curY+3-i),mapWall);
			}
			for( i =0; i <3;i++)
			{
				wall.RecordWall(LOCATION(curX-4,curY-1-i),mapWall);
			}
		}
		else if(building==mapTokamak)
		{			
			for( i =0; i <=5;i++)
			{
				wall.RecordWall(LOCATION(curX-4+i,curY-4),mapWall);
			}
			for( i =0; i <=5;i++)
			{
				wall.RecordWall(LOCATION(curX+3,curY-4+i),mapWall);		
			}
			for( i =0; i <=5;i++)
			{
				wall.RecordWall(LOCATION(curX+3-i,curY+3),mapWall);
			}
			for( i =0; i <=5;i++)
			{
				wall.RecordWall(LOCATION(curX-4,curY+3-i),mapWall);
			}
		}
	wall.SetRect(MAP_RECT(curX-25, curY-25, curX+50, curY+50));
	bld.TakeUnit(u2);
}
Personal tools