Skip to content

Instantly share code, notes, and snippets.

@shizeeg
Last active February 18, 2020 00:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shizeeg/5489e5fdd0ae38f2fcbfe0e198b91c82 to your computer and use it in GitHub Desktop.
Save shizeeg/5489e5fdd0ae38f2fcbfe0e198b91c82 to your computer and use it in GitHub Desktop.
MK11 Brutalities list command-line tool
#!/usr/bin/env zsh
TDB='/tmp/mk11_brutalities.txt'
if [[ ! -r "${TDB}" ]];then
echo "downloading \"${TDB}\"..."
curl -so "${TDB}" 'https://pastebin.com/raw/WkaZ6PeU'
[[ "$?" -eq 0 ]] && echo "done"
fi
KHR=$(tr '[a-z]' '[A-Z]' <<< $1)
NUM=$(($2-1))
#[[ ${NUM} -le 0 ]] && NUM=1
typeset -A khar
khar[BAR]="Baraka"
khar[CAS]="Cassie Cage"
khar[CET]="Cetrion"
khar[DVO]="D'Vorah"
khar[ERR]="Erron Black"
khar[FRO]="Frost"
khar[JAC]="Jacqui Briggs"
khar[JAD]="Jade"
khar[JAX]="Jax Briggs"
khar[JOH]="Johnny Cage"
khar[JOK]="Joker"
khar[KAB]="Kabal"
khar[KAN]="Kano"
khar[KIT]="Kitana"
khar[KOL]="Kollector"
khar[KOT]="Kotal Khan"
khar[KUN]="Kung Lao"
khar[LIU]="Liu Kang"
khar[NIT]="Nightwolf"
khar[NOO]="Noob Saibot"
khar[RAI]="Raiden"
khar[SCO]="Scorpion"
khar[SHA]="Shao Khan"
khar[SHT]="Shang Tsung"
khar[SIN]="Sindel"
khar[SKA]="Skarlet"
khar[SON]="Sonya Blade"
khar[SUB]="Sub Zero"
khar[TER]="Geras?"
khar[TRM]="The Terminator"
LEFT='๐Ÿก„'
RIGHT='๐Ÿก†'
UP='๐Ÿก…'
DOWN='๐Ÿก‡'
LAY=4
#LAY 1 2 3 4 5 6
FP=('โž€' 'โžŠ' 'โ“' '๐Ÿ…ง' '๐ŸŸ—' '๐ŸŸ˜')
BP=('โž' 'โž‹' 'โ“Ž' '๐Ÿ…จ' '๐ŸŸ•' '๐ŸŸ–')
FK=('โž‚' 'โžŒ' 'โ’ถ' '๐Ÿ…' 'โฎพ' '๐Ÿ…ง')
BK=('โžƒ' 'โž' 'โ’ท' '๐Ÿ…‘' 'โฆพ' '๐Ÿ…ž')
[[ ! -r "${TDB}" ]] && { echo "ERR: \"$TDB\" is not readable!" >&2; exit -2 }
# Returns brutalities count
# params: KHR
function count() {
grep "${1}_" ${TDB} | grep 'Brutality' | grep '\[' | cut -d '_' -f2 | sort | uniq | wc -l
}
# Outputs: Kharacter Kodes e.g. KHRs
# params: none
function kharacters() {
KHRS=("${(@f)$(cut -d '_' -f1 "${TDB}" | sort | uniq)}")
for k in $KHRS; do
echo "${k}: $khar[$k] ($(count ${k}))"
done
}
# get all brutalities by tripple kharacter code
# params: KHR
function bykhar() {
grep "${1:u}_" "${TDB}" | cut -c5-
}
# makes inputs readable
# params: input codes
function decr() {
sed -e "s|\[Towards\]| ${RIGHT}|g" -e "s|\[Away\]| ${LEFT}|g" \
-e "s|\[Down\]| ${DOWN}|g" -e "s|\[Up\]| ${UP}|g" \
-e 's|\[L1\]| Throw|g' \
-e 's|\[R1\]| AMP|g' \
-e "s|\[FP\]| ${FP[$LAY]}|g" \
-e "s|\[BP\]| ${BP[$LAY]}|g" \
-e "s|\[FK\]| ${FK[$LAY]}|g" \
-e "s|\[BK\]| ${BK[$LAY]}|g" \
-e 's|\[+\]| + |g' \
-e 's|\[,\]|, |g' \
<<< "${1}" | sed -r 's|\s+| |g' | sed -r 's|^ ||'
}
# fetch brutality description
# params: KHR NUM from 0 to 10
function desc() {
DESC=$(bykhar "${KHR}" | grep "Brutality${NUM}_" | grep "Level1_" | grep "Description=" | cut -d '=' -f2 | cut -d '[' -f1)
echo "$DESC"
}
function name() {
bykhar "${1:-KHR}" | grep "Brutality${2:-NUM}_" | grep "Level1=" | cut -d '=' -f2
}
function flav() {
bykhar "${1:-KHR}" | grep "Brutality${2:-NUM}_" | grep "Level1_" | grep "Flavor1=" | cut -d '=' -f2
}
function inpt() {
decr "$(bykhar "${1:-KHR}" | grep "Brutality${2:-NUM}_" | grep "Level1_" | grep "Description=" | cut -d '=' -f2 | egrep -o '\[.+')"
}
[[ -z "${KHR}" ]] && { kharacters; exit -1; }
echo "Kharacter: $khar[${KHR}] ($(count ${KHR}))"
if [[ -z "${NUM}" || "${NUM}" -lt 0 ]]; then
for i in seq {0..$(count $KHR)}; do
NAME="$(name $KHR $i)"
INPT="$(inpt $KHR $i)"
[[ -z "${INPT}" ]] && continue
if [[ ! -z $NAME ]] then
printf "%2d: %s\n" $(($i+1)) ${NAME}
echo " ${INPT} "
fi
done
exit -3
fi
echo "Name: $(name $KHR $NUM)"
flav $KHR $NUM
desc $KHR $NUM
INPTS="$(inpt $KHR $NUM)"
[[ ! -z $INPTS ]] && echo "Inputs: $INPTS"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment