diff --git a/changelog.md b/changelog.md index 41849979403d..1c4c70525fbe 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,9 @@ ### Add-ons client * Ensure the client doesn't re-download dependencies that have just been updated during an Update All run by re-reading add-on versions after each update batch (issue #3273). + ### Campaigns + * Delfador's Memoirs: + * S12: Fix a few case where dialog and events sound odd or fire out of order (issue #4614) ## Version 1.15.3 ### AI diff --git a/data/campaigns/Delfadors_Memoirs/maps/14_Shadows_in_the_Dark.map b/data/campaigns/Delfadors_Memoirs/maps/14_Shadows_in_the_Dark.map index 231747fbd1f8..bc082bf49770 100644 --- a/data/campaigns/Delfadors_Memoirs/maps/14_Shadows_in_the_Dark.map +++ b/data/campaigns/Delfadors_Memoirs/maps/14_Shadows_in_the_Dark.map @@ -1,7 +1,7 @@ -Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ce, Ce, Ce, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Ww, Ww, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ce, Ce, Ce, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp -Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fp, Ce, Ce, Ce, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ce, Ce, Ce, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp -Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ce, 3 Ke, Ce, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Hh^Fms, Gs^Fp, Gs^Fp, Gs^Fmw, Hh^Fms, Gs^Fp, Gs^Fp, Gg, Gg, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg^Ve, Gs^Fp, Gs^Fp, Ce, 2 Ke, Ce, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp -Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Ce, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gg, Gg, Gg, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ce, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp +Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Cer, Cer, Cer, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Ww, Ww, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Cer, Cer, Cer, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp +Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fp, Cer, Cer, Cer, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Cer, Cer, Cer, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp +Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Cer, 3 Ker, Cer, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Hh^Fms, Gs^Fp, Gs^Fp, Gs^Fmw, Hh^Fms, Gs^Fp, Gs^Fp, Gg, Gg, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg^Ve, Gs^Fp, Gs^Fp, Cer, 2 Ker, Cer, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp +Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Cer, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gg, Gg, Gg, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Cer, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Hh^Fms, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gg^Ve, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fmw, Gs^Fp, Gs^Fp, Gg, Gg, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fmw, Re, Re, Gs^Fp, Gs^Fp, Gs^Fp, Re, Re, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Rd, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gg^Ve, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fmw, Rd, Rd, Gs^Fp, Gs^Fp, Gg^Ve, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Hh^Fms, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg^Ve, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Rd, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp @@ -17,7 +17,7 @@ Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs, Gs^Fp, Hh^Fms, Hh^Fms, Gs^Fp, Gs^ Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Re, Re, Gs, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Hh^Fms, Ss, Gs^Fp, Gs^Fp, Ww, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Re, Gs^Fp, Re, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fmw, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Ww, Ww, Ww, Gs^Fp, Ww, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Hh^Fms, Gs^Fmw, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Re, Re, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp Hh^Fms, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Wwf, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fmw, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Rd, Re, Re, Gs^Fp, Gs^Fp -Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fp, Wwf, Gs^Fp, Gs^Fp, Ce, Ce, Ce, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Rd, Gs^Fp, Re, Gs^Fp -Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Ww, Gs^Fp, Gs^Fp, Ce, 4 Ke, Ce, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fmw, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Ww, Ww, Gs^Fp, Gs^Fmw, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Re, Gs^Fp -Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fmw, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Ww, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ce, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Re, Gs^Fp -Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ce, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Re, Gs^Fp +Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fp, Wwf, Gs^Fp, Gs^Fp, Cer, Cer, Cer, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Rd, Gs^Fp, Re, Gs^Fp +Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Ww, Gs^Fp, Gs^Fp, Cer, 4 Ker, Cer, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fmw, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Ww, Ww, Gs^Fp, Gs^Fmw, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Re, Gs^Fp +Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fmw, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Ww, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Cer, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Re, Gs^Fp +Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fds, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Cer, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Re, Gs^Fp diff --git a/data/campaigns/Delfadors_Memoirs/maps/15_Save_the_King.map b/data/campaigns/Delfadors_Memoirs/maps/15_Save_the_King.map index 7ab9e6e1e5c4..28d047e5b074 100644 --- a/data/campaigns/Delfadors_Memoirs/maps/15_Save_the_King.map +++ b/data/campaigns/Delfadors_Memoirs/maps/15_Save_the_King.map @@ -8,8 +8,8 @@ Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Mm, Mm, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg^Ve, Mm, Mm, Ww, Ww, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Mm, Mm, Mm, Mm, Gg, Gg, Hh, Hh, Mm, Mm, Mm, Mm Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Gg^Ve, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gg, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Hh, Ss, Hh, Hh, Mm, Mm, Mm, Mm Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg^Ve, Hh, Mm, Mm, Mm, Mm, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gg, Hh, Hh, Hh, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm -Ww, Ww, Ww, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Gg, Gg, Gg, Gg, Hh, Hh, Hh, Hh, Hh, Hh, Mm, Mm, Ce, Ce, Ce, Mm, Ww, Ww, Ww -Ww, Ww, Ww, Ww, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Gg, Ce, Ce, Ce, Hh, Hh, Hh, Mm, Mm, Gg^Ve, Mm, Ce, 6 Ke, Ce, Ww, Ww, Ww, Ww +Ww, Ww, Ww, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Gg, Gg, Gg, Gg, Hh, Hh, Hh, Hh, Hh, Hh, Mm, Mm, Cte, Cte, Cte, Mm, Ww, Ww, Ww +Ww, Ww, Ww, Ww, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Mm, Gg, Ce, Ce, Ce, Hh, Hh, Hh, Mm, Mm, Gg^Ve, Mm, Cte, 6 Kte, Cte, Ww, Ww, Ww, Ww Mm, Mm, Ww, Ww, Ww, Wwr, Wwr, Hh, Hh, Hh, Hh, Hh, Hh, Gg, Gg, Ce, 3 Ke, Ce, Hh, Hh, Mm, Mm, Mm, Mm, Ww, Ww, Ww, Ww, Ww, Gs^Fp, Hh, Hh Mm, Mm, Mm, Mm, Mm, Mm, Ww, Ww, Ww, Wwr, Gs^Fp, Hh, Hh, Gg, Gg, Ce, Ce, Ce, Gg, Hh, Hh, Mm, Ww, Ww, Ww, Ww, Gg, Wwf, Gg, Hh, Hh, Hh Mm, Mm, Mm, Mm, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Wwr, Ww, Ww, Ww, Ww, Gg, Gg, Gg, Gg, Gg, Hh, Hh, Hh, Ww, Ww, Ww, Ww, Wwf, Gg, Gg, Hh, Hh, Hh, Hh diff --git a/data/campaigns/Delfadors_Memoirs/maps/18_The_Portal_of_Doom.map b/data/campaigns/Delfadors_Memoirs/maps/18_The_Portal_of_Doom.map index c442027f2d65..adf35a4a737b 100644 --- a/data/campaigns/Delfadors_Memoirs/maps/18_The_Portal_of_Doom.map +++ b/data/campaigns/Delfadors_Memoirs/maps/18_The_Portal_of_Doom.map @@ -14,13 +14,13 @@ Ms, Aa^Fpa, Aa^Fpa, Re, Aa, Aa^Fpa, Aa^Vha, Gs^Fp, Gs^Fp, Hh, Gs^Fmw, Wwf, Ww, R Ms, Aa^Fpa, Aa^Fpa, Aa, Aa, Re, Gs^Fp, Gs^Fp, Hh, Hh, Hh, Ww, Ww, Aa^Fpa, Aa^Fpa, Re, Aa^Fpa, Aa^Fpa, Aa^Fpa, Aa^Fpa, Aa^Fpa, Aa^Fpa Ms, Aa^Fpa, Aa^Fpa, Re, Re, Hh, Hh, Hh, Hh, Gs^Fp, Wwf, Ww, Aa^Fpa, Aa^Fpa, Aa^Fpa, Aa^Fpa, Aa, Aa^Fpa, Aa^Fpa, Aa^Fpa, Aa^Fpa, Aa^Fpa Aa^Fpa, Aa^Fpa, Aa^Fpa, Re, Ms, Ms, Ce, Re, Re, Aa, Ww, Aa, Aa^Fpa, Aa^Fpa, Aa^Fpa, Re, Re, Aa^Fpa, Aa^Fpa, Aa^Fpa, Ms, Ms -Aa^Fpa, Aa, Re, Ms, Ms, Ce, Ce, Re, Aa, Aa, Ww, Aa, Aa, Aa, Aa^Fpa, Re, Aa^Fpa, Aa^Fpa, Aa^Fpa, Ms, Ms, Ms -Re, Ms, Re, Ms, Ce, Ke, Ce, Aa, Aa, Ai, Ai, Aa, Aa, Re, Aa, Aa, Aa^Fpa, Aa, Ms, Ch, Ch, Ms -Ms, Ms, Aa^Vha, Ms, Ha, Ce, Ha, Aa, Ww, Ai, Aa, Aa, Re, Aa, Aa, Aa, Aa, Aa, Aa, Ch, Ch, Ch +Aa^Fpa, Aa, Re, Ms, Ms, Cea, Ce, Re, Aa, Aa, Ww, Aa, Aa, Aa, Aa^Fpa, Re, Aa^Fpa, Aa^Fpa, Aa^Fpa, Ms, Ms, Ms +Re, Ms, Re, Ms, Cea, Ke, Cea, Aa, Aa, Ai, Ai, Aa, Aa, Re, Aa, Aa, Aa^Fpa, Aa, Ms, Cha, Cha, Ms +Ms, Ms, Aa^Vha, Ms, Ha, Cea, Ha, Aa, Ww, Ai, Aa, Aa, Re, Aa, Aa, Aa, Aa, Aa, Aa, Cha, Cha, Cha Ms, Ms, 1 Ha, Ha, Ms, Ha, Aa, Aa, Ai, Aa, Aa, Aa, Aa, Ha, Aa, Aa, Re, Re, Aa, Aa, 3 Kh, Ch Aa, Ms, Ms, Ms, Ms, Ha, Aa, Ww, Ww, Aa, Aa, Aa^Vha, Aa, Ha, Aa, Aa, Aa, Aa, Rb, Rb, Ur, Qxua Ms, Ms, Aa^Vha, Aa, Ms, Aa, Aa, Ww, Aa, Aa, Aa, Ha, Ha, Ha, Ha, Ms, Aa, Aa, Rb, Ur, Qxua, Qxua Ha, Ha, Ha, Aa, Aa, Aa, Ai, Ai, Aa, Ha, Ha, Ha, Ha, Ha, Ms, Ms, Aa, Ms, Rb, Ur, Qxua, Qxua -Ms, Ms, Ha, Ha, Ha, Aa, Ww, Ai, Aa, Ha, Ms, Ms, Ha, Ha, Ms, Ms, Ms, Ms, Ch, 2 Kh, Ch, Qxua -Ms, Ms, Ms, Ms, Ha, Ha, Aa, Ai, Aa, Ha, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ch, Ch, Ch, Ch -Ms, Ms, Ms, Ms, Ha, Ha, Aa, Ai, Aa, Ha, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ch, Ch, Ch, Ch +Ms, Ms, Ha, Ha, Ha, Aa, Ww, Ai, Aa, Ha, Ms, Ms, Ha, Ha, Ms, Ms, Ms, Ms, Cha, 2 Kh, Ch, Qxua +Ms, Ms, Ms, Ms, Ha, Ha, Aa, Ai, Aa, Ha, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Cha, Ch, Ch, Ch +Ms, Ms, Ms, Ms, Ha, Ha, Aa, Ai, Aa, Ha, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Ms, Cha, Cha, Cha, Cha diff --git a/data/campaigns/Delfadors_Memoirs/maps/19_Showdown_in_the_Northern_Swamp.map b/data/campaigns/Delfadors_Memoirs/maps/19_Showdown_in_the_Northern_Swamp.map index c17e7a551f18..35f3b243aed7 100644 --- a/data/campaigns/Delfadors_Memoirs/maps/19_Showdown_in_the_Northern_Swamp.map +++ b/data/campaigns/Delfadors_Memoirs/maps/19_Showdown_in_the_Northern_Swamp.map @@ -27,9 +27,9 @@ Gs^Fmw, Gs^Fmw, Gs^Fmw, Gg, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Gg, Gg, Gs^Fmw, Gs^Fmw, Gg, Gg, Gg, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Gg, Gg, Gg, Gs^Fmw, Ww, Ww, Wo, Ww, Gs^Fmw, Ww, Ww, Gs^Fp, Gs^Fp, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re^Gvs, Gg, Gg, Gg, Gg, Ww, Ww, Wo, Ww, Gs^Fp, Gs^Fp, Gs^Fp, Ww, Ww, Gg, Gg, Gg, Gg, Gg, Gs^Fmw, Gs^Fmw, Ss, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Gg Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Wo, Ww, Gg, Gg, Gg, Gg, Gs^Fp, Gg, Ww, Ww, Wwf, Wwf, Gs^Fmw, Ss, Ss, Ww, Ss, Ss, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Re^Gvs, Re^Gvs, Gg -Gg, Gg, Gg, Gg, Ce, Ce, Ce, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Wo, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Ww, Ww, Ww, Ww, Ss, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Gg -Gg, Gg, Gg, Gg, Ce, 5 Ke, Ce, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Wo, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Ww, Ww, Ss, Gg, Gg, Gg, Gg, Ww, Ww, Ww, Gg, Gg, Gg^Vl, Re^Gvs, Gg -Gg, Gg, Gg, Gg, Gg, Ce, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Wo, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fmw, Gs^Fds, Ww, Ww, Gg, Ww, Ww, Gg, Ww, Gg, Ww, Ww, Gg, Gg, Gg -Gg, Gg, Gg, Gg, Gg, Ce, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Wo, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fmw, Gs^Fds, Ww, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fmw, Ww, Ww, Ww +Gg, Gg, Gg, Gg, Cer, Cer, Cer, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Wo, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Ww, Ww, Ww, Ww, Ss, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Re^Gvs, Re^Gvs, Gg +Gg, Gg, Gg, Gg, Cer, 5 Ker, Cer, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Wo, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Ww, Ww, Ss, Gg, Gg, Gg, Gg, Ww, Ww, Ww, Gg, Gg, Gg^Vl, Re^Gvs, Gg +Gg, Gg, Gg, Gg, Gg, Cer, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Wo, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fmw, Gs^Fds, Ww, Ww, Gg, Ww, Ww, Gg, Ww, Gg, Ww, Ww, Gg, Gg, Gg +Gg, Gg, Gg, Gg, Gg, Cer, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Wo, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fds, Gs^Fmw, Gs^Fds, Ww, Gg, Gg, Gg, Gg, Gg, Gs^Fds, Gs^Fmw, Ww, Ww, Ww Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Wo, Ww, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fp, Gg, Gs^Fp, Gs^Fmw, Gs^Fp, Gs^Fds, Gs^Fds, Gs^Fds, Gg, Gg, Gg, Gg, Gg, Gs^Fp, Gs^Fp, Gs^Fds, Gg, Gg Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Ww, Ww, Wo, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gs^Fp, Gg, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gs^Fp, Gs^Fp, Gs^Fp, Gg, Gg diff --git a/data/campaigns/Delfadors_Memoirs/scenarios/12_Terror_at_the_Ford_of_Parthyn.cfg b/data/campaigns/Delfadors_Memoirs/scenarios/12_Terror_at_the_Ford_of_Parthyn.cfg index 74348c1ea507..d1e4bfed32d2 100644 --- a/data/campaigns/Delfadors_Memoirs/scenarios/12_Terror_at_the_Ford_of_Parthyn.cfg +++ b/data/campaigns/Delfadors_Memoirs/scenarios/12_Terror_at_the_Ford_of_Parthyn.cfg @@ -118,13 +118,8 @@ # moveto event sights and have the event trigger on the # side change (observer during playtest). [avoid] - x,y=34,25 - [/avoid] - [avoid] - x,y=29,26 - [/avoid] - [avoid] - x,y=29,24 + x=34,29,29 + y=25,26,24 [/avoid] [/ai] [/side] @@ -223,7 +218,7 @@ [/event] {PLACE_IMAGE scenery/village-human-burned1.png 34 6} # has moveto - {PLACE_IMAGE scenery/village-human-burned2.png 29 13} # has moveto + {PLACE_IMAGE scenery/village-human-burned2.png 30 12} # has moveto {PLACE_IMAGE scenery/village-human-burned3.png 31 10} # has moveto {PLACE_IMAGE scenery/village-human-burned4.png 37 17} {PLACE_IMAGE scenery/village-human-burned4.png 35 17} @@ -301,7 +296,7 @@ [then] [message] speaker=unit - message= _ "What in the wide green world is this abomination?" + message= _ "There's something there in the mist!" [/message] [/then] [/if] @@ -324,11 +319,15 @@ [message] speaker=unit - message= _ "Orcs! Orcs at the Ford!" + message= _ "Orcs!" + [/message] + [message] + speaker=Chantal + message= _ "It seems there are orcs this far south after all. This is strange." [/message] [message] speaker=Delfador - message= _ "Prepare to fight them! We must clear the Ford!" + message= _ "Prepare to fight them! We must keep the Ford clear!" [/message] [fire_event] name=enemies @@ -581,12 +580,12 @@ [/message] [/event] - # Move to 29,13 burned village (north edge of farmed patch): empty + # Move to 30,12 burned village (north edge of farmed patch): empty [event] name=moveto [filter] side=1 - x,y=29,13 + x,y=30,12 [/filter] [message] speaker=unit @@ -1024,7 +1023,7 @@ [then] [message] speaker=Delfador - message= _ "They have unleashed a second wave. Soldiers, stand firm and send these abominations back to the darkness!" + message= _ "This unnatural night will surely bring another wave of the undead. Soldiers, stand firm and send these abominations back to the darkness!" [/message] [/then] [/if] diff --git a/data/core/units/dunefolk/Alchemist.cfg b/data/core/units/dunefolk/Alchemist.cfg index 77a3466ed3af..05f8f4254add 100644 --- a/data/core/units/dunefolk/Alchemist.cfg +++ b/data/core/units/dunefolk/Alchemist.cfg @@ -22,7 +22,7 @@ units/dunefolk/herbalist/#enddef [abilities] {ABILITY_REGENERATES} [/abilities] - description= _ "To the Dunefolk, alchemy is less a form of philosophy or science, and more of an extension of the phytology that is practiced by herbalists. However, in contrast to their brethrens’ focus on herbs for medicine and healing, Alchemists utilize various plants and naturally occurring venoms to concoct potent poisons. Though useful for weakening tough enemies, the Alchemists’ art is viewed warily by other Dunefolk, for it is often employed for espionage and assassination. Nevertheless, almost every caravan will contain at least one Alchemist for precisely this reason — the political advantage from the threat of nearly untraceable poisons is not to be underestimated." + description= _ "To the Dunefolk, alchemy is less a form of philosophy or science, and more an extension of the phytology that is practiced by herbalists. However, in contrast to their brethrens’ focus on herbs for medicine and healing, many alchemists utilize various plants and naturally occurring venoms to concoct lethal poisons. While useful for weakening tough enemies, this art is viewed warily by other Dunefolk as a potent means for espionage and assassination. At the same time, such a tool presents a tremendous political advantage, so much so that almost every caravan will hire or train a few alchemists to maintain a reasonable level of threat at all times." {NOTE_POISON} {NOTE_REGENERATES} die_sound={SOUND_LIST:HUMAN_DIE} diff --git a/data/core/units/dunefolk/Apothecary.cfg b/data/core/units/dunefolk/Apothecary.cfg index 437291536497..69da14afdc27 100644 --- a/data/core/units/dunefolk/Apothecary.cfg +++ b/data/core/units/dunefolk/Apothecary.cfg @@ -22,7 +22,7 @@ units/dunefolk/herbalist/#enddef advances_to=Dune Luminary cost=27 usage=healer - description= _ "Even in the absence of battle, infection and injury are common plights in the harsh desert sands. Dunefolk healers, in particular, require vast knowledge of herbs and medicine in comparison with healers of other races; the lack of magic combined with the meager plantlife in the desert results in great difficulty in treating the plethora of ailments and poisons that plague the dune peoples. Apothecaries are typically more knowledgeable and well-traveled compared to their less experienced brethren, but the title is usually applied to those who undertake the complex task of tending to valuable medicinal plants. The Dunefolk have no means of healing without the necessary materials, and thus Apothecaries possess a special role in supporting the remedial arts of their kind." + description= _ "Even in the absence of battle, infection and injury are common plights in the harsh desert sands. Dunefolk healers, in particular, require vast knowledge of herbs and medicine in comparison with healers of other races. Their lack of magic combined with the meager plantlife in the desert results in great difficulty in treating the plethora of ailments and poisons that plague the dune peoples. Apothecaries are typically more knowledgeable and well-traveled compared to their less experienced brethren, but their real skill lies in the complex task of tending to valuable medicinal plants. The Dunefolk have no means of healing without the necessary materials, and thus these men possess a special role in supporting the remedial arts of their kind." {NOTE_EXTRA_HEAL} {NOTE_SELF_HEAL} die_sound={SOUND_LIST:HUMAN_DIE} diff --git a/data/core/units/dunefolk/Blademaster.cfg b/data/core/units/dunefolk/Blademaster.cfg index d483a13e73e0..7663aa83aa6b 100644 --- a/data/core/units/dunefolk/Blademaster.cfg +++ b/data/core/units/dunefolk/Blademaster.cfg @@ -18,9 +18,9 @@ units/dunefolk/soldier/#enddef {AMLA_DEFAULT} cost=52 usage=fighter - description= _ "Dunefolk swordsmen are known for playing a game called the ‘Laeqad Challenge’, in which Laeqads—thick, sturdy reeds that are several sword-lengths in height—are hurled at them like javelins and they attempt to split the reed length-wise in midair. The trick to the game is that the reed is not circularly symmetric: most of the stalk is quite hard, but there is a thin line across the cross section that is softer and easier to cut. For even an experienced swordsman, splitting an entire Laeqad down its length would be an extraordinary achievement; most would be hard-pressed to cut even a single sword length, given the precise aim required to line up the blade with the reed’s soft spot. For a Blademaster, however, splitting several Laeqads in quick succession is quite ordinary, and some are even able to cut through two or three reeds simultaneously with a single sword swish. + description= _ "Dunefolk swordsmen are known for playing a game called the ‘Laeqad Challenge’, in which Laeqads—thick, sturdy reeds that are several sword lengths in height—are hurled at them like javelins and they attempt to split the reed length-wise in midair. The trick to the game is that the reed is not circularly symmetric: most of the stalk is quite hard, but there is a thin line across the cross section that is softer and easier to cut. For even an experienced swordsman, splitting an entire Laeqad down its length would be an extraordinary achievement, given the precise aim required to line up the blade with the reed’s soft spot. However, for a true master of the blade, splitting several Laeqads in quick succession is quite ordinary, and some are even able to cut through two or three reeds simultaneously with a single sword swish. -This game has more practical implications in real battles. No matter how elusive or well-armored the fighter, against a Blademaster, it often seems like the defense does not even exist. These warriors are undoubtedly the masters of offensive swordsmanship and are capable of subverting even the strongest fortifications." +This game has more practical implications in real battles. No matter how elusive or well-armored the fighter, the defense rarely seems to matter against a blademaster. These warriors are undoubtedly the masters of offensive swordsmanship and are capable of subverting even the strongest fortifications." {NOTE_MARKSMAN} die_sound={SOUND_LIST:HUMAN_DIE} {DEFENSE_ANIM "{PATH_TEMP}blademaster.png" "{PATH_TEMP}blademaster.png" {SOUND_LIST:HUMAN_HIT} } diff --git a/data/core/units/dunefolk/Burner.cfg b/data/core/units/dunefolk/Burner.cfg index a5080c570118..85c998b4ced1 100644 --- a/data/core/units/dunefolk/Burner.cfg +++ b/data/core/units/dunefolk/Burner.cfg @@ -18,7 +18,7 @@ units/dunefolk/burner/#enddef advances_to=Dune Scorcher cost=17 usage=archer - description= _ "An oft forgotten hazard of traversing the desert is the freezing cold that descends upon the sands during the night. To combat this, the Dunefolk typically make use of the highly flammable sap of the Sanbaar tree, which burns slowly and gently in small quantities. In larger amounts, however, Sanbaar sap is very nearly combustible and burns extremely violently. The Dunefolk quickly realized the applicability of such a substance to warfare and regularly employ fire spouting weapons to sow chaos among their enemies." + description= _ "An oft forgotten hazard of traversing the desert is the freezing cold that descends upon the sands during the night. To combat this, the Dunefolk typically make use of the highly flammable sap of the Sanbaar tree, which burns slowly and gently in small quantities, providing a modest amount of heat and light. In larger amounts, however, Sanbaar sap is very nearly combustible and burns extremely violently. The Dunefolk quickly realized the applicability of such a substance to warfare and regularly employ fire spouting weapons to sow chaos among their enemies." die_sound={SOUND_LIST:HUMAN_DIE} {DEFENSE_ANIM "{PATH_TEMP}burner.png" "{PATH_TEMP}burner.png" {SOUND_LIST:HUMAN_HIT} } diff --git a/data/core/units/dunefolk/Captain.cfg b/data/core/units/dunefolk/Captain.cfg index 53b1238ecb86..4acdb9940e7f 100644 --- a/data/core/units/dunefolk/Captain.cfg +++ b/data/core/units/dunefolk/Captain.cfg @@ -26,7 +26,7 @@ units/dunefolk/soldier/#enddef [abilities] {ABILITY_LEADERSHIP} [/abilities] - description= _ "Traditionally hailing from noble or military families, Dune Captains are the core of any Dunefolk platoon. Usually a position filled based on heritage rather than merit, Captains are those who are often relatively weak with the blade, but still reasonably trained in tactics. Unlike other leaders, the Captains’ abilities lie largely in directing their troops to strategically advantageous positions rather than directly raising their morale. The presence of such a commander is rarely inspiring for most Soldiers, but they are still quick to follow the expert tactical direction of their officers." + description= _ "Traditionally hailing from noble or military families, captains are the core of most Dunefolk platoons. Usually chosen based on heritage rather than merit, many officers are often relatively weak with the blade, but still reasonably trained in tactics. Their abilities lie largely in directing their troops to strategically advantageous positions rather than directly raising their morale. The presence of such a commander is rarely inspiring for most soldiers, but they still readily follow the expert tactical direction of their captains." {NOTE_LEADERSHIP} die_sound={SOUND_LIST:HUMAN_DIE} {DEFENSE_ANIM "{PATH_TEMP}captain.png" "{PATH_TEMP}captain.png" {SOUND_LIST:HUMAN_HIT} } diff --git a/data/core/units/dunefolk/Explorer.cfg b/data/core/units/dunefolk/Explorer.cfg index 7d02b6b40772..c8a6e864b6f3 100644 --- a/data/core/units/dunefolk/Explorer.cfg +++ b/data/core/units/dunefolk/Explorer.cfg @@ -17,7 +17,7 @@ units/dunefolk/rover/#enddef advances_to=Dune Wayfarer cost=29 usage=mixed fighter - description= _ "A slow-moving caravan out in the open desert is a prime target for bandits or marauders. In order to protect themselves, the Dunefolk employ Explorers to scout and repel potential threats. In doing so, these fleet fighters not only protect their vulnerable caravans, but pilfer the supplies of supposed raiders for themselves. When employed for warfare, Explorers no longer act only as scouts for probing enemies, but are skilled enough to be effective flankers or potent shock attackers." + description= _ "A slow-moving caravan out in the open desert is a prime target for bandits or marauders. In order to protect themselves, the Dunefolk employ special warriors to scout and repel potential threats. In doing so, these fleet fighters not only protect their vulnerable caravans, but pilfer the supplies of supposed raiders for themselves. When employed for warfare, explorers no longer act only as scouts for probing enemies, but are skilled enough to be effective flankers or potent shock attackers." die_sound={SOUND_LIST:HUMAN_DIE} {DEFENSE_ANIM "{PATH_TEMP}explorer.png" "{PATH_TEMP}explorer.png" {SOUND_LIST:HUMAN_HIT} } diff --git a/data/core/units/dunefolk/Firetrooper.cfg b/data/core/units/dunefolk/Firetrooper.cfg index f2215673f4f2..a1225fc78560 100644 --- a/data/core/units/dunefolk/Firetrooper.cfg +++ b/data/core/units/dunefolk/Firetrooper.cfg @@ -19,7 +19,7 @@ units/dunefolk/burner/#enddef {AMLA_DEFAULT} cost=50 usage=mixed fighter - description= _ "By refining Sanbaar sap through a very specific distillation process, it becomes possible to produce exceedingly flammable naphtha which burns even more violently than the sap it was derived from. Such a substance is, of course, extremely dangerous due to its highly combustible nature. Even Scorchers will shy away from its use since the potential for self injury is very high, but a few daring souls choose to use pure naphtha as their weapon of choice. The resulting destruction is more than enough to justify the use of such a hazardous chemical." + description= _ "By refining Sanbaar sap through a very specific distillation process, it becomes possible to produce exceedingly flammable naphtha, which burns even more violently than the sap it was derived from. Of course, such a substance is extremely dangerous due to its highly combustible nature. Most shy away from its use since the potential for self injury is very high, but a few daring souls take up flamethrowers fueled by pure naphtha as their weapons of choice. The resulting destruction is more than enough to justify the use of such a hazardous chemical." die_sound={SOUND_LIST:HUMAN_DIE} [standing_anim] start_time=0 diff --git a/data/core/units/dunefolk/Herbalist.cfg b/data/core/units/dunefolk/Herbalist.cfg index c1c9129bc7af..08c031b5c991 100644 --- a/data/core/units/dunefolk/Herbalist.cfg +++ b/data/core/units/dunefolk/Herbalist.cfg @@ -22,9 +22,9 @@ units/dunefolk/herbalist/#enddef advances_to=Dune Apothecary,Dune Alchemist cost=15 usage=healer - description= _ "As those responsible for caring for the ill and wounded among the Dunefolk, Herbalists possess both the medicinal skills to heal a variety of afflictions and the skill to seek and gather restorative herbs. Their motivations are many; some look to it as an adventure or as a steady source of pay while others feel it to be a duty to their society. No matter the reason, Herbalists are an invaluable part of Dunefolk society and are especially useful for their ability to administer quick treatments in the midst of battle or while traveling in the desert. + description= _ "As those responsible for caring for the ill and wounded among the Dunefolk, herbalists possess both the medicinal skills to heal a variety of afflictions and the skill to seek and gather restorative herbs. Their motivations are many; some look to it as an adventure or as a steady source of pay while others feel it to be a duty to their society. No matter the reason, these healers are an invaluable part of Dunefolk society and are especially useful for their ability to administer quick treatments in the midst of battle or while traveling in the desert. -Even among the nomadic Dunefolk, healers journey a great deal in search of the various flora and fauna that supply their work. Hardened by their travels, many of these men are even able to heal themselves." +Even among the nomadic Dunefolk, herbalists journey a great deal in search of the various flora and fauna that supply their work. Hardened by their travels, many of these men are even able to heal themselves." {NOTE_HEALS} {NOTE_SELF_HEAL} die_sound={SOUND_LIST:HUMAN_DIE} diff --git a/data/core/units/dunefolk/Luminary.cfg b/data/core/units/dunefolk/Luminary.cfg index 4bcfa97f5188..715286d0df3b 100644 --- a/data/core/units/dunefolk/Luminary.cfg +++ b/data/core/units/dunefolk/Luminary.cfg @@ -22,7 +22,7 @@ units/dunefolk/herbalist/#enddef {AMLA_DEFAULT} cost=53 usage=healer - description= _ "On the surface, it is not entirely clear what distinguishes a Luminary from other healers among the Dunefolk. Certainly, a Luminary may be marginally more knowledgeable, well-traveled, or skilled in combat compared to Herbalists or Apothecaries, but the difference is usually modest at best. Nevertheless, ‘Luminary’ is a formal title granted to the highest order of Dunefolk healers and grants these men both the greatest esteem and the greatest envy. + description= _ "On the surface, it is not entirely clear what distinguishes a Luminary from other healers among the Dunefolk. Certainly, a Luminary may be marginally more knowledgeable, well-traveled, or skilled in combat compared to normal herbalists or apothecaries, but the difference is usually modest at best. Nevertheless, ‘Luminary’ is a formal title granted to the highest order of Dunefolk healers and bestows these men both the greatest esteem and the greatest envy. There is some speculation that a secret order exists among the Luminaries. These so called ‘Eminents’ hoard a great deal of forbidden knowledge and advise many Dunefolk leaders from the shadows. Such a thing has never been proven, but the fact remains that some Luminaries seem to hold much more influence than their abilities should afford." {NOTE_CURES} diff --git a/data/core/units/dunefolk/Paragon.cfg b/data/core/units/dunefolk/Paragon.cfg index 00ce56e63d8f..f8288e5eb3fe 100644 --- a/data/core/units/dunefolk/Paragon.cfg +++ b/data/core/units/dunefolk/Paragon.cfg @@ -19,9 +19,9 @@ units/dunefolk/soldier/#enddef {AMLA_DEFAULT} cost=78 usage=fighter - description= _ "In many Dunefolk city-states, the process for selecting the next generation of leaders is a long process that takes place over many years. In each generation, a few particularly talented youths among the nobility are trained separately from their peers. Eat, sleep, and train, these warriors learn to live and breathe swordsmanship as their core identity more than even an extension of themselves. From adolescence, ten years of intense training paves the path to the final test, a series of duels to the death between pairs of these fighters. When the dust settles and the process is ended, eight are left remaining. These men are granted the title Kal, or collectively, Kalai. + description= _ "In many Dunefolk city-states, the procedure for selecting the next generation of leaders is a long process that takes place over many years. In each generation, a few particularly talented youths among the nobility are selected for special tutelage. Eat, sleep, and train, these warriors learn to live and breathe swordsmanship — more than even an extension of themselves, it becomes their core identity. From adolescence, ten years of intense training paves the path to the final test, a series of duels to the death between pairs of these fighters. When the dust settles and the process is ended, eight are left remaining. These men are granted the title Kal, or collectively, Kalai. -Among the Dunefolk, while great leaders are required to have mastered the blade, the ruling caste is required to know far more than mere swordplay. Gruelling training is usually followed by either several years of nomadic roving through the deserts or dedication of the mind to the sciences, the purpose of which is to find a self-motivated path toward enlightened wisdom. No matter the case, at the end of the second training period, the remaining Kalai return and demonstrate their knowledge to the elders of the current ruling caste. Those who are found worthy are then called Paragon, warriors of great strength and acuity who may then be considered as candidates to lead the next generation of Dunefolk." +Among the Dunefolk, while great leaders are required to have mastered the blade, the ruling caste must know far more than mere swordplay. Gruelling drilling is usually followed by either several years of roving through the deserts or dedication of the mind to the sciences. The purpose of this is to find a self-motivated path toward enlightenment. No matter the case, at the end of the second training period, the remaining Kalai return and demonstrate their knowledge to the elders of the current ruling caste. Those who are found worthy are then called Paragon, warriors of great strength and acuity who may then be considered as candidates to lead the next generation of Dunefolk." {NOTE_MARKSMAN} die_sound={SOUND_LIST:HUMAN_DIE} {DEFENSE_ANIM "{PATH_TEMP}paragon.png" "{PATH_TEMP}paragon.png" {SOUND_LIST:HUMAN_HIT} } diff --git a/data/core/units/dunefolk/Rover.cfg b/data/core/units/dunefolk/Rover.cfg index ceaecf41cf27..5571f9bb98e8 100644 --- a/data/core/units/dunefolk/Rover.cfg +++ b/data/core/units/dunefolk/Rover.cfg @@ -17,7 +17,7 @@ units/dunefolk/rover/#enddef advances_to=Dune Explorer cost=14 usage=mixed fighter - description= _ "Originating from the nomadic wanderers of the open deserts, Rovers, in many ways, represent the ideal Dunefolk soldier: flexible, mobile, equally effective in defense and offense as well as in ranged or close combat. They are hardy inhabitants of the deserts and hills that they call home and experienced hunters and trackers. While lacking training as formal soldiers, the skills Rovers employ for survival in the desert translate readily to warfare. Their unique trait of fighting best at dawn or dusk corresponds with the time when desert temperatures are the most habitable." + description= _ "Originating from the nomadic wanderers of the open deserts, rovers are the representation of the most well-balanced Dunefolk soldier: flexible, mobile, equally effective in defense and offense as well as in ranged or close combat. They are experienced hunters and trackers, hardy inhabitants of the deserts and hills that they call home. While lacking training as formal troops, the skills these rovers employ for survival in the desert translate readily to warfare. Their unique trait of fighting best at dawn or dusk corresponds with the time when desert temperatures are the most habitable." die_sound={SOUND_LIST:HUMAN_DIE} {DEFENSE_ANIM "{PATH_TEMP}rover-defend2.png" "{PATH_TEMP}rover-defend1.png" {SOUND_LIST:HUMAN_HIT} } diff --git a/data/core/units/dunefolk/Scorcher.cfg b/data/core/units/dunefolk/Scorcher.cfg index 60d4368cfd99..382300640eb8 100644 --- a/data/core/units/dunefolk/Scorcher.cfg +++ b/data/core/units/dunefolk/Scorcher.cfg @@ -19,7 +19,7 @@ units/dunefolk/burner/#enddef advances_to=Dune Firetrooper cost=23 usage=archer - description= _ "The Scorcher’s name is derived not from the destruction they wreak on adversarial formations, but on their own singed appearance. By experimenting endlessly with their equipment, most Scorchers inevitably overstep their bounds and are seared by the highly volatile Sanbaar sap that soaks their weapons. Bearing their burns as a mark of pride in their work, these archers relish igniting great swaths of flame on the battlefield, though this sometimes results in unintended friendly fire as well." + description= _ "The scorcher’s monkier is derived not from the destruction they wreak on adversarial formations, but on their own singed appearances. By experimenting endlessly with their equipment, most scorchers inevitably overstep their bounds at some point and are seared by the highly volatile Sanbaar sap that soaks their weapons. Bearing their burns as a mark of pride in their work, these archers relish igniting great swaths of flame on the battlefield, though this sometimes also results in unintended friendly fire." die_sound={SOUND_LIST:HUMAN_DIE} {DEFENSE_ANIM "{PATH_TEMP}scorcher.png" "{PATH_TEMP}scorcher.png" {SOUND_LIST:HUMAN_HIT} } diff --git a/data/core/units/dunefolk/Soldier.cfg b/data/core/units/dunefolk/Soldier.cfg index 40a1fe5e6aa9..02914bbd50b8 100644 --- a/data/core/units/dunefolk/Soldier.cfg +++ b/data/core/units/dunefolk/Soldier.cfg @@ -17,7 +17,7 @@ units/dunefolk/soldier/#enddef advances_to=Dune Swordsman,Dune Captain,Dune Spearguard cost=18 usage=fighter - description= _ "While most Dunefolk castes serve an additional practical purpose beyond only direct warfare, Dune Soldiers are among the few who are completely dedicated to military purposes. By training intensely to hone their skill in swordplay, Soldiers learn to navigate tricky fights in close quarters and repel ranged assaults with their shields. A typical Dunefolk formation makes use of this adeptness by placing Soldiers in a spaced pattern, allowing them to draw out clustered enemy lines and overwhelm their foes in pseudo single combat." + description= _ "While most Dunefolk castes serve an additional practical purpose beyond only direct warfare, cities and caravans usually train a group of soldiers completely dedicated to military purposes. By practicing intensely to hone their skills in swordplay, these warriors learn to navigate tricky fights in close quarters, mastering their enemies through melee combat. A typical Dunefolk formation makes use of this adeptness by placing soldiers in a spaced pattern, allowing them to assault and overwhelm clustered enemy lines by engaging them in quasi-single combat." die_sound={SOUND_LIST:HUMAN_DIE} {DEFENSE_ANIM "{PATH_TEMP}soldier.png" "{PATH_TEMP}soldier.png" {SOUND_LIST:HUMAN_HIT} } diff --git a/data/core/units/dunefolk/Spearguard.cfg b/data/core/units/dunefolk/Spearguard.cfg index c8f14ddbabda..65e2e0b9f48c 100644 --- a/data/core/units/dunefolk/Spearguard.cfg +++ b/data/core/units/dunefolk/Spearguard.cfg @@ -17,7 +17,7 @@ units/dunefolk/soldier/#enddef advances_to=Dune Spearmaster cost=30 usage=fighter - description= _ "The push and pull of any battle requires varying degrees of offense and defense. The Dunefolk no doubt value offense as the greater of the two and focus their greatest efforts on training skilled swordsmen, but in any band of warriors, a small number of soldiers opt to trade in their sword and instead fulfill the vital duties of the Spearguard. Guarding crucial supply lines and vantage points, Spearguards are most often positioned slightly behind the main line and used as a supporting force or a deterrent to flanking attacks. Though these fighters tend to see less direct combat than their sword-wielding brethren, they are highly skilled with spear and shield and more than capable of repelling most advances." + description= _ "The push and pull of any battle requires varying degrees of offense and defense. The Dunefolk no doubt value offense as the greater of the two and typically focus most of their efforts on training skilled swordsmen. However, in any band of warriors, a small number of soldiers opt to trade in their swords and instead fulfill the vital role of defenders. Guarding crucial supply lines and vantage points, spearguards are most often positioned slightly behind the main line and used as a supporting force or a deterrent to flanking attacks. Though these fighters tend to see less direct combat than their sword-wielding brethren, they are highly skilled with spear and shield and more than capable of repelling most advances." {NOTE_FIRSTSTRIKE} die_sound={SOUND_LIST:HUMAN_DIE} {DEFENSE_ANIM "{PATH_TEMP}spearguard.png" "{PATH_TEMP}spearguard.png" {SOUND_LIST:HUMAN_HIT} } diff --git a/data/core/units/dunefolk/Spearmaster.cfg b/data/core/units/dunefolk/Spearmaster.cfg index 085f81268ae2..f971c975b7e1 100644 --- a/data/core/units/dunefolk/Spearmaster.cfg +++ b/data/core/units/dunefolk/Spearmaster.cfg @@ -18,9 +18,9 @@ units/dunefolk/soldier/#enddef {AMLA_DEFAULT} cost=51 usage=fighter - description= _ "Among the Dunefolk armies, the highest prestige goes to the master swordsmen leading every assault. Though honored for their service in battle, those who wield the spear and shield are largely forgotten beyond that: the path of a spearman is to fulfill the least desirable role in combat without glory or recognition. When a Dunefolk assault fails and a retreat must be had, a rank of Spearguards is usually left behind to hold back the counterassault. Though providing a formidable defense, the shield line is inevitably overwhelmed and most of the Spearguards lost to the maw of war. On the off chance that one manages to survive and find his way back to the recuperating army, he is often reprimanded for failing to stand his ground and die with the rest of his unnamed brethren. Nevertheless, after a minor scolding, the warrior is accepted back and carries his hard won experience into the next battle. + description= _ "Among Dunefolk armies, the highest prestige goes to the master swordsmen leading every assault. Though honored for their service in battle, those who wield the spear and shield are largely forgotten beyond that, usually fulfilling the least desirable role in combat without glory or recognition. When a Dunefolk assault fails and a retreat must be had, a rank of spearguards is usually left behind to hold back the counterassault. Though providing a formidable defense, the shield line is inevitably overwhelmed and most of the defenders lost to the maw of war. On the off chance that one manages to survive and find his way back to the recuperating army, he is often reprimanded for failing to stand his ground and die with the rest of his unnamed brethren. Nevertheless, after a minor scolding, the warrior is accepted back and carries his hard won experience into the next battle. -It is not a formal title, but ‘Spearmaster’ is what Spearguards call their companions who manage to return from the usually suicidal defense that the Dunefolk mount to guard their retreats. Hardly a term of praise or distinction, it is still a modicum of recognition for those who were prepared to die as nameless martyrs to protect their brethren." +It is not a formal title, but ‘Spearmaster’ is what spearguards call their companions who manage to return from the usually suicidal defense that the Dunefolk mount to cover their retreats. Hardly a term of praise or distinction, it is still a modicum of recognition for those who were prepared to die as nameless martyrs to protect their brethren." {NOTE_FIRSTSTRIKE} die_sound={SOUND_LIST:HUMAN_DIE} {DEFENSE_ANIM "{PATH_TEMP}spearmaster.png" "{PATH_TEMP}spearmaster.png" {SOUND_LIST:HUMAN_HIT} } diff --git a/data/core/units/dunefolk/Swordsman.cfg b/data/core/units/dunefolk/Swordsman.cfg index 1bd170c6b740..ba1ae61b0a28 100644 --- a/data/core/units/dunefolk/Swordsman.cfg +++ b/data/core/units/dunefolk/Swordsman.cfg @@ -17,7 +17,7 @@ units/dunefolk/soldier/#enddef advances_to=Dune Blademaster cost=30 usage=fighter - description= _ "In a direct clash of large armies, the Dunefolk commonly encounter either densely packed ‘Shield Walls’ or heavily fortified enemy positions. Striking against these highly organized fronts can be quite challenging; an enemy formation might leave only small, brief gaps between shields and armor, while threatening a counterstrike with a thrust of spears and projectiles. Thus, Dunefolk swordplay places a heavy emphasis on power and more importantly, precision. A warrior might find only one chance to strike at an enemy, but an experienced Dune Swordsman is more than likely to seize the opportunity and make his strike count. Honing in with nearly unnatural accuracy, a contingent of of Swordsmen is enough to crack even the sternest of defenses." + description= _ "In a direct clash of large armies, the Dunefolk commonly encounter either densely packed ‘shield walls’ or heavily fortified enemy positions. Striking against these highly organized fronts can be quite challenging — an enemy formation might leave only small, brief gaps between shields and armor while threatening a counterstrike with a thrust of spears and projectiles. Dunefolk swordplay thus places a heavy emphasis on power and more importantly, precision. A warrior might find only one chance to strike at an enemy, but an experienced swordsman is more than likely to seize the opportunity and make his strike count. Honing in with almost unnatural accuracy, a contingent of of swordsmen is enough to crack even the sternest of defenses." {NOTE_MARKSMAN} die_sound={SOUND_LIST:HUMAN_DIE} {DEFENSE_ANIM "{PATH_TEMP}swordsman.png" "{PATH_TEMP}swordsman.png" {SOUND_LIST:HUMAN_HIT} } diff --git a/data/core/units/dunefolk/Warmaster.cfg b/data/core/units/dunefolk/Warmaster.cfg index 46bce10d9443..c2158e7b680c 100644 --- a/data/core/units/dunefolk/Warmaster.cfg +++ b/data/core/units/dunefolk/Warmaster.cfg @@ -27,7 +27,7 @@ units/dunefolk/soldier/#enddef [abilities] {ABILITY_LEADERSHIP} [/abilities] - description= _ "In direct contrast with other Dunefolk commanders, Warmasters focus heavily on rousing their troops and maintaining high morale. These generals are often found at the forefront of battle, leading by example and fighting and bleeding alongside their soldiers. While Warmasters usually leave the finer details of strategy to their Captains, they are certainly capable tacticians as well; many a battle has been won on an inventive or surprise maneuver that is often the creative byproduct of combat experience rather than formal training. Said to be a veteran of a thousand battles, a Warmaster is an expert leader that should never be underestimated." + description= _ "In direct contrast with other Dunefolk commanders, many high-ranking generals focus heavily on rousing their troops and maintaining high morale. Warmasters are often found at the forefront of battle, fighting and bleeding alongside their soldiers. While these commanders usually leave the finer strategic details to their lower-ranking captains, they are certainly capable tacticians as well; many a battle has been won on an inventive or surprise maneuver that is often the creative byproduct of combat experience rather than formal training. Said to be a veteran of a thousand battles, a warmaster is an expert leader that should never be underestimated." {NOTE_LEADERSHIP} die_sound={SOUND_LIST:HUMAN_DIE} {DEFENSE_ANIM "{PATH_TEMP}warmaster.png" "{PATH_TEMP}warmaster.png" {SOUND_LIST:HUMAN_HIT} } diff --git a/data/core/units/dunefolk/Wayfarer.cfg b/data/core/units/dunefolk/Wayfarer.cfg index 1a7d1558d9ea..26b2d0d0bf2d 100644 --- a/data/core/units/dunefolk/Wayfarer.cfg +++ b/data/core/units/dunefolk/Wayfarer.cfg @@ -20,11 +20,11 @@ units/dunefolk/rover/#enddef usage=mixed fighter description= _ "From the journal of Balah, the Dune Watcher: -“... Today was the sixth day. Six days of pursuit through the desert without sleep, without rest... but, I require neither. The Bloodeye Roc has pilfered too many of my herd for its ravenous feasting. I must be rid of it before the caravan starves. I have tracked it thus far, and no matter how far it flees, I shall follow. +“... Today was the sixth day. Six days of pursuit through the desert without sleep, without rest... but I require neither. The Bloodeye Roc has pilfered too many of my herd for its ravenous feasting. I must be rid of it before the caravan starves. I have tracked it thus far, and no matter how far it flees, I shall follow. -... blast it! The creature was only a couple hundred paces away, but the sun was in my eyes! I managed to land a few arrows on the foul thing, but only enough to slow it. Still, it seems to be tiring faster than I. With any luck, I will catch it before it can reach the mountains. +... blast it! The creature was only a couple hundred paces away, but the sun was in my eyes! I managed to land a few arrows on the irksome thing, but only enough to slow it. Still, it seems to be tiring faster than I. With any luck, I will catch it before it can reach the mountains. -... Day eleven. I cornered the creature after it landed on the hillside, but there were three more that I was not accounting for. Rocs are ferocious creatures in close quarters; fighting one is already no simple task, but four at once? I am lucky I brought my second axe, otherwise I would have sustained severe injury during that battle. As it is, I am waiting for the gauze to set on my leg before I return to slay the final two. Perhaps then it will finally be time to eat and get some rest. +... Day eleven. I cornered the creature after it landed on the hillside, but there were three more that I was not accounting for. Rocs are ferocious creatures in close quarters. Fighting one is already no simple task, but four at once? I am lucky I brought my second axe, otherwise I would have sustained severe injury during that battle. As it is, I am waiting for the gauze to set on my leg before I return to slay the final two. Perhaps then I can finally find the time to eat and get some rest. ... it comes as a surprise to even me that I traveled nearly halfway across the Northern Dunes in my twenty-one day expedition. It would take the caravan nearly three months to make that trip, but I do suppose the circumstances around my joruney were somewhat extenuating. On the bright side, I was able to procure some salted roc meat along the way, which should make for a fine treat for the children. It will also be nice to see some of the other Wayfarers again. My tale might not be that impressive to them, but at least it is an improvement over my previous encounter with the wyvern...”" die_sound={SOUND_LIST:HUMAN_DIE} diff --git a/projectfiles/VC16/wesnothd.vcxproj b/projectfiles/VC16/wesnothd.vcxproj index e1bfd19400af..023ed00a2392 100644 --- a/projectfiles/VC16/wesnothd.vcxproj +++ b/projectfiles/VC16/wesnothd.vcxproj @@ -113,7 +113,7 @@ $(SolutionDir)..\..\ $(SolutionDir)..\..\ - $(Configuration)\${ProjectName)\ + $(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\ diff --git a/src/ai/formula/candidates.cpp b/src/ai/formula/candidates.cpp index 6f0ab14856ed..8da4068d19f4 100644 --- a/src/ai/formula/candidates.cpp +++ b/src/ai/formula/candidates.cpp @@ -65,7 +65,7 @@ candidate_action_with_filters::candidate_action_with_filters( const config & filter_params = cfg.child("filter"); if( filter_params ) { - for(const config::attribute filter_param : filter_params.attribute_range()) + for(const config::attribute& filter_param : filter_params.attribute_range()) { const_formula_ptr filter_formula( new formula(filter_param.second, function_table)); diff --git a/src/server/game.cpp b/src/server/game.cpp index 41ec8afc89d8..901b6988c72a 100644 --- a/src/server/game.cpp +++ b/src/server/game.cpp @@ -89,7 +89,7 @@ int game::db_id_num = 1; void game::missing_user(socket_ptr /*socket*/, const std::string& func) const { WRN_GAME << func << "(): Could not find user (socket:\t" - << ") in player_info_ in game:\t\"" << name_ << "\" (" << id_ << ")\n"; + << ") in player_info_ in game:\t\"" << name_ << "\" (" << id_ << ", " << db_id_ << ")\n"; } game::game(player_connections& player_connections, @@ -249,7 +249,7 @@ void game::perform_controller_tweaks() msg << "Side " << side_index + 1 << " had no controller during controller tweaks! The host was assigned control."; - LOG_GAME << msg.str() << " (game id: " << id_ << ")\n"; + LOG_GAME << msg.str() << " (game id: " << id_ << ", " << db_id_ << ")\n"; send_and_record_server_message(msg.str()); } @@ -280,7 +280,7 @@ void game::perform_controller_tweaks() if(sides_[side_index] == 0) { std::stringstream msg; msg << "Side " << side_index + 1 << " had no controller AFTER controller tweaks! Ruh Roh!"; - LOG_GAME << msg.str() << " (game id: " << id_ << ")\n"; + LOG_GAME << msg.str() << " (game id: " << id_ << ", " << db_id_ << ")\n"; } } } @@ -311,10 +311,8 @@ void game::start_game(const socket_ptr& starter) LOG_GAME << client_address(starter) << "\t" << player_connections_.find(starter)->name() << "\t" << (advance ? "advanced" : "started") << (save ? " reloaded" : "") << " game:\t\"" << name_ << "\" (" << id_ - // << ") with: " << list_users(players_, __func__) << ". Settings: map: " << s["id"] - << ") with: " << list_users(players_, __func__) + << ", " << db_id_ << ") with: " << list_users(players_, __func__) << ". Settings: map: " << multiplayer["mp_scenario"] - // << "\tera: " << (s.child("era") ? (*s.child("era"))["id"] : "") << "\tera: " << multiplayer["mp_era"] << "\tXP: " << multiplayer["experience_modifier"] << "\tGPV: " << multiplayer["mp_village_gold"] @@ -346,7 +344,7 @@ void game::start_game(const socket_ptr& starter) << " has no controller but should! The host needs to assign control for the game to proceed past " "that side's turn."; - LOG_GAME << msg.str() << " (game id: " << id_ << ")\n"; + LOG_GAME << msg.str() << " (game id: " << id_ << ", " << db_id_ << ")\n"; send_and_record_server_message(msg.str()); } } @@ -772,7 +770,7 @@ void game::mute_observer(const simple_wml::node& mute, const socket_ptr& muter) } LOG_GAME << client_address(muter) << "\t" << game::username(muter) << " muted: " << username << " (" - << client_address(user) << ")\tin game:\t\"" << name_ << "\" (" << id_ << ")\n"; + << client_address(user) << ")\tin game:\t\"" << name_ << "\" (" << id_ << ", " << db_id_ << ")\n"; muted_observers_.push_back(user); send_and_record_server_message(username.to_string() + " has been muted."); @@ -804,7 +802,7 @@ void game::unmute_observer(const simple_wml::node& unmute, const socket_ptr& unm } LOG_GAME << client_address(unmuter) << "\t" << game::username(unmuter) << " unmuted: " << username << " (" - << client_address(user) << ")\tin game:\t\"" << name_ << "\" (" << id_ << ")\n"; + << client_address(user) << ")\tin game:\t\"" << name_ << "\" (" << id_ << ", " << db_id_ << ")\n"; muted_observers_.erase(std::remove(muted_observers_.begin(), muted_observers_.end(), user), muted_observers_.end()); send_and_record_server_message(username.to_string() + " has been unmuted."); @@ -838,7 +836,7 @@ socket_ptr game::kick_member(const simple_wml::node& kick, const socket_ptr& kic } LOG_GAME << client_address(kicker) << "\t" << game::username(kicker) << "\tkicked: " << username << " (" - << client_address(user) << ")\tfrom game:\t\"" << name_ << "\" (" << id_ << ")\n"; + << client_address(user) << ")\tfrom game:\t\"" << name_ << "\" (" << id_ << ", " << db_id_ << ")\n"; send_and_record_server_message(username.to_string() + " has been kicked."); @@ -873,7 +871,7 @@ socket_ptr game::ban_user(const simple_wml::node& ban, const socket_ptr& banner) } LOG_GAME << client_address(banner) << "\t" << game::username(banner) << "\tbanned: " << username << " (" - << client_address(user) << ")\tfrom game:\t\"" << name_ << "\" (" << id_ << ")\n"; + << client_address(user) << ")\tfrom game:\t\"" << name_ << "\" (" << id_ << ", " << db_id_ << ")\n"; bans_.push_back(client_address(user)); name_bans_.push_back(username.to_string()); @@ -913,7 +911,7 @@ void game::unban_user(const simple_wml::node& unban, const socket_ptr& unbanner) LOG_GAME << client_address(unbanner) << "\t" << player_connections_.find(unbanner)->info().name() << "\tunbanned: " << username << " (" << client_address(user) << ")\tfrom game:\t\"" << name_ << "\" (" - << id_ << ")\n"; + << id_ << ", " << db_id_ << ")\n"; bans_.erase(std::remove(bans_.begin(), bans_.end(), client_address(user)), bans_.end()); name_bans_.erase(std::remove(name_bans_.begin(), name_bans_.end(), username.to_string()), name_bans_.end()); @@ -1021,17 +1019,17 @@ bool game::process_turn(simple_wml::document& data, const socket_ptr& user) const simple_wml::node::child_list& commands = turn->children("command"); for(simple_wml::node* command : commands) { - DBG_GAME << "game " << id_ << " received [" << (*command).first_child() << "] from player '" << username(user) + DBG_GAME << "game " << id_ << ", " << db_id_ << " received [" << (*command).first_child() << "] from player '" << username(user) << "'(" << user << ") during turn " << current_side_index_ + 1 << "," << current_turn_ << "\n"; if(!is_legal_command(*command, user)) { - LOG_GAME << "ILLEGAL COMMAND in game: " << id_ << " (((" << simple_wml::node_to_string(*command) + LOG_GAME << "ILLEGAL COMMAND in game: " << id_ << ", " << db_id_ << " (((" << simple_wml::node_to_string(*command) << ")))\n"; std::stringstream msg; msg << "Removing illegal command '" << (*command).first_child().to_string() << "' from: " << username(user) << ". Current player is: " << username(current_player()) << " (" << current_side_index_ + 1 << "/" << nsides_ << ")."; - LOG_GAME << msg.str() << " (socket: " << current_player() << ") (game id: " << id_ << ")\n"; + LOG_GAME << msg.str() << " (socket: " << current_player() << ") (game id: " << id_ << ", " << db_id_ << ")\n"; send_and_record_server_message(msg.str()); marked.push_back(index - marked.size()); @@ -1437,7 +1435,7 @@ bool game::add_player(const socket_ptr& player, bool observer) LOG_GAME << client_address(player) << "\t" << player_connections_.find(user)->info().name() << "\tjoined game:\t\"" - << name_ << "\" (" << id_ << ")" << (observer ? " as an observer" : "") << ". (socket: " << player + << name_ << "\" (" << id_ << ", " << db_id_ << ")" << (observer ? " as an observer" : "") << ". (socket: " << player << ")\n"; player_connections_.find(user)->info().mark_available(id_, name_); @@ -1501,7 +1499,7 @@ bool game::remove_player(const socket_ptr& player, const bool disconnect, const << client_address(user) << "\t" << player_connections_.find(user)->info().name() << ((game_ended && !(observer && destruct)) ? (started_ ? "\tended" : "\taborted") : "\thas left") - << " game:\t\"" << name_ << "\" (" << id_ << ")" + << " game:\t\"" << name_ << "\" (" << id_ << ", " << db_id_ << ")" << (game_ended && started_ && !(observer && destruct) ? " at turn: " + lexical_cast_default(current_turn()) + " with reason: '" + termination_reason() + "'" @@ -1947,7 +1945,7 @@ const user_vector game::all_game_users() const std::string game::debug_player_info() const { std::stringstream result; - result << "game id: " << id_ << "\n"; + result << "game id: " << id_ << ", " << db_id_ << "\n"; // result << "players_.size: " << players_.size() << "\n"; for(const socket_ptr& p : players_) { @@ -1981,7 +1979,7 @@ std::string game::debug_player_info() const std::string game::debug_sides_info() const { std::stringstream result; - result << "game id: " << id_ << "\n"; + result << "game id: " << id_ << ", " << db_id_ << "\n"; const simple_wml::node::child_list& sides = get_sides_list(); result << "\t\t level, server\n"; diff --git a/src/server/server.cpp b/src/server/server.cpp index 69702ce3c0a8..ccae41cb1a39 100644 --- a/src/server/server.cpp +++ b/src/server/server.cpp @@ -1326,7 +1326,7 @@ void server::cleanup_game(game* game_ptr) gamelist->remove_child("game", index); } else { // Can happen when the game ends before the scenario was transferred. - LOG_SERVER << "Could not find game (" << game_ptr->id() << ") to delete in games_and_users_list_.\n"; + LOG_SERVER << "Could not find game (" << game_ptr->id() << ", " << game_ptr->db_id() << ") to delete in games_and_users_list_.\n"; } delete game_ptr; @@ -1441,7 +1441,7 @@ void server::handle_player_in_game(socket_ptr socket, std::shared_ptrcopy_into(desc); } else { WRN_SERVER << client_address(socket) << "\t" << player.name() << "\tsent scenario data in game:\t\"" - << g.name() << "\" (" << g.id() << ") without a 'multiplayer' child.\n"; + << g.name() << "\" (" << g.id() << ", " << g.db_id() << ") without a 'multiplayer' child.\n"; // Set the description so it can be removed in delete_game(). g.set_description(&desc); delete_game(g.id()); @@ -1469,7 +1469,7 @@ void server::handle_player_in_game(socket_ptr socket, std::shared_ptr(g.id()).c_str()); } else { WRN_SERVER << client_address(socket) << "\t" << player.name() << "\tsent scenario data in game:\t\"" - << g.name() << "\" (" << g.id() << ") although it's already initialized.\n"; + << g.name() << "\" (" << g.id() << ", " << g.db_id() << ") although it's already initialized.\n"; return; } @@ -1542,7 +1542,7 @@ void server::handle_player_in_game(socket_ptr socket, std::shared_ptrcopy_into(desc); } else { WRN_SERVER << client_address(socket) << "\t" << player.name() << "\tsent scenario data in game:\t\"" - << g.name() << "\" (" << g.id() << ") without a 'multiplayer' child.\n"; + << g.name() << "\" (" << g.id() << ", " << g.db_id() << ") without a 'multiplayer' child.\n"; delete_game(g.id()); @@ -1816,7 +1816,7 @@ void server::handle_player_in_game(socket_ptr socket, std::shared_ptr().end()){ std::shared_ptr g = player->get_game(); if(g){ - *out << "Player '" << nick << "' is in game with id '" << g->id() << "' named '" << g->name() << "'. Ending game for reason: '" << reason << "'..."; + *out << "Player '" << nick << "' is in game with id '" << g->id() << ", " << g->db_id() << "' named '" << g->name() << "'. Ending game for reason: '" << reason << "'..."; delete_game(g->id(), reason); } else { *out << "Player '" << nick << "' is not currently in a game."; diff --git a/src/units/frame.cpp b/src/units/frame.cpp index 6370ad69566b..67ccb1f501b6 100644 --- a/src/units/frame.cpp +++ b/src/units/frame.cpp @@ -831,8 +831,8 @@ const frame_parameters unit_frame::merge_parameters(int current_time, const fram } /** The engine provides a blend color for poisoned units */ - result.blend_ratio = current_val.blend_ratio?current_val.blend_ratio:animation_val.blend_ratio; - if(primary && engine_val.blend_ratio) { + result.blend_ratio = current_val.blend_ratio != 0 ? current_val.blend_ratio:animation_val.blend_ratio; + if(primary && engine_val.blend_ratio != 0) { result.blend_ratio = std::min(result.blend_ratio + engine_val.blend_ratio, 1.0); } @@ -850,8 +850,8 @@ const frame_parameters unit_frame::merge_parameters(int current_time, const fram } /** The engine provides a submerge for units in water */ - result.submerge = current_val.submerge ? current_val.submerge : animation_val.submerge; - if(primary && engine_val.submerge && !result.submerge) { + result.submerge = current_val.submerge != 0 ? current_val.submerge : animation_val.submerge; + if(primary && engine_val.submerge != 0 && result.submerge == 0) { result.submerge = engine_val.submerge; } diff --git a/src/units/unit.cpp b/src/units/unit.cpp index 4ede2d0e884b..ab0962b50ca3 100644 --- a/src/units/unit.cpp +++ b/src/units/unit.cpp @@ -931,7 +931,7 @@ void unit::advance_to(const unit_type& u_type, bool use_traits) // Reset the scalar values first trait_names_.clear(); - trait_descriptions_.clear(), + trait_descriptions_.clear(); is_fearless_ = false; is_healthy_ = false; image_mods_.clear(); diff --git a/utils/travis/steps/install.sh b/utils/travis/steps/install.sh index 2e1c00cb20e5..633e55ab1251 100755 --- a/utils/travis/steps/install.sh +++ b/utils/travis/steps/install.sh @@ -47,7 +47,7 @@ elif [ "$TRAVIS_OS_NAME" = "windows" ]; then 7z x VC15.zip mv external-VC15 external cd $start - export PATH="/c/Python36:"$PATH":/c/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/MSBuild/15.0/Bin/amd64:$start/../external/dll:/c/Python36/Scripts/" + export PATH="/c/Python36:"$PATH":$start/../external/dll:/c/Python36/Scripts/" yes | pip3 install paramiko if [ "$(which python3)" == "" ] || [ "$(which sqlite3)" == "" ] || [ ! -d "../external" ]; then echo "Failed to retrieve dependencies!" diff --git a/utils/travis/steps/script.sh b/utils/travis/steps/script.sh index 638981149830..416c212a1064 100755 --- a/utils/travis/steps/script.sh +++ b/utils/travis/steps/script.sh @@ -22,7 +22,7 @@ if [ "$TRAVIS_OS_NAME" = "osx" ]; then exit $BUILD_RET elif [ "$TRAVIS_OS_NAME" = "windows" ]; then - powershell "MSBuild.exe projectfiles/VC14/wesnoth.sln -p:Configuration=$CFG" + cmd.exe //C 'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat' x86 '&&' MSBuild.exe projectfiles/VC14/wesnoth.sln -p:Configuration=$CFG -p:Platform=Win32 BUILD_RET=$? if [ "$UPLOAD_ID" != "" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then