 Rem File: Player.bas - for Cmd*.bas modules
 Rem $Include: 'dndbbs.inc'

Sub Display.Stats
 On Local Error Goto Err.Trp4
 Graphics.Off=True
 Carriage.Return=True
 Strng="Information: "
 Call IO.O
 Strng=UserRecord.CodeName
 Strng=Rtrim$(Strng)
 Strng=Lcase$(Strng)
 Mid$(Strng,1,1)=Ucase$(Mid$(Strng,1,1))
 Strng=Rtrim$(UserRecord.Prefix1)+Strng
 Call Convert.ANSI(True,VarQ,VarR)
 Carriage.Return=True
 Graphics.On=True
 Call IO.O
 Graphics.On=False
 Strng=". "+Fclock$+"."
 Call IO.O
 If Vehicle1 Then
    Call Read.Record(TreasureFile,Vehicle3)
    Out4=TreasureRecord.ShortName
    Out4=Rtrim$(Out4)
    Out4=Lcase$(Out4)
    Strng="You are using "+Out4
    Var2=TreasureRecord.Plus
    If Var2>False Then
       Strng=Strng+"(+"+Mid$(Str$(Var2),2)+")"
    Endif
    Strng=Strng+"."
    Call IO.O
    If TreasureRecord.Occupants>False Then
       Carriage.Return=True
       Strng="Passengers: "
       Call IO.O
       Var=False
       Call Read.Record(RoomInvFile,Vehicle1)
       For Var2=1 To 4
          Var2!=MessWorkRecord6.Temp(Var2)
          If Var2!>SFalse And Var2!<=Lof(UserFile2)/UserRecLen Then
             Call Read.Record(UserFile2,Var2!)
             Carriage.Return=True
             Strng=UserRecord2.CodeName
             Strng=Rtrim$(Strng)
             Strng=Lcase$(Strng)
             Mid$(Strng,1,1)=UCase$(Mid$(Strng,1,1))
             Call IO.O
             If Var Then
                Strng=", "+Strng
             Endif
             Var=True
          Endif
       Next
       If Var Then
          Strng="."
       Else
          Strng="<none>"
       Endif
       Call IO.O
    Endif
 Endif
 Call Show.Align
 Call Show.Health
 Call More.Prompt
 If No Or Quit Then
    Exit Sub
 Endif
 Call Display.Info
 Call More.Prompt
 If No Or Quit Then
    Exit Sub
 Endif
 If Room.Toggle Then
    Call Display.Sorted.Inv
 Else
    Call Display.Inventory
 Endif
 Call More.Prompt
 If No Or Quit Then
    Exit Sub
 Endif
 Call Display.Experience
 If Local.Mode Or Debug.Mode Or Sysop Then
    If UserRecord.Level>0 Then
       Call More.Prompt
    Endif
    Strng="Kills: monsters "+Form$(UserRecord.MonstersKilled)+", "+ _
    "players "+Form$(UserRecord.PlayersKilled)+", "+ _
    "permanent "+Form$(UserRecord.PermanentKilled)+"."
    Call IO.O

    Strng="Times died: "
    Select Case UserRecord.TimesDied
    Case 0
       Strng=Strng+"None"
    Case Else
       Strng=Strng+Form$(Cdbl(UserRecord.TimesDied))
    End Select
    Strng=Strng+"."
    Call IO.O

    Strng="Wishes left: "
    Select Case UserRecord.WishsLeft
    Case -1
       Strng=Strng+"Unlimited"
    Case 0
       Strng=Strng+"None"
    Case Else
       Strng=Strng+Form$(Cdbl(UserRecord.WishsLeft))
    End Select
    Strng=Strng+"."
    Call IO.O
 Endif
 Call More.Prompt
Err.Rsm4:
 Exit Sub
Err.Trp4:
 Resume Err.Rsm4
End Sub

