chaosbuildbasestrategy.ai
--Thudmeizer: Added to force Chaos to build Generators which he seems relunctant to do so! function ChaosBuildBaseStrategy:DoBuildGenerators() if resource_manager:GetResourceAmount():Get( ResourceAmount.RT_Requisition ) > 350 and resource_manager:GetNumOwnedPowerGenerators() < 6 then local build_type = CpuBuildType() build_type.btype = CpuPrerequisites.BT_Building build_type.name = self.generator_name self:TryBuild( build_type ) end end
Default is this in buildbasestrategy.ai
function BuildBaseStrategy:DoBuildGenerators() --aitrace("num strategic pts owned: "..tostring(resource_manager:GetNumOwnedStrategicPoints())) local min_power = self.info.min_power if self:IsInSecondTier() then min_power = self.info.min_power*2 elseif resource_manager:GetResourceAmount():Get( ResourceAmount.RT_Requisition ) < 500 then --only build one in tier one --return end if resource_manager:GetResourceAmount():Get( ResourceAmount.RT_Power ) < min_power then if resource_manager:GetNumOwnedPowerGenerators() < 6 then dbAssert(self.generator_name ~= nil) local build_type = CpuBuildType() build_type.btype = CpuPrerequisites.BT_Building build_type.name = self.generator_name self:TryBuild( build_type ) else aitrace("trying to build bigger generator") --try to build a bigger generator dbAssert( self.bigger_generator_id ~= nil ) if not self:PlanExists( "Build Building Plan", self.bigger_generator_id ) then --update where the free slag heaps are resource_manager:UpdateFreeSlagHeaps( self.bigger_generator_id ) --look for the closest generator local base_pos = cpu_manager.cpu_player:GetStartingPosition() local prev_distance = 0 local chosen_slag_heap = nil for slag_heap in resource_manager:GetSlagHeaps() do if chosen_slag_heap == nil then chosen_slag_heap = slag_heap prev_distance = distance_sqr( slag_heap:GetPosition(), base_pos ) else local cur_distance = distance_sqr( slag_heap:GetPosition(), base_pos ) if cur_distance < prev_distance then chosen_slag_heap = slag_heap prev_distance = cur_distance end end end --add the plan to build it if it isn't any where near danger if chosen_slag_heap ~= nil and not cpu_manager.terrain_analyzer:HasThreat( chosen_slag_heap:GetPosition(), 50 ) then self:AddPlan( BuildBuildingPlan( self.bigger_generator_id, chosen_slag_heap:GetPosition() ) ) else aitrace("no bigger generators to find") end end end end end
Problem 1 : Chaos won't build big generators
Problem 2 : Standard requirement is that power is < 100 (min_power for hard AI) but now req must be > 350. This is bad IMO and harder to achieve so it will build even less generators. Better idea is to use default function and increase self.info.min_power for chaos in advanced/buildbasestrategyinfo.ai.
Please be carefull in your changes Thudo and document them more clearly so I can have a look and evaluate them.