Merge lp:~widelands-dev/widelands/bug-1298301 into lp:widelands
- bug-1298301
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | 7244 |
Proposed branch: | lp:~widelands-dev/widelands/bug-1298301 |
Merge into: | lp:widelands |
Diff against target: |
3705 lines (+983/-1187) 30 files modified
campaigns/atl01.wmf/scripting/init.lua (+80/-0) campaigns/atl01.wmf/scripting/mission_thread.lua (+14/-114) campaigns/atl01.wmf/scripting/starting_conditions.lua (+27/-0) campaigns/atl01.wmf/scripting/texts.lua (+219/-342) campaigns/bar01.wmf/scripting/mission_thread.lua (+1/-1) campaigns/bar01.wmf/scripting/texts.lua (+142/-165) campaigns/bar02.wmf/scripting/init.lua (+0/-10) campaigns/bar02.wmf/scripting/mission_thread.lua (+35/-33) campaigns/bar02.wmf/scripting/texts.lua (+125/-134) campaigns/dummy.wmf/scripting/init.lua (+2/-1) campaigns/emp01.wmf/scripting/init.lua (+0/-10) campaigns/emp01.wmf/scripting/mission_thread.lua (+20/-19) campaigns/emp01.wmf/scripting/texts.lua (+61/-84) campaigns/emp02.wmf/scripting/init.lua (+1/-12) campaigns/emp02.wmf/scripting/mission_thread.lua (+32/-29) campaigns/emp02.wmf/scripting/texts.lua (+69/-84) maps/MP Scenarios/Island Hopping.wmf/scripting/multiplayer_init.lua (+3/-2) maps/MP Scenarios/Smugglers.wmf/scripting/multiplayer_init.lua (+1/-1) maps/MP Scenarios/Smugglers.wmf/scripting/smuggling.lua (+5/-3) maps/MP Scenarios/Smugglers.wmf/scripting/texts.lua (+28/-42) maps/Plateau.wmf/scripting/init.lua (+11/-10) maps/Plateau.wmf/scripting/texts.lua (+44/-75) scripting/coroutine.lua (+3/-2) scripting/format_scenario.lua (+14/-1) scripting/messages.lua (+7/-7) scripting/ui.lua (+27/-0) scripting/win_condition_functions.lua (+4/-1) scripting/win_conditions/02_collectors.lua (+3/-2) scripting/win_conditions/03_territorial_lord.lua (+3/-2) scripting/win_conditions/03_territorial_time.lua (+2/-1) |
To merge this branch: | bzr merge lp:~widelands-dev/widelands/bug-1298301 |
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
SirVer | Approve | ||
GunChleoc | Needs Resubmitting | ||
Review via email: mp+236966@code.launchpad.net |
Commit message
Description of the change
Created new script "messages.lua" that contains functions to give send_message and message_box a delay while in road building mode. Also contains a global definition for creating a campaign objective.
Implemented with all campaign and map scenarios. Also implemented for win conditions.
Cleaned up scenario string formatting.
ETA:
Solved the threading issue for Barbarian campaign scenario 1. Crossroads message now only appears if the flag hasn't already been set by the player.
The coroutine diff is big because it contained trailing whitespaces - the only real change there is in the function "wake_me(at)".
SirVer (sirver) wrote : | # |
wl-zocker (wl-zocker) wrote : | # |
Now I am. Parts of this I had planned anyway: An extra message_box function, the splitting into several files and string re-formatting.
I have never had to solve conflicts. How hard is that?
GunChleoc (gunchleoc) wrote : | # |
That depends on the conflict and how well you know the code you're working on.
If you haven't defined these functions yet, you could copy over the code from this branch.
Let me know if you need help.
wl-zocker (wl-zocker) wrote : | # |
Currently, I am still improving the tutorials. When there is an end in sight, I will take care of this branch.
Is this branch ready? The sooner it is merged, the more time I have to solve conflicts.
GunChleoc (gunchleoc) wrote : | # |
Let's merge https:/
I'll then fix this up afterwards and send a resubmit.
GunChleoc (gunchleoc) wrote : | # |
I have finished integrating wl-zocker's changes, so this is ready for review again.
SirVer (sirver) : | # |
Preview Diff
1 | === added file 'campaigns/atl01.wmf/scripting/init.lua' |
2 | --- campaigns/atl01.wmf/scripting/init.lua 1970-01-01 00:00:00 +0000 |
3 | +++ campaigns/atl01.wmf/scripting/init.lua 2014-10-31 11:37:25 +0000 |
4 | @@ -0,0 +1,80 @@ |
5 | +-- ======================================================================= |
6 | +-- Atlanteans Tutorial Mission 01 |
7 | +-- ======================================================================= |
8 | + |
9 | +include "scripting/coroutine.lua" |
10 | +include "scripting/infrastructure.lua" |
11 | +include "scripting/messages.lua" |
12 | +include "scripting/objective_utils.lua" |
13 | +include "scripting/table.lua" |
14 | +include "scripting/ui.lua" |
15 | + |
16 | +include "map:scripting/water_rising.lua" |
17 | + |
18 | +-- =================== |
19 | +-- Constants & Config |
20 | +-- =================== |
21 | +set_textdomain("scenario_atl01.wmf") |
22 | + |
23 | +game = wl.Game() |
24 | +map = game.map |
25 | +p1 = game.players[1] |
26 | +first_tower_field = map:get_field(94, 149) |
27 | +second_tower_field = map:get_field(79, 150) |
28 | + |
29 | +-- ================= |
30 | +-- global variables |
31 | +-- ================= |
32 | +expand_objective = nil |
33 | +let_the_water_rise = false -- If set to true, the water will begin to rise |
34 | + |
35 | +include "map:scripting/texts.lua" |
36 | + |
37 | +-- ================= |
38 | +-- Helper functions |
39 | +-- ================= |
40 | +-- Show one message box |
41 | +function msg_box(i) |
42 | + if i.pre_func then i.pre_func() end |
43 | + |
44 | + if not i.h then i.h = 400 end |
45 | + |
46 | + message_box(p1, i.title, i.body, i) |
47 | + |
48 | + if i.post_func then i.post_func() end |
49 | + |
50 | + sleep(130) |
51 | +end |
52 | + |
53 | +-- Show many message boxes |
54 | +function msg_boxes(boxes_descr) |
55 | + for idx,box_descr in ipairs(boxes_descr) do |
56 | + msg_box(box_descr) |
57 | + end |
58 | +end |
59 | + |
60 | +-- Return the total number of items in warehouses of the given |
61 | +-- ware. |
62 | +function count_in_warehouses(ware) |
63 | + local whs = array_combine( |
64 | + p1:get_buildings("headquarters"), |
65 | + p1:get_buildings("warehouse") |
66 | + ) |
67 | + local rv = 0 |
68 | + for idx,wh in ipairs(whs) do |
69 | + rv = rv + wh:get_wares(ware) |
70 | + end |
71 | + return rv |
72 | +end |
73 | + |
74 | +function send_building_lost_message(f) |
75 | + send_message(p1, _"Building lost!", |
76 | + rt("image=".. f.immovable.descr.representative_image, |
77 | + p(_"We lost a building to the ocean!") |
78 | + ), { field = f, popup = false } |
79 | + ) |
80 | +end |
81 | + |
82 | +-- starting conditions are included later in the intro |
83 | +include "map:scripting/mission_thread.lua" |
84 | +include "map:scripting/water_rising.lua" |
85 | |
86 | === renamed file 'campaigns/atl01.wmf/scripting/init.lua' => 'campaigns/atl01.wmf/scripting/mission_thread.lua' |
87 | --- campaigns/atl01.wmf/scripting/init.lua 2014-07-27 16:26:39 +0000 |
88 | +++ campaigns/atl01.wmf/scripting/mission_thread.lua 2014-10-31 11:37:25 +0000 |
89 | @@ -2,108 +2,6 @@ |
90 | -- Atlanteans Tutorial Mission 01 |
91 | -- ======================================================================= |
92 | |
93 | -include "scripting/coroutine.lua" |
94 | -include "scripting/table.lua" |
95 | -include "scripting/infrastructure.lua" |
96 | -include "scripting/objective_utils.lua" |
97 | -include "scripting/ui.lua" |
98 | - |
99 | -include "map:scripting/water_rising.lua" |
100 | - |
101 | --- =================== |
102 | --- Constants & Config |
103 | --- =================== |
104 | -set_textdomain("scenario_atl01.wmf") |
105 | - |
106 | -game = wl.Game() |
107 | -map = game.map |
108 | -p1 = game.players[1] |
109 | -first_tower_field = map:get_field(94, 149) |
110 | -second_tower_field = map:get_field(79, 150) |
111 | - |
112 | --- ================= |
113 | --- global variables |
114 | --- ================= |
115 | -expand_objective = nil |
116 | -let_the_water_rise = false -- If set to true, the water will begin to rise |
117 | - |
118 | -include "map:scripting/texts.lua" |
119 | - |
120 | --- ================= |
121 | --- Helper functions |
122 | --- ================= |
123 | --- Show one message box |
124 | -function msg_box(i) |
125 | - if i.pre_func then i.pre_func() end |
126 | - |
127 | - if not i.h then i.h = 400 end |
128 | - |
129 | - p1:message_box(i.title, i.body, i) |
130 | - |
131 | - if i.post_func then i.post_func() end |
132 | - |
133 | - sleep(130) |
134 | -end |
135 | - |
136 | --- Show many message boxes |
137 | -function msg_boxes(boxes_descr) |
138 | - for idx,box_descr in ipairs(boxes_descr) do |
139 | - msg_box(box_descr) |
140 | - end |
141 | -end |
142 | - |
143 | --- Add an objective |
144 | -function add_obj(o) |
145 | - return p1:add_objective(o.name, o.title, o.body) |
146 | -end |
147 | - |
148 | --- Return the total number of items in warehouses of the given |
149 | --- ware. |
150 | -function count_in_warehouses(ware) |
151 | - local whs = array_combine( |
152 | - p1:get_buildings("headquarters"), |
153 | - p1:get_buildings("warehouse") |
154 | - ) |
155 | - local rv = 0 |
156 | - for idx,wh in ipairs(whs) do |
157 | - rv = rv + wh:get_wares(ware) |
158 | - end |
159 | - return rv |
160 | -end |
161 | - |
162 | -function send_building_lost_message(f) |
163 | --- TODO: replace menu.png with representative_image as soon as this has been wrapped |
164 | - p1:send_message(_"Building lost!", |
165 | - rt("image=tribes/atlanteans/".. f.immovable.descr.name .."/menu.png", |
166 | - p(_"We lost a building to the ocean!") |
167 | - ), { field = f, popup = true } |
168 | - ) |
169 | -end |
170 | - |
171 | --- =============== |
172 | --- Initialization |
173 | --- =============== |
174 | -function initialize() |
175 | - p1:allow_buildings("all") |
176 | - p1:forbid_buildings{"shipyard"} |
177 | - |
178 | - -- A default headquarters |
179 | - include "tribes/atlanteans/scripting/sc00_headquarters.lua" |
180 | - init.func(p1) -- defined in sc00_headquarters |
181 | - set_textdomain("scenario_atl01.wmf") |
182 | - local hq = wl.Game().map.player_slots[1].starting_field.immovable |
183 | - hq:set_workers{shipwright=1} |
184 | - |
185 | - -- Place some buildings |
186 | - prefilled_buildings(p1, |
187 | - {"high_tower", first_tower_field.x, first_tower_field.y, |
188 | - soldiers = { [{0,0,0,0}] = 1 } |
189 | - }, |
190 | - {"high_tower", second_tower_field.x, second_tower_field.y, |
191 | - soldiers = { [{0,0,0,0}] = 1 } |
192 | - } |
193 | - ) |
194 | -end |
195 | |
196 | -- ============== |
197 | -- Logic Threads |
198 | @@ -114,7 +12,7 @@ |
199 | msg_boxes(initial_messages) |
200 | sleep(200) |
201 | |
202 | - initialize() |
203 | + include "map:scripting/starting_conditions.lua" |
204 | |
205 | build_environment() |
206 | end |
207 | @@ -141,10 +39,12 @@ |
208 | expand_objective.done = true |
209 | let_the_water_rise = true |
210 | |
211 | - scroll_smoothly_to(fowned) |
212 | + local pts = wait_for_roadbuilding_and_scroll(fowned) |
213 | msg_boxes(horsefarm_and_warehouse_story) |
214 | + -- Go back to where we were |
215 | + timed_scroll(array_reverse(pts)) |
216 | |
217 | - local o = add_obj(obj_horsefarm_and_warehouse) |
218 | + local o = add_campaign_objective(obj_horsefarm_and_warehouse) |
219 | while not check_for_buildings(p1, { |
220 | horsefarm = 1, warehouse = 1, |
221 | }) do sleep(2384) end |
222 | @@ -154,7 +54,7 @@ |
223 | function build_training() |
224 | msg_boxes(training_story) |
225 | |
226 | - local o = add_obj(obj_make_training_buildings) |
227 | + local o = add_campaign_objective(obj_make_training_buildings) |
228 | while not check_for_buildings(p1, { |
229 | dungeon = 1, labyrinth = 1 |
230 | }) do sleep(3874) end |
231 | @@ -166,7 +66,7 @@ |
232 | function build_heavy_industrys_and_mining() |
233 | msg_boxes(heavy_industry_story) |
234 | |
235 | - local o = add_obj(obj_make_heavy_industry_and_mining) |
236 | + local o = add_campaign_objective(obj_make_heavy_industry_and_mining) |
237 | while not check_for_buildings(p1, { |
238 | coalmine = 1, ironmine = 1, goldmine = 1, crystalmine = 1, |
239 | smelting_works = 1, weaponsmithy = 1, armorsmithy = 1, |
240 | @@ -186,7 +86,7 @@ |
241 | run(build_heavy_industrys_and_mining) |
242 | end) |
243 | |
244 | - local o = add_obj(obj_make_food_infrastructure) |
245 | + local o = add_campaign_objective(obj_make_food_infrastructure) |
246 | while not check_for_buildings(p1, { |
247 | farm = 1, blackroot_farm = 1, |
248 | sawmill = 1, well = 1, bakery = 1, |
249 | @@ -203,7 +103,7 @@ |
250 | |
251 | -- There is no spidercloth in any warehouse! |
252 | msg_boxes(spidercloth_messages) |
253 | - local o = add_obj(obj_spidercloth_production) |
254 | + local o = add_campaign_objective(obj_spidercloth_production) |
255 | |
256 | while not check_for_buildings(p1, { |
257 | spiderfarm = 1, ["gold-spinning-mill"] = 1, ["weaving-mill"] = 1 |
258 | @@ -216,9 +116,9 @@ |
259 | |
260 | function build_environment() |
261 | msg_boxes(first_briefing_messages) |
262 | - local o = add_obj(obj_ensure_build_wares_production) |
263 | + local o = add_campaign_objective(obj_ensure_build_wares_production) |
264 | |
265 | - expand_objective = add_obj(obj_expand) |
266 | + expand_objective = add_campaign_objective(obj_expand) |
267 | |
268 | while not check_for_buildings(p1, { |
269 | woodcutters_house = 2, |
270 | @@ -254,7 +154,7 @@ |
271 | while lob_fields.size > 0 and #msgs > 0 do |
272 | for f in lob_fields:items() do |
273 | if p1:sees_field(f) then |
274 | - scroll_smoothly_to(f) |
275 | + wait_for_roadbuilding_and_scroll(f) |
276 | |
277 | msg_boxes(msgs[1]) |
278 | |
279 | @@ -312,9 +212,9 @@ |
280 | first_message_send = true |
281 | run(function() |
282 | sleep(200) |
283 | - scroll_smoothly_to(f) |
284 | + wait_for_roadbuilding_and_scroll(f) |
285 | msg_boxes(field_flooded_msg) |
286 | - add_obj(obj_build_ships) |
287 | + add_campaign_objective(obj_build_ships) |
288 | p1:allow_buildings{"shipyard"} |
289 | run(check_for_ships) |
290 | end) |
291 | |
292 | === added file 'campaigns/atl01.wmf/scripting/starting_conditions.lua' |
293 | --- campaigns/atl01.wmf/scripting/starting_conditions.lua 1970-01-01 00:00:00 +0000 |
294 | +++ campaigns/atl01.wmf/scripting/starting_conditions.lua 2014-10-31 11:37:25 +0000 |
295 | @@ -0,0 +1,27 @@ |
296 | +-- ======================================================================= |
297 | +-- Atlanteans Tutorial Mission 01 |
298 | +-- ======================================================================= |
299 | + |
300 | +-- =============== |
301 | +-- Initialization |
302 | +-- =============== |
303 | + |
304 | +p1:allow_buildings("all") |
305 | +p1:forbid_buildings{"shipyard"} |
306 | + |
307 | +-- A default headquarters |
308 | +include "tribes/atlanteans/scripting/sc00_headquarters.lua" |
309 | +init.func(p1) -- defined in sc00_headquarters |
310 | + |
311 | +local hq = wl.Game().map.player_slots[1].starting_field.immovable |
312 | +hq:set_workers{shipwright=1} |
313 | + |
314 | +-- Place some buildings |
315 | +prefilled_buildings(p1, |
316 | + {"high_tower", first_tower_field.x, first_tower_field.y, |
317 | + soldiers = { [{0,0,0,0}] = 1 } |
318 | + }, |
319 | + {"high_tower", second_tower_field.x, second_tower_field.y, |
320 | + soldiers = { [{0,0,0,0}] = 1 } |
321 | + } |
322 | +) |
323 | |
324 | === modified file 'campaigns/atl01.wmf/scripting/texts.lua' |
325 | --- campaigns/atl01.wmf/scripting/texts.lua 2014-10-18 07:37:16 +0000 |
326 | +++ campaigns/atl01.wmf/scripting/texts.lua 2014-10-31 11:37:25 +0000 |
327 | @@ -29,7 +29,7 @@ |
328 | -- ======================================================================= |
329 | obj_ensure_build_wares_production = { |
330 | name = "obj_ensure_build_wares_production", |
331 | - title = _ "Ensure the supply of building wares", |
332 | + title = _"Ensure the supply of building wares", |
333 | number = 6, |
334 | body = objective_text(_"Supply Building Wares", _ |
335 | [[Supply basic building material for your economy:]] .. paragraphdivider() .. |
336 | @@ -42,20 +42,20 @@ |
337 | |
338 | obj_expand = { |
339 | name = "obj_expand", |
340 | - title = _ "Expand your territory and explore", |
341 | + title = _"Expand your territory and explore", |
342 | number = 1, |
343 | - body = objective_text(_"Expand and Explore", _( |
344 | -[[The island is huge and as long as we are not sure that we are alone here, we cannot relax. ]] .. |
345 | -[[Explore and conquer it, this is the only way to protect us from threats on the island and from Atlantis.]]) .. paragraphdivider() .. |
346 | + body = objective_text(_"Expand and Explore", |
347 | + _([[The island is huge and as long as we are not sure that we are alone here, we cannot relax. Explore and conquer it, this is the only way to protect us from threats on the island and from Atlantis.]]) .. paragraphdivider() .. |
348 | listitem_bullet(_[[Build military sites to expand your territory]]) |
349 | ), |
350 | } |
351 | |
352 | obj_make_food_infrastructure = { |
353 | name = "obj_make_food_infrastructure", |
354 | - title = _ "Establish a solid food production", |
355 | + title = _"Establish a solid food production", |
356 | number = 10, |
357 | - body = objective_text(_"Food Production", _[[Food is very important for mines and military training areas. Establish a well working food environment by building at least one farm, one blackroot farm and a mill. The two kinds of flour together with water from a well will be baked into bread in a bakery, so build a bakery and a well, too.]] .. paragraphdivider() .. |
358 | + body = objective_text(_"Food Production", |
359 | + _[[Food is very important for mines and military training areas. Establish a well working food environment by building at least one farm, one blackroot farm and a mill. The two kinds of flour together with water from a well will be baked into bread in a bakery, so build a bakery and a well, too.]] .. paragraphdivider() .. |
360 | _[[The other two important food wares are smoked fish and smoked meat. Raw meat is delivered from a hunter. A fisher gets the fish out of the sea while a fish breeder makes sure that a school of fish does not go extinct by breeding more. Make sure that there are always fish left, otherwise the fish breeder won’t be able to breed new ones. The smoking happens in a smokery, you will need at least two of those.]] .. paragraphdivider() .. |
361 | listitem_bullet(_[[Build a farm and a blackroot farm]]) .. |
362 | listitem_bullet(_[[Build a mill to make cornflour and blackroot flour]]) .. |
363 | @@ -70,9 +70,10 @@ |
364 | |
365 | obj_spidercloth_production = { |
366 | name = "obj_spidercloth_production", |
367 | - title = _ "Build a spider farm and a weaving mill", |
368 | + title = _"Build a spider farm and a weaving mill", |
369 | number = 3, |
370 | - body = objective_text(_"Spidercloth Production", _[[The weavers produce spidercloth and tabards in the weaving mill. Spidercloth is needed for the construction of some buildings and clothing, while tabards are the uniforms of soldiers. The weaving mill needs gold yarn and spideryarn as raw material. Spideryarn is produced by the spider farm, while gold yarn is produced by the gold spinning mill out of gold.]] .. paragraphdivider() .. |
371 | + body = objective_text(_"Spidercloth Production", |
372 | + _[[The weavers produce spidercloth and tabards in the weaving mill. Spidercloth is needed for the construction of some buildings and clothing, while tabards are the uniforms of soldiers. The weaving mill needs gold yarn and spideryarn as raw material. Spideryarn is produced by the spider farm, while gold yarn is produced by the gold spinning mill out of gold.]] .. paragraphdivider() .. |
373 | listitem_bullet(_[[Build a weaving mill]]) .. |
374 | listitem_bullet(_[[Build a spider farm]]) .. |
375 | listitem_bullet(_[[Build a gold spinning mill]]) |
376 | @@ -81,9 +82,10 @@ |
377 | |
378 | obj_make_heavy_industry_and_mining = { |
379 | name = "obj_make_heavy_industry_and_mining", |
380 | - title = _ "Build industry and mines", |
381 | + title = _"Build industry and mines", |
382 | number = 5, |
383 | - body = objective_text(_"Industry and Mines", _[[Iron ore, gold ore and coal are mined in the respective mines. The crystal mine will dig for crystal, quartz and diamond – all of them are precious materials and very rarely found. It will produce a lot of stone while searching for them.]] .. paragraphdivider() .. |
384 | + body = objective_text(_"Industry and Mines", |
385 | + _[[Iron ore, gold ore and coal are mined in the respective mines. The crystal mine will dig for crystal, quartz and diamond – all of them are precious materials and very rarely found. It will produce a lot of stone while searching for them.]] .. paragraphdivider() .. |
386 | listitem_bullet(_[[The ores have to be smelted at a smelting works before they can be used. The refined materials are then used in the weapon smithy, the armor smithy and the toolsmithy.]]) .. paragraphdivider() .. |
387 | listitem_bullet(_[[Build a mine of each type. Make sure to send geologists to the mountain first.]]) .. |
388 | listitem_bullet(_[[Build a smelting works]]) .. |
389 | @@ -96,7 +98,8 @@ |
390 | name = "obj_make_training_buildings", |
391 | title = _"Build training buildings for soldiers", |
392 | number = 2, |
393 | - body = objective_text(_"Soldier Training Buildings", _[[Like all other tribes, the Atlanteans are also able to train soldiers: the dungeon trains attack – the major attribute of the Atlanteans – and the labyrinth trains evasion, health and defense. The items produced by the industry are used to train better soldiers in the two training buildings.]] .. paragraphdivider() .. |
394 | + body = objective_text(_"Soldier Training Buildings", |
395 | + _[[Like all other tribes, the Atlanteans are also able to train soldiers: the dungeon trains attack – the major attribute of the Atlanteans – and the labyrinth trains evasion, health and defense. The items produced by the industry are used to train better soldiers in the two training buildings.]] .. paragraphdivider() .. |
396 | listitem_bullet(_[[Build a dungeon and a labyrinth]]) |
397 | ) |
398 | } |
399 | @@ -105,7 +108,8 @@ |
400 | name = "obj_horsefarm_and_warehouse", |
401 | title = _"Build a warehouse and a horse farm", |
402 | number = 2, |
403 | - body = objective_text(_"Warehouse and Horse Farm", _[[As your road network gets longer and more complicated, you should employ horses to help out your carriers. Horses are bred at horse farms using water and corn. A warehouse will also help to ensure that your transportation system does not collapse.]] .. paragraphdivider() .. |
404 | + body = objective_text(_"Warehouse and Horse Farm", |
405 | + _[[As your road network gets longer and more complicated, you should employ horses to help out your carriers. Horses are bred at horse farms using water and corn. A warehouse will also help to ensure that your transportation system does not collapse.]] .. paragraphdivider() .. |
406 | listitem_bullet(_[[Build a warehouse]]) .. |
407 | listitem_bullet(_[[Build a horse farm]]) |
408 | ) |
409 | @@ -113,9 +117,10 @@ |
410 | |
411 | obj_build_ships = { |
412 | name = "obj_build_ships", |
413 | - title = _ "Build 3 ships to escape from the island", |
414 | + title = _"Build 3 ships to escape from the island", |
415 | number = 1, |
416 | - body = objective_text(_"Escape From the Island", _[[There is a lake at the top of the island. Build three ships in these waters and you might be able to rescue your people before the island is swallowed completely by the ocean.]] .. paragraphdivider() .. |
417 | + body = objective_text(_"Escape From the Island", |
418 | + _[[There is a lake at the top of the island. Build three ships in these waters and you might be able to rescue your people before the island is swallowed completely by the ocean.]] .. paragraphdivider() .. |
419 | listitem_bullet(_[[Build a shipyard close to the lake to start building ships]]) |
420 | ) |
421 | } |
422 | @@ -126,284 +131,183 @@ |
423 | |
424 | -- This is an array or message descriptions |
425 | initial_messages = { |
426 | -{ |
427 | - title = _ "Proud to the Death", |
428 | - body = rt( |
429 | - h1(_"Favored by the God") .. |
430 | - p(_( |
431 | -[[On the hidden and lost island of Atlantis, a proud tribe settled since the ]] .. |
432 | -[[world was very young. Ruled by the bloodline of King Ajanthul – the first human ]] .. |
433 | -[[to be empowered by the sea god Lutas to breathe above sea level – and the ]] .. |
434 | -[[wise clerics, who provided the link to Lutas – they prospered and became ]] .. |
435 | -[[civilized.]] |
436 | - )) .. p(_( |
437 | -[[This story is taking place during the reign of King Askandor, the 43rd successor of King Ajanthul. ]] .. |
438 | -[[He had been a good king, ruling Atlantis with wisdom and foresight. ]] .. |
439 | -[[But with age, he became afraid of dying and so he began looking for ]] .. |
440 | -[[a cure for death even though most clerics warned him against it. ]] .. |
441 | -[[Some said that endless life was only for the gods and that to seek for it was forbidden.]] |
442 | - )) |
443 | - ), |
444 | -}, |
445 | -{ |
446 | - title = _ "Disgraced Before the God", |
447 | - body = rt( |
448 | - h1(_"The God’s Punishment") .. |
449 | - p(_( |
450 | -[[But all seemed well. Only the horses seemed to feel something was wrong. ]] .. |
451 | -[[During the nights, they went crazy and were full of fear. ]] .. |
452 | -[[It was not long before the horse breeder Xydra figured out what was wrong with them: ]] .. |
453 | -[[the sea level in front of their stable was rising with ever increasing speed.]] |
454 | - )) .. p(_( |
455 | -[[The clerics retreated into meditation and the reason for the rising water was soon to be found: ]] .. |
456 | -[[the god Lutas had lost faith in the Atlanteans because of the boldness of their king. ]] .. |
457 | -[[He decided to withdraw the rights that were granted to King Ajanthul and his children. ]] .. |
458 | -[[And so, he called them back below the sea again.]] |
459 | - )) |
460 | -) |
461 | -}, |
462 | -{ |
463 | - title = _ "Uproar and Confusion", |
464 | - body = rt( |
465 | - h1(_"Emerging Chaos…") .. |
466 | - p(_( |
467 | -[[Guilt-ridden, the king committed suicide. ]] .. |
468 | -[[Without a monarch, the people turned to the clerics, but they had no substantial help to offer. ]] .. |
469 | -[[Most accepted their fate while others tried to change the god’s mind by offering animals in his temple. ]] .. |
470 | -[[But to no avail…]] |
471 | - )) .. p(_( |
472 | -[[Jundlina, the late king’s daughter and the highest priestess of the god was the most determined cleric. ]] .. |
473 | -[[As countless offerings didn’t change the situation, she convinced herself that to soothe the god, ]] .. |
474 | -[[an offer of great personal value was needed. So she offered him her most beloved: ]] .. |
475 | -[[her husband, the father of her only child.]] |
476 | - )) .. p(_( |
477 | -[[But not even this changed the mind of the god. The water kept on rising. ]] .. |
478 | -[[Nearly driven insane by guilt, pain and anger, Jundlina became a heretic: ]] .. |
479 | -[[Secretly, she gathered people of the common folk who were not in line ]] .. |
480 | -[[with the decision of the clerics to accept the god’s will. ]] .. |
481 | -[[Together with them, she set the temple on fire and stole a ship to flee from the god’s influence over Atlantis. ]] .. |
482 | -[[This small group started praying to Satul, the fire god and the worst enemy of Lutas.]] |
483 | - )) .. p(_( |
484 | -[[Leaving the dying Atlantis and their past behind, they started on a quest to ]] .. |
485 | -[[find a place sheltered by the fire and protected from the sea.]] |
486 | - )) |
487 | -) |
488 | -}, |
489 | + { |
490 | + title = _"Proud to the Death", |
491 | + body = rt( |
492 | + h1(_"Favored by the God") .. |
493 | + p(_([[On the hidden and lost island of Atlantis, a proud tribe settled since the world was very young. Ruled by the bloodline of King Ajanthul – the first human to be empowered by the sea god Lutas to breathe above sea level – and the wise clerics, who provided the link to Lutas – they prospered and became civilized.]])) .. |
494 | + p(_([[This story is taking place during the reign of King Askandor, the 43rd successor of King Ajanthul. He had been a good king, ruling Atlantis with wisdom and foresight. But with age, he became afraid of dying and so he began looking for a cure for death even though most clerics warned him against it. Some said that endless life was only for the gods and that to seek for it was forbidden.]])) |
495 | + ) |
496 | + }, |
497 | + { |
498 | + title = _"Disgraced Before the God", |
499 | + body = rt( |
500 | + h1(_"The God’s Punishment") .. |
501 | + p(_([[But all seemed well. Only the horses seemed to feel something was wrong. During the nights, they went crazy and were full of fear. It was not long before the horse breeder Xydra figured out what was wrong with them: the sea level in front of their stable was rising with ever increasing speed.]])) .. |
502 | + p(_([[The clerics retreated into meditation and the reason for the rising water was soon to be found: the god Lutas had lost faith in the Atlanteans because of the boldness of their king. He decided to withdraw the rights that were granted to King Ajanthul and his children. And so, he called them back below the sea again.]])) |
503 | + ) |
504 | + }, |
505 | + { |
506 | + title = _"Uproar and Confusion", |
507 | + body = rt( |
508 | + h1(_"Emerging Chaos...") .. |
509 | + p(_([[Guilt-ridden, the king committed suicide. Without a monarch, the people turned to the clerics, but they had no substantial help to offer. Most accepted their fate while others tried to change the god’s mind by offering animals in his temple. But to no avail...]])) .. |
510 | + p(_([[Jundlina, the late king’s daughter and the highest priestess of the god was the most determined cleric. As countless offerings didn’t change the situation, she convinced herself that to soothe the god, an offer of great personal value was needed. So she offered him her most beloved: her husband, the father of her only child.]])) .. |
511 | + p(_([[But not even this changed the mind of the god. The water kept on rising. Nearly driven insane by guilt, pain and anger, Jundlina became a heretic: Secretly, she gathered people of the common folk who were not in line with the decision of the clerics to accept the god’s will. Together with them, she set the temple on fire and stole a ship to flee from the god’s influence over Atlantis. This small group started praying to Satul, the fire god and the worst enemy of Lutas.]])) .. |
512 | + p(_([[Leaving the dying Atlantis and their past behind, they started on a quest to find a place sheltered by the fire and protected from the sea.]])) |
513 | + ) |
514 | + }, |
515 | } -- end of initial messages. |
516 | |
517 | first_briefing_messages = { |
518 | -{ |
519 | - title = _ "The Princess’ Memoir", |
520 | - body = jundlina(_ "Jundlina Writes Down Her Memories", _( |
521 | -[[We left Atlantis and sailed east. ]] .. |
522 | -[[We entered the forbidden sea on the sixth day without noticing any pursuers from Atlantis ]] .. |
523 | -[[and without Lutas having smashed our ship. Now, we are out of his reach. ]] .. |
524 | -[[One day later, we sighted an island which seems to have one of these fire spitting mountains on it. ]] .. |
525 | -[[I deemed this a sign from the fire god and we landed on its shore.]]) |
526 | -.. paragraphdivider() .. _( |
527 | -[[We spent the last week building two watchtowers on the mountains close to our landing area; ]] .. |
528 | -[[and, of course, a hall for us all. We have very talented constructors in our group – still, ]] .. |
529 | -[[the buildings do not match the art we had on Atlantis. I hope they will withstand the next rain. ]] .. |
530 | -[[At least, the towers will warn us if a ship from Atlantis follows us and if the island is inhabited, ]] .. |
531 | -[[we will see attackers a long time before they arrive.]]) |
532 | -.. paragraphdivider() .. _( |
533 | -[[We have established ourselves on this island. The next step is now to make it a home. ]] .. |
534 | -[[I reckon we need to establish a sustainable economy and to explore our surroundings. ]] .. |
535 | -[[I called for specialists and will follow their advice.]]) |
536 | - ) |
537 | -}, |
538 | -{ |
539 | - title = _ "Loftomor and Sidolus Arrive", |
540 | - body = jundlina( _"Jundlina", _( |
541 | -[[May Satul warm you both. Loftomor, you have been the island’s most renowned architect. ]] .. |
542 | -[[Sidolus, you are a seasoned warrior and strategist. I have called you before me to seek your counsel: ]] .. |
543 | -[[what needs to be done to make this our new home?]] |
544 | - )) |
545 | -}, |
546 | -{ |
547 | - title = _ "Loftomor Speaks", |
548 | - body = loftomor(_( |
549 | -[[May Satul warm you, Jundlina! ]] .. |
550 | -[[The most important things for building a settlement are the building materials. ]] .. |
551 | -[[There are some trees here, so we should build housings for some woodcutters and of course also for foresters, ]] .. |
552 | -[[so we will not run out of trees. Oh, and we mustn’t forget the sawmill, ]] .. |
553 | -[[for most buildings can’t be made out of logs alone. Stronger buildings also need stone, ]] .. |
554 | -[[but there is plenty to the north-east of here; ]] .. |
555 | -[[we just need to build a quarry, and my stonemasons will go to work promptly.]] |
556 | - )) .. new_objectives(obj_ensure_build_wares_production) |
557 | -}, |
558 | -{ |
559 | - title = _ "Sidolus Speaks", |
560 | - body = sidolus(_( |
561 | -[[May Satul warm you, Jundlina! I agree with what Loftomor proposes. ]] .. |
562 | -[[We need a good supply of building materials for we have to expand our territory swiftly. ]] .. |
563 | -[[I will not feel safe on this island as long as we have not seen all its shores it. ]] .. |
564 | -[[I brought plenty of good men from Atlantis. The military might is available. ]] .. |
565 | -[[We only need some housing to live in.]]) |
566 | - ) .. new_objectives(obj_expand) |
567 | -} |
568 | + { |
569 | + title = _"The Princess’ Memoir", |
570 | + body = jundlina(_"Jundlina Writes Down Her Memories", |
571 | + _([[We left Atlantis and sailed east. We entered the forbidden sea on the sixth day without noticing any pursuers from Atlantis and without Lutas having smashed our ship. Now, we are out of his reach. One day later, we sighted an island which seems to have one of these fire spitting mountains on it. I deemed this a sign from the fire god and we landed on its shore.]]) |
572 | + .. paragraphdivider() .. |
573 | + _([[We spent the last week building two watchtowers on the mountains close to our landing area; and, of course, a hall for us all. We have very talented constructors in our group – still, the buildings do not match the art we had on Atlantis. I hope they will withstand the next rain. At least, the towers will warn us if a ship from Atlantis follows us and if the island is inhabited, we will see attackers a long time before they arrive.]]) |
574 | + .. paragraphdivider() .. |
575 | + _([[We have established ourselves on this island. The next step is now to make it a home. I reckon we need to establish a sustainable economy and to explore our surroundings. I called for specialists and will follow their advice.]])) |
576 | + }, |
577 | + { |
578 | + title = _"Loftomor and Sidolus Arrive", |
579 | + body = jundlina( _"Jundlina", |
580 | + _([[May Satul warm you both. Loftomor, you have been the island’s most renowned architect. Sidolus, you are a seasoned warrior and strategist. I have called you before me to seek your counsel: what needs to be done to make this our new home?]])) |
581 | + }, |
582 | + { |
583 | + title = _"Loftomor Speaks", |
584 | + body = loftomor( |
585 | + _([[May Satul warm you, Jundlina! The most important things for building a settlement are the building materials. There are some trees here, so we should build housings for some woodcutters and of course also for foresters, so we will not run out of trees. Oh, and we mustn’t forget the sawmill, for most buildings can’t be made out of logs alone. Stronger buildings also need stone, but there is plenty to the north-east of here; we just need to build a quarry, and my stonemasons will go to work promptly.]])) |
586 | + .. new_objectives(obj_ensure_build_wares_production) |
587 | + }, |
588 | + { |
589 | + title = _"Sidolus Speaks", |
590 | + body = sidolus( |
591 | + _([[May Satul warm you, Jundlina! I agree with what Loftomor proposes. We need a good supply of building materials for we have to expand our territory swiftly. I will not feel safe on this island as long as we have not seen all its shores it. I brought plenty of good men from Atlantis. The military might is available. We only need some housing to live in.]])) |
592 | + .. new_objectives(obj_expand) |
593 | + } |
594 | } |
595 | |
596 | food_story_message = { |
597 | -{ |
598 | - title = _ "Jundlina is Satisfied", |
599 | - body = jundlina(_"Jundlina’s Memoirs", _( |
600 | -[[Our building infrastructure is finished and I spent some days making sure that everybody is working well together. ]] .. |
601 | -[[Now, there are other pressing matters. ]] .. |
602 | -[[I called Colionder, my personal cook, before me to get his help with sorting some things out.]] |
603 | - )) |
604 | -}, |
605 | -{ |
606 | - title = _ "Colionder Arrives", |
607 | - body = colionder(_ |
608 | -[[May Satul warm you, Jundlina. Can I be of any service to you or the god?]] |
609 | - ) |
610 | -}, |
611 | -{ |
612 | - title = _ "Jundlina Replies", |
613 | - body = jundlina(_"Jundlina", _( |
614 | -[[May Satul warm you too, Colionder. ]] .. |
615 | -[[Yes, I wondered if there is a way that we could centralize our food production. ]] .. |
616 | -[[We lose a lot of productivity because our people are accustomed to making their own food. ]] .. |
617 | -[[I feel if we could split responsibilities, it would be better for us all. ]] .. |
618 | -[[I want your thoughts on this.]] |
619 | - )) |
620 | -}, |
621 | -{ |
622 | - title = _ "Colionder is in Thought", |
623 | - body = colionder(_( |
624 | -[[Ahh, but I think this is impossible to change. The preparing and eating of food is something deeply ingrained in us Atlanteans – it is a ceremony that we just need for our well-being. So I guess we cannot take this away from the individuals completely.]]) |
625 | -.. paragraphdivider() .. _( |
626 | -[[But we might find a compromise in between: for me, making bread is a troublesome task. Grinding the blackroot and corn to flour and then baking the bread is tedious and boring; I feel a more industrial approach would be helpful here. I for one would love to just have fresh bread delivered to my house every day.]]) |
627 | -.. paragraphdivider() .. _( |
628 | -[[Oooh and even more important: the smoking of fish and meat to cleanse them and improve their taste is terrible. My house is full of smoke and stinks for weeks afterwards. Don’t you think that this could be done in a special building where the side effects do not matter? I think those two things would be accepted by the people and would reduce the cooking time without taking away the ritual.]] |
629 | - )) |
630 | -}, |
631 | -{ |
632 | - title = _ "Jundlina Agrees", |
633 | - body = jundlina(_ |
634 | -[[Your words sound wise to me, Colionder. So be it then.]] |
635 | - ) .. new_objectives(obj_make_food_infrastructure) |
636 | -}, |
637 | + { |
638 | + title = _"Jundlina is Satisfied", |
639 | + body = jundlina(_"Jundlina’s Memoirs", |
640 | + _([[Our building infrastructure is finished and I spent some days making sure that everybody is working well together. Now, there are other pressing matters. I called Colionder, my personal cook, before me to get his help with sorting some things out.]])) |
641 | + }, |
642 | + { |
643 | + title = _"Colionder Arrives", |
644 | + body = colionder( |
645 | + _[[May Satul warm you, Jundlina. Can I be of any service to you or the god?]]) |
646 | + }, |
647 | + { |
648 | + title = _"Jundlina Replies", |
649 | + body = jundlina(_"Jundlina", |
650 | + _([[May Satul warm you too, Colionder. Yes, I wondered if there is a way that we could centralize our food production. We lose a lot of productivity because our people are accustomed to making their own food. I feel if we could split responsibilities, it would be better for us all. I want your thoughts on this.]])) |
651 | + }, |
652 | + { |
653 | + title = _"Colionder is in Thought", |
654 | + body = colionder( |
655 | + _([[Ahh, but I think this is impossible to change. The preparing and eating of food is something deeply ingrained in us Atlanteans – it is a ceremony that we just need for our well-being. So I guess we cannot take this away from the individuals completely.]]) |
656 | + .. paragraphdivider() .. |
657 | + _([[But we might find a compromise in between: for me, making bread is a troublesome task. Grinding the blackroot and corn to flour and then baking the bread is tedious and boring; I feel a more industrial approach would be helpful here. I for one would love to just have fresh bread delivered to my house every day.]]) |
658 | + .. paragraphdivider() .. |
659 | + _([[Oooh and even more important: the smoking of fish and meat to cleanse them and improve their taste is terrible. My house is full of smoke and stinks for weeks afterwards. Don’t you think that this could be done in a special building where the side effects do not matter? I think those two things would be accepted by the people and would reduce the cooking time without taking away the ritual.]])) |
660 | + }, |
661 | + { |
662 | + title = _"Jundlina Agrees", |
663 | + body = jundlina(_"Jundlina Agrees", |
664 | + _([[Your words sound wise to me, Colionder. So be it then.]])) |
665 | + .. new_objectives(obj_make_food_infrastructure) |
666 | + }, |
667 | } |
668 | |
669 | food_story_ended_messages = { |
670 | { |
671 | - title = _ "Jundlina is Satisfied", |
672 | - body = jundlina(_ "Jundlina is Reviewing the Reports", _( |
673 | -[[Seems like our food production is finished and everybody is working together nicely. ]] .. |
674 | -[[It is really starting to feel like home here.]] |
675 | - )) |
676 | + title = _"Jundlina is Satisfied", |
677 | + body = jundlina(_"Jundlina is Reviewing the Reports", |
678 | + _([[Seems like our food production is finished and everybody is working together nicely. It is really starting to feel like home here.]])) |
679 | } |
680 | } |
681 | |
682 | spidercloth_messages = { |
683 | { |
684 | - title = _"A Man Comes to Jundlina", |
685 | - body = opol(_( |
686 | -[[May Satul warm you, Jundlina. My name is Opol, and I am the highest weaver of the guild abandoning Atlantis and Lutas with you. I come with sad news indeed: we have no more spidercloth. Not a single piece is to be found in our warehouses. Could you not help the weavers’ guild by arranging the building of a weaving mill and a spider farm? The spiders deliver the finest silk and we will produce the finest spidercloth from it.]]) |
687 | -.. paragraphdivider() .. _( |
688 | -[[We offer to also produce the tabards for young soldiers and the golden tabards for officers for you in exchange. You will need them for sure as soon as you want to recruit new soldiers.]])) |
689 | - }, |
690 | - { |
691 | - title = _ "Jundlina Replies", |
692 | - body = jundlina(_ "Jundlina Replies", _( |
693 | -[[May Satul warm you too, Opol. I wanted to delay production of spidercloth, but I understand your urgency. ]] .. |
694 | -[[Your suggestion sounds fair to me, I will build your weaving mill and spider farm. ]] .. |
695 | -[[I will also build a gold spinning mill so that the golden tabards you make will not be golden by name alone.]] |
696 | - )) .. new_objectives(obj_spidercloth_production) |
697 | - } |
698 | + title = _"A Man Comes to Jundlina", |
699 | + body = opol( |
700 | + _([[May Satul warm you, Jundlina. My name is Opol, and I am the highest weaver of the guild abandoning Atlantis and Lutas with you. I come with sad news indeed: we have no more spidercloth. Not a single piece is to be found in our warehouses. Could you not help the weavers’ guild by arranging the building of a weaving mill and a spider farm? The spiders deliver the finest silk and we will produce the finest spidercloth from it.]]) |
701 | + .. paragraphdivider() .. |
702 | + _([[We offer to also produce the tabards for young soldiers and the golden tabards for officers for you in exchange. You will need them for sure as soon as you want to recruit new soldiers.]])) |
703 | + }, |
704 | + { |
705 | + title = _"Jundlina Replies", |
706 | + body = jundlina(_"Jundlina", |
707 | + _([[May Satul warm you too, Opol. I wanted to delay production of spidercloth, but I understand your urgency. Your suggestion sounds fair to me, I will build your weaving mill and spider farm. I will also build a gold spinning mill so that the golden tabards you make will not be golden by name alone.]])) |
708 | + .. new_objectives(obj_spidercloth_production) |
709 | + } |
710 | } |
711 | |
712 | spidercloth_story_ended_messages = { |
713 | { |
714 | - title = _ "Opol Seeks Out Jundlina", |
715 | - body = opol(_( |
716 | -[[May Satul warm you, Jundlina! ]] .. |
717 | -[[The weaving mill, gold spinning mill and spider farm buildings are complete ]] .. |
718 | -[[and are starting their work at this very moment. The weavers’ guild is very grateful for your support ]] .. |
719 | -[[and we will stand by our word and deliver the first tabard very soon.]] |
720 | - )) |
721 | + title = _"Opol Seeks Out Jundlina", |
722 | + body = opol( |
723 | + _([[May Satul warm you, Jundlina! The weaving mill, gold spinning mill and spider farm buildings are complete and are starting their work at this very moment. The weavers’ guild is very grateful for your support and we will stand by our word and deliver the first tabard very soon.]])) |
724 | }, |
725 | { |
726 | - title = _ "Jundlina Replies", |
727 | - body = jundlina(_( |
728 | -[[This is good news indeed, Opol. Our economy is developing very well. ]] .. |
729 | -[[Go back to your work now, Opol, and may Satul warm you and all your guild members!]] |
730 | - )) |
731 | + title = _"Jundlina Replies", |
732 | + body = jundlina(_"Jundlina", |
733 | + _([[This is good news indeed, Opol. Our economy is developing very well. Go back to your work now, Opol, and may Satul warm you and all your guild members!]])) |
734 | } |
735 | } |
736 | |
737 | |
738 | heavy_industry_story = { |
739 | { |
740 | - title = _ "Sidolus Seeks Out Jundlina", |
741 | - body = sidolus(_( |
742 | -[[May Satul warm you, Jundlina. Have you considered mining for resources in the mountains around us? ]] .. |
743 | -[[We are running short of quartz, crystal and diamonds for our buildings. ]] .. |
744 | -[[Also we could use more iron, gold and especially coal. If we find an ample supply of those commodities, ]] .. |
745 | -[[we could start producing weapons and tools; this would help enormously. ]] .. |
746 | -[[Of course, we would need smelters, a weapon smithy, an armor smithy and a toolsmithy. And maybe even more.]] |
747 | - )) |
748 | + title = _"Sidolus Seeks Out Jundlina", |
749 | + body = sidolus( |
750 | + _([[May Satul warm you, Jundlina. Have you considered mining for resources in the mountains around us? We are running short of quartz, crystal and diamonds for our buildings. Also we could use more iron, gold and especially coal. If we find an ample supply of those commodities, we could start producing weapons and tools; this would help enormously. Of course, we would need smelters, a weapon smithy, an armor smithy and a toolsmithy. And maybe even more.]])) |
751 | }, |
752 | { |
753 | - title = _ "Jundlina Replies", |
754 | - body = jundlina(_"Jundlina Nods", _( |
755 | -[[I have considered this, Sidolus. I think it is about time. We will make this a priority for now. You shall get your industry soon!]] |
756 | - )) .. new_objectives(obj_make_heavy_industry_and_mining) |
757 | + title = _"Jundlina Replies", |
758 | + body = jundlina(_"Jundlina Nods", |
759 | + _([[I have considered this, Sidolus. I think it is about time. We will make this a priority for now. You shall get your industry soon!]])) |
760 | + .. new_objectives(obj_make_heavy_industry_and_mining) |
761 | }, |
762 | } |
763 | |
764 | training_story = { |
765 | { |
766 | - title = _ "Jundlina Summons Sidolus", |
767 | - body = jundlina(_ "Jundlina is Angry", _( |
768 | -[[What is this I hear, Sidolus? I received words about your soldiers misbehaving and bullying the common folk. ]] .. |
769 | -[[What is this nonsense all about? They are servants for the common good and must not misuse their powers. ]] .. |
770 | -[[This is inexcusable! Explain this, if you will!]] |
771 | - )) |
772 | + title = _"Jundlina Summons Sidolus", |
773 | + body = jundlina(_"Jundlina is Angry", |
774 | + _([[What is this I hear, Sidolus? I received words about your soldiers misbehaving and bullying the common folk. What is this nonsense all about? They are servants for the common good and must not misuse their powers. This is inexcusable! Explain this, if you will!]])) |
775 | }, |
776 | { |
777 | - title = _ "Sidolus Seems Contrite", |
778 | - body = sidolus(_( |
779 | -[[I agree with you and I have punished the troublemakers severely. ]] .. |
780 | -[[But it is very difficult to keep my men quiet: they are bored and have nothing to do. ]] .. |
781 | -[[I would like to ramp up their drill. ]] .. |
782 | -[[I think more routine in their life would keep them occupied and focused on their duties. ]] .. |
783 | -[[I would need a dungeon and a labyrinth for them. ]] .. |
784 | -[[I have the plans ready, but I guess they won’t come cheap.]] |
785 | - )) |
786 | + title = _"Sidolus Seems Contrite", |
787 | + body = sidolus( |
788 | + _([[I agree with you and I have punished the troublemakers severely. But it is very difficult to keep my men quiet: they are bored and have nothing to do. I would like to ramp up their drill. I think more routine in their life would keep them occupied and focused on their duties. I would need a dungeon and a labyrinth for them. I have the plans ready, but I guess they won’t come cheap.]])) |
789 | }, |
790 | { |
791 | title = _"Jundlina Replies", |
792 | - body = jundlina(_( |
793 | -[[I do not fear the cost and labor as long as it keeps your people at bay. You shall get your buildings. ]] .. |
794 | -[[But note that I will not tolerate any rogue soldier; if similar things happen again, ]] .. |
795 | -[[I will make you responsible for them. Dismissed.]] |
796 | - )) .. new_objectives(obj_make_training_buildings) |
797 | + body = jundlina(_"Jundlina", |
798 | + _([[I do not fear the cost and labor as long as it keeps your people at bay. You shall get your buildings. But note that I will not tolerate any rogue soldier; if similar things happen again, I will make you responsible for them. Dismissed.]])) |
799 | + .. new_objectives(obj_make_training_buildings) |
800 | } |
801 | } |
802 | |
803 | training_story_end = { |
804 | { |
805 | - title = _ "Jundlina Received a Letter", |
806 | - body = jundlina(_"Jundlina", _( |
807 | -[[I received an invitation from Sidolus. The first day of training in the newly finished labyrinth will be tomorrow. ]] .. |
808 | -[[The dungeon is done as well and will start its work soon. I am looking forward to tomorrow; ]] .. |
809 | -[[I am very interested in how our soldiers are trained, and I wonder if the additional workload ]] .. |
810 | -[[will keep them from bullying the civilian population.]] |
811 | - )) |
812 | + title = _"Jundlina Received a Letter", |
813 | + body = jundlina(_"Jundlina", |
814 | + _([[I received an invitation from Sidolus. The first day of training in the newly finished labyrinth will be tomorrow. The dungeon is done as well and will start its work soon. I am looking forward to tomorrow; I am very interested in how our soldiers are trained, and I wonder if the additional workload will keep them from bullying the civilian population.]])) |
815 | } |
816 | } |
817 | |
818 | horsefarm_and_warehouse_story = { |
819 | { |
820 | - title = _ "Jundlina Considers the Economy", |
821 | - body = jundlina(_"Jundlina", _( |
822 | -[[People are complaining about crowded streets and slow transportation. We need to help out our carriers on the roads. I have decided to build a horse farm so that the horses can help with the heavy wares.]]) |
823 | -.. paragraphdivider() .. _( |
824 | -[[Another way to take load from our roads is to build warehouses. We have claimed the mountain now, it seems a good idea to have a warehouse on the plateau to avoid having to transport everything up and down the slopes.]] |
825 | - )) .. new_objectives(obj_horsefarm_and_warehouse) |
826 | + title = _"Jundlina Considers the Economy", |
827 | + body = jundlina(_"Jundlina", |
828 | + _([[People are complaining about crowded streets and slow transportation. We need to help out our carriers on the roads. I have decided to build a horse farm so that the horses can help with the heavy wares.]]) |
829 | + .. paragraphdivider() .. |
830 | + _([[Another way to take load from our roads is to build warehouses. We have claimed the mountain now, it seems a good idea to have a warehouse on the plateau to avoid having to transport everything up and down the slopes.]])) |
831 | + .. new_objectives(obj_horsefarm_and_warehouse) |
832 | } |
833 | } |
834 | |
835 | @@ -411,118 +315,91 @@ |
836 | -- Leftover buildings found |
837 | -- ======================================================================= |
838 | first_leftover_building_found = { |
839 | -{ |
840 | - posx = 100000, |
841 | - posy = 0, |
842 | - title = _ "A Dangerous Discovery", |
843 | - body = jundlina(_ "Jundlina is in Thought", _( |
844 | -[[We found an old building, destroyed and burned by flames. I am very worried about this discovery. The building is not of any kind I’ve ever seen. It is certainly not designed by any Atlantean architect I’ve ever heard about. The building is crude, the assemblage is sloppy. But the materials are very enduring: the wood used for it seemed to have been burned in a strange way before it was used as building material – it is hard as stone.]]) |
845 | -.. paragraphdivider() .. _( |
846 | -[[The implications frighten me. Are there others on this island? Where are they then? They work with fire, are they praying to Satul too? Are they friends or foe? And why is the building burned down? Has this island seen war? Is a war being waged on it right now?]]) |
847 | -.. paragraphdivider() .. _( |
848 | -[[We must improve our military capabilities. If there are foes on the island, we have to be prepared when we meet them. We should also enforce the fortification of our borders.]]) |
849 | - ) |
850 | -} |
851 | + { |
852 | + posx = 100000, |
853 | + posy = 0, |
854 | + title = _"A Dangerous Discovery", |
855 | + body = jundlina(_"Jundlina is in Thought", |
856 | + _([[We found an old building, destroyed and burned by flames. I am very worried about this discovery. The building is not of any kind I’ve ever seen. It is certainly not designed by any Atlantean architect I’ve ever heard about. The building is crude, the assemblage is sloppy. But the materials are very enduring: the wood used for it seemed to have been burned in a strange way before it was used as building material – it is hard as stone.]]) |
857 | + .. paragraphdivider() .. |
858 | + _([[The implications frighten me. Are there others on this island? Where are they then? They work with fire, are they praying to Satul too? Are they friends or foe? And why is the building burned down? Has this island seen war? Is a war being waged on it right now?]]) |
859 | + .. paragraphdivider() .. |
860 | + _([[We must improve our military capabilities. If there are foes on the island, we have to be prepared when we meet them. We should also enforce the fortification of our borders.]])) |
861 | + } |
862 | } |
863 | |
864 | second_leftover_building_found = { |
865 | -{ |
866 | - posx = 100000, |
867 | - posy = 0, |
868 | - title = _ "Another Building", |
869 | - body = jundlina(_ "Jundlina is Worried", _( |
870 | -[[We found one more building of this strange making. We have yet to see any of its builders. ]] .. |
871 | -[[But obviously there has been a community on this island before and obviously it was militarized. ]] .. |
872 | -[[I have to check on our military status with my generals. ]] .. |
873 | -[[I will not allow that a potential enemy will find us unprepared.]] |
874 | - )) |
875 | -} |
876 | + { |
877 | + posx = 100000, |
878 | + posy = 0, |
879 | + title = _"Another Building", |
880 | + body = jundlina(_"Jundlina is Worried", |
881 | + _([[We found one more building of this strange making. We have yet to see any of its builders. But obviously there has been a community on this island before and obviously it was militarized. I have to check on our military status with my generals. I will not allow that a potential enemy will find us unprepared.]])) |
882 | + } |
883 | } |
884 | |
885 | third_leftover_building_found = { |
886 | -{ |
887 | - posx = 100000, |
888 | - posy = 0, |
889 | - title = _ "One More Building", |
890 | - body = jundlina(_( |
891 | -[[And yet another of these buildings. ]] .. |
892 | -[[We know now that the tribe that built them once had complete control over the island. ]] .. |
893 | -[[But I am no longer so scared of potential enemies. ]] .. |
894 | -[[We know so much of this island already and there is no trace of this old economy to be found. ]] .. |
895 | -[[I am starting to relax, but I will not let our guard down as we continue to explore this beautiful island. ]] .. |
896 | -[[But without obvious dangers, I am feeling very much at home here already.]] |
897 | - )) |
898 | -} |
899 | + { |
900 | + posx = 100000, |
901 | + posy = 0, |
902 | + title = _"One More Building", |
903 | + body = jundlina(_"Jundlina is in Thought", |
904 | + _([[And yet another of these buildings. We know now that the tribe that built them once had complete control over the island. But I am no longer so scared of potential enemies. We know so much of this island already and there is no trace of this old economy to be found. I am starting to relax, but I will not let our guard down as we continue to explore this beautiful island. But without obvious dangers, I am feeling very much at home here already.]])) |
905 | + } |
906 | } |
907 | |
908 | -- ======================= |
909 | -- Flooding of the island |
910 | -- ======================= |
911 | field_flooded_msg = { |
912 | -{ |
913 | - posx = 100000, |
914 | - posy = 0, |
915 | - title = _ "The Water is Rising!", |
916 | - body = jundlina(_"Jundlina", _( |
917 | -[[May Satul save us! Lutas is still trying to get to us. A scout informed me that the ocean is rising quickly. ]] .. |
918 | -[[We have to reach higher ground and evacuate everybody and as much wares as we can ]] .. |
919 | -[[from the headquarters up the mountains. How can we escape?]] |
920 | - )) |
921 | -}, |
922 | -{ |
923 | - title = _ "A Young Man Approaches", |
924 | - body = ostur(_( |
925 | -[[May Satul warm you, Jundlina. My name is Ostur and I construct ships. ]] .. |
926 | -[[I have invented a new kind of ship: smaller than those we are used to, but much sturdier. ]] .. |
927 | -[[If we build them correctly, I am confident that we can sail a much longer distance with them ]] .. |
928 | -[[and maybe escape from Lutas’ influence.]] |
929 | - )) |
930 | -}, |
931 | -{ |
932 | - title = _ "Jundlina Replies", |
933 | - body = jundlina(_ "Jundlina", _( |
934 | -[[Ostur, we have no time. The water rises too fast, and if we build the ships on the shore ]] .. |
935 | -[[they will vanish in the sea before they can float. I fear we are doomed!]] |
936 | - )), |
937 | -}, |
938 | -{ |
939 | - posx = 100000, |
940 | - posy = 0, |
941 | - title = _"Ostur Seems Confident", |
942 | - pre_func = function() |
943 | - local lake_field = map:get_field(75,80) |
944 | - p1:reveal_fields(lake_field:region(10)) |
945 | - scroll_smoothly_to(lake_field) |
946 | - sleep(200) |
947 | - end, |
948 | - body = ostur(_( |
949 | -[[A friend of mine explored the island on his own and he told me of a big lake at the top of the mountain. ]] .. |
950 | -[[I suggest we build the ships in this lake and wait until the island drowns beneath us. Then we can sail away. ]] .. |
951 | -[[It is a bold plan, but I think it could work.]] |
952 | - )) |
953 | -}, |
954 | -{ |
955 | - title = _ "Jundlina Replies", |
956 | - body = jundlina(_( |
957 | -[[Your red hair is a signal from the fire god. I will trust you and support your plan. Our survival lies in your hands now, Ostur.]]) |
958 | -.. paragraphdivider() .. _( |
959 | -[[Swift now, we need a house for Ostur next to the lake, and we need planks, logs and spidercloth for the construction there. Forget about everything else, we need those wares on top of the mountain before our warehouses are all swallowed by the sea.]] |
960 | - )) .. new_objectives(obj_build_ships) |
961 | -} |
962 | + { |
963 | + posx = 100000, |
964 | + posy = 0, |
965 | + title = _"The Water is Rising!", |
966 | + body = jundlina(_"Jundlina", |
967 | + _([[May Satul save us! Lutas is still trying to get to us. A scout informed me that the ocean is rising quickly. We have to reach higher ground and evacuate everybody and as much wares as we can from the headquarters up the mountains. How can we escape?]])) |
968 | + }, |
969 | + { |
970 | + title = _"A Young Man Approaches", |
971 | + body = ostur( |
972 | + _([[May Satul warm you, Jundlina. My name is Ostur and I construct ships. I have invented a new kind of ship: smaller than those we are used to, but much sturdier. If we build them correctly, I am confident that we can sail a much longer distance with them and maybe escape from Lutas’ influence.]])) |
973 | + }, |
974 | + { |
975 | + title = _"Jundlina Replies", |
976 | + body = jundlina(_"Jundlina", |
977 | + _([[Ostur, we have no time. The water rises too fast, and if we build the ships on the shore they will vanish in the sea before they can float. I fear we are doomed!]])) |
978 | + }, |
979 | + { |
980 | + posx = 100000, |
981 | + posy = 0, |
982 | + title = _"Ostur Seems Confident", |
983 | + pre_func = function() |
984 | + local lake_field = map:get_field(75,80) |
985 | + p1:reveal_fields(lake_field:region(10)) |
986 | + scroll_smoothly_to(lake_field) |
987 | + sleep(200) |
988 | + end, |
989 | + body = ostur( |
990 | + _([[A friend of mine explored the island on his own and he told me of a big lake at the top of the mountain. I suggest we build the ships in this lake and wait until the island drowns beneath us. Then we can sail away. It is a bold plan, but I think it could work.]])) |
991 | + }, |
992 | + { |
993 | + title = _"Jundlina Replies", |
994 | + body = jundlina(_"Jundlina", |
995 | + _([[Your red hair is a signal from the fire god. I will trust you and support your plan. Our survival lies in your hands now, Ostur.]]) |
996 | + .. paragraphdivider() .. |
997 | + _([[Swift now, we need a house for Ostur next to the lake, and we need planks, logs and spidercloth for the construction there. Forget about everything else, we need those wares on top of the mountain before our warehouses are all swallowed by the sea.]])) |
998 | + .. new_objectives(obj_build_ships) |
999 | + } |
1000 | } |
1001 | |
1002 | scenario_won = { |
1003 | { |
1004 | - title = _ "Jundlina is Relieved", |
1005 | - body = jundlina(_"Jundlina", _( |
1006 | -[[Praise Satul! Ostur, the young ship builder did it. ]] .. |
1007 | -[[We have three ships – never have I seen sturdier ones – with enough room to carry all of us and some wares too. ]] .. |
1008 | -[[And this rescue came just in time: Lutas is about to swallow the rest of this island, ]] .. |
1009 | -[[the water rises faster by the hour. But we can make our escape now and start over in some country farther away… ]] .. |
1010 | -[[I expect a long journey, but we will find the land of Satul in the end. ]] .. |
1011 | -[[This is what I promised my people. And myself.]] |
1012 | - )) .. rt("<p font-size=10> <br></p>" .. h1(_ "Congratulations") .. p(_ |
1013 | -[[You have won this mission. Continue with the next one or keep playing for as long as you like.]] |
1014 | - )), |
1015 | - }, |
1016 | + title = _"Jundlina is Relieved", |
1017 | + body = jundlina(_"Jundlina", |
1018 | + _([[Praise Satul! Ostur, the young ship builder did it. We have three ships – never have I seen sturdier ones – with enough room to carry all of us and some wares too. And this rescue came just in time: Lutas is about to swallow the rest of this island, the water rises faster by the hour. But we can make our escape now and start over in some country farther away...]]) |
1019 | + .. paragraphdivider() .. |
1020 | + _([[I expect a long journey, but we will find the land of Satul in the end. This is what I promised my people. And myself.]])) |
1021 | + .. rt("<p font-size=10> <br></p>" .. h1(_ "Congratulations") .. |
1022 | + p(_[[You have won this mission. Continue with the next one or keep playing for as long as you like.]])) |
1023 | + } |
1024 | } |
1025 | |
1026 | === modified file 'campaigns/bar01.wmf/scripting/mission_thread.lua' |
1027 | --- campaigns/bar01.wmf/scripting/mission_thread.lua 2014-10-28 19:23:06 +0000 |
1028 | +++ campaigns/bar01.wmf/scripting/mission_thread.lua 2014-10-31 11:37:25 +0000 |
1029 | @@ -10,10 +10,10 @@ |
1030 | build_materials_done = false |
1031 | cattle_farm_done = false |
1032 | |
1033 | - |
1034 | -- ===================================================== |
1035 | -- First messages to the player at beginning of mission |
1036 | -- ===================================================== |
1037 | + |
1038 | function introduction_thread() |
1039 | sleep(2000) |
1040 | |
1041 | |
1042 | === modified file 'campaigns/bar01.wmf/scripting/texts.lua' |
1043 | --- campaigns/bar01.wmf/scripting/texts.lua 2014-10-19 09:39:36 +0000 |
1044 | +++ campaigns/bar01.wmf/scripting/texts.lua 2014-10-31 11:37:25 +0000 |
1045 | @@ -34,8 +34,7 @@ |
1046 | number = 1, |
1047 | body = objective_text(_"Expand north-east to the rocks", |
1048 | listitem_bullet(_"Build military buildings (like sentries or barriers) to expand your territory.") .. |
1049 | - listitem_bullet(_"Get to the rocks north-east from you and build a quarry there.") |
1050 | - ), |
1051 | + listitem_bullet(_"Get to the rocks north-east from you and build a quarry there.")) |
1052 | } |
1053 | |
1054 | obj_build_mines = { |
1055 | @@ -45,20 +44,19 @@ |
1056 | body = objective_text(_"Build coal and iron ore mines", |
1057 | listitem_bullet(_"Build a coal mine and an iron ore mine.") .. |
1058 | listitem_arrow(_"To do so, place a flag up on the mountain’s flank to the east (on mountain terrain though, not mountain meadow). When you click on the new flag, you can send geologists there. Because the flag is on a mountain, the geologists will search for ores; otherwise, they would search for water. Then build a mine for both kinds of resources that he will find, choosing the appropriate mine to be built:") .. |
1059 | - "</rt>" .. |
1060 | - rt("image=tribes/barbarians/resi_coal1/resi_00.png", p(_"a bit of coal")) .. |
1061 | - rt("image=tribes/barbarians/resi_coal2/resi_00.png", p(_"a lot of coal")) .. |
1062 | - rt("image=tribes/barbarians/resi_iron1/resi_00.png", p(_"a bit of iron")) .. |
1063 | - rt("image=tribes/barbarians/resi_iron2/resi_00.png", p(_"a lot of iron")) .. |
1064 | - rt("image=tribes/barbarians/resi_gold1/resi_00.png", p(_"a bit of gold")) .. |
1065 | - rt("image=tribes/barbarians/resi_gold2/resi_00.png", p(_"a lot of gold")) .. |
1066 | - rt("image=tribes/barbarians/resi_granite1/resi_00.png", p(_"a bit of granite")) .. |
1067 | - rt("image=tribes/barbarians/resi_granite2/resi_00.png", p(_"a lot of granite")) .. |
1068 | - rt("image=tribes/barbarians/resi_water1/resi_00.png", p(_"water")) .. |
1069 | - rt("image=tribes/barbarians/resi_none/resi_00.png", p(_"nothing was found here")) .. |
1070 | - "<rt>" .. |
1071 | - p(_[[Mines can only be built on mountain terrain. Suitable places for mines are displayed as orange mine symbols.]]) |
1072 | - ) |
1073 | + "</rt>" .. |
1074 | + rt("image=tribes/barbarians/resi_coal1/resi_00.png", p(_"a bit of coal")) .. |
1075 | + rt("image=tribes/barbarians/resi_coal2/resi_00.png", p(_"a lot of coal")) .. |
1076 | + rt("image=tribes/barbarians/resi_iron1/resi_00.png", p(_"a bit of iron")) .. |
1077 | + rt("image=tribes/barbarians/resi_iron2/resi_00.png", p(_"a lot of iron")) .. |
1078 | + rt("image=tribes/barbarians/resi_gold1/resi_00.png", p(_"a bit of gold")) .. |
1079 | + rt("image=tribes/barbarians/resi_gold2/resi_00.png", p(_"a lot of gold")) .. |
1080 | + rt("image=tribes/barbarians/resi_granite1/resi_00.png", p(_"a bit of granite")) .. |
1081 | + rt("image=tribes/barbarians/resi_granite2/resi_00.png", p(_"a lot of granite")) .. |
1082 | + rt("image=tribes/barbarians/resi_water1/resi_00.png", p(_"water")) .. |
1083 | + rt("image=tribes/barbarians/resi_none/resi_00.png", p(_"nothing was found here")) .. |
1084 | + "<rt>" .. |
1085 | + p(_[[Mines can only be built on mountain terrain. Suitable places for mines are displayed as orange mine symbols.]])) |
1086 | } |
1087 | |
1088 | obj_basic_food = { |
1089 | @@ -68,8 +66,7 @@ |
1090 | body = objective_text(_"Build a hunter, a gamekeeper and a tavern", |
1091 | listitem_bullet(_"In order to work, your miners need food.") .. |
1092 | listitem_arrow(_"A hunter can hunt down animals, while a gamekeeper prevents them from becoming extinct. The meat is then processed in a tavern into lunches for your miners.") .. " " .. |
1093 | - _([[This is only the first example of a ware which has to be refined before being used in a secondary building – others will follow.]]) |
1094 | - ) |
1095 | + _([[This is only the first example of a ware which has to be refined before being used in a secondary building – others will follow.]])) |
1096 | } |
1097 | |
1098 | obj_begin_farming = { |
1099 | @@ -77,8 +74,7 @@ |
1100 | title = _"Bake bread", |
1101 | number = 3, |
1102 | body = objective_text(_"Build a well, a farm and a bakery", |
1103 | - _([[Other ways to produce food – different kinds of food – are fishers and hunters. The wheat of the farms has to be processed with water in a bakery before it becomes edible. You can obtain water by building a well on a spot where your geologists have found a water source.]]) |
1104 | - ) |
1105 | + _([[Other ways to produce food – different kinds of food – are fishers and hunters. The wheat of the farms has to be processed with water in a bakery before it becomes edible. You can obtain water by building a well on a spot where your geologists have found a water source.]])) |
1106 | } |
1107 | |
1108 | obj_refine_ores = { |
1109 | @@ -86,8 +82,7 @@ |
1110 | title = _"Refine your mined resources", |
1111 | number = 1, |
1112 | body = objective_text(_"Build a smelting works", |
1113 | - _[[The iron ore your miners dig up is not usable yet – it has to be melted into iron first.]] |
1114 | - ) |
1115 | + _[[The iron ore your miners dig up is not usable yet – it has to be melted into iron first.]]) |
1116 | } |
1117 | |
1118 | obj_enhance_buildings = { |
1119 | @@ -100,8 +95,7 @@ |
1120 | listitem_arrow(_"A normal mine can only dig up about one third of all the resources that lie beneath it; then it must be enhanced to a deep mine in order to keep it working properly. To enhance a building, choose it and then click the appropriate button in the appearing window.") .. |
1121 | listitem_arrow(_"Workers gain experience by successful work. With enough experience, they become more advanced workers, who are necessary to operate the enhanced buildings. Do not enhance a building before you have enough advanced workers to operate the advanced building!") .. |
1122 | listitem_arrow(_"Such buildings usually have greater demands than the basic kind of that building – for instance, deep mines need snacks instead of rations. You will have to enhance your tavern to an inn in order to produce snacks out of pitta bread AND a second kind of food (meat or fish) AND beer.") .. |
1123 | - _"You may of course enhance all mines to deep mines instantly given you have the workers – bigger mines work a bit faster, smaller mines need cheaper food. It’s up to you which strategy you prefer." |
1124 | - ) |
1125 | + _"You may of course enhance all mines to deep mines instantly given you have the workers – bigger mines work a bit faster, smaller mines need cheaper food. It’s up to you which strategy you prefer.") |
1126 | } |
1127 | |
1128 | obj_better_material_1 = { |
1129 | @@ -109,10 +103,9 @@ |
1130 | title = _"Build a wood hardener", |
1131 | number = 1, |
1132 | body = objective_text(_"Build a wood hardener", |
1133 | - _([[Bigger and better buildings – including all military ones – require better building materials. They cannot be built out of simple logs – the wood has to be refined to blackwood by a wood hardener first. Always remember to build a wood hardener before you run out of blackwood, as without it you cannot expand.]]) .. |
1134 | - paragraphdivider() .. |
1135 | - listitem_bullet(_"Build a wood hardener") |
1136 | - ) |
1137 | + _([[Bigger and better buildings – including all military ones – require better building materials. They cannot be built out of simple logs – the wood has to be refined to blackwood by a wood hardener first. Always remember to build a wood hardener before you run out of blackwood, as without it you cannot expand.]]) |
1138 | + .. paragraphdivider() .. |
1139 | + listitem_bullet(_"Build a wood hardener")) |
1140 | } |
1141 | |
1142 | obj_better_material_2 = { |
1143 | @@ -120,16 +113,16 @@ |
1144 | title = _"Build a lime kiln and coal economy", |
1145 | number = 3, |
1146 | body = objective_text(_"Build a lime kiln fed by a well, and by a charcoal kiln or by a coal mine", |
1147 | - _([[Better buildings may also require other improved materials besides blackwood. One of these is grout, which is produced out of raw stone, water and coal by a lime-burner.]]) .. |
1148 | - paragraphdivider() .. |
1149 | - _([[You can obtain water by building a well upon a water source, which your geologists can discover when you send them to any flag that is not on a mountain.]]) ..paragraphdivider() .. |
1150 | + _([[Better buildings may also require other improved materials besides blackwood. One of these is grout, which is produced out of raw stone, water and coal by a lime-burner.]]) |
1151 | + .. paragraphdivider() .. |
1152 | + _([[You can obtain water by building a well upon a water source, which your geologists can discover when you send them to any flag that is not on a mountain.]]) |
1153 | + ..paragraphdivider() .. |
1154 | "</p></rt>" .. |
1155 | - rt("image=pics/menu_geologist.png", p(_"In order to call a geologist to search for water, click on a flag in the area that you want him to search and then on the button labeled ‘Send geologist to explore site’.") .. |
1156 | - paragraphdivider() .. |
1157 | - _([[Coal can be obtained by building a charcoal kiln or a coal mine. Burning charcoal out of logs is slow. You should only build a charcoal kiln when no coal is available.]]) .. |
1158 | - paragraphdivider() .. |
1159 | - listitem_bullet(_"Build a lime kiln and a well. Additionally, build either a charcoal kiln or a coal mine for coal supply.")) |
1160 | - ) |
1161 | + rt("image=pics/menu_geologist.png", p(_"In order to call a geologist to search for water, click on a flag in the area that you want him to search and then on the button labeled ‘Send geologist to explore site’.") |
1162 | + .. paragraphdivider() .. |
1163 | + _([[Coal can be obtained by building a charcoal kiln or a coal mine. Burning charcoal out of logs is slow. You should only build a charcoal kiln when no coal is available.]]) |
1164 | + .. paragraphdivider() .. |
1165 | + listitem_bullet(_"Build a lime kiln and a well. Additionally, build either a charcoal kiln or a coal mine for coal supply."))) |
1166 | } |
1167 | |
1168 | obj_better_material_3 = { |
1169 | @@ -137,10 +130,9 @@ |
1170 | title = _"Build a reed yard", |
1171 | number = 1, |
1172 | body = objective_text(_"Build a reed yard", |
1173 | - _([[The third material necessary for improved buildings is thatch reed, used to cover roofs. Thatch reed is planted by a gardener around his building, the reed yard.]]) .. |
1174 | - paragraphdivider() .. |
1175 | - listitem_bullet(_"Build a reed yard") |
1176 | - ) |
1177 | + _([[The third material necessary for improved buildings is thatch reed, used to cover roofs. Thatch reed is planted by a gardener around his building, the reed yard.]]) |
1178 | + .. paragraphdivider() .. |
1179 | + listitem_bullet(_"Build a reed yard")) |
1180 | } |
1181 | |
1182 | obj_build_cattlefarm = { |
1183 | @@ -148,12 +140,11 @@ |
1184 | title = _"Build a cattle farm", |
1185 | number = 1, |
1186 | body = objective_text(_"Build a cattle farm", |
1187 | - _([[When roads are under heavy load for a long time, one carrier is usually not enough to transport goods swiftly. Traffic jams are the consequence. Such roads therefore employ a second carrier: an ox that helps to carry the wares. This doubles the transport capacity.]]) .. |
1188 | - paragraphdivider() .. |
1189 | - _([[Oxen are bred in cattle farms out of wheat and water.]]) .. |
1190 | - paragraphdivider() .. |
1191 | - listitem_bullet(_"Build a cattle farm") |
1192 | - ) |
1193 | + _([[When roads are under heavy load for a long time, one carrier is usually not enough to transport goods swiftly. Traffic jams are the consequence. Such roads therefore employ a second carrier: an ox that helps to carry the wares. This doubles the transport capacity.]]) |
1194 | + .. paragraphdivider() .. |
1195 | + _([[Oxen are bred in cattle farms out of wheat and water.]]) |
1196 | + .. paragraphdivider() .. |
1197 | + listitem_bullet(_"Build a cattle farm")) |
1198 | } |
1199 | |
1200 | |
1201 | @@ -164,8 +155,8 @@ |
1202 | briefing_msg_01 = { |
1203 | title = _"The Story Begins", |
1204 | body = thron(_"Thron sighs…", |
1205 | - _[[It’s been months, and we are still hiding where the forests are old and dark.]] .. |
1206 | - paragraphdivider() .. |
1207 | + _[[It’s been months, and we are still hiding where the forests are old and dark.]] |
1208 | + .. paragraphdivider() .. |
1209 | _[[My warriors hunt at day and lie awake at night – listening to the sounds of the cruel slaughter echoing from afar amongst the ancient trees.]] |
1210 | ) |
1211 | } |
1212 | @@ -174,10 +165,9 @@ |
1213 | briefing_msg_02 = { |
1214 | title = _"The Story Begins", |
1215 | body = thron( |
1216 | - _[[We can see the raging flames that swallow Al’thunran from here, miles away.]] .. |
1217 | - paragraphdivider() .. |
1218 | - _[[The red lights flash in the darkness and dance to the rhythm of the war drums that haunt me even in my nightmares.]] |
1219 | - ), |
1220 | + _[[We can see the raging flames that swallow Al’thunran from here, miles away.]] |
1221 | + .. paragraphdivider() .. |
1222 | + _[[The red lights flash in the darkness and dance to the rhythm of the war drums that haunt me even in my nightmares.]]), |
1223 | field = al_thunran, |
1224 | position = "topleft", |
1225 | scroll_back = true |
1226 | @@ -187,10 +177,9 @@ |
1227 | briefing_msg_03 = { |
1228 | title = _"The Story Begins", |
1229 | body = thron( |
1230 | - _[[My father’s bones rest peacefully in the ground on which he once ended the senseless spilling of blood that had arisen amongst us. It pains me that his peace only endured for one generation.]] .. |
1231 | - paragraphdivider() .. |
1232 | - _[[Boldreth, my loyal companion and friend is a source of peace and comfort to me in these dark times. He keeps my spirits high and those of my warriors awake, preventing greed or despair from destroying the bonds between us as well.]] |
1233 | - ), |
1234 | + _[[My father’s bones rest peacefully in the ground on which he once ended the senseless spilling of blood that had arisen amongst us. It pains me that his peace only endured for one generation.]] |
1235 | + .. paragraphdivider() .. |
1236 | + _[[Boldreth, my loyal companion and friend is a source of peace and comfort to me in these dark times. He keeps my spirits high and those of my warriors awake, preventing greed or despair from destroying the bonds between us as well.]]), |
1237 | field = grave, |
1238 | position = "topleft" |
1239 | } |
1240 | @@ -199,18 +188,16 @@ |
1241 | briefing_msg_04 = { |
1242 | title = _"The Story Begins", |
1243 | body = thron( |
1244 | - _[[As father told me, there are times to fight and times to lie and wait, trying not to fall asleep or die before the right time comes. And so I do wait.]] |
1245 | - ) |
1246 | + _[[As father told me, there are times to fight and times to lie and wait, trying not to fall asleep or die before the right time comes. And so I do wait.]]) |
1247 | } |
1248 | |
1249 | |
1250 | briefing_msg_05 = { |
1251 | title = _"The Story Begins", |
1252 | body = thron(_"Thron is shaking his head…", |
1253 | - _([[Yet the war goes on. More and more of our brothers and sisters flee the brutal war raging in the capital beneath the trees.]]) .. |
1254 | - paragraphdivider() .. |
1255 | - _([[The stories they tell about the deeds of our kin are sad to hear. I’ve spent nights lying awake, restless, more tired than I ever believed one could be. Yet whenever I close my eyes, I see the fortress my father built consumed by flames. The Throne Among the Trees, the symbol of unity and peace among our kin, became the wedge that drives us apart.]]) |
1256 | - ), |
1257 | + _([[Yet the war goes on. More and more of our brothers and sisters flee the brutal war raging in the capital beneath the trees.]]) |
1258 | + .. paragraphdivider() .. |
1259 | + _([[The stories they tell about the deeds of our kin are sad to hear. I’ve spent nights lying awake, restless, more tired than I ever believed one could be. Yet whenever I close my eyes, I see the fortress my father built consumed by flames. The Throne Among the Trees, the symbol of unity and peace among our kin, became the wedge that drives us apart.]])), |
1260 | field = sf -- scroll back when showing this and the next few message boxes |
1261 | } |
1262 | |
1263 | @@ -218,111 +205,103 @@ |
1264 | briefing_msg_06 = { |
1265 | title = _"The Story Begins", |
1266 | body = thron( |
1267 | - _([[Today my hunters brought men, women and little children before me who had hidden out in the forests, trying to escape the war, hate and revenge that rage among the tribes fighting each other like in olden times, when we were no more but wild beasts driven and controlled by instincts. None of my brothers will ever gain and hold control over the wooden throne, none of the tribes will be strong enough to subdue the other. There will be no end to this slaughter, unless… is this it? As father told me?]]) .. |
1268 | - paragraphdivider() .. |
1269 | - _([[To rise against whoever threatens our very existence, even though it may be one of your own blood or mind?]]) |
1270 | - ) |
1271 | + _([[Today my hunters brought men, women and little children before me who had hidden out in the forests, trying to escape the war, hate and revenge that rage among the tribes fighting each other like in olden times, when we were no more but wild beasts driven and controlled by instincts. None of my brothers will ever gain and hold control over the wooden throne, none of the tribes will be strong enough to subdue the other. There will be no end to this slaughter, unless… is this it? As father told me?]]) |
1272 | + .. paragraphdivider() .. |
1273 | + _([[To rise against whoever threatens our very existence, even though it may be one of your own blood or mind?]])) |
1274 | } |
1275 | |
1276 | |
1277 | briefing_msg_07 = { |
1278 | title = _"The Story Begins", |
1279 | body = thron( |
1280 | - _([[Boldreth seems more and more torn as the days go by. The spirits of my fellows sink as the cold season approaches, and we are still living in no more than huts and barracks. I never intended to stay out here in the wilderness for so long – but I never thought my brothers would engage in this senseless battle for so long either.]]) .. |
1281 | - paragraphdivider() .. |
1282 | - _([[Perhaps it’s time to make ourselves feel a little more at ease here. Perhaps it’s time to give those who still live and think united a new home, replacing what is now lost to us? Until we can return to the place we once called our home…]]) |
1283 | - ) |
1284 | + _([[Boldreth seems more and more torn as the days go by. The spirits of my fellows sink as the cold season approaches, and we are still living in no more than huts and barracks. I never intended to stay out here in the wilderness for so long – but I never thought my brothers would engage in this senseless battle for so long either.]]) |
1285 | + .. paragraphdivider() .. |
1286 | + _([[Perhaps it’s time to make ourselves feel a little more at ease here. Perhaps it’s time to give those who still live and think united a new home, replacing what is now lost to us? Until we can return to the place we once called our home…]])) |
1287 | } |
1288 | |
1289 | |
1290 | briefing_msg_08 = { |
1291 | title = _"Somebody Comes up to You", |
1292 | body = khantrukh(_"An old man says…", |
1293 | - _[[Hail, chieftain. I am Khantrukh and have seen many winters pass. Please allow me to aid you with my counsel through these darkened days.]] .. |
1294 | - paragraphdivider() .. |
1295 | - _[[Only the gods know for how long we have to remain hidden here. The warriors hope we may march back gloriously any day now, but I strongly doubt that will happen soon. And the days are short and cold…]] |
1296 | - ) |
1297 | + _[[Hail, chieftain. I am Khantrukh and have seen many winters pass. Please allow me to aid you with my counsel through these darkened days.]] |
1298 | + .. paragraphdivider() .. |
1299 | + _[[Only the gods know for how long we have to remain hidden here. The warriors hope we may march back gloriously any day now, but I strongly doubt that will happen soon. And the days are short and cold…]]) |
1300 | } |
1301 | |
1302 | |
1303 | order_msg_ranger = { |
1304 | title = _"The Advisor", |
1305 | body = khantrukh(_"Khantrukh notes…", |
1306 | - _[[I see you have already built a quarry and two lumberjack’s huts. That is a good beginning if we want to stay here longer.]] .. |
1307 | - paragraphdivider() .. |
1308 | - _[[But never forget – these forests are our heritage, entrusted upon us by our ancestors. We must always respect and care for them. What we take, we must give back again.]] .. |
1309 | - paragraphdivider() .. |
1310 | - _[[So, in order to replace the trees we chop down, we should build some ranger’s huts, preferably close to the lumberjack’s huts.]]) .. |
1311 | - new_objectives(obj_build_rangers) |
1312 | + _[[I see you have already built a quarry and two lumberjack’s huts. That is a good beginning if we want to stay here longer.]] |
1313 | + .. paragraphdivider() .. |
1314 | + _[[But never forget – these forests are our heritage, entrusted upon us by our ancestors. We must always respect and care for them. What we take, we must give back again.]] |
1315 | + .. paragraphdivider() .. |
1316 | + _[[So, in order to replace the trees we chop down, we should build some ranger’s huts, preferably close to the lumberjack’s huts.]]) |
1317 | + .. new_objectives(obj_build_rangers) |
1318 | } |
1319 | |
1320 | |
1321 | story_msg1 = { |
1322 | title = _"In the Night", |
1323 | body = thron(_"Thron says…", |
1324 | - _[[During another sleepless night, I went up to the hill and gazed towards the north. The fires are still burning, satisfying their hunger upon my father’s legacy.]] .. |
1325 | - paragraphdivider() .. |
1326 | - _[[They are a constant reminder of why we have to hide here… and why we must return in the end!]] |
1327 | - ), |
1328 | + _[[During another sleepless night, I went up to the hill and gazed towards the north. The fires are still burning, satisfying their hunger upon my father’s legacy.]] |
1329 | + .. paragraphdivider() .. |
1330 | + _[[They are a constant reminder of why we have to hide here… and why we must return in the end!]]), |
1331 | field = al_thunran, |
1332 | - position = "topleft" |
1333 | + position = "topleft", |
1334 | + scroll_back = true |
1335 | } |
1336 | |
1337 | |
1338 | story_msg2= { |
1339 | title = _"At the Tomb", |
1340 | body = thron(_"Thron says…", |
1341 | - _[[Once again, I went up to my father’s tomb, in a sacred grove at the foot of the great spire of Kal’mavrath. I just stood there and felt neither the hours pass nor the cold rain pouring down from the darkened sky…]] .. |
1342 | - paragraphdivider() .. |
1343 | - _[[Somehow, it felt like a farewell. For the first time, I wondered what the future might hold for me…]] |
1344 | - ), |
1345 | + _[[Once again, I went up to my father’s tomb, in a sacred grove at the foot of the great spire of Kal’mavrath. I just stood there and felt neither the hours pass nor the cold rain pouring down from the darkened sky…]] |
1346 | + .. paragraphdivider() .. |
1347 | + _[[Somehow, it felt like a farewell. For the first time, I wondered what the future might hold for me…]]), |
1348 | field = grave, |
1349 | - position = "topleft" |
1350 | + position = "topleft", |
1351 | + scroll_back = true |
1352 | } |
1353 | |
1354 | |
1355 | story_msg3 = { |
1356 | title = _"The Other Day", |
1357 | body = thron(_"Thron says thoughtfully…", |
1358 | - _[[Some time ago, Boldreth came to me. His advice was to move to a place closer to home – to strike at the first sign of my brothers’ forces wavering.]] .. |
1359 | - paragraphdivider() .. |
1360 | - _[[But when I look over the forests I can still see black smoke rising to the sky. I know – it is too early yet, and what he hopes for will not happen any time soon. He might still be right, but I fear the bloodshed that returning too fast would cause on both sides…]] |
1361 | - ) |
1362 | + _[[Some time ago, Boldreth came to me. His advice was to move to a place closer to home – to strike at the first sign of my brothers’ forces wavering.]] |
1363 | + .. paragraphdivider() .. |
1364 | + _[[But when I look over the forests I can still see black smoke rising to the sky. I know – it is too early yet, and what he hopes for will not happen any time soon. He might still be right, but I fear the bloodshed that returning too fast would cause on both sides…]]) |
1365 | } |
1366 | |
1367 | |
1368 | story_msg4 = { |
1369 | title = _"The Oath", |
1370 | body = thron(_"Thron looks furious…", |
1371 | - _[[Today, my warriors picked up an old man, wandering sick and wounded through the dark forest. We listened in horror as he told us of the atrocities taking place in Al’thunran.]] .. |
1372 | - paragraphdivider() .. |
1373 | - _[[I hereby renew my oath – I will stop this madness at any cost!]] |
1374 | - ) |
1375 | + _[[Today, my warriors picked up an old man, wandering sick and wounded through the dark forest. We listened in horror as he told us of the atrocities taking place in Al’thunran.]] |
1376 | + .. paragraphdivider() .. |
1377 | + _[[I hereby renew my oath – I will stop this madness at any cost!]]) |
1378 | } |
1379 | |
1380 | |
1381 | order_msg_1 = { |
1382 | title = _"Your Loyal Companion", |
1383 | body = boldreth(_"Brave Boldreth steps to your side…", |
1384 | -_([[So you want to prepare us for a longer stay in these forests, Thron? Well, I see the wisdom in doing so, yet my heart is yearning for a glorious return to Al’thunran. Too long have we waited while our brethren have fought on the battlefield, and our axes and swords have turned rusty over time.]]) |
1385 | - ) |
1386 | + _([[So you want to prepare us for a longer stay in these forests, Thron? Well, I see the wisdom in doing so, yet my heart is yearning for a glorious return to Al’thunran. Too long have we waited while our brethren have fought on the battlefield, and our axes and swords have turned rusty over time.]])) |
1387 | } |
1388 | |
1389 | |
1390 | order_msg_2 = { |
1391 | title = _"The Advisor", |
1392 | body = khantrukh(_"Khantrukh joins in…", |
1393 | -_([[I beg your forgiveness, chieftain, but I have a grave concern to discuss with you. The rocks close to our camp are shrinking fast under our workers’ tools, and it is a matter of little time only before they are all gone.]]) |
1394 | - ) |
1395 | + _([[I beg your forgiveness, chieftain, but I have a grave concern to discuss with you. The rocks close to our camp are shrinking fast under our workers’ tools, and it is a matter of little time only before they are all gone.]])) |
1396 | } |
1397 | |
1398 | order_msg_3 = { |
1399 | title = _"Your Loyal Companion", |
1400 | position = "left", |
1401 | body = boldreth(_"Boldreth jumps up…", |
1402 | - _([[While it is certainly no worthy task for a warrior, at least it is something to do! Thron, what would you say about my taking a few of our most restless warriors and venturing somewhat closer to the great mountain of Kal’mavrath – maybe we will find some more big rocks to please the old man?]]) |
1403 | - ) .. |
1404 | - new_objectives(obj_claim_northeastern_rocks) |
1405 | + _([[While it is certainly no worthy task for a warrior, at least it is something to do! Thron, what would you say about my taking a few of our most restless warriors and venturing somewhat closer to the great mountain of Kal’mavrath – maybe we will find some more big rocks to please the old man?]])) |
1406 | + .. new_objectives(obj_claim_northeastern_rocks) |
1407 | } |
1408 | |
1409 | order_msg_4 = { |
1410 | @@ -341,17 +320,17 @@ |
1411 | order_msg_6_geologist = { |
1412 | title = _"Your Loyal Companion", |
1413 | body = boldreth(_"Boldreth exclaims…", |
1414 | - _([[Just look at that! In the east is the great mountain of Kal’mavrath! I wonder what treasures nature might have hidden beneath its majestic flanks!]]) .. |
1415 | - paragraphdivider() .. |
1416 | - _([[Let’s expand to the east. There’s a chance for the elderly to become useful once in a while! Let us send out some of those who understand the stone’s tongue to unravel the mountain’s secrets!]])) .. |
1417 | - new_objectives(obj_build_mines) |
1418 | + _([[Just look at that! In the east is the great mountain of Kal’mavrath! I wonder what treasures nature might have hidden beneath its majestic flanks!]]) |
1419 | + .. paragraphdivider() .. |
1420 | + _([[Let’s expand to the east. There’s a chance for the elderly to become useful once in a while! Let us send out some of those who understand the stone’s tongue to unravel the mountain’s secrets!]])) |
1421 | + .. new_objectives(obj_build_mines) |
1422 | } |
1423 | |
1424 | order_msg_7_mines_up = { |
1425 | title = _"Your Loyal Companion", |
1426 | body = boldreth(_"Boldreth laughs…", |
1427 | - _([[By Chat’Karuth’s beard, this is amazing! Just imagine what we can use this coal and iron ore for!]]) .. |
1428 | - paragraphdivider() .. |
1429 | + _([[By Chat’Karuth’s beard, this is amazing! Just imagine what we can use this coal and iron ore for!]]) |
1430 | + .. paragraphdivider() .. |
1431 | _([[It might even be enough to…]])) |
1432 | } |
1433 | |
1434 | @@ -365,26 +344,26 @@ |
1435 | order_msg_9_hunter = { |
1436 | title = _"Your Loyal Companion", |
1437 | body = boldreth(_"Boldreth nods…", |
1438 | - _([[I have to hand it to you: you are right here, old man.]]) .. |
1439 | - paragraphdivider() .. |
1440 | - _([[There seem to be quite a lot of animals in the forests here – we might just hunt down more of them. And, of course, the people would cheer a new tavern – hey, we might call it ‘Thron’s Pride’ or so if you want!]])) .. |
1441 | - new_objectives(obj_basic_food) |
1442 | + _([[I have to hand it to you: you are right here, old man.]]) |
1443 | + .. paragraphdivider() .. |
1444 | + _([[There seem to be quite a lot of animals in the forests here – we might just hunt down more of them. And, of course, the people would cheer a new tavern – hey, we might call it ‘Thron’s Pride’ or so if you want!]])) |
1445 | + .. new_objectives(obj_basic_food) |
1446 | } |
1447 | |
1448 | order_msg_10_bread = { |
1449 | title = _"The Advisor", |
1450 | body = khantrukh(_"The elder jumps into the air…", |
1451 | - _([[Wisdom commands to seek variety.]]) .. |
1452 | - paragraphdivider() .. |
1453 | - _([[North of the great mountain is a large plain – why don’t we use the space Mother Nature gave us and build a farm? I sure would enjoy a freshly baked pitta bread for a change…]])) .. |
1454 | - new_objectives(obj_begin_farming) |
1455 | + _([[Wisdom commands to seek variety.]]) |
1456 | + .. paragraphdivider() .. |
1457 | + _([[North of the great mountain is a large plain – why don’t we use the space Mother Nature gave us and build a farm? I sure would enjoy a freshly baked pitta bread for a change…]])) |
1458 | + .. new_objectives(obj_begin_farming) |
1459 | } |
1460 | |
1461 | order_msg_11_basic_food_began = { |
1462 | title = _"Your Loyal Companion", |
1463 | body = boldreth(_"Boldreth cheers up…", |
1464 | - _([[Our hunters are out in the forests, Thron.]]) .. |
1465 | - paragraphdivider() .. |
1466 | + _([[Our hunters are out in the forests, Thron.]]) |
1467 | + .. paragraphdivider() .. |
1468 | _([[I promise you, before the sun sets today you will have a magnificent meal fit for the chieftain of all clans!]])) |
1469 | } |
1470 | |
1471 | @@ -397,53 +376,52 @@ |
1472 | order_msg_13_tavern = { |
1473 | title = _"A Beautiful Morning", |
1474 | body = thron(_"Thron recognizes…", |
1475 | - _([[A tavern opened for our people yesterday. While I am hardly in the mood for celebration, I noticed how much this tiny bit of home means to my people. Their songs filled the air until deep in the night, and they were in higher spirits still the day after.]]) .. |
1476 | - paragraphdivider() .. |
1477 | + _([[A tavern opened for our people yesterday. While I am hardly in the mood for celebration, I noticed how much this tiny bit of home means to my people. Their songs filled the air until deep in the night, and they were in higher spirits still the day after.]]) |
1478 | + .. paragraphdivider() .. |
1479 | _([[Maybe we actually are slowly creating a place here which we can… call home.]])) |
1480 | } |
1481 | |
1482 | order_msg_14_refine_ore = { |
1483 | title = _"Your Loyal Companion", |
1484 | body = boldreth(_"Boldreth remarks…", |
1485 | - _([[So now that we have both the mines and the food to sustain them, we should bring what our brave miners gain for us into a more useful state. The iron ore has to be melted into iron so that it is ready to be forged into whatever we want. And we need the coal to keep the smelter’s ovens burning.]])) .. |
1486 | - new_objectives(obj_refine_ores) |
1487 | + _([[So now that we have both the mines and the food to sustain them, we should bring what our brave miners gain for us into a more useful state. The iron ore has to be melted into iron so that it is ready to be forged into whatever we want. And we need the coal to keep the smelter’s ovens burning.]])) |
1488 | + .. new_objectives(obj_refine_ores) |
1489 | } |
1490 | |
1491 | order_msg_15_mines_exhausted = { |
1492 | title = _"The Advisor", |
1493 | body = khantrukh(_"Khantrukh speaks…", |
1494 | - _([[Our miners are digging up less and less by the day! We have to go deeper, closer to the mountain’s core, if we want more of its treasures!]]) .. |
1495 | - paragraphdivider() .. |
1496 | - _([[Of course, it is dark and cold in such depths and only a few venture voluntarily into these places. We should reward this bravery with greater rations for them. And a pint of beer or two will keep their spirits high.]])) .. |
1497 | - new_objectives(obj_enhance_buildings) |
1498 | + _([[Our miners are digging up less and less by the day! We have to go deeper, closer to the mountain’s core, if we want more of its treasures!]]) |
1499 | + .. paragraphdivider() .. |
1500 | + _([[Of course, it is dark and cold in such depths and only a few venture voluntarily into these places. We should reward this bravery with greater rations for them. And a pint of beer or two will keep their spirits high.]])) |
1501 | + .. new_objectives(obj_enhance_buildings) |
1502 | } |
1503 | |
1504 | order_msg_16_blackwood = { |
1505 | title = _"Your Loyal Companion", |
1506 | body = boldreth(_"Boldreth seems concerned…", |
1507 | - _([[As I just discovered, we are running short on blackwood! We cannot put our warriors into some crumbling huts, and even less so in times as dangerous as ours!]]) .. |
1508 | - paragraphdivider() .. |
1509 | - _([[We need a wood hardener, and we need one now!]])) .. |
1510 | - new_objectives(obj_better_material_1) |
1511 | + _([[As I just discovered, we are running short on blackwood! We cannot put our warriors into some crumbling huts, and even less so in times as dangerous as ours!]]) |
1512 | + .. paragraphdivider() .. |
1513 | + _([[We need a wood hardener, and we need one now!]])) |
1514 | + .. new_objectives(obj_better_material_1) |
1515 | } |
1516 | |
1517 | order_msg_17_grout = { |
1518 | title = _"Your Loyal Companion", |
1519 | body = boldreth(_"Boldreth smiles…", |
1520 | - _([[Well, old friend, this should ensure that our fortifications do not break down with our foes’ first battle cry! Now we can expand safely!]]) .. |
1521 | - paragraphdivider() .. |
1522 | - _([[Still, it would not hurt to accumulate some grout for our further campaign; thus we could, in times of need, build a fortress such as the world has never seen before!]])) .. |
1523 | - new_objectives(obj_better_material_2) |
1524 | + _([[Well, old friend, this should ensure that our fortifications do not break down with our foes’ first battle cry! Now we can expand safely!]]) |
1525 | + .. paragraphdivider() .. |
1526 | + _([[Still, it would not hurt to accumulate some grout for our further campaign; thus we could, in times of need, build a fortress such as the world has never seen before!]])) |
1527 | + .. new_objectives(obj_better_material_2) |
1528 | } |
1529 | |
1530 | - |
1531 | order_msg_18_reed = { |
1532 | title = _"The Advisor", |
1533 | body = khantrukh(_"Khantrukh steps in…", |
1534 | - _([[Chieftain, this is a disgrace! It is well that we can produce grout for mighty fortifications and great buildings now – only this does not prevent our roofs from becoming leaky! Maybe the young ones like spending their nights in the rain, but I just can’t find any sleep with these raindrops dripping on my face!]]) .. |
1535 | - paragraphdivider() .. |
1536 | - _([[Now this is a problem we should do something about!]])) .. |
1537 | - new_objectives(obj_better_material_3) |
1538 | + _([[Chieftain, this is a disgrace! It is well that we can produce grout for mighty fortifications and great buildings now – only this does not prevent our roofs from becoming leaky! Maybe the young ones like spending their nights in the rain, but I just can’t find any sleep with these raindrops dripping on my face!]]) |
1539 | + .. paragraphdivider() .. |
1540 | + _([[Now this is a problem we should do something about!]])) |
1541 | + .. new_objectives(obj_better_material_3) |
1542 | } |
1543 | |
1544 | order_msg_19_all_material = { |
1545 | @@ -452,53 +430,52 @@ |
1546 | _([[Wonderful! Our roofs are not dripping anymore, and we have all the material we need for, well, whichever monumental building we see fit!]])) |
1547 | } |
1548 | |
1549 | - |
1550 | msg_cattlefarm_00 = { |
1551 | title = _"We Need Oxen!", |
1552 | body = khantrukh(_"Khantrukh speaks…", |
1553 | - _([[As our realm is getting bigger and bigger, the traffic on the roads is overwhelming. Our poor carriers are no longer able to transport the goods as fast as we need them to. I suggest we give them some support by breeding oxen.]]) .. |
1554 | - paragraphdivider() .. |
1555 | - _([[They are amazing animals: The ox is as swift as a human being while being much stronger and very frugal: all we need is wheat and water to breed them and they will do their work on the roads loyally and reliably.]])) .. |
1556 | - new_objectives(obj_build_cattlefarm) |
1557 | + _([[As our realm is getting bigger and bigger, the traffic on the roads is overwhelming. Our poor carriers are no longer able to transport the goods as fast as we need them to. I suggest we give them some support by breeding oxen.]]) |
1558 | + .. paragraphdivider() .. |
1559 | + _([[They are amazing animals: The ox is as swift as a human being while being much stronger and very frugal: all we need is wheat and water to breed them and they will do their work on the roads loyally and reliably.]])) |
1560 | + .. new_objectives(obj_build_cattlefarm) |
1561 | } |
1562 | |
1563 | msg_mission_complete = { |
1564 | title = _"Mission Complete", |
1565 | body = thron(_"Thron speaks…", |
1566 | - _([[The other day Boldreth asked me to accompany him to the new inn. It would cheer me up, he said.]]) .. |
1567 | - paragraphdivider() .. |
1568 | - _([[When I looked around, I saw faithful faces, trusting that I could guide them through these dark days. Yet before I could speak any words of gratitude or encouragement, one of my warriors ran into the inn. He had been far out in the forest for the past days and I could see how weary he was.]]) .. |
1569 | - paragraphdivider() .. |
1570 | - _([[The news he brought changed everything…]])) .. |
1571 | - objective_text(_"Victory", |
1572 | - _[[You have completed this mission. You may continue playing if you wish, otherwise move on to the next mission.]]) |
1573 | + _([[The other day Boldreth asked me to accompany him to the new inn. It would cheer me up, he said.]]) |
1574 | + .. paragraphdivider() .. |
1575 | + _([[When I looked around, I saw faithful faces, trusting that I could guide them through these dark days. Yet before I could speak any words of gratitude or encouragement, one of my warriors ran into the inn. He had been far out in the forest for the past days and I could see how weary he was.]]) |
1576 | + .. paragraphdivider() .. |
1577 | + _([[The news he brought changed everything…]])) |
1578 | + .. objective_text(_"Victory", |
1579 | + _[[You have completed this mission. You may continue playing if you wish, otherwise move on to the next mission.]]) |
1580 | } |
1581 | |
1582 | msg_story_1 = { |
1583 | title = _"One Full Moon Night", |
1584 | body = thron(_"Thron speaks…", |
1585 | - _([[One night, when the moon shone brightly, I climbed to the peak of Kal’mavrath.]]) .. |
1586 | - paragraphdivider() .. |
1587 | + _([[One night, when the moon shone brightly, I climbed to the peak of Kal’mavrath.]]) |
1588 | + .. paragraphdivider() .. |
1589 | _([[When I gazed at the horizon, I still saw crimson lights flicker in the distance. It is incredible with how much passion my brethren fight this war. I fear the moment I will see Al’thunran again – will there be anything but ashes and wasted ruins left of our once beautiful capital when we get there?]])) |
1590 | } |
1591 | |
1592 | msg_story_2 = { |
1593 | title = _"Another Cold Day", |
1594 | body = thron(_"Thron looks worried…", |
1595 | - _([[The winter is upon us. Many of us are suffering from the cold, yet we must endure. The day we may return cannot be far anymore – it must not be far anymore.]]) .. |
1596 | - paragraphdivider() .. |
1597 | - _([[I prayed that it might get warmer again, as I prayed that the war would finally come to an end.]]) .. |
1598 | - paragraphdivider() .. |
1599 | + _([[The winter is upon us. Many of us are suffering from the cold, yet we must endure. The day we may return cannot be far anymore – it must not be far anymore.]]) |
1600 | + .. paragraphdivider() .. |
1601 | + _([[I prayed that it might get warmer again, as I prayed that the war would finally come to an end.]]) |
1602 | + .. paragraphdivider() .. |
1603 | _([[So far, it seems that neither prayer was fulfilled.]])) |
1604 | } |
1605 | |
1606 | msg_village = { |
1607 | title = _"A friendly village has joined us!", |
1608 | body = thron(_"Thron speaks…", |
1609 | - _([[We have found a village with friendly and productive people, impressed by our wealth, technology and strength.]]) .. |
1610 | - paragraphdivider() .. |
1611 | - _([[They have lived simply, yet blithely, from hunting and farming. They have not been involved in any conflict so far, and are not ready for fighting.]]) .. |
1612 | - paragraphdivider() .. |
1613 | + _([[We have found a village with friendly and productive people, impressed by our wealth, technology and strength.]]) |
1614 | + .. paragraphdivider() .. |
1615 | + _([[They have lived simply, yet blithely, from hunting and farming. They have not been involved in any conflict so far, and are not ready for fighting.]]) |
1616 | + .. paragraphdivider() .. |
1617 | _([[But they fear that the war around Al’thunran will set an end to this life. Therefore, they have decided to join us, hoping that we can help each other.]]) |
1618 | ) |
1619 | } |
1620 | |
1621 | === modified file 'campaigns/bar02.wmf/scripting/init.lua' |
1622 | --- campaigns/bar02.wmf/scripting/init.lua 2014-10-10 10:02:14 +0000 |
1623 | +++ campaigns/bar02.wmf/scripting/init.lua 2014-10-31 11:37:25 +0000 |
1624 | @@ -18,14 +18,4 @@ |
1625 | |
1626 | include "map:scripting/starting_conditions.lua" |
1627 | include "map:scripting/texts.lua" |
1628 | - |
1629 | --- Some messages that spare some typing |
1630 | -function send_msg(msg) |
1631 | - msg.h = 400 |
1632 | - p1:message_box(msg.title, msg.body, msg) |
1633 | -end |
1634 | -function add_obj(t) |
1635 | - return p1:add_objective(t.name, t.title, t.body) |
1636 | -end |
1637 | - |
1638 | include "map:scripting/mission_thread.lua" |
1639 | |
1640 | === modified file 'campaigns/bar02.wmf/scripting/mission_thread.lua' |
1641 | --- campaigns/bar02.wmf/scripting/mission_thread.lua 2014-08-26 17:25:00 +0000 |
1642 | +++ campaigns/bar02.wmf/scripting/mission_thread.lua 2014-10-31 11:37:25 +0000 |
1643 | @@ -2,6 +2,8 @@ |
1644 | -- Various mission threads |
1645 | -- ======================================================================= |
1646 | |
1647 | +include "scripting/messages.lua" |
1648 | + |
1649 | game = wl.Game() |
1650 | -- Mountain and frontier fields |
1651 | mountain = game.map:get_field(71,14) |
1652 | @@ -22,10 +24,10 @@ |
1653 | function remember_cattlefarm() |
1654 | sleep(100) |
1655 | |
1656 | - send_msg(cattlefarm_01) |
1657 | + campaign_message_box(cattlefarm_01) |
1658 | |
1659 | p1:allow_buildings{"cattlefarm"} |
1660 | - local o = add_obj(obj_build_cattlefarm) |
1661 | + local o = add_campaign_objective(obj_build_cattlefarm) |
1662 | while not check_for_buildings(p1, {cattlefarm = 1}) do |
1663 | sleep(1223) end |
1664 | o.done = true |
1665 | @@ -34,11 +36,11 @@ |
1666 | |
1667 | function initial_message_and_small_food_economy() |
1668 | wake_me(2000) |
1669 | - send_msg(story_msg_1) |
1670 | + campaign_message_box(story_msg_1) |
1671 | |
1672 | wake_me(120000) |
1673 | - send_msg(briefing_msg_1) |
1674 | - send_msg(order_msg_1_small_food_economy) |
1675 | + campaign_message_box(briefing_msg_1) |
1676 | + campaign_message_box(order_msg_1_small_food_economy) |
1677 | |
1678 | p1:allow_buildings{"fishers_hut", |
1679 | "hunters_hut", |
1680 | @@ -50,7 +52,7 @@ |
1681 | "sentry", |
1682 | } |
1683 | |
1684 | - local o = add_obj(obj_build_small_food_economy) |
1685 | + local o = add_campaign_objective(obj_build_small_food_economy) |
1686 | while not check_for_buildings(p1, { |
1687 | fishers_hut = 1, |
1688 | hunters_hut = 1, |
1689 | @@ -59,7 +61,7 @@ |
1690 | bakery = 1, |
1691 | }) do sleep(3413) end |
1692 | o.done = true |
1693 | - send_msg(story_note_1) |
1694 | + campaign_message_box(story_note_1) |
1695 | |
1696 | sleep(600000) -- 10 minutes |
1697 | remember_cattlefarm() |
1698 | @@ -84,8 +86,8 @@ |
1699 | |
1700 | local pts = scroll_smoothly_to(game.map:get_field(67,19)) |
1701 | |
1702 | - send_msg(order_msg_2_build_a_donjon) |
1703 | - local o = add_obj(obj_build_a_donjon) |
1704 | + campaign_message_box(order_msg_2_build_a_donjon) |
1705 | + local o = add_campaign_objective(obj_build_a_donjon) |
1706 | p1:forbid_buildings{"sentry"} |
1707 | p1:allow_buildings{"donjon"} |
1708 | |
1709 | @@ -97,9 +99,9 @@ |
1710 | |
1711 | while not check_for_buildings(p1, {donjon=1}) do sleep(2341) end |
1712 | o.done = true |
1713 | - send_msg(order_msg_3_explore_further) |
1714 | + campaign_message_box(order_msg_3_explore_further) |
1715 | -- "explore further" is active untill "Boldreth shout out", so the player always has one open objectve. |
1716 | - exploration_objective = add_obj(obj_explore_further) |
1717 | + exploration_objective = add_campaign_objective(obj_explore_further) |
1718 | |
1719 | p1:allow_buildings{"sentry", "barrier"} |
1720 | |
1721 | @@ -127,8 +129,8 @@ |
1722 | |
1723 | local pts = scroll_smoothly_to(game.map:get_field(82,20)) |
1724 | |
1725 | - send_msg(order_msg_4_build_mining_economy) |
1726 | - local o = add_obj(obj_build_mining_economy) |
1727 | + campaign_message_box(order_msg_4_build_mining_economy) |
1728 | + local o = add_campaign_objective(obj_build_mining_economy) |
1729 | |
1730 | p1:allow_buildings{ |
1731 | "coalmine", |
1732 | @@ -157,11 +159,11 @@ |
1733 | sleep(4139) |
1734 | end |
1735 | o.done = true |
1736 | - send_msg(story_note_2) |
1737 | + campaign_message_box(story_note_2) |
1738 | |
1739 | sleep(100000) |
1740 | |
1741 | - send_msg(order_msg_6_build_enhanced_economy_and_training) |
1742 | + campaign_message_box(order_msg_6_build_enhanced_economy_and_training) |
1743 | p1:allow_buildings{ |
1744 | "axfactory", |
1745 | "warmill", |
1746 | @@ -179,10 +181,10 @@ |
1747 | "warehouse", |
1748 | "brewery", |
1749 | } |
1750 | - run(check_warehouse_obj, add_obj(obj_build_a_warehouse)) |
1751 | - run(check_trainingssite_obj, add_obj(obj_build_trainingssites)) |
1752 | - run(check_weapon_productions_obj, add_obj(obj_build_weapon_productions)) |
1753 | - run(check_helmsmithy_obj, add_obj(obj_build_a_helmsmithy)) |
1754 | + run(check_warehouse_obj, add_campaign_objective(obj_build_a_warehouse)) |
1755 | + run(check_trainingssite_obj, add_campaign_objective(obj_build_trainingssites)) |
1756 | + run(check_weapon_productions_obj, add_campaign_objective(obj_build_weapon_productions)) |
1757 | + run(check_helmsmithy_obj, add_campaign_objective(obj_build_a_helmsmithy)) |
1758 | end |
1759 | |
1760 | function check_trainingssite_obj(o) |
1761 | @@ -215,14 +217,14 @@ |
1762 | sleep(7349) |
1763 | end |
1764 | |
1765 | - send_msg(order_msg_5_build_a_fortress) |
1766 | - local o = add_obj(obj_build_a_fortress) |
1767 | + campaign_message_box(order_msg_5_build_a_fortress) |
1768 | + local o = add_campaign_objective(obj_build_a_fortress) |
1769 | p1:allow_buildings{"fortress"} |
1770 | |
1771 | while #p1:get_buildings("fortress") == 0 do sleep(6523) end |
1772 | |
1773 | o.done = true |
1774 | - send_msg(story_note_3) |
1775 | + campaign_message_box(story_note_3) |
1776 | end |
1777 | |
1778 | function expansion() |
1779 | @@ -235,13 +237,13 @@ |
1780 | ) |
1781 | do sleep(8374) end |
1782 | |
1783 | - send_msg(story_msg_2) |
1784 | - send_msg(story_msg_3) |
1785 | - send_msg(story_msg_4) |
1786 | + campaign_message_box(story_msg_2) |
1787 | + campaign_message_box(story_msg_3) |
1788 | + campaign_message_box(story_msg_4) |
1789 | |
1790 | sleep(20000) |
1791 | - send_msg(story_msg_5) |
1792 | - send_msg(story_msg_6) |
1793 | + campaign_message_box(story_msg_5) |
1794 | + campaign_message_box(story_msg_6) |
1795 | end |
1796 | |
1797 | -- checks if all military buildings are drestroyed (the build-in function "defeated" only checks if all warehouses are destroyed) |
1798 | @@ -270,8 +272,8 @@ |
1799 | -- "explore further" is done |
1800 | exploration_objective.done = true |
1801 | |
1802 | - send_msg(order_msg_7_destroy_kalitaths_army) |
1803 | - local o = add_obj(obj_destroy_kalitaths_army) |
1804 | + campaign_message_box(order_msg_7_destroy_kalitaths_army) |
1805 | + local o = add_campaign_objective(obj_destroy_kalitaths_army) |
1806 | |
1807 | while not check_player_completely_defeated(p2) do |
1808 | sleep(7837) |
1809 | @@ -308,9 +310,9 @@ |
1810 | |
1811 | local pts = scroll_smoothly_to(map:get_field(120,92)) |
1812 | |
1813 | - send_msg(order_msg_7_renegade_fortification) |
1814 | - send_msg(order_msg_7_free_althunran) |
1815 | - local o = add_obj(obj_military_assault_on_althunran) |
1816 | + campaign_message_box(order_msg_7_renegade_fortification) |
1817 | + campaign_message_box(order_msg_7_free_althunran) |
1818 | + local o = add_campaign_objective(obj_military_assault_on_althunran) |
1819 | |
1820 | timed_scroll(array_reverse(pts)) |
1821 | sleep(503) |
1822 | @@ -335,7 +337,7 @@ |
1823 | |
1824 | local pts = scroll_smoothly_to(map:get_field(4,5)) |
1825 | |
1826 | - send_msg(story_msg_7) |
1827 | + campaign_message_box(story_msg_7) |
1828 | |
1829 | p1:reveal_campaign("campsect1") |
1830 | end |
1831 | |
1832 | === modified file 'campaigns/bar02.wmf/scripting/texts.lua' |
1833 | --- campaigns/bar02.wmf/scripting/texts.lua 2014-10-18 19:02:40 +0000 |
1834 | +++ campaigns/bar02.wmf/scripting/texts.lua 2014-10-31 11:37:25 +0000 |
1835 | @@ -18,107 +18,98 @@ |
1836 | |
1837 | obj_build_small_food_economy = { |
1838 | name = "build_small_food_economy", |
1839 | - title=_"Build up a small food economy", |
1840 | + title = _"Build up a small food economy", |
1841 | number = 5, |
1842 | body = objective_text(_"Build up a small food economy", |
1843 | - _"Build up a basic food economy to provide your people with food." .. |
1844 | - paragraphdivider() .. |
1845 | + _"Build up a basic food economy to provide your people with food." |
1846 | + .. paragraphdivider() .. |
1847 | listitem_bullet(_"Build a fisher’s hut") .. |
1848 | listitem_bullet(_"Build a hunter’s hut") .. |
1849 | listitem_bullet(_"Build a well") .. |
1850 | listitem_bullet(_"Build a farm") .. |
1851 | - listitem_bullet(_"Build a bakery") |
1852 | - ), |
1853 | + listitem_bullet(_"Build a bakery")) |
1854 | } |
1855 | |
1856 | obj_build_cattlefarm = { |
1857 | name = "obj_build_cattlefarm", |
1858 | - title = _ "Build a cattle farm", |
1859 | + title = _"Build a cattle farm", |
1860 | number = 1, |
1861 | body = objective_text(_"Remember to build a cattle farm", |
1862 | - _"As your roads grow longer and your economy bigger, you should make good use of your oxen to help transport wares more quickly." .. |
1863 | - paragraphdivider () .. |
1864 | + _"As your roads grow longer and your economy bigger, you should make good use of your oxen to help transport wares more quickly." |
1865 | + .. paragraphdivider () .. |
1866 | listitem_bullet(_"Remember to build a cattle farm") |
1867 | ), |
1868 | } |
1869 | |
1870 | obj_build_a_donjon = { |
1871 | name = "build_a_donjon", |
1872 | - title=_"Build a donjon", |
1873 | + title = _"Build a donjon", |
1874 | number = 1, |
1875 | body = objective_text(_"Build a donjon", |
1876 | - listitem_bullet(_"Build a donjon at the north-east border of your territory to get greater visual range and to protect your people from sudden attacks by enemies.") |
1877 | - ), |
1878 | + listitem_bullet(_"Build a donjon at the north-east border of your territory to get greater visual range and to protect your people from sudden attacks by enemies.")) |
1879 | } |
1880 | |
1881 | obj_explore_further = { |
1882 | name = "explore_further", |
1883 | - title=_"Explore further", |
1884 | + title = _"Explore further", |
1885 | number = 1, |
1886 | body = objective_text(_"Explore further", |
1887 | - listitem_bullet(_"Build more military buildings to explore the area around the headquarters and to ensure the safety of your people.") |
1888 | - ), |
1889 | + listitem_bullet(_"Build more military buildings to explore the area around the headquarters and to ensure the safety of your people.")) |
1890 | } |
1891 | |
1892 | obj_build_mining_economy = { |
1893 | name = "build_mining_economy", |
1894 | - title=_"Build a mining infrastructure", |
1895 | + title = _"Build a mining infrastructure", |
1896 | number = 6, |
1897 | body = objective_text(_"Build a mining infrastructure", |
1898 | - listitem_bullet(_"Expand your territory to the mountains, send geologists to search for ore and coal and build a mining economy with mines, taverns, smelting works and metal workshop.") |
1899 | - ), |
1900 | + listitem_bullet(_"Expand your territory to the mountains, send geologists to search for ore and coal and build a mining economy with mines, taverns, smelting works and metal workshop.")) |
1901 | } |
1902 | |
1903 | obj_build_a_fortress = { |
1904 | name = "build_a_fortress", |
1905 | - title=_"Build a fortress", |
1906 | + title = _"Build a fortress", |
1907 | number = 1, |
1908 | body = objective_text(_"Build a fortress", |
1909 | - listitem_bullet(_"Build a fortress to the east of the mountains.") |
1910 | - ), |
1911 | + listitem_bullet(_"Build a fortress to the east of the mountains.")) |
1912 | } |
1913 | |
1914 | obj_build_training_infrastructure = { |
1915 | name = "build_training_infrastructure", |
1916 | - title=_"Build a training infrastructure", |
1917 | + title = _"Build a training infrastructure", |
1918 | number = 4, |
1919 | body = objective_text(_"Build a training infrastructure", |
1920 | listitem_bullet(_"Build a battle arena and a training camp to the west of the mountains.") .. |
1921 | listitem_bullet(_"Enhance your metal workshop to an axfactory in order to produce weapons, and build up a second metal workshop to ensure the production of tools. When the blacksmith reaches his next level (master blacksmith), you can even enhance the axfactory to a war mill, which will produce additional weapons.") .. |
1922 | - listitem_bullet(_"Build a helm smithy to the west of the mountains to provide your soldiers with better armor.") |
1923 | - ), |
1924 | + listitem_bullet(_"Build a helm smithy to the west of the mountains to provide your soldiers with better armor.")) |
1925 | } |
1926 | |
1927 | |
1928 | obj_build_a_warehouse = { |
1929 | name = "build_a_warehouse", |
1930 | - title=_"Build a warehouse", |
1931 | + title = _"Build a warehouse", |
1932 | number = 1, |
1933 | body = objective_text(_"Build a warehouse", |
1934 | listitem_bullet(_"Build a warehouse to the west of the mountains.") .. |
1935 | - listitem_arrow(_"Warehouses are similar to your headquarters, with the only difference that they aren’t defended by soldiers. It is often wise to build a warehouse when your territory is growing and the paths to your headquarters get longer and longer.") |
1936 | - ), |
1937 | + listitem_arrow(_"Warehouses are similar to your headquarters, with the only difference that they aren’t defended by soldiers. It is often wise to build a warehouse when your territory is growing and the paths to your headquarters get longer and longer.")) |
1938 | } |
1939 | |
1940 | obj_build_trainingssites = { |
1941 | name = "build_trainingssites", |
1942 | - title=_"Build training sites", |
1943 | + title = _"Build training sites", |
1944 | number = 2, |
1945 | body = objective_text(_"Build training sites", |
1946 | listitem_bullet(_"Build a battle arena and a training camp to the west of the mountains.") .. |
1947 | - listitem_arrow(_"Training sites like a training camp or a battle arena are used for training soldiers in their different attributes. These attributes are important in fights and the better a soldier is, the higher is the chance to win a fight." .. |
1948 | - "<br>" .. |
1949 | - _"The attributes are: health, attack, defense and evade.") |
1950 | - ), |
1951 | + listitem_arrow(_"Training sites like a training camp or a battle arena are used for training soldiers in their different attributes. These attributes are important in fights and the better a soldier is, the higher is the chance to win a fight." |
1952 | + .. "<br>" .. |
1953 | + _"The attributes are: health, attack, defense and evade.")) |
1954 | } |
1955 | |
1956 | obj_build_weapon_productions = { |
1957 | name = "build_weapon_productions", |
1958 | - title=_"Build weapons production", |
1959 | + title = _"Build weapons production", |
1960 | number = 3, |
1961 | body = objective_text(_"Build weapons production", |
1962 | - listitem_bullet(_"Enhance your metal workshop to an axfactory in order to produce weapons, and build up a second metal workshop to ensure the production of tools. When the blacksmith reaches his next level (master blacksmith), you can even enhance the axfactory to a war mill, which will produce additional weapons.") |
1963 | - ), |
1964 | + listitem_bullet(_"Enhance your metal workshop to an axfactory in order to produce weapons, and build up a second metal workshop to ensure the production of tools. When the blacksmith reaches his next level (master blacksmith), you can even enhance the axfactory to a war mill, which will produce additional weapons.")) |
1965 | } |
1966 | |
1967 | obj_build_a_helmsmithy = { |
1968 | @@ -126,27 +117,24 @@ |
1969 | title=_"Build a helm smithy", |
1970 | number = 1, |
1971 | body = objective_text(_"Build a helm smithy", |
1972 | - listitem_bullet(_"Build a helm smithy to the west of the mountains to provide your soldiers with better armor.") |
1973 | - ), |
1974 | + listitem_bullet(_"Build a helm smithy to the west of the mountains to provide your soldiers with better armor.")) |
1975 | } |
1976 | |
1977 | obj_destroy_kalitaths_army = { |
1978 | name = "destroy_kalitaths_army", |
1979 | - title=_"Destroy Kalitath’s army", |
1980 | + title = _"Destroy Kalitath’s army", |
1981 | number = 2, |
1982 | body = objective_text(_"Destroy Kalitath’s army", |
1983 | listitem_bullet(_"Destroy Kalitath’s army and expand your territory to the east.") .. |
1984 | - listitem_arrow(_"To attack an enemy, you must click on the door of an adversary’s military building. A menu will pop up allowing you to select the number of soldiers that should attack. When you are ready with setting the number, click on the cross (‘Start Attack’).") |
1985 | - ), |
1986 | + listitem_arrow(_"To attack an enemy, you must click on the door of an adversary’s military building. A menu will pop up allowing you to select the number of soldiers that should attack. When you are ready with setting the number, click on the cross (‘Start Attack’).")) |
1987 | } |
1988 | |
1989 | obj_military_assault_on_althunran = { |
1990 | name = "military_assault_on_althunran", |
1991 | - title=_"Military assault on Al’thunran", |
1992 | + title = _"Military assault on Al’thunran", |
1993 | number = 1, |
1994 | body = objective_text(_"Military assault on Al’thunran", |
1995 | - listitem_bullet(_"Destroy all forces of Thron’s two brothers to liberate the throne-circle.") |
1996 | - ), |
1997 | + listitem_bullet(_"Destroy all forces of Thron’s two brothers to liberate the throne-circle.")) |
1998 | } |
1999 | |
2000 | -- ======================================================================= |
2001 | @@ -156,169 +144,172 @@ |
2002 | posy=1, |
2003 | title=_"Close to Home", |
2004 | body =thron(_"Thron looks worried…", |
2005 | -_([[These last days, we came closer to our capital. Many people have already joined us on our march and set their hopes on me. However, I fear that we are not strong enough to take up the battle against my brothers.]]) .. |
2006 | -paragraphdivider() .. |
2007 | -_([[For now, we are resting at the borders of the old forest and preparing for the coming days.]])), |
2008 | + _([[These last days, we came closer to our capital. Many people have already joined us on our march and set their hopes on me. However, I fear that we are not strong enough to take up the battle against my brothers.]]) |
2009 | + .. paragraphdivider() .. |
2010 | + _([[For now, we are resting at the borders of the old forest and preparing for the coming days.]])) |
2011 | } |
2012 | |
2013 | story_msg_2 = { |
2014 | posy=1, |
2015 | title=_"Another Cold Day", |
2016 | body =thron(_"Thron looks worried…", |
2017 | -_([[The news that a patrol brought is not good to hear. Our spies tell us that the war tribes still rage in battle, but some of the elder soldiers and tribe leaders seem to grow tired of this senseless war. Kalitath, son of Kun is the first war leader to leave Al’thunran, thus leaving his side weak and vulnerable. As my scouts report, he has set foot on the lower grounds around the capital, securing the outer fortification rings.]])), |
2018 | + _([[The news that a patrol brought is not good to hear. Our spies tell us that the war tribes still rage in battle, but some of the elder soldiers and tribe leaders seem to grow tired of this senseless war. Kalitath, son of Kun is the first war leader to leave Al’thunran, thus leaving his side weak and vulnerable. As my scouts report, he has set foot on the lower grounds around the capital, securing the outer fortification rings.]])) |
2019 | } |
2020 | |
2021 | story_msg_3 = { |
2022 | + posy=1, |
2023 | title=_"Doubts", |
2024 | - posy=1, |
2025 | body = boldreth(_"Boldreth is shaking his head…", |
2026 | -_([[Thron seeks to believe that Kalitath is tired of fighting and would be willing to join us once we march to re-establish law and order in Al’thunran. But I don’t think so. Kalitath is son to one of the mightiest generals of our forces and his family never quite liked the thought of bowing before the banner of Chat’Karuth. Why should he march with Chat’Karuth’s son to reclaim his heritage and the throne?]])), |
2027 | + _([[Thron seeks to believe that Kalitath is tired of fighting and would be willing to join us once we march to re-establish law and order in Al’thunran. But I don’t think so. Kalitath is son to one of the mightiest generals of our forces and his family never quite liked the thought of bowing before the banner of Chat’Karuth. Why should he march with Chat’Karuth’s son to reclaim his heritage and the throne?]])) |
2028 | } |
2029 | |
2030 | story_msg_4 = { |
2031 | - posy=1, |
2032 | - title=_"The Story Continues", |
2033 | - body= boldreth( |
2034 | -_([[However, Thron is not willing to listen to my doubts. He seeks to expand our fortifications to the borders of Kalitath’s territory and to reunite with his forces. I have to keep an eye on everything that happens here.]])), |
2035 | + posy = 1, |
2036 | + title = _"The Story Continues", |
2037 | + body = boldreth(_"Boldreth says:", |
2038 | + _([[However, Thron is not willing to listen to my doubts. He seeks to expand our fortifications to the borders of Kalitath’s territory and to reunite with his forces. I have to keep an eye on everything that happens here.]])) |
2039 | } |
2040 | |
2041 | story_msg_5 = { |
2042 | - posy=1, |
2043 | - title=_"Another Cold Day", |
2044 | + posy = 1, |
2045 | + title = _"Another Cold Day", |
2046 | body= thron(_"Thron is speaking confidently.", |
2047 | -_([[The frontier line of my forces has expanded to the edge of the forests. We have a long and cold winter and so many miles behind us. The fortification that we erected around Ondun will guarantee us a fast supply of men and goods, and once Al’thunran is in my hands, the two cities will be linked by a good and defensible infrastructure. Still, I hope I will not walk alone on this mission, I hope Kalitath son of Kun will follow my call.]])), |
2048 | + _([[The frontier line of my forces has expanded to the edge of the forests. We have a long and cold winter and so many miles behind us. The fortification that we erected around Ondun will guarantee us a fast supply of men and goods, and once Al’thunran is in my hands, the two cities will be linked by a good and defensible infrastructure. Still, I hope I will not walk alone on this mission, I hope Kalitath son of Kun will follow my call.]])) |
2049 | } |
2050 | |
2051 | story_msg_6 = { |
2052 | - posy=1, |
2053 | - title=_"The Story Continues", |
2054 | - body= thron( |
2055 | -_([[I have sent men to meet with Kalitath in his fortress. He has barricaded the former main entrance to the capital and is trying to set up a siege ring around Al’thunran. He will not let anyone enter or leave the city while the ring is intact. Until now, he has not answered any of my messages. But the time I spend waiting won’t be lost. I will further upgrade my soldiers and prepare for battle.]])), |
2056 | + posy = 1, |
2057 | + title = _"The Story Continues", |
2058 | + body = thron(_"Thron says:", |
2059 | + _([[I have sent men to meet with Kalitath in his fortress. He has barricaded the former main entrance to the capital and is trying to set up a siege ring around Al’thunran. He will not let anyone enter or leave the city while the ring is intact. Until now, he has not answered any of my messages. But the time I spend waiting won’t be lost. I will further upgrade my soldiers and prepare for battle.]])) |
2060 | } |
2061 | |
2062 | order_msg_7_destroy_kalitaths_army = { |
2063 | - title=_"Your Loyal Companion", |
2064 | - body= boldreth(_"Boldreth shouts out!", |
2065 | -_([[The BASTARD! Only one man of our frontier patrol came back alive. He carried a message from Kalitath, telling us that he will punish every move of our troops with their own blood! We cannot accept this behavior. From now on, there is war between Kalitath and us!]])) |
2066 | -.. new_objectives(obj_destroy_kalitaths_army), |
2067 | + title = _"Your Loyal Companion", |
2068 | + body = boldreth(_"Boldreth shouts out!", |
2069 | + _([[The BASTARD! Only one man of our frontier patrol came back alive. He carried a message from Kalitath, telling us that he will punish every move of our troops with their own blood! We cannot accept this behavior. From now on, there is war between Kalitath and us!]])) |
2070 | + .. new_objectives(obj_destroy_kalitaths_army) |
2071 | } |
2072 | |
2073 | |
2074 | |
2075 | order_msg_7_renegade_fortification = { |
2076 | posy = 1, |
2077 | - title=_"Renegade Fortification", |
2078 | - body= thron(_"Thron says:", |
2079 | -_([[The traitor left his armies dying where they lay when he saw that he would not keep my forces back. Kalitath disappeared in the confusion of the war, but I don’t care now. Shall he flee and be forgotten for all times as a tribal leader that would not bow before the wooden throne, that is mine to take now.]]) .. paragraphdivider() .. |
2080 | -_([[Furthermore, his flight brought us a great benefit: all year, Kalitath was so busy fighting that he did not even care to store enough food for all his men. Now that he has fled, their hunger has caused some of his younger followers to desert. This group holds a strong fortification on the main ring.]]) .. " " .. |
2081 | -_([[But there is more news: My scouts have reported that the two raging tribes of my brothers are in chaos and have barely noticed the new danger that is about to strike them. However, they would not care if they noticed I guess, blinded by rage and hate, there is no sense left in them at all I believe.]])), |
2082 | + title = _"Renegade Fortification", |
2083 | + body = thron(_"Thron says:", |
2084 | + _([[The traitor left his armies dying where they lay when he saw that he would not keep my forces back. Kalitath disappeared in the confusion of the war, but I don’t care now. Shall he flee and be forgotten for all times as a tribal leader that would not bow before the wooden throne, that is mine to take now.]]) |
2085 | + .. paragraphdivider() .. |
2086 | + _([[Furthermore, his flight brought us a great benefit: all year, Kalitath was so busy fighting that he did not even care to store enough food for all his men. Now that he has fled, their hunger has caused some of his younger followers to desert. This group holds a strong fortification on the main ring.]]) |
2087 | + .. paragraphdivider() .. |
2088 | + _([[But there is more news: My scouts have reported that the two raging tribes of my brothers are in chaos and have barely noticed the new danger that is about to strike them. However, they would not care if they noticed I guess, blinded by rage and hate, there is no sense left in them at all I believe.]])) |
2089 | } |
2090 | |
2091 | briefing_msg_1 = { |
2092 | - posy=1, |
2093 | - title=_"Winter Ahead", |
2094 | - body= boldreth(_"Boldreth says:", |
2095 | -_([[This morning, I found Thron’s mind troubled. He returned from his patrol late last night and sat back against a tree, watching over the encampment. The number of quarrels and disputes keeps growing, and the winter has us firmly in its grip. We should put food in our storage to survive the long, cold winter!]])), |
2096 | + posy = 1, |
2097 | + title = _"Winter Ahead", |
2098 | + body = boldreth(_"Boldreth says:", |
2099 | + _([[This morning, I found Thron’s mind troubled. He returned from his patrol late last night and sat back against a tree, watching over the encampment. The number of quarrels and disputes keeps growing, and the winter has us firmly in its grip. We should put food in our storage to survive the long, cold winter!]])) |
2100 | } |
2101 | |
2102 | order_msg_1_small_food_economy = { |
2103 | - posy=1, |
2104 | - title=_"The Advisor", |
2105 | - body= khantrukh(_"Khantrukh nods.", |
2106 | -_([[Boldreth is right! We don’t have enough food to survive a long, cold winter. We should start building a well, a fisher’s and a hunter’s hut. And if we find enough space, we should as well build up a farm and a bakery! One of our farmers seems to be very clever – he already got some crops to grow in this cold soil.]])) |
2107 | -.. new_objectives(obj_build_small_food_economy), |
2108 | + posy = 1, |
2109 | + title = _"The Advisor", |
2110 | + body = khantrukh(_"Khantrukh nods.", |
2111 | + _([[Boldreth is right! We don’t have enough food to survive a long, cold winter. We should start building a well, a fisher’s and a hunter’s hut. And if we find enough space, we should as well build up a farm and a bakery! One of our farmers seems to be very clever – he already got some crops to grow in this cold soil.]])) |
2112 | + .. new_objectives(obj_build_small_food_economy) |
2113 | } |
2114 | |
2115 | story_note_1 = { |
2116 | - posy=1, |
2117 | - title=_"Food Economy Completed", |
2118 | - body= thron( |
2119 | -_([[Khantrukh has just informed me that our basic food economy was built up successfully. Finally, none of us has to fear starvation anymore.]])), |
2120 | + posy = 1, |
2121 | + title = _"Food Economy Completed", |
2122 | + body = thron(_"Thron says:", |
2123 | + _([[Khantrukh has just informed me that our basic food economy was built up successfully. Finally, none of us has to fear starvation anymore.]])) |
2124 | } |
2125 | |
2126 | order_msg_2_build_a_donjon = { |
2127 | - posy=1, |
2128 | - title=_"Tracks", |
2129 | - body= boldreth( |
2130 | - _([[Thron told me that he discovered tracks in the snow to the northeast of our settlement. He has instructed us to build a donjon, to have a greater visual range over the area around our hall to protect our people from sudden attacks.]])) |
2131 | -.. new_objectives(obj_build_a_donjon), |
2132 | + posy = 1, |
2133 | + title = _"Tracks", |
2134 | + body = boldreth(_"Boldreth says:", |
2135 | + _([[Thron told me that he discovered tracks in the snow to the northeast of our settlement. He has instructed us to build a donjon, to have a greater visual range over the area around our hall to protect our people from sudden attacks.]])) |
2136 | + .. new_objectives(obj_build_a_donjon) |
2137 | } |
2138 | |
2139 | order_msg_3_explore_further = { |
2140 | - posy=1, |
2141 | - title=_"Further Exploration", |
2142 | - body= boldreth( |
2143 | -_([[The first fortification Thron ordered has just been completed. At the moment, he seeks to bring trust and belief to those who live inside the walls of our new habitat that we named ‘Ondun’, which means ‘those who wait’ in the old tongue. But Thron is not yet satisfied – and I fully understand his fears: the forests are deep, and the frontier to Al’thunran is near. I am sure that there are a thousand greater dangers out there than the unknown tracks.]]) .. |
2144 | -paragraphdivider() .. |
2145 | -_([[To overlook more of the area around our hall, we should explore further and set up more guards and scouts to observe the frontier and keep an eye on the raging wars on our doorstep. THEN we will be prepared once trouble seeks to capture our woods.]])) |
2146 | -.. new_objectives(obj_explore_further), |
2147 | + posy = 1, |
2148 | + title = _"Further Exploration", |
2149 | + body = boldreth(_"Boldreth says:", |
2150 | + _([[The first fortification Thron ordered has just been completed. At the moment, he seeks to bring trust and belief to those who live inside the walls of our new habitat that we named ‘Ondun’, which means ‘those who wait’ in the old tongue. But Thron is not yet satisfied – and I fully understand his fears: the forests are deep, and the frontier to Al’thunran is near. I am sure that there are a thousand greater dangers out there than the unknown tracks.]]) |
2151 | + .. paragraphdivider() .. |
2152 | + _([[To overlook more of the area around our hall, we should explore further and set up more guards and scouts to observe the frontier and keep an eye on the raging wars on our doorstep. THEN we will be prepared once trouble seeks to capture our woods.]])) |
2153 | + .. new_objectives(obj_explore_further) |
2154 | } |
2155 | |
2156 | order_msg_4_build_mining_economy = { |
2157 | - posy=1, |
2158 | - title=_"Mountains Found", |
2159 | - body= khantrukh( |
2160 | -_([[I have just spoken to the leader of our patrol. He told me that they found some mountains to the north-east and east of our territory. With a bit of luck this will open up a new chance for rearming our men, because as far as I remember, most of the mountains west of Al’thunran hold coal and some metal ores.]])) |
2161 | -.. new_objectives(obj_build_mining_economy), |
2162 | + posy = 1, |
2163 | + title = _"Mountains Found", |
2164 | + body = khantrukh("Khantrukh says:", |
2165 | + _([[I have just spoken to the leader of our patrol. He told me that they found some mountains to the north-east and east of our territory. With a bit of luck this will open up a new chance for rearming our men, because as far as I remember, most of the mountains west of Al’thunran hold coal and some metal ores.]])) |
2166 | + .. new_objectives(obj_build_mining_economy) |
2167 | } |
2168 | |
2169 | story_note_2 = { |
2170 | - posy=1, |
2171 | - title=_"Mining Economy Completed", |
2172 | - body= thron( |
2173 | -_([[I just got informed that our mining economy has started its work. This news brought a smile to my face – even if the hardest part is still waiting to be done, now that our smiths will give their best to further ease our lives.]])), |
2174 | + posy = 1, |
2175 | + title = _"Mining Economy Completed", |
2176 | + body = thron(_"Thron says:", |
2177 | + _([[I just got informed that our mining economy has started its work. This news brought a smile to my face – even if the hardest part is still waiting to be done, now that our smiths will give their best to further ease our lives.]])) |
2178 | } |
2179 | |
2180 | order_msg_5_build_a_fortress = { |
2181 | - posy=1, |
2182 | - title=_"Fortress Needed", |
2183 | - body= thron( |
2184 | -_([[Boldreth and I just explored the area around the three mountains. One major strategic problem of that area seems to be that there are two bigger passages – one north and one south of the central mountain. Those passages are quite hard to control, and so it seems to me like we have only one chance to secure the mountains from enemy hands: we must build a fortress to the east of the mountains!]])) |
2185 | -.. new_objectives(obj_build_a_fortress), |
2186 | + posy = 1, |
2187 | + title = _"Fortress Needed", |
2188 | + body = thron(_"Thron says:", |
2189 | + _([[Boldreth and I just explored the area around the three mountains. One major strategic problem of that area seems to be that there are two bigger passages – one north and one south of the central mountain. Those passages are quite hard to control, and so it seems to me like we have only one chance to secure the mountains from enemy hands: we must build a fortress to the east of the mountains!]])) |
2190 | + .. new_objectives(obj_build_a_fortress) |
2191 | } |
2192 | |
2193 | story_note_3 = { |
2194 | - posy=1, |
2195 | - title=_"Fortress Completed", |
2196 | - body=thron( |
2197 | -_([[Finally! The fortress has just been completed, so the entrance to our settlement should be safe for now. For the future, we might think on building some more fortifications like barriers and donjons at the passages, but for now we can take a deep breath.]])), |
2198 | + posy = 1, |
2199 | + title = _"Fortress Completed", |
2200 | + body = thron(_"Thron says:", |
2201 | + _([[Finally! The fortress has just been completed, so the entrance to our settlement should be safe for now. For the future, we might think on building some more fortifications like barriers and donjons at the passages, but for now we can take a deep breath.]])) |
2202 | } |
2203 | |
2204 | order_msg_6_build_enhanced_economy_and_training = { |
2205 | - posy=1, |
2206 | - title=_"Enhanced Economy and Training", |
2207 | - body= boldreth( |
2208 | -_([[Our mining economy seems to work fine, that is already good news! Anyway, there are still a lot of men and women waiting in our hall to get a task, so they can help our soldiers to prepare for the war to come.]]) .. |
2209 | -paragraphdivider() .. |
2210 | -_([[Our geologists found a lot more deposits of iron ore, coal and even gold. We should enhance our current mines as soon as our miners are more experienced. We should build up some more mines, a bigger food infrastructure to always supply our men with sufficient food and a further processing economy. But that’s still not everything – most of our soldiers are quite young and neither have a good weapon nor are they well trained. We should build up training sites to prepare them for their future tasks.]])) |
2211 | -.. new_objectives(obj_build_training_infrastructure), |
2212 | + posy = 1, |
2213 | + title = _"Enhanced Economy and Training", |
2214 | + body = boldreth(_"Boldreth says:", |
2215 | + _([[Our mining economy seems to work fine, that is already good news! Anyway, there are still a lot of men and women waiting in our hall to get a task, so they can help our soldiers to prepare for the war to come.]]) |
2216 | + .. paragraphdivider() .. |
2217 | + _([[Our geologists found a lot more deposits of iron ore, coal and even gold. We should enhance our current mines as soon as our miners are more experienced. We should build up some more mines, a bigger food infrastructure to always supply our men with sufficient food and a further processing economy. But that’s still not everything – most of our soldiers are quite young and neither have a good weapon nor are they well trained. We should build up training sites to prepare them for their future tasks.]])) |
2218 | + .. new_objectives(obj_build_training_infrastructure) |
2219 | } |
2220 | |
2221 | story_msg_7 = { |
2222 | posy=1, |
2223 | title=_"Another Cold Day", |
2224 | body= thron(_"Thron looks worried…", |
2225 | -_([[My brothers and their soldiers are dead and left fire and destruction behind. In none of all the ruins could I find any man or woman of the normal folk, and so I just may hope that they fled from this cruel battleground and started a better life somewhere else.]]) |
2226 | -.. paragraphdivider() .. |
2227 | -_([[Nothing is left of that beauty I remember, only ruins remain of the old capital. I am sorrowful but also relieved. I never hoped to see Al’thunran’s old beauty again – it was only a few months ago that I wondered whether I would ever be able to set my feet there again. Now the old town is back in my hands, and I will not hesitate to rebuild it with all the strength my people have. I can’t wait to see it again in its old beauty.]])) |
2228 | -.. objective_text(_"Victory", |
2229 | - _([[You have completed the last mission of the Barbarian tutorial campaign. You may continue playing if you wish, otherwise move on to the next campaign.]])) |
2230 | + _([[My brothers and their soldiers are dead and left fire and destruction behind. In none of all the ruins could I find any man or woman of the normal folk, and so I just may hope that they fled from this cruel battleground and started a better life somewhere else.]]) |
2231 | + .. paragraphdivider() .. |
2232 | + _([[Nothing is left of that beauty I remember, only ruins remain of the old capital. I am sorrowful but also relieved. I never hoped to see Al’thunran’s old beauty again – it was only a few months ago that I wondered whether I would ever be able to set my feet there again. Now the old town is back in my hands, and I will not hesitate to rebuild it with all the strength my people have. I can’t wait to see it again in its old beauty.]])) |
2233 | + .. objective_text(_"Victory", |
2234 | + _([[You have completed the last mission of the Barbarian tutorial campaign. You may continue playing if you wish, otherwise move on to the next campaign.]])) |
2235 | } |
2236 | |
2237 | order_msg_7_free_althunran = { |
2238 | posy = 1, |
2239 | - title=_"Military Assault", |
2240 | - body= thron( |
2241 | -_([[So be it, the generals are out and about arranging my troops, and Boldreth himself will lead the first strike. I will ride by his side, to free Al’thunran of this war and return peace to our capital.]]) .. paragraphdivider() .. |
2242 | -_([[When the young sun rises above the trees tomorrow morning, I will order the assault. By dusk, I will celebrate my victory in the wooden halls of the warlord and sacrifice a newborn lamb in the honor of my father, whose eyes are set upon me today.]]) .. |
2243 | -paragraphdivider() .. |
2244 | -_([[So be it!]])) |
2245 | -.. new_objectives(obj_military_assault_on_althunran), |
2246 | + title = _"Military Assault", |
2247 | + body = thron(_"Thron says:", |
2248 | + _([[So be it, the generals are out and about arranging my troops, and Boldreth himself will lead the first strike. I will ride by his side, to free Al’thunran of this war and return peace to our capital.]]) |
2249 | + .. paragraphdivider() .. |
2250 | + _([[When the young sun rises above the trees tomorrow morning, I will order the assault. By dusk, I will celebrate my victory in the wooden halls of the warlord and sacrifice a newborn lamb in the honor of my father, whose eyes are set upon me today.]]) |
2251 | + .. paragraphdivider() .. |
2252 | + _([[So be it!]])) |
2253 | + .. new_objectives(obj_military_assault_on_althunran), |
2254 | } |
2255 | |
2256 | cattlefarm_01 = { |
2257 | - title = _"Khantrukh says:", |
2258 | - body= khantrukh( |
2259 | -_([[Chieftain, remember the poor carriers: Our roads get longer and longer and the burden on their shoulders never gets lighter. We should breed more oxen to make their work lighter and our transportation more efficient.]])) |
2260 | -.. new_objectives(obj_build_cattlefarm), |
2261 | + title = _"Faster Transportation", |
2262 | + body = khantrukh(_"Khantrukh says:", |
2263 | + _([[Chieftain, remember the poor carriers: Our roads get longer and longer and the burden on their shoulders never gets lighter. We should breed more oxen to make their work lighter and our transportation more efficient.]])) |
2264 | + .. new_objectives(obj_build_cattlefarm), |
2265 | } |
2266 | |
2267 | === modified file 'campaigns/dummy.wmf/scripting/init.lua' |
2268 | --- campaigns/dummy.wmf/scripting/init.lua 2014-03-25 06:18:48 +0000 |
2269 | +++ campaigns/dummy.wmf/scripting/init.lua 2014-10-31 11:37:25 +0000 |
2270 | @@ -3,6 +3,7 @@ |
2271 | -- ======================================================================= |
2272 | set_textdomain("scenario_dummy.wmf") |
2273 | |
2274 | +include "scripting/messages.lua" |
2275 | include "scripting/ui.lua" |
2276 | |
2277 | p1 = wl.Game().players[1] |
2278 | @@ -13,4 +14,4 @@ |
2279 | height=450, |
2280 | posy=1, |
2281 | } |
2282 | -p1:message_box(dummy_msg.title, dummy_msg.body, dummy_msg) |
2283 | +campaign_message_box(dummy_msg.title, dummy_msg.body, dummy_msg) |
2284 | |
2285 | === modified file 'campaigns/emp01.wmf/scripting/init.lua' |
2286 | --- campaigns/emp01.wmf/scripting/init.lua 2014-03-25 06:18:48 +0000 |
2287 | +++ campaigns/emp01.wmf/scripting/init.lua 2014-10-31 11:37:25 +0000 |
2288 | @@ -13,14 +13,4 @@ |
2289 | |
2290 | include "map:scripting/starting_conditions.lua" |
2291 | include "map:scripting/texts.lua" |
2292 | - |
2293 | --- Some messages that spare some typing |
2294 | -function send_msg(msg) |
2295 | - if not msg.h then msg.h = 400 end |
2296 | - p1:message_box(msg.title, msg.body, msg) |
2297 | -end |
2298 | -function add_obj(t) |
2299 | - return p1:add_objective(t.name, t.title, t.body) |
2300 | -end |
2301 | - |
2302 | include "map:scripting/mission_thread.lua" |
2303 | |
2304 | === modified file 'campaigns/emp01.wmf/scripting/mission_thread.lua' |
2305 | --- campaigns/emp01.wmf/scripting/mission_thread.lua 2014-10-17 08:38:24 +0000 |
2306 | +++ campaigns/emp01.wmf/scripting/mission_thread.lua 2014-10-31 11:37:25 +0000 |
2307 | @@ -1,71 +1,72 @@ |
2308 | +include "scripting/messages.lua" |
2309 | |
2310 | function mission_thread() |
2311 | sleep(100) -- This is needed for yet unknown reasons |
2312 | |
2313 | -- Initial messages |
2314 | local sea = wl.Game().map:get_field(47,25) |
2315 | - local pts = scroll_smoothly_to(sea) |
2316 | + scroll_smoothly_to(sea,0) |
2317 | |
2318 | - send_msg(diary_page_1) |
2319 | + campaign_message_box(diary_page_1) |
2320 | sleep(200) |
2321 | |
2322 | -- Show the sea |
2323 | p1:reveal_fields(sea:region(6)) |
2324 | sleep(200) |
2325 | - send_msg(diary_page_2) |
2326 | + campaign_message_box(diary_page_2) |
2327 | -- Hide the sea after 5 seconds |
2328 | run(function() sleep(5000) p1:hide_fields(sea:region(6)) end) |
2329 | |
2330 | -- Back home |
2331 | - timed_scroll(array_reverse(pts)) |
2332 | - send_msg(diary_page_3) |
2333 | + scroll_smoothly_to(wl.Game().map.player_slots[1].starting_field) |
2334 | + campaign_message_box(diary_page_3) |
2335 | |
2336 | |
2337 | sleep(400) |
2338 | |
2339 | - send_msg(saledus_1) |
2340 | + campaign_message_box(saledus_1) |
2341 | p1:allow_buildings{"barracks"} |
2342 | - local o = add_obj(obj_build_barracks) |
2343 | + local o = add_campaign_objective(obj_build_barracks) |
2344 | while #p1:get_buildings("barracks") < 1 do sleep(3249) end |
2345 | o.done = true |
2346 | |
2347 | -- Barracks are completed now |
2348 | - send_msg(saledus_2) |
2349 | + campaign_message_box(saledus_2) |
2350 | p1:allow_buildings{"lumberjacks_house"} |
2351 | - o = add_obj(obj_build_lumberjack) |
2352 | - send_msg(amalea_1) |
2353 | + o = add_campaign_objective(obj_build_lumberjack) |
2354 | + campaign_message_box(amalea_1) |
2355 | while #p1:get_buildings("lumberjacks_house") < 1 do sleep(3249) end |
2356 | o.done = true |
2357 | |
2358 | -- Lumberjack is now build |
2359 | - send_msg(amalea_2) |
2360 | + campaign_message_box(amalea_2) |
2361 | p1:allow_buildings{"sawmill"} |
2362 | - o = add_obj(obj_build_sawmill_and_lumberjacks) |
2363 | + o = add_campaign_objective(obj_build_sawmill_and_lumberjacks) |
2364 | while not check_for_buildings(p1, { lumberjacks_house = 3, sawmill = 1}) |
2365 | do sleep(2343) end |
2366 | o.done = true |
2367 | |
2368 | -- Now the lady demands a forester after having us cut down the whole forest. |
2369 | - send_msg(amalea_3) |
2370 | - o = add_obj(obj_build_forester) |
2371 | + campaign_message_box(amalea_3) |
2372 | + o = add_campaign_objective(obj_build_forester) |
2373 | p1:allow_buildings{"foresters_house"} |
2374 | while not check_for_buildings(p1, { foresters_house = 1 }) do sleep(2434) end |
2375 | o.done = true |
2376 | |
2377 | |
2378 | -- Now a quarry |
2379 | - send_msg(saledus_3) |
2380 | - o = add_obj(obj_build_quarry) |
2381 | + campaign_message_box(saledus_3) |
2382 | + o = add_campaign_objective(obj_build_quarry) |
2383 | p1:allow_buildings{"quarry"} |
2384 | while not check_for_buildings(p1, { quarry = 1 }) do sleep(2434) end |
2385 | o.done = true |
2386 | |
2387 | -- All buildings done. Got home |
2388 | - send_msg(saledus_4) |
2389 | + campaign_message_box(saledus_4) |
2390 | |
2391 | sleep(25000) -- Sleep a while |
2392 | |
2393 | - send_msg(diary_page_4) |
2394 | + campaign_message_box(diary_page_4) |
2395 | p1:reveal_scenario("empiretut01") |
2396 | end |
2397 | |
2398 | @@ -73,7 +74,7 @@ |
2399 | function easter_egg() |
2400 | while not check_for_buildings(p1, {barracks = 10}) do sleep(4253) end |
2401 | |
2402 | - send_msg(safe_peninsula) |
2403 | + campaign_message_box(safe_peninsula) |
2404 | end |
2405 | |
2406 | |
2407 | |
2408 | === modified file 'campaigns/emp01.wmf/scripting/texts.lua' |
2409 | --- campaigns/emp01.wmf/scripting/texts.lua 2014-10-18 07:37:16 +0000 |
2410 | +++ campaigns/emp01.wmf/scripting/texts.lua 2014-10-31 11:37:25 +0000 |
2411 | @@ -77,24 +77,15 @@ |
2412 | diary_page_1 = { |
2413 | title =_ "A Dark Night", |
2414 | body=lutius(_"Diary of Lutius", |
2415 | - _([[What has become of our Empire? I really ask this question – why did my king forbid me ]] .. |
2416 | -[[from fighting against that monstrous barbarian tribe, who first acted as a peaceful friend ]] .. |
2417 | -[[and then attacked my army in the darkest night?]]) .. paragraphdivider() .. |
2418 | -_([[With an army of 150 men, I was assigned to patrol on our northern frontier, ]] .. |
2419 | -[[which lies near the Galdin Mountains in a great, beautiful and ancient forest. ]] .. |
2420 | -[[Soon, we met a barbarian tribe, which at first was friendly. A few of my men even traded with them ]] .. |
2421 | -[[and their kids came to us, to admire our clean and tidy uniforms and weapons.]]) .. paragraphdivider() .. |
2422 | -_([[But during our fifth night in that region, they attacked us with no reason. ]] .. |
2423 | -[[I lost dozens of good men, and found myself imprisoned and brought to their chieftain. ]] .. |
2424 | -[[He spat at me, mocked me and told me to leave this land forever. ]] .. |
2425 | -[[He did not want new land and did not want our land, but he told me that THIS forest was their land]] .. |
2426 | -[[ – and it would stay theirs until the ghosts took the last man of his folk!]]) .. paragraphdivider() .. |
2427 | -_([[Three weeks later, I returned to Fremil to speak with our king. ]] .. |
2428 | -[[He was furious at the Barbarians, yet forbade any attack on these tribes. ]] .. |
2429 | -[[He believed that our army was too weak to survive in a war against the barbarians.]]) .. paragraphdivider() .. |
2430 | -_([[Still, I saw no way that I could erase my shame without fighting against these barbarians. ]] .. |
2431 | -[[So, I left Fremil by boat to find a new world and a new life for myself, somewhere in the south. ]] .. |
2432 | -[[Now I am sailing on the perl-gulf with my family, some of my friends and a few of my best warriors.]])), |
2433 | + _([[What has become of our Empire? I really ask this question – why did my king forbid me from fighting against that monstrous barbarian tribe, who first acted as a peaceful friend and then attacked my army in the darkest night?]]) |
2434 | + .. paragraphdivider() .. |
2435 | + _([[With an army of 150 men, I was assigned to patrol on our northern frontier, which lies near the Galdin Mountains in a great, beautiful and ancient forest. Soon, we met a barbarian tribe, which at first was friendly. A few of my men even traded with them and their kids came to us, to admire our clean and tidy uniforms and weapons.]]) |
2436 | + .. paragraphdivider() .. |
2437 | + _([[But during our fifth night in that region, they attacked us with no reason. I lost dozens of good men, and found myself imprisoned and brought to their chieftain. He spat at me, mocked me and told me to leave this land forever. He did not want new land and did not want our land, but he told me that THIS forest was their land – and it would stay theirs until the ghosts took the last man of his folk!]]) |
2438 | + .. paragraphdivider() .. |
2439 | + _([[Three weeks later, I returned to Fremil to speak with our king. He was furious at the Barbarians, yet forbade any attack on these tribes. He believed that our army was too weak to survive in a war against the barbarians.]]) |
2440 | + .. paragraphdivider() .. |
2441 | + _([[Still, I saw no way that I could erase my shame without fighting against these barbarians. So, I left Fremil by boat to find a new world and a new life for myself, somewhere in the south. Now I am sailing on the perl-gulf with my family, some of my friends and a few of my best warriors.]])), |
2442 | w=500, |
2443 | posy=1, |
2444 | } |
2445 | @@ -102,12 +93,9 @@ |
2446 | diary_page_2 = { |
2447 | title=_"The Rough Sea", |
2448 | body= lutius(_"Diary of Lutius", |
2449 | - _([[It seems as if sailing on the perl-gulf was one of our biggest mistakes. ]] .. |
2450 | -[[Nature was against us and drove us into a dark, wild storm. ]] .. |
2451 | -[[I really don’t know how many hours have passed since the waves rose higher than our boat, ]] .. |
2452 | -[[but still it would be suicide to go outside.]]) .. paragraphdivider() .. |
2453 | -_([[Our ship is badly damaged and is taking in more and more water. ]] .. |
2454 | -[[We can thank the Gods if we survive this black night with our lives.]])), |
2455 | + _([[It seems as if sailing on the perl-gulf was one of our biggest mistakes. Nature was against us and drove us into a dark, wild storm. I really don’t know how many hours have passed since the waves rose higher than our boat, but still it would be suicide to go outside.]]) |
2456 | + .. paragraphdivider() .. |
2457 | + _([[Our ship is badly damaged and is taking in more and more water. We can thank the Gods if we survive this black night with our lives.]])), |
2458 | w=400, |
2459 | posy=1, |
2460 | } |
2461 | @@ -115,12 +103,11 @@ |
2462 | diary_page_3 = { |
2463 | title=_"Survivor", |
2464 | body= lutius(_"Diary of Lutius", |
2465 | - _([[Finally, the Gods were with us!]]) .. paragraphdivider() .. |
2466 | -_([[We landed on an unknown coast and found peaceful rest under the palm trees growing at the shore. ]] .. |
2467 | -[[But that is about as good as it gets. The truth is: when I woke up this morning, I saw nothing but sand around us.]]) .. |
2468 | -paragraphdivider() .. |
2469 | -_([[It really seems as if we have landed under the only palm trees existing in this far-away sandy desert. ]] .. |
2470 | -[[I fear we won’t find the help we need to get our ship repaired in good time.]])), |
2471 | + _([[Finally, the Gods were with us!]]) |
2472 | + .. paragraphdivider() .. |
2473 | + _([[We landed on an unknown coast and found peaceful rest under the palm trees growing at the shore. But that is about as good as it gets. The truth is: when I woke up this morning, I saw nothing but sand around us.]]) |
2474 | + .. paragraphdivider() .. |
2475 | + _([[It really seems as if we have landed under the only palm trees existing in this far-away sandy desert. I fear we won’t find the help we need to get our ship repaired in good time.]])), |
2476 | w=400, |
2477 | posy=1, |
2478 | } |
2479 | @@ -128,14 +115,12 @@ |
2480 | saledus_1 = { |
2481 | title=_"A Foreboding", |
2482 | body= saledus(_"Saledus looks around nervously…", |
2483 | - _([[Sire, I fear we are not safe in this foreign land. ]] .. |
2484 | -[[Who knows what terrible creatures live beyond this forest, in that mighty desert? ]] .. |
2485 | -[[What if these creatures enter the woods and await the time to attack us?]]) .. paragraphdivider() .. |
2486 | -_([[Well, perhaps my fear is misguided, but it can’t be wrong to keep watch in the forests]] .. |
2487 | -[[ – so that we can be sure to see any potential enemies before they can see us.]]) .. paragraphdivider() .. |
2488 | -_([[We really should build a barracks in the eastern portion of the forest. ]] .. |
2489 | -[[Then one of us can keep watch in the darkness and keep us safe from these creatures.]])) |
2490 | -.. new_objectives(obj_build_barracks), |
2491 | + _([[Sire, I fear we are not safe in this foreign land. Who knows what terrible creatures live beyond this forest, in that mighty desert? What if these creatures enter the woods and await the time to attack us?]]) |
2492 | + .. paragraphdivider() .. |
2493 | + _([[Well, perhaps my fear is misguided, but it can’t be wrong to keep watch in the forests – so that we can be sure to see any potential enemies before they can see us.]]) |
2494 | + .. paragraphdivider() .. |
2495 | + _([[We really should build a barracks in the eastern portion of the forest. Then one of us can keep watch in the darkness and keep us safe from these creatures.]])) |
2496 | + .. new_objectives(obj_build_barracks), |
2497 | w=400, |
2498 | } |
2499 | |
2500 | @@ -143,87 +128,79 @@ |
2501 | saledus_2 = { |
2502 | title=_"Safe For Now", |
2503 | body= saledus(_"Saledus speaks with a sigh of relief…", |
2504 | - _([[Sire, I saw that the construction of the barracks was completed, ]] .. |
2505 | -[[so I have assigned one of my best soldiers to it to keep watch on the desert.]]) .. paragraphdivider() .. |
2506 | -_([[This is a good step forward. Now we can feel a bit safer and can look forward to repairing our ship.]])), |
2507 | + _([[Sire, I saw that the construction of the barracks was completed, so I have assigned one of my best soldiers to it to keep watch on the desert.]]) |
2508 | + .. paragraphdivider() .. |
2509 | + _([[This is a good step forward. Now we can feel a bit safer and can look forward to repairing our ship.]])), |
2510 | w=400, |
2511 | } |
2512 | |
2513 | amalea_1 = { |
2514 | title=_"Young Amalea", |
2515 | body= amalea(_"Amalea smiles…", |
2516 | - _([[Hey Lutius, I just met Saledus outside.]]) .. paragraphdivider() .. |
2517 | -_([[He told me about the barracks. Well, I am not one of those girls who think we need more barracks]] .. |
2518 | -[[ – instead, we might concentrate on other things now.]]) .. paragraphdivider() .. |
2519 | -_([[It is absolutely clear that we need wood to repair our ship. ]] .. |
2520 | -[[So, I walked through the forest yesterday and found a nice place for a lumberjack’s house, ]] .. |
2521 | -[[south of our provisional headquarters.]])) |
2522 | -.. new_objectives(obj_build_lumberjack), |
2523 | + _([[Hey Lutius, I just met Saledus outside.]]) |
2524 | + .. paragraphdivider() .. |
2525 | + _([[He told me about the barracks. Well, I am not one of those girls who think we need more barracks – instead, we might concentrate on other things now.]]) |
2526 | + .. paragraphdivider() .. |
2527 | + _([[It is absolutely clear that we need wood to repair our ship. So, I walked through the forest yesterday and found a nice place for a lumberjack’s house, south of our provisional headquarters.]])) |
2528 | + .. new_objectives(obj_build_lumberjack), |
2529 | w=400, |
2530 | } |
2531 | |
2532 | amalea_2 = { |
2533 | title=_"Young Amalea", |
2534 | body= amalea(_"Amalea recommends…", |
2535 | - _([[Hey Lutius, I got the message that our first lumberjack has started his work today. ]] .. |
2536 | -[[Perhaps it would be a good idea to wait until he cleans enough space for constructing two more lumberjack’s houses, ]] .. |
2537 | -[[so that we can harvest the logs faster.]]) .. paragraphdivider() .. |
2538 | -_([[But unfortunately the logs are useless for repairing our ship – we need refined lumber, ]] .. |
2539 | -[[like every ship and every bigger building needs, too. ]] .. |
2540 | -[[So we should build a sawmill – as soon as we have enough space for this.]])) |
2541 | -.. new_objectives(obj_build_sawmill_and_lumberjacks), |
2542 | + _([[Hey Lutius, I got the message that our first lumberjack has started his work today. Perhaps it would be a good idea to wait until he cleans enough space for constructing two more lumberjack’s houses, so that we can harvest the logs faster.]]) |
2543 | + .. paragraphdivider() .. |
2544 | + _([[But unfortunately the logs are useless for repairing our ship – we need refined lumber, like every ship and every bigger building needs, too. So we should build a sawmill – as soon as we have enough space for this.]])) |
2545 | + .. new_objectives(obj_build_sawmill_and_lumberjacks), |
2546 | w=400, |
2547 | } |
2548 | |
2549 | amalea_3 = { |
2550 | title=_"Young Amalea", |
2551 | body= amalea(_"Amalea comes in…", |
2552 | - _([[Hi Lutius, I’ve got two important things to talk about… First the good news:]]) .. paragraphdivider() .. |
2553 | -_([[I noticed that the construction of the sawmill is complete, ]] .. |
2554 | -[[so we can begin to refine the logs that the lumberjacks are harvesting into lumber.]]) .. paragraphdivider() .. |
2555 | -_([[But that’s just about the only positive thing I know to talk about. ]] .. |
2556 | -[[The bad news is that our lumberjacks harvest at an incredible speed. ]] .. |
2557 | -[[There are almost no trees left on this island.]]) .. paragraphdivider() .. |
2558 | -_([[Lutius, these trees provide shelter from the sandstorms that sweep in from the desert ]] .. |
2559 | -[[and shade on the hot days, and they are the home of so many gentle animals. ]] .. |
2560 | -[[We shouldn’t leave this island a complete desert.]]) .. paragraphdivider() .. |
2561 | -_([[Lutius, I beg you: find someone who takes care of planting new trees.]])) |
2562 | -.. new_objectives(obj_build_forester), |
2563 | + _([[Hi Lutius, I’ve got two important things to talk about… First the good news:]]) |
2564 | + .. paragraphdivider() .. |
2565 | + _([[I noticed that the construction of the sawmill is complete, so we can begin to refine the logs that the lumberjacks are harvesting into lumber.]]) |
2566 | + .. paragraphdivider() .. |
2567 | + _([[But that’s just about the only positive thing I know to talk about. The bad news is that our lumberjacks harvest at an incredible speed. There are almost no trees left on this island.]]) |
2568 | + .. paragraphdivider() .. |
2569 | + _([[Lutius, these trees provide shelter from the sandstorms that sweep in from the desert and shade on the hot days, and they are the home of so many gentle animals. We shouldn’t leave this island a complete desert.]]) |
2570 | + .. paragraphdivider() .. |
2571 | + _([[Lutius, I beg you: find someone who takes care of planting new trees.]])) |
2572 | + .. new_objectives(obj_build_forester), |
2573 | w=400, |
2574 | } |
2575 | |
2576 | saledus_3 = { |
2577 | title=_"Thinking About the Future", |
2578 | body= saledus(_"Saledus notes…", |
2579 | - _([[Hey, my good old friend. I just thought about the rocks standing on the south shore of this land. ]] .. |
2580 | -[[Perhaps we could cut out some useful hard stones and beautiful marble.]]) .. paragraphdivider() .. |
2581 | -_([[The repair of our ship will take a few weeks, anyway, and the resources we harvest now ]] .. |
2582 | -[[might be the base of strong and big buildings in another land.]])) |
2583 | -.. new_objectives(obj_build_quarry), |
2584 | + _([[Hey, my good old friend. I just thought about the rocks standing on the south shore of this land. Perhaps we could cut out some useful hard stones and beautiful marble.]]) |
2585 | + .. paragraphdivider() .. |
2586 | + _([[The repair of our ship will take a few weeks, anyway, and the resources we harvest now might be the base of strong and big buildings in another land.]])) |
2587 | + .. new_objectives(obj_build_quarry), |
2588 | w=400, |
2589 | } |
2590 | |
2591 | saledus_4 = { |
2592 | title=_"A Step Forward", |
2593 | body= saledus(_"Saledus looks promising…", |
2594 | - _([[Hey Lutius, today we got a lot closer to our first castle. ]] .. |
2595 | -[[The quarry to the south began its work today and will soon provide us with stones and beautiful marble.]]) .. paragraphdivider() .. |
2596 | -_([[Now we truly can look forward to settling down on another island.]])), |
2597 | + _([[Hey Lutius, today we got a lot closer to our first castle. The quarry to the south began its work today and will soon provide us with stones and beautiful marble.]]) |
2598 | + .. paragraphdivider() .. |
2599 | + _([[Now we truly can look forward to settling down on another island.]])), |
2600 | w=400, |
2601 | } |
2602 | |
2603 | diary_page_4 = { |
2604 | title=_"Mission Complete", |
2605 | - body= lutius( |
2606 | -_([[Today I got the message that our ship is completely repaired. ]] .. |
2607 | -[[At the moment, my people are loading everything onto our newly repaired ship, ]] .. |
2608 | -[[hoping it will serve us better than last time.]]) .. paragraphdivider() .. |
2609 | -_([[Tonight will be our last night on this island. ]] .. |
2610 | -[[Tomorrow morning we will leave, searching for a new place for our exile.]]) .. paragraphdivider() .. |
2611 | -_([[I still wonder if we will ever see Fremil again.]])) .. |
2612 | - objective_text(_"Victory", _ |
2613 | -[[You have completed this mission. You may continue playing if you wish, otherwise move on to the next mission.]] |
2614 | - ), |
2615 | + body= lutius(_"Diary of Lutius", |
2616 | + _([[Today I got the message that our ship is completely repaired. At the moment, my people are loading everything onto our newly repaired ship, hoping it will serve us better than last time.]]) |
2617 | + .. paragraphdivider() .. |
2618 | + _([[Tonight will be our last night on this island. Tomorrow morning we will leave, searching for a new place for our exile.]]) |
2619 | + .. paragraphdivider() .. |
2620 | + _([[I still wonder if we will ever see Fremil again.]])) |
2621 | + .. objective_text(_"Victory", |
2622 | + _[[You have completed this mission. You may continue playing if you wish, otherwise move on to the next mission.]]), |
2623 | posy=1 |
2624 | } |
2625 | |
2626 | |
2627 | === modified file 'campaigns/emp02.wmf/scripting/init.lua' |
2628 | --- campaigns/emp02.wmf/scripting/init.lua 2014-03-25 06:18:48 +0000 |
2629 | +++ campaigns/emp02.wmf/scripting/init.lua 2014-10-31 11:37:25 +0000 |
2630 | @@ -4,8 +4,8 @@ |
2631 | set_textdomain("scenario_emp02.wmf") |
2632 | |
2633 | include "scripting/coroutine.lua" |
2634 | +include "scripting/infrastructure.lua" |
2635 | include "scripting/objective_utils.lua" |
2636 | -include "scripting/infrastructure.lua" |
2637 | include "scripting/table.lua" |
2638 | include "scripting/ui.lua" |
2639 | |
2640 | @@ -15,15 +15,4 @@ |
2641 | |
2642 | include "map:scripting/starting_conditions.lua" |
2643 | include "map:scripting/texts.lua" |
2644 | - |
2645 | --- Some messages that spare some typing |
2646 | -function send_msg(msg) |
2647 | - if not msg.h then msg.h = 400 end |
2648 | - if not msg.w then msg.w = 450 end |
2649 | - p1:message_box(msg.title, msg.body, msg) |
2650 | -end |
2651 | -function add_obj(t) |
2652 | - return p1:add_objective(t.name, t.title, t.body) |
2653 | -end |
2654 | - |
2655 | include "map:scripting/mission_thread.lua" |
2656 | |
2657 | === modified file 'campaigns/emp02.wmf/scripting/mission_thread.lua' |
2658 | --- campaigns/emp02.wmf/scripting/mission_thread.lua 2014-10-17 08:38:24 +0000 |
2659 | +++ campaigns/emp02.wmf/scripting/mission_thread.lua 2014-10-31 11:37:25 +0000 |
2660 | @@ -1,9 +1,12 @@ |
2661 | -- ======================================================================= |
2662 | -- Mission Threads |
2663 | -- ======================================================================= |
2664 | + |
2665 | +include "scripting/messages.lua" |
2666 | + |
2667 | function building_materials() |
2668 | sleep(200) |
2669 | - send_msg(diary_page_5) |
2670 | + campaign_message_box(diary_page_5) |
2671 | |
2672 | local map = wl.Game().map |
2673 | local forests = map:get_field(17,10) |
2674 | @@ -12,10 +15,10 @@ |
2675 | run(function() sleep(5000) p1:hide_fields(forests:region(6)) end) |
2676 | |
2677 | -- Show the trees |
2678 | - scroll_smoothly_to(forests) |
2679 | + wait_for_roadbuilding_and_scroll(forests) |
2680 | |
2681 | - send_msg(diary_page_5_1) |
2682 | - local o_woodeconomy = add_obj(obj_build_woodeconomy) |
2683 | + campaign_message_box(diary_page_5_1) |
2684 | + local o_woodeconomy = add_campaign_objective(obj_build_woodeconomy) |
2685 | -- Check for completing of the woodeconomy |
2686 | run(function() |
2687 | while not check_for_buildings(p1, { |
2688 | @@ -24,21 +27,21 @@ |
2689 | sawmill = 1, |
2690 | }) do sleep(2342) end |
2691 | |
2692 | - send_msg(diary_page_6) |
2693 | + campaign_message_box(diary_page_6) |
2694 | o_woodeconomy.done = true |
2695 | end) |
2696 | |
2697 | |
2698 | -- Show the stones |
2699 | - scroll_smoothly_to(map:get_field(14,25)) |
2700 | - send_msg(diary_page_5_2) |
2701 | - local o_quarry = add_obj(obj_build_quarry) |
2702 | + wait_for_roadbuilding_and_scroll(map:get_field(14,25)) |
2703 | + campaign_message_box(diary_page_5_2) |
2704 | + local o_quarry = add_campaign_objective(obj_build_quarry) |
2705 | -- Check for completeness of the quarry |
2706 | run(function() |
2707 | while not check_for_buildings(p1, {quarry=1}) do sleep(3423) end |
2708 | o_quarry.done = true |
2709 | |
2710 | - send_msg(diary_page_7) |
2711 | + campaign_message_box(diary_page_7) |
2712 | end) |
2713 | end |
2714 | |
2715 | @@ -58,7 +61,7 @@ |
2716 | sleep(2344) |
2717 | end |
2718 | |
2719 | - send_msg(amalea_1) |
2720 | + campaign_message_box(amalea_1) |
2721 | p1:allow_buildings{ |
2722 | "well", |
2723 | "farm", |
2724 | @@ -73,12 +76,12 @@ |
2725 | "inn", |
2726 | "fishers_house", |
2727 | } |
2728 | - local o = add_obj(obj_build_Food_infrastructure) |
2729 | + local o = add_campaign_objective(obj_build_food_infrastructure) |
2730 | |
2731 | -- Run easter egg: Amalea says something when Tavern is done |
2732 | run(function() |
2733 | while #p1:get_buildings("tavern") < 1 do sleep(2349) end |
2734 | - send_msg(amalea_2) |
2735 | + campaign_message_box(amalea_2) |
2736 | end) |
2737 | |
2738 | while true do |
2739 | @@ -116,9 +119,9 @@ |
2740 | end) |
2741 | |
2742 | local move_point = wl.Game().map:get_field(49,22) |
2743 | - scroll_smoothly_to(move_point) |
2744 | + wait_for_roadbuilding_and_scroll(move_point) |
2745 | |
2746 | - send_msg(saledus_3) |
2747 | + campaign_message_box(saledus_3) |
2748 | p1:allow_buildings{ |
2749 | "coalmine", |
2750 | "deep_coalmine", |
2751 | @@ -132,7 +135,7 @@ |
2752 | "charcoal_kiln", |
2753 | } |
2754 | |
2755 | - local o = add_obj(obj_build_mining_infrastructure) |
2756 | + local o = add_campaign_objective(obj_build_mining_infrastructure) |
2757 | -- Wait for the infrastructure to come up |
2758 | while true do |
2759 | local rv = p1:get_buildings{ |
2760 | @@ -168,10 +171,10 @@ |
2761 | run(function() sleep(10000) p1:hide_fields(shipparts:region(5)) end) |
2762 | |
2763 | -- Move to the shipparts |
2764 | - local pts = scroll_smoothly_to(shipparts) |
2765 | + local pts = wait_for_roadbuilding_and_scroll(shipparts) |
2766 | |
2767 | - send_msg(saledus_1) |
2768 | - local o = add_obj(obj_build_military_buildings) |
2769 | + campaign_message_box(saledus_1) |
2770 | + local o = add_campaign_objective(obj_build_military_buildings) |
2771 | p1:allow_buildings{"barracks", "sentry"} |
2772 | |
2773 | -- Go back to where we were |
2774 | @@ -186,11 +189,11 @@ |
2775 | p1:reveal_fields(marblemountains:region(5)) |
2776 | run(function() sleep(10000) p1:hide_fields(marblemountains:region(5)) end) |
2777 | |
2778 | - pts = scroll_smoothly_to(marblemountains) |
2779 | + pts = wait_for_roadbuilding_and_scroll(marblemountains) |
2780 | |
2781 | - send_msg(saledus_2) |
2782 | + campaign_message_box(saledus_2) |
2783 | p1:allow_buildings{"marblemine", "deep_marblemine"} |
2784 | - o = add_obj(obj_build_marblemine) |
2785 | + o = add_campaign_objective(obj_build_marblemine) |
2786 | run(function() while not check_for_buildings(p1, {marblemine = 1}) |
2787 | do sleep(2133) end o.done = true end) |
2788 | |
2789 | @@ -220,10 +223,10 @@ |
2790 | ) |
2791 | p1:reveal_fields(barbarians) |
2792 | run(function() sleep(5000) p1:hide_fields(barbarians) end) |
2793 | - scroll_smoothly_to(wl.Game().map:get_field(59, 55)) |
2794 | + wait_for_roadbuilding_and_scroll(wl.Game().map:get_field(59, 55)) |
2795 | |
2796 | - send_msg(diary_page_8) |
2797 | - local o = add_obj(obj_build_bigger_military_buildings) |
2798 | + campaign_message_box(diary_page_8) |
2799 | + local o = add_campaign_objective(obj_build_bigger_military_buildings) |
2800 | p1:allow_buildings{"outpost", "barrier", "tower"} |
2801 | p2:allow_buildings{"quarry"} |
2802 | |
2803 | @@ -241,10 +244,10 @@ |
2804 | while not mining_infrastructure_done do |
2805 | sleep(2343) |
2806 | end |
2807 | - send_msg(diary_page_9) |
2808 | + campaign_message_box(diary_page_9) |
2809 | p1:allow_buildings{"fortress"} |
2810 | |
2811 | - o = add_obj(obj_remove_the_barbarians) |
2812 | + o = add_campaign_objective(obj_remove_the_barbarians) |
2813 | -- Wait for the fortress to come up |
2814 | while not check_for_buildings(p1, {fortress=1}, |
2815 | wl.Game().map:get_field(60,65):region(6)) |
2816 | @@ -253,9 +256,9 @@ |
2817 | o.done = true |
2818 | |
2819 | -- Show victory message |
2820 | - send_msg(diary_page_10) |
2821 | - send_msg(seven_days_later) |
2822 | - send_msg(diary_page_11) |
2823 | + campaign_message_box(diary_page_10) |
2824 | + campaign_message_box(seven_days_later) |
2825 | + campaign_message_box(diary_page_11) |
2826 | |
2827 | p1:reveal_campaign("campsect2") |
2828 | p1:reveal_scenario("empiretut02") |
2829 | |
2830 | === modified file 'campaigns/emp02.wmf/scripting/texts.lua' |
2831 | --- campaigns/emp02.wmf/scripting/texts.lua 2014-10-18 07:37:16 +0000 |
2832 | +++ campaigns/emp02.wmf/scripting/texts.lua 2014-10-31 11:37:25 +0000 |
2833 | @@ -68,7 +68,7 @@ |
2834 | ), |
2835 | } |
2836 | |
2837 | -obj_build_Food_infrastructure = { |
2838 | +obj_build_food_infrastructure = { |
2839 | name = "build_food_infrastructure", |
2840 | title =_"Provide your miners with food", |
2841 | number = 1, |
2842 | @@ -107,43 +107,38 @@ |
2843 | title =_ "A New Island", |
2844 | posy= 1, |
2845 | body = lutius(_"Diary of Lutius", |
2846 | -_([[Finally! This island appears to have been made for us, it is a gift from the Gods to my people and myself. ]] .. |
2847 | -[[Until now, we have only seen a small part of this island, but this part alone is already bringing sunlight to my mind. ]] .. |
2848 | -[[I feel as if we have found a priceless treasure, a land like paradise.]]) .. paragraphdivider() .. |
2849 | -_([[On this island, we will start our new life. ]] .. |
2850 | -[[We will build up an outpost for our exile, which perhaps will become a new, beautiful home for every one of us.]])), |
2851 | + _([[Finally! This island appears to have been made for us, it is a gift from the Gods to my people and myself. Until now, we have only seen a small part of this island, but this part alone is already bringing sunlight to my mind. I feel as if we have found a priceless treasure, a land like paradise.]]) |
2852 | + .. paragraphdivider() .. |
2853 | + _([[On this island, we will start our new life. We will build up an outpost for our exile, which perhaps will become a new, beautiful home for every one of us.]])), |
2854 | } |
2855 | |
2856 | diary_page_5_1 = { |
2857 | title =_ "The Green Forests", |
2858 | posy = 1, |
2859 | body= lutius(_"Diary of Lutius", |
2860 | -_([[As Saledus and I walked through these wonderful forests in the north, we felt that our future had just begun. ]] .. |
2861 | -[[This land is so peaceful, good and beautiful, I could stay here until the end of my life.]]) .. paragraphdivider() .. |
2862 | -_([[But until that day, may many years pass! For now, we must concentrate on the present, ]] .. |
2863 | -[[and build a few lumberjack’s houses and a sawmill to produce some basic building materials.]]) .. paragraphdivider() .. |
2864 | -_([[But we shouldn’t forget to preserve this natural bounty. ]] .. |
2865 | -[[These forests should last forever, so we really should build a forester’s house too.]])) |
2866 | -.. new_objectives(obj_build_woodeconomy), |
2867 | + _([[As Saledus and I walked through these wonderful forests in the north, we felt that our future had just begun. This land is so peaceful, good and beautiful, I could stay here until the end of my life.]]) |
2868 | + .. paragraphdivider() .. |
2869 | + _([[But until that day, may many years pass! For now, we must concentrate on the present, and build a few lumberjack’s houses and a sawmill to produce some basic building materials.]]) |
2870 | + .. paragraphdivider() .. |
2871 | + _([[But we shouldn’t forget to preserve this natural bounty. These forests should last forever, so we really should build a forester’s house too.]])) |
2872 | + .. new_objectives(obj_build_woodeconomy) |
2873 | } |
2874 | |
2875 | diary_page_5_2 = { |
2876 | title =_ "The Rocks", |
2877 | posy = 1, |
2878 | body= lutius(_"Diary of Lutius", |
2879 | -_([[Later, I walked down to the rocks in the south and looked for a place where we could build a quarry ]] .. |
2880 | -[[to get some hard stone for our larger buildings.]]) .. paragraphdivider() .. |
2881 | -_([[Again, I felt like I was in paradise when I noticed that some marble-like stones were among the rocks. ]] .. |
2882 | -[[It seems that we will soon be able to build strong, luxurious buildings, like those we were accustomed to in Fremil.]])) |
2883 | -.. new_objectives(obj_build_quarry), |
2884 | + _([[Later, I walked down to the rocks in the south and looked for a place where we could build a quarry to get some hard stone for our larger buildings.]]) |
2885 | + .. paragraphdivider() .. |
2886 | + _([[Again, I felt like I was in paradise when I noticed that some marble-like stones were among the rocks. It seems that we will soon be able to build strong, luxurious buildings, like those we were accustomed to in Fremil.]])) |
2887 | + .. new_objectives(obj_build_quarry) |
2888 | } |
2889 | |
2890 | diary_page_6 = { |
2891 | title =_ "Wood for the Colony", |
2892 | posy=1, |
2893 | body= lutius(_"Diary of Lutius", |
2894 | -_([[Good news! Today our wood economy was completed. ]] .. |
2895 | -[[Now we can be sure that we will have enough wood for our future building projects.]])), |
2896 | + _([[Good news! Today our wood economy was completed. Now we can be sure that we will have enough wood for our future building projects.]])) |
2897 | } |
2898 | |
2899 | diary_page_7 = { |
2900 | @@ -157,89 +152,86 @@ |
2901 | title =_ "Dangerous Ship Parts", |
2902 | posy = 1, |
2903 | body= saledus(_"Saledus looks unhappy", |
2904 | -_([[Greetings Lutius, I don’t want to start a panic, ]] .. |
2905 | -[[but I found something which gives me a sinking feeling in my stomach and spreads waves of fear in my heart. ]] .. |
2906 | -[[As I walked down to the southern shore, I found the remains of another ship. ]] .. |
2907 | -[[I don’t know whether these parts are all that is left of that ship. ]] .. |
2908 | -[[In any case, these parts do not seem to be old.]]) .. paragraphdivider() .. |
2909 | -_([[Perhaps the people aboard that ship were caught in the same storm which brought us to Malac’ Mor]] .. |
2910 | -[[ – and were brought to this island.]]) .. paragraphdivider() .. |
2911 | -_([[I beg you to be cautious and to build some barracks or sentries around our colony.]])) |
2912 | -.. new_objectives(obj_build_military_buildings), |
2913 | + _([[Greetings Lutius, I don’t want to start a panic, but I found something which gives me a sinking feeling in my stomach and spreads waves of fear in my heart. As I walked down to the southern shore, I found the remains of another ship. I don’t know whether these parts are all that is left of that ship. In any case, these parts do not seem to be old.]]) |
2914 | + .. paragraphdivider() .. |
2915 | + _([[Perhaps the people aboard that ship were caught in the same storm which brought us to Malac’ Mor – and were brought to this island.]]) |
2916 | + .. paragraphdivider() .. |
2917 | + _([[I beg you to be cautious and to build some barracks or sentries around our colony.]])) |
2918 | + .. new_objectives(obj_build_military_buildings) |
2919 | } |
2920 | |
2921 | saledus_2 = { |
2922 | title =_ "Marble on the Mountain", |
2923 | body= saledus(_"Saledus smiles", |
2924 | -_([[Lutius, I’ve got good news for you: As I walked to the east, I found a larger mountain. I am not absolutely sure – a geologist should check if I am right – but I believe we could mine marble from some places on the mountain.]]) |
2925 | -.. paragraphdivider() .. |
2926 | -_([[It would be a good source for bolstering our supply of quality marble, ]] .. |
2927 | -[[beyond the meager quantities available from the quarry. ]] .. |
2928 | -[[Perhaps you were right when you said that this island was like paradise.]]) .. paragraphdivider() .. |
2929 | -_([[Let us expand to that mountain and start mining marble.]])) |
2930 | -.. new_objectives(obj_build_marblemine), |
2931 | + _([[Lutius, I’ve got good news for you: As I walked to the east, I found a larger mountain. I am not absolutely sure – a geologist should check if I am right – but I believe we could mine marble from some places on the mountain.]]) |
2932 | + .. paragraphdivider() .. |
2933 | + _([[It would be a good source for bolstering our supply of quality marble, beyond the meager quantities available from the quarry. Perhaps you were right when you said that this island was like paradise.]]) |
2934 | + .. paragraphdivider() .. |
2935 | + _([[Let us expand to that mountain and start mining marble.]])) |
2936 | + .. new_objectives(obj_build_marblemine) |
2937 | } |
2938 | |
2939 | saledus_3 = { |
2940 | title =_ "Further Mountains", |
2941 | body= saledus(_"Saledus is amazed", |
2942 | -_([[By the Gods, this is an unbelievable stroke of fortune! ]] .. |
2943 | -[[There are two more mountains, and it seems that one has a large quantity of coal and the other of iron ore. ]] .. |
2944 | -[[We should immediately start to build iron ore and coal mines (or at least charcoal kilns), ]] .. |
2945 | -[[smelting works, toolsmithies, armor and weapon smithies.]]) .. paragraphdivider() .. |
2946 | -_([[However: for all these bigger buildings, we need better and more elegant building materials. ]] .. |
2947 | -[[So, let’s build a stonemason, who will cut columns from marble.]]) .. paragraphdivider() .. |
2948 | -_([[After everything, we can now begin to live like we did in Fremil.]])) |
2949 | -.. new_objectives(obj_build_mining_infrastructure), |
2950 | + _([[By the Gods, this is an unbelievable stroke of fortune! There are two more mountains, and it seems that one has a large quantity of coal and the other of iron ore. We should immediately start to build iron ore and coal mines (or at least charcoal kilns), smelting works, toolsmithies, armor and weapon smithies.]]) |
2951 | + .. paragraphdivider() .. |
2952 | + _([[However: for all these bigger buildings, we need better and more elegant building materials. So, let’s build a stonemason, who will cut columns from marble.]]) |
2953 | + .. paragraphdivider() .. |
2954 | + _([[After everything, we can now begin to live like we did in Fremil.]])) |
2955 | + .. new_objectives(obj_build_mining_infrastructure) |
2956 | } |
2957 | |
2958 | amalea_1 = { |
2959 | title =_ "Food for the Miners", |
2960 | - body= amalea(_"Amalea comes in…", |
2961 | -_([[Hi Lutius, I hope you forgive my criticism, but it seems to me as if you forgot something.]]) .. paragraphdivider() .. |
2962 | -_([[It’s nice, and of course a good idea, to build up mines, which will give us a more comfortable life, ]] .. |
2963 | -[[but the people working in the mines are unhappy with the current situation. ]] .. |
2964 | -[[They have to do hard work and have no time for making their own food.]]) .. paragraphdivider() .. |
2965 | -_([[What do you think about helping them out? ]] .. |
2966 | -[[I can’t tell you what we need exactly… but here are my recommendations:]])) |
2967 | -.. new_objectives(obj_build_Food_infrastructure), |
2968 | + body= amalea(_"Amalea enters…", |
2969 | + _([[Hi Lutius, I hope you forgive my criticism, but it seems to me as if you forgot something.]]) |
2970 | + .. paragraphdivider() .. |
2971 | + _([[It’s nice, and of course a good idea, to build up mines, which will give us a more comfortable life, but the people working in the mines are unhappy with the current situation. They have to do hard work and have no time for making their own food.]]) |
2972 | + .. paragraphdivider() .. |
2973 | + _([[What do you think about helping them out? I can’t tell you what we need exactly… but here are my recommendations:]])) |
2974 | + .. new_objectives(obj_build_Food_infrastructure) |
2975 | +} |
2976 | + |
2977 | +amalea_2 = { |
2978 | + title =_ "Our New Tavern", |
2979 | + body= amalea(_"Amalea smiles", |
2980 | + _([[Greetings, my friend, I just visited our new tavern ‘At the palms’. The beer they serve is really tasty. You really should have a drink there, too.]]) |
2981 | + .. paragraphdivider() .. |
2982 | + _([[It is good to see that we have now got a warmer and more familiar environment on our island. Thank you, Lutius.]])) |
2983 | } |
2984 | |
2985 | diary_page_8 = { |
2986 | title =_ "The Barbarians", |
2987 | posy=1, |
2988 | body= lutius(_"Diary of Lutius", |
2989 | -_([[By the Gods! This is absolutely terrible. It seems as if we stand close to a test]] .. |
2990 | -[[ – and it seems as if Saledus was right with his fear concerning the shipwreck he found.]]) .. paragraphdivider() .. |
2991 | -_([[Today, as I walked down to the eastern shore, I got a shock. ]] .. |
2992 | -[[I caught sight of one of those hated, evil, barbarian tribes with whom we have had so many problems before.]]) |
2993 | -.. paragraphdivider() .. |
2994 | -_([[At first, I was naive and hoped that they were peaceful, but as soon as one of them saw me, ]] .. |
2995 | -[[they charged towards me and started attacking me with their throwing-spears. Thanks be to the Gods ]] .. |
2996 | -[[that I was able to flee and hide myself, before retreating back to our colony under cover of darkness.]]) |
2997 | -.. paragraphdivider() .. |
2998 | -_([[Anyway, we must build up stronger military buildings as soon as possible.]])) |
2999 | -.. new_objectives(obj_build_bigger_military_buildings), |
3000 | + _([[By the Gods! This is absolutely terrible. It seems as if we stand close to a test – and it seems as if Saledus was right with his fear concerning the shipwreck he found.]]) |
3001 | + .. paragraphdivider() .. |
3002 | + _([[Today, as I walked down to the eastern shore, I got a shock. I caught sight of one of those hated, evil, barbarian tribes with whom we have had so many problems before.]]) |
3003 | + .. paragraphdivider() .. |
3004 | + _([[At first, I was naive and hoped that they were peaceful, but as soon as one of them saw me, they charged towards me and started attacking me with their throwing-spears. Thanks be to the Gods that I was able to flee and hide myself, before retreating back to our colony under cover of darkness.]]) |
3005 | + .. paragraphdivider() .. |
3006 | + _([[Anyway, we must build up stronger military buildings as soon as possible.]])) |
3007 | + .. new_objectives(obj_build_bigger_military_buildings) |
3008 | } |
3009 | |
3010 | diary_page_9 = { |
3011 | title =_ "Command to Attack", |
3012 | posy=1, |
3013 | body= lutius(_"Diary of Lutius", |
3014 | -_([[That’s good. The first large military building is complete and the mining infrastructure is getting better and better. ]] .. |
3015 | -[[Now we should think about preparing ourselves for battle.]])) |
3016 | -.. new_objectives(obj_remove_the_barbarians), |
3017 | + _([[That’s good. The first large military building is complete and the mining infrastructure is getting better and better. Now we should think about preparing ourselves for battle.]])) |
3018 | + .. new_objectives(obj_remove_the_barbarians) |
3019 | } |
3020 | |
3021 | diary_page_10 = { |
3022 | title =_ "Victory", |
3023 | posy=1, |
3024 | - body= lutius( |
3025 | -_([[Today is a proud day. We have fought for our new home and risen victorious.]]) .. paragraphdivider() .. |
3026 | -_([[There are still a few barbarians hiding on our island, but I am sure that we will find them soon. Every barbarian who doesn’t attack us will be put in a boat with the other peaceful ones, and sent back to their country.]])) |
3027 | -.. objective_text(_"Victory", |
3028 | - _[[You have established a working economy, trained new soldiers and driven the barbarians from the island.]] |
3029 | -), |
3030 | + body= lutius(_"Diary of Lutius", |
3031 | + _([[Today is a proud day. We have fought for our new home and risen victorious.]]) |
3032 | + .. paragraphdivider() .. |
3033 | + _([[There are still a few barbarians hiding on our island, but I am sure that we will find them soon. Every barbarian who doesn’t attack us will be put in a boat with the other peaceful ones, and sent back to their country.]])) |
3034 | + .. objective_text(_"Victory", |
3035 | + _[[You have established a working economy, trained new soldiers and driven the barbarians from the island.]]) |
3036 | } |
3037 | |
3038 | seven_days_later = { |
3039 | @@ -253,16 +245,9 @@ |
3040 | title =_ "A Message", |
3041 | posy=1, |
3042 | body= lutius(_"Diary of Lutius", |
3043 | -_([[Today a pigeon landed on our island. ]] .. |
3044 | -[[It brought a message which fills me with dark thoughts and brings back my fears.]]) .. paragraphdivider() .. |
3045 | -_([[The message was addressed to me, begging me to come back to Fremil. It says that the Empire is at war with the Barbarians. They were attacked from the north by the tribe that I was forbidden to attack. It is clear to me what I must do…]]) .. paragraphdivider() .. |
3046 | -_([[You have completed this mission. You may continue playing if you wish, otherwise move on to the next mission.]])), |
3047 | -} |
3048 | - |
3049 | -amalea_2 = { |
3050 | - title =_ "Our New Tavern", |
3051 | - body= amalea(_"Amalea smiles", |
3052 | -_([[Greetings, my friend, I just visited our new tavern ‘At the palms’. ]] .. |
3053 | -[[The beer they serve is really tasty. You really should have a drink there, too.]]) .. paragraphdivider() .. |
3054 | -_([[It is good to see that we have now got a warmer and more familiar environment on our island. Thank you, Lutius.]])), |
3055 | + _([[Today a pigeon landed on our island. It brought a message which fills me with dark thoughts and brings back my fears.]]) |
3056 | + .. paragraphdivider() .. |
3057 | + _([[The message was addressed to me, begging me to come back to Fremil. It says that the Empire is at war with the Barbarians. They were attacked from the north by the tribe that I was forbidden to attack. It is clear to me what I must do…]]) |
3058 | + .. paragraphdivider() .. |
3059 | + _([[You have completed this mission. You may continue playing if you wish, otherwise move on to the next mission.]])) |
3060 | } |
3061 | |
3062 | === modified file 'maps/MP Scenarios/Island Hopping.wmf/scripting/multiplayer_init.lua' |
3063 | --- maps/MP Scenarios/Island Hopping.wmf/scripting/multiplayer_init.lua 2014-08-26 17:25:00 +0000 |
3064 | +++ maps/MP Scenarios/Island Hopping.wmf/scripting/multiplayer_init.lua 2014-10-31 11:37:25 +0000 |
3065 | @@ -2,8 +2,9 @@ |
3066 | -- Island Hopping Fun Map Scripting |
3067 | -- ================================= |
3068 | include "scripting/coroutine.lua" |
3069 | +include "scripting/formatting.lua" |
3070 | include "scripting/infrastructure.lua" |
3071 | -include "scripting/formatting.lua" |
3072 | +include "scripting/messages.lua" |
3073 | include "scripting/objective_utils.lua" |
3074 | |
3075 | -- ========== |
3076 | @@ -95,7 +96,7 @@ |
3077 | -- Sends a game status message to all players |
3078 | function send_to_all(text) |
3079 | for idx,plr in ipairs(game.players) do |
3080 | - plr:send_message(_ "Game Status", text, {popup=true}) |
3081 | + send_message(plr, _ "Game Status", text, {popup=true}) |
3082 | end |
3083 | end |
3084 | |
3085 | |
3086 | === modified file 'maps/MP Scenarios/Smugglers.wmf/scripting/multiplayer_init.lua' |
3087 | --- maps/MP Scenarios/Smugglers.wmf/scripting/multiplayer_init.lua 2014-08-26 17:25:00 +0000 |
3088 | +++ maps/MP Scenarios/Smugglers.wmf/scripting/multiplayer_init.lua 2014-10-31 11:37:25 +0000 |
3089 | @@ -116,7 +116,7 @@ |
3090 | function setup_statistics_hook() |
3091 | if hooks == nil then hooks = {} end |
3092 | hooks.custom_statistic = { |
3093 | - name = _ "Wares Smuggled", |
3094 | + name = _"Wares Smuggled", |
3095 | pic = "map:genstats_wares_smuggled.png", |
3096 | calculator = function(p) |
3097 | return points[p.team] |
3098 | |
3099 | === modified file 'maps/MP Scenarios/Smugglers.wmf/scripting/smuggling.lua' |
3100 | --- maps/MP Scenarios/Smugglers.wmf/scripting/smuggling.lua 2014-07-27 16:43:42 +0000 |
3101 | +++ maps/MP Scenarios/Smugglers.wmf/scripting/smuggling.lua 2014-10-31 11:37:25 +0000 |
3102 | @@ -2,6 +2,8 @@ |
3103 | -- Smuggling logic |
3104 | -- ======================================================================= |
3105 | |
3106 | +include "scripting/messages.lua" |
3107 | + |
3108 | -- ================= |
3109 | -- Helper functions |
3110 | -- ================= |
3111 | @@ -91,13 +93,13 @@ |
3112 | ) |
3113 | for idx,plr in ipairs(game.players) do |
3114 | if plr.number ~= receiving_wh.owner.number and plr.number ~= sending_wh.owner.number then |
3115 | - plr:send_message(_ "Game Status", non_team_message, {popup=true}) |
3116 | + send_message(plr, _"Game Status", non_team_message, {popup=true}) |
3117 | end |
3118 | end |
3119 | - receiving_wh.owner:send_message(_ "Game Status", |
3120 | + send_message(receiving_wh.owner, _"Game Status", |
3121 | smuggling_route_established_receiver:format(points), {popup=true, field=receiving_wh.fields[1]} |
3122 | ) |
3123 | - sending_wh.owner:send_message(_ "Game Status", |
3124 | + send_message(sending_wh.owner, _"Game Status", |
3125 | smuggling_route_established_sender:format(points), {popup=true, field=sending_wh.fields[1]} |
3126 | ) |
3127 | |
3128 | |
3129 | === modified file 'maps/MP Scenarios/Smugglers.wmf/scripting/texts.lua' |
3130 | --- maps/MP Scenarios/Smugglers.wmf/scripting/texts.lua 2014-07-15 18:30:46 +0000 |
3131 | +++ maps/MP Scenarios/Smugglers.wmf/scripting/texts.lua 2014-10-31 11:37:25 +0000 |
3132 | @@ -4,52 +4,38 @@ |
3133 | welcome_msg = rt( |
3134 | h1(_"Smugglers") .. |
3135 | h2(_"Rules") .. |
3136 | - p(_( |
3137 | -[[Smugglers is a fun map for 4 players. You and your partner start diagonally from each other on a point symmetric island. ]] .. |
3138 | -[[There are plenty of smuggling tunnels on this island, each consisting of a receiving and a sending end. ]]) |
3139 | -.. _( |
3140 | -[[To establish a smuggling route, you need to build a warehouse on a sending/receiving spot ]] .. |
3141 | -[[while your team mate has to build one on the corresponding receiving/sending spot. ]] .. |
3142 | -[[A ware is then transported every 10 seconds. ]]) .. |
3143 | + p(_([[Smugglers is a fun map for 4 players. You and your partner start diagonally from each other on a point symmetric island. There are plenty of smuggling tunnels on this island, each consisting of a receiving and a sending end. ]]) .. |
3144 | + _([[To establish a smuggling route, you need to build a warehouse on a sending/receiving spot while your team mate has to build one on the corresponding receiving/sending spot. A ware is then transported every 10 seconds. ]]) .. |
3145 | -- TRANSLATORS: %s = '<number> points' |
3146 | -_([[For harder to defend smuggling routes, you get 2 or 3 points per ware smuggled. The first team to collect %s wins.]] |
3147 | -)) .. |
3148 | - rt("image=map:send_spot.png", p(_"A sending spot")) .. |
3149 | - rt("image=map:recv_spot.png", p(_"A receiving spot")) .. |
3150 | -rt( |
3151 | - p(_( |
3152 | -[[Remember that the map has rotational symmetry. ]] .. |
3153 | -[[For example, when you have found a spot to the top-left of your headquarters, ]] .. |
3154 | -[[the corresponding spot will be to the bottom-right of the headquarters of your team mate.]]) |
3155 | -)) .. p(_( |
3156 | -[[You can see the number of wares traded at any time in the general statistics menu. Good luck!]] |
3157 | -))) |
3158 | + _([[For harder to defend smuggling routes, you get 2 or 3 points per ware smuggled. The first team to collect %s wins.]])) .. |
3159 | + rt(h2(_"A sending spot")) .. rt("image=map:send_spot.png", p(" ")) .. |
3160 | + rt(h2(_"A receiving spot")) .. rt("image=map:recv_spot.png", p(" ")) .. |
3161 | + rt(h2(_"Notes") .. |
3162 | + p(_([[Remember that the map has rotational symmetry. For example, when you have found a spot to the top-left of your headquarters, the corresponding spot will be to the bottom-right of the headquarters of your team mate.]]))) .. |
3163 | + p(_([[You can see the number of wares traded at any time in the general statistics menu. Good luck!]]))) |
3164 | |
3165 | +smuggling_route_established_other_team = rt( |
3166 | -- TRANSLATORS: the first 2 parameters are player names, the last parameter is '<number> points' |
3167 | -smuggling_route_established_other_team = rt(p(_( |
3168 | -[[A new smuggling route from %1$s to %2$s has been established! ]] .. |
3169 | -[[Every ware they smuggle there is worth %3$s.]] |
3170 | -))) |
3171 | --- TRANSLATORS: %s = '<number> points' |
3172 | -smuggling_route_established_sender = rt(p(_( |
3173 | -[[Your team has established a new smuggling route. You have the sending warehouse. ]] .. |
3174 | -[[Every ware smuggled here is worth %s.]] |
3175 | -))) |
3176 | --- TRANSLATORS: %s = '<number> points' |
3177 | -smuggling_route_established_receiver = rt(p(_( |
3178 | -[[Your team has established a new smuggling route. You have the receiving warehouse. ]] .. |
3179 | -[[Every ware smuggled here is worth %s.]] |
3180 | -))) |
3181 | - |
3182 | + p(_([[A new smuggling route from %1$s to %2$s has been established! Every ware they smuggle there is worth %3$s.]])) |
3183 | + ) |
3184 | + |
3185 | +smuggling_route_established_sender = rt( |
3186 | +-- TRANSLATORS: %s = '<number> points' |
3187 | + p(_([[Your team has established a new smuggling route. You have the sending warehouse. Every ware smuggled here is worth %s.]])) |
3188 | + ) |
3189 | + |
3190 | +smuggling_route_established_receiver = rt( |
3191 | +-- TRANSLATORS: %s = '<number> points' |
3192 | + p(_([[Your team has established a new smuggling route. You have the receiving warehouse. Every ware smuggled here is worth %s.]])) |
3193 | + ) |
3194 | + |
3195 | +smuggling_route_broken = rt( |
3196 | -- TRANSLATORS: the first parameter is '<number> points', the last 2 parameters are player names |
3197 | -smuggling_route_broken = rt(p(_ |
3198 | -[[The smuggling route worth %1$s from %2$s to %3$s has been broken!]] |
3199 | -)) |
3200 | + p(_[[The smuggling route worth %1$s from %2$s to %3$s has been broken!]]) |
3201 | + ) |
3202 | |
3203 | game_over = rt( |
3204 | - h1("Game over!") .. |
3205 | + h1(_"Game over!") .. |
3206 | -- TRANSLATORS: the first 4 parameters are player names, the last parameter is '<number> points' |
3207 | - p(_ |
3208 | -[[Game over! %1$s and %2$s have won the game! %3$s and %4$s only managed to collect %5$s.]] |
3209 | -) |
3210 | -) |
3211 | + p(_[[Game over! %1$s and %2$s have won the game! %3$s and %4$s only managed to collect %5$s.]]) |
3212 | + ) |
3213 | |
3214 | === modified file 'maps/Plateau.wmf/scripting/init.lua' |
3215 | --- maps/Plateau.wmf/scripting/init.lua 2014-05-28 09:15:34 +0000 |
3216 | +++ maps/Plateau.wmf/scripting/init.lua 2014-10-31 11:37:25 +0000 |
3217 | @@ -6,6 +6,7 @@ |
3218 | |
3219 | include "scripting/coroutine.lua" |
3220 | include "scripting/infrastructure.lua" |
3221 | +include "scripting/messages.lua" |
3222 | include "scripting/table.lua" |
3223 | include "scripting/ui.lua" |
3224 | |
3225 | @@ -21,8 +22,8 @@ |
3226 | function mission_thread() |
3227 | sleep(300) |
3228 | |
3229 | - send_msg(briefing_1_the_forbidden_island) |
3230 | - local o = add_obj(obj_forbidden_island) |
3231 | + campaign_message_box(briefing_1_the_forbidden_island) |
3232 | + local o = add_campaign_objective(obj_forbidden_island) |
3233 | |
3234 | local map = wl.Game().map |
3235 | while not p1:seen_field(map:get_field(5,8)) do sleep(2345) end |
3236 | @@ -47,9 +48,9 @@ |
3237 | -- Move to the castle |
3238 | scroll_smoothly_to(castle) |
3239 | |
3240 | - send_msg(briefing_2_found_ancient_castle) |
3241 | + campaign_message_box(briefing_2_found_ancient_castle) |
3242 | o.done = true |
3243 | - o = add_obj(obj_capture_ancient_castle) |
3244 | + o = add_campaign_objective(obj_capture_ancient_castle) |
3245 | |
3246 | -- Wait till we conquered the castle |
3247 | while #p1:get_buildings"castle.atlanteans" < 1 do sleep(2345) end |
3248 | @@ -58,9 +59,9 @@ |
3249 | scroll_smoothly_to(castle) |
3250 | |
3251 | p1:reveal_fields(castle:region(18)) |
3252 | - send_msg(briefing_3_captured_ancient_castle) |
3253 | - local o_erwyn = add_obj(obj_defeat_erwyn) |
3254 | - local o_jomo = add_obj(obj_defeat_jomo) |
3255 | + campaign_message_box(briefing_3_captured_ancient_castle) |
3256 | + local o_erwyn = add_campaign_objective(obj_defeat_erwyn) |
3257 | + local o_jomo = add_campaign_objective(obj_defeat_jomo) |
3258 | |
3259 | sleep(100) |
3260 | p1:hide_fields(castle:region(18)) |
3261 | @@ -68,19 +69,19 @@ |
3262 | -- Function to check for victory over erwyn |
3263 | run(function() |
3264 | while not p2.defeated do sleep(3434) end |
3265 | - send_msg(briefing_erwyn_defeated) |
3266 | + campaign_message_box(briefing_erwyn_defeated) |
3267 | o_erwyn.done = true |
3268 | end) |
3269 | -- Function to check for victory over jomo |
3270 | run(function() |
3271 | while not p3.defeated do sleep(3434) end |
3272 | - send_msg(briefing_jomo_defeated) |
3273 | + campaign_message_box(briefing_jomo_defeated) |
3274 | o_jomo.done = true |
3275 | end) |
3276 | |
3277 | while not (p2.defeated and p3.defeated) do sleep(4325) end |
3278 | |
3279 | - send_msg(last_briefing_victory) |
3280 | + campaign_message_box(last_briefing_victory) |
3281 | end |
3282 | |
3283 | run(mission_thread) |
3284 | |
3285 | === modified file 'maps/Plateau.wmf/scripting/texts.lua' |
3286 | --- maps/Plateau.wmf/scripting/texts.lua 2014-07-15 17:29:28 +0000 |
3287 | +++ maps/Plateau.wmf/scripting/texts.lua 2014-10-31 11:37:25 +0000 |
3288 | @@ -4,34 +4,19 @@ |
3289 | |
3290 | include "scripting/formatting.lua" |
3291 | include "scripting/format_scenario.lua" |
3292 | +include "scripting/messages.lua" |
3293 | |
3294 | --- Removes whitespace at the beginning or the end and translates |
3295 | --- newlines into spaces. |
3296 | -function reflow(s) |
3297 | - s = s:gsub("\r", ""):gsub("\n", " ") |
3298 | - return s:match'^%s*(.*%S)' or '' |
3299 | -end |
3300 | |
3301 | -- =========== |
3302 | -- Objectives |
3303 | -- =========== |
3304 | -function _obj(t) |
3305 | - return |
3306 | - "<rt><p line-spacing=3 font-size=12>" .. reflow(t) .. "</p></rt>" |
3307 | -end |
3308 | -function add_obj(o) |
3309 | - return p1:add_objective(o.name, o.title, _obj(reflow(o.body)), o) |
3310 | -end |
3311 | - |
3312 | obj_forbidden_island = { |
3313 | name = "forbidden_island", |
3314 | title = _"The Forbidden Island", |
3315 | - body = _( |
3316 | -[[Finally! We have just taken our first step towards victory! ]] .. |
3317 | -[[Last night, we landed on the forbidden island and defeated the few guards that were watching the ]] .. |
3318 | -[[north-western part of the island. ]] .. |
3319 | -[[I am quite sure that none of the other warlords has detected us so far, ]] .. |
3320 | -[[so we should keep quiet and build up our infrastructure. Soon we will be strong enough to raid their positions.]]), |
3321 | + number = 1, |
3322 | + body = objective_text(_"The Forbidden Island", |
3323 | + _([[Finally! We have just taken our first step towards victory! Last night, we landed on the forbidden island and defeated the few guards that were watching the north-western part of the island. I am quite sure that none of the other warlords has detected us so far, so we should keep quiet and build up our infrastructure. Soon we will be strong enough to raid their positions.]]) |
3324 | + ), |
3325 | } |
3326 | |
3327 | |
3328 | @@ -39,42 +24,40 @@ |
3329 | obj_capture_ancient_castle = { |
3330 | name = "capture_ancient_castle", |
3331 | title = _"Capture the Ancient Castle", |
3332 | - body = listitem_bullet(_[[Defeat Lanissa and capture the ancient castle.]]), |
3333 | + number = 1, |
3334 | + body = objective_text(_"Capture the Ancient Castle", |
3335 | + listitem_bullet(_[[Defeat Lanissa and capture the ancient castle.]]) |
3336 | + ), |
3337 | } |
3338 | |
3339 | obj_defeat_erwyn = { |
3340 | name = "defeat_erwyn", |
3341 | title = _"Defeat Erwyn", |
3342 | - body = listitem_bullet(_[[Defeat Erwyn. He commands the strongest opposing military force left on this island.]]), |
3343 | + number = 1, |
3344 | + body = objective_text(_"Defeat Erwyn", |
3345 | + listitem_bullet(_[[Defeat Erwyn. He commands the strongest opposing military force left on this island.]]) |
3346 | + ), |
3347 | } |
3348 | obj_defeat_jomo = { |
3349 | name = "defeat_jomo", |
3350 | - title =_ "Defeat Jomo", |
3351 | - body = listitem_bullet(_[[Defeat Jomo. He is taking care of the soldiers’ food supply.]]), |
3352 | + title = _"Defeat Jomo", |
3353 | + number = 1, |
3354 | + body = objective_text(_"Defeat Jomo", |
3355 | + listitem_bullet(_[[Defeat Jomo. He is taking care of the soldiers’ food supply.]]) |
3356 | + ), |
3357 | } |
3358 | |
3359 | -- ===================== |
3360 | -- Messages to the User |
3361 | -- ===================== |
3362 | -function _msg(title, text, ...) |
3363 | - local s = |
3364 | -"<rt><p font-size=24 font-face=DejaVuSerif font-weight=bold font-color=3333FF>" |
3365 | - .. title .. "</p></rt><rt>" .. |
3366 | - "<rt><p line-spacing=3 font-size=12>" .. reflow(text) |
3367 | - objs = {...} |
3368 | - if #objs > 0 then |
3369 | - s = s .. "<br><br></p></rt>" .. rt(h2(_"New Objective")) .. "<rt><p line-spacing=3 font-size=12>" |
3370 | - local i = 1 |
3371 | - while i < #objs do |
3372 | - s = s .. reflow(objs[i].body) .. "<br>" |
3373 | - i = i+1 |
3374 | - end |
3375 | - s = s .. reflow(objs[#objs].body) |
3376 | - end |
3377 | - return s .. "</p></rt>" |
3378 | -end |
3379 | -function send_msg(t) |
3380 | - p1:message_box(t.title, t.body, t) |
3381 | + |
3382 | +function obj_message(title, text) |
3383 | + return |
3384 | + rt("<p font-size=20 font-weight=bold font-face=DejaVuSerif font-color=3333FF>" |
3385 | + .. title .. |
3386 | + "</p><p font-size=10> <br></p>" |
3387 | + .. p(text) |
3388 | + ) |
3389 | end |
3390 | |
3391 | briefing_1_the_forbidden_island = { |
3392 | @@ -82,12 +65,9 @@ |
3393 | width = 400, |
3394 | height = 300, |
3395 | posy = 1, |
3396 | - body = _msg(_"The Forbidden Island", _( |
3397 | -[[Finally! We have just taken our first step towards victory! ]] .. |
3398 | -[[Last night, we landed on the forbidden island and defeated the few guards that were watching the ]] .. |
3399 | -[[north-western part of the island. ]] .. |
3400 | -[[I am quite sure that none of the other warlords has detected us so far, ]] .. |
3401 | -[[so we should keep quiet and build up our infrastructure. Soon we will be strong enough to raid their positions.]])), |
3402 | + body = obj_message(_"The Forbidden Island", |
3403 | + _([[Finally! We have just taken our first step towards victory! Last night, we landed on the forbidden island and defeated the few guards that were watching the north-western part of the island. I am quite sure that none of the other warlords has detected us so far, so we should keep quiet and build up our infrastructure. Soon we will be strong enough to raid their positions.]]) |
3404 | + ), |
3405 | } |
3406 | |
3407 | briefing_2_found_ancient_castle = { |
3408 | @@ -95,14 +75,10 @@ |
3409 | width = 400, |
3410 | height = 300, |
3411 | posy = 1, |
3412 | - body = _msg(_"An Ancient Castle", _( |
3413 | -[[By the Gods! One of our scouts has discovered a mighty castle at the center of the old plateau. ]] .. |
3414 | -[[The castle must be quite old and seems to have been built in a foreign style. ]] .. |
3415 | -[[It’s quite obvious that this is not barbarian craft.]]) .. paragraphdivider() .. |
3416 | -_([[Let’s hope that Lanissa – the warlord holding sway over that castle – has not discovered our movements yet. ]] .. |
3417 | -[[Perhaps we have a chance of conquering that mighty building without a bigger fight! ]] .. |
3418 | -[[However, it is essential that we capture it. It will be the key to our reign over this island!]]), |
3419 | - obj_capture_ancient_castle), |
3420 | + body = obj_message(_"An Ancient Castle", |
3421 | + _([[By the Gods! One of our scouts has discovered a mighty castle at the center of the old plateau. The castle must be quite old and seems to have been built in a foreign style. It’s quite obvious that this is not barbarian craft.]]) .. paragraphdivider() .. |
3422 | + _([[Let’s hope that Lanissa – the warlord holding sway over that castle – has not discovered our movements yet. Perhaps we have a chance of conquering that mighty building without a bigger fight! However, it is essential that we capture it. It will be the key to our reign over this island!]])) |
3423 | + .. new_objectives(obj_capture_ancient_castle) |
3424 | } |
3425 | |
3426 | briefing_3_captured_ancient_castle = { |
3427 | @@ -110,16 +86,10 @@ |
3428 | width = 400, |
3429 | height = 300, |
3430 | posy = 1, |
3431 | - body = _msg(_"Ancient Castle Captured", _( |
3432 | -[[Wonderful! Our troops have finally defeated Lanissa and her soldiers. The ancient castle is ours!]]) .. paragraphdivider() .. |
3433 | -_([[It is amazing how far one can see from the highest tower of the castle. We can watch the whole island. ]] .. |
3434 | -[[So now I wonder why Lanissa did not see us and thus did not prepare. ]] .. |
3435 | -[[Be that as it may, some things will never come to the light of day. ]] .. |
3436 | -[[The only important issue at the moment are the opposing troops still left. ]] .. |
3437 | -[[We have discovered enemy positions held by Erwyn to the north and east of the castle. ]] .. |
3438 | -[[He is known to be a strong warlord and surely commands the strongest warriors. ]] .. |
3439 | -[[In the south, we caught sight of some food infrastructures guarded by Jomo – a younger warlord – ]] .. |
3440 | -[[and we should take care of those infrastructures so we can cut off our enemies’ food supply.]]), obj_defeat_erwyn, obj_defeat_jomo), |
3441 | + body = obj_message(_"Ancient Castle Captured", |
3442 | + _([[Wonderful! Our troops have finally defeated Lanissa and her soldiers. The ancient castle is ours!]]) .. paragraphdivider() .. |
3443 | + _([[It is amazing how far one can see from the highest tower of the castle. We can watch the whole island. So now I wonder why Lanissa did not see us and thus did not prepare. Be that as it may, some things will never come to the light of day. The only important issue at the moment are the opposing troops still left. We have discovered enemy positions held by Erwyn to the north and east of the castle. He is known to be a strong warlord and surely commands the strongest warriors. In the south, we caught sight of some food infrastructures guarded by Jomo – a younger warlord – and we should take care of those infrastructures so we can cut off our enemies’ food supply.]])) |
3444 | + .. new_objectives(obj_defeat_erwyn) .. new_objectives(obj_defeat_jomo) |
3445 | } |
3446 | |
3447 | briefing_erwyn_defeated = { |
3448 | @@ -127,8 +97,8 @@ |
3449 | width = 400, |
3450 | height = 300, |
3451 | posy = 1, |
3452 | - body = _msg( _"Erwyn Defeated", _ |
3453 | -[[Great! Erwyn gave up when he saw his last buildings burning down. That’s one less strong warlord on this island!]]), |
3454 | + body = obj_message(_"Erwyn Defeated", |
3455 | + _([[Great! Erwyn gave up when he saw his last buildings burning down. That’s one less strong warlord on this island!]])) |
3456 | } |
3457 | |
3458 | briefing_jomo_defeated = { |
3459 | @@ -136,8 +106,8 @@ |
3460 | width = 400, |
3461 | height = 300, |
3462 | posy = 1, |
3463 | - body = _msg( _"Jomo Defeated", _ |
3464 | -[[Great! Jomo gave up when he saw his last buildings burning down. That’s one less warlord on this island!]]), |
3465 | + body = obj_message(_"Jomo Defeated", |
3466 | + _([[Great! Jomo gave up when he saw his last buildings burning down. That’s one less warlord on this island!]])) |
3467 | } |
3468 | |
3469 | last_briefing_victory = { |
3470 | @@ -145,8 +115,7 @@ |
3471 | width = 400, |
3472 | height = 300, |
3473 | posy = 1, |
3474 | - body = _msg( _"Victory!", _ |
3475 | -[[Finally! The island is completely ours. Now we just have to defend it better than the warlords did.]] .. paragraphdivider() .. |
3476 | -_"Congratulations! You have mastered this scenario. You may play on if you like!" |
3477 | -), |
3478 | + body = obj_message(_"Victory!", |
3479 | + _([[Finally! The island is completely ours. Now we just have to defend it better than the warlords did.]]) .. paragraphdivider() .. |
3480 | + _("Congratulations! You have mastered this scenario. You may play on if you like!")) |
3481 | } |
3482 | |
3483 | === modified file 'scripting/coroutine.lua' |
3484 | --- scripting/coroutine.lua 2014-10-17 08:38:24 +0000 |
3485 | +++ scripting/coroutine.lua 2014-10-31 11:37:25 +0000 |
3486 | @@ -52,14 +52,15 @@ |
3487 | -- |
3488 | -- This must be called inside a coroutine. This will put the coroutine to |
3489 | -- sleep. Widelands will wake it at the absolute time given. If this time is |
3490 | --- already in the past (that is at < :func:`wl.Game().time`) the |
3491 | --- behaviour is undefined. |
3492 | +-- already in the past (that is at < :func:`wl.Game().time`), the |
3493 | +-- coroutine will be woken at :func:`wl.Game().time instead. |
3494 | -- |
3495 | -- :arg at: when to wake this coroutine |
3496 | -- :type at: :class:`integer` |
3497 | -- |
3498 | -- :returns: :const:`nil` |
3499 | function wake_me(at) |
3500 | + if (at < wl.Game().time) then at = wl.Game().time end |
3501 | coroutine.yield(at) |
3502 | end |
3503 | |
3504 | |
3505 | === modified file 'scripting/format_scenario.lua' |
3506 | --- scripting/format_scenario.lua 2014-10-17 08:38:24 +0000 |
3507 | +++ scripting/format_scenario.lua 2014-10-31 11:37:25 +0000 |
3508 | @@ -57,7 +57,7 @@ |
3509 | -- |
3510 | -- :returns: symbol .. " " .. text .. paragraphdivider() |
3511 | function listitem(symbol, text) |
3512 | - return symbol .. " " .. text .. paragraphdivider() |
3513 | + return symbol .. " " .. text .. listdivider() |
3514 | end |
3515 | |
3516 | -- RST |
3517 | @@ -84,6 +84,19 @@ |
3518 | return listitem("•", text) |
3519 | end |
3520 | |
3521 | + |
3522 | +-- RST |
3523 | +-- .. function:: listdivider() |
3524 | +-- |
3525 | +-- Closes a paragraph and opens a new paragraph. |
3526 | +-- Use this before starting a list when it doesn't create a paragraph. |
3527 | +-- If you want more space, before the list, use paragraphdivider(). |
3528 | +-- |
3529 | +-- :returns: <br></p><p font-size=4><br></p><p line-spacing=3 font-size=12> |
3530 | +function listdivider() |
3531 | + return ("<br></p><p font-size=4><br></p><p line-spacing=3 font-size=12>") |
3532 | +end |
3533 | + |
3534 | -- RST |
3535 | -- .. function:: paragraphdivider() |
3536 | -- |
3537 | |
3538 | === modified file 'scripting/messages.lua' |
3539 | --- scripting/messages.lua 2014-10-17 08:38:24 +0000 |
3540 | +++ scripting/messages.lua 2014-10-31 11:37:25 +0000 |
3541 | @@ -26,7 +26,7 @@ |
3542 | -- |
3543 | function send_message(player, title, body, parameters) |
3544 | if (parameters["popup"]) then |
3545 | - while (wl.ui.MapView().is_building_road) do sleep(2000) end |
3546 | + wait_for_roadbuilding() |
3547 | end |
3548 | player:send_message(title, body, parameters) |
3549 | end |
3550 | @@ -45,7 +45,7 @@ |
3551 | -- for wl.game.Player, e.g. { field = f }. |
3552 | -- |
3553 | function message_box(player, title, body, parameters) |
3554 | - while (wl.ui.MapView().is_building_road) do sleep(2000) end |
3555 | + wait_for_roadbuilding() |
3556 | -- In case the user input was forbidden for some reason, allow him to close the message box. |
3557 | -- While the message box is shown, the user cannot do anything else anyway. |
3558 | local user_input = wl.ui.get_user_input_allowed() |
3559 | @@ -117,15 +117,15 @@ |
3560 | local way, x, y |
3561 | |
3562 | if message.field then |
3563 | - -- This is necessary. Otherwise, we would scroll and then wait until the road is finished. |
3564 | - -- In this time, could user can scroll elsewhere, giving weird results. |
3565 | - if not message.show_instantly then |
3566 | - while (wl.ui.MapView().is_building_road) do sleep(2000) end |
3567 | - end |
3568 | if message.jump_to_field then |
3569 | x,y = wl.ui.MapView().viewpoint_x, wl.ui.MapView().viewpoint_y |
3570 | -- player:message_box jumps, so nothing to do for us |
3571 | else |
3572 | + -- This is necessary. Otherwise, we would scroll and then wait until the road is finished. |
3573 | + -- In this time, could user can scroll elsewhere, giving weird results. |
3574 | + if not message.show_instantly then |
3575 | + wait_for_roadbuilding() |
3576 | + end |
3577 | way = scroll_smoothly_to(message.field) |
3578 | end |
3579 | end |
3580 | |
3581 | === modified file 'scripting/ui.lua' |
3582 | --- scripting/ui.lua 2014-10-17 08:38:24 +0000 |
3583 | +++ scripting/ui.lua 2014-10-31 11:37:25 +0000 |
3584 | @@ -355,3 +355,30 @@ |
3585 | v:close() |
3586 | end |
3587 | end |
3588 | + |
3589 | + |
3590 | +-- RST |
3591 | +-- .. function:: wait_for_roadbuilding() |
3592 | +-- |
3593 | +-- Sleeps while player is in roadbuilding mode. |
3594 | +-- |
3595 | +-- :returns: :const:`nil` |
3596 | +-- |
3597 | +function wait_for_roadbuilding() |
3598 | + while (wl.ui.MapView().is_building_road) do sleep(2000) end |
3599 | +end |
3600 | + |
3601 | + |
3602 | +-- RST |
3603 | +-- .. function:: wait_for_roadbuilding_and_scroll(f[, T = 1000]) |
3604 | +-- |
3605 | +-- Sleeps while player is in roadbuilding mode, then calls |
3606 | +-- scroll_smoothly_to(f[, T = 1000]). |
3607 | +-- |
3608 | +-- :returns: an :class:`array` with the intermediate points that were |
3609 | +-- targeted |
3610 | +-- |
3611 | +function wait_for_roadbuilding_and_scroll(f, g_T) |
3612 | + wait_for_roadbuilding() |
3613 | + return scroll_smoothly_to(f, g_T) |
3614 | +end |
3615 | |
3616 | === modified file 'scripting/win_condition_functions.lua' |
3617 | --- scripting/win_condition_functions.lua 2014-06-05 10:04:20 +0000 |
3618 | +++ scripting/win_condition_functions.lua 2014-10-31 11:37:25 +0000 |
3619 | @@ -1,3 +1,5 @@ |
3620 | +include "scripting/messages.lua" |
3621 | + |
3622 | -- RST |
3623 | -- win_condition_functions.lua |
3624 | -- --------------------------- |
3625 | @@ -101,10 +103,11 @@ |
3626 | -- broadcast a message to all players using |
3627 | -- :meth:`~wl.game.Player.send_message`. All parameters are passed |
3628 | -- literally. |
3629 | +-- Message is delayed while player is in road building mode. |
3630 | function broadcast(plrs, header, msg, goptions) |
3631 | local options = goptions or {} |
3632 | for idx, p in ipairs(plrs) do |
3633 | - p:send_message(header, msg, options) |
3634 | + send_message(p, header, msg, options) |
3635 | end |
3636 | end |
3637 | |
3638 | |
3639 | === modified file 'scripting/win_conditions/02_collectors.lua' |
3640 | --- scripting/win_conditions/02_collectors.lua 2014-07-15 18:30:46 +0000 |
3641 | +++ scripting/win_conditions/02_collectors.lua 2014-10-31 11:37:25 +0000 |
3642 | @@ -3,8 +3,9 @@ |
3643 | -- ======================================================================= |
3644 | |
3645 | include "scripting/coroutine.lua" -- for sleep |
3646 | +include "scripting/messages.lua" |
3647 | +include "scripting/formatting.lua" |
3648 | include "scripting/table.lua" |
3649 | -include "scripting/formatting.lua" |
3650 | include "scripting/win_condition_functions.lua" |
3651 | |
3652 | set_textdomain("win_conditions") |
3653 | @@ -138,7 +139,7 @@ |
3654 | end |
3655 | |
3656 | for idx, plr in ipairs(plrs) do |
3657 | - plr:send_message(game_status.title, "<rt>" .. msg .. "</rt>") |
3658 | + send_message(plr, game_status.title, "<rt>" .. msg .. "</rt>", {popup = true}) |
3659 | end |
3660 | end |
3661 | |
3662 | |
3663 | === modified file 'scripting/win_conditions/03_territorial_lord.lua' |
3664 | --- scripting/win_conditions/03_territorial_lord.lua 2014-06-05 10:04:20 +0000 |
3665 | +++ scripting/win_conditions/03_territorial_lord.lua 2014-10-31 11:37:25 +0000 |
3666 | @@ -3,6 +3,7 @@ |
3667 | -- ======================================================================= |
3668 | |
3669 | include "scripting/coroutine.lua" -- for sleep |
3670 | +include "scripting/messages.lua" |
3671 | include "scripting/table.lua" |
3672 | include "scripting/win_condition_functions.lua" |
3673 | |
3674 | @@ -167,9 +168,9 @@ |
3675 | for idx, p in ipairs(plrs) do |
3676 | if candidateisteam and currentcandidate == p.team |
3677 | or not candidateisteam and currentcandidate == p.name then |
3678 | - p:send_message(game_status.title, msg2) |
3679 | + send_message(p, game_status.title, msg2, {popup = true}) |
3680 | else |
3681 | - p:send_message(game_status.title, msg1) |
3682 | + send_message(p, game_status.title, msg1, {popup = true}) |
3683 | end |
3684 | end |
3685 | end |
3686 | |
3687 | === modified file 'scripting/win_conditions/03_territorial_time.lua' |
3688 | --- scripting/win_conditions/03_territorial_time.lua 2014-06-05 10:04:20 +0000 |
3689 | +++ scripting/win_conditions/03_territorial_time.lua 2014-10-31 11:37:25 +0000 |
3690 | @@ -3,6 +3,7 @@ |
3691 | -- ======================================================================= |
3692 | |
3693 | include "scripting/coroutine.lua" -- for sleep |
3694 | +include "scripting/messages.lua" |
3695 | include "scripting/table.lua" |
3696 | include "scripting/win_condition_functions.lua" |
3697 | |
3698 | @@ -231,7 +232,7 @@ |
3699 | msg = msg .. "\n\n" |
3700 | msg = msg .. game_status.body |
3701 | msg = msg .. _status(points, "has") |
3702 | - p:send_message(game_status.title, msg, {popup = true}) |
3703 | + send_message(p, game_status.title, msg, {popup = true}) |
3704 | end |
3705 | end |
3706 |
This will likely conflict with wl-zockers changes. Is he aware of this branch?