Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/simulation/ai/petra/headquarters.js
Show First 20 Lines • Show All 335 Lines • ▼ Show 20 Lines | if (ent.hasClass("Unit")) | ||||
} | } | ||||
if (ent.hasClass("Worker")) | if (ent.hasClass("Worker")) | ||||
{ | { | ||||
ent.setMetadata(PlayerID, "role", "worker"); | ent.setMetadata(PlayerID, "role", "worker"); | ||||
ent.setMetadata(PlayerID, "subrole", "idle"); | ent.setMetadata(PlayerID, "subrole", "idle"); | ||||
} | } | ||||
if (ent.hasClass("Ship")) | if (ent.hasClass("Ship")) | ||||
m.setSeaAccess(gameState, ent); | m.setSeaAccess(gameState, ent); | ||||
if (!ent.hasClass("Support") && !ent.hasClass("Ship") && ent.attackTypes() !== undefined) | if (MatchesClassList(ent.classes(), ["!Support+!Ship"]) && ent.attackTypes() !== undefined) | ||||
ent.setMetadata(PlayerID, "plan", -1); | ent.setMetadata(PlayerID, "plan", -1); | ||||
continue; | continue; | ||||
} | } | ||||
if (ent.hasClass("CivCentre")) // build a new base around it | if (ent.hasClass("CivCentre")) // build a new base around it | ||||
{ | { | ||||
let newbase; | let newbase; | ||||
if (ent.foundationProgress() !== undefined) | if (ent.foundationProgress() !== undefined) | ||||
newbase = this.createBase(gameState, ent, "unconstructed"); | newbase = this.createBase(gameState, ent, "unconstructed"); | ||||
▲ Show 20 Lines • Show All 385 Lines • ▼ Show 20 Lines | if (classes.indexOf("Hero") != -1) | ||||
units = gameState.findTrainableUnits(classes, []); | units = gameState.findTrainableUnits(classes, []); | ||||
else if (classes.indexOf("Siege") != -1) // We do not want siege tower as AI does not know how to use it | else if (classes.indexOf("Siege") != -1) // We do not want siege tower as AI does not know how to use it | ||||
units = gameState.findTrainableUnits(classes, ["SiegeTower"]); | units = gameState.findTrainableUnits(classes, ["SiegeTower"]); | ||||
else // We do not want hero when not explicitely specified | else // We do not want hero when not explicitely specified | ||||
units = gameState.findTrainableUnits(classes, ["Hero"]); | units = gameState.findTrainableUnits(classes, ["Hero"]); | ||||
if (!units.length) | if (!units.length) | ||||
return undefined; | return undefined; | ||||
Silier: but this makes it OR what is not what we want here | |||||
Done Inline ActionsHmm, true, so I guess we do need the avoid classes. Freagarach: Hmm, true, so I guess we do need the avoid classes. | |||||
let parameters = requirements.slice(); | let parameters = requirements.slice(); | ||||
let remainingResources = this.getTotalResourceLevel(gameState); // resources (estimation) still gatherable in our territory | let remainingResources = this.getTotalResourceLevel(gameState); // resources (estimation) still gatherable in our territory | ||||
let availableResources = gameState.ai.queueManager.getAvailableResources(gameState); // available (gathered) resources | let availableResources = gameState.ai.queueManager.getAvailableResources(gameState); // available (gathered) resources | ||||
for (let type in remainingResources) | for (let type in remainingResources) | ||||
{ | { | ||||
if (availableResources[type] > 800) | if (availableResources[type] > 800) | ||||
continue; | continue; | ||||
if (remainingResources[type] > 800) | if (remainingResources[type] > 800) | ||||
▲ Show 20 Lines • Show All 1,369 Lines • ▼ Show 20 Lines | m.HQ.prototype.trainEmergencyUnits = function(gameState, positions) | ||||
let templateFound; | let templateFound; | ||||
let trainables = nearestAnchor.trainableEntities(civ); | let trainables = nearestAnchor.trainableEntities(civ); | ||||
let garrisonArrowClasses = nearestAnchor.getGarrisonArrowClasses(); | let garrisonArrowClasses = nearestAnchor.getGarrisonArrowClasses(); | ||||
for (let trainable of trainables) | for (let trainable of trainables) | ||||
{ | { | ||||
if (gameState.isTemplateDisabled(trainable)) | if (gameState.isTemplateDisabled(trainable)) | ||||
continue; | continue; | ||||
let template = gameState.getTemplate(trainable); | let template = gameState.getTemplate(trainable); | ||||
if (!template || !template.hasClass("Infantry") || !template.hasClass("CitizenSoldier")) | if (!template || !MatchesClassList(template.classes(), ["Infantry+CitizenSoldier"])) | ||||
Done Inline Actionswrong, you want to negate classes not result Silier: wrong, you want to negate classes not result | |||||
Done Inline ActionsNo? If it doesn't have both of the classes Infantry and CS, we want to continue? Freagarach: No? If it doesn't have both of the classes Infantry and CS, we want to continue? | |||||
Done Inline Actionsdoesnt count, you changed line in the process :P Silier: doesnt count, you changed line in the process :P | |||||
Done Inline Actions^^ Freagarach: ^^ | |||||
continue; | continue; | ||||
if (autogarrison && !MatchesClassList(template.classes(), garrisonArrowClasses)) | if (autogarrison && !MatchesClassList(template.classes(), garrisonArrowClasses)) | ||||
continue; | continue; | ||||
if (!total.canAfford(new API3.Resources(template.cost()))) | if (!total.canAfford(new API3.Resources(template.cost()))) | ||||
continue; | continue; | ||||
templateFound = [trainable, template]; | templateFound = [trainable, template]; | ||||
if (template.hasClass("Ranged") == rangedWanted) | if (template.hasClass("Ranged") == rangedWanted) | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 756 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator
but this makes it OR what is not what we want here