Merge lp:~widelands-dev/widelands/fh1-tutorial2 into lp:widelands

Proposed by GunChleoc
Status: Merged
Merged at revision: 8558
Proposed branch: lp:~widelands-dev/widelands/fh1-tutorial2
Merge into: lp:widelands
Diff against target: 277 lines (+64/-70)
1 file modified
data/campaigns/tutorial02_warfare.wmf/scripting/texts.lua (+64/-70)
To merge this branch: bzr merge lp:~widelands-dev/widelands/fh1-tutorial2
Reviewer Review Type Date Requested Status
kaputtnik (community) testing Approve
Notabilis Approve
Review via email: mp+336055@code.launchpad.net

Commit message

Converted Tutorial 2 to new font renderer.

To post a comment you must log in.
Revision history for this message
GunChleoc (gunchleoc) wrote :

1 of the list bullets should be an arrow.

Revision history for this message
Notabilis (notabilis27) wrote :

Diff looks good. Testing with the modified file in trunk (and an added arrow) worked fine.

review: Approve
Revision history for this message
bunnybot (widelandsofficial) wrote :

Continuous integration builds have changed state:

Travis build 3042. State: failed. Details: https://travis-ci.org/widelands/widelands/builds/328256837.
Appveyor build 2850. State: failed. Details: https://ci.appveyor.com/project/widelands-dev/widelands/build/_widelands_dev_widelands_fh1_tutorial2-2850.

Revision history for this message
kaputtnik (franku) wrote :

LGTM :-)

Anything against merging this?

review: Approve (testing)
Revision history for this message
GunChleoc (gunchleoc) wrote :

Thanks for the review :)

@bunnybot merge

Revision history for this message
bunnybot (widelandsofficial) wrote :

Continuous integration builds have changed state:

Travis build 3061. State: errored. Details: https://travis-ci.org/widelands/widelands/builds/329616067.
Appveyor build 2868. State: success. Details: https://ci.appveyor.com/project/widelands-dev/widelands/build/_widelands_dev_widelands_fh1_tutorial2-2868.

Revision history for this message
bunnybot (widelandsofficial) wrote :

Refusing to merge, since Travis is not green. Use @bunnybot merge force for merging anyways.

Travis build 3061. State: errored. Details: https://travis-ci.org/widelands/widelands/builds/329616067.

Revision history for this message
kaputtnik (franku) wrote :

now forcing

@bunnybot merge force

Revision history for this message
bunnybot (widelandsofficial) wrote :

Continuous integration builds have changed state:

Travis build 3071. State: passed. Details: https://travis-ci.org/widelands/widelands/builds/330741796.
Appveyor build 2878. State: success. Details: https://ci.appveyor.com/project/widelands-dev/widelands/build/_widelands_dev_widelands_fh1_tutorial2-2878.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'data/campaigns/tutorial02_warfare.wmf/scripting/texts.lua'
--- data/campaigns/tutorial02_warfare.wmf/scripting/texts.lua 2017-01-06 14:17:42 +0000
+++ data/campaigns/tutorial02_warfare.wmf/scripting/texts.lua 2018-01-19 09:25:30 +0000
@@ -6,8 +6,7 @@
6-- Some formating functions6-- Some formating functions
7-- =========================7-- =========================
88
9include "scripting/formatting.lua"9include "scripting/richtext_scenarios.lua"
10include "scripting/format_scenario.lua"
1110
12-- We want the soldier here so we can get some actual stats.11-- We want the soldier here so we can get some actual stats.
13local tribe = wl.Game():get_tribe_description("barbarians")12local tribe = wl.Game():get_tribe_description("barbarians")
@@ -16,13 +15,22 @@
16local empire_tribe = wl.Game():get_tribe_description("empire")15local empire_tribe = wl.Game():get_tribe_description("empire")
17local empire_soldier = wl.Game():get_worker_description(empire_tribe.soldier)16local empire_soldier = wl.Game():get_worker_description(empire_tribe.soldier)
1817
18function h2_image(imagepath, text)
19 return
20 div("width=100%",
21 div(p(vspace(12) .. img(imagepath) .. space(6))) ..
22 div(p(space(6))) ..
23 div("width=*", h2(text))
24 )
25end
26
19-- =============27-- =============
20-- Texts below28-- Texts below
21-- =============29-- =============
2230
23introduction = {31introduction = {
24 title = _"Introduction",32 title = _"Introduction",
25 body = rt(33 body = (
26 h1(_"Soldiers, Training and Warfare") ..34 h1(_"Soldiers, Training and Warfare") ..
27 p(_[[In this scenario, I’m going to tell you about soldiers, their training and their profession: warfare. Although Widelands is about building up, not burning down, there is an enemy you sometimes have to defeat. Yet warfare is mainly focused on economics, not on military strategies, and its mechanics deserve explanation.]]) ..35 p(_[[In this scenario, I’m going to tell you about soldiers, their training and their profession: warfare. Although Widelands is about building up, not burning down, there is an enemy you sometimes have to defeat. Yet warfare is mainly focused on economics, not on military strategies, and its mechanics deserve explanation.]]) ..
28 p(_[[I’ve set up a small village that contains the most important buildings. You also have enough wares, so you do not have to take care of your weapons production. In a real game, you will not have this luxury.]])36 p(_[[I’ve set up a small village that contains the most important buildings. You also have enough wares, so you do not have to take care of your weapons production. In a real game, you will not have this luxury.]])
@@ -33,91 +41,84 @@
33abilities = {41abilities = {
34 position = "topright",42 position = "topright",
35 title = _"Soldiers’ abilities",43 title = _"Soldiers’ abilities",
36 body = rt(44 body = (
37 p(_[[New soldiers are created differently from normal workers: recruits will walk from a warehouse (or your headquarters) to the barracks where they will receive some basic training and become soldiers. Basic Barbarian soldiers do not use armor, they only need an ax.]]) ..45 p(_[[New soldiers are created differently from normal workers: recruits will walk from a warehouse (or your headquarters) to the barracks where they will receive some basic training and become soldiers. Basic Barbarian soldiers do not use armor, they only need an ax.]]) ..
38 p(_[[Take a look at the soldiers that are on their way to our military buildings. They look different from normal workers: they have a health bar over their head that displays their remaining health, and they have four symbols, which symbolize the individual soldier’s current levels in the four different categories: health, attack, defense and evade.]]) ..46 p(_[[Take a look at the soldiers that are on their way to our military buildings. They look different from normal workers: they have a health bar over their head that displays their remaining health, and they have four symbols, which symbolize the individual soldier’s current levels in the four different categories: health, attack, defense and evade.]]) ..
39 -- TRANSLATORS: the current stats are: 3 health, 5 attack, 0 defense, 2 evade.47 -- TRANSLATORS: the current stats are: 3 health, 5 attack, 0 defense, 2 evade.
40 p((_[[If a Barbarian soldier is fully trained, he has level %1% health, level %2% attack, level %3% defense and level %4% evade. This is one fearsome warrior then! The individual abilities have the following meaning:]]):bformat(soldier.max_health_level, soldier.max_attack_level, soldier.max_defense_level, soldier.max_evade_level))48 p((_[[If a Barbarian soldier is fully trained, he has level %1% health, level %2% attack, level %3% defense and level %4% evade. This is one fearsome warrior then! The individual abilities have the following meaning:]]):bformat(soldier.max_health_level, soldier.max_attack_level, soldier.max_defense_level, soldier.max_evade_level)) ..
41 ) ..49 h2_image("tribes/workers/barbarians/soldier/health_level0.png", _"Health:") ..
42 rt("image=tribes/workers/barbarians/soldier/health_level0.png", h2(_"Health:")) ..50 -- TRANSLATORS: the current stats are: 13000 health, 2800 health gain.
43 -- TRANSLATORS: the current stats are: 13000 health, 2800 health gain.51 p(_[[The total life of a soldier. A Barbarian soldier starts with %1% health, and he will gain %2% health with each health level.]]):bformat(soldier.base_health, soldier.health_incr_per_level) ..
44 rt(p((_[[The total life of a soldier. A Barbarian soldier starts with %1% health, and he will gain %2% health with each health level.]]):bformat(soldier.base_health, soldier.health_incr_per_level))) ..52 h2_image("tribes/workers/barbarians/soldier/attack_level0.png", _"Attack:") ..
45 rt("image=tribes/workers/barbarians/soldier/attack_level0.png", h2(_"Attack:")) ..53 -- TRANSLATORS: the current stats are: 1400 damage, gains 850 damage points.
46 -- TRANSLATORS: the current stats are: 1400 damage, gains 850 damage points.54 p(_[[The amount of damage a soldier will inflict on the enemy when an attack is successful. A Barbarian soldier with attack level 0 inflicts ~%1% points of health damage when he succeeds in hitting an enemy. For each attack level, he gains %2% damage points.]]):bformat(soldier.base_min_attack + (soldier.base_max_attack - soldier.base_min_attack) / 2, soldier.attack_incr_per_level) ..
47 rt(p(_[[The amount of damage a soldier will inflict on the enemy when an attack is successful. A Barbarian soldier with attack level 0 inflicts ~%1% points of health damage when he succeeds in hitting an enemy. For each attack level, he gains %2% damage points.]]):bformat(soldier.base_min_attack + (soldier.base_max_attack - soldier.base_min_attack) / 2, soldier.attack_incr_per_level)) ..55 -- The Atlanteans' image, because the Barbarian one has a white background
48 -- The Atlanteans' image, because the Barbarian one has a white background56 h2_image("tribes/workers/atlanteans/soldier/defense_level0.png", _"Defense:") ..
49 rt("image=tribes/workers/atlanteans/soldier/defense_level0.png", h2(_"Defense:")) ..57 -- TRANSLATORS: the current stats are: 3%. The calculated health value is 3395
50 -- TRANSLATORS: the current stats are: 3%. The calculated health value is 339558 -- TRANSLATORS: The last two %% after the placeholder are the percent symbol.
51 -- TRANSLATORS: The last two %% after the placeholder are the percent symbol.59 p(_[[The defense is the percentage that is subtracted from the attack value. The Barbarians cannot train in this skill and therefore have always defense level 0, which means that the damage is always reduced by %1%%%. If an attacker with an attack value of 3500 points hits a Barbarian soldier, the Barbarian will lose 3500·%2%%% = %3% health.]]):bformat(soldier.base_defense, (100 - soldier.base_defense), 3500 * (100 - soldier.base_defense) / 100) ..
52 rt(p(_[[The defense is the percentage that is subtracted from the attack value. The Barbarians cannot train in this skill and therefore have always defense level 0, which means that the damage is always reduced by %1%%%. If an attacker with an attack value of 3500 points hits a Barbarian soldier, the Barbarian will lose 3500·%2%%% = %3% health.]]):bformat(soldier.base_defense, (100 - soldier.base_defense), 3500 * (100 - soldier.base_defense) / 100)) ..60 h2_image("tribes/workers/barbarians/soldier/evade_level0.png", _"Evade:") ..
53 rt("image=tribes/workers/barbarians/soldier/evade_level0.png", h2(_"Evade:")) ..61 -- TRANSLATORS: the current stats are: 25% evade, increases in steps of 15%.
54 -- TRANSLATORS: the current stats are: 25% evade, increases in steps of 15%.62 -- TRANSLATORS: The last two %% after the placeholder are the percent symbol.
55 -- TRANSLATORS: The last two %% after the placeholder are the percent symbol.63 p(_[[Evade is the chance that the soldier is able to dodge an attack. A level 0 Barbarian has a %1%%% chance to evade an attack, and this increases in steps of %2%%% for each level.]]):bformat(soldier.base_evade, soldier.evade_incr_per_level))
56 rt(p(_[[Evade is the chance that the soldier is able to dodge an attack. A level 0 Barbarian has a %1%%% chance to evade an attack, and this increases in steps of %2%%% for each level.]]):bformat(soldier.base_evade, soldier.evade_incr_per_level))
57}64}
5865
59battlearena1 = {66battlearena1 = {
60 position = "topright",67 position = "topright",
61 title = _"The Battle Arena",68 title = _"The Battle Arena",
62 body = rt(69 body = (
63 p(_[[Now I have talked about training and levels. Let me elaborate on that.]]) ..70 p(_[[Now I have talked about training and levels. Let me elaborate on that.]]) ..
64 p(_[[A newly created soldier has no experience and is not very good at fighting. To make him stronger, you can build training sites.]]) ..71 p(_[[A newly created soldier has no experience and is not very good at fighting. To make him stronger, you can build training sites.]]) ..
65 p(_[[One of these training sites is the battle arena. It is a big and expensive building, and it trains soldiers in evade. Since soldiers get very hungry during their workout, this building needs a lot of food and strong beer. In a real game, you should have a good infrastructure before you build it.]]) ..72 p(_[[One of these training sites is the battle arena. It is a big and expensive building, and it trains soldiers in evade. Since soldiers get very hungry during their workout, this building needs a lot of food and strong beer. In a real game, you should have a good infrastructure before you build it.]]) ..
66 paragraphdivider() ..73 li(_[[To see evade training in action, build a battle arena.]]) ..
67 listitem_bullet(_[[To see evade training in action, build a battle arena.]]) ..
68 "</p><p font-size=8><br></p>" ..
69 p(_[[While we’re waiting for the battle arena, you’ll probably notice some soldiers walking around. They are automatically exchanged from time to time. I’ll teach you about that later.]])74 p(_[[While we’re waiting for the battle arena, you’ll probably notice some soldiers walking around. They are automatically exchanged from time to time. I’ll teach you about that later.]])
70 ),75 ),
71 h = 400,76 h = 400,
72 obj_name = "build_battlearena",77 obj_name = "build_battlearena",
73 obj_title = _"Build a battle arena",78 obj_title = _"Build a battle arena",
74 obj_body = rt(79 obj_body = (
75 paragraphdivider() ..80 li(_[[Build a battle arena. It is a big building.]]) ..
76 listitem_bullet(_[[Build a battle arena. It is a big building.]]) ..81 li_arrow(_[[Since the construction will take some time, you can change the game speed using Page Up and Page Down.]])
77 listitem_arrow(_[[Since the construction will take some time, you can change the game speed using Page Up and Page Down.]])
78 )82 )
79}83}
8084
81battlearena2 = {85battlearena2 = {
82 position = "topright",86 position = "topright",
83 title = _"The Battle Arena",87 title = _"The Battle Arena",
84 body = rt(88 body =
85 h1(_"The Battle Arena Has Been Constructed") ..89 h1(_"The Battle Arena Has Been Constructed") ..
86 p(_[[Very good. Our battle arena has been finished, and the soldiers are already walking towards it.]]) ..90 p(_[[Very good. Our battle arena has been finished, and the soldiers are already walking towards it.]]) ..
87 -- Not perfectly correct (some training steps need either bread or meat), but we do not want to confuse new players91 -- Not perfectly correct (some training steps need either bread or meat), but we do not want to confuse new players
88 p(_[[The needed wares are also delivered there. For successful training, you need pitta bread and strong beer, as well as either fish or meat.]] .. " " ..92 p(_[[The needed wares are also delivered there. For successful training, you need pitta bread and strong beer, as well as either fish or meat.]] .. " " ..
89 _[[For more information, you can have a look at the building’s help window, accessible via the question mark in every building’s window.]]) ..93 _[[For more information, you can have a look at the building’s help window, accessible via the question mark in every building’s window.]]) ..
90 p(_[[To learn how far your soldiers have progressed in their training, you can have a look at their icons. They are modified by red dots:]])94 p(_[[To learn how far your soldiers have progressed in their training, you can have a look at their icons. They are modified by red dots:]]) ..
91 ) ..95 li_image("tribes/workers/barbarians/soldier/evade_level0.png", _[[No red dots means that the soldier is not trained, so he has level 0. All your new recruits have this.]]) ..
92 rt("image=tribes/workers/barbarians/soldier/evade_level0.png", p(_[[No red dots means that the soldier is not trained, so he has level 0. All your new recruits have this.]])) ..96 li_image("tribes/workers/barbarians/soldier/evade_level1.png", _[[With every successful training step, your soldier becomes stronger. This is indicated by a red dot. This soldier is on level 1 in evade training.]]) ..
93 rt("image=tribes/workers/barbarians/soldier/evade_level1.png", p(_[[With every successful training step, your soldier becomes stronger. This is indicated by a red dot. This soldier is on level 1 in evade training.]])) ..97 li_image("tribes/workers/barbarians/soldier/evade_level2.png", _[[When your soldier has reached the highest possible level (in this case level 2), this is indicated by a white background color.]]),
94 rt("image=tribes/workers/barbarians/soldier/evade_level2.png", p(_[[When your soldier has reached the highest possible level (in this case level 2), this is indicated by a white background color.]])),
95 h = 45098 h = 450
96}99}
97100
98trainingcamp1 = {101trainingcamp1 = {
99 position = "topright",102 position = "topright",
100 title = _"The Training Camp",103 title = _"The Training Camp",
101 body = rt(104 body = (
102 h1(_"The Training Camp") ..105 h1(_"The Training Camp") ..
103 p(_[[There is a second training site: the training camp. It is a big building too, and to complement the battle arena, it trains attack and health (remember, the Barbarian soldiers cannot be trained in defense).]]) ..106 p(_[[There is a second training site: the training camp. It is a big building too, and to complement the battle arena, it trains attack and health (remember, the Barbarian soldiers cannot be trained in defense).]]) ..
104 paragraphdivider() ..107 li(_[[Build a training camp.]])
105 listitem_bullet(_[[Build a training camp.]])
106 ),108 ),
107 h = 300,109 h = 300,
108 obj_name = "build_trainingcamp",110 obj_name = "build_trainingcamp",
109 obj_title = _"Build a training camp",111 obj_title = _"Build a training camp",
110 obj_body = rt(112 obj_body = (
111 p(_[[The battle arena only trains the soldiers in evade. To get the strongest possible soldier, you also need to build a training camp, which trains them in attack and health.]]) ..113 p(_[[The battle arena only trains the soldiers in evade. To get the strongest possible soldier, you also need to build a training camp, which trains them in attack and health.]]) ..
112 paragraphdivider() ..114 li(_[[Build a training camp.]])
113 listitem_bullet(_[[Build a training camp.]])
114 )115 )
115}116}
116117
117trainingcamp2 = {118trainingcamp2 = {
118 position = "topright",119 position = "topright",
119 title = _"The Training Camp",120 title = _"The Training Camp",
120 body = rt(121 body = (
121 p(_[[Great, our training camp has now been finished, too. Now nothing will hinder us from getting the strongest warriors the world has ever seen.]]) ..122 p(_[[Great, our training camp has now been finished, too. Now nothing will hinder us from getting the strongest warriors the world has ever seen.]]) ..
122 p(_[[To train in the training camp, our soldiers need food like in the battle arena, but no strong beer. Instead, they need different axes for attack training and helmets for health training.]]) ..123 p(_[[To train in the training camp, our soldiers need food like in the battle arena, but no strong beer. Instead, they need different axes for attack training and helmets for health training.]]) ..
123 p(_[[This equipment is produced in smithies out of coal, iron, and sometimes gold. You will learn more about this in the second scenario of the Barbarian campaign.]]) ..124 p(_[[This equipment is produced in smithies out of coal, iron, and sometimes gold. You will learn more about this in the second scenario of the Barbarian campaign.]]) ..
@@ -128,7 +129,7 @@
128heroes_rookies = {129heroes_rookies = {
129 position = "topright",130 position = "topright",
130 title = _"Heroes and Rookies",131 title = _"Heroes and Rookies",
131 body = rt(132 body = (
132 h1(_"Heroes and Rookies") ..133 h1(_"Heroes and Rookies") ..
133 p(_[[While our soldiers are training, let me tell you what we can do with them.]]) ..134 p(_[[While our soldiers are training, let me tell you what we can do with them.]]) ..
134 p(_[[In every military building, you can set the preference for heroes (trained soldiers) or rookies. From time to time, a soldier will walk out of the building and be replaced by a stronger/weaker one automatically – this is what you saw earlier.]]) ..135 p(_[[In every military building, you can set the preference for heroes (trained soldiers) or rookies. From time to time, a soldier will walk out of the building and be replaced by a stronger/weaker one automatically – this is what you saw earlier.]]) ..
@@ -140,58 +141,53 @@
140soldier_capacity = {141soldier_capacity = {
141 position = "topright",142 position = "topright",
142 title = _"Soldier capacity",143 title = _"Soldier capacity",
143 body = rt(144 body = (
144 h1(_"Adjusting the number of soldiers") ..145 h1(_"Adjusting the number of soldiers") ..
145 p(_[[There is another way how you can control the strength of a military building: by the number of soldiers stationed there. Just click on the arrow buttons to decrease or increase the desired number of soldiers. Every building has a maximum capacity. In case of the barrier, it is five, for example.]]) ..146 p(_[[There is another way how you can control the strength of a military building: by the number of soldiers stationed there. Just click on the arrow buttons to decrease or increase the desired number of soldiers. Every building has a maximum capacity. In case of the barrier, it is five, for example.]]) ..
146 p(_[[If you wish to send a certain soldier away, you can simply click on it. It will then be replaced by another soldier.]]) ..147 p(_[[If you wish to send a certain soldier away, you can simply click on it. It will then be replaced by another soldier.]]) ..
147 p(_[[Let me also describe what the numbers in the statistics string mean. This string can contain up to three numbers, e.g. ‘1 (+5) soldier (+2)’.]]) ..148 p(_[[Let me also describe what the numbers in the statistics string mean. This string can contain up to three numbers, e.g. ‘1 (+5) soldier (+2)’.]]) ..
148 paragraphdivider() ..149 li(_[[The first number describes how many soldiers are currently in this building. In this example, only one soldier is left inside (each military building is always guarded by at least one soldier).]]) ..
149 listitem_bullet(_[[The first number describes how many soldiers are currently in this building. In this example, only one soldier is left inside (each military building is always guarded by at least one soldier).]]) ..150 li(_[[The second number tells you how many additional soldiers reside in this building, but are currently outside. The five soldiers may be attacking an enemy. They will return when they have been successful.]]) ..
150 listitem_bullet(_[[The second number tells you how many additional soldiers reside in this building, but are currently outside. The five soldiers may be attacking an enemy. They will return when they have been successful.]]) ..151 li(_[[The third number indicates the missing soldiers. From the eight soldiers (1 + 5 + 2) you wish to have here, two may have died. They will be replaced by new soldiers from your warehouse, if possible.]])
151 listitem_bullet(_[[The third number indicates the missing soldiers. From the eight soldiers (1 + 5 + 2) you wish to have here, two may have died. They will be replaced by new soldiers from your warehouse, if possible.]])
152 )152 )
153}153}
154154
155dismantle = {155dismantle = {
156 position = "topright",156 position = "topright",
157 title = _"Dismantle your sentry",157 title = _"Dismantle your sentry",
158 body = rt(158 body = (
159 h1(_"Dismantling military buildings") ..159 h1(_"Dismantling military buildings") ..
160 p(_[[You can only reduce the number of soldiers to one. The last soldier of a building will never come out (unless this building is attacked). If you want to have your soldier elsewhere, you will have to dismantle or burn down the building.]]) ..160 p(_[[You can only reduce the number of soldiers to one. The last soldier of a building will never come out (unless this building is attacked). If you want to have your soldier elsewhere, you will have to dismantle or burn down the building.]]) ..
161 p(_[[However, destroying a military building is always linked with a risk: the land is still yours, but it is no longer protected. Any enemy that builds his own military sites can take over that land without a fight, causing your buildings to burst into flames. Furthermore, some parts of the land can now be hidden under the fog of war. You should therefore only dismantle military buildings deep inside your territory where you are safe from enemies.]]) ..161 p(_[[However, destroying a military building is always linked with a risk: the land is still yours, but it is no longer protected. Any enemy that builds his own military sites can take over that land without a fight, causing your buildings to burst into flames. Furthermore, some parts of the land can now be hidden under the fog of war. You should therefore only dismantle military buildings deep inside your territory where you are safe from enemies.]]) ..
162 p(_[[Have you seen your sentry? Since it cannot contain many soldiers and is next to a stronger barrier, it is rather useless.]]) ..162 p(_[[Have you seen your sentry? Since it cannot contain many soldiers and is next to a stronger barrier, it is rather useless.]]) ..
163 paragraphdivider() ..
164 -- TRANSLATORS: 'it' refers to the Barbarian sentry163 -- TRANSLATORS: 'it' refers to the Barbarian sentry
165 listitem_bullet(_[[Dismantle it.]])164 li(_[[Dismantle it.]]) ..
166 ) ..165 p(_[[You can also use this opportunity to become familiar with the other options: the heroes/rookies preference and the capacity.]])),
167 rt(p(_[[You can also use this opportunity to become familiar with the other options: the heroes/rookies preference and the capacity.]])),
168 obj_name = "dismantle_sentry",166 obj_name = "dismantle_sentry",
169 obj_title = _"Dismantle your north-western sentry",167 obj_title = _"Dismantle your north-western sentry",
170 obj_body = rt(168 obj_body = (
171 p(_[[You can control the number of soldiers stationed at a military site with the arrow buttons. If you want to get even your last soldier out, you will have to destroy it. However, it then will no longer protect your territory, which will make it vulnerable to hostile attacks.]]) ..169 p(_[[You can control the number of soldiers stationed at a military site with the arrow buttons. If you want to get even your last soldier out, you will have to destroy it. However, it then will no longer protect your territory, which will make it vulnerable to hostile attacks.]]) ..
172 paragraphdivider() ..170 li(_[[Dismantle your sentry in the north-west, next to the barrier.]])
173 listitem_bullet(_[[Dismantle your sentry in the north-west, next to the barrier.]])
174 )171 )
175}172}
176173
177fortress_enhancement = {174fortress_enhancement = {
178 position = "topright",175 position = "topright",
179 title = _"Enhance Your Fortress",176 title = _"Enhance Your Fortress",
180 body = rt(177 body = (
181 h1(_"Enhancing Buildings") ..178 h1(_"Enhancing Buildings") ..
182 p(_[[Well done. Now you know how to draw back your soldiers from the places where you don’t need them. It is time to tell you how to reinforce your front line.]]) ..179 p(_[[Well done. Now you know how to draw back your soldiers from the places where you don’t need them. It is time to tell you how to reinforce your front line.]]) ..
183 p(_[[Your fortress is already quite strong and conquers a lot of space. But there is an even bigger building: the citadel.]]) ..180 p(_[[Your fortress is already quite strong and conquers a lot of space. But there is an even bigger building: the citadel.]]) ..
184 p(_[[Citadels can’t be built directly. Instead, you’ll have to construct a fortress first and then enhance it to a citadel. To do so, click on the fortress, then choose the ‘Enhance to Citadel’ button.]]) ..181 p(_[[Citadels can’t be built directly. Instead, you’ll have to construct a fortress first and then enhance it to a citadel. To do so, click on the fortress, then choose the ‘Enhance to Citadel’ button.]]) ..
185 p(_[[Your soldiers will leave the fortress while the construction is going on. This means that your fortress will lose its military influence, as I described above.]]) ..182 p(_[[Your soldiers will leave the fortress while the construction is going on. This means that your fortress will lose its military influence, as I described above.]]) ..
186 listitem_bullet(_[[Enhance your fortress to a citadel now.]])183 li(_[[Enhance your fortress to a citadel now.]])
187 ),184 ),
188 obj_name = "enhance_fortress",185 obj_name = "enhance_fortress",
189 obj_title = _"Enhance your fortress to a citadel",186 obj_title = _"Enhance your fortress to a citadel",
190 obj_body = rt(187 obj_body = (
191 h1(_"Enhance Your Fortress") ..188 h1(_"Enhance Your Fortress") ..
192 paragraphdivider() ..189 li(_[[Enhance your fortress to a mighty citadel.]]) ..
193 listitem_bullet(_[[Enhance your fortress to a mighty citadel.]]) ..190 li_arrow(_[[The citadel can house 12 soldiers, and it is the biggest military building the Barbarians can build. It also costs a lot of resources and takes a long time to build. It is most suited to guard strategically important points like constricted points or mountains.]])
194 listitem_arrow(_[[The citadel can house 12 soldiers, and it is the biggest military building the Barbarians can build. It also costs a lot of resources and takes a long time to build. It is most suited to guard strategically important points like constricted points or mountains.]])
195 )191 )
196}192}
197193
@@ -199,27 +195,25 @@
199 position = "topright",195 position = "topright",
200 field = wl.Game().map:get_field(29,4), -- show the lost territory196 field = wl.Game().map:get_field(29,4), -- show the lost territory
201 title = _"Defeat your Enemy",197 title = _"Defeat your Enemy",
202 body = rt(198 body = (
203 h1(_"Defeat the Enemy") ..199 h1(_"Defeat the Enemy") ..
204 p(_[[Great work, the citadel is finished. But what’s that? A hostile tribe has settled next to us while the citadel was under construction! Do you see how they took away a part of our land? And our lumberjack has now lost his place of work. This is what I was talking about. Let’s take our land back and defeat the enemy!]]) ..200 p(_[[Great work, the citadel is finished. But what’s that? A hostile tribe has settled next to us while the citadel was under construction! Do you see how they took away a part of our land? And our lumberjack has now lost his place of work. This is what I was talking about. Let’s take our land back and defeat the enemy!]]) ..
205 p(_[[To attack a building, click on its doors, choose the number of soldiers that you wish to send and click on the ‘Attack’ button.]] .. " " .. _[[Your soldiers will come from all nearby military buildings. Likewise, the defenders will come from all nearby military buildings of the enemy and intercept your forces.]]) ..201 p(_[[To attack a building, click on its doors, choose the number of soldiers that you wish to send and click on the ‘Attack’ button.]] .. " " .. _[[Your soldiers will come from all nearby military buildings. Likewise, the defenders will come from all nearby military buildings of the enemy and intercept your forces.]]) ..
206 paragraphdivider() ..202 li(_[[Attack and conquer all military buildings of the enemy and destroy their headquarters.]])
207 listitem_bullet(_[[Attack and conquer all military buildings of the enemy and destroy their headquarters.]])
208 ),203 ),
209 h = 350,204 h = 350,
210 obj_name = "defeated_the_empire",205 obj_name = "defeated_the_empire",
211 obj_title = _"Defeat the enemy tribe",206 obj_title = _"Defeat the enemy tribe",
212 obj_body = rt(207 obj_body = (
213 h1(_"Defeat Your Enemy") ..208 h1(_"Defeat Your Enemy") ..
214 paragraphdivider() ..209 li(_[[Defeat the nearby enemy.]]) ..
215 listitem_bullet(_[[Defeat the nearby enemy.]]) ..210 li_arrow(_[[To attack a building, click on its doors, choose the number of soldiers that you wish to send and click on the ‘Attack’ button.]])
216 listitem_arrow(_[[To attack a building, click on its doors, choose the number of soldiers that you wish to send and click on the ‘Attack’ button.]])
217 )211 )
218}212}
219213
220conclude_tutorial = {214conclude_tutorial = {
221 title = _"Conclusion",215 title = _"Conclusion",
222 body = rt(216 body = (
223 h1(_"Conclusion") ..217 h1(_"Conclusion") ..
224 p(_[[Thank you for playing this tutorial. I hope you enjoyed it and you learned how to create and train soldiers, how to control where they go and how to defeat an enemy. Did you see how easily you could overwhelm your enemy? Having trained soldiers is a huge advantage.]]) ..218 p(_[[Thank you for playing this tutorial. I hope you enjoyed it and you learned how to create and train soldiers, how to control where they go and how to defeat an enemy. Did you see how easily you could overwhelm your enemy? Having trained soldiers is a huge advantage.]]) ..
225 p(_[[But a war is expensive, and not always the path leading to the goal. When setting up a new game, you can also choose peaceful win conditions. You should definitely try them out, they’re worth it.]]) ..219 p(_[[But a war is expensive, and not always the path leading to the goal. When setting up a new game, you can also choose peaceful win conditions. You should definitely try them out, they’re worth it.]]) ..

Subscribers

People subscribed via source and target branches

to status/vote changes: