Merge branch 'master' of github.com:wesnoth/wesnoth-old

This commit is contained in:
Alexander van Gessel 2013-12-17 00:36:58 +01:00
commit 562a5be85c
19 changed files with 316 additions and 289 deletions

View file

@ -2,6 +2,9 @@ Version 1.11.7+dev:
* Campaigns:
* Dead Water:
* New world map.
* Eastern Invasion:
* Made Dacyn use teal TC and Mal-Ravanal blue TC, to make them fit the
portraits more.
* Heir To The Throne:
* Implemented the portrait variations for Delfador and Asheviere.
* Changed Kaylan's portrait and gave him teal team coloring.
@ -28,6 +31,7 @@ Version 1.11.7+dev:
* User interface:
* Added a party full bell to the MP game configuration screen, played once
all human player slots have been taken.
* Change layout for advertized games in the MP lobby and add map icon.
* WML engine:
* WML variable turn_number is set correctly (to 1) in prestart and start
events. Previously, it retained its last value from the previous scenario

View file

@ -57,6 +57,7 @@
type=Sergeant
id=Gweddry
name= _ "Gweddry"
facing=se
side=1
canrecruit=yes
recruit=Spearman,Cavalryman,Mage,Heavy Infantryman
@ -73,6 +74,7 @@
side=1
x=9
y=16
facing=se
profile=portraits/dacyn.png
random_traits=no
[modifications]
@ -175,6 +177,8 @@
[event]
name=prestart
{TEAM_COLOR_OVERRIDE id=Dacyn teal}
# {SCATTER_IMAGE (terrain=Gs^Fp) 20 scenery/pine1.png}
# {SCATTER_IMAGE (terrain=Gg) 4 scenery/oak-leaning.png}

View file

@ -71,12 +71,10 @@
[/side]
[side]
type=Dark Sorcerer
id=Mal-Bakral
name= _ "Mal-Bakral"
no_leader=yes
side=4
canrecruit=yes
controller=ai
controller=null
hidden=yes
recruit=Vampire Bat,Ghost
{GOLD 150 200 250}
team_name=undead
@ -188,10 +186,7 @@
message= _ "Aye, well help ye, for we have nae love for the trolls. Anyone attacked by them deserves some help, I think."
[/message]
[if]
[variable]
name=undead
equals=yes
[/variable]
{VARIABLE_CONDITIONAL undead boolean_equals yes}
[then]
[message]
speaker=Dacyn
@ -271,68 +266,38 @@
#Mal-Bakral arrives
[event]
name=turn 6
[set_variable]
name=undead
value=yes
[/set_variable]
{VARIABLE undead yes}
[terrain]
x=2,3,4,2
y=4,4,4,5
terrain=Uu^Ii
[/terrain]
[unit]
type=Revenant
side=4
x=2
y=5
[/unit]
[unit]
type=Revenant
side=4
x=4
y=5
[/unit]
[unit]
type=Revenant
side=4
x=2
y=4
ai_special=guardian
[/unit]
[unit]
type=Revenant
side=4
x=4
y=4
ai_special=guardian
[/unit]
{GENERIC_UNIT 4 (Revenant) 2 5}
{GENERIC_UNIT 4 (Revenant) 4 5}
{GENERIC_UNIT 4 (Revenant) 2 4}
{GENERIC_UNIT 4 (Revenant) 4 4}
#ifdef HARD
[unit]
type=Bone Shooter
side=4
x=3
y=5
[/unit]
[unit]
type=Bone Shooter
side=4
x=3
y=4
ai_special=guardian
[/unit]
{GENERIC_UNIT 4 (Bone Shooter) 3 5}
{GENERIC_UNIT 4 (Bone Shooter) 3 4}
#endif
[remove_shroud]
side=1
x,y=3,3
x,y=2-4,3
[/remove_shroud]
[teleport]
[filter]
id=Mal-Bakral
[/filter]
[modify_side]
side=4
controller=ai
hidden=no
[/modify_side]
[unit]
type=Dark Sorcerer
id=Mal-Bakral
name= _ "Mal-Bakral"
side=4
canrecruit=yes
x,y=3,3
[/teleport]
[/unit]
[message]
speaker=Mal-Bakral
message= _ "We have found you, fleshbag! Prepare to die!"
@ -354,9 +319,7 @@
speaker=Gweddry
message= _ "We have reached the end of the tunnel. I see daylight above us!"
[/message]
[clear_variable]
name=undead
[/clear_variable]
{CLEAR_VARIABLE undead}
[endlevel]
result=victory
bonus=yes

View file

@ -138,6 +138,9 @@
[event]
name=prestart
{TEAM_COLOR_OVERRIDE id=Mal-Ravanal blue}
[objectives]
side=1
[objective]

View file

@ -298,6 +298,8 @@
[/variables]
[/modify_unit]
{TEAM_COLOR_OVERRIDE id=Mal-Ravanal blue}
[allow_recruit]
side=$second_unit.side
type="Bone Shooter,Revenant,Wraith,Shadow,Nightgaunt,Spectre,Draug,Banebow"

View file

