revised maps: Silverhead Crossing, Weldyn Channel, Blue Water Province

This commit is contained in:
Gunter Labes 2007-10-15 14:59:49 +00:00
parent d49c2ad1a6
commit 20eb2533d8
11 changed files with 506 additions and 325 deletions

View file

@ -2,6 +2,8 @@ Version 1.3.9+svn:
* campaigns:
* language and i18n:
* updated translations: Danish, Galician, Polish, Swedish
* multiplayer:
* revised maps: Silverhead Crossing, Weldyn Channel, Blue Water Province
* miscellaneous and bug fixes:
Version 1.3.9:

View file

@ -7,24 +7,24 @@ Wo , Ww , Ww , Ww , Gg , Rd
Ww , Ww , Ww , Ww , Gs^Fp , Mm , Hh , Wwf , Wwf , Wwf , Gs^Fp , Wwf , Rr , Uu^Uf , Rd , Gs^Fp , Xu , Rr , Mm , Ww , Gg , Gg^Ve , Hh , Ww , Ww , Ww , Xu
Ww , Ww , Ww , Ww , Gg , Wwf , Gg^Fet , Wwf , Uu^Uf , Xu , Ss^Vhs , Xu , Uh , Wwf , Uh , Xu , Gg , Gg , Hh , Chw , Gg , Rd , Wwf , Xu , Wo , Wo , Xu
Ww , Ww , Ww , Gg , Ww , Gg , Wwf , Xu , Xu , Re , Xu , Re , Re , Ww , Re , Re , Xu , Gg , Gg , Ww , Ch , Ch , Rd , Xu , Xu , Uh , Xu
Ww , Ww , Gg , Rd , Gs^Fp , Gg , Rd , Rd , Re , Gg^Ve , Re , Gs^Fp , Ww , Wo , Ww , Ww , Gg , Wwf , Wwf , Re , Ww , Kh , Re , Re , Uu^Vu , Uu^Uf , Xu
Ww , Ww , Gg , Rd , Gs^Fp , Gg , Rd , Rd , Re , Gg^Ve , Re , Gs^Fp , Ww , Wo , Ww , Ww , Gg , Wwf , Wwf , Re , Ww , Kh , Re , Re , Uu^Vu , Re^Uf , Xu
Ww , Gg , Gg , Kh , Gg , Rd , Rd , Hh , Gs^Fp , Gg , Gg , Gg , Ww , Wo , Wo , Ww , Wwf , Gg , Gs^Fp , Re , Re , Gg , Gg , Re , Re , Wwf , Xu
Ww , Gg , Ch , 1 Kh , Ch , Ggf , Gg , Gg , Gg , Gg , Gs^Fp , Ww , Ww , Ww , Ww , Wwf , Ww^Vm , Kh , Re , Hh , Gs^Fp , Gg , Hh , Re , Wwf , Ww , Xu
Ww , Gg , Ch , Kh , Ch , Gg , Gg , Xu , Gg , Hh , Ww , Wwf , Wwf , Rr , Ww , Chw , Kh , Wwf , Re , Re , Gg , Re , Re , Gg , Gs^Fp , Ww , Ww
Gg , Gg , Rd , Rd , Gg , Ww , Ww , Xu , Re , Gg , Ww , Chw , Wwf , Rr , Wwf , Wwf , Ww , Gs^Fp , Re , Xu , Re , 2 Kud , Gg , Rd , Gg , Ww , Ww
Ww , Gg , Gg , Rd , Gg , Mm , Xu , Gs^Fp , Re , Kh , Kh , Wwf , Ww , Mm , Wwf , Ww , Ww , Gg , Gg , Xu , Uu^Uf , Uh , Cud , Cud , Gg , Gg , Uh
Ww , Rd , Gg , Rd , Rd , Gs^Fp , Hh , Gs^Fp , Re , Gg , Ww^Vm , Ww , Ww , Wo , Ww , Ww , Ww , Gg , Gg , Gg , Xu , Gg , Kud , Cud , Rd , Gg , Xu
Ww , Gg , Gg , Rd , Gg , Mm , Xu , Gs^Fp , Re , Kh , Kh , Wwf , Ww , Mm , Wwf , Ww , Ww , Gg , Gg , Xu , Re^Uf , Uh , Cud , Cud , Gg , Gg , Uh
Ww , Rd , Gg , Rd , Rd , Gs^Fp , Hh , Re^Uf , Re , Gg , Ww^Vm , Ww , Ww , Wo , Ww , Ww , Ww , Gg , Gg , Gg , Xu , Gg , Kud , Cud , Rd , Gg , Xu
Xu , Rd , Xu , Wwf , Rd , Re , Gg , Re , Gg , Wwf , Wwf , Ww , Ww , Ww , Ww , Ww , Gs^Fp , Rd , Gg^Ve , Gg , Gg , Kud , Cud , Gg , Rd , Xu , Xu
Xu , Uu^Uf , Uu^Uf , Uu^Vu , Uh , Uu , Re , Gg , Gg , Xu , Ww , Hh , Gs^Fp , Gs^Fp , Hh , Chw , Gg , Hh , Gs^Fp , Xu , Rd , Rd , Gg , Rd , Rd , Gg , Uu^Uf
Xu , Cud , Wwf , Xu , Xu , Ww , Ww , Cud , Xu , Xu , Xu , Xu , Chw , Xu , Chw , Xu , Xu , Xu , Xu , Gs^Fp , Gg , Rd , Rd , Xu , Gg , Gg , Xu
Xu , Uh , Ww , Ww , Ww , Gg , Kud , Cud , Rd , Uu^Vu , Rr , Uu^Uf , Uh , Rr , Uh , Uu^Uf , Rr , Uu^Vu , Rd , Rd , Gg , Rd , Gg , Ss , Uu^Uf , Cud , Xu
Xu , Uh , Ww , Ww , Ww , Gg , Kud , Cud , Rd , Uu^Vu , Rr , Uu^Uf , Uh , Rr , Uh , Uu^Uf , Rr , Uu^Vu , Rd , Rd , Gg , Rd , Gg , Ss , Re^Uf , Cud , Xu
Xu , Xu , Ww , Ss , Ss^Vhs , Rd , Rd , Xu , Rr , Rr , Uh , Xu , Wwf , Wwf , Wwf , Xu , Uh , Rr , Rr , Xu , Rd , Gg , Ss^Vhs , Gg , Rd , Cud , Xu
Xu , Xu , Xu , Xu , Rr , Rr , Rd , Rd , Xu , Rd , Xu , Wwf , Wwf , Rr , Wwf , Wwf , Xu , Rd , Xu , Rd , Rd , Kud , Gg , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Cud , Cud , Gg , Gg , Rd , Gg , Gg , Wwf , Mm , Gg^Fet , Hh , Gg , Wwf , Gg , Rd , Gg , Gg , Cud , Cud , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Rr , Uu^Uf , Uu^Uf , Gg^Ve , Gg , Wwf , Gg , Gg , Gg , Gg^Fet , Gg , Wwf , Gg , Gg^Ve , Uu^Uf , Uu^Uf , Rr , Xu , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Rd , Xu , Xu , Xu , Gg^Fet , Wwf , Gs^Fp , Hh , Rr , Mm , Hh , Wwf , Wwf , Xu , Xu , Xu , Rd , Xu , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Xu , Rd , Rr , Rr , Wwf , Wwf , Gg , Gg , Xu , Rr , Rr , Gg , Gs^Fp , Wwf , Wwf , Rr , Xu , Xu , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Xu , Xu , Wwf , Chw , Wwf , Gg , Rd , Xu , Uu^Uf , Xu , Rr , Gg , Gg , Wwf , Wwf , Chw , Wwf , Xu , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Xu , Wwf , Xu , Wwf , Rr , Rd , Rd , Uh , Rd , Uu^Uf , Rd , Rd , Rr , Rr , Xu , Wwf , Xu , Xu , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Uu^Uf , Rr , Rr , Rd , Uu^Uf , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Cud , Cud , Gg , Gg , Rd , Gg , Gg , Wwf , Mm , Gs^Fp , Hh , Gg , Wwf , Gg , Rd , Gg , Gg , Cud , Cud , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Re , Re^Uf , Gs^Fp , Gg^Ve , Gg , Wwf , Gg , Gg , Gg , Gg^Fet , Gg , Wwf , Gg , Gg^Ve , Gs^Fp , Re^Uf , Re , Xu , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Re , Xu , Xu , Rd , Gg , Wwf , Gs^Fp , Hh , Rd , Mm , Hh , Wwf , Wwf , Rd , Xu , Xu , Re , Xu , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Re , Xu , Re , Xu , Wwf , Wwf , Gg , Gg , Xu , Rd , Gg , Gg , Wwf , Xu , Xu , Re , Xu , Xu , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Xu , Re , Wwf , Chw , Wwf , Gg , Re , Xu , Uu^Uf , Xu , Re , Gs^Fp , Re , Wwf , Wwf , Chw , Wwf , Xu , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Xu , Wwf , Xu , Wwf , Re , Re , Rd , Uh , Rd , Uu^Uf , Rd , Re , Re , Re , Re , Wwf , Xu , Xu , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Uu^Uf , Rd , Rd , Rd , Uu^Uf , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu
Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Uh , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu , Xu

View file

