home *** CD-ROM | disk | FTP | other *** search
- Rem dndbbs.bas v2.9c
- Rem $Include: 'dndbbs.inc'
-
- Randomize Timer
- On Error Goto 10002
- If Chained=False Then
- Call Get.Command
- Call Read.Config
- Call Init.Driver
- Else
- Chained=False
- Local.Mode=Remote
- Call Get.Config
- Call Open.Files
- Call Read.Data
- If Shelled Then
- Get 3,User.Index,UserRecord
- Call Status.Line(1)
- Endif
- Endif
- Do
- If Shelled=False Then
- If Relogging=False Then
- Call Clear.Screen
- Call Open.Modem
- Endif
- Relogging=False
- Call Login
- If Logged.In Then
- Call Get.User.Record
- Call Status.Line(1)
- Endif
- Endif
- Shelled=False
- Rust.Rate=False
- Steal.Rate=False
- Monster.Rate1=False
- Room.Rate=False
- Do While Security.Guard
- Call Check.Next.Room
- Monster.Rate1=False
- Call Encounter.Permanent
- If Config2(55) Then
- Call Encounter.User
- Endif
- Out2=UserRecord.CodeName
- Call Decrypt(Out2)
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- Out2=Out2+" just entered the room."
- Call Send.Mess(8,False,Room,Out2)
- Call Display.Room
- New.Room=False
- Do While Not New.Room And Security.Guard
- Call Main.Loop.Update
- If Wait.Mode Then
- Call Wait.Loop
- Endif
- If Auto.Mode Then
- Call Auto.Loop
- Endif
- If Follow.Mode Then
- Call Follow.Player
- Endif
- If New.Room=False Then
- Call Command.Loop
- Endif
- Loop
- Loop
- If Logged.In Then
- Call Status.Line(-2)
- If OutZ<>Nul Then
- If Node>False Then
- OutZ=OutZ+" (Node "+Chr$(Node)+")"
- Endif
- Call Send.Mess(4,False,False,OutZ)
- Call Update.DayFile(OutZ,True)
- Endif
- Call Update.Mess(True)
- Call Put.User.Record
- Call Clean.Room
- Call Update.LastUser
- Endif
- If Node<False Then
- Exit Do
- Endif
- Strng=Nul
- Call IO.O
- If Config2(75) Then
- Call Time.Online
- Call IO.O
- Call More.Prompt
- Endif
- If Config2(76) Then
- Call Top.Ten
- Call IO.O
- Endif
- If Config2(77) Then
- Call Out.File(Logoff.FileName)
- Strng=Nul
- Call IO.O
- Endif
- If Config2(78) Then
- Strng="Press "+Enter$+" to exit the adventure:"
- No.Echo=True
- Line.Length=1
- Call IO.I
- No.Echo=False
- Call IO.O
- Endif
- If Relogging=False Then
- If Config2(47) Then
- Strng2="the BBS"
- If Len(BBS.Name) Then
- Strng2=BBS.Name
- Endif
- Strng="Returning you to "+Strng2+", please wait.."
- Call IO.O
- Exit Do
- Endif
- If Bypass.Screen Or Bypass.Login Then
- Exit Do
- Endif
- Endif
- Loop
- 10001
- Call Clear.Screen
- End
- 10002
- Resume 10001
-
- Sub Main.Loop.Update
- On Local Error Goto 10012
- Call Sorter
- Call Health.Update
- Call Rust.Weapon
- Call Steal.Treasure
- Call New.Stats
- If Number.Monsters Then
- Call Monster.Attack
- Endif
- If Config2(55) Then
- If Number.Users Then
- Call User.Attack
- Endif
- Endif
- Call Encounter.Monster
- Call Set.Clock
- Call Read.Mess
- If Len(Func.Buffer) Then
- TempX=Asc(Func.Buffer)
- Func.Buffer=Nul
- Call Function.Key(TempX)
- Endif
- If Room.Rate=False Then
- Call Status.Line(False)
- Endif
- 10011
- Exit Sub
- 10012
- Resume 10011
- End Sub
-
- Sub Wait.Loop
- On Local Error Goto 10022
- Allow.Break=True
- Auto.Break=False
- Do While Not New.Room And Security.Guard
- Call Pause.Second
- If Auto.Break Then
- Exit Do
- Endif
- Hidden.Player=True
- If Room.Rate=False Then
- For Count=1 To Int(Rnd*3+1)
- If Number.Monsters=False Then
- Exit For
- Endif
- If Rnd>.5 Then
- Monster.Temp=1
- Out3=MonsterArray(1).MonsterName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Strng="The "+Out3+" leaves the room."
- Call IO.O
- Call Remove.Monster
- Endif
- Next
- Endif
- Call Main.Loop.Update
- Loop
- Allow.Break=False
- Wait.Mode=False
- Auto.Mode=False
- 10021
- Exit Sub
- 10022
- Resume 10021
- End Sub
-
- Sub Auto.Loop
- On Local Error Goto 10032
- Allow.Break=True
- Auto.Break=False
- Do While Not New.Room And Security.Guard
- Call Pause.Second
- If Auto.Break Then
- Exit Do
- Endif
- If UserRecord.Level<=False Then
- Call Train.Stats
- Endif
- If UserRecord.Experience<=False Then
- UserRecord.Experience=False
- Call Gold(Temp#)
- If UserRecord.Gold>=Temp# Then
- Call Train.Stats
- Endif
- Endif
- If UserRecord.Magic<UserRecord.MagicMax/4 Then
- Strng="You cast an enchant spell!"
- Call IO.O
- UserRecord.Magic=Cint(UserRecord.Magic+Config2(23)*UserRecord.Level)
- Call New.Stats
- Strng=Str$(UserRecord.Magic)
- Strng="You now have"+Strng+" magic points!"
- Endif
- If UserRecord.Fatigue<UserRecord.FatigueMax/4 Then
- Strng="You cast a vigor spell!"
- Call IO.O
- UserRecord.Fatigue=Cint(UserRecord.Fatigue+Config2(21)*UserRecord.Level)
- Call New.Stats
- Strng=Str$(UserRecord.Fatigue)
- Strng="You now have"+Strng+" fatigue points!"
- Endif
- If UserRecord.Vitality<UserRecord.VitalityMax/4 Then
- Strng="You cast a heal spell!"
- Call IO.O
- UserRecord.Vitality=Cint(UserRecord.Vitality+_
- Config2(22)*UserRecord.Level)
- Call New.Stats
- Strng=Str$(UserRecord.Vitality)
- Strng="You now have"+Strng+" vitality points!"
- Call IO.O
- Endif
- Temp6=False
- For Temp5=1 To Room.Treasure.Max
- If Room.Inventory(Temp5) Then
- Get 8,Room.Inventory(Temp5),TreasureRecord
- If TreasureRecord.Coin Then
- UserRecord.Gold=UserRecord.Gold+TreasureRecord.Gold
- Strng="You pick up"+Str$(TreasureRecord.Gold)+" Gold!"
- Call IO.O
- Temp6=True
- Exit For
- Endif
- Endif
- Next
- If Temp6 Then
- Call Discard.Inventory(Temp5)
- Endif
- Temp6=False
- For Temp5=1 To Room.Treasure.Max
- If Room.Inventory(Temp5) Then
- Get 8,Room.Inventory(Temp5),TreasureRecord
- Out3=TreasureRecord.TreasureName
- Out3=Rtrim$(Out3)
- If TreasureRecord.Type<False Then
- If Abs(TreasureRecord.Plus)>Weapon3 Then
- Weapon3=Abs(TreasureRecord.Plus)
- Weapon5=Number.Inventory+1
- Temp6=True
- Exit For
- Endif
- Endif
- If TreasureRecord.Type=False Then
- If Abs(TreasureRecord.Plus)>Weapon2 Then
- Weapon2=Abs(TreasureRecord.Plus)
- Weapon6=Number.Inventory+1
- Weapon10=TreasureRecord.Proficiency
- Temp6=True
- Exit For
- Endif
- Endif
- If TreasureRecord.Type>False Then
- If TreasureRecord.RingType Then
- If Weapon7=False Then
- Weapon7=Number.Inventory+1
- Weapon8=TreasureRecord.RingType
- Weapon9=TreasureRecord.RingSpell
- Temp6=True
- Exit For
- Endif
- Else
- If Abs(TreasureRecord.Plus)>Weapon1 Then
- Weapon1=Abs(TreasureRecord.Plus)
- Weapon4=Number.Inventory+1
- Temp6=True
- Exit For
- Endif
- Endif
- Endif
- Endif
- Next
- If Temp6 Then
- Temp8=Room.Inventory(Temp5)
- Temp9=Room.Inventory.Charges(Temp5)
- Call Add.Inventory(Temp8,Temp9)
- Call Discard.Inventory(Temp5)
- Strng="You pick up "+Out3+"."
- Call IO.O
- Strng="You use "+Out3+"."
- Call IO.O
- Endif
- For Count=1 To Int(Rnd*3+2)
- If Number.Monsters=False Then
- Exit For
- Endif
- Monster.Temp=1
- TempA=False
- TempB=False
- Out3=MonsterArray(1).MonsterName
- Out3=Rtrim$(Out3)
- Out3=Ucase$(Out3)
- TempA=Instr(TempA+1,Out3," ")
- While TempA
- TempB=TempA
- TempA=Instr(TempA+1,Out3," ")
- Wend
- Last.Monster=Mid$(Out3,TempB+1)
- Parsed.Command1=Last.Monster
- Last.Command.Type=False
- Last.Command.Number=55
- Call Attack.Monster
- Next
- Call Main.Loop.Update
- Loop
- Allow.Break=False
- Wait.Mode=False
- Auto.Mode=False
- 10031
- Exit Sub
- 10032
- Resume 10031
- End Sub
-
- Sub Command.Loop
- On Local Error Goto 10042
- Graphics.Off=False
- Strng=Action.Prompt
- Call IO.I
- Out2=Ltrim$(Out2)
- If Out2="?" Then
- Graphics.Off=True
- Strng="Type Hint, or Help for short help on commands, or"
- Call IO.O
- Strng="else type Catalog, or Commands for additional help on commands."
- Call IO.O
- Graphics.Off=False
- Exit Sub
- Endif
- If Left$(Out2,Len(Config3(9)))=Config3(9) Then
- Sysop.Command=True
- Endif
- If Sysop.Command Then
- If Normal.User Then
- Sysop.Command=False
- Strng="That command is reserved for DMs only!"
- Call IO.O
- Last.Command="<illegal>"
- Call Update.Mess(4)
- Exit Sub
- Endif
- If Len(Out2)<=Len(Config3(9)) Then
- Sysop.Command=False
- Strng="That DM command is reserved for Sysops only!"
- Call IO.O
- Last.Command="<illegal>"
- Call Update.Mess(4)
- Exit Sub
- Endif
- If Disable.DM Then
- Sysop.Command=False
- Strng="All DM commands currently disabled."
- Call IO.O
- Last.Command="<illegal>"
- Call Update.Mess(4)
- Exit Sub
- Endif
- Endif
- Stored.Parsed.Command1=Out2
- Out2=Ucase$(Out2)
- Stored.Parsed.Command2=Out2
- For Var=1 To 70
- Var$=" "+Rtrim$(Strip.Data(Var))+" "
- Var2=Instr(Out2,Var$)
- Do While Var2
- Out2=Left$(Out2,Var2-1)+Mid$(Out2,Var2+Len(Var$)-1)
- Var2=Instr(Out2,Var$)
- Loop
- Next
- If Left$(Out2,Len(Config3(10)))=Config3(10) Then
- User.Command=Previous.Command1
- Stored.Parsed.Command1=Previous.Command2
- Stored.Parsed.Command2=Previous.Command3
- Else
- User.Command=Out2
- Previous.Command1=User.Command
- Previous.Command2=Stored.Parsed.Command1
- Previous.Command3=Stored.Parsed.Command2
- Endif
- If User.Command=Nul Then
- Last.Command=Enter$
- Call Update.Mess(4)
- Exit Sub
- Endif
- Magic.Spell=False
- Temp.Command=User.Command
- If Instr(Temp.Command," ") Then
- Temp.Command=Left$(Temp.Command,Instr(Temp.Command," ")-1)
- Endif
- Parser=Instr(User.Command," ")
- If Parser=False Then
- If Sysop.Command Then
- Call DM.Command1
- Else
- Call User.Command1
- Endif
- Else
- Parsed.Command1=Mid$(User.Command,Parser+1)
- Parsed.Command2=Parsed.Command1
- Stored.Parsed.Command1=Mid$(Stored.Parsed.Command1,_
- Instr(Stored.Parsed.Command1," ")+1)
- Stored.Parsed.Command2=Mid$(Stored.Parsed.Command2,_
- Instr(Stored.Parsed.Command2," ")+1)
- Call Numeric
- If Sysop.Command Then
- Call DM.Command2
- Else
- Call User.Command2
- Endif
- Endif
- 10041
- Exit Sub
- 10042
- Resume 10041
- End Sub
-
- Sub DM.Command1
- On Local Error Goto 10052
- TempQ=False
- Temp.Command=Mid$(Temp.Command,Len(Config3(9))+1)
- For Last.Command.Number=1 To 9
- Strng=Sysop.Commands1(Last.Command.Number)
- Strng=Rtrim$(Strng)
- If Instr(Strng,Temp.Command)=1 Then
- TempQ=Last.Command.Number
- OutX$=Strng
- Exit For
- Endif
- Next
- If TempQ=False Then
- Strng="Unknown command!"
- Call IO.O
- Last.Command="<unknown>"
- Call Update.Mess(4)
- Exit Sub
- Endif
- Last.Command=OutX$
- Call Update.Mess(4)
- Last.Command.Type=True
- Last.Command.Number=TempQ
- Select Case TempQ
- Case 1
- Call Abort
- Case 2
- Call DM.Send
- Case 3
- Call Call.Monster
- Case 4
- Call Shell.Program("edit.exe",Local.Mode,True)
- Case 5
- Stored.Parsed.Command1=Config3(47)
- Call Read.Help(True)
- Case 6
- Call Invisibility
- Case 7
- Call Link.Room
- Case 8
- Call DM.Noid
- Case 9
- Call Display.Memory
- End Select
- 10051
- Exit Sub
- 10052
- Resume 10051
- End Sub
-
- Sub User.Command1
- On Local Error Goto 10062
- If User.Command="OU" Then
- User.Command="O"
- Endif
- If User.Command="OUT" Then
- User.Command="O"
- Endif
- Call Get.Direction
- If TempA Then
- Call Go.Direction
- Exit Sub
- Endif
- TempQ=False
- For Last.Command.Number=1 To 83
- Last.Command=Rtrim$(Command.Set1(Last.Command.Number,2))
- If Len(Temp.Command)=2 Then
- Strng=Rtrim$(Command.Set1(Last.Command.Number,1))
- If Temp.Command=Left$(Strng,Len(Temp.Command)) Then
- TempQ=Last.Command.Number
- Exit For
- Endif
- Endif
- TempX=1
- Do
- TempX=TempX+1
- Strng=Rtrim$(Command.Set1(Last.Command.Number,TempX))
- If Strng="<>" Or Strng="<eol>" Then
- Exit Do
- Endif
- If Len(Temp.Command)=1 Then
- If TempX=2 Then
- If Left$(Strng,1)=Temp.Command Then
- TempQ=Last.Command.Number
- Exit Do
- Endif
- Endif
- Else
- If Temp.Command=Left$(Strng,Len(Temp.Command)) Then
- TempQ=Last.Command.Number
- Exit For
- Endif
- Endif
- Loop Until TempX=5
- Next
- If TempQ=False Then
- Graphics.Off=True
- Strng="Unknown command!"
- Call IO.O
- If UserRecord.Brief=False Then
- Strng="Type ? for Help.."
- Call IO.O
- Endif
- Graphics.Off=False
- Last.Command="<unknown>"
- Call Update.Mess(4)
- Exit Sub
- Endif
- Call Update.Mess(4)
- Last.Command.Type=True
- Last.Command.Number=TempQ
- Select Case TempQ
- Case 1, 2, 3, 4
- Parsed.Command1=Last.Monster
- Last.Command.Type=False
- Last.Command.Number=55
- Call Attack.Monster
- Case 5, 6
- Call Display.Room
- Case 7, 8
- Call Panic
- Case 9
- Call Search.Room
- Case 10,51
- Call Put.User.Record
- Strng="Player file updated."
- Call IO.O
- Case 11
- Call Display.Stats
- Case 12
- Call Display.Inventory
- Case 13
- Call Suicide
- Case 14
- Call Train
- Case 15
- Call Display.Health
- Case 16
- Call Appeal
- Case 17, 18, 19, 20
- Call Quit
- Case 21
- Call Display.Experience
- Case 22
- Stored.Parsed.Command1=Config3(48)
- Call Read.Help(False)
- Case 23
- Call Hide.User
- Case 24
- Call Cast.Spell(True)
- Case 25
- Call Weapon.List
- Case 26
- Call Brief.Mode
- Case 27
- Call Goto.Bank
- Call Status.Line(1)
- Case 28, 29, 30
- Call Time.Online
- Case 31
- Wait.Mode=True
- Strng="Wait mode. Press Control-K to interrupt."
- Call IO.O
- Case 32
- Auto.Mode=True
- Strng="Auto mode. Press Control-K to interrupt."
- Call IO.O
- Case 33
- Call Get.ANSI
- Case 34
- Call Get.Graphics
- Case 35
- Call Lose.Player
- Case 36
- If Normal.User Then
- If UserRecord.ClassType<>6 Then
- Strng="Only rangers can use this command!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Follow.Mode=True
- Case 37
- If Normal.User Then
- If UserRecord.ClassType<>5 Then
- Strng="Only paladins can use this command!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Follow.Mode=True
- Case 38
- If Normal.User Then
- If UserRecord.ClassType<>5 Then
- Strng="Only paladins can use this command!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Follow.Mode=True
- Case 39
- Parsed.Command1=Last.Monster
- Last.Command.Type=False
- Last.Command.Number=39
- Call Attack.Monster
- Case 40
- Parsed.Command1=Last.Monster
- Last.Command.Type=False
- Last.Command.Number=40
- Call Attack.Monster
- Case 41
- Call Put.User.Record
- Call Top.Ten
- Case 42
- Call Bless.Self
- Case 43
- Call Curse.Self
- Case 44
- Call Change.PassWord
- Call Put.User.Record
- Case 45
- Call Mail
- Call Open.Files
- Call Status.Line(1)
- Case 46
- Call Put.User.Record
- Call User.List
- Case 47
- Call Page.Sysop
- Case 48, 49
- Call Exit.Room
- Case 50
- Call Climb
- Case 52, 53
- Call Relogin
- Case 54
- Call Read.DayFile(True)
- Case 55
- Call Last.User
- Case 56
- Call Out.File(Catalog.FileName)
- Case 57, 58, 59, 60
- Call Attack.Monster
- Case 61
- Call Align
- Case 62
- Call Read.Status
- Case 63
- Call Toggle.Echo
- Case 64 To 74
- TempA=TempQ-63
- Call Go.Direction
- Case 75
- Call Whos.On
- Case 76
- Call Out.File(Hint.FileName)
- Case 77
- Call Sort.Inventory
- Case 78
- Call Out.File(Summary.FileName)
- Case 79
- Call Read.DayFile(False)
- Case 80, 81
- Call Accept.Offer
- Case 83
- Call Reroll.Character
- End Select
- 10061
- Exit Sub
- 10062
- Resume 10061
- End Sub
-
- Sub DM.Command2
- On Local Error Goto 10072
- TempQ=False
- Temp.Command=Mid$(Temp.Command,Len(Config3(9))+1)
- For Last.Command.Number=1 To 9
- Strng=Sysop.Commands2(Last.Command.Number)
- Strng=Rtrim$(Strng)
- If Instr(Strng,Temp.Command)=1 Then
- TempQ=Last.Command.Number
- OutX$=Strng
- Exit For
- Endif
- Next
- If TempQ=False Then
- Strng="Unknown command!"
- Call IO.O
- Last.Command="<unknown>"
- Call Update.Mess(4)
- Exit Sub
- Endif
- Last.Command=OutX$
- Call Update.Mess(4)
- Last.Command.Type=True
- Last.Command.Number=TempQ
- Select Case TempQ
- Case 1
- Call Abort.Node
- Case 2
- Call Summon.Monster
- Case 3
- Call Discard.Object
- Case 4
- VarX=Val(Parsed.Command1)
- If VarX>False And VarX<=Lof(5)/Len(RoomRecord) Then
- Call Edit.Room(VarX)
- Call Add.Monclass(VarX)
- Endif
- Case 5
- Call Drop.Object
- Case 6
- Call DM.Help
- Case 7
- Call Kill.Monster
- Case 8
- Call Reduce.Monsters
- Case 9
- Call Teleport.User
- End Select
- 10071
- Exit Sub
- 10072
- Resume 10071
- End Sub
-
- Sub User.Command2
- On Local Error Goto 10082
- TempQ=False
- For Last.Command.Number=1 To 83
- Last.Command=Rtrim$(Command.Set2(Last.Command.Number,2))
- If Len(Temp.Command)<=2 Then
- Strng=Rtrim$(Command.Set2(Last.Command.Number,1))
- If Temp.Command=Left$(Strng,Len(Temp.Command)) Then
- TempQ=Last.Command.Number
- Exit For
- Endif
- Endif
- TempX=1
- Do
- TempX=TempX+1
- Strng=Rtrim$(Command.Set2(Last.Command.Number,TempX))
- If Strng="<>" Or Strng="<eol>" Then
- Exit Do
- Endif
- If Len(Temp.Command)=1 Then
- If TempX=2 Then
- If Left$(Strng,1)=Temp.Command Then
- TempQ=Last.Command.Number
- Exit For
- Endif
- Endif
- Else
- If Temp.Command=Left$(Strng,Len(Temp.Command)) Then
- TempQ=Last.Command.Number
- Exit For
- Endif
- Endif
- Loop Until TempX=5
- Next
- If TempQ=False Then
- Graphics.Off=True
- Strng="Unknown command!"
- Call IO.O
- If UserRecord.Brief=False Then
- Strng="Type ? for Help.."
- Call IO.O
- Endif
- Graphics.Off=False
- Last.Command="<unknown>"
- Call Update.Mess(4)
- Exit Sub
- Endif
- Call Update.Mess(4)
- Last.Command.Type=False
- Last.Command.Number=TempQ
- Select Case TempQ
- Case 1, 2
- Call Enter.Object
- Case 3, 4, 5
- Call Display.Information
- Case 6
- Call Cast.Spell(False)
- Case 7, 8
- If Instr(Parsed.Command2," ") Then
- Call Take.From.Receptacle
- Else
- Call Take.Object
- Endif
- Case 9, 10
- If Instr(Parsed.Command2," ") Then
- Call Drop.Into.Receptacle
- Else
- Call Drop.Item
- Endif
- Case 11, 12
- Call Pawn.Shop
- Case 13, 14
- Call Smash.Object
- Case 15
- Call Close.Object
- Case 16
- Call Open.Object
- Case 17, 18, 19
- Call Hold.Object
- Case 20
- Call Wear.Object
- Case 21
- Call Return.Object
- Case 22
- Call Cast.Spell(True)
- Case 23
- Call Weapons.Shoppe
- Case 24
- Call Lock.Object
- Case 25, 26
- Call Unlock.Object
- Case 27
- Call Fix.Object
- Case 28
- Call Weapons.Shop
- Case 29
- Call Alchemist
- Case 30
- Call Drink.Potion
- Case 31
- If Normal.User Then
- If UserRecord.ClassType<>6 Then
- Strng="Only rangers can use this command!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Follow.Mode=True
- Case 32
- Call Throw.Object
- Case 33
- Call Steal.Object
- Case 34
- Call Give.Object
- Case 35
- Call Bless.Object
- Case 36
- Call Curse.Object
- Case 38
- Call Send.Message
- Case 39
- Call Send.Mess(2,False,True,Stored.Parsed.Command1)
- Case 40, 41
- Call Talk.To.Monster
- Case 42, 43
- Call Offer
- Case 44
- Call Load.Object
- Case 45
- Call Fire.Object
- Case 46
- Call Enter.Vehicle
- Case 48, 73, 74
- Call Ride.Vehicle
- Case 49
- If Instr(Parsed.Command2," ") Then
- Call Drop.Into.Receptacle
- Else
- Call Drop.Item
- Endif
- Case 50
- Call Search.Object
- Case 51
- Call Read.Help(False)
- Case 52
- Call Identify
- Case 53
- Call Whisper
- Case 54
- Call Send.Mess(3,False,Room,Stored.Parsed.Command1)
- Case 55 To 70, 82, 83
- Call Attack.Monster
- Case 71
- Call Psi.Mode
- Case 72
- Call Eat.Object
- Case 75, 78, 79
- Call Move.Object
- Case 76
- Call Launch.Object
- Case 77
- Call Learn.Spell
- Case 47, 80, 81
- Call Exit.Vehicle
- End Select
- 10081
- Exit Sub
- 10082
- Resume 10081
- End Sub
-
- Sub Relogin
- On Local Error Goto 10092
- If UserRecord.Level<Config2(67) Or Config2(67)=False Then
- Strng="You can't relogin in now!"
- Call IO.O
- Exit Sub
- Endif
- Call Update.Mess(2)
- OutZ="relogged in"
- 10091
- Relogging=True
- Security.Guard=False
- Exit Sub
- 10092
- Resume 10091
- End Sub
-
- Sub Suicide
- On Local Error Goto 10102
- Strng="Are you sure you want to commit suicide(y/n)?"
- No.Input.Out="N"
- Call IO.I
- If Yes Then
- Graphics.Off=True
- Strng="Your character falls into deep sleep.."
- Call IO.O
- Strng="The Ghods take your player to another world.."
- Call IO.O
- Graphics.Off=False
- OutZ="committed suicide"
- If Node>False Then
- OutZ=OutZ+" (Node "+Chr$(Node)+")"
- Endif
- Call Send.Mess(4,False,False,OutZ)
- Call Update.DayFile(OutZ,True)
- OutZ=Nul
- For Temp5=1 To 15
- UserRecord.Inv(Temp5)=False
- UserRecord.Charges(Temp5)=False
- Next
- For Temp5=1 To 5
- UserRecord.Object(Temp5)=False
- UserRecord.ObjCharges(Temp5)=False
- Next
- 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
- UserRecord.Flags=False
- Call Update.Mess(3)
- Security.Guard=False
- Endif
- 10101
- Exit Sub
- 10102
- Resume 10101
- End Sub
-
- Sub Quit
- On Local Error Goto 10112
- Graphics.Off=True
- If Config2(74) Then
- Strng="Are you sure(y/n)?"
- No.Input.Out="N"
- Call IO.I
- Endif
- If Yes Or Config2(74)=False Then
- Call Update.Mess(3)
- OutZ="logged off"
- Security.Guard=False
- Endif
- 10111
- Exit Sub
- 10112
- Resume 10111
- End Sub
-
- Sub Abort
- On Local Error Goto 10122
- If Node>False Then
- Strng="Abort all nodes(y/n)?"
- Else
- Strng="Are you sure(y/n)?"
- Endif
- No.Input.Out="N"
- Call IO.I
- If Yes Then
- Call Send.Mess(12,False,False,"Abort")
- Strng="Program task abort!"
- Call IO.O
- Call Update.Mess(True)
- OutZ="aborted program"
- Node=True
- Call Drop.DTR
- Lost.Carrier=True
- Security.Guard=False
- Endif
- 10121
- Exit Sub
- 10122
- Resume 10121
- End Sub
-
- Sub Abort.Node
- On Local Error Goto 10124
- TempC=Val(Parsed.Command1)
- If TempC=False Then
- Call Search.Mess(False)
- TempC=TempC-1
- If Temp=False Then
- TempC=False
- Endif
- Endif
- If TempC>=1 And TempC<=36 Then
- Strng="Abort node"+Str$(TempC)+", are you sure(y/n)?"
- No.Input.Out="N"
- Call IO.I
- If Yes Then
- Call Send.Mess(14,TempC,False,"Abort")
- Endif
- Endif
- 10123
- Exit Sub
- 10124
- Resume 10123
- End Sub
-
- Sub Traps
- On Local Error Goto 10132
- New.Room=False
- Temp2=ObjectRecord.Trap
- If Temp>=1 And Temp2<=3 Then
- If Rnd<.5 Then
- Strng="It's trapped! "
- Select Case ObjectRecord.Trap
- Case 1
- Strng=Strng+"Poison needles!"
- Call IO.O
- UserRecord.Poison=True
- Case 2
- Strng=Strng+"Falling door!"
- Call IO.O
- Pass.Door=False
- Number.Monsters=False
- Next.Room=ObjectRecord.Teleport
- Call Teleport
- Call Enter.Room
- Case 3
- Strng=Strng+"Deadly spears!"
- Call IO.O
- Prefix2=Nul
- Strng="You are hit for"
- Out3="some deadly spears"
- Temp2=ObjectRecord.Teleport
- If Temp2 Then
- Call Hit.Player(Temp2)
- Endif
- End Select
- Out2=UserRecord.CodeName
- Call Decrypt(Out2)
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- Out2=Out2+" was just hit by a trap."
- Call Send.Mess(8,False,Room,Out2)
- Endif
- Endif
- 10131
- Exit Sub
- 10132
- Resume 10131
- End Sub
-
- Sub Enter.Object
- On Local Error Goto 10142
- User.Command=Parsed.Command1
- Call Get.Direction
- If TempA Then
- Call Verify.Room
- If New.Room Then
- Call Enter.Room
- Endif
- Exit Sub
- Endif
- Call Check.Room.Objects
- If Temp7=False Then
- Call Check.Room.Treasure
- If Temp7 Then
- If TreasureRecord.Vehicle Then
- Call Enter.Vehicle
- Exit Sub
- Endif
- Endif
- Strng="You can't go there!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.RoomLink=False Then
- Strng="You can't go there!"
- Call IO.O
- Exit Sub
- Endif
- Call Restrict(12)
- If TempB Then
- Strng="Your level does not permit entrance to that room!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.JailTrap Then
- Strng="Trapped portal!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.Closed Then
- If Pass.Door=False Then
- Strng="You can't, it's closed!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- If ObjectRecord.Relocks Then
- ObjectRecord.DoorLock=2
- ObjectRecord.Closed=True
- Put 6,Temp7,ObjectRecord
- Endif
- Strng=ObjectRecord.ShortDesc
- If Strng<>String$(40,0) Then
- Strng=Rtrim$(Strng)
- If Strng<>Nul Then
- Call IO.O
- Endif
- Endif
- If ObjectRecord.Trap Then
- Call Traps
- If New.Room Then
- Exit Sub
- Endif
- Endif
- Pass.Door=False
- Number.Monsters=False
- Next.Room=ObjectRecord.RoomLink
- Out2=UserRecord.CodeName
- Call Decrypt(Out2)
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- Out2=Out2+" just went to the "
- Strng=ObjectRecord.ShortName
- Strng=Rtrim$(Strng)
- Strng=Lcase$(Strng)
- Out2=Out2+Strng+"."
- Call Send.Mess(8,False,Room,Out2)
- Call Enter.Room
- 10141
- Exit Sub
- 10142
- Resume 10141
- End Sub
-
- Sub Drop.Item
- On Local Error Goto 10152
- If Normal.User=False Then
- Call Find.Object
- If Temp7 Then
- Strng="You drop "+Out3+"!"
- Call IO.O
- Call Discard(Temp5,True)
- For Temp3=1 To 10
- If RoomRecord.Object(Temp3)=False Then
- RoomRecord.Object(Temp3)=Temp7
- RoomRecord.ObjCharges(Temp3)=Temp6
- Put 5,Room,RoomRecord
- Exit Sub
- Endif
- Next
- Strng="It rolled away!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Call Find.Inventory
- If Temp7=False Then
- Strng="You can't drop that!"
- Call IO.O
- Exit Sub
- Endif
- If Last.Command.Number=Hide.Command Then
- Strng="You hide "+Out3+"!"
- Else
- Strng="You drop "+Out3+"!"
- Endif
- Call IO.O
- Call Discard(Temp5,True)
- If Last.Command.Number=Hide.Command Then
- For Temp3=1 To 10
- If RoomRecord.Treasure(Temp3)=False Then
- RoomRecord.Treasure(Temp3)=Temp7
- RoomRecord.TreCharges(Temp3)=Temp6
- RoomRecord.Flags(Temp3)=Hidden.Object
- Put 5,Room,RoomRecord
- Exit Sub
- Endif
- Next
- Strng="It rolled away!"
- Call IO.O
- Exit Sub
- Endif
- For Temp3=1 To Room.Treasure.Max
- If Room.Inventory(Temp3)=False Then
- Room.Inventory(Temp3)=Temp7
- Room.Inventory.Charges(Temp3)=Temp6
- Exit Sub
- Endif
- Next
- Call Expand.Room
- Room.Inventory(Temp3)=Temp7
- Room.Inventory.Charges(Temp3)=Temp6
- 10151
- Exit Sub
- 10152
- Resume 10151
- End Sub
-
- Sub Drop.Into.Receptacle
- On Local Error Goto 10162
- Call ParseX
- Call Numeric
- Call Examine.Treasure
- If Temp7=False Then
- Strng="You can't drop that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Recep=False Then
- Strng="You can't drop that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Locked>False Then
- Strng="You can't, it's locked!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Closed>False Then
- Strng="You can't, it's closed!"
- Call IO.O
- Exit Sub
- Endif
- Call Open.Recep.File
- TempC=False
- For Temp3=1 To Lof(13)/Len(RecepRec)
- Get 13,Temp3,RecepRec
- If RecepRec.Inv=False Then
- TempC=True
- Exit For
- Endif
- Next
- If TempC=False Then
- If Temp3>TreasureRecord.RecepMax Then
- Strng="You can't, it's full!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Out4=Rtrim$(TreasureRecord.TreasureName)
- Parsed.Command1=Parsed.Command2
- Call Numeric
- Call Check.Inventory.Treasure
- If Temp7=False Then
- Strng="You can't drop that!"
- Call IO.O
- Exit Sub
- Endif
- If Last.Command.Number=Hide.Command Then
- RecepRec.Invis=True
- Else
- RecepRec.Invis=False
- Endif
- RecepRec.Inv=Temp7
- RecepRec.Charges=Temp6
- RecepRec.TName=TreasureRecord.ShortName
- Put 13,Temp3,RecepRec
- Out3=Rtrim$(TreasureRecord.TreasureName)
- If Last.Command.Number=Hide.Command Then
- Out2=" hide "
- Else
- Out2=" drop "
- Endif
- Strng="You"+Out2+Out3+" in "+Out4+"!"
- Call IO.O
- Call Discard(Temp5,True)
- 10161
- Exit Sub
- 10162
- Resume 10161
- End Sub
-
- Sub Take.Object
- On Local Error Goto 10172
- If Normal.User=False Then
- Call Check.Room.Objects
- If Temp7 Then
- For Temp2=1 To 5
- Temp3=UserRecord.Object(Temp2)
- If Temp3=False Then
- Strng="You take "+Out3+"!"
- Call IO.O
- UserRecord.Object(Temp2)=Temp7
- UserRecord.ObjCharges(Temp2)=Temp6
- RoomRecord.Object(Temp5)=False
- RoomRecord.ObjCharges(Temp5)=False
- Put 5,Room,RoomRecord
- Exit Sub
- Endif
- Next
- Strng="You can't carry anymore!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Temp4=True
- Call Check.Room.Inventory
- If Temp7=False Then
- Call Num
- Temp4=False
- Call Check.Room.Treasure
- If Temp7=False Then
- Strng="You can't get that!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- If Weight+TreasureRecord.Weight>UserRecord.Stats(1)*10 Then
- Strng="You can't carry any more!"
- Call IO.O
- Exit Sub
- Endif
- If UserRecord.ClassType<=7 Then
- For Temp1=1 To Number.Monsters
- If MonsterArray(Temp1).Prevent Then
- If Rnd<(MonsterArray(Temp1).PreventPercent/100) Then
- Out2=MonsterArray(Temp1).MonsterName
- Out2=Rtrim$(Out2)
- Strng="The "+Out2+" prevents you from getting it!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Next
- Endif
- Strng="You take "+Out3+"."
- Call IO.O
- If TreasureRecord.Coin Then
- UserRecord.Gold=UserRecord.Gold+TreasureRecord.Gold
- Strng="You now have"+Str$(UserRecord.Gold)+" Gold!"
- Call IO.O
- Strng="found"+Str$(TreasureRecord.Gold)+" gold"
- Call Update.DayFile(Strng,False)
- Else
- Call Add.Inventory(Temp7,Temp6)
- Endif
- If Temp4 Then
- Call Discard.Inventory(Temp5)
- Exit Sub
- Endif
- If Temp4=False Then
- Call Discard.Treasure(Temp5)
- Endif
- 10171
- Exit Sub
- 10172
- Resume 10171
- End Sub
-
- Sub Take.From.Receptacle
- On Local Error Goto 10182
- Call ParseX
- Call Numeric
- Call Examine.Treasure
- If Temp7=False Then
- Strng="You can't get that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Recep=False Then
- Strng="You can't get that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Locked>False Then
- Strng="You can't, it's locked!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Closed>False Then
- Strng="You can't, it's closed!"
- Call IO.O
- Exit Sub
- Endif
- Parsed.Command1=Parsed.Command2
- Call Numeric
- Call Open.Recep.File
- Temp9=False
- Temp7=False
- For Temp5=1 To Lof(13)/Len(RecepRec)
- Get 13,Temp5,RecepRec
- Out2=RecepRec.TName
- Out2=Left$(Out2,Len(Parsed.Command1))
- If Out2=Parsed.Command1 Then
- Temp9=Temp9+1
- If Parse.Temp=False Or Temp9=Parse.Temp Then
- Temp6=RecepRec.Charges
- Temp7=RecepRec.Inv
- Exit For
- Endif
- Endif
- Next
- If Temp7=False Then
- Strng="You can't get that!"
- Call IO.O
- Exit Sub
- Endif
- Get 8,Temp7,TreasureRecord
- Out3=TreasureRecord.TreasureName
- If Weight+TreasureRecord.Weight>UserRecord.Stats(1)*10 Then
- Strng="You can't carry any more!"
- Call IO.O
- Exit Sub
- Endif
- RecepRec.Inv=False
- RecepRec.Charges=False
- RecepRec.Invis=False
- RecepRec.TName=Nul
- Put 13,Temp5,RecepRec
- Call Add.Inventory(Temp7,Temp6)
- Strng="You take "+Out3+"."
- Call IO.O
- 10181
- Exit Sub
- 10182
- Resume 10181
- End Sub
-
- Sub Smash.Object
- On Local Error Goto 10192
- Call Examine.Treasure
- If Temp7 Then
- If TreasureRecord.Recep=False Then
- Strng="You can't smash that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Locked=False Then
- Strng="It's already unlocked!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Locked>False Then
- Strng="It's already unlocked!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Keyed>False Then
- Strng="You can't smash that!"
- Call IO.O
- Exit Sub
- Endif
- If Int(Rnd*UserRecord.Stats(2))+1<Config2(33) Then
- Strng="You didn't smash it open!"
- Call IO.O
- Exit Sub
- Endif
- If Int(Rnd*UserRecord.Stats(1))+1<Config2(34) Then
- Strng="You didn't smash it open!"
- Call IO.O
- Exit Sub
- Endif
- If Rnd<Config1(21) Then
- Strng="You didn't smash it open!"
- Call IO.O
- Exit Sub
- Endif
- TreasureRecord.Locked=1
- TreasureRecord.Closed=1
- Put 8,Temp7,TreasureRecord
- Strng="You smash it open!"
- Call IO.O
- If ObjectRecord.Trap Then
- Call Traps
- Endif
- Exit Sub
- Endif
- Call Num
- Call Check.Room.Objects
- If Temp7=False Then
- Call Num
- Call Check.Inventory.Objects
- Endif
- If Temp7 Then
- If ObjectRecord.Hidden Then
- Strng="You can't smash that!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.RoomLink=False Then
- Strng="You can't smash that!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.Keyed Then
- Strng="You can't smash that!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.DoorLock=1 Then
- Strng="It's already unlocked!"
- Call IO.O
- Exit Sub
- Endif
- If Int(Rnd*UserRecord.Stats(2))+1<Config2(33) Then
- Strng="You didn't smash it open!"
- Call IO.O
- Exit Sub
- Endif
- If Int(Rnd*UserRecord.Stats(1))+1<Config2(34) Then
- Strng="You didn't smash it open!"
- Call IO.O
- Exit Sub
- Endif
- If Rnd<Config1(21) Then
- Strng="You didn't smash it open!"
- Call IO.O
- Exit Sub
- Endif
- ObjectRecord.DoorLock=1
- Put 6,Temp7,ObjectRecord
- Strng="You smash it open!"
- Call IO.O
- If ObjectRecord.Trap Then
- Call Traps
- Endif
- Exit Sub
- Endif
- Strng="You can't smash that!"
- Call IO.O
- 10191
- Exit Sub
- 10192
- Resume 10191
- End Sub
-
- Sub Close.Object
- On Local Error Goto 10202
- Call Examine.Treasure
- If Temp7 Then
- If TreasureRecord.Recep=False Then
- Strng="You can't close that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Locked=False Then
- Strng="You can't close that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Locked>False Then
- Strng="It's already closed!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Closed=False Then
- Strng="You can't close that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Closed>False Then
- Strng="It's already closed!"
- Call IO.O
- Exit Sub
- Endif
- TreasureRecord.Closed=1
- Put 8,Temp7,TreasureRecord
- Strng="You close it!"
- Call IO.O
- Exit Sub
- Endif
- Call Num
- Call Check.Room.Objects
- If Temp7=False Then
- Call Num
- Call Check.Inventory.Objects
- Endif
- If Temp7 Then
- If ObjectRecord.DoorLock<>1 Then
- Strng="You can't close that!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.Closed Then
- Strng="It's already closed!"
- Call IO.O
- Exit Sub
- Endif
- ObjectRecord.Closed=True
- Put 6,Temp7,ObjectRecord
- Strng="You close it!"
- Call IO.O
- Exit Sub
- Endif
- Strng="You can't close that!"
- Call IO.O
- 10201
- Exit Sub
- 10202
- Resume 10201
- End Sub
-
- Sub Open.Object
- On Local Error Goto 10212
- Call Examine.Treasure
- If Temp7 Then
- If TreasureRecord.Locked>False Then
- Strng="You can't, it's locked!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Recep=False Then
- Strng="You can't open that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Locked=False Then
- Strng="You can't open that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Closed=False Then
- Strng="You can't open that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Closed<False Then
- Strng="It's already open!"
- Call IO.O
- Exit Sub
- Endif
- TreasureRecord.Closed=True
- Put 8,Temp7,TreasureRecord
- Strng="You open it!"
- Call IO.O
- Exit Sub
- Endif
- Call Num
- Call Check.Room.Objects
- If Temp7=False Then
- Call Num
- Call Check.Inventory.Objects
- Endif
- If Temp7 Then
- If ObjectRecord.DoorLock<>1 Then
- Strng="You can't open that!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.Closed=False Then
- Strng="It's already open!"
- Call IO.O
- Exit Sub
- Endif
- ObjectRecord.Closed=False
- Put 6,Temp7,ObjectRecord
- Strng="You open it!"
- Call IO.O
- Exit Sub
- Endif
- Strng="You can't open that!"
- Call IO.O
- 10211
- Exit Sub
- 10212
- Resume 10211
- End Sub
-
- Sub Hold.Object
- On Local Error Goto 10222
- Call Check.Inventory.Treasure
- If Temp7=False Then
- Strng="You aren't carrying that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Type>False Then
- Strng="You can't hold that!"
- Call IO.O
- Exit Sub
- Endif
- If Treasure.Charges(Temp5)<=False Then
- Strng="You can't, it has zero charges!"
- Call IO.O
- Exit Sub
- Endif
- Temp1=Abs(TreasureRecord.Plus)
- If TreasureRecord.Type<False Then
- Weapon3=Temp1
- Weapon5=Temp5
- Endif
- If TreasureRecord.Type=False Then
- If UserRecord.ClassType=4 Then
- If TreasureRecord.Proficiency=3 Or TreasureRecord.Proficiency=4 Then
- Strng="Clerics may only use blunt or pole type weapons!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Weapon2=Temp1
- Weapon6=Temp5
- Weapon10=TreasureRecord.Proficiency
- Endif
- Strng="You hold "+Out3+"(+"+Mid$(Str$(Temp1),2)+")."
- Call IO.O
- 10221
- Exit Sub
- 10222
- Resume 10221
- End Sub
-
- Sub Wear.Object
- On Local Error Goto 10232
- Call Check.Inventory.Treasure
- If Temp7=False Then
- Strng="You aren't carrying that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Type<=False Then
- If TreasureRecord.RingType=False Then
- Strng="You can't wear that!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- If Treasure.Charges(Temp5)<=False Then
- Strng="You can't, it has zero charges!"
- Call IO.O
- Exit Sub
- Endif
- Temp1=Abs(TreasureRecord.Plus)
- If TreasureRecord.RingType Then
- Weapon7=Temp5
- Weapon8=TreasureRecord.RingType
- Weapon9=TreasureRecord.RingSpell
- Endif
- If TreasureRecord.Type>False Then
- Weapon1=Temp1
- Weapon4=Temp5
- Endif
- Strng="You wear "+Out3+"(+"+Mid$(Str$(Temp1),2)+")."
- Call IO.O
- 10231
- Exit Sub
- 10232
- Resume 10231
- End Sub
-
- Sub Return.Object
- On Local Error Goto 10242
- Call Check.Inventory.Treasure
- If Temp7=False Then
- Strng="You aren't carrying that!"
- Call IO.O
- Exit Sub
- Endif
- Strng="You return "+Out3+"."
- If Temp5=Weapon5 Then
- Weapon3=False
- Weapon5=False
- Call IO.O
- Exit Sub
- Endif
- If Temp5=Weapon4 Then
- Weapon1=False
- Weapon4=False
- Call IO.O
- Exit Sub
- Endif
- If Temp5=Weapon7 Then
- Weapon7=False
- Weapon8=False
- Weapon9=False
- Call IO.O
- Exit Sub
- Endif
- If Temp5=Weapon6 Then
- Weapon2=False
- Weapon6=False
- Weapon10=False
- Call IO.O
- Exit Sub
- Endif
- Strng="Your aren't wearing that!"
- Call IO.O
- 10241
- Exit Sub
- 10242
- Resume 10241
- End Sub
-
- Sub Lock.Object
- On Local Error Goto 10252
- Call Examine.Treasure
- If Temp7 Then
- If TreasureRecord.Recep=False Then
- Strng="You can't lock that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Locked>False Then
- Strng="It's already locked!"
- Call IO.O
- Exit Sub
- Endif
- TreasureRecord.Locked=1
- TreasureRecord.Closed=1
- Put 8,Temp7,TreasureRecord
- Strng="You lock it!"
- Call IO.O
- Exit Sub
- Endif
- Call Num
- Call Check.Room.Objects
- If Temp7=False Then
- Call Num
- Call Check.Inventory.Objects
- Endif
- If Temp7 Then
- If ObjectRecord.RoomLink=False Then
- Strng="You can't lock that!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.DoorLock=2 Then
- Strng="It's already locked!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.DoorLock=False Then
- Strng="You can't lock that!"
- Call IO.O
- Exit Sub
- Endif
- ObjectRecord.DoorLock=2
- ObjectRecord.Closed=True
- Put 6,Temp7,ObjectRecord
- Strng="You lock it!"
- Call IO.O
- Exit Sub
- Endif
- Strng="You can't lock that!"
- Call IO.O
- 10251
- Exit Sub
- 10252
- Resume 10251
- End Sub
-
- Sub Unlock.Object
- On Local Error Goto 10262
- Call Examine.Treasure
- If Temp7 Then
- If TreasureRecord.Recep=False Then
- Strng="You can't unlock that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Locked=False Then
- Strng="You can't unlock that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Locked<False Then
- Strng="It's already unlocked!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Keyed=False Then
- TreasureRecord.Locked=True
- TreasureRecord.Closed=1
- Put 8,Temp7,TreasureRecord
- Strng="You unlock it!"
- Call IO.O
- Exit Sub
- Endif
- If Last.Command.Number=Picklock.Command Then
- If ObjectRecord.Hidden Then
- Strng="You can't picklock hidden doors!"
- Call IO.O
- Exit Sub
- Endif
- If UserRecord.ClassType<>3 Then
- If Normal.User Then
- Strng="You can't picklock doors!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- If Int(Rnd*UserRecord.Stats(1))+1<Config2(35) Then
- Strng="You didn't picklock it!"
- Call IO.O
- Exit Sub
- Endif
- If Int(Rnd*UserRecord.Stats(2))+1<Config2(36) Then
- Strng="You didn't picklock it!"
- Call IO.O
- Exit Sub
- Endif
- If Rnd<Config1(22) Then
- Strng="You didn't picklock it!"
- Call IO.O
- Exit Sub
- Endif
- TreasureRecord.Locked=True
- TreasureRecord.Closed=1
- Put 8,Temp7,TreasureRecord
- Strng="You unlock it!"
- Call IO.O
- Exit Sub
- Endif
- Out2=Right$(Str$(TreasureRecord.Keyed+100000!),5)
- For Temp2=1 To Number.Inventory
- If Treasure(Temp2) Then
- Get 8,Treasure(Temp2),TreasureRecord
- If TreasureRecord.Keyed Then
- If Temp2<>Temp5 Then
- Temp8=True
- Out3=Right$(Str$(TreasureRecord.Keyed+100000!),5)
- For Temp3=1 To 5
- Temp1=Val(Mid$(Out3,Temp3,1))
- If Temp1<>Val(Mid$(Out2,Temp3,1)) Then
- If Temp1>False Then
- Temp8=False
- Exit For
- Endif
- Endif
- Next
- If Temp8 Then
- Get 8,Temp7,TreasureRecord
- TreasureRecord.Locked=True
- TreasureRecord.Closed=1
- Put 8,Temp7,TreasureRecord
- Strng="You unlock it!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Endif
- Endif
- Next
- Strng="You don't have the key!"
- Call IO.O
- Exit Sub
- Endif
- Call Num
- Call Check.Room.Objects
- If Temp7=False Then
- Call Num
- Call Check.Inventory.Objects
- Endif
- If Temp7 Then
- If ObjectRecord.RoomLink=False Then
- Strng="You can't unlock that!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.DoorLock=False Then
- Strng="You can't unlock that!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.DoorLock=1 Then
- Strng="It's already unlocked!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.Keyed=False Then
- ObjectRecord.DoorLock=1
- ObjectRecord.Closed=True
- Put 6,Temp7,ObjectRecord
- Strng="You unlock it!"
- Call IO.O
- Exit Sub
- Endif
- If Last.Command.Number=Picklock.Command Then
- If ObjectRecord.Hidden Then
- Strng="You can't picklock hidden doors!"
- Call IO.O
- Exit Sub
- Endif
- If UserRecord.ClassType<>3 Then
- If Normal.User Then
- Strng="You can't picklock doors!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- If Int(Rnd*UserRecord.Stats(1))+1<Config2(35) Then
- Strng="You didn't picklock it!"
- Call IO.O
- Exit Sub
- Endif
- If Int(Rnd*UserRecord.Stats(2))+1<Config2(36) Then
- Strng="You didn't picklock it!"
- Call IO.O
- Exit Sub
- Endif
- If Rnd<Config1(22) Then
- Strng="You didn't picklock it!"
- Call IO.O
- Exit Sub
- Endif
- ObjectRecord.DoorLock=1
- ObjectRecord.Closed=True
- Put 6,Temp7,ObjectRecord
- Strng="You unlock it!"
- Call IO.O
- Exit Sub
- Endif
- Out2=Right$(Str$(ObjectRecord.Keyed+100000!),5)
- For Temp2=1 To Number.Inventory
- If Treasure(Temp2) Then
- Get 8,Treasure(Temp2),TreasureRecord
- If TreasureRecord.Keyed Then
- If Temp2<>Temp5 Then
- Temp8=True
- Out3=Right$(Str$(TreasureRecord.Keyed+100000!),5)
- For Temp3=1 To 5
- Temp1=Val(Mid$(Out3,Temp3,1))
- If Temp1<>Val(Mid$(Out2,Temp3,1)) Then
- If Temp1>False Then
- Temp8=False
- Exit For
- Endif
- Endif
- Next
- If Temp8 Then
- ObjectRecord.DoorLock=1
- ObjectRecord.Closed=True
- Put 6,Temp7,ObjectRecord
- Strng="You unlock it!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Endif
- Endif
- Next
- Strng="You don't have the key!"
- Call IO.O
- Exit Sub
- Endif
- Strng="You can't unlock that!"
- Call IO.O
- 10261
- Exit Sub
- 10262
- Resume 10261
- End Sub
-
- Sub Fix.Object
- On Local Error Goto 10272
- Call Examine.Treasure
- If Temp7=False Then
- Strng="You can't fix that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Spell Then
- Strng="You can't fix that!"
- Call IO.O
- Exit Sub
- Endif
- If Treasure.Charges(Temp5)>False Then
- Strng="That's not broken!"
- Call IO.O
- Exit Sub
- Endif
- If UserRecord.Stats(3)<Config2(28) Then
- Strng="You didn't fix it!"
- Call IO.O
- Exit Sub
- Endif
- If Abs(TreasureRecord.Plus)>Config2(29) Then
- Strng="You didn't fix it!"
- Call IO.O
- Exit Sub
- Endif
- If Rnd<Config1(16) Then
- Strng="You didn't fix it!"
- Call IO.O
- Exit Sub
- Endif
- Temp1=TreasureRecord.Charges
- If Temp1>Config2(30) Then
- Temp1=Config2(30)
- Endif
- Select Case Temp4
- Case 0
- Treasure.Charges(Temp5)=Temp1
- Case -1
- Room.Inventory.Charges(Temp5)=Temp1
- Case 1
- RoomRecord.TreCharges(Temp5)=Temp1
- Put 5,Room,RoomRecord
- End Select
- Strng="You fix it!"
- Call IO.O
- 10271
- Exit Sub
- 10272
- Resume 10271
- End Sub
-
- Sub Panic
- On Local Error Goto 10282
- Temp9=False
- For TempA=1 To 11
- If RoomRecord.Direct(TempA) Then
- Call Restrict(TempA)
- If TempB=False Then
- Temp9=Temp9+1
- Endif
- Endif
- Next
- If Temp9=False Then
- Strng="There is nowhere to run! Try Appeal.."
- Call IO.O
- Exit Sub
- Endif
- TempC=Int(Rnd*Temp9+1)
- Temp9=False
- For TempA=1 To 11
- If RoomRecord.Direct(TempA) Then
- Call Restrict(TempA)
- If TempB=False Then
- Temp9=Temp9+1
- If Temp9=TempC Then
- Strng="You run away like a screaming madman!"
- Call IO.O
- Call Fumble
- Next.Room=RoomRecord.Direct(TempA)
- Call Enter.Room
- Exit For
- Endif
- Endif
- Endif
- Next
- 10281
- Exit Sub
- 10282
- Resume 10281
- End Sub
-
- Sub Train
- On Local Error Goto 10292
- If UserRecord.Level<=False Then
- Call Train.Stats
- Exit Sub
- Endif
- Call Gold(Temp#)
- If UserRecord.Gold<Temp# Then
- Strng="You don't have enough Gold to train!"
- Call IO.O
- Exit Sub
- Endif
- If Config2(44) Then
- If UserRecord.Experience>False Then
- Strng="You don't have enough experience to train!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- If Config2(44)=False Then
- Call In.Room(UserRecord.ClassType)
- If TempA=False Then
- Strng="You can't train here!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Call Train.Stats
- 10291
- Exit Sub
- 10292
- Resume 10291
- End Sub
-
- Sub Appeal
- On Local Error Goto 10302
- If UserRecord.Fatigue<UserRecord.FatigueMax*Config1(20) Then
- Strng="You are teleported elsewhere!"
- Call IO.O
- Next.Room=Val(Config3(24))
- Call Teleport
- Call Enter.Room
- Exit Sub
- Endif
- For Temp5=1 To 11
- If RoomRecord.Direct(Temp5) Then
- Strng="There are exits in the room!"
- Call IO.O
- Exit Sub
- Endif
- Next
- For Temp5=1 To 10
- Temp2=RoomRecord.Object(Temp5)
- If Temp2>False And Temp2<=Lof(6)/Len(ObjectRecord) Then
- Get 6,Temp2,ObjectRecord
- If ObjectRecord.RoomLink>False Then
- Strng="There are exits in the room!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Next
- Strng="You are teleported elsewhere!"
- Call IO.O
- Next.Room=Val(Config3(24))
- Number.Monsters=False
- Call Teleport
- Call Enter.Room
- 10301
- Exit Sub
- 10302
- Resume 10301
- End Sub
-
- Sub Drink.Potion
- On Local Error Goto 10312
- Call Check.Inventory.Treasure
- If Temp7=False Then
- Strng="You can't drink that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Potion=False Then
- Strng="That's not a potion!"
- Call IO.O
- Exit Sub
- Endif
- If Treasure.Charges(Temp5)=False Then
- Strng="You can't, it's empty!"
- Call IO.O
- Exit Sub
- Endif
- Temp2=TreasureRecord.Spell
- If Temp2>False And Temp2<=Spells.Max Then
- SpellRecord=SpellArray(Temp2)
- Treasure.Charges(Temp5)=Treasure.Charges(Temp5)-1
- Magic.Spell=SpellRecord.SpellType
- Multiplier=SpellRecord.Level
- Monster.Temp=False
- Parser=False
- Temp7=False
- Temp3=True
- Call Magic
- Endif
- 10311
- Exit Sub
- 10312
- Resume 10311
- End Sub
-
- Sub Eat.Object
- On Local Error Goto 10322
- Call Check.Inventory.Treasure
- If Temp7=False Then
- Strng="You can't eat that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Edible=False Then
- Strng="That's not edible!"
- Call IO.O
- Exit Sub
- Endif
- If Treasure.Charges(Temp5)=False Then
- Strng="You can't, it's been eaten!"
- Call IO.O
- Exit Sub
- Endif
- Temp2=TreasureRecord.Spell
- If Temp2>False And Temp2<=Spells.Max Then
- SpellRecord=SpellArray(Temp2)
- Treasure.Charges(Temp5)=Treasure.Charges(Temp5)-1
- Magic.Spell=SpellRecord.SpellType
- Multiplier=SpellRecord.Level
- Monster.Temp=False
- Parser=False
- Temp7=False
- Temp3=True
- Call Magic
- Endif
- 10321
- Exit Sub
- 10322
- Resume 10321
- End Sub
-
- Sub Teleport.User
- On Local Error Goto 10332
- Call Parse
- If Parser Then
- Call Numeric
- Call Search.Mess(False)
- If Temp>False Then
- Out3=MessWorkRecord1.UserName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Strng="You teleport "+Out3+"!"
- Call IO.O
- Out2=Str$(Int(Val(Parsed.Command2)))
- Call Send.Mess(18,TempB,False,Out2)
- Exit Sub
- Endif
- Strng="You can't teleport that!"
- Call IO.O
- Exit Sub
- Endif
- Next.Room=Int(Val(Parsed.Command1))
- Graphics.Off=True
- Strng="A Dark Cloud Passes Overhead..."
- Call IO.O
- Strng=" A Bolt of Lightning Strikes..."
- Call IO.O
- Strng="The Cloud Disappears..."
- Call IO.O
- Graphics.Off=False
- Call Teleport
- Call Enter.Room
- 10331
- Exit Sub
- 10332
- Resume 10331
- End Sub
-
- Sub Load.Object
- On Local Error Goto 10342
- Call Examine.Treasure
- If Temp7=False Then
- Strng="You can't load that!"
- Call IO.O
- Exit Sub
- Endif
- Temp8=False
- If TreasureRecord.Loadable=True Then
- Temp1=TreasureRecord.AmmoLoads
- Temp8=True
- Endif
- If TreasureRecord.Launchable=True Then
- Temp1=TreasureRecord.LaunchLoads
- Temp8=1
- Endif
- If Temp8=False Then
- Strng="You can't load that!"
- Call IO.O
- Exit Sub
- Endif
- If Temp1<False Or Temp1>Lof(8)/Len(TreasureRecord) Then
- Strng="There's no ammunition!"
- Call IO.O
- Exit Sub
- Endif
- Temp6=False
- Get 8,Temp1,TreasureRecord
- If Temp8 Then
- If TreasureRecord.Ammunition Then
- Temp6=True
- Endif
- Endif
- If Temp8=1 Then
- If TreasureRecord.LaunchAmmo Then
- Temp6=True
- Endif
- Endif
- If Temp6=False Then
- Strng="There's no ammunition!"
- Call IO.O
- Exit Sub
- Endif
- Temp9=False
- For Temp2=1 To Number.Inventory
- If Temp1=Treasure(Temp2) Then
- Call Discard(Temp2,True)
- Temp9=True
- Exit For
- Endif
- Next
- If Temp9=False Then
- For Temp2=1 To Room.Treasure.Max
- If Temp1=Room.Inventory(Temp2) Then
- Call Discard.Inventory(Temp2)
- Temp9=True
- Exit For
- Endif
- Next
- Endif
- If Temp9=False Then
- For Temp2=1 To 10
- If Temp1=RoomRecord.Treasure(Temp2) Then
- Call Discard.Treasure(Temp2)
- Temp9=True
- Exit For
- Endif
- Next
- Endif
- If Temp9=False Then
- Strng="There's no ammunition!"
- Call IO.O
- Exit Sub
- Endif
- TempZ=False
- Select Case Temp4
- Case 0
- Treasure.Charges(Temp5)=Treasure.Charges(Temp5)+1
- If Treasure.Charges(Temp5)>10 Then
- Treasure.Charges(Temp5)=10
- TempZ=True
- Endif
- Case -1
- Room.Inventory.Charges(Temp5)=Room.Inventory.Charges(Temp5)+1
- If Room.Inventory.Charges(Temp5)>10 Then
- Room.Inventory.Charges(Temp5)=10
- TempZ=True
- Endif
- Case 1
- RoomRecord.TreCharges(Temp5)=RoomRecord.TreCharges(Temp5)+1
- If RoomRecord.TreCharges(Temp5)>10 Then
- RoomRecord.TreCharges(Temp5)=10
- TempZ=True
- Endif
- Put 5,Room,RoomRecord
- End Select
- Strng="You load the device!"
- If TempZ Then
- Strng="The device can't load that much!"
- Endif
- Call IO.O
- 10341
- Exit Sub
- 10342
- Resume 10341
- End Sub
-
- Sub Fire.Object
- On Local Error Goto 10352
- Call Find.Inventory
- If Temp7=False Then
- Strng="You can't fire that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Loadable=False Then
- Strng="You can't fire that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.AmmoLoads=False Then
- Strng="It's not loaded with ammunition!"
- Call IO.O
- Exit Sub
- Endif
- Get 8,TreasureRecord.AmmoLoads,TreasureRecord
- If TreasureRecord.Ammunition=False Then
- Strng="It's not loaded with ammunition!"
- Call IO.O
- Exit Sub
- Endif
- Get 8,Temp7,TreasureRecord
- If Parser=False Then
- Strng="Fire at what?"
- Call IO.O
- Exit Sub
- Endif
- If Treasure.Charges(Temp5)=False Then
- Strng="It's not loaded!"
- Call IO.O
- Exit Sub
- Endif
- Treasure.Charges(Temp5)=Treasure.Charges(Temp5)-1
- Parsed.Command1=Parsed.Command2
- Call Numeric
- If Rnd<Config1(12) Then
- Strng="Bang! The ammunition explodes in your face!"
- Call IO.O
- Prefix2=Nul
- Strng="The device hits you for"
- Out3="loading ammunition"
- Temp2=Rnd*Abs(TreasureRecord.Plus)+1
- Call Hit.Player(Temp2)
- Exit Sub
- Endif
- If Rnd<Config1(13) Then
- Strng="The device fires harmlessly!"
- Call IO.O
- Exit Sub
- Endif
- Out5=TreasureRecord.ShortName
- Out5=Rtrim$(Out5)
- Out5=Lcase$(Out5)
- Call Check.Monster
- If Monster.Temp Then
- Out3=MonsterArray(Monster.Temp).MonsterName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Strng="You fire the "+Out5+" at the "+Out3+"!"
- Call IO.O
- Multiplier=Abs(TreasureRecord.Plus)
- Call Hit.Monster
- Exit Sub
- Endif
- Call Search.Mess(False)
- If Temp=Room And TempB<>User.Index Then
- User.Temp=TempB
- Out3=MessWorkRecord1.UserName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Strng="You fire "+Out5+" at "+Out3+"!"
- Call IO.O
- Out2=TreasureRecord.TreasureName
- Out2=Lcase$(Out2)
- Out2=Rtrim$(Out2)
- Call Send.Mess(22,TempB,Room,Out2)
- Call Hit.Game.Player
- Exit Sub
- Endif
- Strng="The device fires into empty air!"
- Call IO.O
- 10351
- Exit Sub
- 10352
- Resume 10351
- End Sub
-
- Sub Reduce.Monsters
- On Local Error Goto 10362
- Out2=Parsed.Command1
- Out2=Rtrim$(Out2)
- Temp2=Int(Val(Out2))
- If Temp2>=False And Temp2<Number.Monsters Then
- Number.Monsters=Temp2
- Strng="Number of Monsters reduced to:"+Str$(Number.Monsters)+"!"
- Call IO.O
- Endif
- 10361
- Exit Sub
- 10362
- Resume 10361
- End Sub
-
- Sub Discard.Object
- On Local Error Goto 10372
- Call Check.Inventory.Treasure
- If Temp7 Then
- Call Discard(Temp5,True)
- Strng="You discard "+Out3+"."
- Call IO.O
- Exit Sub
- Endif
- Call Num
- Call Check.Inventory.Objects
- If Temp7 Then
- UserRecord.Object(Temp5)=False
- UserRecord.ObjCharges(Temp5)=False
- Strng="You discard "+Out3+"."
- Call IO.O
- Exit Sub
- Endif
- Strng="You can't discard that!"
- Call IO.O
- 10371
- Exit Sub
- 10372
- Resume 10371
- End Sub
-
- Sub Discard.Inventory(Var1)
- On Local Error Goto 10382
- For TempX=Var1 To Room.Treasure.Max-1
- Room.Inventory(TempX)=Room.Inventory(TempX+1)
- Room.Inventory.Charges(TempX)=Room.Inventory.Charges(TempX+1)
- Next
- Room.Inventory(Room.Treasure.Max)=False
- Room.Inventory.Charges(Room.Treasure.Max)=False
- 10381
- Exit Sub
- 10382
- Resume 10381
- End Sub
-
- Sub Discard.Treasure(Var1)
- On Local Error Goto 10392
- RoomRecord.Treasure(Var1)=False
- RoomRecord.TreCharges(Var1)=False
- RoomRecord.Flags(Var1)=False
- Put 5,Room,RoomRecord
- 10391
- Exit Sub
- 10392
- Resume 10391
- End Sub
-
- Sub Drop.Object
- On Local Error Goto 10402
- Parsed.Command1=Stored.Parsed.Command2
- Call Numeric
- Out2=Parsed.Command1
- Out2=Lcase$(Out2)
- Call Drop(True)
- 10401
- Exit Sub
- 10402
- Resume 10401
- End Sub
-
- Sub Kill.Monster
- On Local Error Goto 10412
- Monster.Temp=False
- Call Check.Monster
- If Monster.Temp Then
- Graphics.Off=True
- Strng="Evil Laughter Sounds From Above..."
- Call IO.O
- Strng=" A Bolt of Lightning Strikes..."
- Call IO.O
- Graphics.Off=False
- Strng="The "+Out3+" was just struck dead!"
- Call IO.O
- Call Monster.Died
- Exit Sub
- Endif
- User.Temp=False
- Call Check.User
- If User.Temp Then
- Graphics.Off=True
- Strng="Evil Laughter Sounds From Above..."
- Call IO.O
- Strng=" A Bolt of Lightning Strikes..."
- Call IO.O
- Graphics.Off=False
- Out3=Lcase$(Out3)
- Strng=Out3+" was just struck dead!"
- Mid$(Strng,1,1)=Ucase$(Mid$(Strng,1,1))
- Call IO.O
- Call User.Died
- Exit Sub
- Endif
- Call Search.Mess(False)
- If Temp>False Then
- Out3=MessWorkRecord1.UserName
- Out2="Evil Laughter Sounds From Above..."
- Call Send.Mess(5,False,False,Out2)
- Out2=" A Bolt of Lightning Strikes..."
- Call Send.Mess(5,False,False,Out2)
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Mid$(Out3,1,1)=Ucase$(Mid$(Out3,1,1))
- Out2=Out3+" was just struck dead!"
- Call Send.Mess(5,False,False,Out2)
- Call Send.Mess(17,TempB,Room,"Murdered")
- Exit Sub
- Endif
- Strng="You can't kill that!"
- Call IO.O
- 10411
- Exit Sub
- 10412
- Resume 10411
- End Sub
-
- Sub Enter.Vehicle
- On Local Error Goto 10422
- Call Check.Room.Treasure
- If Temp7=False Then
- Strng="That's not a vehicle!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Vehicle=False Then
- Strng="That's not a vehicle!"
- Call IO.O
- Exit Sub
- Endif
- Out3=TreasureRecord.ShortName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- If Temp6=False Then
- Strng="The "+Out3+" is damaged!"
- Call IO.O
- Exit Sub
- Endif
- Vehicle1=Temp5
- Vehicle2=Temp6
- Vehicle3=Temp7
- Strng="You enter the "+Out3+"."
- Call IO.O
- 10421
- Exit Sub
- 10422
- Resume 10421
- End Sub
-
- Sub Ride.Vehicle
- On Local Error Goto 10442
- If Vehicle3=False Then
- Strng="That's not a vehicle!"
- Call IO.O
- Exit Sub
- Endif
- Get 8,Temp7,TreasureRecord
- Out3=TreasureRecord.ShortName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- User.Command=Parsed.Command1
- Call Get.Direction
- If TempA Then
- Next.Room=RoomRecord.Direct(TempA)
- If Next.Room=False Then
- Strng="You can't travel in that direction!"
- Call IO.O
- Exit Sub
- Endif
- Out2=UserRecord.CodeName
- Call Decrypt(Out2)
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- Strng=Direction(TempA)
- Strng=Rtrim$(Strng)
- Out2=Out2+" just left on a "+Out3+" "+Strng+"."
- Call Send.Mess(8,False,Room,Out2)
- Call Enter.Room
- Exit Sub
- Endif
- Call Check.Room.Objects
- If Temp7=False Then
- Strng="You can't travel in that direction!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.RoomLink=False Then
- Strng="You can't travel there!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.JailTrap Then
- Strng="Trapped portal!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.Closed Then
- If Pass.Door=False Then
- Strng="You can't, it's closed!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- If ObjectRecord.Relocks Then
- ObjectRecord.DoorLock=2
- ObjectRecord.Closed=True
- Put 6,Temp7,ObjectRecord
- Endif
- Strng=ObjectRecord.ShortDesc
- If Strng<>String$(40,0) Then
- Strng=Rtrim$(Strng)
- If Strng<>Nul Then
- Call IO.O
- Endif
- Endif
- Pass.Door=False
- Number.Monsters=False
- Next.Room=ObjectRecord.RoomLink
- Out2=UserRecord.CodeName
- Call Decrypt(Out2)
- Out2=Lcase$(Out2)
- Out2=Rtrim$(Out2)
- Strng=ObjectRecord.ShortName
- Strng=Rtrim$(Strng)
- Strng=Lcase$(Strng)
- Out2=Out2+" just left on a "+Out3+" to the "+Strng+"."
- Call Send.Mess(8,False,Room,Out2)
- Call Enter.Room
- 10441
- Exit Sub
- 10442
- Resume 10441
- End Sub
-
- Sub Exit.Vehicle
- On Local Error Goto 10452
- Call Check.Room.Treasure
- Strng="You can't exit that!"
- If Temp5=Vehicle1 Then
- Out3=TreasureRecord.ShortName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Vehicle1=False
- Vehicle2=False
- Vehicle3=False
- Strng="You exit the "+Out3+"!"
- Endif
- Call IO.O
- 10451
- Exit Sub
- 10452
- Resume 10451
- End Sub
-
- Sub Search.Object
- On Local Error Goto 10462
- Call Examine.Treasure
- If Temp7 Then
- If TreasureRecord.Recep=False Then
- Strng="You can't search that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Locked>False Then
- Strng="You can't, it's locked."
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Closed>False Then
- Strng="You can't, it's closed."
- Call IO.O
- Exit Sub
- Endif
- Strng="You search the receptacle.."
- Call IO.O
- Graphics.Off=True
- Strng="In it you find "
- Carriage.Return=True
- Call IO.O
- Temp9=False
- Call Open.Recep.File
- For Temp5=1 To Lof(13)/Len(RecepRec)
- Get 13,Temp5,RecepRec
- Temp2=RecepRec.Inv
- If Temp2 Then
- Get 8,Temp2,TreasureRecord
- Out3=TreasureRecord.TreasureName
- If RecepRec.Invis Then
- If Rnd<Config1(11) Then
- Carriage.Return=True
- Call IO.O
- Strng=Rtrim$(Out3)+", "
- Temp9=Temp9+1
- Endif
- Endif
- Endif
- Next
- If Temp9=False Then
- Strng="nothing.."
- Call IO.O
- Exit Sub
- Endif
- Strng=Left$(Strng,Len(Strng)-2)+"."
- If Temp9>1 Then
- Strng="and "+Strng
- Endif
- Call IO.O
- Exit Sub
- Endif
- Strng="You can't search that!"
- Call IO.O
- 10461
- Exit Sub
- 10462
- Resume 10461
- End Sub
-
- Sub Bless.Object
- On Local Error Goto 10472
- If Normal.User Then
- If UserRecord.ClassType<>4 Then
- Strng="Only clerics can bless!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Call Examine.Treasure
- If Temp7 Then
- If TreasureRecord.Spell=False Then
- Strng="You can't bless that!"
- Call IO.O
- Exit Sub
- Endif
- SpellRecord=SpellArray(TreasureRecord.Spell)
- If SpellRecord.SpellType=4 Then
- Strng="You can't bless that!"
- Call IO.O
- Exit Sub
- Endif
- TempZ=False
- Select Case Temp4
- Case 0
- Treasure.Charges(Temp5)=Treasure.Charges(Temp5)+1
- If Treasure.Charges(Temp5)>TreasureRecord.Charges Then
- Treasure.Charges(Temp5)=TreasureRecord.Charges
- TempZ=True
- Endif
- Case -1
- Room.Inventory.Charges(Temp5)=Room.Inventory.Charges(Temp5)+1
- If Room.Inventory.Charges(Temp5)>TreasureRecord.Charges Then
- Room.Inventory.Charges(Temp5)=TreasureRecord.Charges
- TempZ=True
- Endif
- Case 1
- RoomRecord.TreCharges(Temp5)=RoomRecord.TreCharges(Temp5)+1
- If RoomRecord.TreCharges(Temp5)>TreasureRecord.Charges Then
- RoomRecord.TreCharges(Temp5)=TreasureRecord.Charges
- TempZ=True
- Endif
- Put 5,Room,RoomRecord
- End Select
- Strng="You bless it!"
- If TempZ Then
- Strng="Nothing happens!"
- Endif
- Call IO.O
- Exit Sub
- Endif
- Call Search.Mess(False)
- If Temp=Room And TempB<>User.Index Then
- User.Temp=TempB
- Out3=MessWorkRecord1.UserName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Strng="You bless "+Out3+"!"
- Call IO.O
- Out2="blesses you!"
- Call Send.Mess(23,TempB,Room,Out2)
- Exit Sub
- Endif
- Strng="You can't bless that!"
- Call IO.O
- 10471
- Exit Sub
- 10472
- Resume 10471
- End Sub
-
- Sub Curse.Object
- On Local Error Goto 10482
- If Normal.User Then
- If UserRecord.ClassType<>4 Then
- Strng="Only clerics can curse!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Call Check.Monster
- If Monster.Temp Then
- Out3=MonsterArray(Monster.Temp).MonsterName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Strng="You curse the "+Out3+"!"
- Call IO.O
- Multiplier=Int(UserRecord.Stats(6)/2)
- Call Hit.Monster
- Exit Sub
- Endif
- Call Search.Mess(False)
- If Temp=Room And TempB<>User.Index Then
- User.Temp=TempB
- Out3=MessWorkRecord1.UserName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Strng="You curse "+Out3+"!"
- Call IO.O
- Out2="curses you!"
- Call Send.Mess(24,TempB,Room,Out2)
- Exit Sub
- Endif
- Strng="You can't curse that!"
- Call IO.O
- 10481
- Exit Sub
- 10482
- Resume 10481
- End Sub
-
- Sub Bless.Self
- On Local Error Goto 10492
- If Normal.User Then
- If UserRecord.ClassType<>4 Then
- Strng="Only clerics can bless!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- UserRecord.Stats(6)=UserRecord.Stats(6)+1
- If UserRecord.Stats(6)>Config2(31) Then
- UserRecord.Stats(6)=Config2(31)
- Strng="Nothing happens!"
- Call IO.O
- Exit Sub
- Endif
- Strng="You feel a glow about you!"
- Call IO.O
- Strng="Your piety is now"+Str$(UserRecord.Stats(6))+"!"
- Call IO.O
- 10491
- Exit Sub
- 10492
- Resume 10491
- End Sub
-
- Sub Curse.Self
- On Local Error Goto 10502
- If Normal.User Then
- If UserRecord.ClassType<>4 Then
- Strng="Only clerics can curse!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- UserRecord.Stats(6)=UserRecord.Stats(6)-1
- If UserRecord.Stats(6)<False Then
- UserRecord.Stats(6)=False
- Endif
- Strng="You feel a darkening about you!"
- Call IO.O
- Strng="Your piety is now"+Str$(UserRecord.Stats(6))+"!"
- Call IO.O
- Call New.Stats
- 10501
- Exit Sub
- 10502
- Resume 10501
- End Sub
-
- Sub Move.Object
- On Local Error Goto 10512
- Call Parse
- If Parser Then
- Call Numeric
- Endif
- Call Examine.Treasure
- If Temp7=False Then
- Strng="You can't move that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Movable=False Then
- Strng="You can't move that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Launchable=False Then
- Strng="You can't move that!"
- Call IO.O
- Exit Sub
- Endif
- If Parser=False Then
- Strng="Move which direction?"
- Call IO.O
- Exit Sub
- Endif
- Out4=Out3
- TempD=Temp5
- TempE=Temp6
- TempF=Temp7
- User.Command=Parsed.Command2
- Call Get.Direction
- If TempA Then
- Next.Room=RoomRecord.Direct(TempA)
- If Next.Room=False Then
- Strng="You can't move it there!"
- Call IO.O
- Exit Sub
- Endif
- Out2=UserRecord.CodeName
- Call Decrypt(Out2)
- Out2=Lcase$(Out2)
- Out2=Rtrim$(Out2)
- Out2=Out2+" just moved something "
- Strng=Direction(TempA)
- Strng=Rtrim$(Strng)
- Out2=Out2+Strng+"."
- Else
- Parsed.Command1=User.Command
- Call Check.Room.Objects
- If Temp7=False Then
- Strng="You can't move it there!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.RoomLink=False Then
- Strng="You can't move it there!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.JailTrap Then
- Strng="Trapped portal!"
- Call IO.O
- Exit Sub
- Endif
- If ObjectRecord.Closed Then
- If Pass.Door=False Then
- Strng="You can't, it's closed!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- If ObjectRecord.Relocks Then
- ObjectRecord.DoorLock=2
- ObjectRecord.Closed=True
- Put 6,Temp7,ObjectRecord
- Endif
- Pass.Door=False
- Next.Room=ObjectRecord.RoomLink
- Out2=UserRecord.CodeName
- Call Decrypt(Out2)
- Out2=Lcase$(Out2)
- Out2=Rtrim$(Out2)
- Out2=Out2+" just moved something to "+Out3+"."
- Endif
- Get 5,Next.Room,RoomRecord
- For Temp=1 To 10
- If RoomRecord.Treasure(Temp)=False Then
- RoomRecord.Treasure(Temp)=TempF
- RoomRecord.TreCharges(Temp)=TempE
- RoomRecord.Flags(Temp)=False
- Put 5,Next.Room,RoomRecord
- Get 5,Room,RoomRecord
- Select Case Temp4
- Case 0
- Call Discard(TempD,True)
- Case -1
- Call Discard.Inventory(TempD)
- Case 1
- Call Discard.Treasure(TempD)
- End Select
- Strng="You move "+Out4+"."
- Call IO.O
- Call Send.Mess(8,False,Room,Out2)
- Call Enter.Room
- Exit Sub
- Endif
- Next
- Get 5,Room,RoomRecord
- Strng="You can't move it there!"
- Call IO.O
- 10511
- Exit Sub
- 10512
- Resume 10511
- End Sub
-
- Sub Launch.Object
- On Local Error Goto 10522
- Call Parse
- If Parser Then
- Call Numeric
- Endif
- Call Examine.Treasure
- If Temp7=False Then
- Strng="You can't launch that!"
- Call IO.O
- Exit Sub
- Endif
- If TreasureRecord.Launchable=False Then
- Strng="That's not a launchable device!"
- Call IO.O
- Exit Sub
- Endif
- If Parser=False Then
- Strng="Launch where?"
- Call IO.O
- Exit Sub
- Endif
- TempZ=False
- TempI=Temp4
- TempJ=Temp5
- TempE=Temp6
- If Temp6=False Then
- Strng="You can't, it's not loaded."
- Call IO.O
- Exit Sub
- Endif
- If TempE>10 Then
- TempE=10
- Endif
- TempK=False
- Out5=TreasureRecord.ShortName
- Out5=Rtrim$(Out5)
- Out5=Lcase$(Out5)
- User.Command=Parsed.Command2
- Parsed.Command1=User.Command
- Call Get.Direction
- If TempA Then
- Next.Room=RoomRecord.Direct(TempA)
- If Next.Room=False Then
- Strng="You can't launch at that!"
- Call IO.O
- Exit Sub
- Endif
- TempZ=True
- Out3=Direction(TempA)
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Strng="You launch the "+Out5+" "+Out3+"!"
- Call IO.O
- For TempQ=1 To TempE
- Graphics.Off=False
- Out2=Numeral(TempQ)
- Out2=Rtrim$(Out2)
- Strng="For launch "+Out2+";"
- Call IO.O
- TempK=TempK+1
- Graphics.Off=True
- Strng="The device launchs: "
- Carriage.Return=True
- Call IO.O
- Strng=Out3+", "
- Carriage.Return=True
- Call IO.O
- TempA=False
- TempB=False
- Call Chain.Rooms(Next.Room,Room)
- Strng="and stopped!"
- Call IO.O
- Next
- If TempA=False Then
- Strng="You didn't smash anything!"
- Else
- Strng="You smashed open"
- If TempA<=10 Then
- Strng=Strng+" "+Rtrim$(Numeral(TempA))
- Else
- Strng=Strng+Str$(TempA)
- Endif
- If TempA=1 Then
- Strng=Strng+" lock.."
- Else
- Strng=Strng+" locks!"
- Endif
- Endif
- Call IO.O
- Graphics.Off=False
- Get 5,Room,RoomRecord
- Else
- Call Check.Monster
- If Monster.Temp Then
- Multiplier=Abs(TreasureRecord.Plus)
- Out3=MonsterArray(Monster.Temp).MonsterName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Strng="You launch "+Out5+" at the "+Out3+"!"
- Call IO.O
- TempZ=True
- Graphics.Off=True
- For TempQ=1 To TempE
- Out2=Numeral(TempQ)
- Out2=Rtrim$(Out2)
- Strng="For launch "+Out2+";"
- Call IO.O
- TempK=TempK+1
- Call Attack.Monster
- Call Check.Monster
- If Monster.Temp=False Then
- Exit For
- Endif
- Next
- Graphics.Off=False
- Else
- Call Search.Mess(False)
- If Temp=Room And TempB<>User.Index Then
- User.Temp=TempB
- Out3=MessWorkRecord1.UserName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Strng="You launch "+Out5+" at "+Out3+"!"
- Call IO.O
- TempZ=True
- Out2=TreasureRecord.TreasureName
- Out2=Lcase$(Out2)
- Out2=Rtrim$(Out2)
- Call Send.Mess(21,TempB,Room,Out2)
- Graphics.Off=True
- For TempQ=1 To TempE
- Out2=Numeral(TempQ)
- Out2=Rtrim$(Out2)
- Strng="For launch "+Out2+";"
- Call IO.O
- TempK=TempK+1
- Call Hit.Game.Player
- Call Search.Mess(False)
- If Temp<>Room Then
- Exit For
- Endif
- Next
- Graphics.Off=False
- Endif
- Endif
- Endif
- If TempZ=False Then
- Strng="You can't launch at that!"
- Call IO.O
- Exit Sub
- Endif
- Select Case TempI
- Case 0
- Treasure.Charges(TempJ)=Treasure.Charges(TempJ)-TempK
- If Treasure.Charges(TempJ)<False Then
- Treasure.Charges(TempJ)=False
- Endif
- Case -1
- Room.Inventory.Charges(TempJ)=Room.Inventory.Charges(TempJ)-TempK
- If Room.Inventory.Charges(TempJ)<False Then
- Room.Inventory.Charges(TempJ)=Falsee
- Endif
- Case 1
- RoomRecord.TreCharges(TempJ)=RoomRecord.TreCharges(TempJ)-TempK
- If RoomRecord.TreCharges(TempJ)<False Then
- RoomRecord.TreCharges(TempJ)=False
- Endif
- Put 5,Room,RoomRecord
- End Select
- 10521
- Exit Sub
- 10522
- Resume 10521
- End Sub
-
- Sub Chain.Rooms(Chain.Room,Previous.Room)
- On Local Error Goto 10532
- Get 5,Chain.Room,RoomRecord
- For Temp=1 To 10
- If RoomRecord.Object(Temp) Then
- Get 6,RoomRecord.Object(Temp),ObjectRecord
- If ObjectRecord.DoorLock=2 Then
- If Rnd>.66 Then
- TempA=TempA+1
- ObjectRecord.DoorLock=1
- ObjectRecord.Closed=False
- Put 6,RoomRecord.Object(Temp),ObjectRecord
- Endif
- Endif
- Endif
- Next
- For Temp.Direction=1 to 11
- Temp.Room=RoomRecord.Direct(Temp.Direction)
- If Temp.Room Then
- If Temp.Room<>Previous.Room Then
- If Rnd>.66 Then
- If TempB<5 Then
- Carriage.Return=True
- Strng=Direction(Temp.Direction)
- Strng=Rtrim$(Strng)+", "
- Call IO.O
- TempB=TempB+1
- Call Chain.Rooms(Temp.Room,Chain.Room)
- Get 5,Chain.Room,RoomRecord
- Exit Sub
- Endif
- Endif
- Endif
- Endif
- Next
- 10531
- Exit Sub
- 10532
- Resume 10531
- End Sub
-
- Sub Give.Object
- On Local Error Goto 10542
- Call Parse
- If Parser Then
- Call Numeric
- Endif
- Temp#=False
- If Val(Parsed.Command1)>False Then
- Temp#=Val(Parsed.Command1)
- If Temp#<=False Or UserRecord.Gold-Temp#<False Then
- Strng="You don't have that much gold!"
- Call IO.O
- Exit Sub
- Endif
- UserRecord.Gold=UserRecord.Gold-Temp#
- Endif
- If Temp#=False Then
- Call Check.Inventory.Treasure
- If Temp7=False Then
- Strng="You can't give that!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- If Parser=False Then
- Strng="Give to whom?"
- Call IO.O
- Exit Sub
- Endif
- Parsed.Command1=Parsed.Command2
- Call Search.Mess(False)
- If Temp=Room And TempB<>User.Index Then
- Out2=MessWorkRecord1.UserName
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- If Temp#>False Then
- Strng="You give"+Str$(Temp#)+" gold to "+Out2+"!"
- Call IO.O
- Out2=Str$(Temp#)
- Call Send.Mess(15,TempB,Room,Out2)
- Exit Sub
- Endif
- Strng="You give "+Out3+" to "+Out2+"!"
- Call IO.O
- Out2=Str$(Temp7)+Str$(Temp6)
- Call Send.Mess(13,TempB,Room,Out2)
- Call Discard(Temp5,True)
- Exit Sub
- Endif
- Strng="You can't give that!"
- Call IO.O
- 10541
- Exit Sub
- 10542
- Resume 10541
- End Sub
-
- Sub Steal.Object
- On Local Error Goto 10552
- If Normal.User Then
- If UserRecord.ClassType<>3 Then
- Strng="Only thieves can steal!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Call ParseX
- If Parser Then
- Call Numeric
- Endif
- If Parser=False Then
- Strng="Steal from whom?"
- Call IO.O
- Exit Sub
- Endif
- Call Check.Monster
- If Monster.Temp Then
- Parsed.Command1=Lcase$(Parsed.Command2)
- Call Numeric
- For Temp5=1 To 5
- Temp4=MonsterArray(Monster.Temp).Treasure(Temp5)
- If Temp4>False And Temp4<=Lof(8)/Len(TreasureRecord) Then
- Get 8,Temp4,TreasureRecord
- Out2=TreasureRecord.ShortName
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- Out2=Left$(Out2,Len(Parsed.Command1))
- If Out2=Parsed.Command1 Then
- If MonsterArray(Monster.Temp).Magic<=True Or_
- MonsterArray(Monster.Temp).Permanent<=True Then
- Strng="You can't steal from that monster!"
- Call IO.O
- Exit Sub
- Endif
- If Int(Rnd*5+5)>UserRecord.Stats(4)/2 Then
- Strng="Didn't work!"
- Call IO.O
- Exit Sub
- Endif
- Out2=TreasureRecord.TreasureName
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- Out3=MonsterArray(Monster.Temp).MonsterName
- Out3=Rtrim$(Out3)
- Out3=Lcase$(Out3)
- Strng="You steal "+Out2+" from the "+Out3+"!"
- Call IO.O
- Temp9=TreasureRecord.Charges
- Call Add.Inventory(Temp4,Temp9)
- MonsterArray(Monster.Temp).Treasure(Temp5)=False
- Exit Sub
- Endif
- Endif
- Next
- Else
- Call Search.Mess(False)
- If Temp=Room And TempB<>User.Index Then
- Out2=MessWorkRecord1.UserName
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- Parsed.Command1=Parsed.Command2
- Call Search.User.Inventory
- If Temp7>False Then
- If Int(Rnd*5+5)>UserRecord.Stats(4)/2 Then
- Strng="Didn't work!"
- Call IO.O
- Exit Sub
- Endif
- If MessWorkRecord1.ClassType>8 Then
- Strng="You can't steal from that user!"
- Call IO.O
- Exit Sub
- Endif
- Strng="You steal "+Out3+" from "+Out2+"!"
- Call IO.O
- Out2=Str$(Temp7)
- Get 1,TempC,MessWorkRecord1
- MessWorkRecord1.Treasure(Temp5)=False
- MessWorkRecord1.TreasureCharges(Temp5)=False
- Put 1,TempC,MessWorkRecord1
- Call Send.Mess(16,TempB,Room,Out2)
- Call Add.Inventory(Temp7,Temp6)
- Exit Sub
- Endif
- Endif
- Endif
- Strng="You can't steal that!"
- Call IO.O
- 10551
- Exit Sub
- 10552
- Resume 10551
- End Sub
-
- Sub Add.Inventory(Var1,Var2)
- On Local Error Goto 10562
- If Number.Inventory=Treasure.Max Then
- Call Expand.Inventory
- Endif
- Number.Inventory=Number.Inventory+1
- Treasure(Number.Inventory)=Var1
- Treasure.Charges(Number.Inventory)=Var2
- Weight=Weight+TreasureRecord.Weight
- 10561
- Exit Sub
- 10562
- Resume 10561
- End Sub
-
- Sub Follow.Player
- On Local Error Goto 10572
- If Node<=False Then
- Strng="You can't follow players!"
- Call IO.O
- Exit Sub
- Endif
- If Last.Command.Number<>Follow.Command Then
- Strng="Hunt mode. Press Control-K to interrupt."
- Call IO.O
- Allow.Break=True
- Auto.Break=False
- Do While Security.Guard
- Call Pause.Second
- If Auto.Break Then
- Allow.Break=False
- Follow.Mode=False
- Exit Sub
- Endif
- For VarX=1 To 36
- Get 1,VarX,MessWorkRecord1
- Out2=Rtrim$(MessWorkRecord1.UserName)
- Out2=Lcase$(Out2)
- Call Valid.Name(Out2)
- TempB=MessWorkRecord1.UserIndex
- TempC=VarX
- If VarX<>(Noden+1) Then
- If MessWorkRecord1.RoomNumber=Room And TempA Then
- Strng="Hunting found "+Out2+"!"
- Call IO.O
- Exit Do
- Endif
- Endif
- Next
- If Last.Command.Number>36 Then
- TempA=Int(Rnd*11+1)
- If RoomRecord.Direct(TempA) Then
- Call Restrict(TempA)
- If TempB=False Then
- Out2=Direction(TempA)
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- Strng="You hunt "+Out2+"."
- Call IO.O
- Next.Room=RoomRecord.Direct(TempA)
- Call Enter.Room
- Endif
- Endif
- Endif
- Call Main.Loop.Update
- Loop
- Endif
- Allow.Break=False
- Follow.Mode=False
- If Last.Command.Number=Trace.Command Then
- Exit Sub
- Endif
- If Last.Command.Number=Follow.Command Then
- Call Search.Mess(False)
- If TempB=User.Index Or Temp<>Room Then
- Strng="That player is not in this room!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Strng="Follow mode. Press Control-K to interrupt."
- Call IO.O
- Allow.Break=True
- Auto.Break=False
- Follow.Mode=True
- VarZ=TempC
- Do While Security.Guard
- Call Pause.Second
- If Auto.Break Then
- Exit Do
- Endif
- Get 1,VarZ,MessWorkRecord1
- Strng=Rtrim$(MessWorkRecord1.UserName)
- Call Valid.Name(Strng)
- If TempA=False Then
- Exit Do
- Endif
- Temp=MessWorkRecord1.RoomNumber
- If Temp<>Room Then
- Next.Room=Temp
- Call Enter.Room
- Endif
- Call Main.Loop.Update
- Loop
- Allow.Break=False
- Follow.Mode=False
- 10571
- Exit Sub
- 10572
- Resume 10571
- End Sub
-
- Sub Lose.Player
- On Local Error Goto 10582
- If Node<=False Then
- Strng="You can't lose players!"
- Call IO.O
- Exit Sub
- Endif
- If Int(Rnd*5+5)>UserRecord.Stats(2)/2 Then
- Strng="Didn't work!"
- Call IO.O
- Exit Sub
- Endif
- Call Send.Mess(20,False,False,"Lose")
- Strng="You lose any following players!"
- Call IO.O
- 10581
- Exit Sub
- 10582
- Resume 10581
- End Sub
-
- Sub Learn.Spell
- On Local Error Goto 10592
- Temp9=False
- For Temp=1 To Spells.Max
- SpellRecord=SpellArray(Temp)
- If Rtrim$(SpellRecord.SpellName)=Lcase$(Parsed.Command1) Then
- Temp9=True
- Exit For
- Endif
- Next
- If Temp9=False Then
- Strng="You can't learn that spell!"
- Call IO.O
- Exit Sub
- Endif
- Strng="Enter chant to learn: "
- Call IO.I
- Out2=Ucase$(Out2)
- If Rtrim$(SpellRecord.Chant)<>Out2 Then
- Strng="Wrong spell chant!"
- Call IO.O
- Exit Sub
- Endif
- Learned.Spells(Temp)=True
- Strng="You now memorize the spell!"
- Call IO.O
- 10591
- Exit Sub
- 10592
- Resume 10591
- End Sub
-
- Sub Hide.User
- On Local Error Goto 10602
- If Hidden.Player Then
- Strng="You are already hidden!"
- Call IO.O
- Exit Sub
- Endif
- Temp1=False
- If Number.Monsters=False Then
- Temp1=True
- Else
- If Rnd>.66 Then
- Temp1=True
- Endif
- Endif
- If Temp1 Then
- Hidden.Player=True
- Strng="You hide in the shadows.."
- Else
- Strng="You can't hide in front of something!"
- Endif
- Call IO.O
- 10601
- Exit Sub
- 10602
- Resume 10601
- End Sub
-
- Sub Throw.Object
- On Local Error Goto 10612
- If Normal.User Then
- If UserRecord.ClassType<>3 Then
- Strng="Only thieves can throw!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Call ParseX
- If Parser Then
- Call Numeric
- Endif
- If Parser=False Then
- Strng="Throw at whom?"
- Call IO.O
- Exit Sub
- Endif
- Call Check.Monster
- If Monster.Temp Then
- Last.Monster=Parsed.Command1
- Parsed.Command1=Ucase$(Parsed.Command2)
- Call Numeric
- Call Check.Inventory.Treasure
- If Temp7>False Then
- If Weapon6=Temp5 Then
- Multiplier=Weapon2
- Out2=MonsterArray(Monster.Temp).MonsterName
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- Strng="You throw "+Out3+" at the "+Out2+"!"
- Call IO.O
- If Int(Rnd*5+2)>UserRecord.Stats(4)/2 Then
- Strng="You missed!"
- Call IO.O
- Else
- Parsed.Command1=Last.Monster
- Last.Command.Type=False
- Last.Command.Number=55
- Call Attack.Monster
- Endif
- Call Discard(Weapon6,False)
- Exit Sub
- Endif
- Strng="You are'nt holding the weapon!"
- Call IO.O
- Exit Sub
- Endif
- Else
- Call Search.Mess(False)
- If Temp=Room And TempB<>User.Index Then
- User.Temp=TempB
- Out2=MessWorkRecord1.UserName
- Out2=Rtrim$(Out2)
- Out2=Lcase$(Out2)
- Parsed.Command1=Ucase$(Parsed.Command2)
- Call Check.Inventory.Treasure
- If Temp7>False Then
- If Weapon6=Temp5 Then
- Strng="You throw "+Out3+" at "+Out2+"!"
- Call IO.O
- If Int(Rnd*5+2)>UserRecord.Stats(4)/2 Then
- Strng="You missed!"
- Call IO.O
- Else
- Call Hit.Game.Player
- Endif
- Call Discard(Weapon6,False)
- Exit Sub
- Endif
- Strng="You are'nt holding the weapon!"
- Call IO.O
- Exit Sub
- Endif
- Endif
- Endif
- Strng="You can't throw that!"
- Call IO.O
- 10611
- Exit Sub
- 10612
- Resume 10611
- End Sub
-
- Sub Exit.Room
- On Local Error Goto 10622
- User.Command="O"
- Last.Command="OUT"
- Call Update.Mess(4)
- Last.Command.Number=True
- TempA=5
- Call Verify.Room
- If New.Room Then
- Call Enter.Room
- Endif
- 10621
- Exit Sub
- 10622
- Resume 10621
- End Sub
-
- Sub Climb
- On Local Error Goto 10632
- User.Command="U"
- Last.Command="UP"
- Call Update.Mess(4)
- Last.Command.Number=True
- TempA=6
- Call Verify.Room
- If New.Room Then
- Call Enter.Room
- Endif
- 10631
- Exit Sub
- 10632
- Resume 10631
- End Sub
-
- Sub Gold(Var#)
- On Local Error Goto 10642
- If UserRecord.Level<=10 Then
- Var#=2^(UserRecord.Level+6)
- Else
- Var#=2^16+(UserRecord.Level-10)*1000000!
- Endif
- 10641
- Exit Sub
- 10642
- Resume 10641
- End Sub
-
- Sub Experience(Var#)
- On Local Error Goto 10652
- If UserRecord.Level<=10 Then
- Var#=2^(UserRecord.Level+7)
- Else
- Var#=2^17+(UserRecord.Level-10)*1000000!
- Endif
- 10651
- Exit Sub
- 10652
- Resume 10651
- End Sub
-