annotate agent.pl @ 208:a2bb38589172

refined debug file name
author "Rex Tsai <chihchun@kalug.linux.org.tw>"
date Mon, 03 Nov 2008 20:07:05 +0800
parents 48ea8222782a
children 5f94d8d8370a
rev   line source
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1 #!/usr/bin/perl
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
2
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
3 use strict;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
4 use Ikariam;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
5 use Data::Dumper;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
6 use Decision::ParseTree q{ParseTree};
84
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 82
diff changeset
7 use YAML qw/LoadFile Dump DumpFile/;
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
8
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
9 package Ikariam::Cities::Rules;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
10 use strict;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
11 use Data::Dumper;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
12
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
13 sub new {
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
14 my ( $class, $i ) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
15 my $self = {
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
16 ikariam => $i,
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
17 };
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
18 return bless $self, $class;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
19 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
20
67
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
21 sub is_attacked {
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
22 my ($self, $city) = @_;
144
9fb18f3d6e26 added warning dialog for attacks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 139
diff changeset
23
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
24 return ($self->{'ikariam'}->{'military'}->{attacks} > 0 ) ? 1 : 0;
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
25 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
26
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
27 sub is_constructing {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
28 my ($self, $city) = @_;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
29 return ($city->{construction} > 0 ) ? 1 : 0;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
30 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
31
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
32 sub is_wall_enough {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
33 my ($self, $city) = @_;
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
34 # http://ikariam.wikia.com/wiki/Wall_Defense
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
35 # Basic rule - the wall level must equale or large then townHall level.
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
36 return ($city->{buildings}->{wall} >= $city->{buildings}->{townHall} ? 1 : 0);
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
37 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
38
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
39 sub is_space_enough {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
40 my ($self, $city) = @_;
137
362184763c04 added comments and added new research (greek fire)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 93
diff changeset
41 # The maximum town hall is level 20, then we build new town
89
86402d28544f stop upgrade townHall after the level is 20.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
42 return 1 if($city->{buildings}->{townHall} >= 20);
137
362184763c04 added comments and added new research (greek fire)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 93
diff changeset
43 # TODO 應該以 成長率 * 升級所需時間計算
362184763c04 added comments and added new research (greek fire)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 93
diff changeset
44 # 6 hours earlier, we upgrade the twonHall.
202
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
45 return ($city->{space}->{total} <= ($city->{space}->{occupied} + ($city->{growth}*8)) ? 0 : 1)
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
46 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
47
206
b7af307a222d added build safehouse
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 203
diff changeset
48 sub is_safehouse_enough {
b7af307a222d added build safehouse
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 203
diff changeset
49 my ($self, $city) = @_;
b7af307a222d added build safehouse
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 203
diff changeset
50 return 0 if(!defined($city->{building}->{safehouse}));
b7af307a222d added build safehouse
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 203
diff changeset
51 return (($city->{building}->{townHall} <= ($city->{building}->{safehouse} + 4)) ? 0 : 1);
b7af307a222d added build safehouse
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 203
diff changeset
52 }
b7af307a222d added build safehouse
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 203
diff changeset
53
202
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
54 sub is_warehouse_enough {
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
55 my ($self, $city) = @_;
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
56 my @warehouse = (qw/undef undef 0 4 9 16 18 19 20 21 22 23 24 25/);
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
57 my @cities = keys(%{$self->{ikariam}->{cities}});
203
60f4ce7e1f63 fixed warehouse level counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 202
diff changeset
58 my $nextCities = ($#cities + 1) + 1;
202
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
59
203
60f4ce7e1f63 fixed warehouse level counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 202
diff changeset
60 Carp::carp(sprintf("Required warehouse level %s for next city (%s), current is %s\n", $warehouse[$nextCities], $nextCities, $city->{buildings}->{warehouse}));
202
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
61 return 0 if(!defined($city->{buildings}->{warehouse}));
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
62 return ($city->{buildings}->{warehouse} >= $warehouse[$nextCities]) ? 1 : 0;
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
63 }
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
64
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
65
192
d6dc50b64f06 rules to fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 183
diff changeset
66 sub is_warehouse_enougn_for_governorsresidence {
d6dc50b64f06 rules to fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 183
diff changeset
67 my ($self, $city) = @_;
197
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
68 my @warehouse = (qw/undef undef 0 4 9 16 18 19 20 21 22 23 24 25/);
193
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
69 my @cities = keys(%{$self->{ikariam}->{cities}});
203
60f4ce7e1f63 fixed warehouse level counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 202
diff changeset
70 my $citiesNumber = $#cities + 1;
192
d6dc50b64f06 rules to fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 183
diff changeset
71
203
60f4ce7e1f63 fixed warehouse level counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 202
diff changeset
72 Carp::carp(sprintf("Required warehouse level %s for %s cities, current is %s\n", $warehouse[$citiesNumber], $citiesNumber, $city->{buildings}->{warehouse}));
199
b33c8dbe9b04 fixed is_any_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 198
diff changeset
73 return 0 if(!defined($city->{buildings}->{warehouse}));
203
60f4ce7e1f63 fixed warehouse level counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 202
diff changeset
74 return ($city->{buildings}->{warehouse} >= $warehouse[$citiesNumber]) ? 1 : 0;
192
d6dc50b64f06 rules to fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 183
diff changeset
75 }
d6dc50b64f06 rules to fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 183
diff changeset
76
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
77 sub is_corruption {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
78 my ($self, $city) = @_;
198
2dfeb4371db7 fixed train_navy counting and corruption counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
79 return ($city->{corruption} > 0) ? 1 : 0;
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
80 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
81
193
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
82 sub is_any_corruption {
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
83 my ($self, $city) = @_;
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
84
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
85 foreach (keys(%{$self->{ikariam}->{cities}})) {
199
b33c8dbe9b04 fixed is_any_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 198
diff changeset
86 return 1 if ($self->{ikariam}->{cities}->{$_}->{corruption} > 0);
193
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
87 }
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
88 return 0;
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
89 }
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
90
59
b40f87f16263 fixed a typo.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 58
diff changeset
91 sub is_happiness {
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
92 my ($self, $city) = @_;
137
362184763c04 added comments and added new research (greek fire)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 93
diff changeset
93
139
3bbb1e559e21 we are happy when the city level is more then 20
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 137
diff changeset
94 return ($city->{growth} >= 5 ? 1 : 0)
3bbb1e559e21 we are happy when the city level is more then 20
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 137
diff changeset
95 if($city->{buildings}->{townHall} <= 10);
137
362184763c04 added comments and added new research (greek fire)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 93
diff changeset
96
139
3bbb1e559e21 we are happy when the city level is more then 20
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 137
diff changeset
97 return 1 if($city->{buildings}->{townHall} >= 20);
137
362184763c04 added comments and added new research (greek fire)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 93
diff changeset
98
139
3bbb1e559e21 we are happy when the city level is more then 20
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 137
diff changeset
99 return ($city->{happiness} >= 2 ? 1 : 0);
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
100 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
101
173
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
102 sub is_tavern_available {
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
103 my ($self, $city) = @_;
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
104 return (defined($city->{buildings}->{tavern}) ? 1 : 0);
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
105 }
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
106
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
107 sub is_bacchanal {
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
108 my ($self, $city) = @_;
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
109 return ($city->{tavern}->{maxValue} == $city->{tavern}->{iniValue} ? 1 : 0);
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
110 }
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
111
54
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
112 sub is_gold_enoughforcargo {
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
113 my ($self, $city) = @_;
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
114 my @cargoCost = qw/160 244 396 812 1240 1272 1832 1888 3848 3972 5204 5384 6868 7120 8864 9200 11268 11712 14108 14680 23320 24288 28664 29880 34956 36468 42348 44212 51024 53308 61236 64024 73096 76468 87020 91088 103224 116524 122072 137432 180060 202132 211964 237444 249108 278276 292076 306623 321963 338138 355198 373191 392171 412195 433320 455612 479135 503962 530166 557828 587031 617863 650420 684802 721113 759466 799981 842783 888005 935790 986286 1039654 1096062 1155689 1218724 1285369 1355837 1430353 1509159 1592508 1680670 1773932 1872597 1976989 2087448 2204338 2328045 2458976 2597567 2744276 2899594 3064040 3238163 3422550 3617820 3824635 4043693 4275738 4521561 4782000 5057946 5350345 5660202 5988585 6336630 6705540 7096598 7511164 7950683 8416694 8910828 9434823 9990523 10579889 11205006 11868090 12571498 13317734 14109462 14949514/;
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
115
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
116 if($city->{resources}->{gold} >= ($cargoCost[$city->{transporters}->{sum}]*5)) {
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
117 return 1;
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
118 } else {
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
119 return 0;
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
120 }
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
121 }
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
122
55
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
123 sub is_resource_enoghforHall {
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
124 my ($self, $city) = @_;
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
125 my @wood = qw/udnef 0 70 98 65 129 236 402 594 849 1176 1586 2101 3208 4937 7171 10139 14537 18420 22896 28047 33934 40623 48017 56511 226044 452088 904176 1808352 3616704 7233408 14466816 28933632/;
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
126 my @marble = qw/undef 0 0 17 28 66 95 156 243 406 579 799 1348 2124 2951 4409 6461 8187 10176 12466 15082 18055 21381 25116 100464 200928 401856 803712 1607424 3214848 6429696 12859392/;
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
127
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
128 my $level = $city->{buildings}->{townHall};
56
6e0d5e781949 fixed a typo in agent.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 55
diff changeset
129 if($city->{resources}->{wood} >= $wood[$level] && $city->{resources}->{marble} >= $marble[$level] ) {
55
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
130 return 1;
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
131 }
56
6e0d5e781949 fixed a typo in agent.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 55
diff changeset
132 warn(sprintf("Resource is short for build city hall. wood [%d] marble [%d] ", $wood[$level], $marble[$level]));
55
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
133 return 0;
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
134 }
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
135
57
9307c559f9bf rule for research expansion
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 56
diff changeset
136 sub is_expansion_researched {
9307c559f9bf rule for research expansion
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 56
diff changeset
137 my ($self, $city) = @_;
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
138 # $self->{'ikariam'}->
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
139 return (defined($self->{'ikariam'}->{research}->{1030}) ? 1 : 0);
57
9307c559f9bf rule for research expansion
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 56
diff changeset
140 }
9307c559f9bf rule for research expansion
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 56
diff changeset
141
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
142 sub is_culturalexchange_researched {
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
143 my ($self) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
144 return (defined($self->{'ikariam'}->{research}->{1040}) ? 1 : 0);
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
145 }
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
146
151
7071116f6ae7 fixed research id of greekfire.
chihchun@debian.org.tw
parents: 150
diff changeset
147 sub is_greekfire_researched {
7071116f6ae7 fixed research id of greekfire.
chihchun@debian.org.tw
parents: 150
diff changeset
148 my ($self) = @_;
7071116f6ae7 fixed research id of greekfire.
chihchun@debian.org.tw
parents: 150
diff changeset
149 return (defined($self->{'ikariam'}->{research}->{1060}) ? 1 : 0);
7071116f6ae7 fixed research id of greekfire.
chihchun@debian.org.tw
parents: 150
diff changeset
150 }
7071116f6ae7 fixed research id of greekfire.
chihchun@debian.org.tw
parents: 150
diff changeset
151
58
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
152 sub is_wealth_researched {
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
153 my ($self) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
154 return (defined($self->{'ikariam'}->{research}->{2030}) ? 1 : 0);
58
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
155 }
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
156
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
157 sub is_winepress_researched {
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
158 my ($self) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
159 return (defined($self->{'ikariam'}->{research}->{2040}) ? 1 : 0);
58
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
160 }
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
161
59
b40f87f16263 fixed a typo.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 58
diff changeset
162 sub is_paper_researched {
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
163 my ($self) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
164 return (defined($self->{'ikariam'}->{research}->{3020}) ? 1 : 0);
58
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
165 }
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
166
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
167 sub is_espionage_researched {
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
168 my ($self) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
169 return (defined($self->{'ikariam'}->{research}->{3030}) ? 1 : 0);
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
170 }
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
171
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
172 sub is_invention_researched {
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
173 my ($self) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
174 return (defined($self->{'ikariam'}->{research}->{3040}) ? 1 : 0);
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
175 }
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
176
152
60a09758a885 added research for Museum
chihchun@debian.org.tw
parents: 151
diff changeset
177 sub is_culturalexchange_researched {
60a09758a885 added research for Museum
chihchun@debian.org.tw
parents: 151
diff changeset
178 my ($self) = @_;
60a09758a885 added research for Museum
chihchun@debian.org.tw
parents: 151
diff changeset
179 return (defined($self->{'ikariam'}->{research}->{3060}) ? 1 : 0);
60a09758a885 added research for Museum
chihchun@debian.org.tw
parents: 151
diff changeset
180 }
60a09758a885 added research for Museum
chihchun@debian.org.tw
parents: 151
diff changeset
181
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
182 sub is_professionalarmy_researched {
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
183 my ($self) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
184 return (defined($self->{'ikariam'}->{research}->{4030}) ? 1 : 0);
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
185 }
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
186
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
187 sub is_drydock_researched {
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
188 my ($self) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
189 return (defined($self->{'ikariam'}->{research}->{4010}) ? 1 : 0);
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
190 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
191
67
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
192 sub is_barracks_level_enough {
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
193 my ($self, $city) = @_;
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
194 return 0 if(!defined($city->{buildings}->{barracks}));
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
195 if($city->{buildings}->{townHall} >= 10) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
196 # optimum is 5
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
197 return ($city->{buildings}->{barracks} >= 5 ? 1 : 0);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
198 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
199 # 方陣兵需要 level 4
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
200 return ($city->{buildings}->{barracks} >= 4 ? 1 : 0);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
201 }
67
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
202 }
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
203
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
204 sub is_shipyard_level_enough {
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
205 my ($self, $city) = @_;
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
206 return 0 if(!defined($city->{buildings}->{shipyard}));
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
207 if ($self->is_greekfire_researched() eq 1) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
208 return ($city->{buildings}->{shipyard} >= 5 ? 1 : 0);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
209 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
210 return ($city->{buildings}->{shipyard} >= 3 ? 1 : 0);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
211 }
67
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
212 }
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
213
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
214 sub is_shipyard_upgrading {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
215 my ($self, $city) = @_;
193
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
216 return $self->{'ikariam'}->is_shipyard_upgrading($city->{id});
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
217 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
218
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
219 sub is_navy_trainning {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
220 my ($self, $city) = @_;
193
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
221 return $self->{'ikariam'}->is_navy_trainning($city->{id});
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
222 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
223
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
224 sub train_navy {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
225 my ($self, $city) = @_;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
226 my $cityId = $city->{id};
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
227 # TODO, 依照升級比例算 CP 值最高
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
228 if($self->is_greekfire_researched() eq 1 && $city->{buildings}->{shipyard} >= 5) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
229 # ok, we can build Flamethrower.
198
2dfeb4371db7 fixed train_navy counting and corruption counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
230 if(defined($city->{'fleet'}->{Flamethrower}) && ($city->{'fleet'}->{Flamethrower} > 0)
2dfeb4371db7 fixed train_navy counting and corruption counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
231 && ($city->{'fleet'}->{BallistaShip} / $city->{'fleet'}->{Flamethrower}) <= (1.5/1)) {
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
232 return 213; # 強弩船
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
233 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
234 return 211; # 噴火船
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
235 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
236 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
237 return 213; # 強弩船
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
238 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
239 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
240
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
241 sub is_barracks_upgrading {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
242 my ($self, $city) = @_;
197
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
243 return $self->{ikariam}->is_barracks_upgrading($city->{id});
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
244 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
245
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
246 sub is_army_trainning {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
247 my ($self, $city) = @_;
193
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
248 return $self->{ikariam}->is_army_trainning($city->{id});
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
249 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
250 sub train_army {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
251 my ($self, $city) = @_;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
252 my $cityId = $city->{id};
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
253
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
254 # TODO, 依照升級比例算 CP 值最高
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
255 my $assault = 'Swordsman';
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
256 my $resistance = 'Phalanx';
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
257
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
258 # ok, we can build Flamethrower.
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
259 if(($city->{'army'}->{$assault} / $city->{'army'}->{$resistance}) <= (2/1)) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
260 return 302; # Swordsman
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
261 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
262 return 303; # Phalanx
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
263 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
264 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
265
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
266 # navy
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
267 sub is_navyExpenditure_available
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
268 {
197
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
269 my ($self, $city) = @_;
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
270 my $cityId = $city->{id};
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
271
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
272 # move this to somewhere else.
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
273 my $workersRatio = {
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
274 'citizens' => 0.4,
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
275 'specialworkers' => 0.3,
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
276 'woodworkers' => 0.7,
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
277 };
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
278
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
279 my $currentCost = $self->{'ikariam'}->getNavyExpenditure($cityId);
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
280 my $netincome = $self->{'ikariam'}->getNetIncome($cityId);
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
281
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
282 # 軍費為 兩成 淨收入
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
283 # 陸軍佔用 0.3
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
284 # 海軍佔用 0.7
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
285 my $militaryExpenditure = int($netincome * 0.2 * 0.7);
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
286
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
287 if($currentCost < $militaryExpenditure) {
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
288 printf("Current navy expenditure total=%s, affordable %s\n", $currentCost, $militaryExpenditure);
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
289 return 1;
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
290 }
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
291 return 0;
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
292 }
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
293
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
294 # army
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
295 sub is_milityExpenditure_available
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
296 {
197
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
297 my ($self, $city) = @_;
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
298 my $cityId = $city->{id};
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
299
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
300 # move this to somewhere else.
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
301 my $workersRatio = {
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
302 'citizens' => 0.4,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
303 'specialworkers' => 0.3,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
304 'woodworkers' => 0.7,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
305 };
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
306
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
307 my $currentCost = $self->{'ikariam'}->getMilityExpenditure($cityId);
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
308 my $netincome = $self->{'ikariam'}->getNetIncome($cityId);
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
309
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
310 # 軍費為 兩成 淨收入
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
311 # 陸軍佔用 0.3
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
312 # 海軍佔用 0.7
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
313
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
314 my $militaryExpenditure = int($netincome * 0.2 * 0.3);
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
315
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
316 if($currentCost < $militaryExpenditure) {
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
317 Carp::carp("Current army expenditure total=%s, affordable %s\n", $currentCost, $militaryExpenditure);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
318 return 1;
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
319 }
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
320 return 0;
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
321 }
207
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 206
diff changeset
322
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
323 1;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
324
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
325
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
326 package main;
84
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 82
diff changeset
327 my $verbose = 1;
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
328
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
329 our $i = new Ikariam($::server, $::user, $::pass);
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
330 $i->login;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
331 my $cities = $i->check;
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
332
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
333 # Genereic rules for both overall and city level arranagement.
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
334 my $rules = Ikariam::Cities::Rules->new($i);
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
335 # blanace resources, arrange defance
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
336 my $tree = LoadFile('overall.yaml');
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
337 my $decision; $decision->{parse_path} = []; $decision->{parse_answer} = undef;
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
338 my $action = ParseTree($tree, $rules, $decision);
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
339 triggerAction($action, (keys(%$cities))[0]) if(defined($action));
137
362184763c04 added comments and added new research (greek fire)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 93
diff changeset
340 # print STDERR Dump($decision) if(defined($verbose));
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
341
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
342 # show cities.
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
343 foreach my $cityId (keys(%$cities)) {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
344 printf("%s http://%s/index.php?view=city&id=%d\n",
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
345 $cities->{$cityId}->{name}, $::server, $cityId);
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
346 printf("construction: %s\n", $cities->{$cityId}->{construction});
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
347
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 74
diff changeset
348 foreach my $thing (qw/resources space buildings citizens army fleet/) {
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
349 printf("<%s>\n", uc($thing));
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
350 foreach my $i (keys(%{$cities->{$cityId}->{$thing}})) {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
351 printf("%s %s, ", $i, $cities->{$cityId}->{$thing}->{$i});
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
352 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
353 print("\n");
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
354 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
355 print("\n");
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
356
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
357 # maybe this should be moved to Rules.
84
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 82
diff changeset
358 $i->blanceHurmanResource($cityId);
207
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 206
diff changeset
359
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 206
diff changeset
360 # build spy
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 206
diff changeset
361 $i->buildSpy('spy', $cityId);
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 206
diff changeset
362
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 206
diff changeset
363 # build military!
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
364 $tree = LoadFile('military.yaml');
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
365 $cities->{$cityId}->{parse_path} = [];
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
366 $cities->{$cityId}->{parse_answer} = undef;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
367 if (my $action = ParseTree($tree, $rules, $cities->{$cityId})) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
368 triggerAction($action, $cityId);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
369 }
208
a2bb38589172 refined debug file name
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
370 DumpFile("military-$cityId-dump.yaml", $cities->{$cityId});
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
371
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
372 # build and upgrade for cities
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
373 $tree = LoadFile('city.yaml');
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
374 $cities->{$cityId}->{parse_path} = [];
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
375 $cities->{$cityId}->{parse_answer} = undef;
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
376 if (my $action = ParseTree($tree, $rules, $cities->{$cityId})) {
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
377 triggerAction($action, $cityId);
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
378 }
208
a2bb38589172 refined debug file name
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
379 DumpFile("city-$cityId-dump.yaml", $cities->{$cityId});
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
380 }
150
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 144
diff changeset
381 DumpFile("research-dump.yaml", $i->{'research'});
208
a2bb38589172 refined debug file name
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
382 DumpFile("wares-dump.yaml", $i->{'military'});
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
383
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
384 $i->logout;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
385
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
386 sub triggerAction {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
387 my ($action, $cityId) = @_;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
388
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
389 my ($func, $param) = split(/_/,$action);
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
390 printf('$i->%s("%s", %s);'. "\n", $func, $param, $cityId);
93
73f0a1cafc23 upgrade townHall first, then the wall.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 89
diff changeset
391 eval(sprintf('$i->%s("%s", %s);', $func, $param, $cityId));
73f0a1cafc23 upgrade townHall first, then the wall.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 89
diff changeset
392 warn $@ if $@;
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
393 }