King Mode: Fix king placement phase not working correctly with multiple teams in a clan
New king placement phase rules:
* Before the game begins, each team can walk with their king and teleport for free, everything else is disabled
* This special round does not count towards the round counter, like in gfPlaceHog
* TotalRounds is set to -1 during this round, like in gfPlaceHog
Under the old rules, this was much more hacky. The delay of all delay-less weapons was just set to 1
The problem with the old rules was that if any clan had more than 1 team, eventually the weapon delay will time out before all kings have been placed.
#!/usr/bin/env bash
#
# Tool which tries to find outdated translations in the engine strings (*.txt) using hg blame.
# Note this is only a heuristic; the output might not be 100% accurate.
# Strings which this tool lists MIGHT be outdated, so you might want to re-translate them, if needed.
# Run this in the tools/ directory.
#
# SYNTAX:
#
# ./find_outdated_engine_translations.sh <LANGUAGE>
#
# <LANGUAGE>: Language code of the language to check
#
shopt -s checkwinsize
cd ../share/hedgewars/Data/Locale
IGNORE_CASE_WHITESPACE=1;
if ((${#@}==2))
then
IGNORE_CASE_WHITESPACE=$2;
fi;
BLAMELANG=$1;
if [ -z $BLAMELANG ]
then
echo "No language specified.";
exit;
fi;
BLAMELANGFILE="$BLAMELANG.txt";
TEMP_EN=$(mktemp);
TEMP_LANG=$(mktemp);
#hg fa en.txt | grep -P "^\s*\d+:\s+0[013-6]:" > $TEMP_EN;
hg blame en.txt | grep -P "^\s*\d+:\s+0[013-6]:" > $TEMP_EN;
#hg fa $BLAMELANGFILE | grep -P "^\s*\d+:\s+0[013-6]:" > $TEMP_LANG;
hg blame $BLAMELANGFILE | grep -P "^\s*\d+:\s+0[013-6]:" > $TEMP_LANG;
cat $TEMP_EN | while read f;
do
REV=$(echo $f | sed 's/:.*//');
CODE=$(echo $f | sed 's/^[0-9]\+:\s\+//;s/=.*//');
OTHER=$(grep -P "^\s*\d+:\s+${CODE}" $TEMP_LANG);
if (($?==0));
then
OTHER_REV=$(echo $OTHER | sed 's/:.*//');
if (($REV>$OTHER_REV));
then
TEXT=$(echo $f | sed 's/^\s*[0-9]\+:\s*[0-9]\+:[0-9]\+=//');
# script runs ~20% faster than with blame but nonstandard
# OLD_TEXT=$(hg fa -r "$OTHER_REV" en.txt | grep -P "^\s*\d+:\s+${CODE}=" | sed 's/^\s*[0-9]\+:\s*[0-9]\+:[0-9]\+=//;s/
//');
OLD_TEXT=$(hg blame -r "$OTHER_REV" en.txt | grep -P "^\s*\d+:\s+${CODE}=" | sed 's/^\s*[0-9]\+:\s*[0-9]\+:[0-9]\+=//;s/
//');
COMPARE_TEXT=$TEXT;
COMPARE_OLD_TEXT=$OLD_TEXT;
if (($IGNORE_CASE_WHITESPACE==1));
then
COMPARE_TEXT=$(echo $TEXT | sed 's/\s*//g' | tr A-Z a-z);
COMPARE_OLD_TEXT=$(echo $OLD_TEXT | sed 's/\s*//g' | tr A-Z a-z);
fi;
if [ "$COMPARE_TEXT" != "$COMPARE_OLD_TEXT" ];
then
if [ -z $COLUMNS ];
then
printf '━%.0s' $(seq 74);
echo "";
else
printf '━%.0s' $(seq $COLUMNS);
fi;
echo "${CODE}=$TEXT ← Current English";
echo "${CODE}=$OLD_TEXT ← English at time of translation";
echo "${CODE}=$(echo $OTHER | sed 's/^\s*[0-9]\+:\s*[0-9]\{2\}:[0-9]\{2\}=//') ← current translation";
fi;
fi;
fi;
done
rm $TEMP_EN $TEMP_LANG