@ -1,25 +1,14 @@
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , Ss , Ss , Mm , Gs^Fp , Hh , Hh , Gg , Ss , Ss , Gg^Fet , Hh , Hh , Mm , Gs^Fp , Gs^Fp , Hh , Wwf , Ww , Ww , Ww , Wwf , Mm , Hh , Gs^Fp , Gs^Fp , Hh , Ss , _off^_usr
_off^_usr , Rp , Gs^Fp , Gg , Gg , Gg , Gg^Fet , Gs^Fp , Hh , Mm , Gs^Fp , Gg , Gs^Fp , Hh , Gs^Fp , Hh , Wwf , Ww , Ww , Wwf , Wwf , Gs^Fp , Gg^Fet , Gs^Fp , Mm , Ss , Mm , Hh , _off^_usr
_off^_usr , Gg , Gg , Rp , Mm , Gg , Gg^Ve , Gg , Hh , Gg , Gg , Re , Gg , Re , Ch , Mm , Wwf , Ww , Wwf , Gs^Fp , Hh , Mm , Ss , Ss^Vhs , Hh , Gs^Fp , Ss , Gs^Fp , _off^_usr
_off^_usr , Hh , Rp , Gs^Fp , Hh , Gg , Gg , Re , Mm , Re , Re , Re , Re , Ch , 1 Kh , Ch , Wwf , Ww , Wwf , Gs^Fp , Hh , Hh , Gs^Fp , Gg , Gg , Gg , Hh , Hh , _off^_usr
_off^_usr , Gs^Fp , _off^_usr , Ss , _off^_usr , Rp , _off^_usr , Ss , _off^_usr , Gs^Fp , _off^_usr , Hh , _off^_usr , Mm , _off^_usr , Gs^Fp , _off^_usr , Wwf , _off^_usr , Ww , _off^_usr , Wwf , _off^_usr , Hh , _off^_usr , Gs^Fp , _off^_usr , Gs^Fp , _off^_usr
_off^_usr , Rp , Hh , Gs^Fp , Ss , Rp , Gg^Fet , Gs^Fp , Hh , Mm , Gs^Fp , Gg , Gs^Fp , Hh , Gs^Fp , Hh , Hh , Wwf , Ww , Ww , Wwf , Gs^Fp , Gg^Fet , Gs^Fp , Mm , Ss , Mm , Hh , _off^_usr
_off^_usr , Gg , Mm , Rp , Rp , Gg , Gg^Ve , Gg , Hh , Gg , Gg , Re , Gg , Re , Ch , Mm , Wwf , Ww , Ww , Wwf , Wwf , Mm , Ss , Ss^Vhs , Hh , Gs^Fp , Ss , Gs^Fp , _off^_usr
_off^_usr , Gg , Gg , Rp , Gg , Gg , Gg , Re , Mm , Re , Re , Re , Re , Ch , 1 Kh , Ch , Wwf , Ww , Wwf , Gs^Fp , Hh , Hh , Gs^Fp , Gg , Gg , Gg , Hh , Hh , _off^_usr
_off^_usr , Rp , Rp , Re^Uf , Gs^Fp , Re , Re , Gg , Re , Gg , Gg , Gg , Kh , Gg , Ch , Wwf , Kh , Ww^Bw\ , Gg , Gg , Gg , Gg , Gg , Re , Re , Re , Gg , Gg , _off^_usr
_off^_usr , Rp , Mm , Re , Re , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Wwf , Wwf , Ww , Ww , Gg , Gg , Gg , Gg , Gg^Vh , Gg , Re , Ss , Hh , Re , Gg , _off^_usr
_off^_usr , Mm , Hh , Re , Gs^Fp , Gg , Gg , Gg , Gg , Mm , Hh , Hh , Gg , Gg^Ve , Wwf , Ww , Gg , Ss , Gs^Fp , Gg , Gg , Gg , Gg , Gg , Gs^Fp , Ss , Re^Uf , Gg , _off^_usr
_off^_usr , Gg , Gg , Re , Gg , Gg^Vh , Gg , Gg , Gs^Fp , Hh , Gs^Fp , Ww , Gs^Fp , Wwf , Wwf , Ww , Gg , Gg , Ss^Vhs , Ww , Hh , Mm , Gg , Gg^Ve , Gg , Gg , Re , Gg , _off^_usr
_off^_usr , Re , Re , Gs^Fp , Gg , Gg , Gg , Gg , Gg , Ww^Bw\ , Ww , Ww , Ww , Ww , Ww , Wo , Ww , Ww , Gg , Ww , Hh , Gs^Fp , Gg , Gg , Gg , Gg , Gg , Mm , _off^_usr
_off^_usr , Rp , Mm , Gs^Fp , Re^Uf , Re , Gg , Gg , Gg , Gs^Fp , Gg , Gg , Gg , Wwf , Wwf , Ww , Ww , Gg , Gg , Gg , Gg , Gg^Vh , Gg , Re , Ss , Hh , Re , Gg , _off^_usr
_off^_usr , Mm , Hh , Re , Re , Gg , Gg , Gg , Gg , Re^Uf , Hh , Hh , Gg , Gg^Ve , Wwf , Ww , Gg , Ss , Gs^Fp , Gg , Gg , Gg , Gg , Gg , Gs^Fp , Ss , Re^Uf , Gg , _off^_usr
_off^_usr , Re , Re , Gg , Gg , Gg^Vh , Gg , Gg , Gs^Fp , Hh , Mm , Ww , Gs^Fp , Wwf , Wwf , Ww , Gg , Gg , Ss^Vhs , Ww , Hh , Mm , Gg , Gg^Ve , Gg , Gg , Re , Gg , _off^_usr
_off^_usr , Re , Gg , Gs^Fp , Gg , Gg , Gg , Gg , Gg , Ww^Bw\ , Ww , Ww , Ww , Ww , Ww , Wo , Ww , Ww , Gg , Ww , Gs^Fp , Hh , Gg , Gg , Gg , Gg , Gg , Mm , _off^_usr
_off^_usr , Re^Uf , Gs^Fp , Re^Uf , Ss , Gg , Gg , Gs^Fp , Gg , Ww , Ww^Bw\ , Gs , Ww , Gs , Ww , Ww , Wo , Ww , Ww , Ww , Wwf , Wwf , Rp , Rp , Gg , Gs^Fp , Hh , Gs^Fp , _off^_usr
_off^_usr , Rp , Hh , Mm , Hh , Hh , Gg , Hh , Mm , Ww , Ww , Rp , Gs , Gs , Gs , Wwf , Ww , Ww , Ww , Mm , Gs^Fp , Rp , Wwf , Wwf , Gg , Rp , Rp , Rp , _off^_usr
_off^_usr , Wwf , Rp , Wwf , Wwf , Wwf , Rp , Gg , Gg , Gg , Wwf , Wwf , Gs^Fp , Hh , Wwf , Hh , Gs , Wwf , Wwf , Gg , Gg , Gg , Rp , Wwf , Rp , Wwf , Wwf , Wwf , _off^_usr
_off^_usr , Rp , Wwf , Rp , Rp , Wwf , Rp , Rp , Gg , Mm , Wwf , Ww , Gs , Wwf , Wwf , Gs , Gs^Fp , Rp , Wwf , Ww , Gg , Hh , Rp , Hh , Wwf , Mm , Rp , Rp , _off^_usr
_off^_usr , Gs^Fp , Rp , Gs^Fp , Gg , Rp , Wwf , Wwf , Gg^Fet , Ww , Ww , Ww , Ww , Ww , Gs , Gs , Gs , Gs , Ww , Ww , Mm , Gs^Fp , Gg , Gg , Hh , Re^Uf , Hh , Re^Uf , _off^_usr
_off^_usr , Mm , Hh , Gg , Gg , Gg , Rp , Hh , Wwf , Ww , Ww , Ww , Wo , Wo , Ww , Ww , Ww , Ww , Ww^Bw\ , Ww^Bw\ , Gg , Gg , Gg , Gg , Ss , Gg^Fet , Gs^Fp , Re , _off^_usr
_off^_usr , Gg , Gg , Gg , Gg , Gg^Ve , Gg , Mm , Gs^Fp , Ww , Gg , Gg , Ww , Ww , Ww , Wwf , Ww , Ww , Ww , Hh , Gg , Gg , Gg , Gg^Vh , Gg , Gg , Gg , Re , _off^_usr
_off^_usr , Gg , Re , Ss , Gg , Gg , Gg , Gg , Hh , Gg , Ss^Vhs , Ss , Gg , Ww , Wwf , Gg^Ve , Gs^Fp , Hh , Gs^Fp , Mm , Gs^Fp , Gg , Gg , Gg , Gg , Re , Re , Mm , _off^_usr
_off^_usr , Gg , Re^Uf , Hh , Gs^Fp , Re , Gg , Gg^Vh , Gg , Gg , Gs^Fp , Gg , Gg , Ww , Wwf , Wwf , Gg , Gg , Hh , Gg , Gg , Gg , Gg , Re , Re , Gs^Fp , Hh , Rp , _off^_usr
_off^_usr , Gg , Re , Re , Ss , Re , Gg , Gg , Gg , Gg , Gg , Ww^Bw\ , Ww , Wwf , Wwf , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Gg , Re , Re^Uf , Rp , Mm , Rp , _off^_usr
_off^_usr , Gs^Fp , Gg , Gg , Re , Gg , Gg , Hh , Gs^Fp , Gs^Fp , Gg , Ww , Kh , Ch , Ch , Ch , Kh , Gg , Gg , Re , Re , Re , Re , Gg , Gs^Fp , Rp , Rp , Gg , _off^_usr
_off^_usr , Hh , Ss , Gs^Fp , Gg , Ss^Vhs , Gs^Fp , Mm , Hh , Wwf , Wwf , Ww , Wwf , Mm , 2 Kh , Re , Re , Re , Re , Gs^Fp , Gg^Ve , Gg , Gg , Gs^Fp , Gg , Rp , Gg , Gg , _off^_usr
_off^_usr , Ss , Gs^Fp , Mm , Hh , Gg^Fet , Ss , Gs^Fp , Wwf , Ww , Ww , Wwf , Wwf , Hh , Ch , Gs^Fp , Gg , Gs^Fp , Mm , Gg^Fet , Hh , Mm , Hh , Gg , Rp , Gs^Fp , Mm , Rp , _off^_usr
_off^_usr , Hh , Gs^Fp , Ss , Hh , Mm , Gs^Fp , Wwf , Wwf , Ww , Ww , Wwf , Hh , Gs^Fp , Gg^Fet , Gs^Fp , Hh , Mm , Hh , Gs^Fp , Ss , Hh , Gs^Fp , Hh , Ss , Ss , Hh , Gs^Fp , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , Rp , Wwf , Rp , Rp , Wwf , Rp , Rp , Gg ,