@ -1,35 +1,35 @@
border_size=1
usage=map
Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Ww , Ww , Ww , Ww , Ww , Gll^Fp , Gll^Fp , Gg , Gg , Gg , Gg , Gg , Gg , Hh , Hh , Mm , Mm , Mm , Mm , Mm , Mm
Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Ww , Ww , Ww , Ww , Ww , Gll^Fp , Gll^Fp , Gg , Gg , Gg , Gg , Gs , Gg , Hh , Hh , Mm , Mm , Mm , Mm , Mm , Mm
Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Ce , Ce , Ce , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Ww , Ww , Ww , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Gg , Ce , Ce , Gs , Gs , Gs , Hh , Hh , Mm , Mm^Vc , Mm , Hh , Hh
Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg^Ve , Gg , Ce , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Gg , Gg , Ww , Ww , Gll^Fp , Gg , Gs^Ve , Gg , Ce , Gs , Gs^Ve , Gll^Fp , Gs , Gs , Gs , Hh , Hh , Hh , Hh , Hh , Hh
Rr , Rr , Rr , Rr , Rr , Gg , Ce , Ce , Ce , Gg , Gg^Ve , Ce , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Gll^Fp , Gll^Fp , Gg , Gg , Wwf , Wwf , Gg , Gg , Gg , Gs , Ce , Gs^Vo , Gll^Fp , Ce , Ce , Ce , Gs , Hh^Vc , Hh , Hh , Hh , Mm , Mm
Gg , Gg , Gg^Ve , Ce , Gg , Rr , Ce , 6 Ke , Ce , Gg , Ce , Ce , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Re^Gvs , Wwf , Wwf , Gg , Gg , Gll^Fp , Gll^Fp , Ce , Gll^Fp , Gll^Fp , Ce , 5 Ke , Ce , Gs , Gs , Gs , Hh , Hh , Mm , Mm
Gg , Gg , Gg , Ce , Gg , Rr , Rr , Ce , Gg , Gg , Gll^Fp , Gg , Gll^Fp , Gg , Gg , Gg , Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Ww , Ww , Gg , Gg , Gll^Fp , Gll^Fp , Ce , Gll^Fp , Re , Gs , Ce , Hh , Gs , Hh , Gs , Hh , Mm , Mm , Mm
Gg , Gg , Gg , Ce , Ce , Gg^Vo , Rr , Gg , Gg , Gg , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Re^Gvs , Re^Gvs , Re^Gvs , Gg , Ww , Ww , Gg , Gg , Gg , Gg , Gll^Fp , Re , Re , Ce , Gs , Hh , Hh^Vo , Ce , Ce , Hh , Hh , Hh , Hh
Gg , Gg , Gg , Gg , Gg , Ce , Rr , Re^Gvs , Re^Gvs , Re^Gvs , Gg , Gg , Gg , Gg , Gg , Gg , Re^Gvs , Gg , Gg , Gg , Re^Gvs , Ww , Rb^Gvs , Rb^Gvs , Rb^Gvs , Gg , Gg , Gg , Re , Gs , Gs , Ce , Ce , Ce , Hh , Hh , Hh , Hh , Hh , Hh
Gll^Fp , Gll^Fp , Gll^Fp , Gg , Gg , Gg , Re^Gvs , Rr , Re^Gvs , Re^Gvs , Rr , Re^Gvs , Re^Gvs , Re^Gvs , Gg , Gg , Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Ww , Ww , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Gvs , Re^Gvs , Rb , Gs , Hh^Vo , Hh , Hh , Hh , Gg , Hh , Gg , Hh , Hh , Hh
Gll^Fp , Gll^Fp , Gg , Gg , Re^Gvs , Gg , Gg , Rr , Rr , Rr , Gll^Fp , Rr , Re^Vo , Re^Gvs , Rr , Gg , Rr , Re^Gvs , Re^Gvs , Re^Gvs , Ww , Ww , Ss , Ww , Rb^Gvs , Rb^Gvs , Rb , Rb , Rb^Gvs , Hh , Hh , Hh , Gg , Gg , Re^Gvs , Gg , Hh , Gg , Hh , Hh
Gll^Fp , Gll^Fp , Gll^Fp , Gg , Re^Gvs , Re^Gvs , Re^Gvs , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Rr , Rr , Rr , Gg , Rr , Gg , Rr , Rr , Ww , Ss , Ss , Co , Ww , Wwf , Rb , Rb^Gvs , Rb^Gvs , Rb^Gvs , Hh , Gg , Hh , Gg , Gg , Re^Gvs , Hh , Hh , Hh , Hh , Hh
Gll^Fp , Gll^Fp , Gg^Ve , Re^Gvs , Re , Re^Gvs , Re^Gvs , Gg , Re , Gll^Fp , Gg , Re^Gvs , Re^Gvs , Re^Gvs , Gg , Gg , Re^Gvs , Re^Gvs , Re^Gvs , Ww^Bw\ , Rb , Co , Co , Co , Wwf , Rb^Gvs , Rb^Gvs , Rb^Gvs , Gg , Gg , Gg , Gg , Rb^Gvs , Rb^Gvs , Rb^Gvs , Hh , Hh , Hh , Hh , Hh
Re , Re , Re , Re , Re , Re , Re , Re , Re^Gvs , Re , Re , Gg , Gg , Gg , Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Ww , Ww , Hh^Vo , Co , Hh , Co , Ww , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Gvs , Re , Hh , Hh^Vo , Hh , Hh , Hh
Re , Re , Re , Re , Re^Gvs , Re^Gvs , Gll^Fp , Re^Gvs , Gll^Fp , Gll^Fp , Re , Re , Re , Re^Gvs , Re^Gvs , Re^Gvs , Ww , Ww , Co , Co , Co , Co , Hh^Vo , 3 Ko , Co , Ww , Ww , Rb^Vo , Ww , Rb^Gvs , Rb^Gvs , Rb^Gvs , Re , Re , Re^Gvs , Re^Gvs , Re^Gvs , Gs , Hh , Hh
Gll^Fp , Gll^Fp , Gll^Fp , Re^Gvs , Gg , Gg , Gll^Fp , Gll^Fp , Re , Re , Re , Gg^Vo , Re^Gvs , Re , Re , Wwf , Wwf , Rb , Co , Co , Co , Hh^Vo , Hh^Vo , Hh , Co , Co , Hh^Vo , Ww , Rb^Gvs , Ww , Ww , Rb^Gvs , Wwf , Re^Gvs , Re^Gvs , Re^Gvs , Gs , Gs , Hh , Hh
Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Gg , Re , Re , Gg , Gg , Gg , Gll^Fp , Gll^Fp , Re^Gvs , Re , Wwf , Ww , Hh , Hh , Ko , Co , Hh , Co , Co , Co , Co , Hh , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb , Wwf , Re , Ww , Ww , Gg , Hh , Hh , Wo , Wo
Gll^Fp , Gll^Fp , Gg , Gg^Ve , Re , Re , Gg , Gg , Gll^Fp , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Re^Gvs , Re , Ww , Ww , Ss , Hh , Hh^Vo , Hh , Co , Hh^Vo , Co , Rb , Hh , Hh , Rb^Gvs , Rb , Rb , Rb^Gvs , Gg^Vo , Rb^Gvs , Rb^Gvs , Rb^Gvs , Ww , Wo , Wo , Gg , Gg
Gll^Fp , Gll^Fp , Gg , Re , Gg , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Re^Gvs , Re , Ss , Ww , Ss , Ss , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb , Rb , Rb , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb , Gg , Ce , Gg
Gg , Gg , Gg , Re , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Re , Re , Ww , Ww , Gll^Fp , Ww , Ss , Rb^Gvs , Gll^Fp , Rb^Gvs , Rb^Vo , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb , Rb , Rb^Gvs , Rb , Rb , Rb^Gvs , Rb , Rb , Rb , Ce , Ce , Hh , Hh
Gll^Fp , Gll^Fp , Gg , Re , Re , Gg , Gg , Gg^Vo , Gg , Gg , Gg , Gg , Re , Gg , Ww , Gll^Fp , Gll^Fp , Ww , Ss , Gg , Gll^Fp , Rb^Gvs , Gll^Fp , Rb^Gvs , Gg , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb , Rb , Rb^Gvs , Rb^Gvs , Rb^Gvs , Rb^Vo , Rb^Gvs , Rb^Gvs , Ce , 1 Ke , Hh , Hh
Gll^Fp , Gll^Fp , Gg^Ve , Gll^Fp , Re , Gg , Gll^Fp , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Re , Gg , Ww , Gll^Fp , Gll^Fp , Ww , Ww , Gg , Gg , Gll^Fp , Gll^Fp , Gg , Gg , Gg , Rb^Gvs , Rb^Gvs , Rb , Rb^Gvs , Rb^Gvs , Rb^Gvs , Re^Gvs , Rb^Gvs , Gg , Rb^Gvs , Hh , Hh , Hh , Hh
Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Re , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Gll^Fp , Gll^Fp , Gg^Vo , Re , Gg , Ww , Gll^Fp , Gll^Fp , Gll^Fp , Ww , Gg , Gg , Gll^Fp , Gg , Gg , Gg , Gg , Rb^Gvs , Rb^Gvs , Rb , Rb^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Gg , Hh , Hh , Hh , Hh
Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Re , Gll^Fp , Gll^Fp , Gg^Ve , Gll^Fp , Gg , Re , Re , Gg , Ww^Bw\ , Gg , Gg , Gll^Fp , Gll^Fp , Ww , Gg , Gg , Gg , Gg , Gg , Gg^Vo , Rb^Gvs , Re^Gvs , Rb^Gvs , Re , Re , Re , Re , Re , Re^Gvs , Re^Gvs , Re^Gvs , Hh , Hh , Hh , Hh
Gll^Fp , Gll^Fp , Gll^Fp , Re , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Re , Gg , Gg , Ww , Ww , Gg , Gg , Gg , Gll^Fp , Gg , Gg , Gg , Gg , Gll^Fp , Gll^Fp , Re^Gvs , Re^Gvs , Re , Re , Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Re , Hh , Hh , Hh , Hh , Mm , Mm
Ch , Ch , Ch , Re , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Re , Gg , Ww , Ww , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gll^Fp , Gll^Fp , Gg , Gll^Fp , Re^Gvs , Re^Gvs , Re , Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Re^Gvs , Hh , Hh , Hh , Mm , Hh^Vo , Mm , Mm
Ch , Ch , 2 Kh , Ch , Re , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Re , Gg , Ww , Gg , Gg , Gg , Gg , Gg , Gg^Ve , Gg , Gg , Gll^Fp , Gll^Fp , Gg , Gs , Ce , Re , Re , Re^Gvs , Ce , Gs , Gs , Gs , Gs , Hh , Hh , Mm , Mm , Mm , Mm , Mm
Ch , Ch , Gll^Fp , Gll^Fp , Gll^Fp , Re , Re , Re , Re , Re , Gg , Ww , Gg , Gll^Fp , Gll^Fp , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Ce , Ce , Gs , Ce , Re , Ce , Hh^Vo , Ce , Ce , Gs , Hh , Hh , Hh , Hh , Hh , Mm , Mm , Mm
Ch , Ch , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Gg , Gg , Gg , Ww , Ww , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Gg , Gg , Gg , Gg , Ce , Gs , Re , Re , Ce , Gs , Hh , Hh , Ce , Hh , Hh , Hh , Hh , Hh , Hh , Hh , Mm , Mm
Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gll^Fp , Gg^Ve , Gll^Fp , Gg , Gg , Ww , Ww , Gg , Gg , Gg , Gll^Fp , Gg , Gg , Gg , Gg , Gg , Gs , Ce , Gs^Vo , Re , Ce , 4 Ke , Ce , Gs , Hh^Vc , Ce , Hh , Hh , Hh , Mm , Mm^Vc , Mm , Mm , Mm , Mm
Gg , Gg^Ve , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Gg , Gg , Gll^Fp , Ww , Ww , Gg , Gg , Gg , Gll^Fp , Gg , Gg , Gg , Gg , Gg , Gs , Re , Re , Gs , Ce , Ce , Ce , Hh , Hh , Hh , Hh , Mm , Mm , Mm , Mm , Mm , Mm , Mm , Mm
Gg , Gg , Gg , Gll^Fp , Gll^Fp , Gll^Fp , Gg , Gg , Gg , Gll^Fp , Ww , Ww , Gg , Gg , Gg , Gll^Fp , Gg , Gg , Gg , Gg , Gg , Gg , Re , Re , Gs , Ce , Ce , Ce , Hh , Hh , Hh , Hh , Mm , Mm , Mm , Mm , Mm , Mm , Mm , Mm
Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Ww, Ww, Ww, Ww, Ww, Gll^Fp, Gll^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Hh, Hh, Mm, Mm, Mm, Mm, Re, Re
Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Ww, Ww, Ww, Ww, Ww, Gg^Ve, Gll^Fp, Gg, Gg, Gg, Gg, Gs, Gg, Hh, Hh, Mm, Mm, Re, Re, Ce, Mm
Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ce, Ce, Ce, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Ww, Ww, Ww, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gg, Gs, Gs, Gs, Gs, Gs, Hh, Re, Re, Ce, Ce, 1 Ke, Hh
Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ce, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gg, Gg, Ww, Ww, Gll^Fp, Gg, Gs, Gg, Gs, Gs, Gs, Gll^Fp, Gs, Gs, Gs, Re, Hh, Hh, Ce, Hh, Hh
Rr, Rr, Rr, Rr, Rr, Gg, Ce, Ce, Ce, Gg, Gg^Ve, Ce, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gll^Fp, Gll^Fp, Gg, Gg, Wwf, Wwf, Gg, Gg, Gg, Gs, Gll^Fp, Gg, Gll^Fp, Gs, Gs, Gs, Gs, Re, Hh, Gs, Hh, Mm, Mm
Gg, Gg, Gg, Ce, Gg, Rr, Ce, 6 Ke, Ce, Gg, Ce, Ce, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re^Gvs, Wwf, Wwf, Gg, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gs, Gs, Gs, Re, Gs, Gs, Gs, Hh, Hh^Vo, Mm
Gg, Gg, Gg, Ce, Gg, Rr, Rr, Ce, Gg, Gg, Gll^Fp, Gg, Gll^Fp, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Ww, Ww, Gg, Gg, Gll^Fp, Gll^Fp, Gg, Gll^Fp, Gs, Gll^Fp, Gs, Gs, Re, Gs, Gs, Hh, Mm, Mm, Mm
Gg, Gg, Gg, Ce, Ce, Gg^Vo, Rr, Gg, Gg, Gg, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Ww, Ww, Gg, Gg, Gg, Gg, Gll^Fp, Gll^Fp, Gg^Ve, Gs, Gs, Re, Re, Gg, Gs, Gs, Hh, Hh, Hh
Gg, Gg, Gg, Gg, Gg, Ce, Rr, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gg, Gg, Gg, Gg, Gg, Re^Gvs, Gg, Gg, Gg, Re^Gvs, Ww, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg, Gg, Gg, Gll^Fp, Ce, Ce, Ce, Gg, Gg, Gg, Gg, Hh, Hh, Hh
Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gg, Gg, Re^Gvs, Rr, Re^Gvs, Re^Gvs, Rr, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Ww, Ww, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Re^Gvs, Rb, Rb, Ce, 5 Kea, Ce, Gg, Gg, Gg, Gg, Hh, Hh, Hh
Gll^Fp, Gll^Fp, Gg, Gg, Re^Gvs, Gg, Gg, Rr, Rr, Rr, Gll^Fp, Rr, Re^Vo, Re^Gvs, Rr, Gg, Rr, Re^Gvs, Re^Gvs, Re^Gvs, Ww, Ww, Ss, Ww, Rb^Gvs, Rb^Gvs, Rb, Rb, Rb^Gvs, Hh, Hh, Ce, Gg, Gg, Re^Gvs, Gg, Hh^Vo, Gg, Hh, Hh
Gll^Fp, Gll^Fp, Gll^Fp, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Rr, Rr, Rr, Gg, Rr, Gg, Rr, Rr, Ww, Ss, Ss, Co, Ww, Wwf, Rb, Rb^Gvs, Rb^Gvs, Rb^Gvs, Hh, Gg, Hh, Gg, Gg, Re^Gvs, Hh, Hh, Hh, Hh, Hh
Gll^Fp, Gll^Fp, Gg, Re^Gvs, Re, Re^Gvs, Re^Gvs, Gg, Re, Gll^Fp, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Ww^Bw\, Rb, Co, Co, Co, Wwf, Rb^Gvs, Rb^Gvs, Rb^Gvs, Gg, Gg, Gg, Gg, Rb^Gvs, Rb^Gvs, Rb^Gvs, Hh, Hh, Hh, Hh, Hh
Re, Re, Re, Re, Re, Re, Re, Re, Re^Gvs, Re, Re, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Ww, Ww, Hh^Vo, Co, Hh, Co, Ww, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Re, Hh, Gs, Hh, Hh, Hh
Re, Re, Re, Re, Re^Gvs, Re^Gvs, Gll^Fp, Re^Gvs, Gll^Fp, Gll^Fp, Re, Re, Re, Re^Gvs, Re^Gvs, Re^Gvs, Ww, Ww, Co, Co, Co, Co, Hh, 3 Ko, Co, Ww, Ww, Rb^Gvs, Ww, Rb^Gvs, Rb^Gvs, Rb^Gvs, Re, Re, Re^Gvs, Re^Gvs, Re^Gvs, Gs, Hh, Hh
Gll^Fp, Gll^Fp, Gll^Fp, Re^Gvs, Gg, Gg, Gll^Fp, Gll^Fp, Re, Re, Re, Gg, Re^Gvs, Re, Re, Wwf, Wwf, Rb, Co, Co, Co, Hh^Vo, Hh^Vo, Hh, Co, Co, Hh^Vo, Ww, Rb^Gvs, Ww, Ww, Rb^Gvs, Wwf, Re^Gvs, Re^Gvs, Re^Gvs, Gs, Gs, Hh, Hh
Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gg, Re, Re, Gg, Gg, Gg, Gll^Fp, Gll^Fp, Re^Gvs, Re, Wwf, Ww, Hh, Hh, Ko, Co, Hh, Co, Co, Co, Co, Hh, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb, Wwf, Re, Ww, Ww, Gg, Hh, Hh, Wo, Wo
Gll^Fp, Gll^Fp, Gg, Gg, Re, Re, Gg, Gg, Gll^Fp, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Re^Gvs, Re, Ww, Ww, Ss, Hh, Rb^Gvs, Hh, Co, Hh, Co, Rb, Hh, Hh, Rb^Gvs, Rb, Rb, Rb^Gvs, Gg^Vo, Rb^Gvs, Rb^Gvs, Rb^Gvs, Ww, Wo, Wo, Rb, Rb
Gll^Fp, Gll^Fp, Gg, Re, Gg, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Re^Gvs, Re, Ss, Ww, Ss, Ss, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb, Rb, Rb, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb, Rb, Gg, Gg
Gg, Gg, Gg, Re, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Re, Re, Ww, Ww, Gll^Fp, Ww, Ss, Rb^Gvs, Gll^Fp, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb, Rb, Rb^Gvs, Rb, Rb, Rb^Gvs, Rb, Rb, Rb, Gg, Gg, Hh, Hh
Gll^Fp, Gll^Fp, Gg, Re, Re, Gg, Gg, Gg^Vo, Gg, Gg, Gg, Gg, Re, Gg, Ww, Gll^Fp, Gll^Fp, Ww, Ss, Gg, Gll^Fp, Rb^Gvs, Gll^Fp, Rb^Gvs, Gg, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb, Rb, Rb^Gvs, Rb^Gvs, Rb^Gvs, Rb, Rb^Gvs, Rb^Gvs, Gg, Gg, Hh, Hh
Gll^Fp, Gll^Fp, Gg, Gll^Fp, Re, Gg, Gll^Fp, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Re, Gg, Ww, Gll^Fp, Gll^Fp, Ww, Ww, Gg, Gg, Gll^Fp, Gll^Fp, Gg, Gg, Gg, Rb^Gvs, Rb^Gvs, Rb, Rb^Gvs, Rb^Gvs, Rb^Gvs, Re^Gvs, Rb^Gvs, Gg, Rb^Gvs, Hh, Hh, Hh, Hh
Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Re, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gll^Fp, Gll^Fp, Gg^Vo, Re, Gg, Ww, Gll^Fp, Gll^Fp, Gll^Fp, Ww, Gg, Gg, Gll^Fp, Gg, Gg, Gg, Gg, Rb^Gvs, Rb^Gvs, Rb, Rb^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Hh, Hh, Hh, Hh
Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Re, Gll^Fp, Gll^Fp, Gg, Gll^Fp, Gg, Re, Re, Gg, Ww^Bw\, Gg, Gg, Gll^Fp, Gll^Fp, Ww, Gg, Gg, Gg, Gg, Gg, Gg^Vo, Rb^Gvs, Re^Gvs, Rb^Gvs, Re, Re, Re, Re, Re, Re^Gvs, Re^Gvs, Re^Gvs, Hh, Hh, Hh, Hh
Gll^Fp, Gll^Fp, Gll^Fp, Re, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Re, Gg, Gg, Ww, Ww, Gg, Gg, Gg, Gll^Fp, Gg, Gg, Gg, Gg, Gll^Fp, Gll^Fp, Re^Gvs, Re^Gvs, Re, Re, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Re, Hh, Hh, Hh, Hh, Mm, Mm
Ch, Ch, Ch, Re, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Re, Gg, Ww, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gll^Fp, Gll^Fp, Gg, Gll^Fp, Re^Gvs, Re^Gvs, Re, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Hh, Hh, Hh, Mm, Hh, Mm, Mm
Ch, Ch, 2 Kh, Ch, Re, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Re, Gg, Ww, Gg, Gg, Gg, Gg, Gg, Gg^Ve, Gg, Gg, Gll^Fp, Gll^Fp, Gg, Gs, Ce, Re, Re, Re^Gvs, Ce, Gs, Gs, Gs, Gs, Hh, Hh, Mm, Mm, Mm, Mm, Mm
Ch, Ch, Gll^Fp, Gll^Fp, Gll^Fp, Re, Re, Re, Re, Re, Gg, Ww, Gg, Gll^Fp, Gll^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ce, Ce, Gs, Ce, Re, Ce, Hh, Ce, Ce, Gs, Hh, Hh, Hh, Hh, Hh, Mm, Mm, Mm
Ch, Ch, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gg, Gg, Gg, Ww, Ww, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gg, Gg, Gg, Gg, Ce, Gs, Re, Re, Ce, Gs, Hh, Hh, Ce, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Mm, Mm
Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gll^Fp, Gg^Ve, Gll^Fp, Gg, Gg, Ww, Ww, Gg, Gg, Gg, Gll^Fp, Gg, Gg, Gg, Gg, Gg, Gs, Ce, Gs^Vo, Re, Ce, 4 Ke, Ce, Gs, Hh^Vc, Ce, Hh, Hh, Hh, Mm, Mm^Vc, Mm, Mm, Mm, Mm
Gg, Gg^Ve, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gg, Gg, Gll^Fp, Ww, Ww, Gg, Gg, Gg, Gll^Fp, Gg, Gg, Gg, Gg, Gg, Gs, Re, Re, Gs, Ce, Ce, Ce, Hh, Hh, Hh, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm
Gg, Gg, Gg, Gll^Fp, Gll^Fp, Gll^Fp, Gg, Gg, Gg, Gll^Fp, Ww, Ww, Gg, Gg, Gg, Gll^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Re, Re, Gs, Ce, Ce, Ce, Hh, Hh, Hh, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm

View file

@ -72,9 +72,9 @@
side=2
canrecruit=yes
#ifdef HARD
recruit=Cavalryman, Fencer, Spearman, Heavy Infantryman
recruit=Cavalryman, Fencer, Spearman, Bowman, Heavy Infantryman
#else
recruit=Cavalryman, Fencer, Spearman
recruit=Cavalryman, Fencer, Spearman, Bowman
#endif
facing=sw
team_name=Humans

View file

@ -28,11 +28,10 @@
side=1
[objective]
condition=win
description=_ "Move Kapoue to the end of the mountains"
description=_ "Move Kapoue to the end of the mountains or"
[/objective]
[objective]
condition=win
{BONUS_OBJECTIVE_CAPTION}
description= _ "Defeat the enemy leader"+{EARLY_FINISH_BONUS_FOOTNOTE}
[/objective]
[objective]

View file

@ -3,7 +3,7 @@
id=04_The_Siege_of_Barag_Gor
name= _ "The Siege of Barag Gór"
map_data="{campaigns/Son_Of_The_Black_Eye/maps/04_The_Siege_of_Barag_Gor.map}"
{TURNS 30 28 26}
turns=24
victory_when_enemies_defeated=yes
{DEFAULT_SCHEDULE}
@ -17,7 +17,7 @@
[event]
name=prestart
[objectives]
side=1
side=1,3
[objective]
condition=win
description=_ "Defeat all enemy leaders"
@ -52,7 +52,7 @@
recruit=Troll Whelp
team_name=Kapoue
user_team_name=_ "Kapoue"
gold=200
{GOLD 200 150 120}
{BLACK_FLAG}
[/side]
@ -66,7 +66,8 @@
canrecruit=yes
recruit=Elvish Archer, Elvish Fighter
profile="portraits/elves/captain.png~FL()~RIGHT()"
{GOLD 60 80 100}
{GOLD 100 125 150}
income=20
{FLAG_VARIANT wood-elvish}
[/side]
@ -77,20 +78,12 @@
id=Rugh
name= _ "Rugh"
side=3
controller=human
team_name=Kapoue
user_team_name=_ "Kapoue"
canrecruit=yes
recruit= Wolf Rider, Orcish Grunt, Troll Whelp, Orcish Archer
gold=150
[ai]
[avoid]
[not]
x,y=17-27,11-19
terrain=C*,K*,H*,*^V*
[/not]
[/avoid]
[/ai]
recruit= Wolf Rider, Orcish Grunt, Orcish Archer
{GOLD 250 200 150}
[/side]
{STARTING_VILLAGES 3 5}
@ -104,7 +97,7 @@
user_team_name=_"Elves"
canrecruit=yes
recruit=Elvish Archer, Elvish Fighter
{GOLD 60 80 100}
{GOLD 100 125 150}
{FLAG_VARIANT wood-elvish}
[/side]
@ -119,8 +112,19 @@
user_team_name=_"Elves"
canrecruit=yes
recruit=Elvish Archer, Elvish Fighter
{GOLD 60 80 100}
{GOLD 100 125 150}
{FLAG_VARIANT wood-elvish}
[ai]
passive_leader=yes
[goal]
name=target
[criteria]
side=1
[/criteria]
value=50
[/goal]
[/ai]
[/side]
{STARTING_VILLAGES 5 6}
@ -134,7 +138,8 @@
user_team_name=_"Elves"
canrecruit=yes
recruit=Elvish Archer, Elvish Fighter
{GOLD 60 80 100}
{GOLD 100 125 150}
income=12
{FLAG_VARIANT wood-elvish}
[/side]
@ -174,9 +179,9 @@
{GENERIC_UNIT 3 "Orcish Grunt" 25 15} {GUARDIAN}
{GENERIC_UNIT 3 "Orcish Grunt" 22 16} {GUARDIAN}
{ORCISH_SHAMAN 22 14 Pirk _"Pirk"}
{OLD_ORCISH_SHAMAN 22 15 Gork _"Gork"}
{NOVICE_ORCISH_SHAMAN 21 15 Vraurk _"Vraurk"}
{ORCISH_SHAMAN 3 22 14 Pirk _"Pirk"}
{OLD_ORCISH_SHAMAN 3 22 15 Gork _"Gork"}
{NOVICE_ORCISH_SHAMAN 3 21 15 Vraurk _"Vraurk"}
# wmllint: recognize Pirk
# wmllint: recognize Gork
# wmllint: recognize Vraurk
@ -226,12 +231,12 @@
[then]
[recall]
role=Scout
x,y=36,20
x,y=36,3
[/recall]
[/then]
[else]
{GENERIC_UNIT 1 "Wolf Rider" 36 20}
{GENERIC_UNIT 1 "Wolf Rider" 36 3}
[+unit]
role=Scout
to_variable=scout
@ -267,12 +272,12 @@
[set_variable]
name=scout.x
value=13
value=32
[/set_variable]
[set_variable]
name=scout.y
value=27
value=6
[/set_variable]
[kill]
@ -282,8 +287,8 @@
[move_unit_fake]
type=$scout.type
side=1
x=38,38,37,36,35.34,21,20,19,18,17,16,15,14,13
y=19,18,18,18,19,19,29,28,28,28,28,28,28,27,27
x=36,32,32
y=3,5,6
[/move_unit_fake]
[unstore_unit]
@ -291,7 +296,7 @@
[/unstore_unit]
[message]
speaker=Etheliel
speaker=Ammon
message= _ "One more step and you are dead, flea-bag. Better run if you value your life."
[/message]
@ -301,7 +306,7 @@
[/message]
[message]
speaker=Etheliel
speaker=Ammon
message= _ "Watch your mouth around your betters, goblin! And you can tell your chief to hand the shamans over to us if he wants to be alive by sundown."
[/message]
@ -311,7 +316,7 @@
[/message]
[message]
speaker=Etheliel
speaker=Ammon
message= _ "Our business with them is none of your concern."
[/message]
@ -321,7 +326,7 @@
[/message]
[message]
speaker=Etheliel
speaker=Ammon
message= _ "Well... the humans want to... meet with them."
[/message]
@ -331,7 +336,7 @@
[/message]
[message]
speaker=Etheliel
speaker=Ammon
message= _ "Well..."
[/message]
@ -341,24 +346,24 @@
[/message]
[message]
speaker=Etheliel
speaker=Ammon
message= _ "KILL HIM!!"
[/message]
[unit]
type=Elvish Fighter
side=2
x=3
y=26
side=5
x=29
y=6
generate_name=yes
random_traits=yes
[/unit]
[unit]
type=Elvish Fighter
side=2
x=2
y=25
side=5
x=29
y=8
generate_name=yes
random_traits=yes
[/unit]
@ -370,12 +375,12 @@
[set_variable]
name=scout.x
value=38
value=36
[/set_variable]
[set_variable]
name=scout.y
value=19
value=3
[/set_variable]
[kill]
@ -385,8 +390,8 @@
[move_unit_fake]
type=$scout.type
side=1
x=13,14,15,16,17,18,19,20,21,34,35,36,37,38,38
y=27,27,28,28,28,28,28,28,29,19,19,18,18,18,19
x=32,36
y=6,3
[/move_unit_fake]
[unstore_unit]
@ -394,7 +399,7 @@
[/unstore_unit]
[message]
speaker=Etheliel
speaker=Ammon
message= _ "Blast it, he got away."
[/message]
@ -433,12 +438,6 @@
message= _ "..."
[/message]
[message]
speaker=narrator
message= _ "Then, Kapoue launched his desperate attack to break the siege of Barag Gór."
image=wesnoth-icon.png
[/message]
{CLEAR_VARIABLE scout}
[/event]
@ -492,35 +491,6 @@
{VARIABLE freed_Jetto yes}
[/event]
[event]
name=moveto
[filter]
side=1
[not]
id=Pirk
[/not]
[not]
id=Gork
[/not]
[not]
id=Vraurk
[/not]
x=18-25
y=11-17
[/filter]
[message]
speaker=Rugh
message= _ "Good. Reinforcements at last!"
[/message]
[message]
speaker=unit
message= _ "Thats right! Now lets drive those mincing tree-shaggers back into their forests!"
[/message]
[/event]
[event]
name=enemies defeated
@ -574,6 +544,18 @@
message= _ "We must give this matter careful consideration. Come inside the city, and well discuss it."
[/message]
[modify_unit]
[filter]
id=Pirk,Gork,Vraurk
[/filter]
side=1
[/modify_unit]
[modify_side]
side=3
controller=null
[/modify_side]
[if]
[variable]
name=freed_Jetto