Sub Display.Info
 On Local Error Goto Err.Trp7
 Graphics.Off=True
 If Sysop Then
    Graphics.Off=True
    Carriage.Return=True
    Strng="You are a "
    Call IO.O
    Graphics.Off=False
    Strng="Sysop!"
    Call IO.O
 Endif
 If Dungeon.Master Then
    Graphics.Off=True
    Carriage.Return=True
    Strng="You are a "
    Call IO.O
    Graphics.Off=False
    Strng="Dungeon Master!"
    Call IO.O
 Endif
 If Dungeon.Master.Assistant Then
    Graphics.Off=True
    Carriage.Return=True
    Strng="You are an "
    Call IO.O
    Graphics.Off=False
    Strng="Assistant Dungeon Master!"
    Call IO.O
 Endif
 If Town.Mayor Then
    Graphics.Off=True
    Carriage.Return=True
    Strng="You are the "
    Call IO.O
    Graphics.Off=False
    Strng="Town Mayor!"
    Call IO.O
 Endif
 If Governor Then
    Graphics.Off=True
    Carriage.Return=True
    Strng="You are the "
    Call IO.O
    Graphics.Off=False
    Strng="Governor!"
    Call IO.O
 Endif
 If Guild.Master Then
    Graphics.Off=True
    Carriage.Return=True
    Strng="You are the "
    Call IO.O
    Graphics.Off=False
    Strng="Guild Master!"
    Call IO.O
 Endif
 If Hidden.Player Then
    Graphics.Off=True
    Carriage.Return=True
    Strng="You are "
    Call IO.O
    Graphics.Off=False
    Strng="hidden!"
    Call IO.O
 Endif
 If UserRecord.Invisible Or Invisible Then
    Graphics.Off=True
    Carriage.Return=True
    Strng="You are "
    Call IO.O
    Graphics.Off=False
    Strng="invisible!"
    Call IO.O
    If Invisible Then
       Strng="Invisible rounds left:"+Str$(Invisible)+"."
       Call IO.O
    Endif
 Endif
 If UserRecord.Poison Then
    Graphics.Off=True
    Carriage.Return=True
    Strng="You are "
    Call IO.O
    Graphics.Off=False
    Strng="poisoned!"
    Call IO.O
 Endif
 Graphics.Off=True
 Var1=False
 Var2=False
 For Var=1 To 10
    If UserRecord.Weapon(Var).Index Then
       Select Case Var
       Case 1, 2, 3, 4, 6, 8, 9, 10
          Var1=True
       Case Else
          Var2=True
       End Select
    Endif
 Next
 If Var1=False Then
    Strng="You are wearing nothing."
    Call IO.O
 Endif
 If Var2=False Then
    Strng="You are holding nothing."
    Call IO.O
 Endif
 Strng=Nul ' cloak
 Var1!=UserRecord.Weapon(8).Index
 If Var1! Then
    Call Read.Record(TreasureFile,Var1!)
    Strng="You are wearing "
    Carriage.Return=True
    Graphics.Off=True
    Call IO.O
    Graphics.Off=False
    Strng=Rtrim$(TreasureRecord.TreasureName)
    Strng=Rtrim$(TreasureRecord.Prefix1)+Strng
    Call Convert.ANSI(True,VarQ,VarR)
    Carriage.Return=True
    Graphics.On=True
    Call IO.O
    Graphics.On=False
    Temp1=TreasureRecord.Plus
    If Temp1 Then
       Call Treasure.Plus
       If Out2<>Nul Then
          Strng=Strng+" "+Out2
       Endif
    Endif
    If TreasureRecord.Invisible Then
       Strng=Strng+" [inv]"
    Endif
    Graphics.Off=True
    Strng=Strng+"."
    Call IO.O
 Endif
 Strng=Nul ' weapon/shield
 Var1!=UserRecord.Weapon(7).Index
 Var2!=UserRecord.Weapon(5).Index
 If Var1! Or Var2! Then
    Strng="You are holding "
    Carriage.Return=True
    Graphics.Off=True
    Call IO.O
    Graphics.Off=False
    If Var1! Then
       Call Read.Record(TreasureFile,Var1!)
       Strng=Rtrim$(TreasureRecord.TreasureName)
       Strng=Rtrim$(TreasureRecord.Prefix1)+Strng
       Call Convert.ANSI(True,VarQ,VarR)
       Carriage.Return=True
       Graphics.On=True
       Call IO.O
       Graphics.On=False
       Temp1=TreasureRecord.Plus
       If Temp1 Then
          Call Treasure.Plus
          If Out2<>Nul Then
             Strng=" "+Out2
             Carriage.Return=True
             Graphics.Off=True
             Call IO.O
             Graphics.Off=False
          Endif
       Endif
    Endif
 Endif
 If Var2! Then
    Call Read.Record(TreasureFile,Var2!)
    If Var1! Then
       Strng=" and "
       Carriage.Return=True
       Graphics.Off=True
       Call IO.O
       Graphics.Off=False
       Strng=Rtrim$(TreasureRecord.TreasureName)
       Strng=Rtrim$(TreasureRecord.Prefix1)+Strng
       Call Convert.ANSI(True,VarQ,VarR)
       Carriage.Return=True
       Graphics.On=True
       Call IO.O
       Graphics.On=False
       Temp1=TreasureRecord.Plus
       If Temp1 Then
          Call Treasure.Plus
          If Out2<>Nul Then
             Strng=" "+Out2
             Carriage.Return=True
             Graphics.Off=True
             Call IO.O
             Graphics.Off=False
          Endif
       Endif
       Graphics.Off=True
       Strng=Strng+"."
       Call IO.O
    Else
       Strng=Rtrim$(TreasureRecord.TreasureName)
       Strng=Rtrim$(TreasureRecord.Prefix1)+Strng
       Call Convert.ANSI(True,VarQ,VarR)
       Carriage.Return=True
       Graphics.On=True
       Call IO.O
       Graphics.On=False
       Temp1=TreasureRecord.Plus
       If Temp1 Then
          Call Treasure.Plus
          If Out2<>Nul Then
             Strng=" "+Out2
             Carriage.Return=True
             Graphics.Off=True
             Call IO.O
             Graphics.Off=False
          Endif
       Endif
       Graphics.Off=True
       Strng=Strng+"."
       Call IO.O
    Endif
 Else
    If Var1! Then
       Graphics.Off=True
       Strng="."
       Call IO.O
    Endif
 Endif
 Strng=Nul ' armor
 Var1!=UserRecord.Weapon(1).Index
 If Var1! Then
    Call Read.Record(TreasureFile,Var1!)
    Strng="You are wearing "
    Carriage.Return=True
    Graphics.Off=True
    Call IO.O
    Graphics.Off=False
    Strng=Rtrim$(TreasureRecord.TreasureName)
    Strng=Rtrim$(TreasureRecord.Prefix1)+Strng
    Call Convert.ANSI(True,VarQ,VarR)
    Carriage.Return=True
    Graphics.On=True
    Call IO.O
    Graphics.On=False
    Temp1=TreasureRecord.Plus
    If Temp1 Then
       Call Treasure.Plus
       If Out2<>Nul Then
          Strng=Strng+" "+Out2
       Endif
    Endif
    Graphics.Off=True
    Strng=Strng+"."
    Call IO.O
 Endif
 Strng=Nul ' amulet
 Var1!=UserRecord.Weapon(10).Index
 If Var1! Then
    Call Read.Record(TreasureFile,Var1!)
    Strng="You are wearing "
    Carriage.Return=True
    Graphics.Off=True
    Call IO.O
    Graphics.Off=False
    Strng=Rtrim$(TreasureRecord.TreasureName)
    Strng=Rtrim$(TreasureRecord.Prefix1)+Strng
    Call Convert.ANSI(True,VarQ,VarR)
    Carriage.Return=True
    Graphics.On=True
    Call IO.O
    Graphics.On=False
    Temp1=TreasureRecord.Plus
    If Temp1 Then
       Call Treasure.Plus
       If Out2<>Nul Then
          Strng=Strng+" "+Out2
       Endif
    Endif
    Graphics.Off=True
    Strng=Strng+" on your ear."
    Call IO.O
 Endif
 Strng=Nul ' ring left/right
 Var1!=UserRecord.Weapon(4).Index
 Var2!=UserRecord.Weapon(9).Index
 If Var1! Or Var2! Then
    Strng="You are wearing "
    Carriage.Return=True
    Graphics.Off=True
    Call IO.O
    Graphics.Off=False
    If Var1! Then
       Call Read.Record(TreasureFile,Var1!)
       Strng=Rtrim$(TreasureRecord.TreasureName)
       Strng=Rtrim$(TreasureRecord.Prefix1)+Strng
       Call Convert.ANSI(True,VarQ,VarR)
       Carriage.Return=True
       Graphics.On=True
       Call IO.O
       Graphics.On=False
       Temp1=TreasureRecord.Plus
       If Temp1 Then
          Call Treasure.Plus
          If Out2<>Nul Then
             Strng=" "+Out2
             Carriage.Return=True
             Graphics.Off=True
             Call IO.O
             Graphics.Off=False
          Endif
       Endif
    Endif
 Endif
 If Var2! Then
    Call Read.Record(TreasureFile,Var2!)
    If Var1! Then
       Strng=" and "
       Carriage.Return=True
       Graphics.Off=True
       Call IO.O
       Graphics.Off=False
       Strng=Rtrim$(TreasureRecord.TreasureName)
       Strng=Rtrim$(TreasureRecord.Prefix1)+Strng
       Call Convert.ANSI(True,VarQ,VarR)
       Carriage.Return=True
       Graphics.On=True
       Call IO.O
       Graphics.On=False
       Temp1=TreasureRecord.Plus
       If Temp1 Then
          Call Treasure.Plus
          If Out2<>Nul Then
             Strng=" "+Out2
             Carriage.Return=True
             Graphics.Off=True
             Call IO.O
             Graphics.Off=False
          Endif
       Endif
       Graphics.Off=True
       Strng=Strng+"."
       Call IO.O
    Else
       Strng=Rtrim$(TreasureRecord.TreasureName)
       Strng=Rtrim$(TreasureRecord.Prefix1)+Strng
       Call Convert.ANSI(True,VarQ,VarR)
       Carriage.Return=True
       Graphics.On=True
       Call IO.O
       Graphics.On=False
       Temp1=TreasureRecord.Plus
       If Temp1 Then
          Call Treasure.Plus
          If Out2<>Nul Then
             Strng=" "+Out2
             Carriage.Return=True
             Graphics.Off=True
             Call IO.O
             Graphics.Off=False
          Endif
       Endif
       Graphics.Off=True
       Strng=Strng+"."
       Call IO.O
    Endif
 Else
    If Var1! Then
       Graphics.Off=True
       Strng="."
       Call IO.O
    Endif
 Endif
 Strng=Nul ' boot/helmet/bracer
 Var1!=UserRecord.Weapon(2).Index
 Var2!=UserRecord.Weapon(3).Index
 Var3!=UserRecord.Weapon(6).Index
 If Var1! Or Var2! Or Var3! Then
    Strng="You are wearing "
    Carriage.Return=True
    Graphics.Off=True
    Call IO.O
    Graphics.Off=False
    If Var1! Then
       Call Read.Record(TreasureFile,Var1!)
       Strng=Rtrim$(TreasureRecord.TreasureName)
       Strng=Rtrim$(TreasureRecord.Prefix1)+Strng
       Call Convert.ANSI(True,VarQ,VarR)
       Carriage.Return=True
       Graphics.On=True
       Call IO.O
       Graphics.On=False
       Temp1=TreasureRecord.Plus
       If Temp1 Then
          Call Treasure.Plus
          If Out2<>Nul Then
             Strng=" "+Out2
             Carriage.Return=True
             Graphics.Off=True
             Call IO.O
             Graphics.Off=False
          Endif
       Endif
    Endif
    If Var2! Then
       If Var1! Then
          Strng=" and "
          Carriage.Return=True
          Graphics.Off=True
          Call IO.O
          Graphics.Off=False
       Endif
       Call Read.Record(TreasureFile,Var2!)
       Strng=Rtrim$(TreasureRecord.TreasureName)
       Strng=Rtrim$(TreasureRecord.Prefix1)+Strng
       Call Convert.ANSI(True,VarQ,VarR)
       Carriage.Return=True
       Graphics.On=True
       Call IO.O
       Graphics.On=False
       Temp1=TreasureRecord.Plus
       If Temp1 Then
          Call Treasure.Plus
          If Out2<>Nul Then
             Strng=" "+Out2
             Carriage.Return=True
             Graphics.Off=True
             Call IO.O
             Graphics.Off=False
          Endif
       Endif
    Endif
    If Var3! Then
       If Var1! Or Var2! Then
          Strng=" and "
          Carriage.Return=True
          Graphics.Off=True
          Call IO.O
          Graphics.Off=False
       Endif
       Call Read.Record(TreasureFile,Var3!)
       Strng=Rtrim$(TreasureRecord.TreasureName)
       Strng=Rtrim$(TreasureRecord.Prefix1)+Strng
       Call Convert.ANSI(True,VarQ,VarR)
       Carriage.Return=True
       Graphics.On=True
       Call IO.O
       Graphics.On=False
       Temp1=TreasureRecord.Plus
       If Temp1 Then
          Call Treasure.Plus
          If Out2<>Nul Then
             Strng=" "+Out2
             Carriage.Return=True
             Graphics.Off=True
             Call IO.O
             Graphics.Off=False
          Endif
       Endif
    Endif
    Graphics.Off=True
    Strng=Strng+"."
    Call IO.O
 Endif
