Moogle's AI Wall Building Code
From OPU Wiki
(Redirected from Moogle Ai wall building code)
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);
}
