mod.cfg
Code: Select all
///////////////////////////////////////////////////////////////////////////////
//
// Pandemic Studios
//
// AI Personality Configuration - Great Battles
//
// Don't load this for Multi
Random(0);
// Add files to the AI configuration stream
Files("AI")
{
Add("personality_gbcommando_scripts.cfg");
Add("personality_gbcommando_orderers_units.cfg");
Add("personality_gbcommando_bases.cfg");
}
StartActionAll()
{
// Create the base
AddBase("base", "personality.gbcommando.army");
// Add all units currently on the team
AssignBaseConstructors("base");
AssignBaseUnits("base");
// Set up an apropriate unit limit
SetUnitLimit(100);
// Start up the scripts
ExecuteScript("offense.land", "personality.gbcommando.offense.land")
{
Op("%.danger", "=", 0.6);
Op("%.base", "=", "base");
}
ExecuteScript("offense.advland", "personality.gbcommando.offense.advland")
{
Op("%.danger", "=", 0.5);
Op("%.base", "=", "base");
}
ExecuteScript("defense.infantry", "personality.gbcommando.defense.infantry")
{
Op("%.base", "=", "base");
}
ExecuteScript("defense.vehicles", "personality.gbcommando.defense.vehicles")
{
Op("%.base", "=", "base");
}
}
Code: Select all
///////////////////////////////////////////////////////////////////////////////
//
// Pandemic Studios
//
// AI Personality Configuration (Bases)
//
Strategic()
{
CreateBase("personality.gbcommando.army")
{
InitialState("initial");
State("initial")
{
Orderers()
{
// now, get some rudimentary base defense and upgrade
Add("personality.gbcommando.defense.infantry", 1, 10, 0);
Add("personality.gbcommando.offense.infantry", 1, 30, 0);
// start cranking out some defensive vehicles and a barracks upgrade
Add("personality.gbcommando.defense.vehicles", 1, 40, 0);
// Now that we've got a barracks2, lets crank out an attack force
Add("personality.gbcommando.offense.advinfantry", 1, 50, 0);
// and the final touches...
Add("personality.gbcommando.baserepair", 1, 100, 0);
}
}
// here until I figure out what to do with them.
// should provide base defense
//State("underattack")
//{
//Orderers()
//{
// Defense
//Add("personality.gbcommando.defense.infantry", 1, 110, 0);
//Add("personality.gbcommando.defense.vehicles", 1, 120, 0);
//}
//}
}
}
Code: Select all
///////////////////////////////////////////////////////////////////////////////
//
// Pandemic Studios
//
// AI Personality Configuration (Orderers)
//
Strategic()
{
// Offense infantry
CreateBase::Orderer("personality.gbcommando.offense.infantry")
{
Manifest("OrdererLevel")
{
Script("offense.land");
Types()
{
Add("army.unit.machinegunner", 5);
Add("army.unit.bazooka", 4);
Add("army.unit.sniper", 1);
}
CanBuild(1);
Random(1);
//NoBeyondWeighting(1);
}
}
// Offense infantry
CreateBase::Orderer("personality.gbcommando.offense.advinfantry")
{
Manifest("OrdererLevel")
{
Script("offense.advland");
Types()
{
Add("army.unit.machinegunner", 6);
Add("army.unit.sniper", 2);
Add("army.unit.mortar", 3);
Add("army.unit.bazooka", 5);
}
CanBuild(1);
Random(1);
//NoBeyondWeighting(1);
}
}
// Defense infantry
CreateBase::Orderer("personality.gbcommando.defense.infantry")
{
Manifest("Level")
{
Script("defense.infantry");
Types()
{
Add("army.unit.machinegunner", 3);
Add("army.unit.sniper", 1);
Add("army.unit.bazooka", 2);
}
CanBuild(1);
Random(1);
//NoBeyondWeighting(1);
}
}
// Defense vehicles
CreateBase::Orderer("personality.gbcommando.defense.vehicles")
{
Manifest("Level")
{
Script("defense.vehicles");
Types()
{
Add("army.unit.chopper",1);
Add("army.unit.tank",1);
}
CanBuild(1);
Random(1);
//NoBeyondWeighting(1);
}
}
// Base repair
CreateBase::Orderer("personality.gbcommando.baserepair")
{
Manifest("Level")
{
Types()
{
Add("army.unit.medicjeep");
}
CanBuild(1);
Random(1);
}
}
}
Code: Select all
///////////////////////////////////////////////////////////////////////////////
//
// Pandemic Studios
//
// AI Personality Configuration (Scripts)
//
Strategic()
{
// Land offense script
CreateScript("personality.gbcommando.offense.land")
{
InitialState("Start");
CreateVarFloat("%.danger", 0.2);
CreateVarInteger("%.cluster.target");
CreateVarString("%.base");
State("Start")
{
Conditions()
{
Condition("ObjectiveCondition")
{
Condition("Timer")
{
Time(180);
}
Transition()
{
GoToState("Wait");
}
}
}
}
State("Find")
{
Action("ApplyRule")
{
Rule("FindUndefendedCluster");
Var("%.cluster.target");
DangerRatio("%.danger");
}
Conditions()
{
Condition("Count")
{
Amount(9);
Operator("<=");
Transition()
{
GoToState("Wait");
}
}
Status("Completed")
{
GoToState("Move");
}
Status("Failed")
{
GoToState("Seek");
}
}
}
State("Seek")
{
Action("ApplyRule")
{
Rule("FindProtectBase");
ArmourClass("structure");
Var("%.cluster.target");
Base("%.base");
}
Conditions()
{
Condition("Count")
{
Amount(9);
Operator("<=");
Transition()
{
GoToState("Wait");
}
}
Status("Completed")
{
GoToState("Move");
}
Status("Failed")
{
GoToState("Find");
}
}
}
State("Move")
{
Action("Move")
{
Attack(1);
Location()
{
Base("VarCluster", "%.cluster.target");
}
}
Conditions()
{
Condition("Count")
{
Amount(0);
Operator("==");
Transition()
{
GoToState("Wait");
}
}
Condition("ObjectiveCondition")
{
Condition("Timer")
{
Time(30);
}
Transition()
{
GoToState("Find");
}
}
Status("Completed")
{
GoToState("Find");
}
}
}
State("Wait")
{
Conditions()
{
Condition("Count")
{
Amount(10);
Operator(">=");
Transition()
{
GoToState("Find");
}
}
}
}
}
/////////////////////////////////////////////////////////////////
// Adv Land
//
CreateScript("personality.gbcommando.offense.advland")
{
InitialState("Start");
CreateVarFloat("%.danger", 0.2);
CreateVarInteger("%.cluster.target");
CreateVarString("%.base");
State("Start")
{
Conditions()
{
Condition("ObjectiveCondition")
{
Condition("Timer")
{
Time(180);
}
Transition()
{
GoToState("Wait");
}
}
}
}
State("Find")
{
Action("ApplyRule")
{
Rule("FindUndefendedCluster");
Var("%.cluster.target");
DangerRatio("%.danger");
}
Conditions()
{
Condition("Count")
{
Amount(15);
Operator("<=");
Transition()
{
GoToState("Wait");
}
}
Status("Completed")
{
GoToState("Move");
}
Status("Failed")
{
GoToState("Seek");
}
}
}
State("Seek")
{
Action("ApplyRule")
{
Rule("FindProtectBase");
ArmourClass("structure");
Var("%.cluster.target");
Base("%.base");
}
Conditions()
{
Condition("Count")
{
Amount(15);
Operator("<=");
Transition()
{
GoToState("Wait");
}
}
Status("Completed")
{
GoToState("Move");
}
Status("Failed")
{
GoToState("Find");
}
}
}
State("Move")
{
Action("Move")
{
Attack(1);
Location()
{
Base("VarCluster", "%.cluster.target");
}
}
Conditions()
{
Condition("Count")
{
Amount(0);
Operator("==");
Transition()
{
GoToState("Wait");
}
}
Condition("ObjectiveCondition")
{
Condition("Timer")
{
Time(30);
}
Transition()
{
GoToState("Find");
}
}
Status("Completed")
{
GoToState("Find");
}
}
}
State("Wait")
{
Conditions()
{
Condition("Count")
{
Amount(16);
Operator(">=");
Transition()
{
GoToState("Find");
}
}
}
}
}
// Land defense script
CreateScript("personality.gbcommando.defense.infantry")
{
InitialState("Find");
CreateVarInteger("%.cluster");
CreateVarString("%.base");
State("Find")
{
Action("ApplyRule")
{
Rule("FindProtectBase");
ArmourClass("structure");
Var("%.cluster");
Base("%.base");
}
Conditions()
{
Condition("Count")
{
Amount(0);
Operator("==");
Transition()
{
GoToState("Wait");
}
}
Status("Completed")
{
GoToState("Move");
}
Status("Failed")
{
GoToState("Wait");
}
}
}
State("Move")
{
Action("Move")
{
Attack(1);
Location()
{
Base("VarCluster", "%.cluster");
}
}
Conditions()
{
Condition("ObjectiveCondition")
{
Condition("Timer")
{
Time(10);
}
Transition()
{
GoToState("Find");
}
}
}
}
State("Wait")
{
Conditions()
{
Condition("Count")
{
Amount(7);
Operator(">");
Transition()
{
GoToState("Find");
}
}
}
}
}
// Land defense script
CreateScript("personality.gbcommando.defense.vehicles")
{
InitialState("Find");
CreateVarInteger("%.cluster");
CreateVarString("%.base");
State("Find")
{
Action("ApplyRule")
{
Rule("FindProtectBase");
ArmourClass("structure");
Var("%.cluster");
Base("%.base");
}
Conditions()
{
Condition("Count")
{
Amount(0);
Operator("==");
Transition()
{
GoToState("Wait");
}
}
Status("Completed")
{
GoToState("Move");
}
Status("Failed")
{
GoToState("Wait");
}
}
}
State("Move")
{
Action("Move")
{
Attack(1);
Location()
{
Base("VarCluster", "%.cluster");
}
}
Conditions()
{
Condition("ObjectiveCondition")
{
Condition("Timer")
{
Time(10);
}
Transition()
{
GoToState("Find");
}
}
}
}
State("Wait")
{
Conditions()
{
Condition("Count")
{
Amount(3);
Operator(">");
Transition()
{
GoToState("Find");
}
}
}
}
}
}