Files
kam-mobile/vendor/kam_remake/src/ai/newAI/KM_AIParameters.pas
T

762 lines
31 KiB
ObjectPascal
Raw Normal View History

2026-09-12 16:50:30 +05:00
{
Artificial intelligence
@author: Martin Toupal
@e-mail: poznamenany@gmail.com
}
unit KM_AIParameters;
{$I KaM_Remake.inc}
interface
uses
SysUtils
{$IFDEF PARALLEL_RUNNER}, KM_CommonClasses;
{$ELSE};
{$ENDIF}
{$IFDEF PARALLEL_RUNNER}
procedure LoadGAParameters(LoadStream: TKMemoryStream);
procedure SaveGAParameters(SaveStream: TKMemoryStream);
{$ENDIF}
// AI parameters in enumerations
type
TAIPar = (
ATTACK_ArmyVectorField_START
,ATTACK_ArmyVectorField_FindPositions_DistEnemyOffset
,ATTACK_ArmyVectorField_FindPositions_DistEnemyOffsetFF
,ATTACK_ArmyVectorField_FindPositions_DistEnemyGainFF
,ATTACK_ArmyVectorField_FindPositions_DistCloseToEnemy
,ATTACK_ArmyVectorField_FindPositions_DistMaxWalk
,ATTACK_ArmyVectorField_FindPositions_FollowEnemyVectorFieldUth
,ATTACK_ArmyVectorField_FindPositions_AvoidTraffic
,ATTACK_ArmyVectorField_FindPositions_RallyPointOffset
,ATTACK_ArmyVectorField_EvalClusters_InPlace
,ATTACK_ArmyVectorField_EvalClusters_AtAdvantage
,ATTACK_ArmyVectorField_EvalClusters_Ambushed
,ATTACK_ArmyVectorField_DivideForces_DefendCityAdv
,ATTACK_ArmyVectorField_DivideForces_SupportAllyAdv
,ATTACK_ArmyVectorField_END
,ATTACK_SQUAD_START
,ATTACK_SQUAD_ChangeTarget_Delay
,ATTACK_SQUAD_MinWalkingDistance
,ATTACK_SQUAD_TargetReached_House
,ATTACK_SQUAD_TargetReached_Position
,ATTACK_SQUAD_TargetReached_RangedSquad
,ATTACK_SQUAD_TargetReached_Unit
,ATTACK_SQUAD_TrafficDetection_Limit
,ATTACK_SQUAD_TrafficDetection_Threshold
,ATTACK_SQUAD_END
,ATTACK_SUPERVISOR_START
,ATTACK_SUPERVISOR_EvalTarget_DistanceGroup
,ATTACK_SUPERVISOR_EvalTarget_OpportunityDistGain
,ATTACK_SUPERVISOR_EvalTarget_OpportunityGain
,ATTACK_SUPERVISOR_EvalTarget_DecreaseRisk
,ATTACK_SUPERVISOR_EvalTarget_ThreatGainAntiHorse
,ATTACK_SUPERVISOR_EvalTarget_ThreatGainDist
,ATTACK_SUPERVISOR_EvalTarget_ThreatGainMelee
,ATTACK_SUPERVISOR_EvalTarget_ThreatGainMounted
,ATTACK_SUPERVISOR_EvalTarget_ThreatGainRangDist
,ATTACK_SUPERVISOR_EvalTarget_ThreatGainRanged
,ATTACK_SUPERVISOR_END
,NAVMESH_PATHFINDING_START
,NAVMESH_PATHFINDING_AvoidTraffic
,NAVMESH_PATHFINDING_LineLength
,NAVMESH_PATHFINDING_AvoidSpecEnemy
,NAVMESH_PATHFINDING_END
,BUILDER_START
,BUILDER_BuildHouse_FieldMaxWork
,BUILDER_BuildHouse_RTPMaxWork
,BUILDER_BuildHouse_RoadMaxWork
,BUILDER_ChHTB_AllWorkerCoef
,BUILDER_ChHTB_FractionCoef
,BUILDER_ChHTB_FreeWorkerCoef
,BUILDER_ChHTB_TrunkBalance
,BUILDER_ChHTB_TrunkFactor
,BUILDER_CreateShortcuts_MaxWork
,BUILDER_Shortage_Gold
,BUILDER_Shortage_Stone
,BUILDER_Shortage_StoneReserve
,BUILDER_Shortage_Trunk
,BUILDER_Shortage_Wood
,BUILDER_END
,EYE_GetForests_START
,EYE_GetForests_MaxAB
,EYE_GetForests_MinRndSoil
,EYE_GetForests_MinTrees
,EYE_GetForests_Radius
,EYE_GetForests_SPRndOwnLimMax
,EYE_GetForests_SPRndOwnLimMin
,EYE_GetForests_END
,MANAGEMENT_START
,MANAGEMENT_CheckUnitCount_SerfGoldCoef
,MANAGEMENT_CheckUnitCount_SerfLimit1
,MANAGEMENT_CheckUnitCount_SerfLimit2
,MANAGEMENT_CheckUnitCount_SerfLimit3
,MANAGEMENT_CheckUnitCount_WorkerGoldCoef
,MANAGEMENT_GoldShortage
,MANAGEMENT_END
,PLANNER_FARM_START
,PLANNER_FARM_FieldCrit_FlatArea
,PLANNER_FARM_FieldCrit_PolyRoute
,PLANNER_FARM_FieldCrit_Soil
,PLANNER_FARM_FindPlaceForHouse_CityCenter
,PLANNER_FARM_FindPlaceForHouse_FlatArea
,PLANNER_FARM_FindPlaceForHouse_HouseDist
,PLANNER_FARM_FindPlaceForHouse_Route
,PLANNER_FARM_PlanFields_CanBuild
,PLANNER_FARM_PlanFields_Dist
,PLANNER_FARM_PlanFields_ExistField
,PLANNER_FARM_END
,PLANNER_FindPlaceForHouse_START
,PLANNER_FindPlaceForHouse_CityCenter
,PLANNER_FindPlaceForHouse_FlatArea
,PLANNER_FindPlaceForHouse_HouseDist
,PLANNER_FindPlaceForHouse_Route
,PLANNER_FindPlaceForHouse_SeedDist
,PLANNER_FindPlaceForHouse_SnapCrit
,PLANNER_FindPlaceForHouse_END
,PLANNER_FindPlaceForQuary_START
,MANAGEMENT_CheckStoreWares_Stone
,PREDICTOR_WareNeedPerAWorker_Stone
,PREDICTOR_WareNeedPerAWorker_StoneOffset
,PREDICTOR_WorkerCountCoef
,PLANNER_FindPlaceForQuary_StoneLoc_StoneCnt
,PLANNER_FindPlaceForQuary_StoneLoc_AlreadyMined
,PLANNER_FindPlaceForQuary_StoneLoc_Distance
,PLANNER_FindPlaceForQuary_DistCity
,PLANNER_FindPlaceForQuary_DistStone
,PLANNER_FindPlaceForQuary_DistTimer
,PLANNER_FindPlaceForQuary_Obstacle
,PLANNER_FindPlaceForQuary_SnapCrit
,PLANNER_FindPlaceForQuary_QtyStone
,PLANNER_FindPlaceForQuary_END
,PLANNER_FOREST_START
,PLANNER_FOREST_FindForestAround_MaxDist
,PLANNER_FOREST_FindPlaceForWoodcutter_ABRange
,PLANNER_FOREST_FindPlaceForWoodcutter_DistCrit
,PLANNER_FOREST_FindPlaceForWoodcutter_DistTimer
,PLANNER_FOREST_FindPlaceForWoodcutter_ExistForest
,PLANNER_FOREST_FindPlaceForWoodcutter_FlatArea
,PLANNER_FOREST_FindPlaceForWoodcutter_FreeTiles
,PLANNER_FOREST_FindPlaceForWoodcutter_Radius
,PLANNER_FOREST_FindPlaceForWoodcutter_Routes
,PLANNER_FOREST_FindPlaceForWoodcutter_Soil
,PLANNER_FOREST_FindPlaceForWoodcutter_TreeCnt
,PLANNER_FOREST_FindPlaceForWoodcutter_TreeCntTimer
,PLANNER_FOREST_PlaceWoodcutter_DistFromForest
,PLANNER_FOREST_END
,PLANNER_Snap_START
,PLANNER_ObstaclesInHousePlan_Road
,PLANNER_ObstaclesInHousePlan_Tree
,PLANNER_SnapCrit_Field
,PLANNER_SnapCrit_HouseOrRoad
,PLANNER_SnapCrit_NoBuild
,PLANNER_SnapCrit_ObstacleInEntrance
,PLANNER_SnapCrit_Road
,PLANNER_SnapCrit_RoadInEntrance
,PLANNER_Snap_END
,PREDICTOR_START
,PREDICTOR_SecondSchool_MinRequiredUnits
,PREDICTOR_WareNeedPerAWorker_Wood
,PREDICTOR_END
,SHORTCUTS_START
,SHORTCUTS_BasePrice
,SHORTCUTS_Coal
,SHORTCUTS_Field
,SHORTCUTS_Forest
,SHORTCUTS_OtherCase
,SHORTCUTS_Road
,SHORTCUTS_TurnPenalization
,SHORTCUTS_noBuildArea
,SHORTCUTS_END
,ROADS_START
,ROADS_BasePrice
,ROADS_Coal
,ROADS_Field
,ROADS_Forest
,ROADS_OtherCase
,ROADS_Road
,ROADS_TurnPenalization
,ROADS_noBuildArea
,ROADS_END
);
// Global constants for AI
//const
// Global variables for AI
{$IFDEF DEBUG_NewAI}
var
{$ELSE}
const
{$ENDIF}
AI_Par: array[TAIPar] of Single = (
0.0000000, // ATTACK_ArmyVectorField_START
23.8595066, // ATTACK_ArmyVectorField_FindPositions_DistEnemyOffset
17.4091473, // ATTACK_ArmyVectorField_FindPositions_DistEnemyOffsetFF
1.5993488, // ATTACK_ArmyVectorField_FindPositions_DistEnemyGainFF
16.9659538, // ATTACK_ArmyVectorField_FindPositions_DistCloseToEnemy
6.5492649, // ATTACK_ArmyVectorField_FindPositions_DistMaxWalk
15.9957075, // ATTACK_ArmyVectorField_FindPositions_FollowEnemyVectorFieldUth
9.1061239, // ATTACK_ArmyVectorField_FindPositions_AvoidTraffic
7.7757473, // ATTACK_ArmyVectorField_FindPositions_RallyPointOffset
0.9000000, // ATTACK_ArmyVectorField_EvalClusters_InPlace
2.1793294, // ATTACK_ArmyVectorField_EvalClusters_AtAdvantage
0.0341255, // ATTACK_ArmyVectorField_EvalClusters_Ambushed
0.5000000, // ATTACK_ArmyVectorField_DivideForces_DefendCityAdv
0.1121276, // ATTACK_ArmyVectorField_DivideForces_SupportAllyAdv
0.0000000, // ATTACK_ArmyVectorField_END
0.0000000, // ATTACK_SQUAD_START
416.4127197, // ATTACK_SQUAD_ChangeTarget_Delay
5.0000000, // ATTACK_SQUAD_MinWalkingDistance
8.0000000, // ATTACK_SQUAD_TargetReached_House
5.0000000, // ATTACK_SQUAD_TargetReached_Position
10.2428083, // ATTACK_SQUAD_TargetReached_RangedSquad
35.0000000, // ATTACK_SQUAD_TargetReached_Unit
1.0000000, // ATTACK_SQUAD_TrafficDetection_Limit
10.0000000, // ATTACK_SQUAD_TrafficDetection_Threshold
0.0000000, // ATTACK_SQUAD_END
0.0000000, // ATTACK_SUPERVISOR_START
22.1900902, // ATTACK_SUPERVISOR_EvalTarget_DistanceGroup
3.9091630, // ATTACK_SUPERVISOR_EvalTarget_OpportunityDistGain
3.3577795, // ATTACK_SUPERVISOR_EvalTarget_OpportunityGain
0.6074438, // ATTACK_SUPERVISOR_EvalTarget_DecreaseRisk
6.6606860, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainAntiHorse
6.9580350, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainDist
2.6582916, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainMelee
3.9733243, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainMounted
2.8656545, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainRangDist
1.3565565, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainRanged
0.0000000, // ATTACK_SUPERVISOR_END
0.0000000, // NAVMESH_PATHFINDING_START
0.4070168, // NAVMESH_PATHFINDING_AvoidTraffic
1.1412202, // NAVMESH_PATHFINDING_LineLength
5.1420155, // NAVMESH_PATHFINDING_AvoidSpecEnemy
0.0000000, // NAVMESH_PATHFINDING_END
0.0000000, // BUILDER_START
1.6684477, // BUILDER_BuildHouse_FieldMaxWork
11.6014986, // BUILDER_BuildHouse_RTPMaxWork
21.6772480, // BUILDER_BuildHouse_RoadMaxWork
8.1070709, // BUILDER_ChHTB_AllWorkerCoef
21.3621922, // BUILDER_ChHTB_FractionCoef
17.1468201, // BUILDER_ChHTB_FreeWorkerCoef
0.2159205, // BUILDER_ChHTB_TrunkBalance
11.5937538, // BUILDER_ChHTB_TrunkFactor
10.0000000, // BUILDER_CreateShortcuts_MaxWork
29.1807594, // BUILDER_Shortage_Gold
11.7483110, // BUILDER_Shortage_Stone
14.0460310, // BUILDER_Shortage_StoneReserve
1.8335937, // BUILDER_Shortage_Trunk
19.8352127, // BUILDER_Shortage_Wood
0.0000000, // BUILDER_END
0.0000000, // EYE_GetForests_START
26.4097462, // EYE_GetForests_MaxAB
45.2892570, // EYE_GetForests_MinRndSoil
2.9898586, // EYE_GetForests_MinTrees
6.1196084, // EYE_GetForests_Radius
165.0055695, // EYE_GetForests_SPRndOwnLimMax
98.0682449, // EYE_GetForests_SPRndOwnLimMin
0.0000000, // EYE_GetForests_END
0.0000000, // MANAGEMENT_START
0.3049391, // MANAGEMENT_CheckUnitCount_SerfGoldCoef
22.1768589, // MANAGEMENT_CheckUnitCount_SerfLimit1
34.9827499, // MANAGEMENT_CheckUnitCount_SerfLimit2
51.9892654, // MANAGEMENT_CheckUnitCount_SerfLimit3
2.2670105, // MANAGEMENT_CheckUnitCount_WorkerGoldCoef
6.1128011, // MANAGEMENT_GoldShortage
0.0000000, // MANAGEMENT_END
0.0000000, // PLANNER_FARM_START
13.7585087, // PLANNER_FARM_FieldCrit_FlatArea
0.4989614, // PLANNER_FARM_FieldCrit_PolyRoute
1.9767742, // PLANNER_FARM_FieldCrit_Soil
5.6396270, // PLANNER_FARM_FindPlaceForHouse_CityCenter
16.0000000, // PLANNER_FARM_FindPlaceForHouse_FlatArea
19.9625053, // PLANNER_FARM_FindPlaceForHouse_HouseDist
-1.1648518, // PLANNER_FARM_FindPlaceForHouse_Route
759.2076416, // PLANNER_FARM_PlanFields_CanBuild
32.8001213, // PLANNER_FARM_PlanFields_Dist
95.6147385, // PLANNER_FARM_PlanFields_ExistField
0.0000000, // PLANNER_FARM_END
0.0000000, // PLANNER_FindPlaceForHouse_START
40.0904541, // PLANNER_FindPlaceForHouse_CityCenter
2.7339566, // PLANNER_FindPlaceForHouse_FlatArea
43.2200470, // PLANNER_FindPlaceForHouse_HouseDist
2.4208529, // PLANNER_FindPlaceForHouse_Route
25.1297512, // PLANNER_FindPlaceForHouse_SeedDist
0.8601482, // PLANNER_FindPlaceForHouse_SnapCrit
0.0000000, // PLANNER_FindPlaceForHouse_END
0.0000000, // PLANNER_FindPlaceForQuary_START
27.4838066, // MANAGEMENT_CheckStoreWares_Stone
0.6821785, // PREDICTOR_WareNeedPerAWorker_Stone
14.5459347, // PREDICTOR_WareNeedPerAWorker_StoneOffset
0.0047831, // PREDICTOR_WorkerCountCoef
5.0048351, // PLANNER_FindPlaceForQuary_StoneLoc_StoneCnt
125.4238663, // PLANNER_FindPlaceForQuary_StoneLoc_AlreadyMined
13.8679466, // PLANNER_FindPlaceForQuary_StoneLoc_Distance
20.9321098, // PLANNER_FindPlaceForQuary_DistCity
25.5000973, // PLANNER_FindPlaceForQuary_DistStone
3051.0822754, // PLANNER_FindPlaceForQuary_DistTimer
90.0000000, // PLANNER_FindPlaceForQuary_Obstacle
14.2139816, // PLANNER_FindPlaceForQuary_SnapCrit
26.7360783, // PLANNER_FindPlaceForQuary_QtyStone
0.0000000, // PLANNER_FindPlaceForQuary_END
0.0000000, // PLANNER_FOREST_START
8.3981934, // PLANNER_FOREST_FindForestAround_MaxDist
43.0639000, // PLANNER_FOREST_FindPlaceForWoodcutter_ABRange
18.3647213, // PLANNER_FOREST_FindPlaceForWoodcutter_DistCrit
6053.0366211, // PLANNER_FOREST_FindPlaceForWoodcutter_DistTimer
359.9281311, // PLANNER_FOREST_FindPlaceForWoodcutter_ExistForest
5.8913641, // PLANNER_FOREST_FindPlaceForWoodcutter_FlatArea
4.6900163, // PLANNER_FOREST_FindPlaceForWoodcutter_FreeTiles
3.5208817, // PLANNER_FOREST_FindPlaceForWoodcutter_Radius
-0.6038398, // PLANNER_FOREST_FindPlaceForWoodcutter_Routes
0.1276233, // PLANNER_FOREST_FindPlaceForWoodcutter_Soil
7.2485070, // PLANNER_FOREST_FindPlaceForWoodcutter_TreeCnt
21258.1250000, // PLANNER_FOREST_FindPlaceForWoodcutter_TreeCntTimer
0.2943508, // PLANNER_FOREST_PlaceWoodcutter_DistFromForest
0.0000000, // PLANNER_FOREST_END
0.0000000, // PLANNER_Snap_START
293.8428345, // PLANNER_ObstaclesInHousePlan_Road
599.5475464, // PLANNER_ObstaclesInHousePlan_Tree
27.8181629, // PLANNER_SnapCrit_Field
1.1461508, // PLANNER_SnapCrit_HouseOrRoad
-9.2810154, // PLANNER_SnapCrit_NoBuild
201.9597015, // PLANNER_SnapCrit_ObstacleInEntrance
61.5381699, // PLANNER_SnapCrit_Road
22.1572151, // PLANNER_SnapCrit_RoadInEntrance
0.0000000, // PLANNER_Snap_END
0.0000000, // PREDICTOR_START
44.3221283, // PREDICTOR_SecondSchool_MinRequiredUnits
0.3007088, // PREDICTOR_WareNeedPerAWorker_Wood
0.0000000, // PREDICTOR_END
0.0000000, // SHORTCUTS_START
95.1310349, // SHORTCUTS_BasePrice
49.1626778, // SHORTCUTS_Coal
50.0000000, // SHORTCUTS_Field
18.1300087, // SHORTCUTS_Forest
24.3808022, // SHORTCUTS_OtherCase
46.6517181, // SHORTCUTS_Road
33.4370956, // SHORTCUTS_TurnPenalization
25.7135334, // SHORTCUTS_noBuildArea
0.0000000, // SHORTCUTS_END
0.0000000, // ROADS_START
42.2091637, // ROADS_BasePrice
29.0325890, // ROADS_Coal
46.5412674, // ROADS_Field
57.8719749, // ROADS_Forest
11.6849775, // ROADS_OtherCase
23.1054745, // ROADS_Road
50.0000000, // ROADS_TurnPenalization
35.9236031, // ROADS_noBuildArea
0.0000000 // ROADS_END
);
{$IFDEF DEBUG_NewAI}
const
AI_Par_Offset: array[TAIPar] of Single = (
0.00, // ATTACK_ArmyVectorField_START
14.00, // ATTACK_ArmyVectorField_FindPositions_DistEnemyOffset
12.00, // ATTACK_ArmyVectorField_FindPositions_DistEnemyOffsetFF
1.00, // ATTACK_ArmyVectorField_FindPositions_DistEnemyGainFF
12.00, // ATTACK_ArmyVectorField_FindPositions_DistCloseToEnemy
1.00, // ATTACK_ArmyVectorField_FindPositions_DistMaxWalk
5.00, // ATTACK_ArmyVectorField_FindPositions_FollowEnemyVectorFieldUth
1.00, // ATTACK_ArmyVectorField_FindPositions_AvoidTraffic
1.00, // ATTACK_ArmyVectorField_FindPositions_RallyPointOffset
0.40, // ATTACK_ArmyVectorField_EvalClusters_InPlace
0.00, // ATTACK_ArmyVectorField_EvalClusters_AtAdvantage
0.00, // ATTACK_ArmyVectorField_EvalClusters_Ambushed
0.50, // ATTACK_ArmyVectorField_DivideForces_DefendCityAdv
0.00, // ATTACK_ArmyVectorField_DivideForces_SupportAllyAdv
0.00, // ATTACK_ArmyVectorField_END
0.00, // ATTACK_SQUAD_START
350.00, // ATTACK_SQUAD_ChangeTarget_Delay
5.00, // ATTACK_SQUAD_MinWalkingDistance
8.00, // ATTACK_SQUAD_TargetReached_House
1.00, // ATTACK_SQUAD_TargetReached_Position
9.00, // ATTACK_SQUAD_TargetReached_RangedSquad
15.00, // ATTACK_SQUAD_TargetReached_Unit
1.00, // ATTACK_SQUAD_TrafficDetection_Limit
10.00, // ATTACK_SQUAD_TrafficDetection_Threshold
0.00, // ATTACK_SQUAD_END
0.00, // ATTACK_SUPERVISOR_START
10.00, // ATTACK_SUPERVISOR_EvalTarget_DistanceGroup
1.00, // ATTACK_SUPERVISOR_EvalTarget_OpportunityDistGain
1.00, // ATTACK_SUPERVISOR_EvalTarget_OpportunityGain
0.50, // ATTACK_SUPERVISOR_EvalTarget_DecreaseRisk
2.00, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainAntiHorse
5.00, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainDist
1.00, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainMelee
1.00, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainMounted
1.00, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainRangDist
1.00, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainRanged
0.00, // ATTACK_SUPERVISOR_END
0.00, // NAVMESH_PATHFINDING_START
0.00, // NAVMESH_PATHFINDING_AvoidTraffic
0.00, // NAVMESH_PATHFINDING_LineLength
5.00, // NAVMESH_PATHFINDING_AvoidSpecEnemy
0.00, // NAVMESH_PATHFINDING_END
0.00, // BUILDER_START
1.00, // BUILDER_BuildHouse_FieldMaxWork
1.00, // BUILDER_BuildHouse_RTPMaxWork
5.00, // BUILDER_BuildHouse_RoadMaxWork
8.00, // BUILDER_ChHTB_AllWorkerCoef
5.00, // BUILDER_ChHTB_FractionCoef
8.00, // BUILDER_ChHTB_FreeWorkerCoef
0.00, // BUILDER_ChHTB_TrunkBalance
8.00, // BUILDER_ChHTB_TrunkFactor
1.00, // BUILDER_CreateShortcuts_MaxWork
0.00, // BUILDER_Shortage_Gold
10.00, // BUILDER_Shortage_Stone
10.00, // BUILDER_Shortage_StoneReserve
1.00, // BUILDER_Shortage_Trunk
3.00, // BUILDER_Shortage_Wood
0.00, // BUILDER_END
0.00, // EYE_GetForests_START
1.00, // EYE_GetForests_MaxAB
40.00, // EYE_GetForests_MinRndSoil
1.00, // EYE_GetForests_MinTrees
5.00, // EYE_GetForests_Radius
100.00, // EYE_GetForests_SPRndOwnLimMax
0.00, // EYE_GetForests_SPRndOwnLimMin
0.00, // EYE_GetForests_END
0.00, // MANAGEMENT_START
0.10, // MANAGEMENT_CheckUnitCount_SerfGoldCoef
5.00, // MANAGEMENT_CheckUnitCount_SerfLimit1
20.00, // MANAGEMENT_CheckUnitCount_SerfLimit2
40.00, // MANAGEMENT_CheckUnitCount_SerfLimit3
0.10, // MANAGEMENT_CheckUnitCount_WorkerGoldCoef
1.00, // MANAGEMENT_GoldShortage
0.00, // MANAGEMENT_END
0.00, // PLANNER_FARM_START
10.00, // PLANNER_FARM_FieldCrit_FlatArea
0.00, // PLANNER_FARM_FieldCrit_PolyRoute
0.00, // PLANNER_FARM_FieldCrit_Soil
0.00, // PLANNER_FARM_FindPlaceForHouse_CityCenter
10.00, // PLANNER_FARM_FindPlaceForHouse_FlatArea
5.00, // PLANNER_FARM_FindPlaceForHouse_HouseDist
-2.00, // PLANNER_FARM_FindPlaceForHouse_Route
500.00, // PLANNER_FARM_PlanFields_CanBuild
0.00, // PLANNER_FARM_PlanFields_Dist
30.00, // PLANNER_FARM_PlanFields_ExistField
0.00, // PLANNER_FARM_END
0.00, // PLANNER_FindPlaceForHouse_START
0.00, // PLANNER_FindPlaceForHouse_CityCenter
0.00, // PLANNER_FindPlaceForHouse_FlatArea
25.00, // PLANNER_FindPlaceForHouse_HouseDist
0.00, // PLANNER_FindPlaceForHouse_Route
0.00, // PLANNER_FindPlaceForHouse_SeedDist
0.00, // PLANNER_FindPlaceForHouse_SnapCrit
0.00, // PLANNER_FindPlaceForHouse_END
0.00, // PLANNER_FindPlaceForQuary_START
0.00, // MANAGEMENT_CheckStoreWares_Stone
0.50, // PREDICTOR_WareNeedPerAWorker_Stone
10.00, // PREDICTOR_WareNeedPerAWorker_StoneOffset
0.00, // PREDICTOR_WorkerCountCoef
0.00, // PLANNER_FindPlaceForQuary_StoneLoc_StoneCnt
100.00, // PLANNER_FindPlaceForQuary_StoneLoc_AlreadyMined
0.00, // PLANNER_FindPlaceForQuary_StoneLoc_Distance
0.00, // PLANNER_FindPlaceForQuary_DistCity
0.00, // PLANNER_FindPlaceForQuary_DistStone
0.00, // PLANNER_FindPlaceForQuary_DistTimer
80.00, // PLANNER_FindPlaceForQuary_Obstacle
5.00, // PLANNER_FindPlaceForQuary_SnapCrit
0.00, // PLANNER_FindPlaceForQuary_QtyStone
0.00, // PLANNER_FindPlaceForQuary_END
0.00, // PLANNER_FOREST_START
5.00, // PLANNER_FOREST_FindForestAround_MaxDist
0.00, // PLANNER_FOREST_FindPlaceForWoodcutter_ABRange
8.00, // PLANNER_FOREST_FindPlaceForWoodcutter_DistCrit
0.00, // PLANNER_FOREST_FindPlaceForWoodcutter_DistTimer
0.00, // PLANNER_FOREST_FindPlaceForWoodcutter_ExistForest
0.00, // PLANNER_FOREST_FindPlaceForWoodcutter_FlatArea
0.00, // PLANNER_FOREST_FindPlaceForWoodcutter_FreeTiles
3.00, // PLANNER_FOREST_FindPlaceForWoodcutter_Radius
-1.00, // PLANNER_FOREST_FindPlaceForWoodcutter_Routes
0.00, // PLANNER_FOREST_FindPlaceForWoodcutter_Soil
0.00, // PLANNER_FOREST_FindPlaceForWoodcutter_TreeCnt
12000.00, // PLANNER_FOREST_FindPlaceForWoodcutter_TreeCntTimer
0.00, // PLANNER_FOREST_PlaceWoodcutter_DistFromForest
0.00, // PLANNER_FOREST_END
0.00, // PLANNER_Snap_START
200.00, // PLANNER_ObstaclesInHousePlan_Road
500.00, // PLANNER_ObstaclesInHousePlan_Tree
-20.00, // PLANNER_SnapCrit_Field
-30.00, // PLANNER_SnapCrit_HouseOrRoad
-30.00, // PLANNER_SnapCrit_NoBuild
0.00, // PLANNER_SnapCrit_ObstacleInEntrance
25.00, // PLANNER_SnapCrit_Road
0.00, // PLANNER_SnapCrit_RoadInEntrance
0.00, // PLANNER_Snap_END
0.00, // PREDICTOR_START
20.00, // PREDICTOR_SecondSchool_MinRequiredUnits
0.01, // PREDICTOR_WareNeedPerAWorker_Wood
0.00, // PREDICTOR_END
0.00, // SHORTCUTS_START
70.00, // SHORTCUTS_BasePrice
20.00, // SHORTCUTS_Coal
0.00, // SHORTCUTS_Field
10.00, // SHORTCUTS_Forest
0.00, // SHORTCUTS_OtherCase
20.00, // SHORTCUTS_Road
20.00, // SHORTCUTS_TurnPenalization
20.00, // SHORTCUTS_noBuildArea
0.00, // SHORTCUTS_END
0.00, // ROADS_START
25.00, // ROADS_BasePrice
0.00, // ROADS_Coal
20.00, // ROADS_Field
30.00, // ROADS_Forest
0.00, // ROADS_OtherCase
0.00, // ROADS_Road
0.00, // ROADS_TurnPenalization
15.00, // ROADS_noBuildArea
0.00 // ROADS_END
);
AI_Par_Gain: array[TAIPar] of Single = (
0.00, // ATTACK_ArmyVectorField_START
10.00, // ATTACK_ArmyVectorField_FindPositions_DistEnemyOffset
10.00, // ATTACK_ArmyVectorField_FindPositions_DistEnemyOffsetFF
1.00, // ATTACK_ArmyVectorField_FindPositions_DistEnemyGainFF
5.00, // ATTACK_ArmyVectorField_FindPositions_DistCloseToEnemy
10.00, // ATTACK_ArmyVectorField_FindPositions_DistMaxWalk
15.00, // ATTACK_ArmyVectorField_FindPositions_FollowEnemyVectorFieldUth
9.00, // ATTACK_ArmyVectorField_FindPositions_AvoidTraffic
10.00, // ATTACK_ArmyVectorField_FindPositions_RallyPointOffset
0.50, // ATTACK_ArmyVectorField_EvalClusters_InPlace
3.00, // ATTACK_ArmyVectorField_EvalClusters_AtAdvantage
0.25, // ATTACK_ArmyVectorField_EvalClusters_Ambushed
0.00, // ATTACK_ArmyVectorField_DivideForces_DefendCityAdv
0.90, // ATTACK_ArmyVectorField_DivideForces_SupportAllyAdv
0.00, // ATTACK_ArmyVectorField_END
0.00, // ATTACK_SQUAD_START
100.00, // ATTACK_SQUAD_ChangeTarget_Delay
0.00, // ATTACK_SQUAD_MinWalkingDistance
0.00, // ATTACK_SQUAD_TargetReached_House
4.00, // ATTACK_SQUAD_TargetReached_Position
2.00, // ATTACK_SQUAD_TargetReached_RangedSquad
20.00, // ATTACK_SQUAD_TargetReached_Unit
0.00, // ATTACK_SQUAD_TrafficDetection_Limit
0.00, // ATTACK_SQUAD_TrafficDetection_Threshold
0.00, // ATTACK_SQUAD_END
0.00, // ATTACK_SUPERVISOR_START
15.00, // ATTACK_SUPERVISOR_EvalTarget_DistanceGroup
6.00, // ATTACK_SUPERVISOR_EvalTarget_OpportunityDistGain
4.00, // ATTACK_SUPERVISOR_EvalTarget_OpportunityGain
0.25, // ATTACK_SUPERVISOR_EvalTarget_DecreaseRisk
5.00, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainAntiHorse
10.00, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainDist
3.00, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainMelee
3.00, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainMounted
3.00, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainRangDist
3.00, // ATTACK_SUPERVISOR_EvalTarget_ThreatGainRanged
0.00, // ATTACK_SUPERVISOR_END
0.00, // NAVMESH_PATHFINDING_START
2.00, // NAVMESH_PATHFINDING_AvoidTraffic
3.00, // NAVMESH_PATHFINDING_LineLength
4.00, // NAVMESH_PATHFINDING_AvoidSpecEnemy
0.00, // NAVMESH_PATHFINDING_END
0.00, // BUILDER_START
1.00, // BUILDER_BuildHouse_FieldMaxWork
15.00, // BUILDER_BuildHouse_RTPMaxWork
20.00, // BUILDER_BuildHouse_RoadMaxWork
10.00, // BUILDER_ChHTB_AllWorkerCoef
40.00, // BUILDER_ChHTB_FractionCoef
20.00, // BUILDER_ChHTB_FreeWorkerCoef
3.00, // BUILDER_ChHTB_TrunkBalance
12.00, // BUILDER_ChHTB_TrunkFactor
9.00, // BUILDER_CreateShortcuts_MaxWork
35.00, // BUILDER_Shortage_Gold
15.00, // BUILDER_Shortage_Stone
40.00, // BUILDER_Shortage_StoneReserve
3.00, // BUILDER_Shortage_Trunk
20.00, // BUILDER_Shortage_Wood
0.00, // BUILDER_END
0.00, // EYE_GetForests_START
200.00, // EYE_GetForests_MaxAB
22.00, // EYE_GetForests_MinRndSoil
4.00, // EYE_GetForests_MinTrees
4.00, // EYE_GetForests_Radius
155.00, // EYE_GetForests_SPRndOwnLimMax
155.00, // EYE_GetForests_SPRndOwnLimMin
0.00, // EYE_GetForests_END
0.00, // MANAGEMENT_START
3.00, // MANAGEMENT_CheckUnitCount_SerfGoldCoef
20.00, // MANAGEMENT_CheckUnitCount_SerfLimit1
20.00, // MANAGEMENT_CheckUnitCount_SerfLimit2
30.00, // MANAGEMENT_CheckUnitCount_SerfLimit3
3.00, // MANAGEMENT_CheckUnitCount_WorkerGoldCoef
15.00, // MANAGEMENT_GoldShortage
0.00, // MANAGEMENT_END
0.00, // PLANNER_FARM_START
10.00, // PLANNER_FARM_FieldCrit_FlatArea
5.00, // PLANNER_FARM_FieldCrit_PolyRoute
3.00, // PLANNER_FARM_FieldCrit_Soil
10.00, // PLANNER_FARM_FindPlaceForHouse_CityCenter
10.00, // PLANNER_FARM_FindPlaceForHouse_FlatArea
15.00, // PLANNER_FARM_FindPlaceForHouse_HouseDist
4.00, // PLANNER_FARM_FindPlaceForHouse_Route
500.00, // PLANNER_FARM_PlanFields_CanBuild
75.00, // PLANNER_FARM_PlanFields_Dist
75.00, // PLANNER_FARM_PlanFields_ExistField
0.00, // PLANNER_FARM_END
0.00, // PLANNER_FindPlaceForHouse_START
80.00, // PLANNER_FindPlaceForHouse_CityCenter
6.00, // PLANNER_FindPlaceForHouse_FlatArea
20.00, // PLANNER_FindPlaceForHouse_HouseDist
4.00, // PLANNER_FindPlaceForHouse_Route
50.00, // PLANNER_FindPlaceForHouse_SeedDist
3.00, // PLANNER_FindPlaceForHouse_SnapCrit
0.00, // PLANNER_FindPlaceForHouse_END
0.00, // PLANNER_FindPlaceForQuary_START
50.00, // MANAGEMENT_CheckStoreWares_Stone
0.30, // PREDICTOR_WareNeedPerAWorker_Stone
10.00, // PREDICTOR_WareNeedPerAWorker_StoneOffset
0.01, // PREDICTOR_WorkerCountCoef
10.00, // PLANNER_FindPlaceForQuary_StoneLoc_StoneCnt
100.00, // PLANNER_FindPlaceForQuary_StoneLoc_AlreadyMined
20.00, // PLANNER_FindPlaceForQuary_StoneLoc_Distance
50.00, // PLANNER_FindPlaceForQuary_DistCity
50.00, // PLANNER_FindPlaceForQuary_DistStone
15000.00, // PLANNER_FindPlaceForQuary_DistTimer
50.00, // PLANNER_FindPlaceForQuary_Obstacle
20.00, // PLANNER_FindPlaceForQuary_SnapCrit
50.00, // PLANNER_FindPlaceForQuary_QtyStone
0.00, // PLANNER_FindPlaceForQuary_END
0.00, // PLANNER_FOREST_START
5.00, // PLANNER_FOREST_FindForestAround_MaxDist
150.00, // PLANNER_FOREST_FindPlaceForWoodcutter_ABRange
20.00, // PLANNER_FOREST_FindPlaceForWoodcutter_DistCrit
10000.00, // PLANNER_FOREST_FindPlaceForWoodcutter_DistTimer
500.00, // PLANNER_FOREST_FindPlaceForWoodcutter_ExistForest
6.00, // PLANNER_FOREST_FindPlaceForWoodcutter_FlatArea
6.00, // PLANNER_FOREST_FindPlaceForWoodcutter_FreeTiles
4.00, // PLANNER_FOREST_FindPlaceForWoodcutter_Radius
2.00, // PLANNER_FOREST_FindPlaceForWoodcutter_Routes
3.00, // PLANNER_FOREST_FindPlaceForWoodcutter_Soil
21.00, // PLANNER_FOREST_FindPlaceForWoodcutter_TreeCnt
12000.00, // PLANNER_FOREST_FindPlaceForWoodcutter_TreeCntTimer
2.00, // PLANNER_FOREST_PlaceWoodcutter_DistFromForest
0.00, // PLANNER_FOREST_END
0.00, // PLANNER_Snap_START
500.00, // PLANNER_ObstaclesInHousePlan_Road
1000.00, // PLANNER_ObstaclesInHousePlan_Tree
50.00, // PLANNER_SnapCrit_Field
50.00, // PLANNER_SnapCrit_HouseOrRoad
50.00, // PLANNER_SnapCrit_NoBuild
1000.00, // PLANNER_SnapCrit_ObstacleInEntrance
50.00, // PLANNER_SnapCrit_Road
300.00, // PLANNER_SnapCrit_RoadInEntrance
0.00, // PLANNER_Snap_END
0.00, // PREDICTOR_START
30.00, // PREDICTOR_SecondSchool_MinRequiredUnits
0.30, // PREDICTOR_WareNeedPerAWorker_Wood
0.00, // PREDICTOR_END
0.00, // SHORTCUTS_START
40.00, // SHORTCUTS_BasePrice
50.00, // SHORTCUTS_Coal
50.00, // SHORTCUTS_Field
40.00, // SHORTCUTS_Forest
50.00, // SHORTCUTS_OtherCase
50.00, // SHORTCUTS_Road
50.00, // SHORTCUTS_TurnPenalization
50.00, // SHORTCUTS_noBuildArea
0.00, // SHORTCUTS_END
0.00, // ROADS_START
30.00, // ROADS_BasePrice
50.00, // ROADS_Coal
40.00, // ROADS_Field
50.00, // ROADS_Forest
50.00, // ROADS_OtherCase
50.00, // ROADS_Road
50.00, // ROADS_TurnPenalization
35.00, // ROADS_noBuildArea
0.00 // ROADS_END
);
{$ENDIF}
implementation
{$IFDEF PARALLEL_RUNNER}
procedure LoadGAParameters(LoadStream: TKMemoryStream);
begin
LoadStream.CheckMarker('LoadGAParameters');
LoadStream.Read(AI_Par,SizeOf(AI_Par));
end;
procedure SaveGAParameters(SaveStream: TKMemoryStream);
begin
SaveStream.PlaceMarker('LoadGAParameters');
SaveStream.Write(AI_Par,SizeOf(AI_Par));
end;
{$ENDIF}
end.