home *** CD-ROM | disk | FTP | other *** search
- Rem dndedit.bas v2.9c
- Rem $Include: 'dndbbs.inc'
-
- On Error Goto 10002
- Call ReadConfig
- Do
- Call MainPageScreen
- Do
- TempX$=Nul
- TempX=False
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- Select Case Len(TempX$)
- Case 1
- Select Case Ucase$(TempX$)
- Case "A"
- Next.Field=1
- Call ShowMainField
- Call MainEdit
- Exit Do
- Case "C"
- Next.Field=2
- Call ShowMainField
- Call MainEdit
- Exit Do
- Case "L"
- Next.Field=3
- Call ShowMainField
- Call MainEdit
- Exit Do
- Case "M"
- Next.Field=4
- Call ShowMainField
- Call MainEdit
- Exit Do
- Case "N"
- Next.Field=5
- Call ShowMainField
- Call MainEdit
- Exit Do
- Case "O"
- Next.Field=6
- Call ShowMainField
- Call MainEdit
- Exit Do
- Case "R"
- Next.Field=7
- Call ShowMainField
- Call MainEdit
- Exit Do
- Case "S"
- Next.Field=8
- Call ShowMainField
- Call MainEdit
- Exit Do
- Case "T"
- Next.Field=9
- Call ShowMainField
- Call MainEdit
- Exit Do
- Case "U"
- Next.Field=10
- Call ShowMainField
- Call MainEdit
- Exit Do
- Case Chr$(9)
- Call MainSelect
- Case Chr$(27)
- Error 99
- Case Chr$(13)
- Call MainEdit
- Exit Do
- End Select
- Case 2
- TempX=Asc(Right$(TempX$,1))
- Call MainSelect
- If TempX$=Chr$(13) Then
- Call MainEdit
- Exit Do
- Endif
- End Select
- Loop
- Loop
- 10001
- Call ClearScreen
- If Chained Then
- Chain DND.Path$+"dndbbs.exe"
- Endif
- End
- 10002
- Resume 10001
-
- Sub MainEdit
- On Local Error Goto 10004
- Select Case Selection
- Case 1
- Call EditAction
- Case 2
- Call EditMonclass
- Case 3
- Call EditLink
- Case 4
- Call EditMonster
- Case 5
- Call EditNonplayer
- Case 6
- Call EditObject
- Case 7
- Call EditRoom
- Case 8
- Call EditSpell
- Case 9
- Call EditTreasure
- Case 10
- Call EditUsers
- End Select
- 10003
- Exit Sub
- 10004
- Resume 10003
- End Sub
-
- Sub ReadConfig
- On Local Error Goto 10022
- If Len(Command$) Then
- If Val(Right$(Command$,2))>False Then
- Node=Asc(Right$(Command$,1))
- Endif
- Endif
- Call GetConfig
- If Data.Error Then
- Call ClearScreen
- Strng=FileName+" not found. Run DNDCNFG."
- Call Scrn(Strng)
- End
- Endif
- Call OpenFiles
- 10021
- Exit Sub
- 10022
- Resume 10021
- End Sub
-
- Sub GetConfig
- On Local Error Goto 10032
- Data.Error=False
- Out2=Environ$("DNDDAT")
- If Out2<>Nul Then
- Config3(11)=Out2
- If Right$(Config3(11),1)<>"\" Then
- Config3(11)=Config3(11)+"\"
- Endif
- Endif
- Out2=Environ$("DNDDOC")
- If Out2<>Nul Then
- Config3(52)=Out2
- If Right$(Config3(52),1)<>"\" Then
- Config3(52)=Config3(52)+"\"
- Endif
- Endif
- DND.Path$=Environ$("DNDBBS")
- If DND.Path$<>Nul Then
- If Right$(DND.Path$,1)<>"\" Then
- DND.Path$=DND.Path$+"\"
- Endif
- Endif
- FileName=DND.Path$+"DNDBBS"
- If Node Then
- FileName=FileName+Chr$(Node)
- Endif
- FileName=FileName+".CFG"
- Close
- Open FileName For Input Shared As #1
- For Temp5=1 To 40
- Input #1,Temp
- Next
- For Temp5=1 To 10
- Line Input #1,Temp$
- Next
- For Temp5=1 To 30
- Input #1,Config1(Temp5)
- Next
- For Temp5=1 To 85
- Input #1,Config2(Temp5)
- Next
- For Temp5=1 To 77
- Line Input #1,Config3(Temp5)
- Next
- For Temp5=1 To 10
- Line Input #1,High.Class.Name(Temp5)
- Next
- For Temp2=1 To 8
- Line Input #1,Race(Temp2)
- Next
- For Temp2=1 To 10
- Line Input #1,Class.Name(Temp2)
- Next
- For Temp2=1 To 7
- Line Input #1,Stat(Temp2)
- Next
- For Temp2=1 To 11
- Line Input #1,Direction(Temp2)
- Next
- For Temp2=1 To 10
- Line Input #1,Numeral(Temp2)
- Next
- For Temp2=1 To 4
- Line Input #1,Weapon.Type.Name(Temp2)
- Next
- For Temp2=1 To 3
- Line Input #1,Alignment.Name1(Temp2)
- Next
- For Temp2=1 To 3
- Line Input #1,Alignment.Name2(Temp2)
- Next
- 10031
- Exit Sub
- 10032
- Data.Error=True
- Resume 10031
- End Sub
-
- Sub OpenFiles
- On Local Error Goto 10042
- Close
- FileName=Config3(11)+Config3(76)+Config3(15)
- Open FileName For Random Shared As #1 Len=Len(HelpRecord1)
- FileName=Config3(11)+Config3(21)+Config3(15)
- Open FileName For Random Shared As #3 Len=Len(UserRecord)
- FileName=Config3(11)+Config3(20)+Config3(15)
- Open FileName For Random Shared As #4 Len=Len(SpellRecord)
- FileName=Config3(11)+Config3(16)+Config3(15)
- Open FileName For Random Shared As #5 Len=Len(RoomRecord)
- FileName=Config3(11)+Config3(17)+Config3(15)
- Open FileName For Random Shared As #6 Len=Len(ObjectRecord)
- FileName=Config3(11)+Config3(18)+Config3(15)
- Open FileName For Random Shared As #7 Len=Len(MonsterRecord)
- FileName=Config3(11)+Config3(19)+Config3(15)
- Open FileName For Random Shared As #8 Len=Len(TreasureRecord)
- FileName=Config3(11)+Config3(22)+Config3(15)
- Open FileName For Random Shared As #9 Len=Len(MonsterRecord)
- FileName=Config3(11)+Config3(12)+Config3(15)
- Open FileName For Random Shared As #10 Len=Len(MonclassRecord)
- FileName=Config3(11)+Config3(13)+Config3(15)
- Open FileName For Random Shared As #11 Len=Len(MonsterTalkRecord)
- 10041
- Exit Sub
- 10042
- Resume 10041
- End Sub
-
- Sub ClearScreen
- On Local Error Goto 10052
- Strng=Chr$(27)+"[0m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[2J"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[24;1H"
- Call Scrn(Strng)
- Locate 24,1,1
- 10051
- Exit Sub
- 10052
- Resume 10051
- End Sub
-
- Sub DisplayRoom
- On Local Error Goto 10062
- If Room.Number>False And Room.Number<=Lof(5)/Len(RoomRecord) Then
- Get 5,Room.Number,RoomRecord
- For TempX=0 To 17
- Call ShowRoom
- Next
- Call RedisplayField
- Endif
- 10061
- Exit Sub
- 10062
- Resume 10061
- End Sub
-
- Sub EditRoom
- On Local Error Goto 10072
- Room.Number=1
- If Lof(5)=False Then
- Call AddRoom
- Endif
- Out3="Sysop Room Edit"
- Call DisplayEditScreen(1,16,Out3)
- Call RoomStatusLine
- Call DisplayRoom
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Call RoomSelect
- Case 1
- TempX=Asc(TempX$)
- Select Case TempX
- Case 1
- Call AddRoom
- Case 3
- Call DisplayRoomClass
- Case 8
- Call Help(1)
- Call DisplayEditScreen(1,16,Out3)
- Call RoomStatusLine
- Call DisplayRoom
- Case 9
- Call RoomSelect
- Case 10
- Call JumpRoom
- Case 13
- Call EditSelectedRoom
- Case 14
- Call NextRoom
- Case 15
- Call EditRoomObject
- Call RoomStatusLine
- Case 17
- Call PreviousRoom
- Case 18
- Call SelectNextRoom
- Call RoomStatusLine
- Case 20
- Call EditRoomTreasure
- Call RoomStatusLine
- Case 27
- Put 5,Room.Number,RoomRecord
- Exit Sub
- End Select
- End Select
- Loop
- 10071
- Exit Sub
- 10072
- Resume 10071
- End Sub
-
- Sub DisplayRoomClass
- On Local Error Goto 10082
- Room.Monclass=RoomRecord.MonsterClass
- If Room.Monclass<=False Or Room.Monclass>Lof(10)/Len(MonclassRecord) Then
- Strng="The monster class is not in the monster class file range."
- Call ErrorMessage
- Exit Sub
- Endif
- TempD=True
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[16;45H"
- Call Scrn(Strng)
- Strng="Monster Class:"+Str$(RoomRecord.MonsterClass)
- Call Scrn(Strng)
- Get 10,Room.Monclass,MonclassRecord
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- For Temp2=1 To 5
- Temp3=MonclassRecord.Monsters(Temp2)
- If Temp3<1 Or Temp3>Lof(7)/Len(MonsterRecord) Then
- Strng=Chr$(27)+"["+Mid$(Str$(16+Temp2),2)+";40H"
- Call Scrn(Strng)
- Strng="<zero>"
- Call Scrn(Strng)
- Else
- Get 7,Temp3,MonsterRecord
- Strng=Chr$(27)+"["+Mid$(Str$(16+Temp2),2)+";40H"
- Call Scrn(Strng)
- Strng=Left$(MonsterRecord.MonsterName,20)
- Call Scrn(Strng)
- Endif
- Next
- For Temp2=6 To 10
- Temp3=MonclassRecord.Monsters(Temp2)
- If Temp3<1 Or Temp3>Lof(7)/Len(MonsterRecord) Then
- Strng=Chr$(27)+"["+Mid$(Str$(11+Temp2),2)+";60H"
- Call Scrn(Strng)
- Strng="<zero>"
- Call Scrn(Strng)
- Else
- Get 7,Temp3,MonsterRecord
- Strng=Chr$(27)+"["+Mid$(Str$(11+Temp2),2)+";60H"
- Call Scrn(Strng)
- Strng=Left$(MonsterRecord.MonsterName,20)
- Call Scrn(Strng)
- Endif
- Next
- Call RedisplayField
- Strng="<esc> Exit Monster Class Display"
- Out2=Nul
- Call StatusLine
- While Inkey$<>Chr$(27)
- Wend
- Call ClearSubstats
- Call RoomStatusLine
- 10081
- Exit Sub
- 10082
- Resume 10081
- End Sub
-
- Sub JumpRoom
- On Local Error Goto 10092
- If Selection<3 Or Selection>13 Then
- Strng="You must cursor to the room direction first."
- Call ErrorMessage
- Exit Sub
- Endif
- If RoomRecord.Direct(Selection-2)<1 Or_
- RoomRecord.Direct(Selection-2)>Lof(5)/Len(RoomRecord) Then
- Strng="The value is not within the existing room numbers."
- Call ErrorMessage
- Exit Sub
- Endif
- Room.Number=RoomRecord.Direct(Selection-2)
- Call DisplayRoom
- 10091
- Exit Sub
- 10092
- Resume 10091
- End Sub
-
- Sub EditSelectedRoom
- On Local Error Goto 10102
- Strng=Nul
- Out2=Chr$(29)+Chr$(18)+" Cursor Edit "
- If Selection=2 Then
- Out2=Out2+"<esc> Exit Field"
- Else
- Out2=Out2+Chr$(60)+Chr$(217)+" Exit Field"
- Endif
- Call StatusLine
- Call RoomEdit
- Put 5,Room.Number,RoomRecord
- Call RoomStatusLine
- TempX=Selection
- Call ShowRoom
- Call RedisplayField
- 10101
- Exit Sub
- 10102
- Resume 10101
- End Sub
-
- Sub NextRoom
- On Local Error Goto 10112
- If Room.Number>Lof(5)/Len(RoomRecord) Then
- Strng="This is the last room in the room file."
- Call ErrorMessage
- Exit Sub
- Endif
- Put 5,Room.Number,RoomRecord
- Room.Number=Room.Number+1
- Call DisplayRoom
- 10111
- Exit Sub
- 10112
- Resume 10111
- End Sub
-
- Sub PreviousRoom
- On Local Error Goto 10122
- If Room.Number<=1 Then
- Strng="This is the first room in the room file."
- Call ErrorMessage
- Exit Sub
- Endif
- Put 5,Room.Number,RoomRecord
- Room.Number=Room.Number-1
- Call DisplayRoom
- 10121
- Exit Sub
- 10122
- Resume 10121
- End Sub
-
- Sub SelectNextRoom
- On Local Error Goto 10132
- Strng=Nul
- Out2=Chr$(60)+Chr$(217)+" Exit Field "+Chr$(29)+" Cursor Edit"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Room: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;14H"
- Call Scrn(Strng)
- Strng=Space$(5)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;20H"
- Call Scrn(Strng)
- Strng="(1-"+Mid$(Str$(Lof(5)/Len(RoomRecord)),2)+")"
- Call Scrn(Strng)
- Restore Data1
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Temp2=Val(Edit.Data(1))
- If Temp2<1 Or Temp2>Lof(5)/Len(RoomRecord) Then
- Strng="The value is not within the existing room numbers."
- Call ErrorMessage
- Exit Sub
- Endif
- Put 5,Room.Number,RoomRecord
- Room.Number=Temp2
- Call DisplayRoom
- 10131
- Exit Sub
- 10132
- Resume 10131
- End Sub
-
- Sub RoomStatusLine
- On Local Error Goto 10142
- Strng=Chr$(29)+Chr$(18)+" Cursor Select "+Chr$(60)+Chr$(217)
- Strng=Strng+" Enter Choice <esc> Exit and Save ^h Help ^a Add Record"
- Out2="^n Next ^q Prev ^j Jump Link ^r Select Room "
- Out2=Out2+"^c MonClass ^o Object ^t Treasure"
- Call StatusLine
- 10141
- Exit Sub
- 10142
- Resume 10141
- End Sub
-
- Sub DisplayObjectScreen
- On Local Error Goto 10152
- If Object.Number>False And Object.Number<=Lof(6)/Len(ObjectRecord) Then
- Get 6,Object.Number,ObjectRecord
- For TempX=0 To 15
- Call ShowObject
- Next
- Call DisplayObject
- Call RedisplayField
- Endif
- 10151
- Exit Sub
- 10152
- Resume 10151
- End Sub
-
- Sub EditObject
- On Local Error Goto 10162
- Object.Number=1
- If Lof(6)=False Then
- Call AddObject
- Endif
- Out3="Sysop Object Edit"
- Call DisplayEditScreen(2,17,Out3)
- Call ObjectStatusLine
- Call DisplayObjectScreen
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Call ObjectSelect
- Case 1
- TempX=Asc(TempX$)
- Select Case TempX
- Case 1
- Call AddObject
- Case 8
- Call Help(2)
- Call DisplayEditScreen(2,17,Out3)
- Call ObjectStatusLine
- Call DisplayObjectScreen
- Case 9
- Call ObjectSelect
- Case 13
- Call ObjectEdit
- Put 6,Object.Number,ObjectRecord
- Call ObjectStatusLine
- TempX=Selection
- Call ShowObject
- Call RedisplayField
- Case 14
- Call NextObject
- Case 17
- Call PreviousObject
- Case 18
- Call SelectNextObject
- Call ObjectStatusLine
- Case 19
- Call SearchObject
- Case 27
- Put 6,Object.Number,ObjectRecord
- Exit Sub
- End Select
- End Select
- Loop
- 10161
- Exit Sub
- 10162
- Resume 10161
- End Sub
-
- Sub NextObject
- On Local Error Goto 10172
- If Object.Number<Lof(6)/Len(ObjectRecord) Then
- Put 6,Object.Number,ObjectRecord
- Object.Number=Object.Number+1
- Call DisplayObjectScreen
- Exit Sub
- Endif
- Strng="This is the last object in the object file."
- Call ErrorMessage
- 10171
- Exit Sub
- 10172
- Resume 10171
- End Sub
-
- Sub PreviousObject
- On Local Error Goto 10182
- If Object.Number>1 Then
- Put 6,Object.Number,ObjectRecord
- Object.Number=Object.Number-1
- Call DisplayObjectScreen
- Exit Sub
- Endif
- Strng="This is the first object in the object file."
- Call ErrorMessage
- 10181
- Exit Sub
- 10182
- Resume 10181
- End Sub
-
- Sub SelectNextObject
- On Local Error Goto 10192
- Strng=Nul
- Out2=Chr$(60)+Chr$(217)+" Exit Field "+Chr$(29)+" Cursor Edit"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Object: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;16H"
- Call Scrn(Strng)
- Strng=Space$(5)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;22H"
- Call Scrn(Strng)
- Strng="(1-"+Mid$(Str$(Lof(6)/Len(ObjectRecord)),2)+")"
- Call Scrn(Strng)
- Restore Data2
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Temp2=Val(Edit.Data(1))
- If Temp2<1 Or Temp2>Lof(6)/Len(ObjectRecord) Then
- Strng="The object number is not within the object file range."
- Call ErrorMessage
- Exit Sub
- Endif
- Put 6,Object.Number,ObjectRecord
- Object.Number=Temp2
- Call DisplayObjectScreen
- 10191
- Exit Sub
- 10192
- Resume 10191
- End Sub
-
- Sub SearchObject
- On Local Error Goto 10202
- Put 6,Object.Number,ObjectRecord
- Strng=Nul
- Out2=Chr$(29)+" Cursor Edit "+Chr$(60)+Chr$(217)+" Exit Field "
- Out2=Out2+"Append # sign and number for duplicate objects"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Object Name or Number: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;31H"
- Call Scrn(Strng)
- Strng=Space$(30)
- Call Scrn(Strng)
- Restore Data3
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Call ObjectStatusLine
- Temp2=Val(Edit.Data(1))
- Temp$=Lcase$(Edit.Data(1))
- If Temp2 Then
- If Temp2>False And Temp2<=Lof(6)/Len(ObjectRecord) Then
- Object.Number=Temp2
- Call DisplayObjectScreen
- Exit Sub
- Endif
- Endif
- Temp.Index=False
- Temp1=Instr(Temp$,"#")
- If Temp1 Then
- Temp.Index=Val(Mid$(Temp$,Temp1+1))
- Temp$=Left$(Temp$,Temp1-1)
- Endif
- Temp4=Len(Temp$)
- Temp=False
- Temp3=False
- For Temp2=1 To Lof(6)/Len(ObjectRecord)
- Get 6,Temp2,ObjectRecord
- If Left$(ObjectRecord.ObjectName,Temp4)=Temp$ Then
- Temp3=Temp3+1
- If Temp3=1 Then
- Temp=Temp2
- Endif
- If Temp.Index Then
- If Temp3=Temp.Index Then
- Object.Number=Temp2
- Call DisplayObjectScreen
- Exit Sub
- Endif
- Endif
- Endif
- Next
- If Temp.Index=False And Temp3=1 Then
- Object.Number=Temp
- Call DisplayObjectScreen
- Exit Sub
- Endif
- If Temp3=False Then
- Strng="The object name was not found in the object file."
- Call ErrorMessage
- Get 6,Object.Number,ObjectRecord
- Exit Sub
- Endif
- Strng="There was more than one object found."
- Call ErrorMessage
- Strng=Chr$(18)+" Scroll Objects "+Chr$(60)+Chr$(217)+" Select Object"
- Out2=Nul
- Call StatusLine
- Object.Number=Temp
- Temp2=Temp
- Get 6,Object.Number,ObjectRecord
- For TempX=0 To 15
- Call ShowObject
- Next
- Call DisplayObject
- Call RedisplayField
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- Select Case Len(TempX$)
- Case 1
- If TempX$=Chr$(13) Then
- Object.Number=Temp2
- Call ObjectStatusLine
- Call RedisplayField
- Call DisplayObjectScreen
- Exit Sub
- Endif
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Select Case TempX
- Case 72
- TempA=False
- For Temp3=Temp2-1 To 1 Step -1
- Get 6,Temp3,ObjectRecord
- If Left$(ObjectRecord.ObjectName,Temp4)=Temp$ Then
- TempA=True
- Temp2=Temp3
- Object.Number=Temp3
- For TempX=0 To 15
- Call ShowObject
- Next
- Call DisplayObject
- Call RedisplayField
- Exit For
- Endif
- Next
- If TempA=False Then
- Strng="This is the first object in the search."
- Call ErrorMessage
- Endif
- Case 80
- TempA=False
- For Temp3=Temp2+1 To Lof(6)/Len(ObjectRecord)
- Get 6,Temp3,ObjectRecord
- If Left$(ObjectRecord.ObjectName,Temp4)=Temp$ Then
- TempA=True
- Temp2=Temp3
- Object.Number=Temp3
- For TempX=0 To 15
- Call ShowObject
- Next
- Call DisplayObject
- Call RedisplayField
- Exit For
- Endif
- Next
- If TempA=False Then
- Strng="This is the last object in the search."
- Call ErrorMessage
- Endif
- End Select
- End Select
- Loop
- 10201
- Exit Sub
- 10202
- Resume 10201
- End Sub
-
- Sub ObjectStatusLine
- On Local Error Goto 10212
- Strng=Chr$(29)+Chr$(18)+" Cursor Select "+Chr$(60)+Chr$(217)
- Strng=Strng+" Enter Choice <esc> Exit and Save ^h Help ^a Add Record"
- Out2="^r Select Object ^n Next Object ^q Previous Object ^s Search Objects"
- Call StatusLine
- 10211
- Exit Sub
- 10212
- Resume 10211
- End Sub
-
- Sub DisplayTreasure
- On Local Error Goto 10222
- If Treasure.Number>False And Treasure.Number<=Lof(8)/Len(TreasureRecord) Then
- Get 8,Treasure.Number,TreasureRecord
- For TempX=0 To 34
- Call ShowTreasure
- Next
- Call RedisplayField
- Endif
- 10221
- Exit Sub
- 10222
- Resume 10221
- End Sub
-
- Sub EditTreasure
- On Local Error Goto 10232
- Treasure.Number=1
- If Lof(8)=False Then
- Call AddTreasure
- Endif
- Out3="Sysop Treasure Edit"
- Call DisplayEditScreen(3,34,Out3)
- Call TreasureStatusLine
- Call DisplayTreasure
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Call TreasureSelect
- Case 1
- TempX=Asc(TempX$)
- Select Case TempX
- Case 1
- Call AddTreasure
- Case 8
- Call Help(3)
- Call DisplayEditScreen(3,34,Out3)
- Call TreasureStatusLine
- Call DisplayTreasure
- Case 9
- Call TreasureSelect
- Case 13
- Call TreasureEdit
- Put 8,Treasure.Number,TreasureRecord
- Call TreasureStatusLine
- TempX=Selection
- Call ShowTreasure
- Call RedisplayField
- Case 14
- Call NextTreasure
- Case 17
- Call PreviousTreasure
- Case 18
- Call SelectNextTreasure
- Call TreasureStatusLine
- Case 19
- Call SearchTreasure
- Case 27
- Put 8,Treasure.Number,TreasureRecord
- Exit Sub
- End Select
- End Select
- Loop
- 10231
- Exit Sub
- 10232
- Resume 10231
- End Sub
-
- Sub NextTreasure
- On Local Error Goto 10242
- If Treasure.Number<Lof(8)/Len(TreasureRecord) Then
- Put 8,Treasure.Number,TreasureRecord
- Treasure.Number=Treasure.Number+1
- Call DisplayTreasure
- Exit Sub
- Endif
- Strng="This is the last treasure in the treasure file."
- Call ErrorMessage
- 10241
- Exit Sub
- 10242
- Resume 10241
- End Sub
-
- Sub PreviousTreasure
- On Local Error Goto 10252
- If Treasure.Number>1 Then
- Put 8,Treasure.Number,TreasureRecord
- Treasure.Number=Treasure.Number-1
- Call DisplayTreasure
- Exit Sub
- Endif
- Strng="This is the first treasure in the treasure file."
- Call ErrorMessage
- 10251
- Exit Sub
- 10252
- Resume 10251
- End Sub
-
- Sub SelectNextTreasure
- On Local Error Goto 10262
- Strng=Nul
- Out2=Chr$(60)+Chr$(217)+" Exit Field "+Chr$(29)+" Cursor Edit"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Treasure: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;18H"
- Call Scrn(Strng)
- Strng=Space$(5)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;24H"
- Call Scrn(Strng)
- Strng="(1-"+Mid$(Str$(Lof(8)/Len(TreasureRecord)),2)+")"
- Call Scrn(Strng)
- Restore Data4
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Temp2=Val(Edit.Data(1))
- If Temp2<1 Or Temp2>Lof(8)/Len(TreasureRecord) Then
- Strng="The treasure number is not within the treasure file range."
- Call ErrorMessage
- Exit Sub
- Endif
- Put 8,Treasure.Number,TreasureRecord
- Treasure.Number=Temp2
- Call DisplayTreasure
- 10261
- Exit Sub
- 10262
- Resume 10261
- End Sub
-
- Sub SearchTreasure
- On Local Error Goto 10272
- Put 8,Treasure.Number,TreasureRecord
- Strng=Nul
- Out2=Chr$(29)+" Cursor Edit "+Chr$(60)+Chr$(217)+" Exit Field "
- Out2=Out2+"Append # sign and number for duplicate treasure"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Treasure Name or Number: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;33H"
- Call Scrn(Strng)
- Strng=Space$(30)
- Call Scrn(Strng)
- Restore Data5
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Call TreasureStatusLine
- Temp2=Val(Edit.Data(1))
- Temp$=Lcase$(Edit.Data(1))
- If Temp2 Then
- If Temp2>False And Temp2<=Lof(8)/Len(TreasureRecord) Then
- Treasure.Number=Temp2
- Call DisplayTreasure
- Exit Sub
- Endif
- Endif
- Temp.Index=False
- Temp1=Instr(Temp$,"#")
- If Temp1 Then
- Temp.Index=Val(Mid$(Temp$,Temp1+1))
- Temp$=Left$(Temp$,Temp1-1)
- Endif
- Temp4=Len(Temp$)
- Temp=False
- Temp3=False
- For Temp2=1 To Lof(8)/Len(TreasureRecord)
- Get 8,Temp2,TreasureRecord
- If Left$(TreasureRecord.TreasureName,Temp4)=Temp$ Then
- Temp3=Temp3+1
- If Temp3=1 Then
- Temp=Temp2
- Endif
- If Temp.Index Then
- If Temp3=Temp.Index Then
- Treasure.Number=Temp2
- Call DisplayTreasure
- Exit Sub
- Endif
- Endif
- Endif
- Next
- If Temp.Index=False And Temp3=1 Then
- Treasure.Number=Temp
- Call DisplayTreasure
- Exit Sub
- Endif
- If Temp3=False Then
- Strng="The treasure name was not found in the treasure file."
- Call ErrorMessage
- Get 8,Treasure.Number,TreasureRecord
- Exit Sub
- Endif
- Strng="There was more than one treasure found."
- Call ErrorMessage
- Strng=Chr$(18)+" Scroll Treasure "+Chr$(60)+Chr$(217)+" Select Treasure"
- Out2=Nul
- Call StatusLine
- Treasure.Number=Temp
- Temp2=Temp
- Get 8,Treasure.Number,TreasureRecord
- For TempX=0 To 34
- Call ShowTreasure
- Next
- Call RedisplayField
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- Select Case Len(TempX$)
- Case 1
- If TempX$=Chr$(13) Then
- Treasure.Number=Temp2
- Call TreasureStatusLine
- Call RedisplayField
- Call DisplayTreasure
- Exit Sub
- Endif
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Select Case TempX
- Case 72
- TempA=False
- For Temp3=Temp2-1 To 1 Step -1
- Get 8,Temp3,TreasureRecord
- If Left$(TreasureRecord.TreasureName,Temp4)=Temp$ Then
- TempA=True
- Temp2=Temp3
- Treasure.Number=Temp3
- For TempX=0 To 34
- Call ShowTreasure
- Next
- Call RedisplayField
- Exit For
- Endif
- Next
- If TempA=False Then
- Strng="This is the first treasure in the search."
- Call ErrorMessage
- Endif
- Case 80
- TempA=False
- For Temp3=Temp2+1 To Lof(8)/Len(TreasureRecord)
- Get 8,Temp3,TreasureRecord
- If Left$(TreasureRecord.TreasureName,Temp4)=Temp$ Then
- TempA=True
- Temp2=Temp3
- Treasure.Number=Temp3
- For TempX=0 To 34
- Call ShowTreasure
- Next
- Call RedisplayField
- Exit For
- Endif
- Next
- If TempA=False Then
- Strng="This is the last treasure in the search."
- Call ErrorMessage
- Endif
- End Select
- End Select
- Loop
- 10271
- Exit Sub
- 10272
- Resume 10271
- End Sub
-
- Sub TreasureStatusLine
- On Local Error Goto 10282
- Strng=Chr$(29)+Chr$(18)+" Cursor Select "+Chr$(60)+Chr$(217)
- Strng=Strng+" Enter Choice <esc> Exit and Save ^h Help ^a Add Record"
- Out2="^r Select Treasure ^n Next Treasure ^q "
- Out2=Out2+"Previous Treasure ^s Search Treasure"
- Call StatusLine
- 10281
- Exit Sub
- 10282
- Resume 10281
- End Sub
-
- Sub DisplayMonster
- On Local Error Goto 10292
- If Monster.Number>False And Monster.Number<=Lof(7)/Len(MonsterRecord) Then
- Get 7,Monster.Number,MonsterRecord
- For TempX=0 To 26
- Call ShowMonster
- Next
- Call RedisplayField
- Endif
- 10291
- Exit Sub
- 10292
- Resume 10291
- End Sub
-
- Sub EditMonster
- On Local Error Goto 10302
- Monster.Number=1
- If Lof(7)=False Then
- Call AddMonster
- Endif
- Out3="Sysop Monster Edit"
- Call DisplayEditScreen(4,26,Out3)
- Call MonsterStatusLine
- Call DisplayMonster
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Call MonsterSelect
- Case 1
- TempX=Asc(TempX$)
- Select Case TempX
- Case 1
- Call AddMonster
- Case 8
- Call Help(4)
- Call DisplayEditScreen(4,26,Out3)
- Call MonsterStatusLine
- Call DisplayMonster
- Case 9
- Call MonsterSelect
- Case 13
- Call MonsterEdit
- Put 7,Monster.Number,MonsterRecord
- Call MonsterStatusLine
- TempX=Selection
- Call ShowMonster
- Call RedisplayField
- Case 14
- Call NextMonster
- Case 17
- Call PreviousMonster
- Case 18
- Call SelectNextMonster
- Call MonsterStatusLine
- Case 19
- Call SearchMonster
- Case 27
- Put 7,Monster.Number,MonsterRecord
- Exit Sub
- End Select
- End Select
- Loop
- 10301
- Exit Sub
- 10302
- Resume 10301
- End Sub
-
- Sub NextMonster
- On Local Error Goto 10312
- If Monster.Number<Lof(7)/Len(MonsterRecord) Then
- Put 7,Monster.Number,MonsterRecord
- Monster.Number=Monster.Number+1
- Call DisplayMonster
- Exit Sub
- Endif
- Strng="This is the last monster in the monster file."
- Call ErrorMessage
- 10311
- Exit Sub
- 10312
- Resume 10311
- End Sub
-
- Sub PreviousMonster
- On Local Error Goto 10322
- If Monster.Number>1 Then
- Put 7,Monster.Number,MonsterRecord
- Monster.Number=Monster.Number-1
- Call DisplayMonster
- Exit Sub
- Endif
- Strng="This is the first monster in the monster file."
- Call ErrorMessage
- 10321
- Exit Sub
- 10322
- Resume 10321
- End Sub
-
- Sub SelectNextMonster
- On Local Error Goto 10332
- Strng=Nul
- Out2=Chr$(60)+Chr$(217)+" Exit Field "+Chr$(29)+" Cursor Edit"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Monster: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;17H"
- Call Scrn(Strng)
- Strng=Space$(5)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;23H"
- Call Scrn(Strng)
- Strng="(1-"+Mid$(Str$(Lof(7)/Len(MonsterRecord)),2)+")"
- Call Scrn(Strng)
- Restore Data6
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Temp2=Val(Edit.Data(1))
- If Temp2<1 Or Temp2>Lof(7)/Len(MonsterRecord) Then
- Strng="The monster number is not within the monster file range."
- Call ErrorMessage
- Exit Sub
- Endif
- Put 7,Monster.Number,MonsterRecord
- Monster.Number=Temp2
- Call DisplayMonster
- 10331
- Exit Sub
- 10332
- Resume 10331
- End Sub
-
- Sub SearchMonster
- On Local Error Goto 10342
- Put 7,Monster.Number,MonsterRecord
- Strng=Nul
- Out2=Chr$(29)+" Cursor Edit "+Chr$(60)+Chr$(217)+" Exit Field "
- Out2=Out2+"Append # sign and number for duplicate monsters"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Monster Name or Number: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;32H"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Space$(30)
- Call Scrn(Strng)
- Restore Data7
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Call MonsterStatusLine
- Temp2=Val(Edit.Data(1))
- Temp$=Lcase$(Edit.Data(1))
- If Temp2 Then
- If Temp2>False And Temp2<=Lof(7)/Len(MonsterRecord) Then
- Monster.Number=Temp2
- Call DisplayMonster
- Exit Sub
- Endif
- Endif
- Temp.Index=False
- Temp1=Instr(Temp$,"#")
- If Temp1 Then
- Temp.Index=Val(Mid$(Temp$,Temp1+1))
- Temp$=Left$(Temp$,Temp1-1)
- Endif
- Temp4=Len(Temp$)
- Temp=False
- Temp3=False
- For Temp2=1 To Lof(7)/Len(MonsterRecord)
- Get 7,Temp2,MonsterRecord
- If Left$(MonsterRecord.MonsterName,Temp4)=Temp$ Then
- Temp3=Temp3+1
- If Temp3=1 Then
- Temp=Temp2
- Endif
- If Temp.Index Then
- If Temp3=Temp.Index Then
- Monster.Number=Temp2
- Call DisplayMonster
- Exit Sub
- Endif
- Endif
- Endif
- Next
- If Temp.Index=False And Temp3=1 Then
- Monster.Number=Temp
- Call DisplayMonster
- Exit Sub
- Endif
- If Temp3=False Then
- Strng="The monster name was not found in the monster file."
- Call ErrorMessage
- Get 7,Monster.Number,MonsterRecord
- Exit Sub
- Endif
- Strng="There was more than one monster found."
- Call ErrorMessage
- Strng=Chr$(18)+" Scroll Monster "+Chr$(60)+Chr$(217)+" Select Monster"
- Out2=Nul
- Call StatusLine
- Monster.Number=Temp
- Temp2=Temp
- Get 7,Monster.Number,MonsterRecord
- For TempX=0 To 26
- Call ShowMonster
- Next
- Call RedisplayField
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 1
- If TempX$=Chr$(13) Then
- Monster.Number=Temp2
- Call MonsterStatusLine
- Call RedisplayField
- Call DisplayMonster
- Exit Sub
- Endif
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Select Case TempX
- Case 72
- TempA=False
- For Temp3=Temp2-1 To 1 Step -1
- Get 7,Temp3,MonsterRecord
- If Left$(MonsterRecord.MonsterName,Temp4)=Temp$ Then
- TempA=True
- Temp2=Temp3
- Monster.Number=Temp3
- For TempX=0 To 26
- Call ShowMonster
- Next
- Call RedisplayField
- Exit For
- Endif
- Next
- If TempA=False Then
- Strng="This is the first monster in the search."
- Call ErrorMessage
- Endif
- Case 80
- TempA=False
- For Temp3=Temp2+1 To Lof(7)/Len(MonsterRecord)
- Get 7,Temp3,MonsterRecord
- If Left$(MonsterRecord.MonsterName,Temp4)=Temp$ Then
- TempA=True
- Temp2=Temp3
- Monster.Number=Temp3
- For TempX=0 To 26
- Call ShowMonster
- Next
- Call RedisplayField
- Exit For
- Endif
- Next
- If TempA=False Then
- Strng="This is the last monster in the search."
- Call ErrorMessage
- Endif
- End Select
- End Select
- Loop
- 10341
- Exit Sub
- 10342
- Resume 10341
- End Sub
-
- Sub MonsterStatusLine
- On Local Error Goto 10352
- Strng=Chr$(29)+Chr$(18)+" Cursor Select "+Chr$(60)+Chr$(217)
- Strng=Strng+" Enter Choice <esc> Exit and Save ^h Help ^a Add Record"
- Out2="^r Select Monster ^n Next Monster ^q "
- Out2=Out2+"Previous Monster ^s Search Monsters"
- Call StatusLine
- 10351
- Exit Sub
- 10352
- Resume 10351
- End Sub
-
- Sub DisplayNonplayer
- On Local Error Goto 10362
- If Nonplayer.Number>False And Nonplayer.Number<=Lof(9)/Len(MonsterRecord) Then
- Get 9,Nonplayer.Number,MonsterRecord
- For TempX=0 To 23
- Call ShowNonplayer
- Next
- Call RedisplayField
- Endif
- 10361
- Exit Sub
- 10362
- Resume 10361
- End Sub
-
- Sub EditNonplayer
- On Local Error Goto 10372
- Nonplayer.Number=1
- If Lof(9)=False Then
- Call AddNonplayer
- Endif
- Out3="Sysop Nonplayer Edit"
- Call DisplayEditScreen(8,23,Out3)
- Call NonplayerStatusLine
- Call DisplayNonplayer
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Call NonplayerSelect
- Case 1
- TempX=Asc(TempX$)
- Select Case TempX
- Case 1
- Call AddNonplayer
- Case 8
- Call Help(10)
- Call DisplayEditScreen(8,23,Out3)
- Call NonplayerStatusLine
- Call DisplayNonplayer
- Case 9
- Call NonplayerSelect
- Case 13
- Call NonplayerEdit
- Put 9,Nonplayer.Number,MonsterRecord
- Call NonplayerStatusLine
- TempX=Selection
- Call ShowNonplayer
- Call RedisplayField
- Case 14
- Call NextNonplayer
- Case 17
- Call PreviousNonplayer
- Case 18
- Call SelectNextNonplayer
- Call NonplayerStatusLine
- Case 19
- Call SearchNonplayer
- Case 27
- Put 9,Nonplayer.Number,MonsterRecord
- Exit Sub
- End Select
- End Select
- Loop
- 10371
- Exit Sub
- 10372
- Resume 10372
- End Sub
-
- Sub NextNonplayer
- On Local Error Goto 10382
- If Nonplayer.Number<Lof(9)/Len(MonsterRecord) Then
- Put 9,Nonplayer.Number,MonsterRecord
- Nonplayer.Number=Nonplayer.Number+1
- Call DisplayNonplayer
- Exit Sub
- Endif
- Strng="This is the last nonplayer in the nonplayer file."
- Call ErrorMessage
- 10381
- Exit Sub
- 10382
- Resume 10381
- End Sub
-
- Sub PreviousNonplayer
- On Local Error Goto 10392
- If Nonplayer.Number>1 Then
- Put 9,Nonplayer.Number,MonsterRecord
- Nonplayer.Number=Nonplayer.Number-1
- Call DisplayNonplayer
- Exit Sub
- Endif
- Strng="This is the first nonplayer in the nonplayer file."
- Call ErrorMessage
- 10391
- Exit Sub
- 10392
- Resume 10391
- End Sub
-
- Sub SelectNextNonplayer
- On Local Error Goto 10402
- Strng=Nul
- Out2=Chr$(60)+Chr$(217)+" Exit Field "+Chr$(29)+" Cursor Edit"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Nonplayer: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;19H"
- Call Scrn(Strng)
- Strng=Space$(5)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;25H"
- Call Scrn(Strng)
- Strng="(1-"+Mid$(Str$(Lof(9)/Len(MonsterRecord)),2)+")"
- Call Scrn(Strng)
- Restore Data17
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Temp2=Val(Edit.Data(1))
- If Temp2<1 Or Temp2>Lof(9)/Len(MonsterRecord) Then
- Strng="The nonplayer number is not within the nonplayer file range."
- Call ErrorMessage
- Exit Sub
- Endif
- Put 9,Nonplayer.Number,MonsterRecord
- Nonplayer.Number=Temp2
- Call DisplayNonplayer
- 10401
- Exit Sub
- 10402
- Resume 10401
- End Sub
-
- Sub SearchNonplayer
- On Local Error Goto 10412
- Put 9,Nonplayer.Number,MonsterRecord
- Strng=Nul
- Out2=Chr$(29)+" Cursor Edit "+Chr$(60)+Chr$(217)+" Exit Field "
- Out2=Out2+"Append # sign and number for duplicate nonplayers"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Nonplayer Name or Number: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;34H"
- Call Scrn(Strng)
- Strng=Space$(30)
- Call Scrn(Strng)
- Restore Data18
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Call NonplayerStatusLine
- Temp2=Val(Edit.Data(1))
- Temp$=Lcase$(Edit.Data(1))
- If Temp2 Then
- If Temp2>False And Temp2<=Lof(9)/Len(MonsterRecord) Then
- Nonplayer.Number=Temp2
- Call DisplayNonplayer
- Exit Sub
- Endif
- Endif
- Temp.Index=False
- Temp1=Instr(Temp$,"#")
- If Temp1 Then
- Temp.Index=Val(Mid$(Temp$,Temp1+1))
- Temp$=Left$(Temp$,Temp1-1)
- Endif
- Temp4=Len(Temp$)
- Temp=False
- Temp3=False
- For Temp2=1 To Lof(9)/Len(MonsterRecord)
- Get 9,Temp2,MonsterRecord
- If Left$(MonsterRecord.MonsterName,Temp4)=Temp$ Then
- Temp3=Temp3+1
- If Temp3=1 Then
- Temp=Temp2
- Endif
- If Temp.Index Then
- If Temp3=Temp.Index Then
- Nonplayer.Number=Temp2
- Call DisplayNonplayer
- Exit Sub
- Endif
- Endif
- Endif
- Next
- If Temp.Index=False And Temp3=1 Then
- Nonplayer.Number=Temp
- Call DisplayNonplayer
- Exit Sub
- Endif
- If Temp3=False Then
- Strng="The nonplayer name was not found in the nonplayer file."
- Call ErrorMessage
- Get 9,Nonplayer.Number,MonsterRecord
- Exit Sub
- Endif
- Strng="There was more than one nonplayer found."
- Call ErrorMessage
- Strng=Chr$(18)+" Scroll Nonplayer "+Chr$(60)+Chr$(217)+" Select Nonplayer"
- Out2=Nul
- Call StatusLine
- Nonplayer.Number=Temp
- Temp2=Temp
- Get 9,Nonplayer.Number,MonsterRecord
- For TempX=0 To 23
- Call ShowNonplayer
- Next
- Call RedisplayField
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 1
- If TempX$=Chr$(13) Then
- Nonplayer.Number=Temp2
- Call NonplayerStatusLine
- Call RedisplayField
- Call DisplayNonplayer
- Exit Sub
- Endif
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Select Case TempX
- Case 72
- TempA=False
- For Temp3=Temp2-1 To 1 Step -1
- Get 9,Temp3,MonsterRecord
- If Left$(MonsterRecord.MonsterName,Temp4)=Temp$ Then
- TempA=True
- Temp2=Temp3
- Nonplayer.Number=Temp3
- For TempX=0 To 23
- Call ShowNonplayer
- Next
- Call RedisplayField
- Exit For
- Endif
- Next
- If TempA=False Then
- Strng="This is the first nonplayer in the search."
- Call ErrorMessage
- Endif
- Case 80
- TempA=False
- For Temp3=Temp2+1 To Lof(9)/Len(MonsterRecord)
- Get 9,Temp3,MonsterRecord
- If Left$(MonsterRecord.MonsterName,Temp4)=Temp$ Then
- TempA=True
- Temp2=Temp3
- Nonplayer.Number=Temp3
- For TempX=0 To 23
- Call ShowNonplayer
- Next
- Call RedisplayField
- Exit For
- Endif
- Next
- If TempA=False Then
- Strng="This is the last nonplayer in the search."
- Call ErrorMessage
- Endif
- End Select
- End Select
- Loop
- 10411
- Exit Sub
- 10412
- Resume 10411
- End Sub
-
- Sub NonplayerStatusLine
- On Local Error Goto 10422
- Strng=Chr$(29)+Chr$(18)+" Cursor Select "+Chr$(60)+Chr$(217)
- Strng=Strng+" Enter Choice <esc> Exit and Save ^h Help ^a Add Record"
- Out2="^r Select Nonplayer ^n Next Nonplayer "
- Out2=Out2+"^q Previous Nonplayer ^s Find Nonplayer
- Call StatusLine
- 10421
- Exit Sub
- 10422
- Resume 10421
- End Sub
-
- Sub DisplaySpell
- On Local Error Goto 10432
- If Spell.Number>False And Spell.Number<=Lof(4)/Len(SpellRecord) Then
- Get 4,Spell.Number,SpellRecord
- For TempX=0 To 21
- Call ShowSpell
- Next
- Call RedisplayField
- Endif
- 10431
- Exit Sub
- 10432
- Resume 10431
- End Sub
-
- Sub EditSpell
- On Local Error Goto 10442
- Spell.Number=1
- If Lof(4)=False Then
- Call AddSpell
- Endif
- Out3="Sysop Spell Edit"
- Call DisplayEditScreen(5,21,Out3)
- Call SpellStatusLine
- Call DisplaySpell
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Call SpellSelect
- Case 1
- TempX=Asc(TempX$)
- Select Case TempX
- Case 1
- Call AddSpell
- Case 8
- Call Help(5)
- Call DisplayEditScreen(5,21,Out3)
- Call SpellStatusLine
- Call DisplaySpell
- Case 9
- Call SpellSelect
- Case 13
- Call SpellEdit
- Put 4,Spell.Number,SpellRecord
- Call SpellStatusLine
- TempX=Selection
- Call ShowSpell
- Call RedisplayField
- Case 14
- Call NextSpell
- Case 17
- Call PreviousSpell
- Case 18
- Call SelectNextSpell
- Call SpellStatusLine
- Case 19
- Call SearchSpell
- Case 27
- Put 4,Spell.Number,SpellRecord
- Exit Sub
- End Select
- End Select
- Loop
- 10441
- Exit Sub
- 10442
- Resume 10441
- End Sub
-
- Sub NextSpell
- On Local Error Goto 10452
- If Spell.Number<Lof(4)/Len(SpellRecord) Then
- Put 4,Spell.Number,SpellRecord
- Spell.Number=Spell.Number+1
- Call DisplaySpell
- Exit Sub
- Endif
- Strng="This is the last spell in the spell file."
- Call ErrorMessage
- 10451
- Exit Sub
- 10452
- Resume 10451
- End Sub
-
- Sub PreviousSpell
- On Local Error Goto 10462
- If Spell.Number>1 Then
- Put 4,Spell.Number,SpellRecord
- Spell.Number=Spell.Number-1
- Call DisplaySpell
- Exit Sub
- Endif
- Strng="This is the first spell in the spell file."
- Call ErrorMessage
- 10461
- Exit Sub
- 10462
- Resume 10461
- End Sub
-
- Sub SelectNextSpell
- On Local Error Goto 10472
- Strng=Nul
- Out2=Chr$(60)+Chr$(217)+" Exit Field "+Chr$(29)+" Cursor Edit"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Spell: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;15H"
- Call Scrn(Strng)
- Strng=Space$(5)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;21H"
- Call Scrn(Strng)
- Strng="(1-"+Mid$(Str$(Lof(4)/Len(SpellRecord)),2)+")"
- Call Scrn(Strng)
- Restore Data8
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Temp2=Val(Edit.Data(1))
- If Temp2<1 Or Temp2>Lof(4)/Len(SpellRecord) Then
- Strng="The spell number is not within the spell file range."
- Call ErrorMessage
- Exit Sub
- Endif
- Put 4,Spell.Number,SpellRecord
- Spell.Number=Temp2
- Call DisplaySpell
- 10471
- Exit Sub
- 10472
- Resume 10471
- End Sub
-
- Sub SearchSpell
- On Local Error Goto 10482
- Put 4,Spell.Number,SpellRecord
- Strng=Nul
- Out2=Chr$(29)+" Cursor Edit "+Chr$(60)+Chr$(217)+" Exit Field "
- Out2=Out2+"Append # sign and number for duplicate spells"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Spell Name or Number: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;30H"
- Call Scrn(Strng)
- Strng=Space$(30)
- Call Scrn(Strng)
- Restore Data9
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Call SpellStatusLine
- Temp2=Val(Edit.Data(1))
- Temp$=Lcase$(Edit.Data(1))
- If Temp2 Then
- If Temp2>False And Temp2<=Lof(4)/Len(SpellRecord) Then
- Spell.Number=Temp2
- Call DisplaySpell
- Exit Sub
- Endif
- Endif
- Temp.Index=False
- Temp1=Instr(Temp$,"#")
- If Temp1 Then
- Temp.Index=Val(Mid$(Temp$,Temp1+1))
- Temp$=Left$(Temp$,Temp1-1)
- Endif
- Temp4=Len(Temp$)
- Temp=False
- Temp3=False
- For Temp2=1 To Lof(4)/Len(SpellRecord)
- Get 4,Temp2,SpellRecord
- If Left$(SpellRecord.SpellName,Temp4)=Temp$ Then
- Temp3=Temp3+1
- If Temp3=1 Then
- Temp=Temp2
- Endif
- If Temp.Index Then
- If Temp3=Temp.Index Then
- Spell.Number=Temp2
- Call DisplaySpell
- Exit Sub
- Endif
- Endif
- Endif
- Next
- If Temp.Index=False And Temp3=1 Then
- Spell.Number=Temp
- Call DisplaySpell
- Exit Sub
- Endif
- If Temp3=False Then
- Strng="The spell name was not found in the spell file."
- Call ErrorMessage
- Get 4,Spell.Number,SpellRecord
- Exit Sub
- Endif
- Strng="There was more than one spell found."
- Call ErrorMessage
- Strng=Chr$(18)+" Scroll Spell "+Chr$(60)+Chr$(217)+" Select Spell"
- Out2=Nul
- Call StatusLine
- Spell.Number=Temp
- Temp2=Temp
- Get 4,Spell.Number,SpellRecord
- For TempX=0 To 21
- Call ShowSpell
- Next
- Call RedisplayField
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 1
- If TempX$=Chr$(13) Then
- Spell.Number=Temp2
- Call SpellStatusLine
- Call RedisplayField
- Call DisplaySPell
- Exit Sub
- Endif
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Select Case TempX
- Case 72
- TempA=False
- For Temp3=Temp2-1 To 1 Step -1
- Get 4,Temp3,SpellRecord
- If Left$(SpellRecord.SpellName,Temp4)=Temp$ Then
- TempA=True
- Temp2=Temp3
- Spell.Number=Temp3
- For TempX=0 To 21
- Call ShowSpell
- Next
- Call RedisplayField
- Exit For
- Endif
- Next
- If TempA=False Then
- Strng="This is the first spell in the search."
- Call ErrorMessage
- Endif
- Case 80
- TempA=False
- For Temp3=Temp2+1 To Lof(4)/Len(SpellRecord)
- Get 4,Temp3,SpellRecord
- If Left$(SpellRecord.SpellName,Temp4)=Temp$ Then
- TempA=True
- Temp2=Temp3
- Spell.Number=Temp3
- For TempX=0 To 21
- Call ShowSpell
- Next
- Call RedisplayField
- Exit For
- Endif
- Next
- If TempA=False Then
- Strng="This is the last spell in the search.
- Call ErrorMessage
- Endif
- End Select
- End Select
- Loop
- 10481
- Exit Sub
- 10482
- Resume 10481
- End Sub
-
- Sub SpellStatusLine
- On Local Error Goto 10492
- Strng=Chr$(29)+Chr$(18)+" Cursor Select "+Chr$(60)+Chr$(217)
- Strng=Strng+" Enter Choice <esc> Exit and Save ^h Help ^a Add Record"
- Out2="^r Select Spell ^n Next Spell ^q Previous Spell ^s Search Spell"
- Call StatusLine
- 10491
- Exit Sub
- 10492
- Resume 10491
- End Sub
-
- Sub DisplayAction
- On Local Error Goto 10502
- If Room.Action>False And Room.Action<=Lof(5)/Len(RoomRecord) Then
- Get 5,Room.Action,RoomRecord
- For TempX=0 To 26
- Call ShowAction
- Next
- Call RedisplayField
- Endif
- 10501
- Exit Sub
- 10502
- Resume 10501
- End Sub
-
- Sub EditAction
- On Local Error Goto 10512
- Room.Action=1
- If Lof(5)=False Then
- Call AddAction
- Endif
- Out3="Sysop Action Edit"
- Call DisplayEditScreen(6,26,Out3)
- Call ActionStatusLine
- Call DisplayAction
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Call ActionSelect
- Case 1
- TempX=Asc(TempX$)
- Select Case TempX
- Case 1
- Call AddAction
- Case 8
- Call Help(6)
- Call DisplayEditScreen(6,26,Out3)
- Call ActionStatusLine
- Call DisplayAction
- Case 9
- Call ActionSelect
- Case 13
- Call ActionEdit
- Put 5,Room.Action,RoomRecord
- Call ActionStatusLine
- TempX=Selection
- Call ShowAction
- Call RedisplayField
- Case 14
- Call NextAction
- Case 17
- Call PreviousAction
- Case 18
- Call SelectNextAction
- Call ActionStatusLine
- Case 27
- Put 5,Room.Action,RoomRecord
- Exit Sub
- End Select
- End Select
- Loop
- 10511
- Exit Sub
- 10512
- Resume 10511
- End Sub
-
- Sub NextAction
- On Local Error Goto 10522
- If Room.Action<Lof(5)/Len(RoomRecord) Then
- Put 5,Room.Action,RoomRecord
- Room.Action=Room.Action+1
- Call DisplayAction
- Exit Sub
- Endif
- Strng="This is the last action in the room file."
- Call ErrorMessage
- 10521
- Exit Sub
- 10522
- Resume 10521
- End Sub
-
- Sub PreviousAction
- On Local Error Goto 10532
- If Room.Action>1 Then
- Put 5,Room.Action,RoomRecord
- Room.Action=Room.Action-1
- Call DisplayAction
- Exit Sub
- Endif
- Strng="This is the first action in the room file."
- Call ErrorMessage
- 10531
- Exit Sub
- 10532
- Resume 10531
- End Sub
-
- Sub SelectNextAction
- On Local Error Goto 10542
- Strng=Nul
- Out2=Chr$(60)+Chr$(217)+" Exit Field "+Chr$(29)+" Cursor Edit"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Action: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;16H"
- Call Scrn(Strng)
- Strng=Space$(5)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;22H"
- Call Scrn(Strng)
- Strng="(1-"+Mid$(Str$(Lof(5)/Len(RoomRecord)),2)+")"
- Call Scrn(Strng)
- Restore Data10
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Temp2=Val(Edit.Data(1))
- If Temp2<1 Or Temp2>Lof(5)/Len(RoomRecord) Then
- Strng="The action number is not within the room file range."
- Call ErrorMessage
- Exit Sub
- Endif
- Put 5,Room.Action,RoomRecord
- Room.Action=Temp2
- Call DisplayAction
- 10541
- Exit Sub
- 10542
- Resume 10541
- End Sub
-
- Sub ActionStatusLine
- On Local Error Goto 10552
- Strng=Chr$(29)+Chr$(18)+" Cursor Select "+Chr$(60)+Chr$(217)
- Strng=Strng+" Enter Choice <esc> Exit and Save ^h Help"
- Out2="^r Select Action ^n Next Action ^q Previous Action"
- Call StatusLine
- 10551
- Exit Sub
- 10552
- Resume 10551
- End Sub
-
- Sub DisplayUser
- On Local Error Goto 10562
- If User.Number>False And User.Number<=Lof(3)/Len(UserRecord) Then
- Get 3,User.Number,UserRecord
- TempX=0
- Call ShowUser
- Strng=UserRecord.CodeName
- Call Decrypt(Strng)
- If Left$(Strng,9)=Deleted$ Then
- Call ShowDeletedUser
- Else
- For TempX=1 To 27
- Call ShowUser
- Next
- Endif
- Call RedisplayField
- Endif
- 10561
- Exit Sub
- 10562
- Resume 10561
- End Sub
-
- Sub EditUsers
- On Local Error Goto 10572
- User.Number=1
- If Lof(3)=False Then
- Call AddUser
- Endif
- Out3="Sysop User Edit"
- Call DisplayEditScreen(7,27,Out3)
- Call UserStatusLine
- Call DisplayUser
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Call UserSelect
- Case 1
- TempX=Asc(TempX$)
- Select Case TempX
- Case 1
- Call AddUser
- Case 4
- Call DeleteUser
- Case 8
- Call Help(7)
- Call DisplayEditScreen(7,27,Out3)
- Call UserStatusLine
- Call DisplayUser
- Case 9
- Call UserSelect
- Case 13
- Call UserEdit
- Put 3,User.Number,UserRecord
- Call UserStatusLine
- TempX=Selection
- Call ShowUser
- Call RedisplayField
- Case 14
- Call NextUser
- Case 17
- Call PreviousUser
- Case 18
- Call SelectNextUser
- Call UserStatusLine
- Case 19
- Call SearchUser
- Case 27
- Put 3,User.Number,UserRecord
- Exit Sub
- End Select
- End Select
- Loop
- 10571
- Exit Sub
- 10572
- Resume 10571
- End Sub
-
- Sub DeleteUser
- On Local Error Goto 10582
- UserRecord.MaxCalls=False
- UserRecord.FromHour=False
- UserRecord.FromMin=False
- UserRecord.ToHour=False
- UserRecord.ToMin=False
- UserRecord.ClassType=False
- Strng=Deleted$
- Call Valid(Strng,30)
- Call Encrypt(Strng,True)
- UserRecord.CodeName=Strng
- Strng=Deleted$
- Call Valid(Strng,20)
- Call Encrypt(Strng,False)
- UserRecord.PassWord=Strng
- Strng=Deleted$
- Call Valid(Strng,20)
- Call Encrypt(Strng,True)
- UserRecord.ClassName=Strng
- Put 3,User.Number,UserRecord
- TempX=Selection
- Call DisplayUser
- Call RedisplayField
- 10581
- Exit Sub
- 10582
- Resume 10581
- End Sub
-
- Sub NextUser
- On Local Error Goto 10592
- If User.Number<Lof(3)/Len(UserRecord) Then
- Put 3,User.Number,UserRecord
- User.Number=User.Number+1
- Call DisplayUser
- Exit Sub
- Endif
- Strng="This is the last user in the user file."
- Call ErrorMessage
- 10591
- Exit Sub
- 10592
- Resume 10591
- End Sub
-
- Sub PreviousUser
- On Local Error Goto 10602
- If User.Number>1 Then
- Put 3,User.Number,UserRecord
- User.Number=User.Number-1
- Call DisplayUser
- Exit Sub
- Endif
- Strng="This is the first user in the user file."
- Call ErrorMessage
- 10601
- Exit Sub
- 10602
- Resume 10601
- End Sub
-
- Sub SelectNextUser
- On Local Error Goto 10612
- Strng=Nul
- Out2=Chr$(60)+Chr$(217)+" Exit Field "+Chr$(29)+" Cursor Edit"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter User: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;14H"
- Call Scrn(Strng)
- Strng=Space$(5)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;20H"
- Call Scrn(Strng)
- Strng="(1-"+Mid$(Str$(Lof(3)/Len(UserRecord)),2)+")"
- Call Scrn(Strng)
- Restore Data11
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Temp2=Val(Edit.Data(1))
- If Temp2<1 Or Temp2>Lof(3)/Len(UserRecord) Then
- Strng="The user number is not within the user file range."
- Call ErrorMessage
- Exit Sub
- Endif
- Put 3,User.Number,UserRecord
- User.Number=Temp2
- Call DisplayUser
- 10611
- Exit Sub
- 10612
- Resume 10611
- End Sub
-
- Sub SearchUser
- On Local Error Goto 10622
- Put 3,User.Number,UserRecord
- Strng=Nul
- Out2=Chr$(29)+" Cursor Edit "+Chr$(60)+Chr$(217)+" Exit Field "
- Out2=Out2+"Append # sign and number for duplicate users"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter User Name or Number: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;29H"
- Call Scrn(Strng)
- Strng=Space$(30)
- Call Scrn(Strng)
- Restore Data12
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Call UserStatusLine
- Temp2=Val(Edit.Data(1))
- Temp$=Ucase$(Edit.Data(1))
- If Temp2 Then
- If Temp2>False And Temp2<=Lof(3)/Len(UserRecord) Then
- User.Number=Temp2
- Call DisplayUser
- Exit Sub
- Endif
- Endif
- Temp.Index=False
- Temp1=Instr(Temp$,"#")
- If Temp1 Then
- Temp.Index=Val(Mid$(Temp$,Temp1+1))
- Temp$=Left$(Temp$,Temp1-1)
- Endif
- Temp4=Len(Temp$)
- Temp=False
- Temp3=False
- For Temp2=1 To Lof(3)/Len(UserRecord)
- Get 3,Temp2,UserRecord
- Strng=UserRecord.CodeName
- Call Decrypt(Strng)
- If Left$(Strng,Temp4)=Temp$ Then
- Temp3=Temp3+1
- If Temp3=1 Then
- Temp=Temp2
- Endif
- If Temp.Index Then
- If Temp3=Temp.Index Then
- User.Number=Temp2
- Call DisplayUser
- Exit Sub
- Endif
- Endif
- Endif
- Next
- If Temp.Index=False And Temp3=1 Then
- User.Number=Temp
- Call DisplayUser
- Exit Sub
- Endif
- If Temp3=False Then
- Strng="The user name was not found in the user file."
- Call ErrorMessage
- Get 3,User.Number,UserRecord
- Exit Sub
- Endif
- Strng="There was more than one user found."
- Call ErrorMessage
- Strng=Chr$(18)+" Scroll User "+Chr$(60)+Chr$(217)+" Select User"
- Out2=Nul
- Call StatusLine
- User.Number=Temp
- Temp2=Temp
- Get 3,User.Number,UserRecord
- Call DisplayUser
- Call RedisplayField
- Do
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 1
- If TempX$=Chr$(13) Then
- User.Number=Temp2
- Call UserStatusLine
- Call RedisplayField
- Call DisplayUser
- Exit Sub
- Endif
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Select Case TempX
- Case 72
- TempA=False
- For Temp3=Temp2-1 To 1 Step -1
- Get 3,Temp3,UserRecord
- Strng=UserRecord.CodeName
- Call Decrypt(Strng)
- If Left$(Strng,Temp4)=Temp$ Then
- TempA=True
- Temp2=Temp3
- User.Number=Temp3
- Call DisplayUser
- Call RedisplayField
- Exit For
- Endif
- Next
- If TempA=False Then
- Strng="This is the first user in the search."
- Call ErrorMessage
- Endif
- Case 80
- TempA=False
- For Temp3=Temp2+1 To Lof(3)/Len(UserRecord)
- Get 3,Temp3,UserRecord
- Strng=UserRecord.Codename
- Call Decrypt(Strng)
- If Left$(Strng,Temp4)=Temp$ Then
- TempA=True
- Temp2=Temp3
- User.Number=Temp3
- Call DisplayUser
- Call RedisplayField
- Exit For
- Endif
- Next
- If TempA=False Then
- Strng="This is the last user in the search."
- Call ErrorMessage
- Endif
- End Select
- End Select
- Loop
- 10621
- Exit Sub
- 10622
- Resume 10621
- End Sub
-
- Sub UserStatusLine
- On Local Error Goto 10632
- Strng=Chr$(29)+Chr$(18)+" Cursor Select "+Chr$(60)+Chr$(217)
- Strng=Strng+" Enter Choice <esc> Exit and Save ^h Help ^a Add Record"
- Out2="^r Select User ^n Next User ^q "
- Out2=Out2+"Previous User ^d Delete User ^s Search Users"
- Call StatusLine
- 10631
- Exit Sub
- 10632
- Resume 10631
- End Sub
-
- Sub MainPageScreen
- On Local Error Goto 10642
- Selection=1
- Restore MainpageData
- For Temp2=1 To 10
- Read Title.Data(Temp2), Array.Data(Temp2,1), Array.Data(Temp2,2)
- Next
- Locate ,,1
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[2J"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[2;2H"
- Call Scrn(Strng)
- Strng=Chr$(214)
- Call Scrn(Strng)
- Strng=String$(76,196)
- Call Scrn(Strng)
- Strng=Chr$(183)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;36;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[4;20H"
- Call Scrn(Strng)
- Strng="Dungeons and Dragons Bulletin Board System"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[6;27H"
- Call Scrn(Strng)
- Strng="Sysop Editor Version "+Version$
- Call Scrn(Strng)
- Temp1=1
- For Temp=3 To 23
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"["+Mid$(Str$(Temp),2)+";2H"
- Call Scrn(Strng)
- Strng=Chr$(186)
- Call Scrn(Strng)
- If Temp=Array.Data(Temp1,1) Then
- Strng=Chr$(27)+"["+Mid$(Str$(Array.Data(Temp1,1)),2)+";"+_
- Mid$(Str$(Array.Data(Temp1,2)),2)+"H"
- Call Scrn(Strng)
- Strng="F"+Mid$(Str$(Temp1),2)+" "
- Call Scrn(Strng)
- If Temp1=1 Then
- Strng=Chr$(27)+"[1;37;41m"
- Call Scrn(Strng)
- Strng=Left$(Title.Data(Temp1),1)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;33;41m"
- Call Scrn(Strng)
- Strng=Mid$(Title.Data(Temp1),2)
- Strng=Rtrim$(Strng)
- Call Scrn(Strng)
- Else
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Left$(Title.Data(Temp1),1)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Mid$(Title.Data(Temp1),2)
- Strng=Rtrim$(Strng)
- Call Scrn(Strng)
- Endif
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"["+Mid$(Str$(Array.Data(Temp1+5,1)),2)+";"+_
- Mid$(Str$(Array.Data(Temp1+5,2)),2)+"H"
- Call Scrn(Strng)
- Strng="F"+Right$(Str$(Temp1+5),1)+" "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Left$(Title.Data(Temp1+5),1)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Mid$(Title.Data(Temp1+5),2)
- Strng=Rtrim$(Strng)
- Call Scrn(Strng)
- Temp1=Temp1+1
- Endif
- Strng=Chr$(27)+"["+Mid$(Str$(Temp),2)+";79H"
- Call Scrn(Strng)
- Strng=Chr$(186)
- Call Scrn(Strng)
- Next
- Strng=Chr$(27)+"[24;2H"
- Call Scrn(Strng)
- Strng=Chr$(211)
- Call Scrn(Strng)
- Strng=String$(76,196)
- Call Scrn(Strng)
- Strng=Chr$(189)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[22;4H"
- Call Scrn(Strng)
- Strng=" Highlight Menu Choice With Cursor Keypad. "
- Strng=Strng+"Press Return To Select Option."
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;4H"
- Call Scrn(Strng)
- Strng=" Press Function Key Selection, Or Selection Letter. "
- Strng=Strng+"Press <esc> To Quit."
- Call Scrn(Strng)
- 10641
- Exit Sub
- 10642
- Resume 10641
- End Sub
-
- Sub DisplayEditScreen(Var1,Var2,Var$)
- On Local Error Goto 10652
- Select Case Var1
- Case 1
- Restore RoomData
- Case 2
- Restore ObjectData
- Case 3
- Restore TreasureData
- Case 4
- Restore MonsterData
- Case 5
- Restore SpellData
- Case 6
- Restore ActionData
- Case 7
- Restore UserData
- Case 8
- Restore NonplayerData
- End Select
- For Temp2=1 To Var2
- Read Title.Data(Temp2), Array.Data(Temp2,1), Array.Data(Temp2,2)
- Next
- Call DisplayBorder(Var$)
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"["+Mid$(Str$(Array.Data(1,1)),2)+";"
- Strng=Strng+Mid$(Str$(Array.Data(1,2)),2)+"H"
- Call Scrn(Strng)
- Strng=Title.Data(1)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- If Var1=2 Then
- Var2=15
- Endif
- For Temp2=2 To Var2
- Strng=Chr$(27)+"["+Mid$(Str$(Array.Data(Temp2,1)),2)+";"+_
- Mid$(Str$(Array.Data(Temp2,2)),2)+"H"
- Call Scrn(Strng)
- Strng=Title.Data(Temp2)
- Call Scrn(Strng)
- Next
- Selection=1
- 10651
- Exit Sub
- 10652
- Resume 10651
- End Sub
-
- Sub DisplayBorder(Var$)
- On Local Error Goto 10654
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[2J"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;36;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;1H"
- Call Scrn(Strng)
- Strng=Chr$(214)+String$(78,196)+Chr$(183)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Var$=" "+Ucase$(Var$)+" "
- VarX=Int(40-Len(Var$)/2+1)
- Strng=Chr$(27)+"[1;"+Mid$(Str$(VarX),2)+"H"
- Call Scrn(Strng)
- Call Scrn(Var$)
- Strng=Chr$(27)+"[1;36;44m"
- Call Scrn(Strng)
- For Temp=2 To 24
- Strng=Chr$(27)+"["+Mid$(Str$(Temp),2)+";1H"
- Call Scrn(Strng)
- Strng=Chr$(186)
- Call Scrn(Strng)
- Strng=Chr$(27)+"["+Mid$(Str$(Temp),2)+";80H"
- Call Scrn(Strng)
- Strng=Chr$(186)
- Call Scrn(Strng)
- Next
- Strng=Chr$(27)+"[25;1H"
- Call Scrn(Strng)
- Strng=Chr$(211)+String$(78,196)
- Call Scrn(Strng)
- Color 11,1
- Locate 25,80,0
- Print Chr$(189);
- Strng=Chr$(27)+"[1;1H"
- Call Scrn(Strng)
- 10653
- Exit Sub
- 10654
- Resume 10653
- End Sub
-
- Sub ErrorMessage
- On Local Error Goto 10662
- TempX$=Strng+" Press <esc>."
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[22;2H"
- Call Scrn(Strng)
- Strng=Space$(78)
- Call Scrn(Strng)
- Strng=Chr$(27)+"[22;2H"
- Call Scrn(Strng)
- Call Scrn(TempX$)
- While Inkey$<>Chr$(27)
- Wend
- Strng=Chr$(27)+"[22;2H"
- Call Scrn(Strng)
- Strng=Space$(78)
- Call Scrn(Strng)
- Call RedisplayField
- 10661
- Exit Sub
- 10662
- Resume 10661
- End Sub
-
- Sub ErrorStatusLine
- On Local Error Goto 10664
- Strng=Nul
- Out2=Out2+" Press <esc>."
- Call StatusLine
- While Inkey$<>Chr$(27)
- Wend
- 10663
- Exit Sub
- 10664
- Resume 10663
- End Sub
-
- Sub DisplayRoomObjectScreen
- On Local Error Goto 10672
- If Room.Objects=False Then
- Object.Index=False
- Object.Number=False
- Call ShowRoomObject
- Out2="There are no objects in the room to display."
- Call ErrorStatusLine
- Exit Sub
- Endif
- Temp=False
- Object.Index=False
- For Room.Index=1 To 10
- If RoomRecord.Object(Room.Index)>False Then
- Temp=Temp+1
- If Temp=Object.Number Then
- Object.Index=RoomRecord.Object(Room.Index)
- Exit For
- Endif
- Endif
- Next
- If Object.Index<1 Or Object.Index>Lof(6)/Len(ObjectRecord) Then
- Out2="The object number is not within the object file range."
- Call ErrorStatusLine
- Exit Sub
- Endif
- Call ShowRoomObject
- 10671
- Exit Sub
- 10672
- Resume 10671
- End Sub
-
- Sub EditRoomObject
- On Local Error Goto 10682
- Object.Number=1
- Call DisplayRoomObjectScreen
- Do
- Call RoomObjectStatusLine
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 1
- TempX=Asc(TempX$)
- Select Case TempX
- Case 1
- Call AddRoomObject
- Case 4
- Call DeleteRoomObject
- Case 19
- Call SearchRoomObject
- Case 27
- Call ClearSubstats
- Exit Sub
- End Select
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Select Case TempX
- Case 72
- Call PreviousRoomObject
- Case 80
- Call NextRoomObject
- End Select
- End Select
- Loop
- 10681
- Exit Sub
- 10682
- Resume 10681
- End Sub
-
- Sub DeleteRoomObject
- On Local Error Goto 10692
- If Room.Objects>False Then
- RoomRecord.Object(Room.Index)=False
- RoomRecord.ObjCharges(Room.Index)=False
- Put 5,Room.Number,RoomRecord
- Room.Objects=Room.Objects-1
- Out2="The object has been deleted from the room."
- Call ErrorStatusLine
- Object.Number=1
- Call DisplayRoomObjectScreen
- Endif
- 10691
- Exit Sub
- 10692
- Resume 10691
- End Sub
-
- Sub AddRoomObject
- On Local Error Goto 10702
- Strng=Nul
- Out2=Chr$(29)+" Cursor Edit "+Chr$(60)+Chr$(217)+" Exit Field "
- Out2=Out2+"Append # sign and number for duplicate objects"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Object Name or Number: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;31H"
- Call Scrn(Strng)
- Strng=Space$(30)
- Call Scrn(Strng)
- Restore Data13
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Temp2=Val(Edit.Data(1))
- If Temp2=False Then
- Temp.Index=False
- If Instr(Edit.Data(1),"#") Then
- Temp.Index=Val(Mid$(Edit.Data(1),Instr(Edit.Data(1),"#")+1))
- Edit.Data(1)=Left$(Edit.Data(1),Instr(Edit.Data(1),"#")-1)
- Endif
- Edit.Data(1)=Lcase$(Edit.Data(1))
- If Edit.Data(1)<>Nul Then
- Temp3=False
- For Temp2=1 To Lof(6)/Len(ObjectRecord)
- Get 6,Temp2,ObjectRecord
- If Left$(ObjectRecord.ObjectName,_
- Len(Edit.Data(1)))=Edit.Data(1) Then
- Temp3=Temp3+1
- If Temp3=Temp.Index Or Temp.Index=False Then
- Exit For
- Endif
- Endif
- Next
- Endif
- Endif
- If Temp2<1 Or Temp2>Lof(6)/Len(ObjectRecord) Then
- Out2="The object name was not found in the object file."
- Call ErrorStatusLine
- Exit Sub
- Endif
- For Temp3=1 To 10
- If RoomRecord.Object(Temp3)=False Then
- Get 6,Temp2,ObjectRecord
- RoomRecord.Object(Temp3)=Temp2
- RoomRecord.ObjCharges(Temp3)=False
- Put 5,Room.Number,RoomRecord
- Room.Objects=Room.Objects+1
- Object.Number=1
- Call DisplayRoomObjectScreen
- Exit Sub
- Endif
- Next
- Out2="The room file does not have room for an object."
- Call ErrorStatusLine
- 10701
- Exit Sub
- 10702
- Resume 10701
- End Sub
-
- Sub SearchRoomObject
- On Local Error Goto 10712
- Strng=Nul
- Out2=Chr$(29)+" Cursor Edit "+Chr$(60)+Chr$(217)+" Exit Field "
- Out2=Out2+"Append # sign and number for duplicate objects"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Object Name or Number: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;31H"
- Call Scrn(Strng)
- Strng=Space$(30)
- Call Scrn(Strng)
- Restore Data14
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Temp2=Val(Edit.Data(1))
- Temp$=Lcase$(Edit.Data(1))
- Temp.Index=False
- Temp1=Instr(Temp$,"#")
- If Temp1 Then
- Temp.Index=Val(Mid$(Temp$,Temp1+1))
- Temp$=Left$(Temp$,Temp1-1)
- Endif
- If Temp2 Then
- If Temp2<=False Or Temp2>Lof(6)/Len(ObjectRecord) Then
- Temp2=False
- Endif
- Endif
- If Temp2=False Then
- Temp4=Len(Temp$)
- Temp3=False
- For Temp5=1 To Lof(6)/Len(ObjectRecord)
- Get 6,Temp5,ObjectRecord
- If Left$(ObjectRecord.ObjectName,Temp4)=Temp$ Then
- Temp3=Temp3+1
- If Temp3=Temp.Index Or Temp.Index=False Then
- Temp2=Temp5
- Exit For
- Endif
- Endif
- Next
- Endif
- If Temp2=False Then
- Out2="The object name was not found in the object file."
- Call ErrorStatusLine
- Exit Sub
- Endif
- Object.Number=Temp2
- Object.Index=Temp2
- Call ShowRoomObject
- Out2="To exit object search display,"
- Call ErrorStatusLine
- Object.Number=1
- Call DisplayRoomObjectScreen
- 10711
- Exit Sub
- 10712
- Resume 10711
- End Sub
-
- Sub PreviousRoomObject
- On Local Error Goto 10722
- If Object.Number=1 Or Room.Objects=1 Then
- Out2="That is the first or only object. Can't cursor up."
- Call ErrorStatusLine
- Exit Sub
- Endif
- Object.Number=Object.Number-1
- Call DisplayRoomObjectScreen
- 10721
- Exit Sub
- 10722
- Resume 10721
- End Sub
-
- Sub NextRoomObject
- On Local Error Goto 10732
- If Object.Number=Room.Objects Then
- Out2="That is the last or only object. Can't cursor down."
- Call ErrorStatusLine
- Exit Sub
- Endif
- Object.Number=Object.Number+1
- Call DisplayRoomObjectScreen
- 10731
- Exit Sub
- 10732
- Resume 10731
- End Sub
-
- Sub RoomObjectStatusLine
- On Local Error Goto 10742
- Strng=Chr$(18)+" Cursor Select <esc> Exit Object Display"
- Out2="^d Delete Object ^a Add Object ^s Search Objects"
- Call StatusLine
- 10741
- Exit Sub
- 10742
- Resume 10741
- End Sub
-
- Sub DisplayRoomTreasureScreen
- On Local Error Goto 10752
- If Room.Treasure=False Then
- Treasure.Index=False
- Treasure.Number=False
- Call ShowRoomTreasure
- Out2="There is no treasure in the room to display."
- Call ErrorStatusLine
- Exit Sub
- Endif
- Temp=False
- Treasure.Index=False
- For Room.Index=1 To 10
- If RoomRecord.Treasure(Room.Index)>False Then
- Temp=Temp+1
- If Temp=Treasure.Number Then
- Treasure.Index=RoomRecord.Treasure(Room.Index)
- Exit For
- Endif
- Endif
- Next
- If Treasure.Index<1 Or Treasure.Index>Lof(8)/Len(TreasureRecord) Then
- Out2="The treasure number is not within the treasure file range."
- Call ErrorStatusLine
- Exit Sub
- Endif
- Call ShowRoomTreasure
- 10751
- Exit Sub
- 10752
- Resume 10751
- End Sub
-
- Sub EditRoomTreasure
- On Local Error Goto 10762
- Treasure.Number=1
- Call DisplayRoomTreasureScreen
- Do
- Call RoomTreasureStatusLine
- TempX$=Inkey$
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- TempX=False
- Select Case Len(TempX$)
- Case 1
- TempX=Asc(TempX$)
- Select Case TempX
- Case 1
- Call AddRoomTreasure
- Case 4
- Call DeleteRoomTreasure
- Case 19
- Call SearchRoomTreasure
- Case 27
- Call ClearSubstats
- Exit Sub
- End Select
- Case 2
- TempX=Asc(Mid$(TempX$,2,1))
- Select Case TempX
- Case 72
- Call PreviousRoomTreasure
- Case 80
- Call NextRoomTreasure
- End Select
- End Select
- Loop
- 10761
- Exit Sub
- 10762
- Resume 10761
- End Sub
-
- Sub DeleteRoomTreasure
- On Local Error Goto 10772
- If Room.Treasure>False Then
- RoomRecord.Treasure(Room.Index)=False
- RoomRecord.TreCharges(Room.Index)=False
- RoomRecord.Flags(Room.Index)=False
- Put 5,Room.Number,RoomRecord
- Room.Treasure=Room.Treasure-1
- Out2="The treasure has been deleted from the room."
- Call ErrorStatusLine
- Treasure.Number=1
- Call DisplayRoomTreasureScreen
- Endif
- 10771
- Exit Sub
- 10772
- Resume 10771
- End Sub
-
- Sub AddRoomTreasure
- On Local Error Goto 10782
- Strng=Nul
- Out2=Chr$(29)+" Cursor Edit "+Chr$(60)+Chr$(217)+" Exit Field "
- Out2=Out2+"Append # sign and number for duplicate treasure"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Treasure Name or Number: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;33H"
- Call Scrn(Strng)
- Strng=Space$(30)
- Call Scrn(Strng)
- Restore Data15
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Temp2=Val(Edit.Data(1))
- If Temp2=False Then
- Temp.Index=False
- If Instr(Edit.Data(1),"#") Then
- Temp.Index=Val(Mid$(Edit.Data(1),Instr(Edit.Data(1),"#")+1))
- Edit.Data(1)=Left$(Edit.Data(1),Instr(Edit.Data(1),"#")-1)
- Endif
- Edit.Data(1)=Lcase$(Edit.Data(1))
- If Edit.Data(1)<>Nul Then
- Temp3=False
- For Temp2=1 To Lof(8)/Len(TreasureRecord)
- Get 8,Temp2,TreasureRecord
- If Left$(TreasureRecord.TreasureName,_
- Len(Edit.Data(1)))=Edit.Data(1) Then
- Temp3=Temp3+1
- If Temp.Index=Temp3 Or Temp.Index=False Then
- Exit For
- Endif
- Endif
- Next
- Endif
- Endif
- If Temp2<1 Or Temp2>Lof(8)/Len(TreasureRecord) Then
- Out2="The treasure name was not found in the treasure file."
- Call ErrorStatusLine
- Exit Sub
- Endif
- For Temp3=1 To 10
- If RoomRecord.Treasure(Temp3)=False Then
- Get 8,Temp2,TreasureRecord
- RoomRecord.Treasure(Temp3)=Temp2
- RoomRecord.TreCharges(Temp3)=TreasureRecord.Charges
- RoomRecord.Flags(Temp3)=False
- Put 5,Room.Number,RoomRecord
- Room.Treasure=Room.Treasure+1
- Treasure.Number=1
- Call DisplayRoomTreasureScreen
- Exit Sub
- Endif
- Next
- Out2="The room file does not have room for treasure."
- Call ErrorStatusLine
- 10781
- Exit Sub
- 10782
- Resume 10781
- End Sub
-
- Sub SearchRoomTreasure
- On Local Error Goto 10792
- Strng=Nul
- Out2=Chr$(29)+" Cursor Edit "+Chr$(60)+Chr$(217)+" Exit Field "
- Out2=Out2+"Append # sign and number for duplicate treasure"
- Call StatusLine
- Strng=Chr$(27)+"[1;33;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;2H"
- Call Scrn(Strng)
- Strng="Enter Treasure Name or Number: "
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[23;33H"
- Call Scrn(Strng)
- Strng=Space$(30)
- Call Scrn(Strng)
- Restore Data16
- Read Xcoor, Ycoor, Column, Line.Length, Row, Max.Lines, Line.Number
- Edit.Data(1)=Nul
- Call ScreenEdit
- Temp2=Val(Edit.Data(1))
- Temp$=Lcase$(Edit.Data(1))
- Temp.Index=False
- Temp1=Instr(Temp$,"#")
- If Temp1 Then
- Temp.Index=Val(Mid$(Temp$,Temp1+1))
- Temp$=Left$(Temp$,Temp1-1)
- Endif
- If Temp2 Then
- If Temp2<=False Or Temp2>Lof(8)/Len(TreasureRecord) Then
- Temp2=False
- Endif
- Endif
- If Temp2=False Then
- Temp4=Len(Temp$)
- Temp3=False
- For Temp5=1 To Lof(8)/Len(TreasureRecord)
- Get 8,Temp5,TreasureRecord
- If Left$(TreasureRecord.TreasureName,Temp4)=Temp$ Then
- Temp3=Temp3+1
- If Temp3=Temp.Index Or Temp.Index=False Then
- Temp2=Temp5
- Exit For
- Endif
- Endif
- Next
- Endif
- If Temp2=False Then
- Out2="The treasure name was not found in the treasure file."
- Call ErrorStatusLine
- Exit Sub
- Endif
- Treasure.Number=Temp2
- Treasure.Index=Temp2
- Call ShowRoomTreasure
- Out2="To exit treasure search display,"
- Call ErrorStatusLine
- Treasure.Number=1
- Call DisplayRoomTreasureScreen
- 10791
- Exit Sub
- 10792
- Resume 10791
- End Sub
-
- Sub PreviousRoomTreasure
- On Local Error Goto 10802
- If Treasure.Number=1 Or Room.Treasure=1 Then
- Out2="That is the first or only treasure. Can't cursor up."
- Call ErrorStatusLine
- Exit Sub
- Endif
- Treasure.Number=Treasure.Number-1
- Call DisplayRoomTreasureScreen
- 10801
- Exit Sub
- 10802
- Resume 10801
- End Sub
-
- Sub NextRoomTreasure
- On Local Error Goto 10812
- If Treasure.Number=Room.Treasure Then
- Out2="That is the last or only object. Can't cursor down."
- Call ErrorStatusLine
- Exit Sub
- Endif
- Treasure.Number=Treasure.Number+1
- Call DisplayRoomTreasureScreen
- 10811
- Exit Sub
- 10812
- Resume 10811
- End Sub
-
- Sub RoomTreasureStatusLine
- On Local Error Goto 10814
- Strng=Chr$(18)+" Cursor Select <esc> Exit Treasure Display"
- Out2="^d Delete Treasure ^a Add Treasure ^s Search Treasure"
- Call StatusLine
- 10813
- Exit Sub
- 10814
- Resume 10813
- End Sub
-
- Sub ScreenEdit
- On Local Error Goto 10822
- For Temp2=1 To Max.Lines
- Edit.Data(Temp2)=Rtrim$(Edit.Data(Temp2))
- Next
- Inserting=True
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[2;74H"
- Call Scrn(Strng)
- Strng="Insert"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- Do
- Strng=Chr$(27)+"["+Mid$(Str$(Xcoor),2)+";"+Mid$(Str$(Ycoor),2)+"H"
- Call Scrn(Strng)
- Locate Xcoor,Ycoor,1
- TempX$=Nul
- While TempX$=Nul
- TempX$=Inkey$
- Wend
- Select Case Len(TempX$)
- Case 1
- Select Case TempX$
- Case Chr$(13)
- If Max.Lines=1 Then
- Exit Do
- Endif
- If Line.Number<Max.Lines Then
- Line.Number=Line.Number+1
- Xcoor=Xcoor+1
- Ycoor=Column
- Endif
- Case Chr$(8)
- If Ycoor-Column>False Then
- If Inserting=False Then
- Ycoor=Ycoor-1
- Else
- Edit.Data(Line.Number)=_
- Left$(Edit.Data(Line.Number),Ycoor-Column-1)+_
- Mid$(Edit.Data(Line.Number),Ycoor-Column+1)
- Ycoor=Ycoor-1
- Strng=Chr$(27)+"["+Mid$(Str$(Xcoor),2)+";"+_
- Mid$(Str$(Ycoor),2)+"H"
- Call Scrn(Strng)
- Strng=Mid$(Edit.Data(Line.Number),Ycoor-Column+1)+" "
- Call Scrn(Strng)
- Endif
- Endif
- Case Chr$(9)
- If Ycoor-Column+8<=Len(Edit.Data(Line.Number)) Then
- Ycoor=Ycoor+8
- Else
- Ycoor=Len(Edit.Data(Line.Number))+Column
- Endif
- Case Chr$(27)
- If Max.Lines>1 Then
- Exit Do
- Endif
- Case Else
- If Asc(TempX$)>=32 And Asc(TempX$)<=127 Then
- If Ycoor-Column+1>Line.Length Then
- If Max.Lines>1 Then
- If TempX$=Chr$(32) Then
- If Line.Number<Max.Lines Then
- Line.Number=Line.Number+1
- Xcoor=Xcoor+1
- Ycoor=Column
- Endif
- Else
- Inserting=False
- If Line.Number<Max.Lines Then
- Line.Number=Line.Number+1
- Xcoor=Xcoor+1
- Temp.Ycoor1=Ycoor
- Temp.Ycoor2=1
- If Instr(Edit.Data(Line.Number-1)," ")=False Then
- Ycoor=Column
- Else
- Do
- If Mid$(Edit.Data(Line.Number-1),_
- Temp.Ycoor1,1)=" " Then
- Temp.Ycoor1=Temp.Ycoor1+1
- Exit Do
- Endif
- If Len(Edit.Data(Line.Number-1))=False Then
- Exit Do
- Endif
- Temp.Ycoor1=Temp.Ycoor1-1
- Strng=Chr$(27)+"["+Mid$(Str$(Xcoor-1),2)+_
- ";"+Mid$(Str$(Temp.Ycoor1),2)+"H "
- Call Scrn(Strng)
- Loop
- For Temp2=Temp.Ycoor1 To Ycoor
- Strng=Chr$(27)+"["+Mid$(Str$(Xcoor),2)+";"+_
- Mid$(Str$(Temp.Ycoor2),2)+"H"
- Call Scrn(Strng)
- Strng=Mid$(Edit.Data(Line.Number-1),Temp2,1)
- Call Scrn(Strng)
- If Len(Edit.Data(Line.Number))<Temp.Ycoor2 Then
- Edit.Data(Line.Number)=_
- Edit.Data(Line.Number)+_
- Mid$(Edit.Data(Line.Number-1),Temp2,1)
- Else
- Mid$(Edit.Data(Line.Number),Temp.Ycoor2,1)=_
- Mid$(Edit.Data(Line.Number-1),Temp2,1)
- Endif
- Temp.Ycoor2=Temp.Ycoor2+1
- Next
- Edit.Data(Line.Number-1)=_
- Left$(Edit.Data(Line.Number-1),Temp.Ycoor1-1)
- Edit.Data(Line.Number-1)=_
- Rtrim$(Edit.Data(Line.Number-1))
- Ycoor=Temp.Ycoor2-1
- If Ycoor-Column+1>Len(Edit.Data(Line.Number)) Then
- Edit.Data(Line.Number)=_
- Edit.Data(Line.Number)+TempX$
- Else
- Mid$(Edit.Data(Line.Number),Ycoor-Column+1,1)=_
- TempX$
- Endif
- Strng=TempX$
- Call Scrn(Strng)
- Ycoor=Ycoor+1
- Endif
- Endif
- Endif
- Endif
- Else
- If Inserting=False Then
- If Ycoor-Column+1>Len(Edit.Data(Line.Number)) Then
- Edit.Data(Line.Number)=Edit.Data(Line.Number)+TempX$
- Else
- Mid$(Edit.Data(Line.Number),Ycoor-Column+1,1)=TempX$
- Endif
- Strng=TempX$
- Call Scrn(Strng)
- Ycoor=Ycoor+1
- Else
- Edit.Data(Line.Number)=_
- Left$(Edit.Data(Line.Number),Ycoor-Column)+TempX$+_
- Mid$(Edit.Data(Line.Number),Ycoor-Column+1)
- Edit.Data(Line.Number)=_
- Left$(Edit.Data(Line.Number),Line.Length)
- Strng=Chr$(27)+"["+Mid$(Str$(Xcoor),2)+";"+_
- Mid$(Str$(Ycoor),2)+"H"
- Call Scrn(Strng)
- Strng=Mid$(Edit.Data(Line.Number),Ycoor-Column+1)
- Call Scrn(Strng)
- Ycoor=Ycoor+1
- Endif
- Endif
- Endif
- End Select
- Case 2
- Temp=Asc(Mid$(TempX$,2,1))
- Select Case Temp
- ' INSERT
- Case 82
- Inserting=Not Inserting
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[2;74H"
- Call Scrn(Strng)
- If Inserting=False Then
- Strng=Space$(6)
- Else
- Strng="Insert"
- Endif
- Call Scrn(Strng)
- Strng=Chr$(27)+"[1;37;40m"
- Call Scrn(Strng)
- ' DELETE
- Case 83
- If Ycoor-Column+1<=Len(Edit.Data(Line.Number)) Then
- Edit.Data(Line.Number)=_
- Left$(Edit.Data(Line.Number),Ycoor-Column)+_
- Mid$(Edit.Data(Line.Number),Ycoor-Column+2)
- Strng=Chr$(27)+"["+Mid$(Str$(Xcoor),2)+";"+_
- Mid$(Str$(Ycoor),2)+"H"
- Call Scrn(Strng)
- Strng=Mid$(Edit.Data(Line.Number),Ycoor-Column+1)+" "
- Call Scrn(Strng)
- Endif
- ' HOME
- Case 71
- Ycoor=Column
- ' END
- Case 79
- Ycoor=Len(Edit.Data(Line.Number))+Column
- ' TAB
- Case 15
- If Ycoor-Column-8>False Then
- Ycoor=Ycoor-8
- Else
- Ycoor=Column
- Endif
- ' RIGHT
- Case 77
- If Ycoor-Column+1<=Len(Edit.Data(Line.Number)) Then
- Ycoor=Ycoor+1
- Endif
- ' LEFT
- Case 75
- If Ycoor-Column>False Then
- Ycoor=Ycoor-1
- Endif
- ' UP
- Case 72
- If Line.Number>1 Then
- Xcoor=Xcoor-1
- Line.Number=Line.Number-1
- If Ycoor-Column+1>Len(Edit.Data(Line.Number)) Then
- Ycoor=Len(Edit.Data(Line.Number))+Column
- Endif
- Endif
- ' DOWN
- Case 80
- If Line.Number<Max.Lines Then
- Xcoor=Xcoor+1
- Line.Number=Line.Number+1
- If Ycoor-Column+1>Len(Edit.Data(Line.Number)) Then
- Ycoor=Len(Edit.Data(Line.Number))+Column
- Endif
- Endif
- ' PAGE UP
- Case 73
- If Line.Number>1 Then
- Xcoor=Row
- Line.Number=1
- If Ycoor-Column+1>Len(Edit.Data(Line.Number)) Then
- Ycoor=Len(Edit.Data(Line.Number))+Column
- Endif
- Endif
- ' PAGE DOWN
- Case 81
- If Line.Number<Max.Lines Then
- Temp2=Max.Lines
- Do
- Xcoor=Row+Temp2-1
- Line.Number=Temp2
- If Line.Number=1 Then
- Exit Do
- Endif
- If Len(Edit.Data(Line.Number))=False Then
- Temp2=Temp2-1
- Else
- Exit Do
- Endif
- Loop
- If Ycoor-Column+1>Len(Edit.Data(Line.Number)) Then
- Ycoor=Len(Edit.Data(Line.Number))+Column
- Endif
- Endif
- ' CONTROL-HOME
- Case 119
- Xcoor=Row
- Line.Number=1
- Ycoor=Column
- ' CONTROL-END
- Case 117
- Temp2=Max.Lines
- Do
- Xcoor=Row+Temp2-1
- Line.Number=Temp2
- If Line.Number=1 Then
- Exit Do
- Endif
- If Len(Edit.Data(Line.Number))=False Then
- Temp2=Temp2-1
- Else
- Exit Do
- Endif
- Loop
- Ycoor=Len(Edit.Data(Line.Number))+Column
- ' CONTROL-RIGHT
- Case 116
- Do
- For Temp2=Ycoor-Column+1 To Len(Edit.Data(Line.Number))-1
- If Mid$(Edit.Data(Line.Number),Temp2,1)=" " Then
- If Mid$(Edit.Data(Line.Number),Temp2+1,1)<>" " Then
- Ycoor=Temp2+Column
- Exit Do
- Endif
- Endif
- Next
- If Ycoor-Column+1<=Len(Edit.Data(Line.Number)) Then
- Ycoor=Len(Edit.Data(Line.Number))+Column
- Else
- If Max.Lines>1 And Line.Number<Max.Lines Then
- Line.Number=Line.Number+1
- Xcoor=Xcoor+1
- Ycoor=Column
- Endif
- Endif
- Exit Do
- Loop
- ' CONTROL-LEFT
- Case 115
- Do
- For Temp2=Ycoor-Column-1 To 1 Step -1
- If Mid$(Edit.Data(Line.Number),Temp2,1)=" " Then
- Ycoor=Temp2+Column
- Exit Do
- Endif
- Next
- If Ycoor=Column Then
- If Max.Lines>1 And Line.Number>1 Then
- Line.Number=Line.Number-1
- Xcoor=Xcoor-1
- Ycoor=Len(Edit.Data(Line.Number))+Column
- Endif
- Else
- Ycoor=Column
- Endif
- Exit Do
- Loop
- End Select
- End Select
- Loop
- Strng=Chr$(27)+"[1;37;44m"
- Call Scrn(Strng)
- Strng=Chr$(27)+"[2;74H"
- Call Scrn(Strng)
- Strng=Space$(6)
- Call Scrn(Strng)
- 10821
- Exit Sub
- 10822
- Resume 10821
- End Sub
-
- MainpageData:
- Data "Action Edit",10,15
- Data "Class Edit",12,15
- Data "Link Edit",14,15
- Data "Monster Edit",16,15
- Data "Nonplayer Edit",18,15
- Data "Object Edit",10,50
- Data "Room Edit",12,50
- Data "Spell Edit",14,50
- Data "Treasure Edit",16,50
- Data "User Edit",18,50
-
- RoomData:
- Data "Short Description",3,2,"Long Description",6,2,"North",13,2,"East",13,14
- Data "South",13,25,"West",13,37,"Out",13,48,"Up",13,58,"Down",13,67
- Data "Northeast",15,2,"Southeast",15,18,"Southwest",15,34,"Northwest",15,50
- Data "Monclass",17,2,"Rust Rate",17,16,"Steal Rate",19,2
-
- ObjectData:
- Data "Object Name",3,2,"Object Identifier",6,2,"Room Link",9,2,"Lighted",11,2
- Data "Lighted Time",11,12,"Key Number",13,2,"Description",15,2
- Data "Entry Description",18,2,"Hidden",3,50,"Invisible",5,50,"Jail Trap",7,50
- Data "Locked",9,50,"Relocks",11,50,"Permanent",13,50,"Trapped(P/F/D)",15,50
- Data "Hits For",17,50,"Fatigue/Vitality",18,50
-
- TreasureData:
- Data "Treasure Name",3,2,"Identifier",5,2,"Weight",8,2,"Value",10,2
- Data "Hits",12,2,"Strikes",14,2,"Class",16,2,"Type",18,2,"Coins",3,20
- Data "Potion",5,20,"Scroll",7,20,"Invisible",9,20,"Loadable",11,20
- Data "Loads Ammo",13,20,"Ammunition",15,20,"Key Number",17,20,"Magical",19,20
- Data "Spell",3,40,"Ring",5,40,"Ring Type",7,40,"Antispell",9,40
- Data "Receptacle",11,40,"Receptacle Max",13,40,"Filename",15,40,"Locked",17,40
- Data "Edible",19,40,"Rustable",3,62,"Rust Percent",5,62,"Stealable",7,62
- Data "Steal Percent",9,62,"Launchable",11,62,"Launch Loads",13,62
- Data "Launch Ammo",15,62,"Movable",17,62
-
- MonsterData:
- Data "Monster Name",3,2,"Plural",6,2,"Level",9,2,"Hits",11,2,"Experience",13,2
- Data "Treasure",14,2,"Psionic",21,2,"Psi Spell",21,12,"Group Number",3,45
- Data "Poison",5,45,"Percent",5,60,"Level Drain",7,45,"Percent",7,60
- Data "Block",9,45,"Percent",9,60,"Prevent",11,45,"Percent",11,60
- Data "Follow",13,45,"Percent",13,60,"Teleport",12,72,"Cast Spell",15,45
- Data "Percent",15,60,"Spell",17,45,"Magical",19,45,"Permanent",19,55
- Data "Equation",20,45
-
- SpellData:
- Data "Spell Name",3,2,"Teleport Room",6,2,"Level",8,2,"Spell Type",8,11
- Data "Psionic Spell",10,2,"Psionic Mode(A/D)",12,2,"Equation",13,2
- Data "Chant",15,2,"Spell Description",17,2,"Fighter",20,2,"Magic User",20,12
- Data "Thief",20,25,"Cleric",20,33,"Paladin",20,42,"Ranger",20,52
- Data "Druid",20,61,"Lady",20,70,"Spell Ingredients",3,49
- Data "Use Command",10,49,"Scroll",12,49,"Cast Command",14,49
-
- ActionData:
- Data "Monster Number",4,2,"Talk to Monster",6,2,"Teleport to",8,2,"Spell",10,2
- Data "Level Entry",13,2,"Entry max/min",15,2,"North",18,2,"East",18,10
- Data "South",18,17,"West",18,25,"Out",18,32,"Up",18,38,"Down",18,43
- Data "NE",18,50,"SE",18,55,"SW",18,60,"NW",18,65,"Enter",18,70
- Data "Health Rate",4,50,"Encounter Rate",6,50,"Fumble",8,50
- Data "Inventory Damage",10,50,"Hits for(F/V)",12,50,"Fatigue/Vitality",13,50
- Data "Rust Rate",15,50,"Steal Rate",15,65
-
- UserData:
- Data "Username",3,2,"Password",5,2,"Level",7,2,"Room",9,2,"Race",11,2
- Data "Class",12,2,"Alignment",13,2,"Classname",14,2,"Weapon Proficiency",16,2
- Data "Pole",17,2,"Blunt",17,11,"Sharp",17,21,"Thrusting",17,31
- Data "Fatigue",19,2,"Vitality",19,16,"Magic",19,31,"Psionic Points",21,2
- Data "Exp",3,50,"Gold",5,50,"Calls Today",7,50,"Strength",9,50
- Data "Intelligence",11,50,"Wisdom",13,50,"Dexterity",15,50
- Data "Constitution",17,50,"Piety",19,50,"Charisma",21,50
-
- NonplayerData:
- Data "Monster Name",3,2,"Rooms(comma separated)",6,2,"Level",9,2
- Data "Hits",11,2,"Experience",13,2,"Treasure",14,2,"Psionic",21,2
- Data "Psi Spell",21,12,"Group Number",3,45,"Poison",5,45,"Percent",5,60
- Data "Level Drain",7,45,"Percent",7,60,"Block",9,45,"Percent",9,60
- Data "Prevent",11,45,"Percent",11,60,"Follow",13,45,"Percent",13,60
- Data "Teleport",12,72,"Cast Spell",15,45,"Percent",15,60,"Spell",17,45
-
- Data1:
- Data 23,14,14,5,23,1,1
- Data2:
- Data 23,16,16,5,23,1,1
- Data3:
- Data 23,31,31,30,23,1,1
- Data4:
- Data 23,18,18,5,23,1,1
- Data5:
- Data 23,33,33,30,23,1,1
- Data6:
- Data 23,17,17,5,23,1,1
- Data7:
- Data 23,32,32,30,23,1,1
- Data8:
- Data 23,15,15,5,23,1,1
- Data9:
- Data 23,30,30,30,23,1,1
- Data10:
- Data 23,16,16,5,23,1,1
- Data11:
- Data 23,14,14,5,23,1,1
- Data12:
- Data 23,29,29,20,23,1,1
- Data13:
- Data 23,31,31,30,23,1,1
- Data14:
- Data 23,31,31,30,23,1,1
- Data15:
- Data 23,33,33,30,23,1,1
- Data16:
- Data 23,33,33,30,23,1,1
- Data17:
- Data 23,19,19,5,23,1,1
- Data18:
- Data 23,34,34,30,23,1,1
-