View file

@ -156,9 +156,9 @@
[event]
name=victory cutscene
{OLD_ORCISH_SHAMAN 32 30 Fabstep _"Fabstep"}
{OLD_ORCISH_SHAMAN 32 30 Klebar _"Klebar"}
{OLD_ORCISH_SHAMAN 32 30 Echarp _"Echarp"}
{OLD_ORCISH_SHAMAN 1 32 30 Fabstep _"Fabstep"}
{OLD_ORCISH_SHAMAN 1 32 30 Klebar _"Klebar"}
{OLD_ORCISH_SHAMAN 1 32 30 Echarp _"Echarp"}
# wmllint: recognize Fabstep
# wmllint: recognize Klebar
# wmllint: recognize Echarp

View file

@ -1090,9 +1090,9 @@
[event]
name=time over
{ORCISH_SHAMAN 11 1 Pirk _"Pirk"}
{OLD_ORCISH_SHAMAN 11 1 Gork _"Gork"}
{NOVICE_ORCISH_SHAMAN 11 1 Vraurk _"Vraurk"}
{ORCISH_SHAMAN 1 11 1 Pirk _"Pirk"}
{OLD_ORCISH_SHAMAN 1 11 1 Gork _"Gork"}
{NOVICE_ORCISH_SHAMAN 1 11 1 Vraurk _"Vraurk"}
{UNIT 1 "Orcish Warrior" 11 1 role=greathordeprops}
{UNIT 1 "Orcish Warrior" 11 1 role=greathordeprops}
{UNIT 1 "Orcish Crossbowman" 11 1 role=greathordeprops}

