Moogle's Bombed Out Building Code
From OPU Wiki
My magic code i've been working on for some time creates a building that is destroyed at map start.
void rubbleBuilder(map_id building,int curX,int curY,int player,int health,int boomsize)
{
//boom size 0 if you want building to remain set helth then
int i =0;
bool ok = false;
Unit u2,boom;
BuildingGroup &wall= CreateBuildingGroup(Player[player]);
PlayerVehicleEnum earth(player);
if(building==mapAdvancedLab)
{
TethysGame::CreateUnit(u2, mapAdvancedLab, LOCATION(curX, curY), player, mapNone, 0);
CreateTubeOrWallLine(curX-3,curY-3,curX-1,curY-3,mapWall);
CreateTubeOrWallLine(curX+1,curY-3,curX+3,curY-3,mapWall);
CreateTubeOrWallLine(curX+3,curY+3,curX+3,curY-1,mapWall);
CreateTubeOrWallLine(curX+3,curY+1,curX+3,curY+3,mapWall);
CreateTubeOrWallLine(curX-3,curY-3,curX-3,curY-1,mapWall);
CreateTubeOrWallLine(curX-3,curY+1,curX-3,curY+3,mapWall);
CreateTubeOrWallLine(curX-3,curY+3,curX-1,curY+3,mapWall);
CreateTubeOrWallLine(curX+1,curY+3,curX+3,curY+3,mapWall);;
}
else if(building==mapSpaceport)
{
TethysGame::CreateUnit(u2, mapSpaceport, LOCATION(curX, curY), player, mapNone, 0);
CreateTubeOrWallLine(curX-4,curY-4,curX-1,curY-4,mapWall);
CreateTubeOrWallLine(curX+1,curY-4,curX+3,curY-4,mapWall);
CreateTubeOrWallLine(curX+4,curY-4,curX+4,curY-1,mapWall);
CreateTubeOrWallLine(curX+4,curY+1,curX+4,curY+3,mapWall);
CreateTubeOrWallLine(curX-4,curY-4,curX-4,curY-1,mapWall);
CreateTubeOrWallLine(curX-4,curY+1,curX-4,curY+3,mapWall);
CreateTubeOrWallLine(curX-4,curY+3,curX-1,curY+3,mapWall);
CreateTubeOrWallLine(curX+1,curY+3,curX+4,curY+3,mapWall);
}
else if(building==mapCommandCenter)
{
TethysGame::CreateUnit(u2, mapCommandCenter, LOCATION(curX, curY), player, mapNone, 0);
CreateTubeOrWallLine(curX-3,curY-3,curX-1,curY-3,mapWall);
CreateTubeOrWallLine(curX+1,curY-3,curX+3,curY-3,mapWall);
CreateTubeOrWallLine(curX+3,curY-3,curX+3,curY-1,mapWall);
CreateTubeOrWallLine(curX+3,curY+1,curX+3,curY+2,mapWall);
CreateTubeOrWallLine(curX-3,curY-3,curX-3,curY-1,mapWall);
CreateTubeOrWallLine(curX-3,curY+1,curX-3,curY+2,mapWall);
CreateTubeOrWallLine(curX-3,curY+2,curX-1,curY+2,mapWall);
CreateTubeOrWallLine(curX+1,curY+2,curX+3,curY+2,mapWall);
}
else if(building==mapStandardLab)
{
TethysGame::CreateUnit(u2, mapStandardLab, LOCATION(curX, curY), player, mapNone, 0);
CreateTubeOrWallLine(curX-3,curY-3,curX-1,curY-3,mapWall);
CreateTubeOrWallLine(curX+1,curY-3,curX+3,curY-3,mapWall);
CreateTubeOrWallLine(curX+3,curY-3,curX+3,curY-1,mapWall);
CreateTubeOrWallLine(curX+3,curY+1,curX+3,curY+2,mapWall);
CreateTubeOrWallLine(curX-3,curY-3,curX-3,curY-1,mapWall);
CreateTubeOrWallLine(curX-3,curY+1,curX-3,curY+2,mapWall);
CreateTubeOrWallLine(curX-3,curY+2,curX-1,curY+2,mapWall);
CreateTubeOrWallLine(curX+1,curY+2,curX+3,curY+2,mapWall);
}
else if(building==mapTokamak)
{
TethysGame::CreateUnit(u2, mapTokamak, LOCATION(curX, curY), player, mapNone, 0);
CreateTubeOrWallLine(curX-3,curY-3,curX+2,curY-3,mapWall);
CreateTubeOrWallLine(curX+2,curY-3,curX+2,curY+2,mapWall); ;
CreateTubeOrWallLine(curX+2,curY+2,curX-3,curY+2,mapWall);
CreateTubeOrWallLine(curX-3,curY+2,curX-3,curY-3,mapWall);
}
else if(building==mapGuardPost)
{
TethysGame::CreateUnit(u2, mapGuardPost, LOCATION(curX, curY), player, mapLaser, 0);
// createRubble(curX,curY);
TethysGame::CreateWallOrTube(curX+1,curY,0,mapTube);
TethysGame::CreateWallOrTube(curX,curY+1,3,mapTube);
}
else
{
TethysGame::CreateUnit(u2, building, LOCATION(curX, curY), player, mapNone, 0);
}
if(health==-1)
{
for(int i=0;i<boomsize;i++)
{
TethysGame::CreateUnit(boom,mapScorpion , LOCATION(curX, curY), player, mapStarflare, 0);
// FightGroup &boomboom = CreateFightGroup(Player[player+1]);;
// boomboom.SetDeleteWhenEmpty(1);
boom.DoAttack(u2);
}
}
else
{
u2.SetDamage(health);
}
}
--MoogleThe1337 19:28, 14 Jun 2005 (CDT)
