Merge lp:~widelands-dev/widelands/ai_level_names into lp:widelands

Proposed by GunChleoc on 2015-12-06
Status: Merged
Merged at revision: 7658
Proposed branch: lp:~widelands-dev/widelands/ai_level_names
Merge into: lp:widelands
Diff against target: 703 lines (+116/-98)
32 files modified
campaigns/bar02.wmf/player_names (+3/-3)
maps/The Green Plateau.wmf/player_names (+3/-3)
maps/Trident of Fire.wmf/player_names (+5/-5)
scripting/widelands/multiplayer_help.lua (+1/-1)
src/ai/ai_hints.cc (+2/-2)
src/ai/ai_hints.h (+5/-5)
src/ai/computer_player.cc (+7/-3)
src/ai/computer_player.h (+2/-0)
src/ai/defaultai.cc (+14/-14)
src/ai/defaultai.h (+21/-15)
src/wui/multiplayersetupgroup.cc (+8/-4)
src/wui/playerdescrgroup.cc (+5/-3)
test/maps/lua_testsuite.wmf/player_names (+2/-2)
tribes/buildings/productionsites/atlanteans/sawmill/init.lua (+2/-2)
tribes/buildings/productionsites/atlanteans/smelting_works/init.lua (+2/-2)
tribes/buildings/productionsites/atlanteans/smokery/init.lua (+2/-2)
tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua (+2/-2)
tribes/buildings/productionsites/barbarians/lime_kiln/init.lua (+2/-2)
tribes/buildings/productionsites/barbarians/smelting_works/init.lua (+2/-2)
tribes/buildings/productionsites/barbarians/wood_hardener/init.lua (+2/-2)
tribes/buildings/productionsites/empire/brewery/init.lua (+2/-2)
tribes/buildings/productionsites/empire/sawmill/init.lua (+2/-2)
tribes/buildings/productionsites/empire/smelting_works/init.lua (+2/-2)
tribes/buildings/productionsites/empire/stonemasons_house/init.lua (+2/-2)
tribes/buildings/productionsites/empire/winery/init.lua (+2/-2)
tribes/buildings/trainingsites/atlanteans/dungeon/init.lua (+2/-2)
tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua (+2/-2)
tribes/buildings/trainingsites/barbarians/battlearena/init.lua (+2/-2)
tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua (+2/-2)
tribes/buildings/trainingsites/empire/arena/init.lua (+2/-2)
tribes/buildings/trainingsites/empire/colosseum/init.lua (+2/-2)
tribes/buildings/trainingsites/empire/trainingcamp/init.lua (+2/-2)
To merge this branch: bzr merge lp:~widelands-dev/widelands/ai_level_names
Reviewer Review Type Date Requested Status
Widelands Developers 2015-12-06 Pending
Review via email: mp+279697@code.launchpad.net

Description of the change

Renamed AI levels to "Normal", "Weak", "Very Weak".

AI names and icon filenames are now independent of their descnames.

pics/ai_strong.png is now unused, but I am having trouble grabbing the media repro, so I left it in for now. It should be moved over there though, because we're currently not using it, but we don't want to lose the graphic for when we do have a strong AI in the future.

To post a comment you must log in.
7661. By GunChleoc on 2015-12-06

Fixed a typo.

TiborB (tiborb95) wrote :

Code looks good. If somebody compiles and tests it, give "approve", please.

(I wonder if there will be such volunteer :) )

GunChleoc (gunchleoc) wrote :

I have posted on the forum to give this branch testing priority - hopefully somebody will find the time :)

kaputtnik (franku) wrote :

> pics/ai_strong.png is now unused

I could put it into the media branch.

Currently i compile this branch and try to test the changes. After i am ready i will update this branch (removing the png file) and update the media branch also.

GunChleoc (gunchleoc) wrote :

Thanks! You can delete the file from this branch with "bzr rm <filename>" if you want to take care of that too.

7662. By kaputtnik on 2015-12-07

removed ai_strong.png; fixed crash in multiplayer help

kaputtnik (franku) wrote :

I know how to remove a file ;) Thanks anyway. I've removed the file and tested the interface by clicking around and cycle through the ai levels... play tested only by starting a game both in multiplayer and normal mode.

There is a crash when hitting the help button in multiplayer mode:

terminate called after throwing an instance of 'ImageNotFound'
  what(): [/home/kaputtnik/Quellcode/widelands-repo/ai_level_names/src/graphic/image_io.h:35] Image not found: pics/ai_Normal.png

I fixed this by editing scripting/widelands/multiplayer_help.lua and changed string "ai_Normal.png" to "ai_normal.png" (all lowercase letters). I've also checked if one of the other uppercase file names occur by searching for them in all of the widelands files -> no further occurrence where found.

So for the interface it seems to look good :-)

GunChleoc (gunchleoc) wrote :

Thanks! Your fix is correct, so this branch is ready to go :)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'campaigns/bar02.wmf/player_names'
2--- campaigns/bar02.wmf/player_names 2010-03-11 17:46:46 +0000
3+++ campaigns/bar02.wmf/player_names 2015-12-07 18:58:53 +0000
4@@ -10,14 +10,14 @@
5 [player_2]
6 name="Kalitath"
7 tribe="barbarians"
8-ai="Defensive"
9+ai="very_weak"
10
11 [player_3]
12 name="First Brother"
13 tribe="barbarians"
14-ai="Aggressive"
15+ai="normal"
16
17 [player_4]
18 name="Second Brother"
19 tribe="barbarians"
20-ai="Aggressive"
21+ai="normal"
22
23=== modified file 'maps/The Green Plateau.wmf/player_names'
24--- maps/The Green Plateau.wmf/player_names 2015-11-01 22:12:57 +0000
25+++ maps/The Green Plateau.wmf/player_names 2015-12-07 18:58:53 +0000
26@@ -12,17 +12,17 @@
27 [player_2]
28 name="Erwyn"
29 tribe="barbarians"
30-ai="Normal"
31+ai="weak"
32 closeable="false"
33
34 [player_3]
35 name="Jomo"
36 tribe="barbarians"
37-ai="Defensive"
38+ai="very_weak"
39 closeable="false"
40
41 [player_4]
42 name="Lanissa"
43 tribe="barbarians"
44-ai="None"
45+ai="empty"
46 closeable="false"
47
48=== modified file 'maps/Trident of Fire.wmf/player_names'
49--- maps/Trident of Fire.wmf/player_names 2013-08-15 16:00:17 +0000
50+++ maps/Trident of Fire.wmf/player_names 2015-12-07 18:58:53 +0000
51@@ -24,29 +24,29 @@
52 [player_4]
53 name="Player A"
54 tribe="barbarians"
55-ai="Aggressive"
56+ai="normal"
57 closeable="false"
58
59 [player_5]
60 name="Player B"
61 tribe="empire"
62-ai="Aggressive"
63+ai="normal"
64 closeable="false"
65
66 [player_6]
67 name="Player C"
68 tribe="atlanteans"
69-ai="Aggressive"
70+ai="normal"
71 closeable="false"
72
73 [player_7]
74 name="Player D"
75 tribe="empire"
76-ai="Aggressive"
77+ai="normal"
78 closeable="false"
79
80 [player_8]
81 name="Player E"
82 tribe="atlanteans"
83-ai="Aggressive"
84+ai="normal"
85 closeable="false"
86
87=== removed file 'pics/ai_Strong.png'
88Binary files pics/ai_Strong.png 2015-11-25 21:01:02 +0000 and pics/ai_Strong.png 1970-01-01 00:00:00 +0000 differ
89=== renamed file 'pics/ai_None.png' => 'pics/ai_empty.png'
90=== renamed file 'pics/ai_Normal.png' => 'pics/ai_normal.png'
91=== renamed file 'pics/ai_Random.png' => 'pics/ai_random.png'
92=== renamed file 'pics/ai_Weak.png' => 'pics/ai_very_weak.png'
93=== added file 'pics/ai_weak.png'
94Binary files pics/ai_weak.png 1970-01-01 00:00:00 +0000 and pics/ai_weak.png 2015-12-07 18:58:53 +0000 differ
95=== modified file 'scripting/widelands/multiplayer_help.lua'
96--- scripting/widelands/multiplayer_help.lua 2015-11-21 10:35:08 +0000
97+++ scripting/widelands/multiplayer_help.lua 2015-12-07 18:58:53 +0000
98@@ -19,7 +19,7 @@
99 result = result .. rt(h2(_"Player settings"))
100 result = result .. rt(p(_"In the middle are the settings for the players. To start a game, each player must be one of the following:"))
101 result = result .. picture_li("pics/genstats_nrworkers.png", _"Connected to one or more clients (see ‘Client settings’).")
102- result = result .. picture_li("pics/ai_Normal.png", _"Connected to a computer player (the face in the picture as well as the mouse hover texts indicate the strength of the currently selected computer player).")
103+ result = result .. picture_li("pics/ai_normal.png", _"Connected to a computer player (the face in the picture as well as the mouse hover texts indicate the strength of the currently selected computer player).")
104 result = result .. picture_li("pics/shared_in.png", _"Set as shared in starting position for another player.")
105 result = result .. picture_li("pics/stop.png", _"Closed.")
106 result = result .. rt(p(_"The latter three can only be set by the hosting client by left-clicking the ‘type’ button of a player. Hosting players can also set the initialization of each player (the set of buildings, wares and workers the player starts with) and the tribe and team for computer players"))
107
108=== modified file 'src/ai/ai_hints.cc'
109--- src/ai/ai_hints.cc 2015-11-23 18:44:38 +0000
110+++ src/ai/ai_hints.cc 2015-12-07 18:58:53 +0000
111@@ -40,8 +40,8 @@
112 // 10 days default
113 forced_after_(table->has_key("forced_after") ? table->get_int("forced_after") : 864000),
114 mines_percent_(table->has_key("mines_percent") ? table->get_int("mines_percent") : 100),
115- weak_ai_limit_(table->has_key("weak_ai_limit") ? table->get_int("weak_ai_limit") : -1),
116- normal_ai_limit_(table->has_key("normal_ai_limit") ? table->get_int("normal_ai_limit") : -1),
117+ very_weak_ai_limit_(table->has_key("very_weak_ai_limit") ? table->get_int("very_weak_ai_limit") : -1),
118+ weak_ai_limit_(table->has_key("weak_ai_limit") ? table->get_int("weak_ai_limit") : -1),
119 trainingsite_type_(TrainingSiteType::kNoTS) {
120
121 if (table->has_key("trainingsite_type")) {
122
123=== modified file 'src/ai/ai_hints.h'
124--- src/ai/ai_hints.h 2015-11-23 18:44:38 +0000
125+++ src/ai/ai_hints.h 2015-12-07 18:58:53 +0000
126@@ -102,14 +102,14 @@
127 return mines_percent_;
128 }
129
130+ int16_t get_very_weak_ai_limit() const {
131+ return very_weak_ai_limit_;
132+ }
133+
134 int16_t get_weak_ai_limit() const {
135 return weak_ai_limit_;
136 }
137
138- int16_t get_normal_ai_limit() const {
139- return normal_ai_limit_;
140- }
141-
142 TrainingSiteType get_trainingsite_type() const {
143 return trainingsite_type_;
144 }
145@@ -130,8 +130,8 @@
146 int32_t prohibited_till_;
147 int32_t forced_after_;
148 int8_t mines_percent_;
149+ int16_t very_weak_ai_limit_;
150 int16_t weak_ai_limit_;
151- int16_t normal_ai_limit_;
152 TrainingSiteType trainingsite_type_;
153
154 DISALLOW_COPY_AND_ASSIGN(BuildingHints);
155
156=== modified file 'src/ai/computer_player.cc'
157--- src/ai/computer_player.cc 2015-11-26 09:53:02 +0000
158+++ src/ai/computer_player.cc 2015-12-07 18:58:53 +0000
159@@ -36,8 +36,12 @@
160 void think() override {}
161
162 struct EmptyAIImpl : Implementation {
163- /** TRANSLATORS: This is the name of an AI used in the game setup screens */
164- EmptyAIImpl() {name = pgettext("ai_name", "None");}
165+ EmptyAIImpl() {
166+ name = "empty";
167+ /** TRANSLATORS: This is the name of an AI used in the game setup screens */
168+ descname = _("No AI");
169+ icon_filename = "pics/ai_empty.png";
170+ }
171 ComputerPlayer * instantiate
172 (Widelands::Game & g, Widelands::PlayerNumber const pid) const override
173 {
174@@ -56,9 +60,9 @@
175 static std::vector<ComputerPlayer::Implementation const *> impls;
176
177 if (impls.empty()) {
178- impls.push_back(&DefaultAI::strong_impl);
179 impls.push_back(&DefaultAI::normal_impl);
180 impls.push_back(&DefaultAI::weak_impl);
181+ impls.push_back(&DefaultAI::very_weak_impl);
182 impls.push_back(&EmptyAI::implementation);
183 }
184
185
186=== modified file 'src/ai/computer_player.h'
187--- src/ai/computer_player.h 2014-09-30 20:31:43 +0000
188+++ src/ai/computer_player.h 2015-12-07 18:58:53 +0000
189@@ -52,6 +52,8 @@
190 */
191 struct Implementation {
192 std::string name;
193+ std::string descname;
194+ std::string icon_filename;
195 virtual ~Implementation() {}
196 virtual ComputerPlayer * instantiate
197 (Widelands::Game &, Widelands::PlayerNumber) const = 0;
198
199=== modified file 'src/ai/defaultai.cc'
200--- src/ai/defaultai.cc 2015-11-28 18:32:46 +0000
201+++ src/ai/defaultai.cc 2015-12-07 18:58:53 +0000
202@@ -93,9 +93,9 @@
203
204 using namespace Widelands;
205
206-DefaultAI::StrongImpl DefaultAI::strong_impl;
207 DefaultAI::NormalImpl DefaultAI::normal_impl;
208 DefaultAI::WeakImpl DefaultAI::weak_impl;
209+DefaultAI::VeryWeakImpl DefaultAI::very_weak_impl;
210
211 /// Constructor of DefaultAI
212 DefaultAI::DefaultAI(Game& ggame, PlayerNumber const pid, DefaultAI::Type const t)
213@@ -560,16 +560,16 @@
214 }
215
216 // Is total count of this building limited by AI mode?
217+ if (type_ == DefaultAI::Type::kVeryWeak && bh.get_very_weak_ai_limit() >= 0) {
218+ bo.cnt_limit_by_aimode_ = bh.get_very_weak_ai_limit();
219+ log (" %d: AI 'very weak' mode: applying limit %d building(s) for %s\n",
220+ player_number(),
221+ bo.cnt_limit_by_aimode_,
222+ bo.name);
223+ }
224 if (type_ == DefaultAI::Type::kWeak && bh.get_weak_ai_limit() >= 0) {
225 bo.cnt_limit_by_aimode_ = bh.get_weak_ai_limit();
226- log (" %d: AI defensive mode: applying limit %d building(s) for %s\n",
227- player_number(),
228- bo.cnt_limit_by_aimode_,
229- bo.name);
230- }
231- if (type_ == DefaultAI::Type::kNormal && bh.get_normal_ai_limit() >= 0) {
232- bo.cnt_limit_by_aimode_ = bh.get_normal_ai_limit();
233- log (" %d: AI normal mode: applying limit %d building(s) for %s\n",
234+ log (" %d: AI 'weak' mode: applying limit %d building(s) for %s\n",
235 player_number(),
236 bo.cnt_limit_by_aimode_,
237 bo.name);
238@@ -5194,12 +5194,12 @@
239 }
240 }
241
242- // defining treshold ratio of own_strenght/enemy's_strength
243+ // defining treshold ratio of own_strength/enemy's_strength
244 uint32_t treshold_ratio = 100;
245- if (type_ == DefaultAI::Type::kStrong) {
246+ if (type_ == DefaultAI::Type::kNormal) {
247 treshold_ratio = 80;
248 }
249- if (type_ == DefaultAI::Type::kWeak) {
250+ if (type_ == DefaultAI::Type::kVeryWeak) {
251 treshold_ratio = 120;
252 }
253
254@@ -5420,10 +5420,10 @@
255 }
256
257 // here is some differentiation based on "character" of a player
258- if (type_ == DefaultAI::Type::kNormal) {
259+ if (type_ == DefaultAI::Type::kWeak) {
260 site->second.score -= 3;
261 site->second.score -= vacant_mil_positions_ / 8;
262- } else if (type_ == DefaultAI::Type::kWeak) {
263+ } else if (type_ == DefaultAI::Type::kVeryWeak) {
264 site->second.score -= 6;
265 site->second.score -= vacant_mil_positions_ / 4;
266 } else { //=AGRESSIVE
267
268=== modified file 'src/ai/defaultai.h'
269--- src/ai/defaultai.h 2015-11-26 09:53:02 +0000
270+++ src/ai/defaultai.h 2015-12-07 18:58:53 +0000
271@@ -72,9 +72,9 @@
272 // should be trained if inputs_ get filled again.).
273 struct DefaultAI : ComputerPlayer {
274 enum class Type {
275+ kVeryWeak,
276 kWeak,
277 kNormal,
278- kStrong,
279 };
280
281 DefaultAI(Widelands::Game&, const Widelands::PlayerNumber, DefaultAI::Type);
282@@ -95,21 +95,12 @@
283
284
285 /// Implementation for Strong
286- struct StrongImpl : public ComputerPlayer::Implementation {
287- StrongImpl() {
288- /** TRANSLATORS: This is the name of an AI used in the game setup screens */
289- name = pgettext("ai_name", "Strong");
290- }
291- ComputerPlayer* instantiate(Widelands::Game& game,
292- Widelands::PlayerNumber const p) const override {
293- return new DefaultAI(game, p, DefaultAI::Type::kStrong);
294- }
295- };
296-
297 struct NormalImpl : public ComputerPlayer::Implementation {
298 NormalImpl() {
299+ name = "normal";
300 /** TRANSLATORS: This is the name of an AI used in the game setup screens */
301- name = pgettext("ai_name", "Normal");
302+ descname = _("Normal AI");
303+ icon_filename = "pics/ai_normal.png";
304 }
305 ComputerPlayer* instantiate(Widelands::Game& game,
306 Widelands::PlayerNumber const p) const override {
307@@ -119,8 +110,10 @@
308
309 struct WeakImpl : public ComputerPlayer::Implementation {
310 WeakImpl() {
311+ name = "weak";
312 /** TRANSLATORS: This is the name of an AI used in the game setup screens */
313- name = pgettext("ai_name", "Weak");
314+ descname = _("Weak AI");
315+ icon_filename = "pics/ai_weak.png";
316 }
317 ComputerPlayer* instantiate(Widelands::Game& game,
318 Widelands::PlayerNumber const p) const override {
319@@ -128,9 +121,22 @@
320 }
321 };
322
323- static StrongImpl strong_impl;
324+ struct VeryWeakImpl : public ComputerPlayer::Implementation {
325+ VeryWeakImpl() {
326+ name = "very_weak";
327+ /** TRANSLATORS: This is the name of an AI used in the game setup screens */
328+ descname = _("Very Weak AI");
329+ icon_filename = "pics/ai_very_weak.png";
330+ }
331+ ComputerPlayer* instantiate(Widelands::Game& game,
332+ Widelands::PlayerNumber const p) const override {
333+ return new DefaultAI(game, p, DefaultAI::Type::kVeryWeak);
334+ }
335+ };
336+
337 static NormalImpl normal_impl;
338 static WeakImpl weak_impl;
339+ static VeryWeakImpl very_weak_impl;
340
341 private:
342 void late_initialization();
343
344=== modified file 'src/wui/multiplayersetupgroup.cc'
345--- src/wui/multiplayersetupgroup.cc 2015-11-01 10:11:56 +0000
346+++ src/wui/multiplayersetupgroup.cc 2015-12-07 18:58:53 +0000
347@@ -23,6 +23,7 @@
348
349 #include <boost/format.hpp>
350
351+#include "ai/computer_player.h"
352 #include "base/i18n.h"
353 #include "base/log.h"
354 #include "base/wexception.h"
355@@ -301,11 +302,14 @@
356 pic += "novalue.png";
357 } else {
358 if (player_setting.random_ai) {
359- title = (boost::format(_("AI: %s")) % pgettext("ai_name", "Random")).str();
360- pic += "ai_Random.png";
361+ /** TRANSLATORS: This is the name of an AI used in the game setup screens */
362+ title = _("Random AI");
363+ pic += "ai_random.png";
364 } else {
365- title = (boost::format(_("AI: %s")) % _(player_setting.ai)).str();
366- pic += "ai_" + player_setting.ai + ".png";
367+ const ComputerPlayer::Implementation* impl =
368+ ComputerPlayer::get_implementation(player_setting.ai);
369+ title = impl->descname;
370+ pic = impl->icon_filename;
371 }
372 }
373 } else { // PlayerSettings::stateHuman
374
375=== modified file 'src/wui/playerdescrgroup.cc'
376--- src/wui/playerdescrgroup.cc 2015-10-23 16:32:05 +0000
377+++ src/wui/playerdescrgroup.cc 2015-12-07 18:58:53 +0000
378@@ -23,6 +23,7 @@
379
380 #include <boost/format.hpp>
381
382+#include "ai/computer_player.h"
383 #include "base/i18n.h"
384 #include "base/wexception.h"
385 #include "graphic/graphic.h"
386@@ -166,10 +167,11 @@
387 title = _("Computer");
388 else {
389 if (player.random_ai) {
390- title += _("AI: Random");
391+ title += _("Random AI");
392 } else {
393- /** TRANSLATORS %s = AI type, e.g. 'Agressive' */
394- title += (boost::format(_("AI: %s")) % _(player.ai)).str();
395+ const ComputerPlayer::Implementation* impl =
396+ ComputerPlayer::get_implementation(player.ai);
397+ title = impl->descname;
398 }
399 }
400 } else { // PlayerSettings::stateHuman
401
402=== modified file 'test/maps/lua_testsuite.wmf/player_names'
403--- test/maps/lua_testsuite.wmf/player_names 2015-04-14 18:34:40 +0000
404+++ test/maps/lua_testsuite.wmf/player_names 2015-12-07 18:58:53 +0000
405@@ -12,11 +12,11 @@
406 [player_2]
407 name="Epic Empire"
408 tribe="empire"
409-ai="Defensive"
410+ai="very_weak"
411 closeable="false"
412
413 [player_3]
414 name="Awesome Atlantean"
415 tribe="atlanteans"
416-ai="Defensive"
417+ai="very_weak"
418 closeable="false"
419
420=== modified file 'tribes/buildings/productionsites/atlanteans/sawmill/init.lua'
421--- tribes/buildings/productionsites/atlanteans/sawmill/init.lua 2015-11-24 19:55:49 +0000
422+++ tribes/buildings/productionsites/atlanteans/sawmill/init.lua 2015-12-07 18:58:53 +0000
423@@ -35,8 +35,8 @@
424 aihints = {
425 forced_after = 250,
426 prohibited_till = 250,
427- weak_ai_limit = 1,
428- normal_ai_limit = 2
429+ very_weak_ai_limit = 1,
430+ weak_ai_limit = 2
431 },
432
433 working_positions = {
434
435=== modified file 'tribes/buildings/productionsites/atlanteans/smelting_works/init.lua'
436--- tribes/buildings/productionsites/atlanteans/smelting_works/init.lua 2015-11-24 19:55:49 +0000
437+++ tribes/buildings/productionsites/atlanteans/smelting_works/init.lua 2015-12-07 18:58:53 +0000
438@@ -34,8 +34,8 @@
439
440 aihints = {
441 prohibited_till = 600,
442- weak_ai_limit = 1,
443- normal_ai_limit = 2
444+ very_weak_ai_limit = 1,
445+ weak_ai_limit = 2
446 },
447
448 working_positions = {
449
450=== modified file 'tribes/buildings/productionsites/atlanteans/smokery/init.lua'
451--- tribes/buildings/productionsites/atlanteans/smokery/init.lua 2015-11-24 19:55:49 +0000
452+++ tribes/buildings/productionsites/atlanteans/smokery/init.lua 2015-12-07 18:58:53 +0000
453@@ -36,8 +36,8 @@
454 aihints = {
455 forced_after = 800,
456 prohibited_till = 180,
457- weak_ai_limit = 1,
458- normal_ai_limit = 2
459+ very_weak_ai_limit = 1,
460+ weak_ai_limit = 2
461 },
462
463 working_positions = {
464
465=== modified file 'tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua'
466--- tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua 2015-11-24 19:55:49 +0000
467+++ tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua 2015-12-07 18:58:53 +0000
468@@ -36,8 +36,8 @@
469 aihints = {
470 forced_after = 600,
471 prohibited_till = 450,
472- weak_ai_limit = 1,
473- normal_ai_limit = 2
474+ very_weak_ai_limit = 1,
475+ weak_ai_limit = 2
476 },
477
478 working_positions = {
479
480=== modified file 'tribes/buildings/productionsites/barbarians/lime_kiln/init.lua'
481--- tribes/buildings/productionsites/barbarians/lime_kiln/init.lua 2015-11-24 19:55:49 +0000
482+++ tribes/buildings/productionsites/barbarians/lime_kiln/init.lua 2015-12-07 18:58:53 +0000
483@@ -34,8 +34,8 @@
484
485 aihints = {
486 forced_after = 600,
487- weak_ai_limit = 1,
488- normal_ai_limit = 2
489+ very_weak_ai_limit = 1,
490+ weak_ai_limit = 2
491 },
492
493 working_positions = {
494
495=== modified file 'tribes/buildings/productionsites/barbarians/smelting_works/init.lua'
496--- tribes/buildings/productionsites/barbarians/smelting_works/init.lua 2015-11-24 19:55:49 +0000
497+++ tribes/buildings/productionsites/barbarians/smelting_works/init.lua 2015-12-07 18:58:53 +0000
498@@ -37,8 +37,8 @@
499
500 aihints = {
501 prohibited_till = 400,
502- weak_ai_limit = 1,
503- normal_ai_limit = 2
504+ very_weak_ai_limit = 1,
505+ weak_ai_limit = 2
506 },
507
508 working_positions = {
509
510=== modified file 'tribes/buildings/productionsites/barbarians/wood_hardener/init.lua'
511--- tribes/buildings/productionsites/barbarians/wood_hardener/init.lua 2015-11-23 19:37:34 +0000
512+++ tribes/buildings/productionsites/barbarians/wood_hardener/init.lua 2015-12-07 18:58:53 +0000
513@@ -44,8 +44,8 @@
514 aihints = {
515 forced_after = 250,
516 prohibited_till = 250,
517- weak_ai_limit = 1,
518- normal_ai_limit = 2
519+ very_weak_ai_limit = 1,
520+ weak_ai_limit = 2
521 },
522
523 working_positions = {
524
525=== modified file 'tribes/buildings/productionsites/empire/brewery/init.lua'
526--- tribes/buildings/productionsites/empire/brewery/init.lua 2015-11-24 19:55:49 +0000
527+++ tribes/buildings/productionsites/empire/brewery/init.lua 2015-12-07 18:58:53 +0000
528@@ -35,8 +35,8 @@
529 aihints = {
530 forced_after = 900,
531 prohibited_till = 600,
532- weak_ai_limit = 1,
533- normal_ai_limit = 2
534+ very_weak_ai_limit = 1,
535+ weak_ai_limit = 2
536 },
537
538 working_positions = {
539
540=== modified file 'tribes/buildings/productionsites/empire/sawmill/init.lua'
541--- tribes/buildings/productionsites/empire/sawmill/init.lua 2015-11-24 19:55:49 +0000
542+++ tribes/buildings/productionsites/empire/sawmill/init.lua 2015-12-07 18:58:53 +0000
543@@ -35,8 +35,8 @@
544 aihints = {
545 forced_after = 250,
546 prohibited_till = 250,
547- weak_ai_limit = 1,
548- normal_ai_limit = 2
549+ very_weak_ai_limit = 1,
550+ weak_ai_limit = 2
551 },
552
553 working_positions = {
554
555=== modified file 'tribes/buildings/productionsites/empire/smelting_works/init.lua'
556--- tribes/buildings/productionsites/empire/smelting_works/init.lua 2015-11-24 19:55:49 +0000
557+++ tribes/buildings/productionsites/empire/smelting_works/init.lua 2015-12-07 18:58:53 +0000
558@@ -40,8 +40,8 @@
559
560 aihints = {
561 prohibited_till = 600,
562- weak_ai_limit = 1,
563- normal_ai_limit = 2
564+ very_weak_ai_limit = 1,
565+ weak_ai_limit = 2
566 },
567
568 working_positions = {
569
570=== modified file 'tribes/buildings/productionsites/empire/stonemasons_house/init.lua'
571--- tribes/buildings/productionsites/empire/stonemasons_house/init.lua 2015-11-24 19:55:49 +0000
572+++ tribes/buildings/productionsites/empire/stonemasons_house/init.lua 2015-12-07 18:58:53 +0000
573@@ -36,8 +36,8 @@
574 aihints = {
575 forced_after = 400,
576 prohibited_till = 400,
577- weak_ai_limit = 1,
578- normal_ai_limit = 2
579+ very_weak_ai_limit = 1,
580+ weak_ai_limit = 2
581 },
582
583 working_positions = {
584
585=== modified file 'tribes/buildings/productionsites/empire/winery/init.lua'
586--- tribes/buildings/productionsites/empire/winery/init.lua 2015-11-24 19:55:49 +0000
587+++ tribes/buildings/productionsites/empire/winery/init.lua 2015-12-07 18:58:53 +0000
588@@ -37,8 +37,8 @@
589 aihints = {
590 forced_after = 600,
591 prohibited_till = 600,
592- weak_ai_limit = 1,
593- normal_ai_limit = 2
594+ very_weak_ai_limit = 1,
595+ weak_ai_limit = 2
596 },
597
598 working_positions = {
599
600=== modified file 'tribes/buildings/trainingsites/atlanteans/dungeon/init.lua'
601--- tribes/buildings/trainingsites/atlanteans/dungeon/init.lua 2015-11-24 19:55:49 +0000
602+++ tribes/buildings/trainingsites/atlanteans/dungeon/init.lua 2015-12-07 18:58:53 +0000
603@@ -37,8 +37,8 @@
604
605 aihints = {
606 trainingsite_type = "advanced",
607- weak_ai_limit = 0,
608- normal_ai_limit = 1
609+ very_weak_ai_limit = 0,
610+ weak_ai_limit = 1
611 },
612
613 working_positions = {
614
615=== modified file 'tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua'
616--- tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua 2015-11-24 19:55:49 +0000
617+++ tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua 2015-12-07 18:58:53 +0000
618@@ -37,8 +37,8 @@
619 aihints = {
620 prohibited_till=900,
621 trainingsite_type = "basic",
622- weak_ai_limit = 1,
623- normal_ai_limit = 2
624+ very_weak_ai_limit = 1,
625+ weak_ai_limit = 2
626 },
627
628 working_positions = {
629
630=== modified file 'tribes/buildings/trainingsites/barbarians/battlearena/init.lua'
631--- tribes/buildings/trainingsites/barbarians/battlearena/init.lua 2015-11-24 19:55:49 +0000
632+++ tribes/buildings/trainingsites/barbarians/battlearena/init.lua 2015-12-07 18:58:53 +0000
633@@ -53,8 +53,8 @@
634 aihints = {
635 prohibited_till = 2700,
636 trainingsite_type = "basic",
637- weak_ai_limit = 1,
638- normal_ai_limit = 3
639+ very_weak_ai_limit = 1,
640+ weak_ai_limit = 3
641 },
642
643 working_positions = {
644
645=== modified file 'tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua'
646--- tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua 2015-11-24 19:55:49 +0000
647+++ tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua 2015-12-07 18:58:53 +0000
648@@ -46,8 +46,8 @@
649 aihints = {
650 prohibited_till = 500,
651 trainingsite_type = "advanced",
652- weak_ai_limit = 0,
653- normal_ai_limit = 1
654+ very_weak_ai_limit = 0,
655+ weak_ai_limit = 1
656 },
657
658 working_positions = {
659
660=== modified file 'tribes/buildings/trainingsites/empire/arena/init.lua'
661--- tribes/buildings/trainingsites/empire/arena/init.lua 2015-11-24 19:55:49 +0000
662+++ tribes/buildings/trainingsites/empire/arena/init.lua 2015-12-07 18:58:53 +0000
663@@ -41,8 +41,8 @@
664
665 aihints = {
666 trainingsite_type = "basic",
667- weak_ai_limit = 1,
668- normal_ai_limit = 2
669+ very_weak_ai_limit = 1,
670+ weak_ai_limit = 2
671 },
672
673 working_positions = {
674
675=== modified file 'tribes/buildings/trainingsites/empire/colosseum/init.lua'
676--- tribes/buildings/trainingsites/empire/colosseum/init.lua 2015-11-24 19:55:49 +0000
677+++ tribes/buildings/trainingsites/empire/colosseum/init.lua 2015-12-07 18:58:53 +0000
678@@ -35,8 +35,8 @@
679
680 aihints = {
681 trainingsite_type = "basic",
682- weak_ai_limit = 1,
683- normal_ai_limit = 2
684+ very_weak_ai_limit = 1,
685+ weak_ai_limit = 2
686 },
687
688 working_positions = {
689
690=== modified file 'tribes/buildings/trainingsites/empire/trainingcamp/init.lua'
691--- tribes/buildings/trainingsites/empire/trainingcamp/init.lua 2015-11-24 19:55:49 +0000
692+++ tribes/buildings/trainingsites/empire/trainingcamp/init.lua 2015-12-07 18:58:53 +0000
693@@ -37,8 +37,8 @@
694 aihints = {
695 prohibited_till = 2700,
696 trainingsite_type = "advanced",
697- weak_ai_limit = 0,
698- normal_ai_limit = 1
699+ very_weak_ai_limit = 0,
700+ weak_ai_limit = 1
701 },
702
703 working_positions = {