View file

@ -1,24 +1,24 @@
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Gs^Vht , Gs^Ft , Wwf , Wwf , Mm , Mm , Chs , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Rd , Rd , Rd , Wwf , Chw , Wwf , Rd , Rd , Rd , Ss , Ss^Vhs , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Ss , Rd , Chr , Chr , Chr , Chw , Chw , Chw , Chr , Chr , Chr , Rd , Gs^Ft , Gs^Ft , Rd , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Gs^Ft , Ss^Vhs , Rd , Rd , Rd , 1 Kh , Chw , Wwf , Rd , Wwf , Chw , 4 Kh , Wwf , Rd , Rd , Rd , Rd , Rd , Mm , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Gs^Ft , Rd , Rd , Gs^Ft , Rd , Rd , Wwf , Wwf , Rd , Rd , Gs^Ft , Rd , Wwf , Wwf , Rd , Wwf , Wwf , Wwf , Wwf , Hh , Wwf , Wwf , Wwf , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Rd , Mm , Mm , Hh , Rd , Rd , Rd , Wwf , Rd , Rd , Gs^Ft , Hh , Rd , Rd , Wwf , Rd , Chw , Rd , Rd , Rd , Wwf , Wwf , Rd , Ss^Vhs , Rd , Mm , Gs^Ft , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Gs^Ft , Ss^Vhs , Rd , Rd , Rd , 1 Kh , Chw , Wwf , Rd , Wwf , Chw , 4 Kh , Wwf , Rd , Rd , Rd , Rd , Rd , Ss^Vhs , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Gs^Ft , Rd , Rd , Gs^Ft , Rd , Rd , Wwf , Wwf , Rd , Rd , Gs^Ft , Rd , Wwf , Wwf , Rd , Wwf , Wwf , Wwf , Wwf , Rd , Wwf , Wwf , Wwf , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Rd , Mm , Mm , Hh , Rd , Rd , Rd , Wwf , Rd , Rd , Gs^Ft , Hh , Rd , Rd , Wwf , Rd , Chw , Rd , Rd , Rd , Wwf , Wwf , Rd , Chw , Rd , Mm , Gs^Ft , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Hh , Chr , Chw , Rd , Rd , Rd , Rd , Rd , Rd , Wwf , Wwf , Mm^Vhh , Rd , Gs^Ft , Rd , Wwf , Mm , Rd , Rd , Chw , Rd , Rd , Wwf , Chw , Chr , Rd , Rd , Rd , Rd , Ss^Vhs , Gs^Ft , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , Rd , Rd , Rd , Rd , Rd , Gs^Ft , Rd , Ss^Vhs , Rd , Rd , Rd , Gs^Ft , Wwf , Rd , Chr , Rd , Rd , Wwf , Wwf , Wwf , Wwf , Rd , Wwf , Wwf , Rd , Rd , Kh , Rd , Chr , Chr , Kh , Rd , Rd , Rd , Rd , _off^_usr , _off^_usr , _off^_usr
_off^_usr , Wwf , Rd , Wwf , Wwf , Wwf , Rd , Rd , Rd , Rd , Rd , Chw , Rd , Hh , Mm , Wwf , Rd , Chw , Wwf , Wwf , Wwf , Ss^Vhs , Hh , Mm , Wwf , Rd , Rd , Hh^Vhh , Hh , Rd , Rd , Rd , Rd , Rd , Rd , Hh , Hh , Rd , Rd , Hh , _off^_usr
Rd , Chw , Wwf , Gs^Ft , Gs^Ft , Ss^Vhs , Wwf , Wwf , Wwf , Wwf , Hh , Mm , Ww , Ww , Hh , Wwf , Wwf , Kh , Mm , Mm^Xm , Mm^Xm , Hh , Mm^Xm , Mm^Xm , Mm , Hh , Rd , Rd , Gs^Ft , Rd , Rd , Mm , Hh , Rd , Gs^Ft , Gs^Ft , Mm , Rd , Ss^Vhs , Rd , Chw
Hh , Wwf , Rd , Rd , Rd , Rd , Rd , Rd , Rd , Rd , Wwf , Wwf , Wwf , Wwf , Wwf , Chw , Chw , Mm^Xm , Rr , Rr , Rr , Rr , Mm^Xm , Wwf , Wwf , Wwf , Wwf , Wwf , Rd , Wwf , Wwf , Wwf , Wwf , Wwf , Rd , Rd , Rd , Rd , Rd , Rd , Rd
Mm , Gs^Ft , Wwf , Rd , Rd , Hh , Chw , Gs^Ft , Rd , Rd , Rd , Rd , Rd , Rd , Rd , Wwf , Mm^Xm , Mm , Hh , Rd , Rd , Rd , Rr , Wwf , Mm^Xm , Hh , Gs^Ft , Rd , Wwf , Ss^Vhs , Rd , Rd , Rd , Gs^Ft , Wwf , Wwf , Wwf , Wwf , Rd , Rd , Rd
Wwf , Rd , Wwf , Wwf , Rd , Wwf , Mm , Gs^Ft , Hh , Rd , Rd , Ss^Vhs , Rd , Rd , Rd , Hh , Wwf , Wwf , Rr , Rd , Chw , Rd , Rr , Mm , Wwf , Wwf , Rd , Rd , Rd , Rd , Rd , Rd , Hh , Gs^Ft , Mm , Hh , Rd , Rd , Wwf , Gs^Ft , Wwf
Rd , Rd , Rd , Rd , Wwf , Rd , Wwf , Wwf , Rd , Wwf , Rd , Wwf , Wwf , Wwf , Gs^Ft , Wwf , Mm^Xm , Wwf , Rr , Rr , Rd , Rr , Hh , Mm^Xm , Mm^Xm , Chw , Rd , Wwf , Rd , Wwf , Rd , Rd , Rd , Rd , Chw , Rd , Rd , Rd , Wwf , Wwf , Mm
Rd , Rd , Rd , Rd , Rd , Gs^Ft , Hh , Rd , Wwf , Mm , Wwf , Rd , Rd , Rd , Wwf , Hh , Wwf , Mm^Xm , Mm^Xm , Hh , Rr , Mm^Xm , Rr , Kh , Chw , Wwf , Wwf , Ww , Wwf , Mm , Wwf , Wwf , Rd , Rd , Rd , Ss^Vhs , Rd , Gs^Ft , Rd , Chw , Hh
Chw , Hh , Ss^Vhs , Rd , Mm , Hh , Gs^Ft , Rd , Hh , Rd , Rd , Rd , Gs^Ft , Hh^Vhh , Rd , Rd , Mm , Mm , Mm^Xm , Ss^Vhs , Mm^Xm , Wwf , Mm , Chw , Wwf , Wwf , Hh , Hh , Ww , Chw , Hh , Rd , Wwf , Wwf , Wwf , Wwf , Gs^Ft , Wwf , Wwf , Wwf , Rd
_off^_usr , _off^_usr , Rd , Rd , Hh , Rd , Rd , Kh , Rd , Chr , Rd , Kh , Hh , Rd , Rd , Wwf , Wwf , Wwf , Hh , Wwf , Wwf , Rd , Wwf , Chr , Rd , Wwf , Mm , Rd , Rd , Rd , Rd , Rd , Rd , Rd , Rd , Rd , Wwf , Rd , Rd , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , Rd , Gs^Ft , Rd , Rd , Chr , Rd , Rd , Chr , Rd , Wwf , Wwf , Rd , Rd , Rd , Wwf , Mm , Wwf , Rd , Rd , Rd , Rd , Wwf , Gs^Ft , Rd , Rd , Rd , Ss^Vhs , Rd , Gs^Ft , Chw , Hh , Hh , Rd , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , Rd , Rd , Rd , Rd , Rd , Gs^Ft , Rd , Ss^Vhs , Rd , Rd , Rd , Gs^Ft , Wwf , Rd , Chr , Rd , Rd , Wwf , Wwf , Wwf , Wwf , Rd , Wwf , Wwf , Rd , Rd , Kh , Chr , Chr , Chr , Kh , Rd , Rd , Rd , Rd , _off^_usr , _off^_usr , _off^_usr
_off^_usr , Wwf , Rd , Wwf , Wwf , Wwf , Rd , Rd , Rd , Rd , Rd , Chw , Rd , Hh , Mm , Wwf , Rd , Chw , Wwf , Wwf , Wwf , Ss^Vhs , Hh , Mm , Wwf , Rd , Rd , Hh^Vhh , Hh , Rd , Rd , Rd , Rd , Rd , Rd , Hh , Hh , Rd , Gs^Ft , Hh , _off^_usr
_off^_usr , Chw , Wwf , Gs^Ft , Gs^Ft , Ss^Vhs , Wwf , Wwf , Wwf , Wwf , Hh , Mm , Ww , Ww , Hh , Wwf , Wwf , Kh , Mm , Mm^Xm , Mm^Xm , Hh , Mm^Xm , Mm^Xm , Mm , Hh , Rd , Rd , Gs^Ft , Rd , Rd , Mm , Hh , Rd , Gs^Ft , Gs^Ft , Mm , Rd , Ss^Vhs , Rd , _off^_usr
_off^_usr , Wwf , Mm , Rd , Rd , Rd , Rd , Rd , Rd , Rd , Wwf , Wwf , Wwf , Wwf , Wwf , Chw , Chw , Mm^Xm , Chw , Rr , Rr , Rr , Mm^Xm , Wwf , Wwf , Wwf , Wwf , Wwf , Rd , Wwf , Wwf , Wwf , Wwf , Wwf , Rd , Rd , Rd , Rd , Rd , Rd , _off^_usr
_off^_usr , Gs^Ft , Wwf , Hh , Rd , Hh , Chw , Gs^Ft , Rd , Rd , Rd , Rd , Gs^Ft , Hh , Rd , Wwf , Mm^Xm , Mm , Hh , Rd , Rd , Rd , Rr , Wwf , Mm^Xm , Hh , Gs^Ft , Rd , Wwf , Ss^Vhs , Rd , Rd , Rd , Gs^Ft , Wwf , Wwf , Wwf , Wwf , Chw , Rd , _off^_usr
_off^_usr , Rd , Wwf , Wwf , Gs^Ft , Wwf , Mm , Gs^Ft , Hh , Rd , Rd , Ss^Vhs , Rd , Rd , Rd , Hh , Wwf , Wwf , Rr , Rd , Chw , Rd , Rr , Mm , Wwf , Wwf , Rd , Hh , Rd , Rd , Rd , Rd , Hh , Gs^Ft , Mm , Hh , Hh , Gs^Ft , Wwf , Gs^Ft , _off^_usr
_off^_usr , Rd , Chw , Rd , Wwf , Rd , Wwf , Wwf , Rd , Wwf , Rd , Wwf , Wwf , Wwf , Gs^Ft , Wwf , Mm^Xm , Wwf , Rr , Rr , Rd , Rr , Hh , Mm^Xm , Mm^Xm , Chw , Rd , Wwf , Gs^Ft , Wwf , Rd , Rd , Rd , Rd , Chw , Rd , Rd , Rd , Wwf , Wwf , _off^_usr
_off^_usr , Rd , Rd , Rd , Rd , Gs^Ft , Hh , Rd , Wwf , Mm , Wwf , Rd , Rd , Rd , Wwf , Hh , Wwf , Mm^Xm , Mm^Xm , Hh , Rr , Mm^Xm , Chw , Kh , Chw , Wwf , Wwf , Ww , Wwf , Mm , Wwf , Wwf , Rd , Rd , Rd , Ss^Vhs , Rd , Gs^Ft , Mm , Chw , _off^_usr
_off^_usr , Hh , Ss^Vhs , Rd , Mm , Hh , Gs^Ft , Rd , Hh , Rd , Rd , Rd , Gs^Ft , Hh^Vhh , Rd , Rd , Mm , Mm , Mm^Xm , Ss^Vhs , Mm^Xm , Wwf , Mm , Chw , Wwf , Wwf , Hh , Hh , Ww , Chw , Hh , Rd , Wwf , Wwf , Wwf , Wwf , Gs^Ft , Wwf , Wwf , Wwf , _off^_usr
_off^_usr , _off^_usr , Gs^Ft , Rd , Hh , Rd , Rd , Kh , Rd , Chr , Rd , Kh , Hh , Rd , Rd , Wwf , Wwf , Wwf , Hh , Wwf , Wwf , Rd , Wwf , Chr , Rd , Wwf , Mm , Rd , Rd , Rd , Rd , Rd , Rd , Rd , Rd , Rd , Wwf , Rd , Rd , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , Rd , Gs^Ft , Rd , Rd , Chr , Rd , Chr , Chr , Rd , Wwf , Wwf , Rd , Rd , Rd , Wwf , Mm , Wwf , Rd , Rd , Rd , Rd , Wwf , Gs^Ft , Rd , Rd , Rd , Ss^Vhs , Rd , Gs^Ft , Chw , Hh , Hh , Rd , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Ss^Vhs , Gs^Ft , Rd , Rd , Rd , Rd , Chw , Wwf , Rd , Rd , Chw , Chw , Rd , Wwf , Wwf , Rd , Gs^Ft , Gs^Ft , Mm^Vhh , Rd , Wwf , Rd , Rd , Rd , Rd , Mm , Rd , Rd , Chr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Mm , Wwf , Ss^Vhs , Wwf , Wwf , Wwf , Rd , Wwf , Rd , Rd , Rd , Wwf , Rd , Gs^Ft , Hh , Rd , Rd , Wwf , Wwf , Rd , Rd , Rd , Hh , Gs^Ft , Mm , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Wwf , Mm , Hh , Rd , Wwf , Rd , Wwf , Wwf , Wwf , Chw , Rd , Rd , Rd , Chw , Wwf , Rd , Rd , Rd , Gs^Ft , Gs^Ft , Rd , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Mm , Wwf , Chw , Wwf , Wwf , Wwf , Rd , Wwf , Rd , Rd , Rd , Wwf , Rd , Gs^Ft , Hh , Rd , Rd , Wwf , Wwf , Rd , Rd , Rd , Hh , Gs^Ft , Mm , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Wwf , Ss^Vhs , Rd , Rd , Wwf , Rd , Wwf , Wwf , Wwf , Chw , Rd , Rd , Rd , Chw , Wwf , Rd , Rd , Rd , Gs^Ft , Gs^Ft , Rd , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Rd , Rd , Rd , Gs^Ft , Rd , Chr , 2 Kh , Chr , Wwf , Chw , Wwf , Chr , 3 Kh , Chr , Rd , Ss , Ss^Vhs , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Gs^Ft , Ss^Vhs , Rd , Rd , Chr , Rd , Chw , Chw , Chw , Rd , Chr , Rd , Rd , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr
_off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , Ss , Chs , Rd , Rd , Wwf , Wwf , Wwf , Gs^Vht , Rd , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr , _off^_usr

