server-1.12/doc/spoiler/monster-extract

61 lines
1.6 KiB
Plaintext

BEGIN {
# special is a list of what special things we should look for.
# The value of the array is how many commas we should skip.
special["attacks"] = 1;
special["protected"] = 1;
special["immune"] = 1;
special["vulnerable"] = 1;
special["spell abilities"] = 1;
}
{
# Old stuff:
# if ($2 > 25000) z = "Ordeal";
# else if ($2 > 10000) z = "Mighty";
# else if ($2 > 5000) z = "Powerful";
# else if ($2 > 1000) z = "Dangerous";
# else if ($2 > 400) z = "Tough";
# else if ($2 > 200) z = "Tricky";
# else if ($2 > 100) z = "Hard";
# else if ($2 > 50) z = "Easy";
# else if ($2 > 25) z = "Simple";
# else if ($2 > 14) z = "Weak";
# else if ($2 > 8) z = "Feeble";
# else z = "Defenseless";
# Expl:
# name - ..
# comma - Print a comma or not
# antall - number of (sub)fields in the 'Special' field; antall(Nor) <-> "number of".
# i - counter. Should start as values 2.
name = capitalize($1);
sub("_", " ", name);
comma = 0;
# The split allows "(", ")(", ", ", ":", ":)(" etc. as delimiters
antall = split($5, field, "([():,][():,]*) *");
printf("%s &~~%s~~ &%s &%s &%s &%s &",
name, $6, $7 ? "~~" $7 "~~" : "", $2, $3, $4);
for (i = 2; i < antall; i++) {
if (field[i] in special) {
if (comma > 0)
printf("\\newline ");
printf("%s: ", capitalize(field[i]));
comma = 1 - special[field[i]];
} else {
if (comma > 0)
printf(", ");
else
++comma;
printf(i == 2 ? capitalize(field[i]) : field[i]);
}
}
printf("\\\\\n");
}
function capitalize(str) {
return toupper(substr(str, 1, 1)) substr(str, 2);
}