100 lines
2.6 KiB
Bash
Executable File
100 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# creator: josh@woosworld.net
|
|
# Simple script to replicate changes made to pshop1
|
|
# to the rest of the pshops and keep the correct
|
|
# keys and exits working.
|
|
#
|
|
# Obviously this is based on some conventions I have
|
|
# don't use pshop1 anywhere else in the file etc...
|
|
#
|
|
|
|
#first rename the pshop1 dir so we don't erase it
|
|
mv pshop1 PSHOP
|
|
|
|
#then remove all the pshop files
|
|
rm -f pshop*/*
|
|
|
|
#copy PSHOP to all the pshop directories
|
|
for FILE in pshop*; do
|
|
if [[ -d "$FILE" ]]; then
|
|
#copy the files into the pshops directories
|
|
cp PSHOP/* "${FILE}/"
|
|
|
|
#go there
|
|
cd $FILE
|
|
|
|
#get the pshopnum
|
|
PSHOPNUM=$(cut -d p -f3 <<< "$FILE")
|
|
|
|
#for each file in the pshop directory
|
|
for MYFILE in *; do
|
|
#correct the key values on inventory checkers
|
|
sed "s/pshop1/${FILE}/;s/^name Private Shop 1,/name Private Shop ${PSHOPNUM},/" "$MYFILE" > "${MYFILE}_2"
|
|
rm -f $MYFILE
|
|
mv "${MYFILE}_2" $MYFILE
|
|
done
|
|
|
|
#calculate HP and SP based on pshopnum
|
|
if [[ $PSHOPNUM -lt 14 ]]; then
|
|
#top row of shops
|
|
SP="2"
|
|
HP=$(( PSHOPNUM * 3 + 1 ))
|
|
else
|
|
#bottom row of shops
|
|
SP="6"
|
|
MODPSHOPNUM=$(( PSHOPNUM - 14 ))
|
|
HP=$(( MODPSHOPNUM * 3 + 1 ))
|
|
fi
|
|
|
|
# Keep track of state when parsing.
|
|
# 0 Before/after exit, looking for slaying
|
|
# 1 During exit, looking for hp and sp
|
|
state=0
|
|
hadhp=0
|
|
hadsp=0
|
|
#fix the exit on gfloor
|
|
while read LINE; do
|
|
case $state in
|
|
0)
|
|
if [[ "$LINE" == "slaying ../pshops_main" ]]; then
|
|
state=1
|
|
fi
|
|
echo "$LINE" >> gfloor2
|
|
;;
|
|
1)
|
|
case $LINE in
|
|
"hp "*)
|
|
echo "hp $HP" >> gfloor2
|
|
hadhp=1
|
|
;;
|
|
"sp "*)
|
|
echo "sp $SP" >> gfloor2
|
|
hadsp=1
|
|
;;
|
|
*)
|
|
echo "$LINE" >> gfloor2
|
|
;;
|
|
esac
|
|
if [[ ( $hadhp == 1 ) && ( $hadsp == 1 ) ]]; then
|
|
state=0
|
|
fi
|
|
;;
|
|
esac
|
|
done < gfloor
|
|
|
|
#replace gfloor with gfloor2
|
|
rm -f gfloor
|
|
mv gfloor2 gfloor
|
|
|
|
#go back up
|
|
cd ..
|
|
fi
|
|
done
|
|
|
|
#put pshop1 back
|
|
mv PSHOP pshop1
|
|
|
|
#bye
|
|
exit 0
|