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
 |