annotate agent.pl @ 228:d54e2041e4aa

fix the problem of gmail client for unread subject rules.
author kevin@59-125-147-75.HINET-IP.hinet.net
date Wed, 05 Nov 2008 00:21:57 +0800
parents f6836ef11203
children 978a949602e5 afd3f5cb8597 a89e049d1d31
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
212
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
39 sub is_academy_enough {
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
40 my ($self, $city) = @_;
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
41 return ($city->{buildings}->{academy} >= 6 ? 1 : 0);
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
42 }
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
43
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
44 sub is_embassy_enough {
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
45 my ($self, $city) = @_;
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
46 return ($city->{buildings}->{embassy} >= 6 ? 1 : 0);
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
47 }
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
48
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
49 sub is_museum_enough {
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
50 my ($self, $city) = @_;
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
51 return ($city->{buildings}->{museum} >= 2 ? 1 : 0);
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
52 }
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
53
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
54 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
55 my ($self, $city) = @_;
137
362184763c04 added comments and added new research (greek fire)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 93
diff changeset
56 # 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
57 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
58 # TODO 應該以 成長率 * 升級所需時間計算
362184763c04 added comments and added new research (greek fire)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 93
diff changeset
59 # 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
60 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
61 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
62
206
b7af307a222d added build safehouse
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 203
diff changeset
63 sub is_safehouse_enough {
b7af307a222d added build safehouse
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 203
diff changeset
64 my ($self, $city) = @_;
214
f6836ef11203 fixed a typo.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 212
diff changeset
65 return 0 if(!defined($city->{buildings}->{safehouse}));
f6836ef11203 fixed a typo.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 212
diff changeset
66 return (($city->{buildings}->{townHall} <= ($city->{buildings}->{safehouse} + 4)) ? 0 : 1);
206
b7af307a222d added build safehouse
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 203
diff changeset
67 }
b7af307a222d added build safehouse
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 203
diff changeset
68
202
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
69 sub is_warehouse_enough {
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
70 my ($self, $city) = @_;
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
71 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
72 my @cities = keys(%{$self->{ikariam}->{cities}});
203
60f4ce7e1f63 fixed warehouse level counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 202
diff changeset
73 my $nextCities = ($#cities + 1) + 1;
202
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
74
203
60f4ce7e1f63 fixed warehouse level counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 202
diff changeset
75 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
76 return 0 if(!defined($city->{buildings}->{warehouse}));
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
77 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
78 }
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
79
2c2dcbcc5c4d upgrade warehouse for next city
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 201
diff changeset
80
192
d6dc50b64f06 rules to fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 183
diff changeset
81 sub is_warehouse_enougn_for_governorsresidence {
d6dc50b64f06 rules to fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 183
diff changeset
82 my ($self, $city) = @_;
197
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
83 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
84 my @cities = keys(%{$self->{ikariam}->{cities}});
203
60f4ce7e1f63 fixed warehouse level counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 202
diff changeset
85 my $citiesNumber = $#cities + 1;
192
d6dc50b64f06 rules to fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 183
diff changeset
86
203
60f4ce7e1f63 fixed warehouse level counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 202
diff changeset
87 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
88 return 0 if(!defined($city->{buildings}->{warehouse}));
203
60f4ce7e1f63 fixed warehouse level counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 202
diff changeset
89 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
90 }
d6dc50b64f06 rules to fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 183
diff changeset
91
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
92 sub is_corruption {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
93 my ($self, $city) = @_;
198
2dfeb4371db7 fixed train_navy counting and corruption counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
94 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
95 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
96
193
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
97 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
98 my ($self, $city) = @_;
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
99
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
100 foreach (keys(%{$self->{ikariam}->{cities}})) {
199
b33c8dbe9b04 fixed is_any_corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 198
diff changeset
101 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
102 }
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
103 return 0;
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
104 }
a6a4a48d5fda we don't bulid anything, untill we fix corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 192
diff changeset
105
59
b40f87f16263 fixed a typo.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 58
diff changeset
106 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
107 my ($self, $city) = @_;
137
362184763c04 added comments and added new research (greek fire)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 93
diff changeset
108
139
3bbb1e559e21 we are happy when the city level is more then 20
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 137
diff changeset
109 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
110 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
111
139
3bbb1e559e21 we are happy when the city level is more then 20
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 137
diff changeset
112 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
113
139
3bbb1e559e21 we are happy when the city level is more then 20
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 137
diff changeset
114 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
115 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
116
173
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
117 sub is_tavern_available {
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
118 my ($self, $city) = @_;
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
119 return (defined($city->{buildings}->{tavern}) ? 1 : 0);
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
120 }
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
121
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
122 sub is_bacchanal {
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
123 my ($self, $city) = @_;
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
124 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
125 }
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 152
diff changeset
126
54
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
127 sub is_gold_enoughforcargo {
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
128 my ($self, $city) = @_;
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
129 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
130
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
131 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
132 return 1;
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
133 } else {
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
134 return 0;
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
135 }
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
136 }
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
137
55
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
138 sub is_resource_enoghforHall {
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
139 my ($self, $city) = @_;
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
140 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
141 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
142
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
143 my $level = $city->{buildings}->{townHall};
56
6e0d5e781949 fixed a typo in agent.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 55
diff changeset
144 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
145 return 1;
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
146 }
56
6e0d5e781949 fixed a typo in agent.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 55
diff changeset
147 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
148 return 0;
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
149 }
ff00d108e955 check resources for build_townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 54
diff changeset
150
57
9307c559f9bf rule for research expansion
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 56
diff changeset
151 sub is_expansion_researched {
9307c559f9bf rule for research expansion
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 56
diff changeset
152 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
153 # $self->{'ikariam'}->
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}->{1030}) ? 1 : 0);
57
9307c559f9bf rule for research expansion
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 56
diff changeset
155 }
9307c559f9bf rule for research expansion
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 56
diff changeset
156
212
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
157 sub is_foreigncultures_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}->{1040}) ? 1 : 0);
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
160 }
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
161
151
7071116f6ae7 fixed research id of greekfire.
chihchun@debian.org.tw
parents: 150
diff changeset
162 sub is_greekfire_researched {
7071116f6ae7 fixed research id of greekfire.
chihchun@debian.org.tw
parents: 150
diff changeset
163 my ($self) = @_;
7071116f6ae7 fixed research id of greekfire.
chihchun@debian.org.tw
parents: 150
diff changeset
164 return (defined($self->{'ikariam'}->{research}->{1060}) ? 1 : 0);
7071116f6ae7 fixed research id of greekfire.
chihchun@debian.org.tw
parents: 150
diff changeset
165 }
7071116f6ae7 fixed research id of greekfire.
chihchun@debian.org.tw
parents: 150
diff changeset
166
212
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
167 sub is_conservation_researched {
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
168 my ($self) = @_;
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
169 return (defined($self->{'ikariam'}->{research}->{2010}) ? 1 : 0);
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
170 }
5f94d8d8370a build embassy, museum, academy
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 208
diff changeset
171
58
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
172 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
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}->{2030}) ? 1 : 0);
58
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
175 }
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
176
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
177 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
178 my ($self) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
179 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
180 }
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
181
59
b40f87f16263 fixed a typo.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 58
diff changeset
182 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
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}->{3020}) ? 1 : 0);
58
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
185 }
46e60bb040ad list down the basic research.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 57
diff changeset
186
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
187 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
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}->{3030}) ? 1 : 0);
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
190 }
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
191
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
192 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
193 my ($self) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
194 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
195 }
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
196
152
60a09758a885 added research for Museum
chihchun@debian.org.tw
parents: 151
diff changeset
197 sub is_culturalexchange_researched {
60a09758a885 added research for Museum
chihchun@debian.org.tw
parents: 151
diff changeset
198 my ($self) = @_;
60a09758a885 added research for Museum
chihchun@debian.org.tw
parents: 151
diff changeset
199 return (defined($self->{'ikariam'}->{research}->{3060}) ? 1 : 0);
60a09758a885 added research for Museum
chihchun@debian.org.tw
parents: 151
diff changeset
200 }
60a09758a885 added research for Museum
chihchun@debian.org.tw
parents: 151
diff changeset
201
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
202 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
203 my ($self) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
204 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
205 }
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
206
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
207 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
208 my ($self) = @_;
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
209 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
210 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
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 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
213 my ($self, $city) = @_;
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
214 return 0 if(!defined($city->{buildings}->{barracks}));
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
215 if($city->{buildings}->{townHall} >= 10) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
216 # optimum is 5
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
217 return ($city->{buildings}->{barracks} >= 5 ? 1 : 0);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
218 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
219 # 方陣兵需要 level 4
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
220 return ($city->{buildings}->{barracks} >= 4 ? 1 : 0);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
221 }
67
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
222 }
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
223
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
224 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
225 my ($self, $city) = @_;
74
27b16506231f improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 72
diff changeset
226 return 0 if(!defined($city->{buildings}->{shipyard}));
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
227 if ($self->is_greekfire_researched() eq 1) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
228 return ($city->{buildings}->{shipyard} >= 5 ? 1 : 0);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
229 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
230 return ($city->{buildings}->{shipyard} >= 3 ? 1 : 0);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
231 }
67
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
232 }
6eccb3a95df5 refiended the research of tech tree, and added many todos
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 59
diff changeset
233
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
234 sub is_shipyard_upgrading {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
235 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
236 return $self->{'ikariam'}->is_shipyard_upgrading($city->{id});
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
237 }
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 sub is_navy_trainning {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
240 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
241 return $self->{'ikariam'}->is_navy_trainning($city->{id});
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
242 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
243
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
244 sub train_navy {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
245 my ($self, $city) = @_;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
246 my $cityId = $city->{id};
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
247 # TODO, 依照升級比例算 CP 值最高
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
248 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
249 # 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
250 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
251 && ($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
252 return 213; # 強弩船
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
253 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
254 return 211; # 噴火船
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
255 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
256 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
257 return 213; # 強弩船
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
258 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
259 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
260
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
261 sub is_barracks_upgrading {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
262 my ($self, $city) = @_;
197
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
263 return $self->{ikariam}->is_barracks_upgrading($city->{id});
183
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
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
266 sub is_army_trainning {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
267 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
268 return $self->{ikariam}->is_army_trainning($city->{id});
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
269 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
270 sub train_army {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
271 my ($self, $city) = @_;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
272 my $cityId = $city->{id};
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
273
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
274 # TODO, 依照升級比例算 CP 值最高
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
275 my $assault = 'Swordsman';
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
276 my $resistance = 'Phalanx';
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
277
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
278 # ok, we can build Flamethrower.
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
279 if(($city->{'army'}->{$assault} / $city->{'army'}->{$resistance}) <= (2/1)) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
280 return 302; # Swordsman
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
281 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
282 return 303; # Phalanx
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
283 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
284 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
285
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
286 # navy
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
287 sub is_navyExpenditure_available
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
288 {
197
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
289 my ($self, $city) = @_;
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
290 my $cityId = $city->{id};
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
291
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
292 # move this to somewhere else.
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
293 my $workersRatio = {
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
294 'citizens' => 0.4,
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
295 'specialworkers' => 0.3,
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
296 'woodworkers' => 0.7,
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
297 };
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
298
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
299 my $currentCost = $self->{'ikariam'}->getNavyExpenditure($cityId);
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
300 my $netincome = $self->{'ikariam'}->getNetIncome($cityId);
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
301
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
302 # 軍費為 兩成 淨收入
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
303 # 陸軍佔用 0.3
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
304 # 海軍佔用 0.7
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
305 my $militaryExpenditure = int($netincome * 0.2 * 0.7);
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
306
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
307 if($currentCost < $militaryExpenditure) {
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
308 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
309 return 1;
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
310 }
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
311 return 0;
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
312 }
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
313
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
314 # army
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
315 sub is_milityExpenditure_available
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
316 {
197
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
317 my ($self, $city) = @_;
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
318 my $cityId = $city->{id};
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 193
diff changeset
319
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
320 # move this to somewhere else.
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
321 my $workersRatio = {
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
322 'citizens' => 0.4,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
323 'specialworkers' => 0.3,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
324 'woodworkers' => 0.7,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
325 };
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
326
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
327 my $currentCost = $self->{'ikariam'}->getMilityExpenditure($cityId);
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
328 my $netincome = $self->{'ikariam'}->getNetIncome($cityId);
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
329
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
330 # 軍費為 兩成 淨收入
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
331 # 陸軍佔用 0.3
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
332 # 海軍佔用 0.7
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
333
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
334 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
335
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
336 if($currentCost < $militaryExpenditure) {
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
337 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
338 return 1;
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
339 }
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
340 return 0;
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
341 }
207
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 206
diff changeset
342
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
343 1;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
344
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
345
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
346 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
347 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
348
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
349 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
350 $i->login;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
351 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
352
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
353 # 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
354 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
355 # 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
356 my $tree = LoadFile('overall.yaml');
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
357 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
358 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
359 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
360 # 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
361
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
362 # show cities.
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
363 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
364 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
365 $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
366 printf("construction: %s\n", $cities->{$cityId}->{construction});
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
367
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 74
diff changeset
368 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
369 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
370 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
371 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
372 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
373 print("\n");
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
374 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
375 print("\n");
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
376
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
377 # 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
378 $i->blanceHurmanResource($cityId);
207
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 206
diff changeset
379
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 206
diff changeset
380 # build spy
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 206
diff changeset
381 $i->buildSpy('spy', $cityId);
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 206
diff changeset
382
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 206
diff changeset
383 # build military!
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
384 $tree = LoadFile('military.yaml');
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
385 $cities->{$cityId}->{parse_path} = [];
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
386 $cities->{$cityId}->{parse_answer} = undef;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
387 if (my $action = ParseTree($tree, $rules, $cities->{$cityId})) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
388 triggerAction($action, $cityId);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
389 }
208
a2bb38589172 refined debug file name
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
390 DumpFile("military-$cityId-dump.yaml", $cities->{$cityId});
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
391
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
392 # 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
393 $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
394 $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
395 $cities->{$cityId}->{parse_answer} = undef;
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 173
diff changeset
396 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
397 triggerAction($action, $cityId);
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
398 }
208
a2bb38589172 refined debug file name
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
399 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
400 }
150
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 144
diff changeset
401 DumpFile("research-dump.yaml", $i->{'research'});
208
a2bb38589172 refined debug file name
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
402 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
403
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
404 $i->logout;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
405
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
406 sub triggerAction {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
407 my ($action, $cityId) = @_;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
408
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
409 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
410 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
411 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
412 warn $@ if $@;
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
413 }