annotate warfare.pl @ 232:978a949602e5

Auto-update Scientists numbers for Academy. Refined the rules for safehouse, the safe house must be same or higher level then Town Hall. Make people very happy, when the townHall is less then 16. Build museum first then tavern THG: changed warfare.pl
author "Rex Tsai <chihchun@kalug.linux.org.tw>"
date Thu, 06 Nov 2008 20:31:05 +0800
parents 31fca1e55ed5
children 64549ddddf4a
rev   line source
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1 #!/usr/bin/perl
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
2 use strict;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
3 use Ikariam;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
4 use Data::Dumper;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
5 use Decision::ParseTree q{ParseTree};
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
6 use YAML qw/LoadFile Dump DumpFile/;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
7
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
8 package Ikariam::Warfare::Rules;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
9 use strict;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
10 use Data::Dumper;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
11
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
12 Ikariam::User->has_many(cities => 'Ikariam::Cities');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
13 Ikariam::Cities->has_a(user => 'Ikariam::User');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
14 Ikariam::Cities->has_a(island => 'Ikariam::Island');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
15 Ikariam::Cities->set_sql(sheeps => qq {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
16 SELECT cities.cityId
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
17 FROM user, cities
125
4374173bab47 collect hometown island information.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 124
diff changeset
18 WHERE user.id = cities.user
4374173bab47 collect hometown island information.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 124
diff changeset
19 AND user.army_score_main = 0
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
20 AND cities.island IN (SELECT island.id FROM island WHERE island.x <= ? AND island.x >= ? AND island.y <= ? AND island.y >= ? )
128
2ff3704cca0e fixed for ignore same tradegood.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 127
diff changeset
21 ORDER BY cities.citylevel * (cities.citylevel - 1) * user.trader_score_secondary / 10000 DESC
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
22 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
23 );
135
4194f261798b check for transporters is available
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 128
diff changeset
24
108
d3bece9b06b2 fixed the couting *again*
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 107
diff changeset
25 Ikariam::Report->set_sql(victim => qq {
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
26 SELECT report.id
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
27 FROM report
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
28 WHERE report.city = ?
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
29 AND report.date >= ?
108
d3bece9b06b2 fixed the couting *again*
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 107
diff changeset
30 }
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
31 );
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
32
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
33 sub new {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
34 my ( $class, $i ) = @_;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
35 my $self = {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
36 ikariam => $i,
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
37 };
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
38 return bless $self, $class;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
39 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
40
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
41 sub is_attacked {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
42 my ($self, $city) = @_;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
43 return ($self->{'ikariam'}->{'military'}->{attacks} > 0 ) ? 1 : 0;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
44 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
45
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
46 sub is_actionPoint_enough {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
47 my ($self, $city) = @_;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
48 return ($city->{actionPoints} > ($city->{maxActionPoints}/2) ) ? 1 : 0;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
49 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
50
135
4194f261798b check for transporters is available
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 128
diff changeset
51 sub is_transporters_available {
4194f261798b check for transporters is available
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 128
diff changeset
52 my ($self, $city) = @_;
205
d9f17bcbf1f1 we keep 10 transporters for prize
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
53 # we keep 10 transporters for prize
d9f17bcbf1f1 we keep 10 transporters for prize
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
54 return ($city->{transporters}->{avail} > 10) ? 1 : 0;
135
4194f261798b check for transporters is available
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 128
diff changeset
55 }
4194f261798b check for transporters is available
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 128
diff changeset
56
179
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 157
diff changeset
57 sub is_port_available {
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 157
diff changeset
58 my ($self, $city) = @_;
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 157
diff changeset
59 foreach(1..2) {
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 157
diff changeset
60 return 1 if($city->{locations}[$_] eq 'port');
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 157
diff changeset
61 }
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 157
diff changeset
62 return 0;
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 157
diff changeset
63 }
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 157
diff changeset
64
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
65 sub is_army_available {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
66 my ($self, $city) = @_;
122
11541129a389 fixed for counting ally members.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 108
diff changeset
67 return ($city->{army}->{Swordsman} >= 2 ) ? 1 : 0;
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
68 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
69
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
70 sub locateVictim {
127
a5517f0abb85 fixed a small missed param.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
71 my ($self, $city, $x, $y, $tradegood) = @_;
153
25dcc1fffeef friend or foe identification
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 135
diff changeset
72
157
4b5e1d3a5198 fixed a typo.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 156
diff changeset
73 my $user = Ikariam::User->retrieve('name' => $::user);
153
25dcc1fffeef friend or foe identification
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 135
diff changeset
74
128
2ff3704cca0e fixed for ignore same tradegood.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 127
diff changeset
75 my @cities = Ikariam::Cities->search_sheeps(($x + 6), ($x - 6), ($y + 6), ($y - 6));
156
ba7a805b3fe4 added new feature - don't fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 155
diff changeset
76 CITY: foreach my $city (@cities) {
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
77 my $sheep = $city->user;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
78 my $island = $city->island;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
79
232
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 209
diff changeset
80 # TODO update sheep and island information.
156
ba7a805b3fe4 added new feature - don't fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 155
diff changeset
81
ba7a805b3fe4 added new feature - don't fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 155
diff changeset
82 # we don't fight friends.
ba7a805b3fe4 added new feature - don't fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 155
diff changeset
83 # FIXME: This is very dirty for accessing to $::i directly.
ba7a805b3fe4 added new feature - don't fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 155
diff changeset
84 foreach (keys(%{$::i->{friends}})) {
ba7a805b3fe4 added new feature - don't fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 155
diff changeset
85 next CITY if ($sheep->id == $_);
ba7a805b3fe4 added new feature - don't fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 155
diff changeset
86 }
ba7a805b3fe4 added new feature - don't fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 155
diff changeset
87
153
25dcc1fffeef friend or foe identification
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 135
diff changeset
88 # we don't fight with members in same ally.
25dcc1fffeef friend or foe identification
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 135
diff changeset
89 next if($sheep->allyId == $user->allyId);
156
ba7a805b3fe4 added new feature - don't fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 155
diff changeset
90
128
2ff3704cca0e fixed for ignore same tradegood.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 127
diff changeset
91 # we fight for island which ownes differnet trade goods.
2ff3704cca0e fixed for ignore same tradegood.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 127
diff changeset
92 next if($island->tradegood == $tradegood);
124
f8c97e5d77ab translated comments.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 122
diff changeset
93 # Ignore the user in vacation which we can not attack.
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
94 next if($city->status eq 'v');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
95 unless ($city->status eq 'i') {
122
11541129a389 fixed for counting ally members.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 108
diff changeset
96 unless (!defined($sheep->allyId) || $sheep->allyId == 0) {
11541129a389 fixed for counting ally members.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 108
diff changeset
97 my $ally = Ikariam::Ally->retrieve($sheep->allyId);
11541129a389 fixed for counting ally members.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 108
diff changeset
98 # Ignore the ally which have more then 10 members.
11541129a389 fixed for counting ally members.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 108
diff changeset
99 # We don't want to piss off the big team.
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
100 next if(defined($ally) && $ally->members > 10);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
101 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
102 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
103
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
104 # check if we over-attacked
108
d3bece9b06b2 fixed the couting *again*
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 107
diff changeset
105 my $c = Ikariam::Report->search_victim($city->cityId, time - 24*60*60 - 7*60*60)->count();
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
106 # check the current plunders
108
d3bece9b06b2 fixed the couting *again*
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 107
diff changeset
107 foreach (@{$self->{ikariam}->{'military'}->{'homeland'}}) {
122
11541129a389 fixed for counting ally members.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 108
diff changeset
108 # counting for both leaving and coming back.
108
d3bece9b06b2 fixed the couting *again*
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 107
diff changeset
109 $c++ if($_->{to} == $city->cityId || $_->{from} == $city->cityId);
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
110 }
122
11541129a389 fixed for counting ally members.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 108
diff changeset
111 # we attack one city maximum 4 times a day.
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
112 next if($c >= 4);
107
554bdd49c703 we should also count the force which is coming back
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 105
diff changeset
113
209
31fca1e55ed5 we don't fight with sheep has only a little money
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
114 my $capture = $city->citylevel * ($city->citylevel - 1) * $sheep->trader_score_secondary / 10000;
31fca1e55ed5 we don't fight with sheep has only a little money
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
115 next if($capture < 1500);
31fca1e55ed5 we don't fight with sheep has only a little money
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
116
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
117 # {
122
11541129a389 fixed for counting ally members.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 108
diff changeset
118 my $line = sprintf("%d %s [%d,%d] %s (%d) %s Attacked %d",
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
119 $capture, $city->status,
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
120 $island->x, $island->y,
104
b369fe3c1992 fixed typo and war counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 101
diff changeset
121 $city->cityname, $city->cityId,
122
11541129a389 fixed for counting ally members.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 108
diff changeset
122 $sheep->name, $c);
11541129a389 fixed for counting ally members.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 108
diff changeset
123
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
124 printf("%s\n", $line);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
125 # }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
126 return $city->cityId;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
127 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
128 return undef;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
129 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
130
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
131 sub engagement {
125
4374173bab47 collect hometown island information.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 124
diff changeset
132 my ($self, $cityId, $x, $y, $tradegood) = @_;
4374173bab47 collect hometown island information.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 124
diff changeset
133 my $victim = $self->locateVictim($cityId, $x, $y, $tradegood);
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
134 if(defined($victim)) {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
135 $self->{ikariam}->changeCity($cityId);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
136 $self->{ikariam}->plunderCity($victim);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
137 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
138 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
139
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
140 1;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
141
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
142 package main;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
143
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
144 our $i = new Ikariam($::server, $::user, $::pass);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
145 our $rules = Ikariam::Warfare::Rules->new($i);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
146
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
147 $i->login;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
148 my $cities = $i->check;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
149 $i->checkMilitaryAdvisorCombatReports();
197
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 179
diff changeset
150 $i->checkFriends();
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
151
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
152 foreach my $cityId (keys(%$cities)) {
105
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 104
diff changeset
153 print Dump($i->{'military'});
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
154 # build and upgrade for cities
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
155 my $tree = LoadFile('warfare.yaml');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
156 $cities->{$cityId}->{parse_path} = [];
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
157 $cities->{$cityId}->{parse_answer} = undef;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
158 if(ParseTree($tree, $rules, $cities->{$cityId}) eq 'engagement') {
128
2ff3704cca0e fixed for ignore same tradegood.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 127
diff changeset
159 my $island = Ikariam::Island->retrieve($cities->{$cityId}->{island}->{id});
125
4374173bab47 collect hometown island information.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 124
diff changeset
160 $rules->engagement($cityId, $island->{x}, $island->{y}, $island->tradegood);
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
161 sleep(30);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
162 $i->checkMilitaryAdvisorMilitaryMovements();
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
163 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
164 print Dump($cities->{$cityId}->{parse_path});
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
165 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
166 DumpFile("warfare-dump.yaml", $cities);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
167
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
168 $i->logout;