Differential D4193 Diff 18326 ps/trunk/binaries/data/mods/public/simulation/ai/petra/headquarters.js
Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/binaries/data/mods/public/simulation/ai/petra/headquarters.js
Show First 20 Lines • Show All 608 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
}; | }; | ||||
/** This code trains citizen workers, trying to keep close to a ratio of worker/soldiers */ | /** This code trains citizen workers, trying to keep close to a ratio of worker/soldiers */ | ||||
PETRA.HQ.prototype.trainMoreWorkers = function(gameState, queues) | PETRA.HQ.prototype.trainMoreWorkers = function(gameState, queues) | ||||
{ | { | ||||
// default template | // default template | ||||
let requirementsDef = [ ["costsResource", 1, "food"] ]; | let requirementsDef = [ ["costsResource", 1, "food"] ]; | ||||
let classesDef = ["Support", "Worker"]; | const classesDef = ["Support+Worker"]; | ||||
let templateDef = this.findBestTrainableUnit(gameState, classesDef, requirementsDef); | let templateDef = this.findBestTrainableUnit(gameState, classesDef, requirementsDef); | ||||
// counting the workers that aren't part of a plan | // counting the workers that aren't part of a plan | ||||
let numberOfWorkers = 0; // all workers | let numberOfWorkers = 0; // all workers | ||||
let numberOfSupports = 0; // only support workers (i.e. non fighting) | let numberOfSupports = 0; // only support workers (i.e. non fighting) | ||||
gameState.getOwnUnits().forEach(ent => { | gameState.getOwnUnits().forEach(ent => { | ||||
if (ent.getMetadata(PlayerID, "role") == "worker" && ent.getMetadata(PlayerID, "plan") === undefined) | if (ent.getMetadata(PlayerID, "role") == "worker" && ent.getMetadata(PlayerID, "plan") === undefined) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | PETRA.HQ.prototype.trainMoreWorkers = function(gameState, queues) | ||||
if (!templateDef || numberOfSupports + numberOfQueuedSupports > supportNum) | if (!templateDef || numberOfSupports + numberOfQueuedSupports > supportNum) | ||||
{ | { | ||||
let requirements; | let requirements; | ||||
if (numberTotal < 45) | if (numberTotal < 45) | ||||
requirements = [ ["speed", 0.5], ["costsResource", 0.5, "stone"], ["costsResource", 0.5, "metal"] ]; | requirements = [ ["speed", 0.5], ["costsResource", 0.5, "stone"], ["costsResource", 0.5, "metal"] ]; | ||||
else | else | ||||
requirements = [ ["strength", 1] ]; | requirements = [ ["strength", 1] ]; | ||||
let classes = ["CitizenSoldier", "Infantry"]; | const classes = [["CitizenSoldier", "Infantry"]]; | ||||
// We want at least 33% ranged and 33% melee | // We want at least 33% ranged and 33% melee. | ||||
classes.push(pickRandom(["Ranged", "Melee", "Infantry"])); | classes[0].push(pickRandom(["Ranged", "Melee", "Infantry"])); | ||||
template = this.findBestTrainableUnit(gameState, classes, requirements); | template = this.findBestTrainableUnit(gameState, classes, requirements); | ||||
} | } | ||||
// If the template variable is empty, the default unit (Support unit) will be used | // If the template variable is empty, the default unit (Support unit) will be used | ||||
// base "0" means automatic choice of base | // base "0" means automatic choice of base | ||||
if (!template && templateDef) | if (!template && templateDef) | ||||
queues.villager.addPlan(new PETRA.TrainingPlan(gameState, templateDef, { "role": "worker", "base": 0, "support": true }, size, size)); | queues.villager.addPlan(new PETRA.TrainingPlan(gameState, templateDef, { "role": "worker", "base": 0, "support": true }, size, size)); | ||||
▲ Show 20 Lines • Show All 2,179 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator