FindCaptureReward = function(self, flag) local brainName = self.Brain.Name local captureReward = 0 --Mithy: Default capture reward weights local captureWeights = { ugbdefense02 = 0.5, ugbfort01 = 0.5, ugbresource01 = 0.5, # 0.27.04 changed value from 1.75 to 0.5 ugbportal01 = 0.5, # 0.27.04 changed value from 1.75 to 0.5 unbidol01 = 0.75, # 0.26.54 dropped to 0.75 from 1.5 ugbshop05 = 0.75, # 0.27.05 dropped to 0.75 from 1.25 unbflagcooldown01 = 0.75, # 0.27.05 dropped to 0.75 from 1.5 unbflagdamageamp01 = 0.75, # 0.27.05 dropped to 0.75 from 1.5 unbflaghealthregen01 = 0.75, unbflagmanaregen01 = 0.75, unbflagmaxhealth01 = 1.25, # 0.27.05 increased from 1.0 to 1.25 unbflagmaxmana01 = 1.25, # 0.27.05 increased from 1.0 to 1.25 unbflagexperience01 = 1.0, # 0.26.54 dropped to 1.0 from 1.75 ugbhealthstatue01 = 1.5, ugbartillery01 = 0.75, } --Mithy: Scenario-specific capture weight overrides local scenarioWeights = { none = {}, --Mandala map04 = {}, --Cataract map05 = { ugbresource01 = 0.75, unbflagmaxmana01 = 1.0, }, --Zikurat map07 = {}, --Leviathan map09 = {}, --Crucible map10 = {}, --The Brothers map11 = {}, --Exile map12 = {}, --Prison map13 = {}, } local scenName = import('/lua/common/commonutils.lua').GetScenarioName() or 'none' local scenWeights = scenarioWeights[scenName] or {} local currentWeights = table.merged(captureWeights, scenWeights) --Debug output - remove/block-comment once this works if not ScenarioWeightsDoOnce then ScenarioWeightsDoOnce = true LOG("\n*AI DEBUG: FindCaptureReward debug--\n Scenario name: "..scenName.."\n Scenario capture weight overrides:") for k, v in scenWeights do LOG("\t"..k.." = "..v.."\t(default = "..captureWeights[k]..")") end LOG("\n ") end if flag then local captureUnits = flag:GetCaptureList() for k, v in captureUnits do --Mithy: Significantly streamlined weight determination captureReward = math.max(captureReward, currentWeights[v] or 0) end if captureReward <= 0 then WARN( '*AI ERROR: No good reward found at flag - ' .. flag.UnitName ) captureReward = 0.5 end LOG('*AI DEBUG: Capture Reward for - ' .. flag.UnitName .. ' = ' .. captureReward) end self.CaptureReward = captureReward end,