home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Beijing Paradise BBS Backup
/
PARADISE.ISO
/
software
/
BBSDOORW
/
DND29C4.ZIP
/
SOURCE.ZIP
/
DNDEDIT.BAS
< prev
next >
Wrap
BASIC Source File
|
1993-01-07
|
97KB
|
3,821 lines
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