@echo off rem This file should be named Safehack.bat rem rem rem Date sent: 23 Oct 96 13:19:00 EDT rem From: "Duane M. Davis" <76207.1452@CompuServe.COM> rem To: Sascha Wostmann rem Subject: Safehack batch file rem rem This file should be named Safehack.bat rem It was created by Duane Davis and Kevin Cronk rem Safehack requires at least 512k of environment space rem The creators assume no liability for the use of this file. rem Use it at your own risk. rem If you modify it, remove the version number in the message below. rem :message cls echo. echo. echo Welcome to Safehack v2.3.4, a utility written to enhance your play and echo enjoyment of NetHack. Safehack is a Front End to NetHack allowing echo you to Launch NetHack as well as Manipulate various associated files. echo. echo. echo. pause :defaults set sex=none set class1=z set dflag=0 set cflag=0 set bflag=1 set fflag=0 set pflag=0 set nflag=1 :start set aflag=1 if %cflag%==1 goto char1 goto name0 :start1 set aflag=0 if exist %cfile%.sav goto char2 goto char1 :char1 if %sex%==Male goto character if %sex%==Female goto character cls echo. echo. echo Character options will now be set. echo. echo. pause goto sex :char2 cls echo. echo. echo A Character named %name% already exists... echo. echo Play it? (Y/N) echo. echo. choice /c:yn /n if errorlevel 2 goto start if errorlevel 1 goto normalnot goto char2 :char5 set dflag=0 goto char2 :menu if %dflag%==2 goto char5 cls echo. echo. echo Main Menu echo. echo 1) Change Character echo 2) Delete a Variety of Files echo 3) Edit the Logfile echo 4) Edit the Record echo 5) Launch NetHack echo 6) Exit this program echo. echo The Current Character is ... %name% echo. echo. choice /c:123456 /n if errorlevel 6 goto end if errorlevel 5 goto launch if errorlevel 4 goto record if errorlevel 3 goto logfile if errorlevel 2 goto delete if errorlevel 1 goto character goto menu :view cls echo. echo. dir *.sa? /o/p pause goto delete :delete cls echo. echo. echo Delete Menu echo. echo 1) View Active and "Safe" Files echo 2) Delete all Bones Files echo 3) Delete all "%name%'s" Files echo 4) Change Character File Name echo 5) Return to Main Menu echo. echo. echo ... ALL Deletions WILL BE PERMANENT ... echo. echo. choice /c:12345 /n if errorlevel 5 goto menu if errorlevel 4 goto del3 if errorlevel 3 goto del2 if errorlevel 2 goto del1 if errorlevel 1 goto view goto delete :del1 del bones??.* cls echo. echo. echo Dem bones, Dem bones, Dem bones don' rattle no mo' ! echo. echo. pause goto delete :del2 if not exist %cfile%.sav goto del6 del %cfile%.* cls echo. echo. echo Aaaaaaaahhhhhhhheeeeeeeeieiiiiiiiiiii ! echo. echo. pause goto delete :del3 set dflag=1 goto name0 :del4 if not exist %cfile%.sav goto del5 set dflag=2 goto delete :del5 goto name0 :del6 cls echo. echo. echo There are no "%name%" Files to Delete... echo. echo. pause goto delete :logfile edit logfile goto menu :record edit record goto menu :launch if exist %cfile%.sav goto normalnot set nethackoptions=name:%name%-%class1%,%sex%,pettype:%pet%,%pet%name:%petname%,fruit:%fruit% cls echo. echo. echo Launch Menu echo. echo 1) Normal NetHack echo 2) Explore Mode NetHack echo 3) Return to Main Menu echo. echo. choice /c:123 /n if errorlevel 3 goto menu if errorlevel 2 goto expl if errorlevel 1 goto normal goto launch :automate if exist %name%.sav copy %name%.sav %name%.saf if exist %name%.saf copy %name%.saf %name%.sav goto menu :normal call nethack pause goto automate :normalnot call nethack -u %name% pause goto automate :expl call nethack -X pause goto automate :character if exist %cfile%.sav goto start cls echo. echo. echo Character Menu echo. echo 1) Change Character Name echo 2) Specify Sex echo 3) Specify Character Class echo 4) Change Favorite Fruit echo 5) Specify Pet Type echo 6) Change Pet Name echo 7) Return to the Main Menu echo. echo. echo. echo The Current Character is ... %name% echo. echo %name% is a %sex% %class% echo %name% likes to eat %fruit%s echo %name% has a pet %pet% named %petname% echo. echo. choice /c:1234567 /n if errorlevel 7 goto menu if errorlevel 6 goto petname if errorlevel 5 goto pettype if errorlevel 4 goto fruit if errorlevel 3 goto class if errorlevel 2 goto sex if errorlevel 1 goto name0 goto menu :name0 set let1= set let2= set let3= set let4= set let5= set let6= set let7= set let8= set let9= set let10= set let11= set let12= set let13= set let14= set let15= if %pflag%==1 set petname= if %fflag%==1 set fruit= if %nflag%==1 set name= set ln=1 goto name1 :cfile set let1= set let2= set let3= set let4= set let5= set let6= set let7= set let8= set let9= set let10= set let11= set let12= set let13= set let14= set let15= set nflag=0 if %ln%==1 goto cfile1 set ln=1 if %pflag%==1 goto petname2 if %fflag%==1 goto fruit2 if %dflag%==1 goto del4 if exist %cfile%.sav goto char2 if %aflag%==1 goto start1 goto character :cfile1 if %pflag%==1 goto pname if %fflag%==1 goto fname set name=Anyone set cfile=Anyone if %aflag%==1 goto start1 goto character :pname if %pet%==Dog set petname=Pup if %pet%==Cat set petname=Kitty goto petname2 :fname set fflag=0 set fruit=Lemon goto fruit2 :name2 if %ln%==1 goto letnum1 if %ln%==2 goto letnum2 if %ln%==3 goto letnum3 if %ln%==4 goto letnum4 if %ln%==5 goto letnum5 if %ln%==6 goto letnum6 if %ln%==7 goto letnum7 if %ln%==8 goto letnum8 if %ln%==9 goto letnum9 if %ln%==10 goto letnum10 if %ln%==11 goto letnum11 if %ln%==12 goto letnum12 if %ln%==13 goto letnum13 if %ln%==14 goto letnum14 if %ln%==15 goto letnum15 goto name1 :letnum1 set ln=2 goto name1 :letnum2 set ln=3 goto name1 :letnum3 set ln=4 goto name1 :letnum4 set ln=5 goto name1 :letnum5 set ln=6 goto name1 :letnum6 set ln=7 goto name1 :letnum7 set ln=8 goto name1 :letnum8 set ln=9 goto name1 :letnum9 set ln=10 goto name1 :letnum10 set ln=11 goto name1 :letnum11 set ln=12 goto name1 :letnum12 set ln=13 goto name1 :letnum13 set ln=14 goto name1 :letnum14 set ln=15 goto name1 :letnum15 set ln=0 goto name1 :name1 if %pflag%==1 goto petname1 if %fflag%==1 goto fruit1 set cfile=%let1%%let2%%let3%%let4%%let5%%let6%%let7%%let8% set name=%let1%%let2%%let3%%let4%%let5%%let6%%let7%%let8%%let9%%let10%%let11%%let12%%let13%%let14%%let15% cls echo. echo. echo Character Name echo. echo. echo Type in whatever you want to call your Character. echo. echo Type a period (.) when finished or an exclamation point (!) to start over. echo. echo I will be known as .... %name% echo. echo. :letters choice /c:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.! /n /s if errorlevel 54 goto name0 if errorlevel 53 goto cfile if errorlevel 52 goto c1z if errorlevel 51 goto c1y if errorlevel 50 goto c1x if errorlevel 49 goto c1w if errorlevel 48 goto c1v if errorlevel 47 goto c1u if errorlevel 46 goto c1t if errorlevel 45 goto c1s if errorlevel 44 goto c1r if errorlevel 43 goto c1q if errorlevel 42 goto c1p if errorlevel 41 goto c1o if errorlevel 40 goto c1n if errorlevel 39 goto c1m if errorlevel 38 goto c1l if errorlevel 37 goto c1k if errorlevel 36 goto c1j if errorlevel 35 goto c1i if errorlevel 34 goto c1h if errorlevel 33 goto c1g if errorlevel 32 goto c1f if errorlevel 31 goto c1e if errorlevel 30 goto c1d if errorlevel 29 goto c1c if errorlevel 28 goto c1b if errorlevel 27 goto c1a if errorlevel 26 goto cZ1 if errorlevel 25 goto cY1 if errorlevel 24 goto cX1 if errorlevel 23 goto cW1 if errorlevel 22 goto cV1 if errorlevel 21 goto cU1 if errorlevel 20 goto cT1 if errorlevel 19 goto cS1 if errorlevel 18 goto cR1 if errorlevel 17 goto cQ1 if errorlevel 16 goto cP1 if errorlevel 15 goto cO1 if errorlevel 14 goto cN1 if errorlevel 13 goto cM1 if errorlevel 12 goto cL1 if errorlevel 11 goto cK1 if errorlevel 10 goto cJ1 if errorlevel 9 goto cI1 if errorlevel 8 goto cH1 if errorlevel 7 goto cG1 if errorlevel 6 goto cF1 if errorlevel 5 goto cE1 if errorlevel 4 goto cD1 if errorlevel 3 goto cC1 if errorlevel 2 goto cB1 if errorlevel 1 goto cA1 :cA1 set let%ln%=A goto name2 :cB1 set let%ln%=B goto name2 :cC1 set let%ln%=C goto name2 :cD1 set let%ln%=D goto name2 :cE1 set let%ln%=E goto name2 :cF1 set let%ln%=F goto name2 :cG1 set let%ln%=G goto name2 :cH1 set let%ln%=H goto name2 :cI1 set let%ln%=I goto name2 :cJ1 set let%ln%=J goto name2 :cK1 set let%ln%=K goto name2 :cL1 set let%ln%=L goto name2 :cM1 set let%ln%=M goto name2 :cN1 set let%ln%=N goto name2 :cO1 set let%ln%=O goto name2 :cP1 set let%ln%=P goto name2 :cQ1 set let%ln%=Q goto name2 :cR1 set let%ln%=R goto name2 :cS1 set let%ln%=S goto name2 :cT1 set let%ln%=T goto name2 :cU1 set let%ln%=U goto name2 :cV1 set let%ln%=V goto name2 :cW1 set let%ln%=W goto name2 :cX1 set let%ln%=X goto name2 :cY1 set let%ln%=Y goto name2 :cZ1 set let%ln%=Z goto name2 :c1a set let%ln%=a goto name2 :c1b set let%ln%=b goto name2 :c1c set let%ln%=c goto name2 :c1d set let%ln%=d goto name2 :c1e set let%ln%=e goto name2 :c1f set let%ln%=f goto name2 :c1g set let%ln%=g goto name2 :c1h set let%ln%=h goto name2 :c1i set let%ln%=i goto name2 :c1j set let%ln%=j goto name2 :c1k set let%ln%=k goto name2 :c1l set let%ln%=l goto name2 :c1m set let%ln%=m goto name2 :c1n set let%ln%=n goto name2 :c1o set let%ln%=o goto name2 :c1p set let%ln%=p goto name2 :c1q set let%ln%=q goto name2 :c1r set let%ln%=r goto name2 :c1s set let%ln%=s goto name2 :c1t set let%ln%=t goto name2 :c1u set let%ln%=u goto name2 :c1v set let%ln%=v goto name2 :c1w set let%ln%=w goto name2 :c1x set let%ln%=x goto name2 :c1y set let%ln%=y goto name2 :c1z set let%ln%=z goto name2 :petname set petname= set pflag=1 goto petname1 :petname2 if %bflag%==1 set bflag=0 if %pflag%==1 set pflag=0 goto character :petname1 set petname=%let1%%let2%%let3%%let4%%let5%%let6%%let7%%let8%%let9%%let10%%let11%%let12%%let13%%let14%%let15% cls echo. echo. echo Change Petname echo. echo. echo Type in whatever you want to call your Pet. echo. echo Type a period (.) when finished or an exclamation point (!) to start over. echo. echo I'll call my Pet ... %petname% echo. echo. goto letters :fruit set fruit= set fflag=1 goto fruit1 :fruit2 if %fflag%==1 set fflag=0 if %bflag%==1 goto pettype goto character :fruit1 set fruit=%let1%%let2%%let3%%let4%%let5%%let6%%let7%%let8%%let9%%let10%%let11%%let12%%let13%%let14%%let15% cls echo. echo. echo Change Favorite Fruit echo. echo. echo Type in the name of your Favorite Fruit. Please bear in mind that the echo following Fruit Names cannot be used: Apples, oranges, pears, bananas, echo and melons. A singular fruit works best (e.g. Apricot, Papaya, etc.) echo Type a period (.) when finished or an exclamation point (!) to start over. echo. echo. echo My Favorite Fruit is a(n) ... %fruit% echo. echo. goto letters :class cls echo. echo. echo Class Menu echo. echo. echo A)rcheologist P)riest echo B)arbarian R)ogue echo C)aveman/Cavewoman S)amurai echo E)lf T)ourist echo H)ealer V)alkyrie echo K)night W)izard echo. echo. choice /c:abcehkprstvw /n if errorlevel 12 goto wiz if errorlevel 11 goto val if errorlevel 10 goto tou if errorlevel 9 goto sam if errorlevel 8 goto rog if errorlevel 7 goto pri if errorlevel 6 goto kni if errorlevel 5 goto hea if errorlevel 4 goto elf if errorlevel 3 goto cav if errorlevel 2 goto bar if errorlevel 1 goto arc goto class :arc set class=Archeologist set class1=a if %bflag%==1 goto fruit goto character :bar set class=Barbarian set class1=b if %bflag%==1 goto fruit goto character :cav set pet=Dog set class1=c if %sex%==Female goto cavf set class=Caveman if %bflag%==1 goto fruit goto character :cavf set class=Cavewoman if %bflag%==1 goto fruit goto character :elf set class=Elf set class1=e if %bflag%==1 goto fruit goto character :hea set class=Healer set class1=h if %bflag%==1 goto fruit goto character :kni set class=Knight set class1=k if %bflag%==1 goto fruit goto character :pri set class=Priest set class1=p if %bflag%==1 goto fruit goto character :rog set class=Rogue set class1=r if %bflag%==1 goto fruit goto character :sam set pet=Dog set class=Samurai set class1=s if %bflag%==1 goto fruit goto character :tou set class=Tourist set class1=t if %bflag%==1 goto fruit goto character :val set class=Valkyrie set class1=v if %bflag%==1 goto fruit goto character :wiz set pet=Cat set class=Wizard set class1=w if %bflag%==1 goto fruit goto character :pettype cls echo. echo. echo Pet Menu echo. echo. echo 1) Dog echo 2) Cat echo. echo. choice /c:12 /n if errorlevel 2 goto cat if errorlevel 1 goto dog goto pettype :cat if %class1%==c goto catnot if %class1%==s goto catnot set pet=Cat if %bflag%==1 goto petname goto character :catnot set pet=Dog cls echo. echo. echo OOPS... A Caveman, Cavewoman, or Samurai may not start with echo a Cat as a Pet. You must start with a Dog. echo. echo. pause if %bflag%==1 goto petname goto character :dog if %class1%==w goto dognot set pet=Dog if %bflag%==1 goto petname goto character :dognot set pet=Cat cls echo. echo. echo OOPS... Wizards may not start with a Dog as a Pet. echo You must start with a Cat. echo. echo. pause if %bflag%==1 goto petname goto character :sex cls echo. echo. echo Sex Menu echo. echo. echo 1) Male echo 2) Female echo. echo. choice /c:12 /n if errorlevel 2 goto female if errorlevel 1 goto male goto sex :male set sex=Male if %class1%==c goto malec if %bflag%==1 goto class goto character :female set sex=Female if %class1%==c goto femalec if %bflag%==1 goto class goto character :malec set class=Caveman if %bflag%==1 goto class goto character :femalec set class=Cavewoman if %bflag%==1 goto class goto character :end set name= set let1= set let2= set let3= set let4= set let5= set let6= set let7= set let8= set pet= set petname= set fruit= set sex= set class= set class1= set cfile= set nethackoptions= set aflag= set bflag= set cflag= set dflag= set fflag= set pflag= set ln= cd\ c: cd\ cls