I Try to create some base zone by creating a zone around each building of a base.
This works for all normal maps however i want to add new maps to the rotation and ive noticed that on new maps these zones get bugged for some reason.
Zones do get deployed but they arent there where theyre supposed to be (around the structures) it seems like the building controllers are misplaced but ive checked it on some maps and they were in the place where i would estimate them to be
SLNode<BuildingGameObj> *x = GameObjManager::BuildingGameObjList.Head();
while (x)
{
GameObject *o = (GameObject *)x->Data();
if (o && As_ScriptableGameObj(o))
{
const char *Preset = Commands->Get_Preset_Name(o);
const char *Team = "2";// make base zone neutral just in case
if (strstr(Preset,"_GDI"))
{
Team = "1";
}
if (strstr(Preset,"_Nod"))
{
Team = "0";
}
if(_stricmp("2",Team) != 0)
{
Vector3 Size = Vector3(40.0f,40.0f,80.0f); //Size of the script zone.
Matrix3 Rotation(true);
Rotation.Rotate_Z(DEG_TO_RADF(Commands->Get_Facing(o))); //Set the rotation of the script zone to the same as the building.
Vector3 Pos = Commands->Get_Position(o);
Pos.Z -= 20;
OBBoxClass Box(Pos,Size,Rotation); //Create the bounding box with the position of the beacon, and the size and rotation defined earlier.
GameObject* Zone = Create_Zone("Script_Zone_All",Box);
Attach_Script_Once(Zone,"KB_Base_Zone",Team);
}
}
x = x->Next();
}
i know this doesnt always cover the full base but thats not the main goal