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); }