View file

@ -2,10 +2,10 @@
<html lang="en">
<head>
<link rel="stylesheet" href="../units.css" title="Eleazar">
<title>Wesnoth unit tree</title>
<title>Wesnoth unit list - Index</title>
</head>
<body>
<h1>Wesnoth unit tree</h1>
<h1>Wesnoth unit list</h1>
<p>Based on version<!-- --> X.X.X</p>
<p><a href="tree_race.html">Race</a></p>
<ul>

View file

@ -2,7 +2,7 @@
<html lang="en">
<head>
<link rel="stylesheet" href="../units.css" title="Eleazar">
<title>Wesnoth unit tree</title>
<title>Wesnoth unit list - Index</title>
</head>
<body>
<h1>Wesnoth unit list</h1>

View file

@ -2,7 +2,7 @@
<html lang="en">
<head>
<link rel="stylesheet" href="../units.css" title="Eleazar">
<title>Wesnoth unit tree</title>
<title>Wesnoth unit list - Tree</title>
</head>
<body>
<h1>Wesnoth unit list</h1>

View file

@ -2,7 +2,7 @@
<html lang="en">
<head>
<link rel="stylesheet" href="../units.css" title="Eleazar">
<title>Wesnoth unit tree</title>
<title>Wesnoth unit list - Tree</title>
</head>
<body>
<h1>Wesnoth unit list</h1>

View file

@ -2,7 +2,7 @@
<html lang="en">
<head>
<link rel="stylesheet" href="../units.css" title="Eleazar">
<title>Wesnoth unit tree</title>
<title>Wesnoth unit list - Tree</title>
</head>
<body>
<h1>Wesnoth unit list</h1>

View file

