-
Notifications
You must be signed in to change notification settings - Fork 0
05 Initialize strategic number
Satoshi Teshiba edited this page Dec 16, 2020
·
1 revision
At the beginning of the game, set some strategic numbers to control the initial villagers and the initial scout optimally.
To set strategic numbers, write the following C # code.
SetGathererRateCollection class sets 4 strategic numbers, which are sn-food-gatherer-percentage, sn-wood-gatherer-percentage, sn-gold-gatherer-percentage and sn-stone-gatherer-percentage.
using System;
using System.Collections.ObjectModel;
using LibAoe2AISharp.Framework;
using LibAoe2AISharp.Specifications;
using static LibAoe2AISharp.Specifications.Ope;
namespace Aoe2AISharpSample
{
class Program
{
static void Main(string[] args)
{
var gameStarting = new CommandCollection("Init") {
new InitCivilianActions(),
new InitMilitaryActions(),
};
Console.WriteLine(gameStarting.ToScript());
}
}
public class InitCivilianActions : defrule
{
public InitCivilianActions()
{
Comment = "Initialize civilian actions";
Actions.Add(
new SetGathererRateCollection(100, 0, 0, 0),
new set_strategic_number(sn.cap_civilian_builders, 200),
new set_strategic_number(sn.cap_civilian_explorers, 0),
new set_strategic_number(sn.cap_civilian_gatherers, 200),
new set_strategic_number(sn.percent_civilian_builders, 10),
new set_strategic_number(sn.percent_civilian_explorers, 0),
new set_strategic_number(sn.percent_civilian_gatherers, 90),
new set_strategic_number(sn.food_dropsite_distance, 3),
new set_strategic_number(sn.camp_max_distance, 15),
new set_strategic_number(sn.maximum_town_size, 30),
new set_strategic_number(sn.mill_max_distance, 30),
new set_strategic_number(sn.maximum_hunt_drop_distance, 30),
new set_strategic_number(sn.maximum_food_drop_distance, 30),
new set_strategic_number(sn.retask_gather_amount, 5),
new set_strategic_number(sn.max_retask_gather_amount, 5),
new set_strategic_number(sn.required_forest_tiles, 35),
new disable_self());
}
}
public class InitMilitaryActions : defrule
{
public InitMilitaryActions()
{
Comment = "Initialize military actions";
Actions.Add(
new set_strategic_number(sn.number_explore_groups, 1),
new set_strategic_number(sn.minimum_explore_group_size, 1),
new set_strategic_number(sn.maximum_explore_group_size, 1),
new set_strategic_number(sn.minimum_civilian_explorers, 0),
new set_strategic_number(sn.total_number_explorers, 1),
new set_strategic_number(sn.number_attack_groups, 0),
new set_strategic_number(sn.minimum_attack_group_size, 15),
new set_strategic_number(sn.maximum_attack_group_size, 15),
new set_strategic_number(sn.number_defend_groups, 0),
new set_strategic_number(sn.minimum_defend_group_size, 10),
new set_strategic_number(sn.maximum_defend_group_size, 10),
new set_strategic_number(sn.gather_defense_units, 1),
new set_strategic_number(sn.task_ungrouped_soldiers, 0),
new set_strategic_number(sn.group_form_distance, 20),
new disable_self()
);
}
}
}Then, it will output the following AI script.
;===============================================================================
;description: Init
; Initialize civilian actions
; Initialize military actions
;===============================================================================
;Initialize civilian actions
(defrule
(true)
=>
(set-strategic-number sn-food-gatherer-percentage 100) ;food_gatherer_percentage
(set-strategic-number sn-wood-gatherer-percentage 0) ;wood_gatherer_percentage
(set-strategic-number sn-gold-gatherer-percentage 0) ;gold_gatherer_percentage
(set-strategic-number sn-stone-gatherer-percentage 0) ;stone_gatherer_percentage
(set-strategic-number sn-cap-civilian-builders 200) ;cap_civilian_builders
(set-strategic-number sn-cap-civilian-explorers 0) ;cap_civilian_explorers
(set-strategic-number sn-cap-civilian-gatherers 200) ;cap_civilian_gatherers
(set-strategic-number sn-percent-civilian-builders 10) ;percent_civilian_builders
(set-strategic-number sn-percent-civilian-explorers 0) ;percent_civilian_explorers
(set-strategic-number sn-percent-civilian-gatherers 90) ;percent_civilian_gatherers
(set-strategic-number sn-food-dropsite-distance 3) ;food_dropsite_distance
(set-strategic-number sn-camp-max-distance 15) ;camp_max_distance
(set-strategic-number sn-maximum-town-size 30) ;maximum_town_size
(set-strategic-number sn-mill-max-distance 30) ;mill_max_distance
(set-strategic-number sn-maximum-hunt-drop-distance 30) ;maximum_hunt_drop_distance
(set-strategic-number sn-maximum-food-drop-distance 30) ;maximum_food_drop_distance
(set-strategic-number sn-retask-gather-amount 5) ;retask_gather_amount
(set-strategic-number sn-max-retask-gather-amount 5) ;max_retask_gather_amount
(set-strategic-number sn-required-forest-tiles 35) ;required_forest_tiles
(disable-self)
)
;Initialize military actions
(defrule
(true)
=>
(set-strategic-number sn-number-explore-groups 1) ;number_explore_groups
(set-strategic-number sn-minimum-explore-group-size 1) ;minimum_explore_group_size
(set-strategic-number sn-maximum-explore-group-size 1) ;maximum_explore_group_size
(set-strategic-number sn-minimum-civilian-explorers 0) ;minimum_civilian_explorers
(set-strategic-number sn-total-number-explorers 1) ;total_number_explorers
(set-strategic-number sn-number-attack-groups 0) ;number_attack_groups
(set-strategic-number sn-minimum-attack-group-size 15) ;minimum_attack_group_size
(set-strategic-number sn-maximum-attack-group-size 15) ;maximum_attack_group_size
(set-strategic-number sn-number-defend-groups 0) ;number_defend_groups
(set-strategic-number sn-minimum-defend-group-size 10) ;minimum_defend_group_size
(set-strategic-number sn-maximum-defend-group-size 10) ;maximum_defend_group_size
(set-strategic-number sn-gather-defense-units 1) ;gather_defense_units
(set-strategic-number sn-task-ungrouped-soldiers 0) ;task_ungrouped_soldiers
(set-strategic-number sn-group-form-distance 20) ;group_form_distance
(disable-self)
)