View file

@ -1,12 +1,12 @@
#textdomain wesnoth-sotbe
#define OLD_ORCISH_SHAMAN X Y ID_STRING NAME_STRING
#define OLD_ORCISH_SHAMAN SIDE X Y ID_STRING NAME_STRING
[unit]
id={ID_STRING}
name={NAME_STRING}
type=Old Orcish Shaman
profile=portraits/old_orcish_shaman.png
side=1
side={SIDE}
x={X}
y={Y}
random_traits=no
@ -17,13 +17,13 @@
[/unit]
#enddef
#define NOVICE_ORCISH_SHAMAN X Y ID_STRING NAME_STRING
#define NOVICE_ORCISH_SHAMAN SIDE X Y ID_STRING NAME_STRING
[unit]
id={ID_STRING}
name={NAME_STRING}
type=Novice Orcish Shaman
profile=portraits/young_orcish_shaman.png
side=1
side={SIDE}
x={X}
y={Y}
random_traits=no
@ -34,13 +34,13 @@
[/unit]
#enddef
#define ORCISH_SHAMAN X Y ID_STRING NAME_STRING
#define ORCISH_SHAMAN SIDE X Y ID_STRING NAME_STRING
[unit]
id={ID_STRING}
name={NAME_STRING}
type=Orcish Shaman
profile=portraits/orcish_shaman.png
side=1
side={SIDE}
x={X}
y={Y}
random_traits=no