@ -23,7 +23,7 @@
# and the reports. Use relative paths, that doesn't contain spaces, it wouldn't work if a space is found.
# Run the script, no parameters needed.
#
# Version: 1.0 (14 Apr 2007)
# Version: 1.1 (28 Apr 2007)
# Author: Miguel Zapico (elricz.m@gmail.com)
# -- Options --
@ -31,13 +31,17 @@
my $html_gen = 1;
# This option will determine if the html files translations are generated, and it will create the folders
# based on the contents of the po folder of Wesnoth
my $translate = 1;
my $translate = 0;
# This option will determine if the attack images are copied, and the images units are copied and colorized
my $images = 1;
# This option will determine if the html report on made animations is generated
my $animations = 0;
my $animations = 1;
# This is the version number that will appear on the unit trees
my $version = '1.3.2+svn';
my $version = '1.3.8';
# These option will try to process the user made Eras
my $ime = 1; # Imperial Era
my $exe = 1; # Extended Era
my $eom = 1; # Era of Myths
# If the script is run on Windows, set this option to 1
my $windows = 1;
@ -45,8 +49,8 @@ use Tie::File;
use File::Copy;
# -- Paths --
my ($wesnoth_dir, $data_dir, $html_dir, $report_dir);
$wesnoth_dir = '../../..';
my ($wesnoth_dir, $data_dir, $html_dir, $report_dir, $base_dir, $units_dir, $base_report_dir, $link_back);
$wesnoth_dir = '../Wesnoth';
$html_dir = 'files';
$report_dir = 'reports';
@ -55,7 +59,9 @@ unless (-e $html_dir) {mkdir $html_dir or die "$html_dir directory cannot be cre
unless (-e $report_dir) {mkdir $report_dir or die "$report_dir directory cannot be created: $!\n";};
unless (-e "$html_dir/attacks") {mkdir "$html_dir/attacks" or die "$html_dir/attacks directory cannot be created: $!\n";};
unless (-e "$html_dir/units") {mkdir "$html_dir/units" or die "$html_dir/units directory cannot be created: $!\n";};
$data_dir = "$wesnoth_dir/data";
$data_dir = "$wesnoth_dir/data/core";
$base_dir = $wesnoth_dir; $base_report_dir = $report_dir;
$units_dir = $data_dir . "/units";
# Variables used to generate the html
my ($i, $html, %types, %unit_id, @adv);
@ -69,59 +75,16 @@ my %races = qw/race Race drake Drakes dwarf race^Dwarves elf Elves goblin race^G
my $att_html = "<tr>\n\t<td><img src={icon}></td>\n\t";
$att_html .= "<td>{name}</td>\n\t<td>{type}</td>\n\t<td>{damage}-{number}</td>\n\t<td>{range}</td>\n\t<td>{special}<!-- -->&nbsp;</td>\n</tr>\n";
# -- HTML files and raw data reports generation --
print "Starting the generation of unit files\n";
# Information on the units.cfg file
&ProcessTypes();
#Files that will contain the units data
open (UNITS, "> $report_dir/units.txt") or die "Couldn't create units.txt: $!\n";
open (RES, "> $report_dir/resistances.txt") or die "Couldn't create resistances.txt: $!\n";
open (ADV, "> $report_dir/advances.txt") or die "Couldn't create advances.txt: $!\n";
open (ATTACK, "> $report_dir/attacks.txt") or die "Couldn't create attacks.txt: $!\n";
open (FACT, "> $report_dir/factions.txt") or die "Couldn't create factions.txt: $!\n";
# Headers
print UNITS "id\tname\trace\thitpoints\tmovement_type\tmovement\texperience\tlevel\talignment\timage\tcost\tusage\tabilities\n";
print RES "id\tVariable\tValue\tCategory\n";
print ADV "id\tAdvanceTo\n";
print ATTACK "id\tname\ttype\trange\tdamage\tnumber\ticon\tspecial\n";
# Load HTML template
open (HTML, "unit.html");
$html .= $_ while (<HTML>);
close HTML;
# Now all the unit files in the data/units directory
# chdir ($data_dir) or die "Can't chdir to $dir $!";
my @units = glob("$data_dir/units/*.cfg");
&ProcessUnit($_) foreach @units;
# Factions, populates the factions file
my @factions = glob("$data_dir/factions/*");
my %mp;
foreach (@factions) {
&ProcessFaction ($_) if (/cfg$/);
}
close UNITS;
close RES;
close ADV;
close ATTACK;
close FACT;
&ProcessTypes('units.cfg');
# -- HTML files and raw data reports generation --
&ProduceDataFiles("unit.html");
# Multiplayer
# Check advances to not miss any unit
tie @adv, 'Tie::File', "$report_dir/advances.txt" or die "Couldn't open advances.txt: $!\n";
for (@adv) {
my ($id, $adv) = split /\t/;
$mp{$adv}++ if $mp{$id}; # List the units that will be processed as MP
s/\t([A-Za-z ]+)/\t$unit_id{$1}/; # Changes names to ids in the advance file
}
untie @adv;
# Print multiplayer units
open (UNITS, "$report_dir/units.txt") or die "Couldn't open units.txt: $!\n";
open (MP, "> $report_dir/mp_units.txt") or die "Couldn't create mp_units.txt: $!\n";
print MP "id\tname\trace\thitpoints\tmovement_type\tmovement\texperience\tlevel\talignment\timage\tcost\tusage\tabilities\n";
print MP "id\tname\trace\thitpoints\tmovement_type\tmovement\texperience\tlevel\talignment\timage\tcost\tusage\tabilities\tfull_name\n";
while (<UNITS>) {
my $unit = $_;
my ($none, $id, @other) = split /\t/; # We have names, not ids, on the %mp hash
@ -131,131 +94,7 @@ close MP;
close UNITS;
# -- Tree generation --
if ($html_gen) {
print "Starting the generation of unit trees\n";
copy('units.css',"$html_dir/units.css");
# Load HTML templates
open (HTML, "tree_header.html") or die "Couldn't open header: $!\n";
my @header = <HTML>;
s/X.X.X/$version/ foreach @header;
close HTML;
open (HTML, "tree_footer.html") or die "Couldn't open footer: $!\n";
my @footer = <HTML>;
@footer[2] =~ s/date/gmtime(time)/e; # Generation time
close HTML;
# Get the advances for each unit
open (ADV, "$report_dir/advances.txt") or die "Couldn't open advances.txt: $!\n";
while (<ADV>) {
chomp;
my ($id, $adv) = split /\t/;
$spaces{$id}++; # Used on the rowspan
$adv_from{$adv} = $id;
push @{$adv{$id}}, $adv;
}
close ADV;
# Calculate the correct row span for each unit
foreach (sort keys %spaces) {
if ($spaces{$_} > 1 and $adv_from{$_}) {
$spaces{$adv_from{$_}} += $spaces{$_} - 1;
}
}
# Units information
open (UNITS, "$report_dir/units.txt") or die "Couldn't open units.txt: $!\n";
while (<UNITS>) {
chomp;
my ($id, @stats) = split /\t/;
$units{$id} = [ @stats ];
$units_id{$stats[0]} = $id;
}
close UNITS;
# Attacks information
open (ATT, "$report_dir/attacks.txt") or die "Couldn't open attacks.txt: $!\n";
while (<ATT>) {
chomp;
my ($id, @stats) = split /\t/;
$att_id{$id}++; # Numeral for the hash, there may be better ways to do it
$attacks{$id}[$att_id{$id}-1] = [ @stats ];
}
close ATT;
# Tree by race
open (INDEX, "> $html_dir/tree_race.html") or die "Couldn't create tree_race.html: $!\n";
open (HTML, "tree_race_header.html") or die "Couldn't open header: $!\n";
while (<HTML>) {s/X.X.X/$version/; print INDEX;}
close HTML;
foreach $race (sort keys %races) {
if ($race ne "race") {
open ($race, ">", "$html_dir/tree_$race.html") or die "Couldn't create $race.html: $!\n"; # Use the variable as the filehandle
print $race @header;
print INDEX "\n<tr>\n<td class='race' id=\"$race\" colspan=5>$races{$race}</td>\n</tr>\n";
print $race "\n<tr>\n<td class='race' id=\"$race\" colspan=5>$races{$race}</td>\n</tr>\n";
foreach (sort keys %units) {
if ($race eq $units{$_}[1]) { # Only process units for the current race
if ($units{$_}[12] eq '') {
&PrintUnitTree($_, *INDEX) unless $adv_from{$_};
&PrintUnitTree($_, $race) unless $adv_from{$_};
}
}
}
print $race @footer;
close $race;
}
}
print INDEX @footer;
close INDEX;
# Update Advance From on each file
&UpdateAdvanceFrom;
# Tree by faction
# Load factions
open (INDEX, "> $html_dir/tree_faction.html") or die "Couldn't create tree_faction.html: $!\n";
open (HTML, "tree_fact_header.html") or die "Couldn't open header: $!\n";
while (<HTML>) {s/X.X.X/$version/; print INDEX;}
close HTML;
# Delete the advances from the units in the factions, so the tree can be built
my @delete_adv = qw/Thug Footpad Spearman Bowman Poacher Lieutenant/;
delete($adv_from{$units_id{$_}}) foreach @delete_adv;
open (FACTIONS, "$report_dir/factions.txt") or die "Couldn't open factions.txt: $!\n";
while (<FACTIONS>) {
chomp;
my ($faction, @stats) = split /\t/;
if ($faction =~ /(\w+)-default/) { # The standard factions came with "default" in their name
$factions{$1} = [ @stats ];
open ($faction, ">", "$html_dir/tree_$faction.html") or die "Couldn't create $faction.html: $!\n";
print $faction @header;
my $faction_name = ucfirst($1);
# Adjust the name of the factions to get them translated
$faction_name = 'Knalgan Alliance' if $faction_name eq 'Knalgans';
print INDEX "\n<tr>\n<td class='race' id=\"$1\" colspan=5>$faction_name</td>\n</tr>\n";
foreach (@stats) {
&PrintUnitTree($units_id{$_}, *INDEX) unless $adv_from{$units_id{$_}};
&PrintUnitTree($units_id{$_}, $faction) unless $adv_from{$units_id{$_}};
}
print $faction @footer;
close $faction;
}
}
close FACTIONS;
# Load footer
print INDEX @footer;
close INDEX;
# Copy the index file before translating
if ($translate) {
open (HTML, 'index_languages.html') or die "Couldn't open index_languages.html: $!\n";
} else {
open (HTML, 'index_base.html') or die "Couldn't open index_base.html: $!\n";
}
open (INDEX, "> $html_dir/index.html") or die "Couldn't create index.html: $!\n";
while (<HTML>) {s/X.X.X/$version/; print INDEX;}
close HTML;
close INDEX;
}
&GenerateTree;
# -- Translate file --
&TranslateUnits if $translate;
@ -264,99 +103,203 @@ print "Removing English comments\n";
&RemoveComments if $html_gen;
# -- Copy images --
if ($images) {
# Attacks images
print "Copying attack icons\n";
open (ATT, "$report_dir/attacks.txt") or die "Couldn't open attacks.txt: $!\n";
while (<ATT>) {
chomp;
my (@stats) = split /\t/;
copy ("$wesnoth_dir/images/$stats[6]","$html_dir/$stats[6]");
print "$wesnoth_dir/images/$stats[6]\t$html_dir/$stats[6]\n";
}
close ATT;
# Unit images, to be colorized
print "Copying and colorizing units\n";
# Prepare folders
my @unit_images = glob("$wesnoth_dir/images/units/*");
foreach $unit_image (@unit_images) {
$unit_image =~ s(.*\/)(); # Take only the folder name
if ($unit_image !~ /\./) {
unless (-e "$html_dir/units/$unit_image") {mkdir "$html_dir/units/$unit_image" or die "$unit_image directory cannot be created: $!\n";};
}
}
# Unit images
open (UNITS, "$report_dir/units.txt") or die "Couldn't open units.txt: $!\n";
my $colorizer = "TeamColorizer.pl";
$colorizer = './' . $colorizer unless $windows;
while (<UNITS>) {
chomp;
my @stats = split /\t/;
(my $image = $stats[9]);
$image =~ s/"//g;
system ("$colorizer $wesnoth_dir/images/$image $html_dir/$image");
$image =~ s/.png/+female.png/;
system ("$colorizer $wesnoth_dir/images/$image $html_dir/$image");
}
close UNITS;
# zombie units
my @zombies = qw/drake mounted saurian swimmer troll wose/;
foreach $zombie (@zombies) {
system ("$colorizer $wesnoth_dir/images/units/undead/zombie-$zombie.png $html_dir/units/undead/zombie-$zombie.png");
system ("$colorizer $wesnoth_dir/images/units/undead/soulless-$zombie.png $html_dir/units/undead/soulless-$zombie.png");
}
}
&CopyImages if ($images);
# -- Generate animation information
if ($animations) {
print "Generating animation information\n";
my %tags;
my @anim = qw/animation death defend healing_anim idle_anim leading_anim movement_anim recruit_anim/;
my $re_anim = "(";
$re_anim .= "$_|" foreach @anim;
$re_anim =~ s/\|$/)/;
# Load HTML templates
open (HTML, "anim_header.html") or die "Couldn't open header: $!\n";
my @header = <HTML>;
close HTML;
open (HTML, "tree_footer.html") or die "Couldn't open footer: $!\n";
my @footer = <HTML>;
@footer[2] =~ s/date/gmtime(time)/e; # Generation time
close HTML;
open (INDEX, "> $html_dir/animations.html") or die "Couldn't create animations.html: $!\n";
# Load units information
my @units = glob("$data_dir/units/*.cfg");
foreach $unit (@units) {
my ($id,$tag,$in,$images);
open (UNIT, "<$unit") or die "Can't open $unit: $!\n";
while (<UNIT>) {
chomp; s/^\s*//;
$id = $1 if /id=(.+)/;
($tag,$in,$images) = ($1,1,0) if /\[$re_anim\]/;
$images++ if ($in && /image=/);
if (m{\[\/$re_anim\]}) {
$tags{$id}{$tag} += $images;
($in,$images) = (0,0);
}
}
&GenerateAnimationInfo if ($animations);
# Extended Era
if ($exe) {
$i=300; $version = 'x.31.0';
($html, %unit_id, @adv, %spaces, %adv_from, %units, %units_id, %adv, %factions, %attacks, %att_id, %races) = ();
$unit_id{AdvanceTo} = 'AdvanceTo';
$link_back = '../';
$wesnoth_dir = $base_dir . '/userdata/data/campaigns/Extended_Era';
$data_dir = $wesnoth_dir;
$units_dir = $data_dir . "/units/standard";
$html_dir = "$html_dir/EXE";
$report_dir = "$html_dir/data";
unless (-e $html_dir) {mkdir $html_dir or die "$html_dir directory cannot be created: $!\n";};
unless (-e $report_dir) {mkdir $report_dir or die "$html_dir directory cannot be created: $!\n";};
print "Processing Extended Era\n";
foreach ( glob("$data_dir/races/*.cfg") ) {
s|$data_dir\/||;
&ProcessTypes($_);
}
# Print information
print INDEX @header;
foreach $unit (sort keys %tags) {
print INDEX "<tr>\n\t<td>$unit</td>\n";
foreach $tag (@anim) {
print INDEX "\t<td" . ($tags{$unit}{$tag} ? " class=\"yes\">$tags{$unit}{$tag}" : ">~") . "</td>\n";
}
print INDEX "</tr>\n";
&ProduceDataFiles("unit_exe.html");
# Get races
open (UNITS, "$report_dir/units.txt") or die "Couldn't open units.txt: $!\n";
while (<UNITS>) {
my (@stats) = split /\t/;
$races{$stats[2]} = ucfirst($stats[2]);
}
print INDEX @footer;
close UNITS;
&GenerateTree ('_exe');
&RemoveComments() if $html_gen;
&GenerateAnimationInfo if ($animations);
# Move the html files to the main html folder
foreach ( glob("$html_dir/*.html") ) {
(my $new_file = $_) =~ s|EXE\/||;
move($_,$new_file) unless /tree_|index|animation/;
}
&RemoveComments(1) if $html_gen;
$html_dir =~ s|(.+)\/EXE|$1|;
&CopyImages if ($images);
}
# Imperial Era
if ($ime) {
$i=600; $version = '0.16.3';
($html, %unit_id, @adv, %spaces, %adv_from, %units, %units_id, %adv, %factions, %attacks, %att_id, %races) = ();
$unit_id{AdvanceTo} = 'AdvanceTo';
$link_back = '';
$wesnoth_dir = $base_dir . '/userdata/data/campaigns/Imperial_Era';
$data_dir = $wesnoth_dir;
$units_dir = $data_dir . "/units";
$html_dir = "$html_dir/IME";
$report_dir = "$html_dir/data";
unless (-e $html_dir) {mkdir $html_dir or die "$html_dir directory cannot be created: $!\n";};
unless (-e $report_dir) {mkdir $report_dir or die "$html_dir directory cannot be created: $!\n";};
print "Processing Imperial Era\n";
&ProcessTypes('units/various.cfg');
&ProduceDataFiles("unit_IME.html");
# Get races
open (UNITS, "$report_dir/units.txt") or die "Couldn't open units.txt: $!\n";
while (<UNITS>) {
my (@stats) = split /\t/;
$races{$stats[2]} = ucfirst($stats[2]);
}
close UNITS;
&GenerateTree ('_ime');
&RemoveComments(1) if $html_gen;
&GenerateAnimationInfo if ($animations);
$html_dir =~ s|(.+)\/IME|$1|;
&CopyImages if ($images);
}
# Era of Myths
if ($eom) {
$i=900; $version = 'Beta 8';
($html, %unit_id, @adv, %spaces, %adv_from, %units, %units_id, %adv, %factions, %attacks, %att_id, %races) = ();
$unit_id{AdvanceTo} = 'AdvanceTo';
$link_back = '';
$wesnoth_dir = $base_dir . '/userdata/data/campaigns/Era_of_Myths';
$data_dir = $wesnoth_dir;
$units_dir = $data_dir . "/units";
$html_dir = "$html_dir/EOM";
$report_dir = "$html_dir/data";
unless (-e $html_dir) {mkdir $html_dir or die "$html_dir directory cannot be created: $!\n";};
unless (-e $report_dir) {mkdir $report_dir or die "$html_dir directory cannot be created: $!\n";};
print "Processing Era of Myths\n";
&ProcessTypes('units/EOM_Movetypes.cfg');
&ProduceDataFiles("unit_EOM.html");
# Get races
open (UNITS, "$report_dir/units.txt") or die "Couldn't open units.txt: $!\n";
while (<UNITS>) {
my (@stats) = split /\t/;
$races{$stats[2]} = ucfirst($stats[2]);
}
close UNITS;
&GenerateTree ('_eom');
&RemoveComments(1) if $html_gen;
&GenerateAnimationInfo if ($animations);
$html_dir =~ s|(.+)\/EOM|$1|;
&CopyImages if ($images);
}
# ----------------------------------
# -- Subroutines used in the code --
# ----------------------------------
# Sub to produce the data and HTML files
sub ProduceDataFiles {
my $html_unit = shift;
print "Starting the generation of unit files\n";
#Files that will contain the units data
open (UNITS, "> $report_dir/units.txt") or die "Couldn't create units.txt: $!\n";
open (RES, "> $report_dir/resistances.txt") or die "Couldn't create resistances.txt: $!\n";
open (ADV, "> $report_dir/advances.txt") or die "Couldn't create advances.txt: $!\n";
open (ATTACK, "> $report_dir/attacks.txt") or die "Couldn't create attacks.txt: $!\n";
open (FACT, "> $report_dir/factions.txt") or die "Couldn't create factions.txt: $!\n";
# Headers
print UNITS "id\tname\trace\thitpoints\tmovement_type\tmovement\texperience\tlevel\talignment\timage\tcost\tusage\tabilities\tfull_name\n";
print RES "id\tVariable\tValue\tCategory\n";
print ADV "id\tAdvanceTo\n";
print ATTACK "id\tname\ttype\trange\tdamage\tnumber\ticon\tspecial\n";
# Load HTML template
open (HTML, $html_unit);
$html = '';
$html .= $_ while (<HTML>);
close HTML;
# Now all the unit files in the data/units directory
my @units = glob("$units_dir/*.cfg");
&ProcessUnit($_) foreach @units;
# For units stored in folders
my @camps = glob("$units_dir/*");
foreach (@camps) {
unless (/cfg$/) {
($camp = $_) =~ s/(.*)\///;
@units = glob($_ . '/*.cfg');
&ProcessUnit ($_) foreach @units;
}
}
# Factions, populates the factions file
my @factions;
if ($html_unit eq 'unit.html') {
@factions = glob("$wesnoth_dir/data/multiplayer/factions/*");
} else {
@factions = glob("$wesnoth_dir/factions/*");
}
my %mp;
foreach (@factions) {
&ProcessFaction ($_) if (/cfg$/);
}
if ($html_dir =~ /EXE$/) { # Merge mainline units for extended era
open (MAIN_UNITS, "$base_report_dir/units.txt") or die "Couldn't open units.txt: $!\n";
while (<MAIN_UNITS>) {
print UNITS unless /^id/;
my ($id, $name) = split /\t/;
$unit_id{$name} = $id;
}
close MAIN_UNITS;
open (MAIN_ATT, "$base_report_dir/attacks.txt") or die "Couldn't open attacks.txt: $!\n";
while (<MAIN_ATT>) {print ATTACK unless /^id/;}
close MAIN_ATT;
}
close UNITS;
close RES;
close ADV;
close ATTACK;
close FACT;
# Check advances to not miss any unit
tie @adv, 'Tie::File', "$report_dir/advances.txt" or die "Couldn't open advances.txt: $!\n";
for (@adv) {
my ($id, $adv) = split /\t/;
$mp{$adv}++ if $mp{$id}; # List the units that will be processed as MP
s/\t([0-9A-Za-z_ ]+)/\t$unit_id{$1}/; # Changes names to ids in the advance file
}
if ($html_dir =~ /EXE$/) { # Merge mainline units for extended era
open (MAIN_ADV, "$base_report_dir/advances.txt") or die "Couldn't open advances.txt: $!\n";
while (<MAIN_ADV>) {
chomp;
push @adv, $_ unless /^id/;
}
close MAIN_ADV;
}
untie @adv;
}
# -- Subroutines used in the code--
# Sub to parse the unit file, and print both the text files and the html
sub ProcessUnit {
$unit = shift;
@ -376,6 +319,7 @@ sub ProcessUnit {
if (/=/ and $flag == 1) {
my ($prop,$value) = split /=/;
$unit{$prop} = $value unless $unit{$prop}; # The first value encountered is the one that last
$unit{$prop} = $value if $unit{$prop} eq 'null'; # Unless we have a null value stored before
}
# Abilities, single regular expresion
$unit{abilities} .= lc("$1 ") if (/{ABILITY_(.*?)(_.*)?}/ and $flag == 1);
@ -415,6 +359,7 @@ sub ProcessUnit {
$flag = 1;
$attack{icon} = "attacks/$attack{name}.png" unless $attack{icon}; # If the value is not present, make it equal to the name
print ATTACK "$i\t$attack{name}\t$attack{type}\t$attack{range}\t$attack{damage}\t$attack{number}\t$attack{icon}\t$attack{special}\n";
$attack{icon} = "attacks/" . $attack{icon} unless $attack{icon} =~ /^attacks/; # Fix the path to the images folder
($att .= $att_html) =~ s/{(\w+?)}/$attack{$1}/eg; # Construct the html for the attack
%attack = '';
}
@ -428,9 +373,12 @@ sub ProcessUnit {
}
# Print to match the headers, there may be empty elements
$unit{abilities} =~ s/\s$//; # Fix the extra space in the abilities
print UNITS "$i\t$unit{id}\t$unit{race}\t$unit{hitpoints}\t$unit{movement_type}\t$unit{movement}\t$unit{experience}";
print UNITS "\t$unit{level}\t$unit{alignment}\t$unit{image}\t$unit{cost}\t$unit{usage}\t$unit{abilities}\n";
$unit{image} = $unit{image2} if $unit{image2};
$unit{name} =~ s/^.+?"(.+)"$/$1/; # Fix the name
if ($unit{id}) {
print UNITS "$i\t$unit{id}\t$unit{race}\t$unit{hitpoints}\t$unit{movement_type}\t$unit{movement}\t$unit{experience}";
print UNITS "\t$unit{level}\t$unit{alignment}\t$unit{image}\t$unit{cost}\t$unit{usage}\t$unit{abilities}\t$unit{name}\n";
$unit{image} = $unit{image2} if $unit{image2};
}
# Advances
$unit_id{$unit{id}} = $i;
@ -466,10 +414,246 @@ sub ProcessUnit {
}
}
# Sub to generate the unit trees
sub GenerateTree {
if ($html_gen) {
my $era_file = shift;
print "Starting the generation of unit trees\n";
copy('units.css',"$html_dir/units.css");
# Load HTML templates
open (HTML, "tree_header$era_file.html") or die "Couldn't open header: $!\n";
my @header = <HTML>;
s/X.X.X/$version/ foreach @header;
close HTML;
open (HTML, "tree_footer.html") or die "Couldn't open footer: $!\n";
my @footer = <HTML>;
@footer[2] =~ s/date/gmtime(time)/e; # Generation time
close HTML;
# Get the advances for each unit
open (ADV, "$report_dir/advances.txt") or die "Couldn't open advances.txt: $!\n";
while (<ADV>) {
chomp;
my ($id, $adv) = split /\t/;
$spaces{$id}++; # Used on the rowspan
$adv_from{$adv} = $id;
push @{$adv{$id}}, $adv;
}
close ADV;
# Calculate the correct row span for each unit
foreach (sort keys %spaces) {
if ($spaces{$_} > 1 and $adv_from{$_}) {
$spaces{$adv_from{$_}} += $spaces{$_} - 1;
}
}
foreach $id (sort keys %spaces) {
my $expected;
foreach $i (0..$#{ $adv{$id} }) {
$expected += $spaces{$adv{$id}[$i]};
}
$spaces{$id}=$expected if $spaces{$id}<$expected;
}
# Units information
open (UNITS, "$report_dir/units.txt") or die "Couldn't open units.txt: $!\n";
while (<UNITS>) {
chomp;
my ($id, @stats) = split /\t/;
$units{$id} = [ @stats ];
$units_id{$stats[0]} = $id;
$adv_to{$stats[0]} = $stats[-1];
}
close UNITS;
# Attacks information
open (ATT, "$report_dir/attacks.txt") or die "Couldn't open attacks.txt: $!\n";
while (<ATT>) {
chomp;
my ($id, @stats) = split /\t/;
$att_id{$id}++; # Numeral for the hash, there may be better ways to do it
$attacks{$id}[$att_id{$id}-1] = [ @stats ];
}
close ATT;
# Tree by race
open (INDEX, "> $html_dir/tree_race.html") or die "Couldn't create tree_race.html: $!\n";
open (HTML, "tree_race_header$era_file.html") or die "Couldn't open header: $!\n";
while (<HTML>) {s/X.X.X/$version/; print INDEX;}
close HTML;
foreach $race (sort keys %races) {
if ($race ne "race") {
open ($race, ">", "$html_dir/tree_$race.html") or die "Couldn't create $race.html: $!\n"; # Use the variable as the filehandle
print $race @header;
print INDEX "\n<tr>\n<td class='race' id=\"$race\" colspan=6>$races{$race}</td>\n</tr>\n";
print $race "\n<tr>\n<td class='race' id=\"$race\" colspan=5>$races{$race}</td>\n</tr>\n";
foreach (sort keys %units) {
if ($race eq $units{$_}[1]) { # Only process units for the current race
&PrintUnitTree($_, *INDEX) unless $adv_from{$_};
&PrintUnitTree($_, $race) unless $adv_from{$_};
}
}
print $race @footer;
close $race;
}
}
print INDEX @footer;
close INDEX;
# Update Advance From on each file
&UpdateAdvanceFrom;
# Tree by faction
# Load factions
open (INDEX, "> $html_dir/tree_faction.html") or die "Couldn't create tree_faction.html: $!\n";
open (HTML, "tree_fact_header$era_file.html") or die "Couldn't open header: $!\n";
while (<HTML>) {s/X.X.X/$version/; print INDEX;}
close HTML;
# Delete the advances from the units in the factions, so the tree can be built
my @delete_adv = qw/Thug Footpad Spearman Bowman Poacher Lieutenant/;
delete($adv_from{$units_id{$_}}) foreach @delete_adv;
open (FACTIONS, "$report_dir/factions.txt") or die "Couldn't open factions.txt: $!\n";
while (<FACTIONS>) {
chomp;
my ($faction, @stats) = split /\t/;
# Identify the standard factions for each Era
if ($faction =~ /(\w+)-default/ || $faction =~ /^imper-(\w+)/ || $faction =~ /(\w+)-extended/ || $faction =~ /(\w+)-EOM/) {
$factions{$1} = [ @stats ];
open ($faction, ">", "$html_dir/tree_$faction.html") or die "Couldn't create $faction.html: $!\n";
print $faction @header;
my $faction_name = ucfirst($1);
# Adjust the name of the factions to get them translated
$faction_name = 'Knalgan Alliance' if $faction_name eq 'Knalgans';
print INDEX "\n<tr>\n<td class='race' id=\"$1\" colspan=5>$faction_name</td>\n</tr>\n";
foreach (@stats) {
&PrintUnitTree($units_id{$_}, *INDEX) unless $adv_from{$units_id{$_}};
&PrintUnitTree($units_id{$_}, $faction) unless $adv_from{$units_id{$_}};
}
print $faction @footer;
close $faction;
}
}
close FACTIONS;
# Load footer
print INDEX @footer;
close INDEX;
# Copy the index file before translating
if ($translate) {
open (HTML, 'index_languages.html') or die "Couldn't open index_languages.html: $!\n";
} else {
open (HTML, "index_base$era_file.html") or die "Couldn't open index_base.html: $!\n";
}
open (INDEX, "> $html_dir/index.html") or die "Couldn't create index.html: $!\n";
while (<HTML>) {s/X.X.X/$version/; print INDEX;}
close HTML;
close INDEX;
}
}
# Sub to copy images
sub CopyImages {
# Era of Myths images
my ($att_folder, $unit_folder, @unit_images);
if ($wesnoth_dir =~ /Era_of_Myths/) {
$att_folder = 'attacks/';
$unit_folder = 'units/';
}
# Attacks images
print "Copying attack icons\n";
open (ATT, "$report_dir/attacks.txt") or die "Couldn't open attacks.txt: $!\n";
while (<ATT>) {
chomp;
my (@stats) = split /\t/;
copy ("$data_dir/images/$stats[6]","$html_dir/$att_folder$stats[6]");
print "$data_dir/images/$stats[6]\t$html_dir/$att_folder$stats[6]\n";
}
close ATT;
# Unit images, to be colorized
print "Copying and colorizing units\n";
# Prepare folders
@unit_images = glob("$data_dir/images/units/*");
@unit_images = glob("$data_dir/images/*") if ($wesnoth_dir =~ /Era_of_Myths/);
foreach $unit_image (@unit_images) {
$unit_image =~ s(.*\/)(); # Take only the folder name
if ($unit_image !~ /\./) {
unless (-e "$html_dir/units/$unit_image") {mkdir "$html_dir/units/$unit_image" or die "$unit_image directory cannot be created: $!\n";};
}
}
# Unit images
open (UNITS, "$report_dir/units.txt") or die "Couldn't open units.txt: $!\n";
my $colorizer = "TeamColorizer.pl";
$colorizer = './' . $colorizer unless $windows;
while (<UNITS>) {
chomp;
my @stats = split /\t/;
(my $image = $stats[9]);
$image =~ s/"//g;
system ("$colorizer $data_dir/images/$image $html_dir/$unit_folder$image");
$image =~ s/.png/+female.png/;
system ("$colorizer $data_dir/images/$image $html_dir/$unit_folder$image");
}
close UNITS;
# zombie units
my @zombies = qw/drake mounted saurian swimmer troll wose/;
foreach $zombie (@zombies) {
system ("$colorizer $data_dir/images/units/undead/zombie-$zombie.png $html_dir/units/undead/zombie-$zombie.png");
system ("$colorizer $data_dir/images/units/undead/soulless-$zombie.png $html_dir/units/undead/soulless-$zombie.png");
}
}
# Sub to generate animation information
sub GenerateAnimationInfo {
print "Generating animation information\n";
my %tags;
my @anim = qw/animation death defend healing_anim idle_anim leading_anim movement_anim recruit_anim/;
my $re_anim = "(";
$re_anim .= "$_|" foreach @anim;
$re_anim =~ s/\|$/)/;
# Load HTML templates
open (HTML, "anim_header.html") or die "Couldn't open header: $!\n";
my @header = <HTML>;
close HTML;
open (HTML, "tree_footer.html") or die "Couldn't open footer: $!\n";
my @footer = <HTML>;
@footer[2] =~ s/date/gmtime(time)/e; # Generation time
close HTML;
open (INDEX, "> $html_dir/animations.html") or die "Couldn't create animations.html: $!\n";
# Load units information
my @units = glob("$units_dir/*.cfg");
foreach $unit (@units) {
my ($id,$tag,$in,$images);
open (UNIT, "<$unit") or die "Can't open $unit: $!\n";
while (<UNIT>) {
chomp; s/^\s*//;
$id = $1 if /id=(.+)/;
($tag,$in,$images) = ($1,1,0) if /\[$re_anim\]/;
$images++ if ($in && /image=/);
if (m{\[\/$re_anim\]}) {
$tags{$id}{$tag} += $images;
($in,$images) = (0,0);
}
}
}
# Print information
print INDEX @header;
foreach $unit (sort keys %tags) {
print INDEX "<tr>\n\t<td>$unit</td>\n";
foreach $tag (@anim) {
print INDEX "\t<td" . ($tags{$unit}{$tag} ? " class=\"yes\">$tags{$unit}{$tag}" : ">~") . "</td>\n";
}
print INDEX "</tr>\n";
}
print INDEX @footer;
}
# Sub to process the move types data from the units.cfg file
sub ProcessTypes {
my ($flag, $id);
open (TYPES, "<$data_dir/units.cfg") or die "Can't open units.cfg: $!\n";
open (TYPES, "<$data_dir/$_[0]") or die "Can't open units.cfg: $!\n";
open (REPORT, ">$report_dir/types.txt") or die "Can't open $unit: $!\n";
print REPORT "Mov_type\tVariable\tValue\tCategory\n";
while (<TYPES>) {
@ -511,7 +695,7 @@ sub ProcessFaction {
$faction =~ s/factions\/(.+)\.cfg/$1/;
$unit_list .= "$1," if /^(?:leader|recruit)=(.+)/; # Only get the leaders and recruit, and all in the same line
}
$unit_list =~ s/,/\t/g;
$unit_list =~ s/,\s?/\t/g;
$mp{$_}++ foreach split (/\t/, $unit_list); # Feed the %mp hash with the units
$faction =~ s(.*\/)(); # Take only the faction name
print FACT "$faction\t$unit_list\n";
@ -555,8 +739,8 @@ sub PrintUnitTree {
sub PrintUnit {
my $unit = shift; my $fh = shift;
(my $filename = $units{$unit}[0]) =~ s/\s/_/g;
print $fh "<a href=$filename.html><img src=$units{$unit}[8] alt=\"$units{$unit}[0]\"></a>";
print $fh "<br>\n<a href=$filename.html>$units{$unit}[0]</a>";
print $fh "<a href=$link_back$filename.html><img src=$units{$unit}[8] alt=\"$units{$unit}[0]\"></a>";
print $fh "<br>\n<a href=$link_back$filename.html>$units{$unit}[0]</a>";
print $fh "<br>\n<!-- -->$units{$unit}[7]";
print $fh "<br>\nHP:$units{$unit}[2]";
print $fh "&nbsp;&nbsp;MP:$units{$unit}[4]";
@ -583,6 +767,7 @@ sub UpdateAdvanceFrom {
$adv_html = "<a href=$filename.html>$units{$adv_from{$id}}[0]</a>";
}
s/--advancefrom--/$adv_html/;
s{>([^<]+)</a}{>$adv_to{$1}</a} if ($html_dir =~ /EOM$/); # Change the advance_to name
last if (/<b>HP: <\/b>/); # Stop processing the file here
}
untie @html;
@ -599,6 +784,8 @@ sub RemoveComments {
s/<!-- -->//g;
s|\.\./unit|unit|;
s|race\^||;
s|src=("?)|src=$1../|g if $_[0];
s{src="../(?!units)}{src="../units/}g if ($html_dir =~ /EOM$/); # Change links for EOM
}
untie @html;
}

View file

@ -8,6 +8,9 @@ Version 1.3.9+svn:
* Language and translations
* Updated translations: Danish, Galician, Polish, Swedish.
* Multiplayer
* Revised maps: Silverhead Crossing, Weldyn Channel, Blue Water Province.
Version 1.3.9:
* Campaigns