Mercurial > eagle-eye
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 | 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 | 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; |