A Classic Fairytale: Harden all missions against missing campaign variables in team file and assume default values
This assumes the worst case in which the team file is missing all campaign variables except Progress.
This has been successfully tested with all 10 missions and still generates a logical storyline.
By default, the game assumes:
- The cyborg's offer in mission 2 was refused
- The traitor in mission 5 was killed
As a consequence, missions 8 and 10 use the princessScene cut scene.
#!/bin/sh
#HW_HG=
if [ -z "$1" ]; then
echo 'You have to supply at least one hedgewars git revision as parameter!' >&2
exit
fi
if [ -z "$HW_HG" ]; then
HW_HG="$PWD"
fi
if [ ! -d "$HW_HG/.hg" ]; then
echo 'You have to set HW_HG (inside script or env) to a repo clone OR call this script from inside the repository!' >&2
exit
fi
while [ ! -z "$1" ]; do
echo
echo
echo '---------------------------------------------------------------'
echo "$1"
echo '---------------------------------------------------------------'
url="https://github.com/hedgewars/hw/commit/$1"
echo "Checking $url ..."
echo
page=$(wget -q -O- "$url")
author=$(echo "$page" | sed -rn '1,/"user-mention"/{s/^.*"user-mention"( *[^>]*)?> *([^ <]*).*$/\2/ p}')
if [ -z "$author" ]; then
echo 'Couldn'\''t find author! Skipping '"$1"' ...' >&2
shift
continue
fi
echo 'Found author: '"$author"
date=$(echo "$page" | sed -rn 's/^.*<time datetime="([^T]+)T([^Z]+).*/\1 \2 +0000/ p')
if [ -z "$date" ]; then
echo 'Couldn'\''t find date! Skipping '"$1"' ...' >&2
shift
continue
fi
echo 'Found date: '"$date"
echo
echo 'Checking mercurial log for matches ...'
echo
result=$(hg log -R "$HW_HG" -u "$author" -d "$date" -v -l1)
if [ -z "$result" ]; then
echo 'No match with this author'\''s name. It might differ, so let'\''s try using date only ...'
echo
result=$(hg log -R "$HW_HG" -d "$date" -v)
fi
if [ -z "$result" ]; then
echo 'No match :('
shift
continue
fi
rev=$(echo "$result" | sed 's/^.*://;q')
echo 'Found match: r'"$rev"
echo 'Link: http://hg.hedgewars.org/hedgewars/rev/'"$rev"
echo
echo "$result"
# proceed to next parameter
shift
done
echo