BIN
images/misc/map.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
images/misc/visibility.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

View file

@ -6,6 +6,9 @@ Version 1.11.7+dev:
* Campaigns:
* Dead Water:
* New world map.
* Eastern Invasion:
* Made Dacyn use teal TC and Mal-Ravanal blue TC, to make them fit the
portraits more.
* Heir To The Throne:
* Implemented the portrait variations for Delfador and Asheviere.
* Changed Kaylan's portrait and gave him teal team coloring.
@ -27,6 +30,7 @@ Version 1.11.7+dev:
* User interface:
* Added a party full bell to the MP game configuration screen, played once
all human player slots have been taken.
* Change layout for advertized games in the MP lobby and add map icon.
Version 1.11.7:

View file

@ -70,6 +70,7 @@ connect::side::side(connect& parent, side_engine_ptr engine) :
std::vector<std::string>(), parent.combo_control_group_)),
combo_ai_algorithm_(parent.disp(), std::vector<std::string>()),
combo_faction_(parent.disp(), std::vector<std::string>()),
label_leader_name_(parent.video(), engine_->cfg()["name"], font::SIZE_SMALL),
combo_leader_(parent.disp(), std::vector<std::string>()),
combo_gender_(parent.disp(), std::vector<std::string>()),
combo_team_(parent.disp(), engine_->player_teams()),
@ -130,6 +131,7 @@ connect::side::side(const side& a) :
combo_controller_(a.combo_controller_),
combo_ai_algorithm_(a.combo_ai_algorithm_),
combo_faction_(a.combo_faction_),
label_leader_name_(a.label_leader_name_),
combo_leader_(a.combo_leader_),
combo_gender_(a.combo_gender_),
combo_team_(a.combo_team_),
@ -255,22 +257,34 @@ void connect::side::update_ui()
void connect::side::add_widgets_to_scrollpane(gui::scrollpane& pane, int pos)
{
// Offset value to align labels in y-axis.
int label_y_offset = (combo_leader_.height() - label_leader_name_.height()) / 2;
pane.add_widget(&label_player_number_, 0, 5 + pos);
pane.add_widget(combo_controller_.get(), 20, 5 + pos);
pane.add_widget(&label_original_controller_, 20 +
(combo_controller_->width() - label_original_controller_.width()) / 2,
35 + pos + (combo_leader_.height() -
label_original_controller_.height()) / 2);
35 + pos + label_y_offset);
pane.add_widget(&combo_ai_algorithm_, 20, 35 + pos);
pane.add_widget(&combo_faction_, 135, 5 + pos);
pane.add_widget(&combo_leader_, 135, 35 + pos);
pane.add_widget(&label_leader_name_, 135 +
(combo_faction_.width() - label_leader_name_.width()) / 2,
35 + pos + label_y_offset);
pane.add_widget(&combo_leader_, 250, 5 + pos);
pane.add_widget(&combo_gender_, 250, 35 + pos);
pane.add_widget(&combo_team_, 250, 5 + pos);
pane.add_widget(&combo_color_, 365, 5 + pos);
pane.add_widget(&combo_team_, 365, 5 + pos);
pane.add_widget(&combo_color_, 365, 35 + pos);
pane.add_widget(&slider_gold_, 475, 5 + pos);
pane.add_widget(&label_gold_, 475, 35 + pos);
pane.add_widget(&label_gold_, 475 + 5, 35 + pos + label_y_offset);
pane.add_widget(&slider_income_, 475 + slider_gold_.width(), 5 + pos);
pane.add_widget(&label_income_, 475 + slider_gold_.width(), 35 + pos);
pane.add_widget(&label_income_, 475 + 5 + slider_gold_.width(),
35 + pos + label_y_offset);
}
void connect::side::update_faction_combo()
@ -355,11 +369,11 @@ connect::connect(game_display& disp, const std::string& game_name,
waiting_label_(video(), "", font::SIZE_SMALL, font::LOBBY_COLOR),
type_title_label_(video(), _("Player/Type"), font::SIZE_SMALL,
font::LOBBY_COLOR),
faction_title_label_(video(), _("Faction"), font::SIZE_SMALL,
faction_name_title_label_(video(), _("Faction/Name"), font::SIZE_SMALL,
font::LOBBY_COLOR),
team_title_label_(video(), _("Team/Gender"), font::SIZE_SMALL,
leader_gender_title_label_(video(), _("Leader/Gender"), font::SIZE_SMALL,
font::LOBBY_COLOR),
color_title_label_(video(), _("Color"), font::SIZE_SMALL,
team_color_title_label_(video(), _("Team/Color"), font::SIZE_SMALL,
font::LOBBY_COLOR),
gold_title_label_(video(), _("Gold"), font::SIZE_SMALL,
font::LOBBY_COLOR),
@ -469,9 +483,9 @@ void connect::hide_children(bool hide)
waiting_label_.hide(hide);
scroll_pane_.hide(hide); // Scroll pane contents are automatically hidden.
faction_title_label_.hide(hide);
team_title_label_.hide(hide);
color_title_label_.hide(hide);
faction_name_title_label_.hide(hide);
leader_gender_title_label_.hide(hide);
team_color_title_label_.hide(hide);
if (!params().saved_game) {
gold_title_label_.hide(hide);
@ -506,9 +520,9 @@ void connect::layout_children(const SDL_Rect& rect)
left_button->height());
type_title_label_.set_location(left + 30, top + 35);
faction_title_label_.set_location((left + 145), top + 35);
team_title_label_.set_location((left + 260), top + 35);
color_title_label_.set_location((left + 375), top + 35);
faction_name_title_label_.set_location((left + 145), top + 35);
leader_gender_title_label_.set_location((left + 260), top + 35);
team_color_title_label_.set_location((left + 375), top + 35);
gold_title_label_.set_location((left + 493), top + 35);
income_title_label_.set_location((left + 560), top + 35);

View file

@ -81,6 +81,7 @@ public:
gui::combo_drag_ptr combo_controller_;
gui::combo combo_ai_algorithm_;
gui::combo combo_faction_;
gui::label label_leader_name_;
gui::combo combo_leader_;
gui::combo combo_gender_;
gui::combo combo_team_;
@ -134,9 +135,9 @@ private:
gui::label waiting_label_;
gui::label type_title_label_;
gui::label faction_title_label_;
gui::label team_title_label_;
gui::label color_title_label_;
gui::label faction_name_title_label_;
gui::label leader_gender_title_label_;
gui::label team_color_title_label_;
gui::label gold_title_label_;
gui::label income_title_label_;
gui::scrollpane scroll_pane_;

View file

@ -26,6 +26,7 @@
#include "minimap.hpp"
#include "multiplayer_lobby.hpp"
#include "gettext.hpp"
#include "gui/auxiliary/old_markup.hpp"
#include "log.hpp"
#include "playmp_controller.hpp"
#include "sound.hpp"
@ -46,7 +47,8 @@ gamebrowser::gamebrowser(CVideo& video, const config &map_hashes) :
menu(video, empty_string_vector, false, -1, -1, NULL, &menu::bluebg_style),
gold_icon_locator_("themes/gold.png"),
xp_icon_locator_("themes/units.png"),
vision_icon_locator_("misc/invisible.png"),
map_size_icon_locator_("misc/map.png"),
vision_icon_locator_("misc/visibility.png"),
time_limit_icon_locator_("themes/sand-clock.png"),
observer_icon_locator_("misc/eye.png"),
no_observer_icon_locator_("misc/no_observer.png"),
@ -56,6 +58,7 @@ gamebrowser::gamebrowser(CVideo& video, const config &map_hashes) :
margin_(5),
minimap_size_(item_height_ - 2*margin_),
h_padding_(5),
h_padding_image_to_text_(4),
header_height_(20),
selected_(0),
visible_range_(std::pair<size_t,size_t>(0,0)),
@ -163,14 +166,14 @@ void gamebrowser::draw_row(const size_t index, const SDL_Rect& item_rect, ROW_TY
}
const surface status_text(font::get_rendered_text(game.status,
font::SIZE_NORMAL, font_color));
font::SIZE_NORMAL, font_color, TTF_STYLE_BOLD));
const int status_text_width = status_text ? status_text->w : 0;
// First line: draw game name
const surface name_surf(font::get_rendered_text(
font::make_text_ellipsis(game.name + no_era_string, font::SIZE_PLUS,
(item_rect.x + item_rect.w) - xpos - margin_ - status_text_width - h_padding_),
font::SIZE_PLUS, font_color));
font::SIZE_PLUS, font_color, TTF_STYLE_BOLD));
video().blit_surface(xpos, ypos, name_surf);
// Draw status text
@ -196,12 +199,12 @@ void gamebrowser::draw_row(const size_t index, const SDL_Rect& item_rect, ROW_TY
ypos = item_rect.y + 2*item_rect.h/3 - margin_;
// Draw modifications info
const surface mod_info_surf(font::get_rendered_text(
font::make_text_ellipsis(game.mod_info, font::SIZE_NORMAL,
const surface era_and_mod_info_surf(font::get_rendered_text(
font::make_text_ellipsis(game.era_and_mod_info, font::SIZE_NORMAL,
(item_rect.x + item_rect.w) - xpos - margin_),
font::SIZE_NORMAL, font::NORMAL_COLOR));
if(mod_info_surf) {
video().blit_surface(xpos, ypos - mod_info_surf->h/2, mod_info_surf);
if(era_and_mod_info_surf) {
video().blit_surface(xpos, ypos - era_and_mod_info_surf->h/2, era_and_mod_info_surf);
}
// Fourth line
@ -235,7 +238,7 @@ void gamebrowser::draw_row(const size_t index, const SDL_Rect& item_rect, ROW_TY
if(gold_icon) {
video().blit_surface(xpos, ypos - gold_icon->h/2, gold_icon);
xpos += gold_icon->w + h_padding_;
xpos += gold_icon->w + h_padding_image_to_text_;
}
// Draw gold text
@ -252,7 +255,7 @@ void gamebrowser::draw_row(const size_t index, const SDL_Rect& item_rect, ROW_TY
if(xp_icon) {
video().blit_surface(xpos, ypos - xp_icon->h/2, xp_icon);
xpos += xp_icon->w + h_padding_;
xpos += xp_icon->w + h_padding_image_to_text_;
}
// Draw xp text
@ -262,13 +265,32 @@ void gamebrowser::draw_row(const size_t index, const SDL_Rect& item_rect, ROW_TY
xpos += xp_text->w + 2 * h_padding_;
}
if(!game.map_data.empty()) {
// Draw map size icon
const surface map_size_icon(image::get_image(map_size_icon_locator_));
if(map_size_icon) {
video().blit_surface(xpos, ypos - map_size_icon->h/2, map_size_icon);
xpos += map_size_icon->w + h_padding_image_to_text_;
}
// Draw map size text
const surface map_size_text(font::get_rendered_text(game.map_info_size,
font::SIZE_NORMAL, font::NORMAL_COLOR));
if(map_size_text) {
video().blit_surface(xpos, ypos - map_size_text->h/2, map_size_text);
xpos += map_size_text->w + 2 * h_padding_;
}
}
if(!game.time_limit.empty()) {
// Draw time icon
const surface time_icon(image::get_image(time_limit_icon_locator_));
video().blit_surface(xpos, ypos - time_icon->h/2, time_icon);
xpos += time_icon->w + h_padding_;
xpos += time_icon->w + h_padding_image_to_text_;
// Draw time text
const surface time_text(font::get_rendered_text(game.time_limit,
@ -283,7 +305,7 @@ void gamebrowser::draw_row(const size_t index, const SDL_Rect& item_rect, ROW_TY
if(vision_icon) {
video().blit_surface(xpos, ypos - vision_icon->h/2, vision_icon);
xpos += vision_icon->w + h_padding_;
xpos += vision_icon->w + h_padding_image_to_text_;
}
// Draw vision text
@ -298,7 +320,7 @@ void gamebrowser::draw_row(const size_t index, const SDL_Rect& item_rect, ROW_TY
// Draw map settings text
if (game.use_map_settings) {
xpos += vision_text->w + 4 * h_padding_;
xpos += vision_text->w + 3 * h_padding_;
const surface map_settings_text(font::get_rendered_text(
font::make_text_ellipsis(_("Use map settings"), font::SIZE_NORMAL,
(item_rect.x + item_rect.w) - xpos - margin_),
@ -446,61 +468,6 @@ void gamebrowser::set_game_items(const config& cfg, const config& game_config)
games_.back().password_required = game["password"].to_bool();
games_.back().reloaded = game["savegame"].to_bool();
games_.back().have_era = true;
if (!game["mp_era"].empty())
{
const config &era_cfg = game_config.find_child("era", "id", game["mp_era"]);
utils::string_map symbols;
symbols["era_id"] = game["mp_era"];
if (era_cfg) {
games_.back().map_info = era_cfg["name"].str();
} else {
if (!game["require_era"].to_bool(true)) {
games_.back().have_era = true;
} else {
games_.back().have_era = false;
}
games_.back().map_info = vgettext("Unknown era: $era_id", symbols);
verified = false;
}
} else {
games_.back().map_info = _("Unknown era");
verified = false;
}
games_.back().map_data = game["map_data"].str();
if(games_.back().map_data.empty()) {
games_.back().map_data = read_map(game["map"]);
}
if(! games_.back().map_data.empty()) {
try {
std::vector<minimap_cache_item>::iterator i;
bool found = false;
for(i = minimap_cache.begin(); i != minimap_cache.end() && !found; ++i) {
if (i->map_data == games_.back().map_data) {
found = true;
games_.back().map_info_size = i->map_info_size;
games_.back().mini_map = i->mini_map;
}
}
if (!found) {
// Parsing the map and generating the minimap are both cpu expensive
gamemap map(game_config, games_.back().map_data);
games_.back().mini_map = image::getMinimap(minimap_size_, minimap_size_, map, 0);
games_.back().map_info_size = str_cast(map.w()) + utils::unicode_multiplication_sign
+ str_cast(map.h());
}
games_.back().map_info += "" + games_.back().map_info_size;
} catch (incorrect_map_format_error &e) {
ERR_CF << "illegal map: " << e.message << '\n';
verified = false;
} catch(twml_exception& e) {
ERR_CF << "map could not be loaded: " << e.dev_message << '\n';
verified = false;
}
} else {
games_.back().map_info += " — ??×??";
}
games_.back().map_info += " ";
if (game["mp_campaign"].empty()) {
if (!game["mp_scenario"].empty()) {
// Check if it's a multiplayer scenario.
@ -512,6 +479,8 @@ void gamebrowser::set_game_items(const config& cfg, const config& game_config)
"id", game["mp_scenario"]);
}
if (*level_cfg) {
games_.back().map_info = _("Scenario:");
games_.back().map_info += " ";
games_.back().map_info += (*level_cfg)["name"].str();
// Reloaded games do not match the original scenario hash,
// so it makes no sense to test them,
@ -538,52 +507,132 @@ void gamebrowser::set_game_items(const config& cfg, const config& game_config)
} else {
utils::string_map symbols;
symbols["scenario_id"] = game["mp_scenario"];
games_.back().map_info +=
games_.back().map_info =
vgettext("Unknown scenario: $scenario_id", symbols);
verified = false;
}
} else {
games_.back().map_info += _("Unknown scenario");
games_.back().map_info = _("Unknown scenario");
verified = false;
}
} else {
} else { // Is a campaign
const config* level_cfg = &game_config.find_child("campaign", "id",
game["mp_campaign"]);
if (*level_cfg) {
games_.back().map_info = _("Campaign:");
games_.back().map_info += " ";
games_.back().map_info += game["mp_scenario_name"].str();
games_.back().map_info += " (";
games_.back().map_info += (*level_cfg)["name"].str();
games_.back().map_info += ")";
// Difficulty.
const std::vector<std::string> difficulties =
utils::split((*level_cfg)["difficulties"]);
const std::string difficulty_descriptions =
(*level_cfg)["difficulty_descriptions"];
std::vector<std::string> difficulty_options =
utils::split(difficulty_descriptions, ';');
int index = 0;
BOOST_FOREACH(const std::string& difficulty, difficulties) {
if (difficulty == game["difficulty_define"]) {
gui2::tlegacy_menu_item menu_item(difficulty_options[index]);
games_.back().map_info += "";
games_.back().map_info += _("Difficulty:");
games_.back().map_info += " ";
games_.back().map_info += menu_item.label();
games_.back().map_info += " ";
games_.back().map_info += menu_item.description();
break;
}
index++;
}
} else {
utils::string_map symbols;
symbols["campaign_id"] = game["mp_campaign"];
games_.back().map_info +=
games_.back().map_info =
vgettext("Unknown campaign: $campaign_id", symbols);
verified = false;
}
}
games_.back().map_data = game["map_data"].str();
if(games_.back().map_data.empty()) {
games_.back().map_data = read_map(game["map"]);
}
if(! games_.back().map_data.empty()) {
try {
std::vector<minimap_cache_item>::iterator i;
bool found = false;
for(i = minimap_cache.begin(); i != minimap_cache.end() && !found; ++i) {
if (i->map_data == games_.back().map_data) {
found = true;
games_.back().map_info_size = i->map_info_size;
games_.back().mini_map = i->mini_map;
}
}
if (!found) {
// Parsing the map and generating the minimap are both cpu expensive
gamemap map(game_config, games_.back().map_data);
games_.back().mini_map = image::getMinimap(minimap_size_, minimap_size_, map, 0);
games_.back().map_info_size = str_cast(map.w()) + utils::unicode_multiplication_sign
+ str_cast(map.h());
}
} catch (incorrect_map_format_error &e) {
ERR_CF << "illegal map: " << e.message << '\n';
verified = false;
} catch(twml_exception& e) {
ERR_CF << "map could not be loaded: " << e.dev_message << '\n';
verified = false;
}
}
games_.back().mod_info += "Modifications: ";
if (!game["mp_era"].empty())
{
const config &era_cfg = game_config.find_child("era", "id", game["mp_era"]);
utils::string_map symbols;
symbols["era_id"] = game["mp_era"];
if (era_cfg) {
games_.back().era_and_mod_info = _("Era:");
games_.back().era_and_mod_info += " ";
games_.back().era_and_mod_info += era_cfg["name"].str();
} else {
if (!game["require_era"].to_bool(true)) {
games_.back().have_era = true;
} else {
games_.back().have_era = false;
}
games_.back().era_and_mod_info = vgettext("Unknown era: $era_id", symbols);
verified = false;
}
} else {
games_.back().era_and_mod_info = _("Unknown era");
verified = false;
}
if (!game.child_or_empty("modification").empty()) {
games_.back().have_all_mods = true;
games_.back().era_and_mod_info += "";
games_.back().era_and_mod_info += _("Modifications:");
games_.back().era_and_mod_info += " ";
BOOST_FOREACH (const config& m, game.child_range("modification")) {
const config& mod_cfg = game_config.find_child("modification", "id", m["id"]);
if (mod_cfg) {
games_.back().mod_info += mod_cfg["name"].str();
games_.back().mod_info += ", ";
games_.back().era_and_mod_info += mod_cfg["name"].str();
games_.back().era_and_mod_info += ", ";
} else {
games_.back().mod_info += m["id"].str();
games_.back().era_and_mod_info += m["id"].str();
if (m["require_modification"].to_bool(false)) {
games_.back().have_all_mods = false;
games_.back().mod_info += _(" (missing)");
games_.back().era_and_mod_info += _(" (missing)");
}
games_.back().mod_info += ", ";
games_.back().era_and_mod_info += ", ";
}
}
games_.back().mod_info.erase(games_.back().mod_info.size()-2, 2);
games_.back().era_and_mod_info.erase(games_.back().era_and_mod_info.size()-2, 2);
} else {
games_.back().mod_info += "none";
games_.back().have_all_mods = true;
}

View file

@ -43,7 +43,7 @@ public:
name(),
map_info(),
map_info_size(),
mod_info(),
era_and_mod_info(),
gold(),
xp(),
vision(),
@ -71,7 +71,7 @@ public:
std::string name;
std::string map_info;
std::string map_info_size;
std::string mod_info;
std::string era_and_mod_info;
std::string gold;
std::string xp;
std::string vision;
@ -117,6 +117,7 @@ protected:
private:
image::locator gold_icon_locator_;
image::locator xp_icon_locator_;
image::locator map_size_icon_locator_;
image::locator vision_icon_locator_;
image::locator time_limit_icon_locator_;
image::locator observer_icon_locator_;
@ -129,6 +130,7 @@ private:
int margin_;
int minimap_size_;
int h_padding_;
int h_padding_image_to_text_;
int header_height_;
size_t selected_;
std::pair<size_t, size_t> visible_range_;