Err.Rsm7:
 Exit Sub
Err.Trp7:
 Resume Err.Rsm7
End Sub

Sub Display.Experience
 On Local Error Goto Err.Trp6
 Graphics.Off=True
 If UserRecord.Level<=0 Then
'    Strng="You are dead."
'    Call IO.O
    Exit Sub
 Endif
 Call Amount6(UserRecord.Gold,Var$)
 Strng="You have"+Var$+" gold."
 Call IO.O
 If UserRecord.Level=32767 Then
    Call Amount6(UserRecord.Experience,Var$)
    Strng="You have"+Var$+" experience points."
    Call IO.O
    Exit Sub
 Endif
 Call Gold(Temp#)
 Call Amount6(Temp#,VarQ$)
 Strng="You need"+VarQ$+" gold to train for level "+Form$(Cdbl(UserRecord.Level+1))+"."
 Call IO.O
 Call Experience(Temp#)
 Call Amount6(Temp#,VarQ$)
 If Config2(93)=False Then
    Strng="You need"+VarQ$+" experience points to train for level "+Form$(Cdbl(UserRecord.Level+1))+"."
    Call IO.O
 Else
    Call Amount6(UserRecord.Experience,VarQ$)
    Strng="You have"+VarQ$+" experience points."
    Call IO.O
    Call Experience(Temp#)
    Call Amount6(Temp#,VarQ$)
    Strng="You need"+VarQ$+" experience points to train for level "+Form$(Cdbl(UserRecord.Level+1))+"."
    Call IO.O
 Endif
Err.Rsm6:
 Exit Sub
Err.Trp6:
 Resume Err.Rsm6
End Sub

Sub Gold(Var#)
 On Local Error Goto ErrTrap15
 Var1#=Config2(91)+Config2(94)
 Var2#=2^Var1#
 If UserRecord.Level<=Config2(94) Then
    Var#=2^(UserRecord.Level+Config2(91))
 Else
    Var#=Var2#+(UserRecord.Level-Config2(94))*Config1(31)
 Endif
ErrResume15:
 Exit Sub
ErrTrap15:
 Resume ErrResume15
End Sub

Sub Experience(Var#)
 On Local Error Goto ErrTrap16
 Var1#=Config2(92)+Config2(95)
 Var2#=2^Var1#
 If UserRecord.Level<=Config2(95) Then
    Var#=2^(UserRecord.Level+Config2(92))
 Else
    Var#=Var2#+(UserRecord.Level-Config2(95))*Config1(32)
 Endif
ErrResume16:
 Exit Sub
ErrTrap16:
 Resume ErrResume16
End Sub

Sub Show.Align
 On Local Error Goto Err.Trp10
 Graphics.Off=True
 If UserRecord.Level<=False Then
    Strng="You are dead!"
    Call IO.O
    Exit Sub
 Endif
 Strng="You are a level "
 If UserRecord.Level>10 Then
    Strng=Strng+Form$(Cdbl(UserRecord.Level))
 Else
    Strng=Strng+Rtrim$(Numeral(UserRecord.Level))
 Endif
 If UserRecord.Race<=False Then
    UserRecord.Race=Human
 Endif

 Strng=Strng+" "+Rtrim$(Race(UserRecord.Race))+" "
 Out2=Rtrim$(UserRecord.Prefix2)
 Out2=Out2+UserRecord.ClassName
 Strng=Strng+Rtrim$(Out2)

 Call Convert.ANSI(True,VarQ,VarR)
 Carriage.Return=True
 Graphics.On=True
 Call IO.O
 Graphics.On=False

 Graphics.Off=True
 Strng="."
 Call IO.O
 Graphics.Off=False

 Strng="You are aligned "
 Strng=Strng+Rtrim$(Alignment.Name1(UserRecord.Align1+2))+" "
 Strng=Strng+Rtrim$(Alignment.Name2(UserRecord.Align2+2))+"."
 Call IO.O
Err.Rsm10:
 Exit Sub
Err.Trp10:
 Resume Err.Rsm10
End Sub

Sub Show.Health
 On Local Error Goto Err.Trp9
 Graphics.Off=True
 Strng="Vitals:"
 Var1#=Cdbl(UserRecord.FatigueMax)+Cdbl(UserRecord.VitalityMax)
 Var2#=Cdbl(UserRecord.Fatigue)+Cdbl(UserRecord.Vitality)
 If Var1#=DFalse Then
    Temp#=DFalse
 Else
    Temp#=((Var2#/Var1#)*.40#)*100#
    Temp#=Int(Temp#)
    If Temp#<1.0# Then
       Temp#=1.0#
    Endif
 Endif
 IF Temp#<DFalse Then
    Temp#=DFalse
 Endif
 Strng=Strng+" Body"+Str$(Temp#)+"/40%"
 If Var1#=DFalse Then
    Temp#=DFalse
 Else
    Temp#=((Var2#/Var1#)*.25#)*100#
    Temp#=Int(Temp#)
    If Temp#<1.0# Then
       Temp#=1.0#
    Endif
 Endif
 IF Temp#<DFalse Then
    Temp#=DFalse
 Endif
 Strng=Strng+" Arms"+Str$(Temp#)+"/25%"
 If Var1#=DFalse Then
    Temp#=DFalse
 Else
    Temp#=((Var2#/Var1#)*.25#)*100#
    Temp#=Int(Temp#)
    If Temp#<1.0# Then
       Temp#=1.0#
    Endif
 Endif
 IF Temp#<DFalse Then
    Temp#=DFalse
 Endif
 Strng=Strng+" Legs"+Str$(Temp#)+"/25%"
 If Var1#=DFalse Then
    Temp#=DFalse
 Else
    Temp#=((Var2#/Var1#)*.10#)*100#
    Temp#=Int(Temp#)
    If Temp#<1.0# Then
       Temp#=1.0#
    Endif
 Endif
 IF Temp#<DFalse Then
    Temp#=DFalse
 Endif
 Strng=Strng+" Head"+Str$(Temp#)+"/10%"
 Call IO.O
 Strng="Vital hits: "
 Strng=Strng+"Fat "+Form$(Cdbl(UserRecord.Fatigue))+"/"+ _
 Form$(Cdbl(UserRecord.FatigueMax))
 Temp#=DFalse
 If UserRecord.Weapon(1).Index Then
    Temp#=Temp#+Cdbl(UserRecord.Weapon(1).Plus)
 Endif
 If UserRecord.Weapon(5).Index Then
    Temp#=Temp#+Cdbl(UserRecord.Weapon(5).Plus)
 Endif
 If UserRecord.Weapon(2).Index Then
    Temp#=Temp#+Cdbl(UserRecord.Weapon(2).Plus)
 Endif
 If UserRecord.Weapon(3).Index Then
    Temp#=Temp#+Cdbl(UserRecord.Weapon(3).Plus)
 Endif
 If UserRecord.Weapon(6).Index Then
    Temp#=Temp#+Cdbl(UserRecord.Weapon(6).Plus)
 Endif
 If UserRecord.Weapon(10).Index Then
    Temp#=Temp#+Cdbl(UserRecord.Weapon(10).Plus)
 Endif
 Gosub Append.Plus
 Strng=Strng+" Vit "+Form$(Cdbl(UserRecord.Vitality))+"/"
 Strng=Strng+Form$(Cdbl(UserRecord.VitalityMax))
 Strng=Strng+" Mag "+Form$(Cdbl(UserRecord.Magic))+"/"
 Strng=Strng+Form$(Cdbl(UserRecord.MagicMax))
 Temp#=DFalse
 If UserRecord.Weapon(4).Index Then
    Temp#=Temp#+Cdbl(UserRecord.Weapon(4).Plus)
 Endif
 If UserRecord.Weapon(9).Index Then
    Temp#=Temp#+Cdbl(UserRecord.Weapon(4).Plus)
 Endif
 Gosub Append.Plus
 Strng=Strng+" Psi "+Form$(Cdbl(UserRecord.Psionic))+"/"
 Strng=Strng+Form$(Cdbl(UserRecord.PsionicMax))
 Call IO.O
 Strng="Stats: "
 For Temp5=1 To MaxStats
    Strng=Strng+Left$(Stat(Temp5),3)+" "
    Strng=Strng+Form$(Cdbl(UserRecord.Stats(Temp5)))
    If Temp5=1 Then
       If UserRecord.Weapon(7).Index Then
          Temp#=Cdbl(UserRecord.Weapon(7).Plus)
          Gosub Append.Plus
       Endif
    Endif
    Strng=Strng+" "
 Next
 If UserRecord.ClassType=Lady Then
    Strng=Strng+" Beu "+Form$(Cdbl(UserRecord.Beauty))
    Strng=Strng+" Gla "+Form$(Cdbl(UserRecord.Glamour))
 Endif
 Call IO.O
 Strng="Weapons: "
 For Temp2=1 To MaxWeapons
    Out2=Rtrim$(Weapon.Type.Name(Temp2))
    Mid$(Out2,1,1)=Ucase$(Mid$(Out2,1,1))
    Strng=Strng+Out2+Str$(Cdbl(UserRecord.Weapons(Temp2)))+"% "
 Next
 Strng=Rtrim$(Strng)
 Call IO.O
 Exit Sub
Append.Plus:
 If Temp# Then
    If Temp#>32767# Then
       Temp1=MaxInt
    Else
       Temp1=Cint(Temp#)
    Endif
    Call Item.Plus(2,Temp1,Out2)
    If Out2<>Nul Then
       Strng=Strng+Out2
    Endif
 Endif
 Return
Err.Rsm9:
 Exit Sub
Err.Trp9:
 Resume Err.Rsm9
End Sub

Sub Amount6(Var#,Var$)
 VarX$=Ltrim$(Str$(Var#)) ' 1.111D308
 V=Instr(VarX$,"D")
 If V Then
    If Mid$(VarX$,2,1)="." Then
       VarX$=Left$(VarX$,1)+Mid$(VarX$,V)
    Endif
    Var$=" "+VarX$
 Else
    Var$=" "+Form$(Var#)
 Endif
End Sub

