I tried playing around with the AI API3 and set up my own entity template. Thereby I noticed an interesting behavior of the API3.Template.cost() function. I extracted a demonstrator for it: If you execute the following snippet
(function (){
var rawTemplate = {
"Cost" : {
"Resources" : {
"food" : 1,
//"wood" : 2,
"stone" : 0,
"metal" : 4
}
}
};
var fakeSharedAI = {
"_templatesModifications" : {}
};
var testee = new API3.Template(
fakeSharedAI,
"someTemplate",
rawTemplate);
warn("Costs are " + uneval(testee.cost()));
})();
in the content of an AI script (e.g. inject it into petras start-up sequence), the 0AD log receives the following entry:
Note the NaN in the second property. So it seems template instantiation accepts skipped resource definitions gracefully, but I do not understand the behavior on "stone":0. Am I doing something wrong? I imagined something like "{food:1, stone:0, metal:4}" to build up.