//======================================================================== // SE5 Empire Main - Terran //======================================================================== #include Script_AI_GlobalConstants.txt #include Script_AI_GlobalVariables.txt //------------------------------------------------------------------------ // Global Constants //------------------------------------------------------------------------ //------------------------------------------------------------------------ // Global Variables //------------------------------------------------------------------------ //------------------------------------------------------------------------ // Forward Declarations //------------------------------------------------------------------------ //------------------------------------------------------------------------ // Includes //------------------------------------------------------------------------ #include Script_AI_GlobalSettings.txt #include Script_AI_Lists.txt #include Script_AI_StateChange.txt #include Script_AI_ColonyType.txt #include Script_AI_Construction.txt #include Script_AI_DesignCreation.txt #include Script_AI_EnemyAnalysis.txt #include Script_AI_Intelligence.txt #include Script_AI_Orders_Planets.txt #include Script_AI_Orders_Ships.txt #include Script_AI_Restricted_SolarSystems.txt #include Script_AI_Politics.txt #include Script_AI_Research.txt //------------------------------------------------------------------------ // Forward Declarations //------------------------------------------------------------------------ deffunc function Set_AI_Script_Values returns boolean params end function Set_Race_Research_Spending returns boolean params end function Set_Race_Research_Areas returns boolean params end function Set_Race_Overall_Spending_Percentages returns boolean params end function Set_Race_State_Preference_Values returns boolean params end function Set_Race_Political_Settings returns boolean params end enddeffunc //------------------------------------------------------------------------ // Main //------------------------------------------------------------------------ function Main returns boolean begin // Base values for this AI call Set_AI_Script_Values() // Generate lists for AI use. call AI_Generate_Lists() // Compute any state changes. call AI_StateChange() // Set this races preferences call AI_Set_Vehicle_Sizes() call Set_Race_Research_Spending() call Set_Race_Research_Areas() call AI_Set_Race_Design_Types() call Set_Race_Overall_Spending_Percentages() call Set_Race_State_Preference_Values() call Set_Race_Political_Settings() // Execute AI Controls. call AI_SetColonyTypes() call AI_EnemyAnalysis() call AI_Restricted_SolarSystems() call AI_DesignCreation() call AI_Research() call AI_Intelligence() call AI_Construction() call AI_Politics() call AI_Orders_Planets() call AI_Orders_Ships() end //------------------------------------------------------------------------ // Main_Create_Specific_Design (Called externally in Create Design window) //------------------------------------------------------------------------ function Main_Create_Specific_Design returns boolean params design_id: long retval: boolean begin call AI_Set_Vehicle_Sizes() call Set_Race_Research_Areas() call AI_Set_Race_Design_Types() set retval := Create_Specific_Design(design_id) return retval end //------------------------------------------------------------------------ // Set_AI_Script_Values //------------------------------------------------------------------------ function Set_AI_Script_Values returns boolean begin return TRUE set lng_AI_Categorization := AI_CATEGORY_NEUTRAL set bool_Race_Uses_Mines := TRUE set bool_Race_Uses_Fighters := TRUE set bool_Race_Uses_Satellites := TRUE set bool_Race_Uses_Troops := TRUE set bool_Race_Uses_Weapon_Platforms := TRUE set bool_Race_Uses_Drones := TRUE set bool_Race_Uses_Point_Defense_Cannons := FALSE set bool_Race_Uses_Point_Defense_Beam := FALSE set bool_Race_Uses_Point_Defense_Blaster := FALSE set bool_Race_Uses_Flak_Cannon := FALSE set bool_Race_Uses_Bomblet_Missile := TRUE set lng_AI_Design_Minimum_Speed_Ship := 12 set lng_AI_Design_Minimum_Speed_Fighter := 18 set lng_AI_Design_Minimum_Speed_Troop := 10 set lng_AI_Design_Minimum_Speed_Drone := 12 set lng_AI_Design_Tonnage_Ship_Pct_Primary_Weapon := 40 set lng_AI_Design_Tonnage_Ship_Pct_Heavy_Weapon := 20 set lng_AI_Design_Tonnage_Ship_Pct_Special_Weapon := 10 set lng_AI_Design_Tonnage_Ship_Pct_Shields := 10 set lng_AI_Design_Tonnage_Ship_Pct_Armor := 10 set lng_AI_Design_Tonnage_Unit_Pct_Primary_Weapon := 40 set lng_AI_Design_Tonnage_Unit_Pct_Heavy_Weapon := 30 set lng_AI_Design_Tonnage_Unit_Pct_Special_Weapon := 0 set lng_AI_Design_Tonnage_Unit_Pct_Shields := 10 set lng_AI_Design_Tonnage_Unit_Pct_Armor := 10 set lng_Overall_Spending_Pct_Vehicle_Construction := 50 set lng_Overall_Spending_Pct_Facility_Construction := 40 set lng_Overall_Spending_Pct_Unit_Construction := 10 set lng_Max_Defense_Systems := 3 set lng_Min_Time_Between_Attacks := 6 set lng_Pct_Chance_To_Start_New_Attack := 40 set lng_Max_Time_To_Stay_In_Attack_State := 15 set lng_Max_Explorers := 1 set lng_Percent_Of_Satellites_To_Keep_On_Planet := 50 set lng_Percent_Of_Mines_To_Keep_On_Planet := 50 set lng_Max_Ships_To_Retrofit_At_The_Same_Time := 1 set lng_Percent_Of_Attack_Ships_To_Use_For_Fleets := 95 set lng_Colonies_Per_Fleet := 10 set lng_Fleet_Attack_Formation := 0 set lng_Fleet_Defense_Formation := 0 set lng_Fleet_Task_Force_Attack_Strategy := 0 set lng_Fleet_Task_Force_Defense_Strategy := 0 set lng_Fleet_Task_Force_Attack_Formation := 0 set lng_Fleet_Task_Force_Defense_Formation := 0 set lng_Political_Message_Score_Percent_For_Demanding_Tone := 75 set lng_Political_Message_Score_Percent_For_Pleading_Tone := 125 set lng_Politics_Max_Anger_To_Accept_Treaty := 50 set lng_Politics_Max_Anger_To_Counter_Treaty := 60 set lng_Politics_Max_Anger_To_Accept_Alliance := 30 set lng_Politics_Max_Anger_To_Counter_Alliance := 40 set lng_Politics_Max_Anger_To_Accept_Gift := 70 set lng_Politics_Max_Anger_To_Trade := 70 set lng_Politics_Min_Anger_To_Declare_War := 80 set lng_Politics_Min_Anger_To_Break_Treaty := 70 set lng_Politics_Max_Anger_To_Propose_Treaty := 40 set lng_Politics_Trade_Value_Percent_For_Enemy := 110 set lng_Politics_Trade_Value_Percent_For_Friend := 90 set lng_Politics_Min_Score_Pct_Diff_To_Surrender := 500 set lng_Politics_Min_Score_Pct_Diff_To_Give_Enemy_Gift := 200 set lng_Politics_Min_Score_Pct_Diff_To_Give_Friend_Gift := 150 set lng_Politics_Min_Score_Pct_Diff_To_Accept_Enemy_Demand := 180 set lng_Politics_Min_Score_Pct_Diff_To_Accept_Friend_Demand := 140 set lng_Politics_Max_Concurrent_Requests_To_Honor_From_One_Player := 3 set lng_Politics_Max_Time_To_Honor_A_Request := 10 set lng_Politics_Percent_Chance_To_Propose_Treaty := 20 set str_Politics_Speech_Datafile_Filename := "Terran_AI_Speech.txt" end //------------------------------------------------------------------------ // Set_Race_Research_Spending //------------------------------------------------------------------------ function Set_Race_Research_Spending returns boolean begin return TRUE call lst_Research_Spending_Group_Name.add("Cultural Advancement") call lst_Research_Spending_For_Group.add(2) call lst_Research_Spending_Group_Name.add("Theoretical Science") call lst_Research_Spending_For_Group.add(20) call lst_Research_Spending_Group_Name.add("Applied Science") call lst_Research_Spending_For_Group.add(40) call lst_Research_Spending_Group_Name.add("Weapon Technology") call lst_Research_Spending_For_Group.add(38) end //------------------------------------------------------------------------ // Set_Race_Research_Areas //------------------------------------------------------------------------ function Set_Race_Research_Areas returns boolean begin return TRUE // Add weapon choices and tech needed to get them call lst_Primary_Weapon_Name.add("Anti - Proton Beam") call lst_Primary_Weapon_Tech_Area.add("Energy Stream Weapons") call lst_Primary_Weapon_Tech_Level.add(1) call lst_Primary_Weapon_Name.add("Depleted Uranium Cannon") call lst_Primary_Weapon_Tech_Area.add("Projectile Weapons") call lst_Primary_Weapon_Tech_Level.add(1) call lst_Heavy_Weapon_Name.add("Graviton Hellbore") call lst_Heavy_Weapon_Tech_Area.add("Gravitational Weapons") call lst_Heavy_Weapon_Tech_Level.add(1) call lst_Heavy_Weapon_Name.add("Phased - Polaron Beam") call lst_Heavy_Weapon_Tech_Area.add("Phased - Energy Weapons") call lst_Heavy_Weapon_Tech_Level.add(1) call lst_Heavy_Weapon_Name.add("Capital Ship Missile") call lst_Heavy_Weapon_Tech_Area.add("Missile Weapons") call lst_Heavy_Weapon_Tech_Level.add(1) call lst_Special_Weapon_Name.add("Tachyon Projection Cannon") call lst_Special_Weapon_Tech_Area.add("Weapon Overloading Weapons") call lst_Special_Weapon_Tech_Level.add(5) // Unit Weapons call lst_Primary_Weapon_Small_Name.add("Small Anti - Proton Beam") call lst_Primary_Weapon_Small_Tech_Area.add("Smaller Weapons") call lst_Primary_Weapon_Small_Tech_Level.add(1) call lst_Primary_Weapon_Small_Name.add("Small Depleted Uranium Cannon") call lst_Primary_Weapon_Small_Tech_Area.add("Projectile Weapons") call lst_Primary_Weapon_Small_Tech_Level.add(1) call lst_Heavy_Weapon_Small_Name.add("Small Graviton Beam") call lst_Heavy_Weapon_Small_Tech_Area.add("Smaller Weapons") call lst_Heavy_Weapon_Small_Tech_Level.add(1) call lst_Heavy_Weapon_Small_Name.add("Small Anti - Matter Torpedo") call lst_Heavy_Weapon_Small_Tech_Area.add("Smaller Weapons") call lst_Heavy_Weapon_Small_Tech_Level.add(1) call lst_Heavy_Weapon_Small_Name.add("Small Anti - Proton Beam") call lst_Heavy_Weapon_Small_Tech_Area.add("Smaller Weapons") call lst_Heavy_Weapon_Small_Tech_Level.add(1) call lst_Heavy_Weapon_Small_Name.add("Small Depleted Uranium Cannon") call lst_Heavy_Weapon_Small_Tech_Area.add("Projectile Weapons") call lst_Heavy_Weapon_Small_Tech_Level.add(1) // Weapon Platform Weapons call lst_Primary_Weapon_WeapPlatform_Name.add("Graviton Hellbore") call lst_Primary_Weapon_WeapPlatform_Tech_Area.add("Gravitational Weapons") call lst_Primary_Weapon_WeapPlatform_Tech_Level.add(1) call lst_Primary_Weapon_WeapPlatform_Name.add("Capital Ship Missile") call lst_Primary_Weapon_WeapPlatform_Tech_Area.add("Missile Weapons") call lst_Primary_Weapon_WeapPlatform_Tech_Level.add(1) call lst_Special_Weapon_WeapPlatform_Name.add("Tachyon Projection Cannon") call lst_Special_Weapon_WeapPlatform_Tech_Area.add("Weapon Overloading Weapons") call lst_Special_Weapon_WeapPlatform_Tech_Level.add(5) call lst_Special_Weapon_WeapPlatform_Name.add("Graviton Hellbore") call lst_Special_Weapon_WeapPlatform_Tech_Area.add("Gravitational Weapons") call lst_Special_Weapon_WeapPlatform_Tech_Level.add(1) call lst_Special_Weapon_WeapPlatform_Name.add("Capital Ship Missile") call lst_Special_Weapon_WeapPlatform_Tech_Area.add("Missile Weapons") call lst_Special_Weapon_WeapPlatform_Tech_Level.add(1) // Armor To Use call lst_Armor_Wanted_Name.add("Organic Armor") call lst_Armor_Wanted_Tech_Area.add("Organic Technology") call lst_Armor_Wanted_Tech_Level.add(1) call lst_Armor_Wanted_Name.add("Crystalline Armor") call lst_Armor_Wanted_Tech_Area.add("Crystalline Technology") call lst_Armor_Wanted_Tech_Level.add(1) call lst_Armor_Wanted_Name.add("Emissive Armor") call lst_Armor_Wanted_Tech_Area.add("Armor") call lst_Armor_Wanted_Tech_Level.add(20) call lst_Armor_Wanted_Name.add("Stealth Armor") call lst_Armor_Wanted_Tech_Area.add("Armor") call lst_Armor_Wanted_Tech_Level.add(20) call lst_Armor_Wanted_Name.add("Armor") call lst_Armor_Wanted_Tech_Area.add("Armor") call lst_Armor_Wanted_Tech_Level.add(1) // Extra Components Wanted For Ships // Extra Components Wanted For Units call AI_Add_Extra_Comps() end //------------------------------------------------------------------------ // Set_Race_Overall_Spending_Percentages //------------------------------------------------------------------------ function Set_Race_Overall_Spending_Percentages returns boolean vars ai_state: long begin return TRUE set ai_state := Sys_Get_AI_State(sys_long_Player_ID) case ai_state AI_STATE_EXPLORE_AND_EXPAND: set lng_Overall_Spending_Pct_Vehicle_Construction := 60 set lng_Overall_Spending_Pct_Facility_Construction := 30 set lng_Overall_Spending_Pct_Unit_Construction := 10 AI_STATE_INFRASTRUCTURE: set lng_Overall_Spending_Pct_Vehicle_Construction := 50 set lng_Overall_Spending_Pct_Facility_Construction := 30 set lng_Overall_Spending_Pct_Unit_Construction := 20 AI_STATE_ATTACK: set lng_Overall_Spending_Pct_Vehicle_Construction := 80 set lng_Overall_Spending_Pct_Facility_Construction := 10 set lng_Overall_Spending_Pct_Unit_Construction := 10 AI_STATE_DEFEND: set lng_Overall_Spending_Pct_Vehicle_Construction := 70 set lng_Overall_Spending_Pct_Facility_Construction := 10 set lng_Overall_Spending_Pct_Unit_Construction := 20 AI_STATE_NOT_CONNECTED: set lng_Overall_Spending_Pct_Vehicle_Construction := 60 set lng_Overall_Spending_Pct_Facility_Construction := 20 set lng_Overall_Spending_Pct_Unit_Construction := 20 endcase end //------------------------------------------------------------------------ // Set_Race_State_Preference_Values //------------------------------------------------------------------------ function Set_Race_State_Preference_Values returns boolean vars ai_state: long begin return TRUE set ai_state := Sys_Get_AI_State(sys_long_Player_ID) set lng_Fleet_Attack_Formation := Sys_Get_Fleet_Formation_With_Name("Starburst") set lng_Fleet_Defense_Formation := Sys_Get_Fleet_Formation_With_Name("Butterfly") set lng_Fleet_Task_Force_Attack_Strategy := Sys_Get_Strategy_With_Name(sys_long_Player_ID, "Optimal Firing Range") set lng_Fleet_Task_Force_Defense_Strategy := Sys_Get_Strategy_With_Name(sys_long_Player_ID, "Optimal Firing Range") set lng_Fleet_Task_Force_Attack_Formation := Sys_Get_Task_Force_Formation_With_Name("Shell") set lng_Fleet_Task_Force_Defense_Formation := Sys_Get_Task_Force_Formation_With_Name("Barricade") case ai_state AI_STATE_EXPLORE_AND_EXPAND: set lng_Max_Explorers := 3 AI_STATE_INFRASTRUCTURE: set lng_Max_Explorers := 1 AI_STATE_ATTACK: set lng_Max_Explorers := 1 AI_STATE_DEFEND: set lng_Max_Explorers := 1 AI_STATE_NOT_CONNECTED: set lng_Max_Explorers := 2 endcase end //------------------------------------------------------------------------ // Set_Race_Political_Settings //------------------------------------------------------------------------ function Set_Race_Political_Settings returns boolean begin return TRUE // AI Anger call AI_Set_Political_Anger_Severity_Time() call AI_Set_Political_Anger_For_Log_Types() call AI_Set_Political_Anger_For_Messages() call AI_Set_Political_Anger_For_Combat_Events() call AI_Set_Political_Anger_For_Wars() // Treaty & Alliance Elements Maximum Anger allowed call AI_Set_Political_Treaty_Elements() call AI_Set_Political_Alliance_Elements() end //------------------------------------------------------------------------