home *** CD-ROM | disk | FTP | other *** search
- Rem dndsub5.bas v2.9c
- Rem $Include: 'dndbbs.inc'
-
- Sub Mail
- On Local Error Goto 10012
- Close 4, 5, 6, 7, 8, 9
- Redim Temp.ArrayS(1 To 19) As String
- Do
- Call Mail.Status.Line
- Strng=Nul
- Call IO.O
- Line.Length=1
- No.Input.Out="Q"
- Strng="Mail command(?=Help): "
- Call IO.I
- VarX=True
- Out3=Ucase$(Out2)
- If Instr("EKNR",Out3) Then
- Call Select.Base(VarX)
- If VarX Then
- Call Open.Mail
- Endif
- Endif
- Call IO.O
- If VarX Then
- Select Case Out3
- Case "E"
- Call Enter.Message
- Case "K"
- Call Kill.Message
- Case "L"
- Call Lock.Mailbox(True)
- Case "N"
- Call New.Messages
- Case "R"
- Call Read.Messages
- Case "U"
- Call Lock.Mailbox(False)
- Case "Q"
- Exit Do
- Case "?"
- Stored.Parsed.Command1=Config3(26)
- Call Read.Help(False)
- Case Else
- Graphics.Off=False
- Strng="Type ? for Help."
- Call IO.O
- End Select
- Endif
- Loop
- 10011
- Exit Sub
- 10012
- Resume 10011
- End Sub
-
- Sub Mail.Status.Line
- On Local Error Goto 10022
- Temp$=UserRecord.CodeName
- Call Decrypt(Temp$)
- Temp$=Rtrim$(Temp$)
- Temp$=Lcase$(Temp$)
- Mid$(Temp$,1,1)=Ucase$(Mid$(Temp$,1,1))
- Temp$=Temp$+" > "
- Get 3,User.Index,UserRecord
- If UserRecord.Flags And Locked.User Then
- Temp$=Temp$+"Mailbox locked"
- Else
- Temp$=Temp$+"Mailbox unlocked"
- Endif
- Temp$=Temp$+" > Last Message Read"+Str$(NewMessages.LastMessage)+"."
- Temp$=Left$(Temp$,79)
- Temp$=Temp$+Space$(79-Len(Temp$))
- Call Local.ANSI(2,25,1)
- Temp$=TempD$+Temp$
- Call Display.Status.Line
- 10021
- Exit Sub
- 10022
- Resume 10021
- End Sub
-
- Sub Enter.Message
- On Local Error Goto 10032
- Do
- Graphics.Off=True
- Line.Length=30
- Strng="Message to(Press "+Enter$+" for all)?"
- Call IO.I
- Message.To=Ucase$(Out2)
- Temp=True
- If No.Input=False Then
- Temp=False
- For Temp.User.Index=1 To Lof(3)/Len(UserRecord)
- Get 3,Temp.User.Index,UserRecord
- Strng=UserRecord.CodeName
- Call Decrypt(Strng)
- Strng=Rtrim$(Strng)
- Strng=Ucase$(Strng)
- If Message.To=Strng Then
- If User.Index<>Temp.User.Index Then
- If (UserRecord.Flags And Locked.User)=False Then
- Temp=True
- Exit For
- Endif
- Endif
- Endif
- Next
- Get 3,User.Index,UserRecord
- Endif
- If Temp Then
- Exit Do
- Endif
- Strng="There is no such user."
- Call IO.O
- Loop
- Do
- Line.Length=20
- Strng="Subject?"
- Call IO.I
- Subject=Lcase$(Out2)
- If Subject<>Nul Then
- Exit Do
- Endif
- Strng="Abort message(y/n)?"
- No.Input.Out="N"
- Line.Length=1
- Call IO.I
- If Yes Then
- Exit Do
- Endif
- Loop
- If Subject<>Nul Then
- Strng="Enter message. Maximum 19 lines."
- Call IO.O
- Message.Length=False
- Do
- Strng="Press "+Enter$+" on a blank line to edit."
- Call IO.O
- Do
- Graphics.Off=True
- If Message.Length=19 Then
- Strng="Message buffer full."
- Call IO.O
- Exit Do
- Endif
- Word.Wrap=True
- Strng="?"
- Call IO.I
- If No.Input Then
- Exit Do
- Endif
- Message.Length=Message.Length+1
- Out2=Rtrim$(Out2)
- Out2=Left$(Out2,79)
- Temp.ArrayS(Message.Length)=Out2
- Loop
- Word.Wrap=False
- Call Edit.Message(VarX)
- If VarX=-1 Then
- Strng="Continue editing."
- Call IO.O
- Endif
- If VarX=0 Then
- Exit Do
- Endif
- If VarX=1 Then
- Call Store.Message
- Exit Do
- Endif
- Loop
- Endif
- 10031
- Exit Sub
- 10032
- Resume 10031
- End Sub
-
- Sub Lock.Mailbox(Var)
- On Local Error Goto 10042
- If Var Then
- Strng="Mailbox locked."
- UserRecord.Flags=UserRecord.Flags Or Locked.User
- Else
- Strng="Mailbox unlocked."
- UserRecord.Flags=UserRecord.Flags And Not Locked.User
- Endif
- Put 3,User.Index,UserRecord
- Call IO.O
- 10041
- Exit Sub
- 10042
- Resume 10041
- End Sub
-
- Sub Kill.Message
- On Local Error Goto 10052
- Strng="Enter message number to delete?"
- Call IO.I
- Temp=Val(Out2)
- If Temp<1 Or Temp>Lof(14)/Len(TableRecord) Then
- Strng=Range$
- Call IO.O
- Exit Sub
- Endif
- Get 14,Temp,TableRecord
- Strng=UserRecord.CodeName
- Call Decrypt(Strng)
- Strng=Rtrim$(Strng)
- Strng=Ucase$(Strng)
- Out2=TableRecord.MessageFrom
- Out2=Rtrim$(Out2)
- Out2=Ucase$(Out2)
- If Strng<>Out2 Then
- Strng="Message"+Str$(Temp)+" is not from you."
- Call IO.O
- Exit Sub
- Endif
- If TableRecord.MessageKilled="T" Then
- Strng="Message"+Str$(Temp)+" is already deleted."
- Call IO.O
- Exit Sub
- Endif
- TableRecord.MessageKilled="T"
- Put 14,Temp,TableRecord
- Strng="Message"+Str$(Temp)+" deleted."
- Call IO.O
- 10051
- Exit Sub
- 10052
- Resume 10051
- End Sub
-
- Sub Read.Message(Var)
- On Local Error Goto 10062
- Get 14,Var,TableRecord
- Strng=UserRecord.CodeName
- Call Decrypt(Strng)
- Strng=Rtrim$(Strng)
- Strng=Ucase$(Strng)
- If TableRecord.MessageKilled="T" Then
- Graphics.Off=True
- Strng="Message #"+Mid$(Str$(Var),2)+" was deleted."
- Call IO.O
- Exit Sub
- Endif
- If TableRecord.MessageKilled="F" Then
- Select Case Message.Base.Number
- Case 1
- Var1=False
- Case 2
- Var1=True
- Case Else
- Get 10,Message.Base.Number-2,MessageBaseRecord
- If MessageBaseRecord.BaseType And Private.Base Then
- Var1=True
- Endif
- End Select
- If Var1 Then
- Out2=TableRecord.MessageTo
- Out2=Rtrim$(Out2)
- Out2=Ucase$(Out2)
- If Out2=Nul Or Strng=Out2 Then
- Var1=False
- Endif
- Endif
- If Var1 Then
- Strng="Message #"+Mid$(Str$(Var),2)+" is private."
- Call IO.O
- Endif
- If Var1=False Then
- Graphics.Off=True
- Strng="Msg#:"+Str$(Var)+" of"+Str$(Lof(14)/Len(TableRecord))
- Call IO.O
- Strng="From: "+TableRecord.MessageFrom
- Call IO.O
- Out2=TableRecord.MessageTo
- Out2=Rtrim$(Out2)
- If Out2=Nul Then
- Out2="ALL"
- Endif
- Out2=Lcase$(Out2)
- Mid$(Out2,1,1)=Ucase$(Mid$(Out2,1,1))
- Strng="To: "+Out2
- Call IO.O
- Strng="Subj: "+TableRecord.MessageSubject
- Call IO.O
- Strng="Time: "+TableRecord.MessageTime
- Call IO.O
- Allow.Break=True
- For Var2=TableRecord.MessageStart To_
- TableRecord.MessageStart+TableRecord.MessageLength-1
- Get 16,Var2,MessageRecord
- Strng=MessageRecord.Message
- VarX=Instr(Strng,Chr$(1))
- If VarX Then
- Strng=Left$(Strng,VarX-1)
- Endif
- Strng=Rtrim$(Strng)
- Call IO.O
- If Break Then
- Exit For
- Endif
- Next
- Allow.Break=False
- Call IO.O
- Endif
- Endif
- 10061
- Exit Sub
- 10062
- Resume 10061
- End Sub
-
- Sub Read.Messages
- On Local Error Goto 10072
- Graphics.Off=False
- No.Input.Out="1"
- Strng="Message number(1-"+Mid$(Str$(Lof(14)/Len(TableRecord)),2)+")?"
- Call IO.I
- Message.Read=Val(Out2)
- If Message.Read<1 Or Message.Read>Lof(14)/Len(TableRecord) Then
- Strng=Range$
- Call IO.O
- Exit Sub
- Endif
- For TempX=Message.Read To Lof(14)/Len(TableRecord)
- Call Read.Message(TempX)
- If TempX>NewMessages.LastMessage Then
- NewMessages.LastMessage=TempX
- Endif
- Graphics.Off=False
- Strng=More$
- Line.Length=1
- No.Input.Out="Y"
- Call IO.I
- If No Then
- Exit For
- Endif
- Temp1=Val(Out2)
- If Temp1>False Then
- If Temp1>Lof(14)/Len(TableRecord) Then
- Temp1=Lof(14)/Len(TableRecord)
- Endif
- TempX=Temp1-1
- Endif
- Next
- Strng="End of messages."
- Call IO.O
- Put 15,User.Index,NewMessages
- 10071
- Exit Sub
- 10072
- Resume 10071
- End Sub
-
- Sub New.Messages
- On Local Error Goto 10082
- Get 15,User.Index,NewMessages
- If NewMessages.LastMessage>=Lof(14)/Len(TableRecord) Then
- Strng="No new messages."
- Call IO.O
- Exit Sub
- Endif
- For TempX=NewMessages.LastMessage+1 To Lof(14)/Len(TableRecord)
- Call Read.Message(TempX)
- NewMessages.LastMessage=TempX
- Graphics.Off=False
- Strng=More$
- No.Input.Out="Y"
- Call IO.I
- If No Then
- Exit For
- Endif
- Next
- Put 15,User.Index,NewMessages
- 10081
- Exit Sub
- 10082
- Resume 10081
- End Sub
-
- Sub Select.Base(Var)
- On Local Error Goto 10092
- Strng="Select message base:"
- Call IO.O
- Graphics.Off=True
- Strng=Mask$+"1: public, Type: (public)"
- Call IO.O
- Strng=Mask$+"2: private, Type: (private)"
- Call IO.O
- Temp1=2
- For Temp=1 To Lof(10)/Len(MessageBaseRecord)
- Get 10,Temp,MessageBaseRecord
- Out2=MessageBaseRecord.BaseMessName
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- If Left$(Out2,9)<>Deleted$ Then
- Strng=Mask$+Mid$(Str$(Temp+2),2)+": "+Out2+", Type: "
- If MessageBaseRecord.BaseType And Public.Base Then
- Strng=Strng+"(public) "
- Endif
- If MessageBaseRecord.BaseType And Private.Base Then
- Strng=Strng+"(private) "
- Endif
- If MessageBaseRecord.BaseType And DM.Base Then
- Strng=Strng+"(DMs only) "
- Endif
- If MessageBaseRecord.BaseType And Sysop.Base Then
- Strng=Strng+"(Sysops only) "
- Endif
- If MessageBaseRecord.BaseType And TownMayor.Base Then
- Strng=Strng+"(Town Mayor) "
- Endif
- If MessageBaseRecord.BaseType And Governor.Base Then
- Strng=Strng+"(Governor) "
- Endif
- If MessageBaseRecord.BaseType And GuildMaster.Base Then
- Strng=Strng+"(Guild Master) "
- Endif
- Strng=Rtrim$(Strng)
- Call IO.O
- Temp1=Temp1+1
- If Temp1>22 Then
- Temp1=False
- Call More.Prompt
- If No Then
- Exit For
- Endif
- Endif
- Endif
- Next
- Graphics.Off=False
- Strng="Enter message base number(1-"+_
- Mid$(Str$(Lof(10)/Len(MessageBaseRecord)+2),2)+")?"
- Call IO.I
- Temp=Val(Out2)
- If Temp<1 Or Temp>Lof(10)/Len(MessageBaseRecord)+2 Then
- Strng=Range$
- Call IO.O
- Var=False
- Exit Sub
- Endif
- Select Case Temp
- Case 1
- Message.Name="public"
- Message.Base.Name=Config3(58)
- Message.Base.Number=1
- Var=True
- Case 2
- Message.Name="private"
- Message.Base.Name=Config3(60)
- Message.Base.Number=2
- Var=True
- Case Else
- Get 10,Temp-2,MessageBaseRecord
- Out2=MessageBaseRecord.BaseMessName
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- If Left$(Out2,9)=Deleted$ Then
- Strng="Deleted message base."
- Call IO.O
- Var=False
- Exit Sub
- Endif
- Temp2=False
- If MessageBaseRecord.BaseType And Public.Base Then
- Temp2=True
- Endif
- If MessageBaseRecord.BaseType And Private.Base Then
- Temp2=True
- Endif
- If MessageBaseRecord.BaseType And DM.Base Then
- If Dungeon.Master Or Dungeon.Master.Assistant Or Sysop Then
- Temp2=True
- Endif
- Endif
- If MessageBaseRecord.BaseType And Sysop.Base Then
- If Sysop Then
- Temp2=True
- Endif
- Endif
- If MessageBaseRecord.BaseType And TownMayor.Base Then
- If UserRecord.Flags And Special.Char1 Then
- Temp2=True
- Endif
- Endif
- If MessageBaseRecord.BaseType And Governor.Base Then
- If UserRecord.Flags And Special.Char2 Then
- Temp2=True
- Endif
- Endif
- If MessageBaseRecord.BaseType And GuildMaster.Base Then
- If UserRecord.Flags And Special.Char3 Then
- Temp2=True
- Endif
- Endif
- If Temp2 Then
- Message.Name=MessageBaseRecord.BaseMessName
- Message.Base.Name=MessageBaseRecord.BaseFileName
- Message.Base.Number=Temp
- Var=True
- Else
- Strng="You can not select message base #"+Mid$(Str$(Temp),2)+"."
- Call IO.O
- Var=False
- Endif
- End Select
- 10091
- Exit Sub
- 10092
- Resume 10091
- End Sub
-
- Sub Edit.Message(Var)
- On Local Error Goto 10102
- Do
- Line.Length=1
- Graphics.Off=False
- Strng="Edit command(?=Help): "
- No.Input.Out="?"
- Call IO.I
- Out2=Ucase$(Out2)
- Select Case Out2
- Case "C"
- Var=-1
- Exit Do
- Case "R"
- Call Replace.Line
- Case "E"
- Call Edit.Line
- Case "D"
- Call Delete.Line
- Case "I"
- Call Insert.Lines
- Case "A"
- Strng="Are you sure(y/n)?"
- No.Input.Out="N"
- Call IO.I
- If Yes Then
- Var=0
- Exit Do
- Endif
- Case "L"
- Call List.Lines
- Case "S"
- Var=1
- Exit Do
- Case "?"
- Stored.Parsed.Command1=Config3(27)
- Call Read.Help(False)
- Case Else
- Strng="Type ? for Help."
- Call IO.O
- End Select
- Loop
- 10101
- Exit Sub
- 10102
- Resume 10101
- End Sub
-
- Sub Store.Message
- On Local Error Goto 10112
- Strng="Storing message."
- Call IO.O
- TableRecord.MessageTime=FNclock$
- Strng=UserRecord.CodeName
- Call Decrypt(Strng)
- TableRecord.MessageFrom=Strng
- TableRecord.MessageKilled="F"
- TableRecord.MessageTo=Message.To
- TableRecord.MessageSubject=Subject
- TableRecord.MessageLength=Message.Length+1
- TableRecord.MessageStart=Lof(16)/Len(MessageRecord)+1
- Put 14,Lof(14)/Len(TableRecord)+1,TableRecord
- Out4=UserRecord.Classname
- Call Decrypt(Out4)
- Out4=Rtrim$(Out4)
- Strng="Stat: "+Out4+" "
- If UserRecord.Flags And Special.Char1 Then
- Strng=Strng+"Town Mayor "
- Endif
- If UserRecord.Flags And Special.Char2 Then
- Strng=Strng+"Governor "
- Endif
- If UserRecord.Flags And Special.Char3 Then
- Strng=Strng+"Guild Master "
- Endif
- If UserRecord.Flags And Special.Char4 Then
- Strng=Strng+"Sysop "
- Endif
- Strng=Left$(Strng,79)
- Strng=Strng+Chr$(1)
- MessageRecord.Message=Strng
- TempX=Lof(16)/Len(MessageRecord)+1
- Put 16,TempX,MessageRecord
- For Temp=1 To Message.Length
- Strng=Temp.ArrayS(Temp)
- Strng=Left$(Strng,79)
- Strng=Strng+Chr$(1)
- MessageRecord.Message=Strng
- TempX=Lof(16)/Len(MessageRecord)+1
- Put 16,TempX,MessageRecord
- Next
- 10111
- Exit Sub
- 10112
- Resume 10111
- End Sub
-
- Sub Bank
- On Local Error Goto 10124
- Static TempG#, Balance.Taken
- If Balance.Taken=False Then
- TempG#=False
- For Temp.User.Index=1 To Lof(3)/Len(UserRecord)
- Get 3,Temp.User.Index,UserRecord
- Strng=UserRecord.CodeName
- Call Decrypt(Strng)
- 10121 If Left$(Strng,9)<>Deleted$ Then
- TempG#=TempG#+UserRecord.Bank
- Endif
- Next
- 10122
- Balance.Taken=True
- Endif
- Get 3,User.Index,UserRecord
- Do While Security.Guard
- Temp$=UserRecord.CodeName
- Call Decrypt(Temp$)
- Temp$=Rtrim$(Temp$)
- Temp$=Lcase$(Temp$)
- Mid$(Temp$,1,1)=Ucase$(Mid$(Temp$,1,1))
- Temp$=Temp$+" > "
- Temp$=Temp$+"Gold:"+Str$(UserRecord.Gold)+" "
- Temp$=Temp$+"Bank:"+Str$(UserRecord.Bank)+" "
- Temp$=Temp$+"Loan:"+Str$(UserRecord.Borrow)
- If Len(Temp$)<57 Then
- Temp$=Temp$+" > Interest Rate:"+Str$(Config1(30)*100)+"%"
- Endif
- Temp$=Left$(Temp$,79)
- Temp$=Temp$+Space$(79-Len(Temp$))
- Call Local.ANSI(2,25,1)
- Temp$=TempD$+Temp$
- Call Display.Status.Line
- Graphics.Off=False
- Strng="The broker asks: What can I do for you?"
- Line.Length=1
- No.Input.Out="?"
- Call IO.I
- Select Case Ucase$(Out2)
- Case "D"
- If UserRecord.Gold<1 Then
- Strng="You have no gold to deposit!"
- Call IO.O
- Else
- Strng="How much(1-"+Mid$(Str$(UserRecord.Gold),2)+")?"
- Call IO.I
- Temp3#=Val(Out2)
- If Temp3#<1 Or Temp3#>UserRecord.Gold Then
- Strng="You don't have that much gold!"
- Call IO.O
- Else
- UserRecord.Bank=UserRecord.Bank+Temp3#
- UserRecord.Gold=UserRecord.Gold-Temp3#
- Put 3,User.Index,UserRecord
- TempG#=TempG#+Temp3#
- Strng="You hand him the gold."
- Call IO.O
- Endif
- Endif
- Case "T"
- If UserRecord.Bank<1 Then
- Strng="You have nothing in your account to transfer!"
- Call IO.O
- Else
- Strng="How much(1-"+Mid$(Str$(UserRecord.Bank),2)+")?"
- Call IO.I
- Temp3#=Val(Out2)
- If Temp3#<1 Or Temp3#>UserRecord.Bank Then
- Strng="You don't have that much gold in the bank!"
- Call IO.O
- Else
- Strng="Transfer to what person?"
- Call IO.I
- Put 3,User.Index,UserRecord
- Out2=Ucase$(Out2)
- Out2=Rtrim$(Out2)
- Temp1=False
- For Temp.User.Index=1 To Lof(3)/Len(UserRecord)
- Get 3,Temp.User.Index,UserRecord
- Strng=UserRecord.CodeName
- Call Decrypt(Strng)
- Strng=Rtrim$(Strng)
- If Strng=Out2 Then
- If User.Index<>Temp.User.Index Then
- Temp1=True
- Exit For
- Endif
- Endif
- Next
- If Temp1=False Then
- Strng="There's nobody in my ledgers with that name!"
- Call IO.O
- Get 3,User.Index,UserRecord
- Else
- UserRecord.Bank=UserRecord.Bank+Temp3#
- Put 3,Temp.User.Index,UserRecord
- Get 3,User.Index,UserRecord
- Strng="The broker works with his ledgers for a while."
- Call IO.O
- Strng=Mid$(Str$(Temp3#),2)+" transferred to his account."
- Call IO.O
- UserRecord.Bank=UserRecord.Bank-Temp3#
- Endif
- Endif
- Endif
- Case "W"
- If UserRecord.Bank<1 Then
- Strng="You have nothing to withdraw!"
- Call IO.O
- Else
- If UserRecord.Borrow>False Then
- Strng="You must pay back your loan first!"
- Call IO.O
- Else
- Strng="How much(1-"+Mid$(Str$(UserRecord.Bank),2)+")?"
- Call IO.I
- Temp3#=Val(Out2)
- If Temp3#<1 Or Temp3#>UserRecord.Bank Then
- Strng="You don't have that much gold!"
- Call IO.O
- Else
- UserRecord.Bank=UserRecord.Bank-Temp3#
- UserRecord.Gold=UserRecord.Gold+Temp3#
- Put 3,User.Index,UserRecord
- TempG#=TempG#-Temp3#
- If TempG#<False Then
- TempG#=False
- Endif
- Strng="The broker hands you the gold."
- Call IO.O
- Endif
- Endif
- Endif
- Case "R"
- If UserRecord.Borrow>False Then
- Strng="You must pay back your loan first!"
- Call IO.O
- Else
- If TempG#=False Then
- Strng="The bank is broke."
- Call IO.O
- Else
- Strng="Are you sure(y/n)?"
- Line.Length=1
- No.Input.Out="N"
- Call IO.I
- If Yes Then
- Strng="You rob the bank!"
- Call IO.O
- If Rnd>.5 Then
- Temp3#=Int((UserRecord.Level*10)+Rnd*5000)
- TempG#=TempG#-Temp3#
- If TempG#<False Then
- TempG#=False
- Endif
- Strng="You steal"+Str$(Temp3#)+" gold from the bank!"
- Call IO.O
- UserRecord.Gold=UserRecord.Gold+Temp3#
- Put 3,User.Index,UserRecord
- Else
- Strng="The broker catches you!"
- Call IO.O
- Strng="The broker hits you for"
- Out3="the broker for robbing the bank"
- Temp#=Int(Rnd*UserRecord.Fatigue+UserRecord.Level*5)
- If Temp#>MaxInt Then
- Temp#=MaxInt
- Endif
- Prefix2=Nul
- Temp2=Cint(Temp#)
- Call Hit.Player(Temp2)
- Exit Sub
- Endif
- Endif
- Endif
- Endif
- Case "B"
- If TempG#<1 Then
- Strng="The broker informs you the bank is broke!"
- Call IO.O
- Else
- Strng="The broker says: The bank has"+Str$(TempG#)+" gold."
- Call IO.O
- If TempG#>MaxInt Then
- TempX=MaxInt
- Else
- TempX=TempG#
- Endif
- If UserRecord.Borrow>=MaxInt Then
- Strng="The broker says: You can't borrow any more!"
- Call IO.O
- Else
- Temp2=TempX-UserRecord.Borrow
- If Temp2>TempX Then
- TempX=Temp2
- Endif
- Strng="How much will you borrow(1-"+Mid$(Str$(TempX),2)+")?"
- Call IO.I
- If Val(Out2)<1 Or Val(Out2)>MaxInt Then
- Strng="The broker says: You can't borrow that much!"
- Call IO.O
- Else
- Temp2=Val(Out2)
- If Temp2>TempX Then
- Strng="The broker says: You can't borrow that much!"
- Call IO.O
- Else
- Strng="The broker hands you the gold."
- Call IO.O
- UserRecord.Gold=UserRecord.Gold+Temp2
- If UserRecord.Borrow+Temp2>MaxInt Then
- UserRecord.Borrow=MaxInt
- Else
- UserRecord.Borrow=UserRecord.Borrow+Temp2
- Endif
- TempG#=TempG#-Temp2
- If TempG#<False Then
- TempG#=False
- Endif
- Endif
- Endif
- Endif
- Endif
- Case "P"
- Graphics.Off=True
- If UserRecord.Borrow<1 Then
- Strng="You don't have any debt with the bank!"
- Call IO.O
- Else
- If UserRecord.Bank>False Then
- Strng="The broker asks: Pay back with your current bank account?"
- Line.Length=1
- No.Input.Out="Y"
- Call IO.I
- If Yes Then
- If UserRecord.Borrow-UserRecord.Bank<1 Then
- UserRecord.Bank=UserRecord.Bank-UserRecord.Borrow
- UserRecord.Borrow=False
- Strng="The broker says: Your loan is paid off!"
- Call IO.O
- Else
- UserRecord.Borrow=UserRecord.Borrow-UserRecord.Bank
- UserRecord.Bank=False
- Strng="The broker says: Your balance paid part of the loan!"
- Call IO.O
- Endif
- Endif
- Endif
- If UserRecord.Borrow>False Then
- If UserRecord.Gold>False Then
- Strng="The broker asks: Pay back with your current gold?"
- Line.Length=1
- No.Input.Out="Y"
- Call IO.I
- If Yes Then
- If UserRecord.Borrow-UserRecord.Gold<1 Then
- UserRecord.Gold=UserRecord.Gold-UserRecord.Borrow
- TempG#=TempG#+UserRecord.Borrow
- UserRecord.Borrow=False
- Strng="The broker says: Your loan is paid off!"
- Call IO.O
- Else
- UserRecord.Borrow=UserRecord.Borrow-UserRecord.Gold
- TempG#=TempG#+UserRecord.Gold
- UserRecord.Gold=False
- Strng="The broker says: Your gold paid part of the loan!"
- Call IO.O
- Endif
- Endif
- Endif
- Endif
- Endif
- Case "A"
- Strng="He fumbles with his ledgers and says:"
- Call IO.O
- Graphics.Off=True
- Strng="The current account interest rate is"+Str$(Config1(30)*100)+"%"
- Call IO.O
- Strng="The current lending interest rate is"+Str$(Config1(10)*100)+"%"
- Call IO.O
- Strng="The bank reports total holdings of"+Str$(TempG#)+" gold."
- Call IO.O
- Strng="You have"+Str$(UserRecord.Gold)+_
- " gold and"+Str$(UserRecord.Bank)+" in the bank."
- Call IO.O
- Strng="You have borrowed"+Str$(UserRecord.Borrow)+_
- " gold from the bank."
- Call IO.O
- Case "Q"
- Put 3,User.Index,UserRecord
- Exit Do
- Case "?"
- Stored.Parsed.Command1=Config3(46)
- Call Read.Help(False)
- Case Else
- Strng="Type ? for Help."
- Call IO.O
- End Select
- Loop
- 10123
- Exit Sub
- 10124
- If Erl=10121 Then
- Resume 10122
- Endif
- Resume 10123
- End Sub
-
- Sub Init.Mail
- On Local Error Goto 10132
- Message.Base.Name=Config3(58)
- Call Open.Mail
- NewMessages.LastMessage=False
- NewMessages.EmptyBuffer=False
- Put 15,User.Index,NewMessages
- Message.Base.Name=Config3(60)
- Call Open.Mail
- NewMessages.LastMessage=False
- NewMessages.EmptyBuffer=False
- Put 15,User.Index,NewMessages
- For Temp3=1 To Lof(10)/Len(MessageBaseRecord)
- Get 10,Temp3,MessageBaseRecord
- Message.Base.Name=MessageBaseRecord.BaseFileName
- Call Open.Mail
- NewMessages.LastMessage=False
- NewMessages.EmptyBuffer=False
- Put 15,User.Index,NewMessages
- Next
- 10131
- Exit Sub
- 10132
- Resume 10131
- End Sub
-
- Sub New.Mail
- On Local Error Goto 10142
- Message.Base.Name=Config3(58)
- Message.Base="public"
- Call Check.Mail
- Message.Base.Name=Config3(60)
- Message.Base="private"
- Call Check.Mail
- Strng="Check all message bases for new mail(y/n)?"
- No.Input.Out="Y"
- Call IO.I
- If Yes Then
- For Temp3=1 To Lof(10)/Len(MessageBaseRecord)
- Get 10,Temp3,MessageBaseRecord
- Message.Base.Name=MessageBaseRecord.BaseFileName
- Message.Base=Rtrim$(MessageBaseRecord.BaseMessName)
- Call Check.Mail
- Next
- Endif
- 10141
- Exit Sub
- 10142
- Resume 10141
- End Sub
-
- Sub Check.Mail
- On Local Error Goto 10152
- Call Open.Mail
- Graphics.Off=True
- Temp5=False
- Strng=UserRecord.CodeName
- Call Decrypt(Strng)
- Get 15,User.Index,NewMessages
- Temp1=NewMessages.LastMessage
- Temp2=Lof(14)/Len(TableRecord)
- If Temp1>False And Temp1<=Temp2 Then
- For Temp4=Temp1 To Temp2
- Get 14,Temp4,TableRecord
- If TableRecord.MessageKilled="F" Then
- If TableRecord.MessageTo=Strng Then
- Temp5=Temp5+1
- Endif
- Endif
- Next
- Endif
- Graphics.Off=True
- Strng=Lcase$(Message.Base)+" message base>"+Str$(Temp5)+" messages."
- Mid$(Strng,1,1)=Ucase$(Mid$(Strng,1,1))
- Call IO.O
- Graphics.Off=False
- 10151
- Exit Sub
- 10152
- Resume 10151
- End Sub
-
- Sub Open.Mail
- On Local Error Goto 10162
- Close 14, 15, 16
- Message.Base.Name=Rtrim$(Message.Base.Name)
- FileName=Config3(54)+Message.Base.Name+".TBL"
- Open FileName For Random Shared As #14 Len=Len(TableRecord)
- FileName=Config3(54)+Message.Base.Name+".NEW"
- Open FileName For Random Shared As #15 Len=Len(NewMessages)
- FileName=Config3(54)+Message.Base.Name+".DAT"
- Open FileName For Random Shared As #16 Len=Len(MessageRecord)
- Call Init.Messages
- 10161
- Exit Sub
- 10162
- Resume 10161
- End Sub
-
- Sub Init.Messages
- On Local Error Goto 10172
- Var=Lof(15)/Len(NewMessages)
- If User.Index>Var Then
- For Var1=Var+1 To User.Index
- NewMessages.LastMessage=False
- NewMessages.EmptyBuffer=False
- Put 15,Var1,NewMessages
- Next
- Endif
- 10171
- Exit Sub
- 10172
- Resume 10171
- End Sub
-
- Sub Replace.Line
- On Local Error Goto 10182
- Strng="Line number(1-"+Mid$(Str$(Message.Length),2)+")?"
- Call IO.I
- Temp=Int(Val(Out2))
- If Temp<1 Or Temp>Message.Length Then
- Strng=Range$
- Call IO.O
- Exit Sub
- Endif
- Strng="Replacement line:"
- Call IO.O
- Line.Length=79
- Strng="?"
- Call IO.I
- Out2=Rtrim$(Out2)
- Out2=Left$(Out2,79)
- Temp.ArrayS(Temp)=Out2
- Strng="Line number"+Str$(Temp)+" replaced."
- Call IO.O
- 10181
- Exit Sub
- 10182
- Resume 10181
- End Sub
-
- Sub Edit.Line
- On Local Error Goto 10192
- Strng="Line number(1-"+Mid$(Str$(Message.Length),2)+")?"
- Call IO.I
- Temp=Int(Val(Out2))
- If Temp<1 Or Temp>Message.Length Then
- Strng=Range$
- Call IO.O
- Exit Sub
- Endif
- Strng="Replace what word?"
- Call IO.I
- Temp$=Out2
- If No.Input Then
- Strng="No changes made."
- Call IO.O
- Exit Sub
- Endif
- Strng="Replace with what word?"
- Call IO.I
- Temp2$=Out2
- If No.Input Or Temp$=Temp2$ Then
- Strng="No changes made."
- Call IO.O
- Exit Sub
- Endif
- Temp2=False
- Temp1=Instr(Temp.ArrayS(Temp),Temp$)
- Do While Temp1
- If Temp2=1 Then
- Strng="Replace all occurences?"
- No.Input.Out="Y"
- Call IO.I
- If No Then
- Exit Do
- Endif
- Endif
- Temp.ArrayS(Temp)=Left$(Temp.ArrayS(Temp),Temp1-1)+_
- Temp2$+Mid$(Temp.ArrayS(Temp),Temp1+Len(Temp$))
- Temp.ArrayS(Temp)=Left$(Temp.ArrayS(Temp),79)
- Temp2=Temp2+1
- Temp1=Instr(Temp.ArrayS(Temp),Temp$)
- Loop
- If Temp2 Then
- Strng=Mid$(Str$(Temp2),2)+" changes made."
- Else
- Strng="No changes made."
- Endif
- Call IO.O
- 10191
- Exit Sub
- 10192
- Resume 10191
- End Sub
-
- Sub Delete.Line
- On Local Error Goto 10202
- Strng="From line number(1-"+Mid$(Str$(Message.Length),2)+")?"
- Call IO.I
- Temp=Int(Val(Out2))
- If Temp<1 Or Temp>Message.Length Then
- Strng=Range$
- Call IO.O
- Exit Sub
- Endif
- Strng="To line number("+Mid$(Str$(Temp),2)+"-"+_
- Mid$(Str$(Message.Length),2)+")?"
- Call IO.I
- Temp2=Int(Val(Out2))
- If Temp2<Temp Or Temp2>Message.Length Then
- Strng=Range$
- Call IO.O
- Exit Sub
- Endif
- For Temp3=1 To Temp2-Temp+1
- Message.Length=Message.Length-1
- For Temp1=Temp To Message.Length
- Temp.ArrayS(Temp1)=Temp.ArrayS(Temp1+1)
- Next
- Next
- If Message.Length=False Then
- Strng="No message left."
- Call IO.O
- Exit Sub
- Endif
- Strng="Line numbers"+Str$(Temp)+" to"+Str$(Temp2)+" deleted."
- Call IO.O
- 10201
- Exit Sub
- 10202
- Resume 10201
- End Sub
-
- Sub Insert.Lines
- On Local Error Goto 10212
- If Message.Length>18 Then
- Strng="Message buffer full."
- Call IO.O
- Exit Sub
- Endif
- Strng="Before line number(1-"+Mid$(Str$(Message.Length),2)+")?"
- Call IO.I
- Temp=Int(Val(Out2))
- If Temp<1 Or Temp>Message.Length Then
- Strng=Range$
- Call IO.O
- Exit Sub
- Endif
- Graphics.Off=True
- Do While Message.Length<19
- Word.Wrap=True
- Strng="?"
- Call IO.I
- Word.Wrap=False
- If No.Input Then
- Exit Do
- Endif
- For Temp1=Message.Length To Temp Step -1
- Temp.ArrayS(Temp1+1)=Temp.ArrayS(Temp1)
- Next
- Out2=Rtrim$(Out2)
- Out2=Left$(Out2,79)
- Temp.ArrayS(Temp)=Out2
- Temp=Temp+1
- Message.Length=Message.Length+1
- Loop
- Graphics.Off=False
- If Message.Length=19 Then
- Strng="Message buffer full."
- Call IO.O
- Endif
- 10211
- Exit Sub
- 10212
- Resume 10211
- End Sub
-
- Sub List.Lines
- On Local Error Goto 10222
- Line.Length=1
- No.Input.Out="Y"
- Strng="Display line numbers(y/n)?"
- Call IO.I
- If Yes Then
- TempX=True
- Else
- TempX=False
- Endif
- Graphics.Off=True
- For Temp=1 To Message.Length
- Strng=Nul
- If TempX Then
- Strng=Right$(Str$(Temp+10),1)+":"
- Endif
- Strng=Strng+Temp.ArrayS(Temp)
- Strng=Left$(Strng,79)
- Call IO.O
- Next
- 10221
- Exit Sub
- 10222
- Resume 10221
- End Sub
-