---------------------------------------- -- File: 'ai/strategies/marinebuildbasestrategy.ai' -- Edited by Thudmeizer @ 01.01.2005 -- Edited by Corsix @ 15.01.2005Changed/added functions:
function MarineBuildBaseStrategy:__init( baseinfo ) super( baseinfo ) --self.armoury_id = cpu_manager.stats:GetBuildingID( "space_marine_armoury" ) --self.armoury_name = "space_marine_armoury" self.generator_name = "space_marine_generator" self.bigger_generator_id = cpu_manager.stats:GetBuildingID( "space_marine_thermo_generator" ) self.vehicle_building_id = cpu_manager.stats:GetBuildingID( "space_marine_vehicle_building" ) self.vehicle_building_name = "space_marine_vehicle_building" self.barracks_id = cpu_manager.stats:GetBuildingID( "space_marine_barracks" ) self.barracks_name = "space_marine_barracks" self.post_addon_id = cpu_manager.stats:GetAddOnID( "space_marine_list_post_addon_1" ) self.post_addon_2_id = cpu_manager.stats:GetAddOnID( "space_marine_list_post_addon_2" ) self.turret_id = cpu_manager.stats:GetBuildingID( "space_marine_turret_bolter" ) self.turret_name = "space_marine_turret_bolter" self.turret_addon_2_id = cpu_manager.stats:GetAddOnID( "space_marine_turret_addon" ) self.hq_addon_1_id = cpu_manager.stats:GetAddOnID( "space_marine_hq_addon_1" ) self.hq_addon_2_id = cpu_manager.stats:GetAddOnID( "space_marine_hq_addon_2" ) self.max_weapons_research_name = "marine_max_weapons_research" self.max_weapons_research_id = cpu_manager.stats:GetResearchID( self.max_weapons_research_name ) --Corsix Added self.post_id = cpu_manager.stats:GetBuildingID( "space_marine_listening_post" ) self.percent_turr_upgraded = math.random(55,75) self.percent_post_upgraded = math.random(55,75) self.upgraded_posts = {} self.upgraded_turrets = {} --End end function MarineBuildBaseStrategy:DoUpgradesAndAddons() if cpu_manager.cpu_player:IsResearchComplete( "squad_cap_research" ) then local id = self.post_addon_id if( self:PlanExists("Build AddOn Plan", id) == false ) then self.AddPlan( self, BuildAddOnPlan( id ) ) end if not cpu_manager.cpu_player:IsResearchComplete( self.max_weapons_research_name ) then local id = self.max_weapons_research_id if( self:PlanExists("Build Research Plan", id) == false ) then self.AddPlan( self, BuildResearchPlan( id ) ) --don't build other research items return true end end if self:IsInSecondTier() then --Corsix Added local num_turr = 0 local num_up_turr = 0 local num_post = 0 local num_up_post = 0 for build_channel in build_manager:GetBuildChannelAIs() do if build_channel:GetBlueprintID() == self.turret_id then num_turr = num_turr + 1 for tabitr = 1, table.getn(self.upgraded_turrets) do if self.upgraded_turrets[tabitr] == build_channel:GetID() then num_up_turr = num_up_turr + 1 end end end if build_channel:GetBlueprintID() == self.post_id then num_post = num_post + 1 for tabitr = 1, table.getn(self.upgraded_posts) do if self.upgraded_posts[tabitr] == build_channel:GetID() then num_up_post = num_up_post + 1 end end end end --End --Corsix Modded local id_2 = self.post_addon_2_id -- Added these two lines local before = math.abs(self.percent_post_upgraded - (num_up_post/num_post*100)) local after = math.abs(self.percent_post_upgraded - ((num_up_post+1)/num_post*100)) --Added "and"... + changed plan type if( self:PlanExists("Build NotifiedAddOn Plan", id_2) == false ) and after <= before then self.AddPlan( self, BuildNotifiedAddOnPlan( id_2 , 0) ) end local id_2 = self.turret_addon_2_id -- Added these two lines local before = math.abs(self.percent_turr_upgraded - (num_up_turr/num_turr*100)) local after = math.abs(self.percent_turr_upgraded - ((num_up_turr+1)/num_turr*100)) --Added "and"... + changed plan type if( self:PlanExists("Build NotifiedAddOn Plan", id_2) == false ) and after <= before then self.AddPlan( self, BuildNotifiedAddOnPlan( id_2 , 1) ) end --End end end BuildBaseStrategy.DoUpgradesAndAddons( self ) end --Corsix Added function MarineBuildBaseStrategy:AddOnNotify( addon_id, notify_code , build_channel) if addon_id == self.post_addon_2_id then self.upgraded_posts[table.getn(self.upgraded_posts)+1] = build_channel:GetID() return end if addon_id == self.turret_addon_2_id then self.upgraded_turrets[table.getn(self.upgraded_turrets)+1] = build_channel:GetID() end end --End
---------------------------------------- -- File: 'ai/strategies/buildbasestrategy.ai' -- Edited by Thudmeizer @ 01.01.2005 -- Edited by Corsix @ 17.01.2005Added function:
--Corsix Added function BuildBaseStrategy:AddOnNotify( addon_id, notify_code , build_channel) aitrace("this race does not have an addon notify!") end --End
---------------------------------------- -- File: ai/plans/'buildnotifiedaddonplan.ai' -- Created by Corsix @ 17.01.2005Has this code:
import ("Plans/BuildPlan.ai") class 'BuildNotifiedAddOnPlan' (BuildPlan) function BuildNotifiedAddOnPlan:__init( addon_id , nofity_code ) super( CpuPlayer.CT_BuildAddOns ) BuildPlan.SetItemID( self, addon_id ) BuildPlan.SetItemName( self, cpu_manager.stats:GetAddOnName( addon_id ) ) Plan.SetNeeds( self, "Asking for builder", BuildNotifiedAddOnPlan.ObtainBuilder ) Plan.SetState( self, "Wanting to build: "..self.item_name, BuildNotifiedAddOnPlan.BuildAddOn ) Plan.SetName( self, "Build NotifiedAddOn Plan" ) self.notify = nofity_code end function BuildNotifiedAddOnPlan:ObtainBuilder() for build_channel in build_manager:GetUnlockedBuildChannelAIs() do --don't queue if( build_channel:IsBuilding() == 0 ) then --now build something! local item_index = build_channel:GetItemIndexFromID(BuildChannelAI.PQ_AddOn, self.item_id ) if( item_index ~= BuildChannelAI.INVALID_INDEX ) then if( build_channel:CanAddToQueue( BuildChannelAI.PQ_AddOn, self.item_id ) == BuildChannelAI.CANBUILD_Ok ) then --lock and save it! BuildPlan.SetBuilder( self, build_channel ) --no needs Plan.SetNeeds( self, "No needs", Plan.NeedsFulfilled ) return end end end end end function BuildNotifiedAddOnPlan:Retry() if( self.builder:CanAddToQueue( BuildChannelAI.PQ_AddOn, self.item_id ) == BuildChannelAI.CANBUILD_Ok ) then self.builder:BuildAddOn( self.item_id ) end end function BuildNotifiedAddOnPlan:BuildAddOn() if self.builder ~= nil then --build it! self.builder:BuildAddOn( self.item_id ) --change state Plan.SetState( self, "Building a "..self.item_name, BuildPlan.BuildingState ) cpu_manager.build_base_strategy:AddOnNotify(self.item_id,self.notify,self.builder) return end aitrace( "can't build "..self.item_name ) end
And finally...
---------------------------------------- -- File: ai/'cpu_manager.ai' -- Edited by Thudmeizer @ 01.01.2005 -- Edited by Corsix @ 16.01.2005Changed pre-functions:
--utility import( 'utility.ai' ) --unit statistics import( 'unitstats.ai' ) --strategies import( 'Strategies/strategy.ai' ) import( 'Strategies/BuildOrderStrategy.ai' ) import( 'Strategies/BuildBaseStrategy.ai' ) import( 'Strategies/MarineBuildBaseStrategy.ai' ) import( 'Strategies/ChaosBuildBaseStrategy.ai' ) import( 'Strategies/OrkBuildBaseStrategy.ai' ) import( 'Strategies/EldarBuildBaseStrategy.ai' ) import( 'Strategies/DesignerStrategy.ai' ) import( 'Strategies/AttackStrategy.ai' ) import( 'Strategies/DefendStrategy.ai' ) --plans import ("Plans/Plan.ai") import( 'Plans/ResourcePlan.ai' ) import( 'Plans/CapturePlan.ai' ) import( 'Plans/BuildAddOnPlan.ai' ) --Corsix Added (1 line) import( 'Plans/BuildNotifiedAddOnPlan.ai' ) import( 'Plans/BuildUnitPlan.ai' ) import( 'Plans/BuildBuildingPlan.ai' ) import( 'Plans/BuildResearchPlan.ai' ) import( 'Plans/AttackPlan.ai' ) import( 'Plans/DefendPlan.ai' ) import( 'Plans/DefendChokePointPlan.ai' ) --tactics import( 'Tactics/Ability.ai' ) import( 'Tactics/Tactic.ai' ) import( 'Tactics/InfantryTactic.ai' ) import( 'Tactics/EngineerTactic.ai' ) import( 'Tactics/VehicleTactic.ai' ) import( 'Tactics/SpaceMarines/ForceCommanderTactic.ai' ) import( 'Tactics/SpaceMarines/LibrarianTactic.ai' ) import( 'Tactics/SpaceMarines/ApothecaryTactic.ai' ) import( 'Tactics/ChaosMarines/SlaveTactic.ai' ) import( 'Tactics/ChaosMarines/ChaosLordTactic.ai' ) import( 'Tactics/ChaosMarines/SorcererTactic.ai' ) import( 'Tactics/ChaosMarines/BloodThirsterTactic.ai' ) import( 'Tactics/ChaosMarines/CultistTactic.ai' ) import( 'Tactics/Orks/BadDokTactic.ai' ) import( 'Tactics/Orks/WarBossTactic.ai' ) import( 'Tactics/Orks/MekBoyTactic.ai' ) import( 'Tactics/Orks/GrotTactic.ai' ) import( 'Tactics/Orks/StormBoyzTactic.ai' ) import( 'Tactics/Eldar/FarSeerTactic.ai' ) import( 'Tactics/Eldar/GravPlatformTactic.ai' ) import( 'Tactics/Eldar/GravPlatformBLTactic.ai' )