mirror of
https://github.com/Jusctsch5/ironsphererpg.git
synced 2026-01-20 03:54:45 +00:00
Taking everything obtained from http://ironsphererpg2.webs.com/ and dumping it in a git repo
646 lines
21 KiB
C#
646 lines
21 KiB
C#
// used to automatically create all objectives for a mission
|
|
|
|
function AIgeneratorObjectiveInit(%object)
|
|
{
|
|
if(%object.isUnderTerrain)
|
|
return; // no objectives for generators that act as a simple power sources
|
|
|
|
if(%object.team > 0)
|
|
{
|
|
%homeTeam = %object.team;
|
|
if(%homeTeam == 1)
|
|
%enemyTeam = 2;
|
|
else
|
|
%enemyTeam = 1;
|
|
|
|
addAIObjective(%enemyTeam, createDefaultAttack(%object, $AIWeightAttackGenerator[1], $AIWeightAttackGenerator[2]));
|
|
addAIObjective(%homeTeam, createDefaultRepair(%object, $AIWeightRepairGenerator[1], $AIWeightRepairGenerator[2]));
|
|
addAIObjective(%homeTeam, createDefaultDefend(%object, $AIWeightDefendGenerator[1], $AIWeightDefendGenerator[2]));
|
|
}
|
|
else
|
|
{
|
|
addAIObjective(1, createDefaultRepair(%object, $AIWeightRepairGenerator[1], $AIWeightRepairGenerator[2]));
|
|
addAIObjective(1, createDefaultAttack(%object, $AIWeightAttackGenerator[1], $AIWeightAttackGenerator[2]));
|
|
addAIObjective(1, createDefaultDefend(%object, $AIWeightDefendGenerator[1], $AIWeightDefendGenerator[2]));
|
|
addAIObjective(2, createDefaultRepair(%object, $AIWeightRepairGenerator[1], $AIWeightRepairGenerator[2]));
|
|
addAIObjective(2, createDefaultAttack(%object, $AIWeightAttackGenerator[1], $AIWeightAttackGenerator[2]));
|
|
addAIObjective(2, createDefaultDefend(%object, $AIWeightDefendGenerator[1], $AIWeightDefendGenerator[2]));
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function AIsensorObjectiveInit(%object)
|
|
{
|
|
if(%object.team > 0)
|
|
{
|
|
%homeTeam = %object.team;
|
|
if(%homeTeam == 1)
|
|
%enemyTeam = 2;
|
|
else
|
|
%enemyTeam = 1;
|
|
|
|
addAIObjective(%homeTeam, createDefaultRepair(%object, $AIWeightRepairTurret[1], $AIWeightRepairTurret[2]));
|
|
addAIObjective(%enemyTeam, createDefaultMortar(%object, $AIWeightMortarTurret[1], $AIWeightMortarTurret[2]));
|
|
}
|
|
else
|
|
{
|
|
addAIObjective(1, createDefaultRepair(%object, $AIWeightRepairTurret[1], $AIWeightRepairTurret[2]));
|
|
addAIObjective(1, createDefaultMortar(%object, $AIWeightMortarTurret[1], $AIWeightMortarTurret[2]));
|
|
addAIObjective(2, createDefaultRepair(%object, $AIWeightRepairTurret[1], $AIWeightRepairTurret[2]));
|
|
addAIObjective(2, createDefaultMortar(%object, $AIWeightMortarTurret[1], $AIWeightMortarTurret[2]));
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function AIflipflopObjectiveInit(%object)
|
|
{
|
|
// this will always start out neutral (Team 0)
|
|
addAIObjective(1, createDefaultDefend(%object, $AIWeightDefendFlipFlop[1], $AIWeightDefendFlipFlop[2]));
|
|
addAIObjective(1, createDefaultTouch(%object, $AIWeightCaptureFlipFlop[1], $AIWeightCaptureFlipFlop[2]));
|
|
addAIObjective(2, createDefaultDefend(%object, $AIWeightDefendFlipFlop[1], $AIWeightDefendFlipFlop[2]));
|
|
addAIObjective(2, createDefaultTouch(%object, $AIWeightCaptureFlipFlop[1], $AIWeightCaptureFlipFlop[2]));
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function AIturretObjectiveInit(%object)
|
|
{
|
|
if(%object.team > 0)
|
|
{
|
|
%homeTeam = %object.team;
|
|
if(%homeTeam == 1)
|
|
%enemyTeam = 2;
|
|
else
|
|
%enemyTeam = 1;
|
|
|
|
addAIObjective(%homeTeam, createDefaultRepair(%object, $AIWeightRepairTurret[1], $AIWeightRepairTurret[2]));
|
|
|
|
// attack for indoor turrets, mortar for outside turrets
|
|
if(%object.getDataBlock().getName() $= "SentryTurret")
|
|
addAIObjective(%enemyTeam, createDefaultAttack(%object, $AIWeightAttackInventory[1], $AIWeightAttackInventory[2]));
|
|
else
|
|
addAIObjective(%enemyTeam, createDefaultMortar(%object, $AIWeightMortarTurret[1], $AIWeightMortarTurret[2]));
|
|
}
|
|
else
|
|
{
|
|
addAIObjective(1, createDefaultRepair(%object, $AIWeightRepairTurret[1], $AIWeightRepairTurret[2]));
|
|
addAIObjective(1, createDefaultMortar(%object, $AIWeightMortarTurret[1], $AIWeightMortarTurret[2]));
|
|
addAIObjective(2, createDefaultRepair(%object, $AIWeightRepairTurret[1], $AIWeightRepairTurret[2]));
|
|
addAIObjective(2, createDefaultMortar(%object, $AIWeightMortarTurret[1], $AIWeightMortarTurret[2]));
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function AIinventoryObjectiveInit(%object)
|
|
{
|
|
if(%object.team > 0)
|
|
{
|
|
%homeTeam = %object.team;
|
|
if(%homeTeam == 1)
|
|
%enemyTeam = 2;
|
|
else
|
|
%enemyTeam = 1;
|
|
|
|
addAIObjective(%homeTeam, createDefaultRepair(%object, $AIWeightRepairInventory[1], $AIWeightRepairInventory[2]));
|
|
addAIObjective(%enemyTeam, createDefaultAttack(%object, $AIWeightAttackInventory[1], $AIWeightAttackInventory[2]));
|
|
}
|
|
else
|
|
{
|
|
addAIObjective(1, createDefaultRepair(%object, $AIWeightRepairInventory[1], $AIWeightRepairInventory[2]));
|
|
addAIObjective(1, createDefaultAttack(%object, $AIWeightAttackInventory[1], $AIWeightAttackInventory[2]));
|
|
addAIObjective(2, createDefaultRepair(%object, $AIWeightRepairInventory[1], $AIWeightRepairInventory[2]));
|
|
addAIObjective(2, createDefaultAttack(%object, $AIWeightAttackInventory[1], $AIWeightAttackInventory[2]));
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function createDefaultTouch(%object, %weight1, %weight2)
|
|
{
|
|
%objective = new AIObjective(AIOTouchObject)
|
|
{
|
|
dataBlock = "AIObjectiveMarker";
|
|
description = "Capture the " @ %object.getName();
|
|
weightLevel1 = %weight1;
|
|
weightLevel2 = %weight2;
|
|
mode = "TouchFlipFlop";
|
|
targetObject = %object.getName();
|
|
targetClientId = -1;
|
|
targetObjectId = -1;
|
|
offense = true;
|
|
location = %object.getWorldBoxCenter();
|
|
desiredEquipment = "Light EnergyPack";
|
|
buyEquipmentSet = "LightEnergyDefault";
|
|
};
|
|
|
|
if(%object.missionTypesList !$= "")
|
|
%objective.gameType = %object.missionTypesList;
|
|
|
|
%objective.position = %objective.location;
|
|
return %objective;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function createDefaultMortar(%object, %weight1, %weight2)
|
|
{
|
|
%objective = new AIObjective(AIOMortarObject)
|
|
{
|
|
dataBlock = "AIObjectiveMarker";
|
|
description = "Mortar the " @ %object.getDataBlock().getName();
|
|
targetObject = %object.getName();
|
|
targetObjectId = %object;
|
|
targetClientId = -1;
|
|
weightLevel1 = %weight1;
|
|
weightLevel2 = %weight2;
|
|
location = %object.getWorldBoxCenter();
|
|
offense = true;
|
|
equipment = "Mortar MortarAmmo";
|
|
buyEquipmentSet = "HeavyAmmoSet";
|
|
};
|
|
|
|
if(%object.missionTypesList !$= "")
|
|
%objective.gameType = %object.missionTypesList;
|
|
|
|
%objective.position = %objective.location;
|
|
return %objective;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function createDefaultRepair(%object, %weight1, %weight2)
|
|
{
|
|
%objective = new AIObjective(AIORepairObject)
|
|
{
|
|
dataBlock = "AIObjectiveMarker";
|
|
description = "Repair the " @ %object.getDataBlock().getName();
|
|
targetObject = %object.getName();
|
|
targetObjectId = %object;
|
|
targetClientId = -1;
|
|
weightLevel1 = %weight1;
|
|
weightLevel2 = %weight2;
|
|
location = %object.getWorldBoxCenter();
|
|
defense = true;
|
|
equipment = "RepairPack";
|
|
buyEquipmentSet = "MediumRepairSet";
|
|
};
|
|
|
|
if(%object.missionTypesList !$= "")
|
|
%objective.gameType = %object.missionTypesList;
|
|
|
|
%objective.position = %objective.location;
|
|
return %objective;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function createDefaultAttack(%object, %weight1, %weight2)
|
|
{
|
|
%objective = new AIObjective(AIOAttackObject)
|
|
{
|
|
dataBlock = "AIObjectiveMarker";
|
|
description = "Attack the " @ %object.getDataBlock().getName();
|
|
targetObject = %object.getName();
|
|
targetObjectId = %object;
|
|
targetClientId = -1;
|
|
weightLevel1 = %weight1;
|
|
weightLevel2 = %weight2;
|
|
location = %object.getWorldBoxCenter();
|
|
offense = true;
|
|
desiredEquipment = "ShieldPack";
|
|
buyEquipmentSet = "HeavyAmmoSet";
|
|
};
|
|
|
|
if(%object.missionTypesList !$= "")
|
|
%objective.gameType = %object.missionTypesList;
|
|
|
|
%objective.position = %objective.location;
|
|
return %objective;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function createDefaultDefend(%object, %weight1, %weight2)
|
|
{
|
|
%objective = new AIObjective(AIODefendLocation)
|
|
{
|
|
dataBlock = "AIObjectiveMarker";
|
|
description = "Defend the " @ %object.getDataBlock().getName();
|
|
targetObject = %object.getName();
|
|
targetObjectId = %object;
|
|
targetClientId = -1;
|
|
weightLevel1 = %weight1;
|
|
weightLevel2 = %weight2;
|
|
location = %object.getWorldBoxCenter();
|
|
defense = true;
|
|
desiredEquipment = "ShieldPack Plasma PlasmaAmmo";
|
|
buyEquipmentSet = "HeavyShieldSet";
|
|
};
|
|
|
|
if(%object.missionTypesList !$= "")
|
|
%objective.gameType = %object.missionTypesList;
|
|
|
|
%objective.position = %objective.location;
|
|
return %objective;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function AIflagObjectiveInit(%flag)
|
|
{
|
|
%homeTeam = %flag.team;
|
|
|
|
if(%homeTeam == 1)
|
|
%enemyTeam = 2;
|
|
else
|
|
%enemyTeam = 1;
|
|
|
|
if(%flag.missionTypesList !$= "")
|
|
{
|
|
%missionSpecific = true;
|
|
%misType = %flag.missionTypesList;
|
|
}
|
|
|
|
%newObjective = new AIObjective(AIODefendLocation)
|
|
{
|
|
dataBlock = "AIObjectiveMarker";
|
|
weightLevel1 = $AIWeightDefendFlag[1];
|
|
weightLevel2 = $AIWeightDefendFlag[2];
|
|
description = "Defend our flag";
|
|
targetObject = %flag.getName();
|
|
targetObjectId = %flag;
|
|
targetClientId = -1;
|
|
location = %flag.getWorldBoxCenter();
|
|
defense = true;
|
|
desiredEquipment = "ShieldPack Plasma PlasmaAmmo";
|
|
buyEquipmentSet = "HeavyShieldSet";
|
|
chat = "ChatSelfDefendFlag DefendBase";
|
|
};
|
|
|
|
if(%missionSpecific)
|
|
%newObjective.gameType = %misType;
|
|
else
|
|
%newObjective.gameType = "all";
|
|
|
|
%newObjective.position = %newObjective.location;
|
|
addAIObjective(%homeTeam, %newObjective);
|
|
|
|
%newObjective = new AIObjective(AIOTouchObject)
|
|
{
|
|
dataBlock = "AIObjectiveMarker";
|
|
weightLevel1 = $AIWeightGrabFlag[1];
|
|
weightLevel2 = $AIWeightGrabFlag[2];
|
|
description = "Grab the enemy flag";
|
|
targetObject = %flag.getName();
|
|
targetObjectId = %flag;
|
|
targetClientId = -1;
|
|
location = %flag.getWorldBoxCenter();
|
|
mode = "FlagGrab";
|
|
offense = true;
|
|
desiredEquipment = "Light EnergyPack";
|
|
buyEquipmentSet = "LightEnergyDefault";
|
|
};
|
|
|
|
if(%missionSpecific)
|
|
%newObjective.gameType = %misType;
|
|
else
|
|
%newObjective.gameType = "all";
|
|
|
|
%newObjective.position = %newObjective.location;
|
|
addAIObjective(%enemyTeam, %newObjective);
|
|
|
|
//NOTE: for this objective, we need to fill in the targetClientId when the flag is taken
|
|
%newObjective = new AIObjective(AIOAttackPlayer)
|
|
{
|
|
dataBlock = "AIObjectiveMarker";
|
|
weightLevel1 = $AIWeightKillFlagCarrier[1];
|
|
weightLevel2 = $AIWeightKillFlagCarrier[2];
|
|
description = "Kill the enemy flag carrier";
|
|
mode = "FlagCarrier";
|
|
targetObject = %flag.getName();
|
|
targetObjectId = -1;
|
|
targetClientId = -1;
|
|
offense = true;
|
|
desiredEquipment = "Light EnergyPack";
|
|
buyEquipmentSet = "LightEnergySniper";
|
|
};
|
|
|
|
if(%missionSpecific)
|
|
%newObjective.gameType = %misType;
|
|
else
|
|
%newObjective.gameType = "all";
|
|
|
|
%newObjective.position = %flag.getWorldBoxCenter();
|
|
addAIObjective(%homeTeam, %newObjective);
|
|
|
|
//NOTE: for this objective, we need to fill in the location when the flag is grabbed
|
|
%newObjective = new AIObjective(AIOTouchObject)
|
|
{
|
|
dataBlock = "AIObjectiveMarker";
|
|
weightLevel1 = $AIWeightCapFlag[1];
|
|
weightLevel2 = $AIWeightCapFlag[2];
|
|
description = "Capture the flag!";
|
|
targetObject = %flag.getName();
|
|
targetObjectId = %flag;
|
|
targetClientId = -1;
|
|
mode = "FlagCapture";
|
|
offense = true;
|
|
defense = true;
|
|
};
|
|
|
|
if(%missionSpecific)
|
|
%newObjective.gameType = %misType;
|
|
else
|
|
%newObjective.gameType = "all";
|
|
|
|
%newObjective.position = %flag.getWorldBoxCenter();
|
|
addAIObjective(%enemyTeam, %newObjective);
|
|
|
|
%newObjective = new AIObjective(AIOTouchObject)
|
|
{
|
|
dataBlock = "AIObjectiveMarker";
|
|
weightLevel1 = $AIWeightReturnFlag[1];
|
|
weightLevel2 = $AIWeightReturnFlag[2];
|
|
description = "Return our flag";
|
|
targetObject = %flag.getName();
|
|
targetObjectId = %flag;
|
|
targetClientId = -1;
|
|
location = %flag.getWorldBoxCenter();
|
|
mode = "FlagDropped";
|
|
offense = true;
|
|
defense = true;
|
|
};
|
|
|
|
if(%missionSpecific)
|
|
%newObjective.gameType = %misType;
|
|
else
|
|
%newObjective.gameType = "all";
|
|
|
|
%newObjective.position = %newObjective.location;
|
|
addAIObjective(%homeTeam, %newObjective);
|
|
|
|
%newObjective = new AIObjective(AIOTouchObject)
|
|
{
|
|
dataBlock = "AIObjectiveMarker";
|
|
weightLevel1 = $AIWeightReturnFlag[1];
|
|
weightLevel2 = $AIWeightReturnFlag[2];
|
|
description = "Grab the dropped enemy flag";
|
|
targetObject = %flag.getName();
|
|
targetObjectId = %flag;
|
|
targetClientId = -1;
|
|
mode = "FlagDropped";
|
|
offense = true;
|
|
defense = true;
|
|
};
|
|
|
|
if(%missionSpecific)
|
|
%newObjective.gameType = %misType;
|
|
else
|
|
%newObjective.gameType = "all";
|
|
|
|
%newObjective.position = %flag.getWorldBoxCenter();
|
|
addAIObjective(%enemyTeam, %newObjective);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function addAIObjective(%team, %objective)
|
|
{
|
|
if(AIObjectiveExists(%objective, %team) == false)
|
|
nameToId("MissionGroup/Teams/team" @ %team @ "/AIObjectives").add(%objective);
|
|
else
|
|
%objective.delete();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function AICreateObjectives()
|
|
{
|
|
messageBoxOkCancel("Build Objectives", "Are you sure you want to build all mission objectives?", "AIBuildObjectives();");
|
|
}
|
|
|
|
function AIBuildObjectives()
|
|
{
|
|
// make sure there exists our objectives group
|
|
for(%i = 0; %i <= Game.numTeams; %i++)
|
|
{
|
|
%objGroup = nameToId("MissionGroup/Teams/team" @ %i @ "/AIObjectives");
|
|
%teamGroup = nameToID("MissionGroup/Teams/team" @ %i);
|
|
|
|
if(%objGroup <= 0)
|
|
{
|
|
%set = new SimGroup(AIObjectives);
|
|
%teamGroup.add(%set);
|
|
}
|
|
else
|
|
{
|
|
// there already exists a folder for AIobjectives
|
|
// remove any objectives that are not locked
|
|
%count = 0;
|
|
while(%objGroup.getCount() && (%count != %objGroup.getCount()))
|
|
{
|
|
%obj = %objGroup.getObject(%count);
|
|
if(!%obj.locked)
|
|
%objGroup.remove(%obj);
|
|
else
|
|
%count++;
|
|
}
|
|
}
|
|
}
|
|
|
|
for(%k = 0; %k <= Game.numTeams; %k++)
|
|
{
|
|
%teamGroup = nameToID("MissionGroup/Teams/team" @ %k);
|
|
%teamGroup.AIobjectiveInit(false);
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function SimGroup::AIobjectiveInit(%this)
|
|
{
|
|
for(%i = 0; %i < %this.getCount(); %i++)
|
|
%this.getObject(%i).AIobjectiveInit();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function GameBase::AIobjectiveInit(%this)
|
|
{
|
|
%this.getDataBlock().AIobjectiveInit(%this);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function AssignName(%object)
|
|
{
|
|
%root = %object.getDataBlock().getName();
|
|
if (%root $= "")
|
|
%root = "Unknown";
|
|
|
|
if (%object.team >= 0)
|
|
%newName = "Team" @ %object.team @ %root;
|
|
else
|
|
%newName = "Unnamed" @ %root;
|
|
%i = 1;
|
|
while (isObject(%newName @ %i))
|
|
%i++;
|
|
%object.setName(%newName @ %i);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function StationInventory::AIobjectiveInit(%data, %object)
|
|
{
|
|
if(%object.getName() $= "")
|
|
AssignName(%object);
|
|
|
|
AIinventoryObjectiveInit(%object);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function Generator::AIobjectiveInit(%data, %object)
|
|
{
|
|
if(%object.getName() $= "")
|
|
AssignName(%object);
|
|
|
|
if(!%object.isUnderTerrain)
|
|
AIgeneratorObjectiveInit(%object);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function TurretData::AIobjectiveInit(%data, %object)
|
|
{
|
|
if(%object.getName() $= "")
|
|
AssignName(%object);
|
|
|
|
AIturretObjectiveInit(%object);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function Sensor::AIobjectiveInit(%data, %object)
|
|
{
|
|
if(%object.getName() $= "")
|
|
AssignName(%object);
|
|
|
|
AIsensorObjectiveInit(%object);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function Flag::AIobjectiveInit(%data, %object)
|
|
{
|
|
if(%object.getName() $= "")
|
|
AssignName(%object);
|
|
|
|
AIflagObjectiveInit(%object);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function FlipFlop::AIobjectiveInit(%data, %object)
|
|
{
|
|
if(%object.getName() $= "")
|
|
AssignName(%object);
|
|
|
|
AIflipflopObjectiveInit(%object);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function saveObjectives()
|
|
{
|
|
for(%i = 1; %i <= 2; %i++)
|
|
saveObjectives(%i);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function saveObjectiveFile(%team)
|
|
{
|
|
// check for read-only
|
|
%fileName = $CurrentMission @ "team" @ %team @ ".cs";
|
|
%file = "base/missions/" @ %fileName;
|
|
|
|
if(!isWriteableFileName(%file))
|
|
{
|
|
error("Objectives file '" @ %fileName @ "' is not writeable.");
|
|
return;
|
|
}
|
|
|
|
// ok, were good to save.
|
|
%objectives = nameToId("MissionGroup/Teams/team" @ %team @ "/AIObjectives");
|
|
%objectives.save("missions/" @ %fileName);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function LoadObjectives(%numTeams)
|
|
{
|
|
for(%i = 1; %i <= %numTeams; %i++)
|
|
loadObjectivesFile(%i);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function LoadObjectivesFile(%team)
|
|
{
|
|
%file = $CurrentMission @ "team" @ %team;
|
|
exec("missions/" @ %file);
|
|
%newObjSet = nameToId("MissionCleanup/AIObjectives");
|
|
|
|
if(%newObjSet > 0)
|
|
{
|
|
%group = NameToId("MissionGroup/Teams/team" @ %team);
|
|
%oldObjSet = NameToId("MissionGroup/Teams/team" @ %team @ "/AIObjectives");
|
|
|
|
if(%oldObjSet > 0)
|
|
{
|
|
%oldObjSet.delete();
|
|
%group.add(%newObjSet);
|
|
}
|
|
}
|
|
else
|
|
error("no objectives file for team" @ %team @ ". Loading defaults...");
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------
|
|
|
|
function AIObjectiveExists(%newObjective, %team)
|
|
{
|
|
%objGroup = nameToId("MissionGroup/Teams/team" @ %team @ "/AIObjectives");
|
|
%objCount = %objGroup.getCount();
|
|
%exists = false;
|
|
|
|
for(%i = 0; %i < %objCount; %i++)
|
|
{
|
|
%obj = %objGroup.getObject(%i);
|
|
|
|
if(%obj.getName() $= %newObjective.getName())
|
|
{
|
|
if((%obj.getName() $= "AIOMortarObject") ||
|
|
(%obj.getName() $= "AIORepairObject") ||
|
|
(%obj.getName() $= "AIOAttackObject") ||
|
|
(%obj.getName() $= "AIODefendLocation"))
|
|
{
|
|
if(%obj.targetObjectId == %newObjective.targetObjectId)
|
|
%exists = true;
|
|
}
|
|
else if((%obj.getName() $= "AIOTouchObject") ||
|
|
(%obj.getName() $= "AIOAttackPlayer"))
|
|
{
|
|
if(%obj.mode $= %newObjective.mode)
|
|
if(%obj.description $= %newObjective.description)
|
|
%exists = true;
|
|
}
|
|
}
|
|
}
|
|
return %exists;
|
|
}
|