Index: ps/trunk/binaries/data/mods/public/art/variants/biped/approach_rice.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/variants/biped/approach_rice.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/variants/biped/approach_rice.xml (nonexistent)
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Property changes on: ps/trunk/binaries/data/mods/public/art/variants/biped/approach_rice.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/art/variants/capes/approach_rice.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/variants/capes/approach_rice.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/variants/capes/approach_rice.xml (nonexistent)
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
Property changes on: ps/trunk/binaries/data/mods/public/art/variants/capes/approach_rice.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_archer_a.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_archer_a.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_archer_a.xml (revision 27144)
@@ -1,75 +1,74 @@
skeletal/new/m_tunic_long.dae
-
player_trans_spec.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_archer_b.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_archer_b.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_archer_b.xml (revision 27144)
@@ -1,69 +1,68 @@
skeletal/new/m_tunic_short.dae
-
player_trans.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_archer_e.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_archer_e.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_archer_e.xml (revision 27144)
@@ -1,71 +1,70 @@
skeletal/new/m_armor_tunic_long.dae
-
player_trans_spec.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_crossbowman_a.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_crossbowman_a.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_crossbowman_a.xml (revision 27144)
@@ -1,70 +1,69 @@
skeletal/new/m_tunic_long.dae
-
player_trans_spec.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_crossbowman_b.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_crossbowman_b.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_crossbowman_b.xml (revision 27144)
@@ -1,68 +1,67 @@
skeletal/new/m_armor_tunic_short.dae
-
player_trans.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_crossbowman_e.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_crossbowman_e.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_crossbowman_e.xml (revision 27144)
@@ -1,71 +1,70 @@
skeletal/new/m_armor_tunic_long.dae
-
player_trans_spec.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_halberdman_a.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_halberdman_a.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_halberdman_a.xml (revision 27144)
@@ -1,77 +1,76 @@
skeletal/new/m_pants_tunic_long.dae
-
player_trans_spec.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_halberdman_b.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_halberdman_b.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_halberdman_b.xml (revision 27144)
@@ -1,74 +1,73 @@
skeletal/new/m_pants_tunic_long.dae
-
player_trans.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_halberdman_e.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_halberdman_e.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_halberdman_e.xml (revision 27144)
@@ -1,77 +1,76 @@
skeletal/new/m_armor_pants_tunic_long.dae
-
player_trans_spec.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_spearman_a.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_spearman_a.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_spearman_a.xml (revision 27144)
@@ -1,73 +1,72 @@
skeletal/new/m_pants_tunic_long.dae
-
player_trans_spec.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_spearman_b.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_spearman_b.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_spearman_b.xml (revision 27144)
@@ -1,73 +1,72 @@
skeletal/new/m_tunic_long.dae
-
player_trans.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_spearman_e.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_spearman_e.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_spearman_e.xml (revision 27144)
@@ -1,72 +1,71 @@
skeletal/new/m_armor_tunic_long.dae
-
player_trans_spec.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_swordsman_a.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_swordsman_a.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_swordsman_a.xml (revision 27144)
@@ -1,71 +1,70 @@
skeletal/new/m_tunic_long.dae
-
player_trans_spec.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_swordsman_b.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_swordsman_b.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_swordsman_b.xml (revision 27144)
@@ -1,68 +1,67 @@
skeletal/new/m_tunic_long.dae
-
player_trans.xml
Index: ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_swordsman_e.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_swordsman_e.xml (revision 27143)
+++ ps/trunk/binaries/data/mods/public/art/actors/units/han/infantry_swordsman_e.xml (revision 27144)
@@ -1,70 +1,69 @@
skeletal/new/m_armor_pants_tunic_long.dae
-
player_trans_spec.xml
Index: ps/trunk/binaries/data/mods/public/simulation/ai/petra/researchManager.js
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/ai/petra/researchManager.js (revision 27143)
+++ ps/trunk/binaries/data/mods/public/simulation/ai/petra/researchManager.js (revision 27144)
@@ -1,242 +1,242 @@
/**
* Manage the research
*/
PETRA.ResearchManager = function(Config)
{
this.Config = Config;
};
/**
* Check if we can go to the next phase
*/
PETRA.ResearchManager.prototype.checkPhase = function(gameState, queues)
{
if (queues.majorTech.hasQueuedUnits())
return;
// Don't try to phase up if already trying to gather resources for a civil-centre or wonder
if (queues.civilCentre.hasQueuedUnits() || queues.wonder.hasQueuedUnits())
return;
let currentPhaseIndex = gameState.currentPhase();
let nextPhaseName = gameState.getPhaseName(currentPhaseIndex+1);
if (!nextPhaseName)
return;
let petraRequirements =
currentPhaseIndex == 1 && gameState.ai.HQ.getAccountedPopulation(gameState) >= this.Config.Economy.popPhase2 ||
currentPhaseIndex == 2 && gameState.ai.HQ.getAccountedWorkers(gameState) > this.Config.Economy.workPhase3 ||
currentPhaseIndex >= 3 && gameState.ai.HQ.getAccountedWorkers(gameState) > this.Config.Economy.workPhase4;
if (petraRequirements && gameState.hasResearchers(nextPhaseName, true))
{
gameState.ai.HQ.phasing = currentPhaseIndex + 1;
// Reset the queue priority in case it was changed during a previous phase update
gameState.ai.queueManager.changePriority("majorTech", gameState.ai.Config.priorities.majorTech);
queues.majorTech.addPlan(new PETRA.ResearchPlan(gameState, nextPhaseName, true));
}
};
PETRA.ResearchManager.prototype.researchPopulationBonus = function(gameState, queues)
{
if (queues.minorTech.hasQueuedUnits())
return;
let techs = gameState.findAvailableTech();
for (let tech of techs)
{
if (!tech[1]._template.modifications)
continue;
// TODO may-be loop on all modifs and check if the effect if positive ?
if (tech[1]._template.modifications[0].value !== "Population/Bonus")
continue;
queues.minorTech.addPlan(new PETRA.ResearchPlan(gameState, tech[0]));
break;
}
};
PETRA.ResearchManager.prototype.researchTradeBonus = function(gameState, queues)
{
if (queues.minorTech.hasQueuedUnits())
return;
let techs = gameState.findAvailableTech();
for (let tech of techs)
{
if (!tech[1]._template.modifications || !tech[1]._template.affects)
continue;
if (tech[1]._template.affects.indexOf("Trader") === -1)
continue;
// TODO may-be loop on all modifs and check if the effect if positive ?
if (tech[1]._template.modifications[0].value !== "UnitMotion/WalkSpeed" &&
tech[1]._template.modifications[0].value !== "Trader/GainMultiplier")
continue;
queues.minorTech.addPlan(new PETRA.ResearchPlan(gameState, tech[0]));
break;
}
};
/** Techs to be searched for as soon as they are available */
PETRA.ResearchManager.prototype.researchWantedTechs = function(gameState, techs)
{
let phase1 = gameState.currentPhase() === 1;
let available = phase1 ? gameState.ai.queueManager.getAvailableResources(gameState) : null;
const numWorkers = phase1 ? gameState.getOwnEntitiesByRole(PETRA.Worker.ROLE_WORKER, true).length : 0;
for (let tech of techs)
{
if (tech[0].indexOf("unlock_champion") == 0)
return { "name": tech[0], "increasePriority": true };
if (tech[0] == "traditional_army_sele" || tech[0] == "reformed_army_sele")
return { "name": pickRandom(["traditional_army_sele", "reformed_army_sele"]), "increasePriority": true };
if (!tech[1]._template.modifications)
continue;
let template = tech[1]._template;
if (phase1)
{
let cost = template.cost;
let costMax = 0;
for (let res in cost)
costMax = Math.max(costMax, Math.max(cost[res]-available[res], 0));
if (10*numWorkers < costMax)
continue;
}
for (let i in template.modifications)
{
if (gameState.ai.HQ.navalMap && template.modifications[i].value === "ResourceGatherer/Rates/food.fish")
return { "name": tech[0], "increasePriority": this.CostSum(template.cost) < 400 };
else if (template.modifications[i].value === "ResourceGatherer/Rates/food.fruit")
return { "name": tech[0], "increasePriority": this.CostSum(template.cost) < 400 };
- else if (template.modifications[i].value === "ResourceGatherer/Rates/food.grain" || template.modifications[i].value === "ResourceGatherer/Rates/food.rice")
+ else if (template.modifications[i].value === "ResourceGatherer/Rates/food.grain")
return { "name": tech[0], "increasePriority": false };
else if (template.modifications[i].value === "ResourceGatherer/Rates/wood.tree")
return { "name": tech[0], "increasePriority": this.CostSum(template.cost) < 400 };
else if (template.modifications[i].value.startsWith("ResourceGatherer/Capacities"))
return { "name": tech[0], "increasePriority": false };
else if (template.modifications[i].value === "Attack/Ranged/MaxRange")
return { "name": tech[0], "increasePriority": false };
}
}
return null;
};
/** Techs to be searched for as soon as they are available, but only after phase 2 */
PETRA.ResearchManager.prototype.researchPreferredTechs = function(gameState, techs)
{
let phase2 = gameState.currentPhase() === 2;
let available = phase2 ? gameState.ai.queueManager.getAvailableResources(gameState) : null;
const numWorkers = phase2 ? gameState.getOwnEntitiesByRole(PETRA.Worker.ROLE_WORKER, true).length : 0;
for (let tech of techs)
{
if (!tech[1]._template.modifications)
continue;
let template = tech[1]._template;
if (phase2)
{
let cost = template.cost;
let costMax = 0;
for (let res in cost)
costMax = Math.max(costMax, Math.max(cost[res]-available[res], 0));
if (10*numWorkers < costMax)
continue;
}
for (let i in template.modifications)
{
if (template.modifications[i].value === "ResourceGatherer/Rates/stone.rock")
return { "name": tech[0], "increasePriority": this.CostSum(template.cost) < 400 };
else if (template.modifications[i].value === "ResourceGatherer/Rates/metal.ore")
return { "name": tech[0], "increasePriority": this.CostSum(template.cost) < 400 };
else if (template.modifications[i].value === "BuildingAI/DefaultArrowCount")
return { "name": tech[0], "increasePriority": this.CostSum(template.cost) < 400 };
else if (template.modifications[i].value === "Health/RegenRate")
return { "name": tech[0], "increasePriority": false };
else if (template.modifications[i].value === "Health/IdleRegenRate")
return { "name": tech[0], "increasePriority": false };
}
}
return null;
};
PETRA.ResearchManager.prototype.update = function(gameState, queues)
{
if (queues.minorTech.hasQueuedUnits() || queues.majorTech.hasQueuedUnits())
return;
let techs = gameState.findAvailableTech();
let techName = this.researchWantedTechs(gameState, techs);
if (techName)
{
if (techName.increasePriority)
{
gameState.ai.queueManager.changePriority("minorTech", 2*this.Config.priorities.minorTech);
let plan = new PETRA.ResearchPlan(gameState, techName.name);
plan.queueToReset = "minorTech";
queues.minorTech.addPlan(plan);
}
else
queues.minorTech.addPlan(new PETRA.ResearchPlan(gameState, techName.name));
return;
}
if (gameState.currentPhase() < 2)
return;
techName = this.researchPreferredTechs(gameState, techs);
if (techName)
{
if (techName.increasePriority)
{
gameState.ai.queueManager.changePriority("minorTech", 2*this.Config.priorities.minorTech);
let plan = new PETRA.ResearchPlan(gameState, techName.name);
plan.queueToReset = "minorTech";
queues.minorTech.addPlan(plan);
}
else
queues.minorTech.addPlan(new PETRA.ResearchPlan(gameState, techName.name));
return;
}
if (gameState.currentPhase() < 3)
return;
// remove some techs not yet used by this AI
// remove also sharedLos if we have no ally
for (let i = 0; i < techs.length; ++i)
{
let template = techs[i][1]._template;
if (template.affects && template.affects.length === 1 &&
(template.affects[0] === "Healer" || template.affects[0] === "Outpost" || template.affects[0] === "Wall"))
{
techs.splice(i--, 1);
continue;
}
if (template.modifications && template.modifications.length === 1 &&
this.Config.unusedNoAllyTechs.includes(template.modifications[0].value) &&
!gameState.hasAllies())
{
techs.splice(i--, 1);
continue;
}
}
if (!techs.length)
return;
// randomly pick one. No worries about pairs in that case.
queues.minorTech.addPlan(new PETRA.ResearchPlan(gameState, pickRandom(techs)[0]));
};
PETRA.ResearchManager.prototype.CostSum = function(cost)
{
let costSum = 0;
for (let res in cost)
costSum += cost[res];
return costSum;
};
PETRA.ResearchManager.prototype.Serialize = function()
{
return {};
};
PETRA.ResearchManager.prototype.Deserialize = function(data)
{
};
Index: ps/trunk/binaries/data/mods/public/simulation/data/technologies/gather_farming_chain_pump.json
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/data/technologies/gather_farming_chain_pump.json (revision 27143)
+++ ps/trunk/binaries/data/mods/public/simulation/data/technologies/gather_farming_chain_pump.json (revision 27144)
@@ -1,24 +1,24 @@
{
"genericName": "Chain Pump",
"description": "Install a chain pump for improved irrigation.",
"cost": {
"wood": 400,
"metal": 300
},
"supersedes": "gather_farming_water_weeding",
"requirements": {
"all": [
{ "tech": "phase_city" },
{ "civ": "han" }
]
},
"requirementsTooltip": "Unlocked in City Phase.",
"icon": "flood_control.png",
"researchTime": 70,
- "tooltip": "Workers +20% rice gather rate.",
+ "tooltip": "Workers +20% grain gather rate.",
"modifications": [
- { "value": "ResourceGatherer/Rates/food.rice", "multiply": 1.2 }
+ { "value": "ResourceGatherer/Rates/food.grain", "multiply": 1.2 }
],
"affects": ["Worker"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
}
Index: ps/trunk/binaries/data/mods/public/simulation/data/technologies/gather_farming_seed_drill.json
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/data/technologies/gather_farming_seed_drill.json (revision 27143)
+++ ps/trunk/binaries/data/mods/public/simulation/data/technologies/gather_farming_seed_drill.json (revision 27144)
@@ -1,23 +1,23 @@
{
"genericName": "Seed Drill",
"description": "Equip your workers with seed drills.",
"cost": {
"wood": 200,
"metal": 100
},
"requirements": {
"all": [
{ "tech": "phase_village" },
{ "civ": "han" }
]
},
"requirementsTooltip": "Unlocked in Village Phase.",
"icon": "torsion_springs.png",
"researchTime": 50,
- "tooltip": "Workers +20% rice gather rate.",
+ "tooltip": "Workers +20% grain gather rate.",
"modifications": [
- { "value": "ResourceGatherer/Rates/food.rice", "multiply": 1.2 }
+ { "value": "ResourceGatherer/Rates/food.grain", "multiply": 1.2 }
],
"affects": ["Worker"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
}
Index: ps/trunk/binaries/data/mods/public/simulation/data/technologies/gather_farming_water_weeding.json
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/data/technologies/gather_farming_water_weeding.json (revision 27143)
+++ ps/trunk/binaries/data/mods/public/simulation/data/technologies/gather_farming_water_weeding.json (revision 27144)
@@ -1,24 +1,24 @@
{
"genericName": "Water Weeding",
"description": "Remove water weeds to preserve nutrients for the rice plants.",
"cost": {
"wood": 300,
"metal": 200
},
"supersedes": "gather_farming_seed_drill",
"requirements": {
"all": [
{ "tech": "phase_town" },
{ "civ": "han" }
]
},
"requirementsTooltip": "Unlocked in Town Phase.",
"icon": "irrigation.png",
"researchTime": 60,
- "tooltip": "Workers +20% rice gather rate.",
+ "tooltip": "Workers +20% grain gather rate.",
"modifications": [
{ "value": "ResourceGatherer/Rates/food.grain", "multiply": 1.2 }
],
"affects": ["Worker"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
}