mirror of
https://bitbucket.org/grumdrig/pq.git
synced 2026-09-30 01:01:00 -06:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a2ae462d30 | ||
|
|
5fa415a542 | ||
|
|
a12ef24a3b | ||
|
|
de061990c9 | ||
|
|
a692172852 | ||
|
|
2794b6eced | ||
|
|
fd0680126b | ||
|
|
17f4c78a74 | ||
|
|
c7911ffbca | ||
|
|
e3c564529d | ||
|
|
16c8a5b053 | ||
|
|
bf3619f270 | ||
|
|
861e68e477 | ||
|
|
f503ab75a7 | ||
|
|
24895486cf | ||
|
|
cbb3d5daac | ||
|
|
9030d1ba58 | ||
|
|
a0e0d53739 | ||
|
|
64aca6ec2f | ||
|
|
bf632cb99b | ||
|
|
d611931e37 | ||
|
|
e371be0bc4 | ||
|
|
07b569a7d1 | ||
|
|
cad63aac86 | ||
|
|
86f57c02cb | ||
|
|
082c65a863 | ||
|
|
38e1fc3763 | ||
|
|
9396003e3f | ||
|
|
c6eaa46994 | ||
|
|
6f3a72ac27 | ||
|
|
ddff883b06 | ||
|
|
03468f6666 | ||
|
|
32f584559a | ||
|
|
3d107337fd | ||
|
|
d5b41649ea | ||
|
|
a0f0879520 | ||
|
|
ee648fd4ec | ||
|
|
05718c79d9 | ||
|
|
5d11926e15 | ||
|
|
9a85adf823 |
No files matched your search
@@ -0,0 +1,7 @@
|
|||||||
|
*.obj
|
||||||
|
*.~*
|
||||||
|
*.bak
|
||||||
|
*.dcu
|
||||||
|
*.ddp
|
||||||
|
*.pq
|
||||||
|
pq.exe
|
||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+135
-7
@@ -1,7 +1,7 @@
|
|||||||
object K: TK
|
object K: TK
|
||||||
Left = 335
|
Left = 202
|
||||||
Top = 119
|
Top = 129
|
||||||
Width = 572
|
Width = 800
|
||||||
Height = 567
|
Height = 567
|
||||||
Caption = 'K'
|
Caption = 'K'
|
||||||
Color = clBtnFace
|
Color = clBtnFace
|
||||||
@@ -111,6 +111,34 @@ object K: TK
|
|||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'DefenseBad'
|
Caption = 'DefenseBad'
|
||||||
end
|
end
|
||||||
|
object Label15: TLabel
|
||||||
|
Left = 480
|
||||||
|
Top = 8
|
||||||
|
Width = 26
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Race'
|
||||||
|
end
|
||||||
|
object Label16: TLabel
|
||||||
|
Left = 480
|
||||||
|
Top = 120
|
||||||
|
Width = 25
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Class'
|
||||||
|
end
|
||||||
|
object Label17: TLabel
|
||||||
|
Left = 328
|
||||||
|
Top = 120
|
||||||
|
Width = 25
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Titles'
|
||||||
|
end
|
||||||
|
object Label18: TLabel
|
||||||
|
Left = 476
|
||||||
|
Top = 428
|
||||||
|
Width = 74
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Impressive titles'
|
||||||
|
end
|
||||||
object Spells: TMemo
|
object Spells: TMemo
|
||||||
Left = 8
|
Left = 8
|
||||||
Top = 132
|
Top = 132
|
||||||
@@ -124,6 +152,7 @@ object K: TK
|
|||||||
'Sadness'
|
'Sadness'
|
||||||
'Seasick'
|
'Seasick'
|
||||||
'Gyp'
|
'Gyp'
|
||||||
|
'Shoelaces'
|
||||||
'Innoculate'
|
'Innoculate'
|
||||||
'Cone of Annoyance'
|
'Cone of Annoyance'
|
||||||
'Magnetic Orb'
|
'Magnetic Orb'
|
||||||
@@ -133,6 +162,7 @@ object K: TK
|
|||||||
'Spectral Miasma'
|
'Spectral Miasma'
|
||||||
'Clever Fellow'
|
'Clever Fellow'
|
||||||
'Lockjaw'
|
'Lockjaw'
|
||||||
|
'History Lesson'
|
||||||
'Hydrophobia'
|
'Hydrophobia'
|
||||||
'Big Sister'
|
'Big Sister'
|
||||||
'Cone of Paste'
|
'Cone of Paste'
|
||||||
@@ -289,6 +319,7 @@ object K: TK
|
|||||||
'Crankbow|6'
|
'Crankbow|6'
|
||||||
'Blibo|7'
|
'Blibo|7'
|
||||||
'Broadsword|7'
|
'Broadsword|7'
|
||||||
|
'Kreen|7'
|
||||||
'Morning Star|8'
|
'Morning Star|8'
|
||||||
'Pole-adze|8'
|
'Pole-adze|8'
|
||||||
'Spontoon|8'
|
'Spontoon|8'
|
||||||
@@ -343,7 +374,8 @@ object K: TK
|
|||||||
'Bijou'
|
'Bijou'
|
||||||
'Spangle'
|
'Spangle'
|
||||||
'Gimcrack'
|
'Gimcrack'
|
||||||
'Hood')
|
'Hood'
|
||||||
|
'Vulpeculum')
|
||||||
TabOrder = 6
|
TabOrder = 6
|
||||||
WordWrap = False
|
WordWrap = False
|
||||||
end
|
end
|
||||||
@@ -495,7 +527,8 @@ object K: TK
|
|||||||
'casket'
|
'casket'
|
||||||
'nosegay'
|
'nosegay'
|
||||||
'trinket'
|
'trinket'
|
||||||
'credenza')
|
'credenza'
|
||||||
|
'writ')
|
||||||
TabOrder = 9
|
TabOrder = 9
|
||||||
WordWrap = False
|
WordWrap = False
|
||||||
end
|
end
|
||||||
@@ -571,7 +604,7 @@ object K: TK
|
|||||||
'Brass Dragon|7|pole'
|
'Brass Dragon|7|pole'
|
||||||
'Tin Dragon|8|*'
|
'Tin Dragon|8|*'
|
||||||
'Bronze Dragon|9|medal'
|
'Bronze Dragon|9|medal'
|
||||||
'Chromatic Dragon|16|mineral water'
|
'Chromatic Dragon|16|scale'
|
||||||
'Copper Dragon|8|loafer'
|
'Copper Dragon|8|loafer'
|
||||||
'Gold Dragon|8|filling'
|
'Gold Dragon|8|filling'
|
||||||
'Green Dragon|8|*'
|
'Green Dragon|8|*'
|
||||||
@@ -734,7 +767,8 @@ object K: TK
|
|||||||
'Uruk|2|boot'
|
'Uruk|2|boot'
|
||||||
'Poroid|4|node'
|
'Poroid|4|node'
|
||||||
'Moakum|8|frenum'
|
'Moakum|8|frenum'
|
||||||
'Fly|0|*')
|
'Fly|0|*'
|
||||||
|
'Hogbird|3|curl')
|
||||||
TabOrder = 10
|
TabOrder = 10
|
||||||
WordWrap = False
|
WordWrap = False
|
||||||
end
|
end
|
||||||
@@ -804,4 +838,98 @@ object K: TK
|
|||||||
TabOrder = 13
|
TabOrder = 13
|
||||||
WordWrap = False
|
WordWrap = False
|
||||||
end
|
end
|
||||||
|
object Races: TMemo
|
||||||
|
Left = 480
|
||||||
|
Top = 24
|
||||||
|
Width = 249
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Half Orc|HP Max'
|
||||||
|
'Half Man|CHA'
|
||||||
|
'Half Halfling|DEX'
|
||||||
|
'Double Hobbit|STR'
|
||||||
|
'Hob-Hobbit|DEX,CON'
|
||||||
|
'Low Elf|CON'
|
||||||
|
'Dung Elf|WIS'
|
||||||
|
'Talking Pony|MP Max,INT'
|
||||||
|
'Gyrognome|DEX'
|
||||||
|
'Lesser Dwarf|CON'
|
||||||
|
'Crested Dwarf|CHA'
|
||||||
|
'Eel Man|DEX'
|
||||||
|
'Panda Man|CON,STR'
|
||||||
|
'Trans-Kobold|WIS'
|
||||||
|
'Enchanted Motorcycle|MP Max'
|
||||||
|
'Will o'#39' the Wisp|WIS'
|
||||||
|
'Battle-Finch|DEX,INT'
|
||||||
|
'Double Wookiee|STR'
|
||||||
|
'Skraeling|WIS'
|
||||||
|
'Demicanadian|CON'
|
||||||
|
'Land Squid|STR,HP Max')
|
||||||
|
TabOrder = 14
|
||||||
|
end
|
||||||
|
object Klasses: TMemo
|
||||||
|
Left = 480
|
||||||
|
Top = 136
|
||||||
|
Width = 249
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Ur-Paladin|WIS,CON'
|
||||||
|
'Voodoo Princess|INT,CHA'
|
||||||
|
'Robot Monk|STR'
|
||||||
|
'Mu-Fu Monk|DEX'
|
||||||
|
'Mage Illusioner|INT,MP Max'
|
||||||
|
'Shiv-Knight|DEX'
|
||||||
|
'Inner Mason|CON'
|
||||||
|
'Fighter/Organist|CHA,STR'
|
||||||
|
'Puma Burgular|DEX'
|
||||||
|
'Runeloremaster|WIS'
|
||||||
|
'Hunter Strangler|DEX,INT'
|
||||||
|
'Battle-Felon|STR'
|
||||||
|
'Tickle-Mimic|WIS,INT'
|
||||||
|
'Slow Poisoner|CON'
|
||||||
|
'Bastard Lunatic|CON'
|
||||||
|
'Jungle Clown|DEX,CHA'
|
||||||
|
'Birdrider|WIS'
|
||||||
|
'Vermineer|INT')
|
||||||
|
TabOrder = 15
|
||||||
|
end
|
||||||
|
object Titles: TMemo
|
||||||
|
Left = 328
|
||||||
|
Top = 136
|
||||||
|
Width = 57
|
||||||
|
Height = 81
|
||||||
|
Lines.Strings = (
|
||||||
|
'Mr.'
|
||||||
|
'Mrs.'
|
||||||
|
'Sir'
|
||||||
|
'Sgt.'
|
||||||
|
'Ms.'
|
||||||
|
'Captain'
|
||||||
|
'Chief'
|
||||||
|
'Admiral'
|
||||||
|
'Saint')
|
||||||
|
TabOrder = 16
|
||||||
|
end
|
||||||
|
object ImpressiveTitles: TMemo
|
||||||
|
Left = 476
|
||||||
|
Top = 442
|
||||||
|
Width = 149
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'King'
|
||||||
|
'Queen'
|
||||||
|
'Lord'
|
||||||
|
'Lady'
|
||||||
|
'Viceroy'
|
||||||
|
'Mayor'
|
||||||
|
'Prince'
|
||||||
|
'Princess'
|
||||||
|
'Chief'
|
||||||
|
'Boss'
|
||||||
|
'Archbishop'
|
||||||
|
'Baron'
|
||||||
|
'Comptroller')
|
||||||
|
TabOrder = 17
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
end
|
end
|
||||||
@@ -37,6 +37,14 @@ type
|
|||||||
Label13: TLabel;
|
Label13: TLabel;
|
||||||
DefenseBad: TMemo;
|
DefenseBad: TMemo;
|
||||||
Label14: TLabel;
|
Label14: TLabel;
|
||||||
|
Races: TMemo;
|
||||||
|
Label15: TLabel;
|
||||||
|
Label16: TLabel;
|
||||||
|
Klasses: TMemo;
|
||||||
|
Label17: TLabel;
|
||||||
|
Titles: TMemo;
|
||||||
|
ImpressiveTitles: TMemo;
|
||||||
|
Label18: TLabel;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ object FrontForm: TFrontForm
|
|||||||
BorderIcons = []
|
BorderIcons = []
|
||||||
BorderStyle = bsNone
|
BorderStyle = bsNone
|
||||||
BorderWidth = 2
|
BorderWidth = 2
|
||||||
ClientHeight = 251
|
ClientHeight = 255
|
||||||
ClientWidth = 452
|
ClientWidth = 452
|
||||||
Color = clRed
|
Color = clRed
|
||||||
TransparentColorValue = clWhite
|
TransparentColorValue = clWhite
|
||||||
@@ -93,19 +93,19 @@ object FrontForm: TFrontForm
|
|||||||
Left = 0
|
Left = 0
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 452
|
Width = 452
|
||||||
Height = 251
|
Height = 255
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BevelInner = bvLowered
|
BevelInner = bvLowered
|
||||||
Color = clWhite
|
Color = clWhite
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object Label2: TLabel
|
object Label2: TLabel
|
||||||
Left = 2
|
Left = 2
|
||||||
Top = 236
|
Top = 240
|
||||||
Width = 448
|
Width = 448
|
||||||
Height = 13
|
Height = 13
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
Alignment = taCenter
|
Alignment = taCenter
|
||||||
Caption = #169' 2003 Eric Fredricksen - v6.2'
|
Caption = #169' 2002-2022 Eric Fredricksen - v6.4.2'
|
||||||
Color = clWhite
|
Color = clWhite
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
Font.Color = 11382189
|
Font.Color = 11382189
|
||||||
@@ -184,7 +184,7 @@ object FrontForm: TFrontForm
|
|||||||
Left = 2
|
Left = 2
|
||||||
Top = 2
|
Top = 2
|
||||||
Width = 251
|
Width = 251
|
||||||
Height = 234
|
Height = 238
|
||||||
Align = alLeft
|
Align = alLeft
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
BorderWidth = 10
|
BorderWidth = 10
|
||||||
|
|||||||
@@ -23,10 +23,6 @@ type
|
|||||||
Label1: TLabel;
|
Label1: TLabel;
|
||||||
procedure HomeLinkClick(Sender: TObject);
|
procedure HomeLinkClick(Sender: TObject);
|
||||||
procedure LogoClick(Sender: TObject);
|
procedure LogoClick(Sender: TObject);
|
||||||
private
|
|
||||||
{ Private declarations }
|
|
||||||
public
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
@@ -40,12 +36,12 @@ uses ShellAPI, Main, Info;
|
|||||||
|
|
||||||
procedure TFrontForm.HomeLinkClick(Sender: TObject);
|
procedure TFrontForm.HomeLinkClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/', nil, '', SW_SHOW);
|
ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/', nil, '', SW_SHOW);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFrontForm.LogoClick(Sender: TObject);
|
procedure TFrontForm.LogoClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/', nil, '', SW_SHOW);
|
ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/', nil, '', SW_SHOW);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
object MainForm: TMainForm
|
object MainForm: TMainForm
|
||||||
Left = 281
|
Left = 238
|
||||||
Top = 121
|
Top = 148
|
||||||
Width = 682
|
Width = 682
|
||||||
Height = 569
|
Height = 513
|
||||||
HorzScrollBar.Visible = False
|
HorzScrollBar.Visible = False
|
||||||
VertScrollBar.Visible = False
|
VertScrollBar.Visible = False
|
||||||
Caption = 'Progress Quest'
|
Caption = 'Progress Quest'
|
||||||
@@ -96,7 +96,7 @@ object MainForm: TMainForm
|
|||||||
Left = 0
|
Left = 0
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 200
|
Width = 200
|
||||||
Height = 507
|
Height = 444
|
||||||
Align = alLeft
|
Align = alLeft
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object Label1: TLabel
|
object Label1: TLabel
|
||||||
@@ -214,7 +214,7 @@ object MainForm: TMainForm
|
|||||||
Left = 1
|
Left = 1
|
||||||
Top = 271
|
Top = 271
|
||||||
Width = 198
|
Width = 198
|
||||||
Height = 203
|
Height = 140
|
||||||
Align = alClient
|
Align = alClient
|
||||||
Columns = <
|
Columns = <
|
||||||
item
|
item
|
||||||
@@ -236,7 +236,7 @@ object MainForm: TMainForm
|
|||||||
end
|
end
|
||||||
object Cheats: TPanel
|
object Cheats: TPanel
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 474
|
Top = 411
|
||||||
Width = 198
|
Width = 198
|
||||||
Height = 32
|
Height = 32
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
@@ -293,7 +293,7 @@ object MainForm: TMainForm
|
|||||||
Left = 474
|
Left = 474
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 200
|
Width = 200
|
||||||
Height = 507
|
Height = 444
|
||||||
Align = alRight
|
Align = alRight
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
object Label3: TLabel
|
object Label3: TLabel
|
||||||
@@ -326,7 +326,7 @@ object MainForm: TMainForm
|
|||||||
end
|
end
|
||||||
object QuestBar: TProgressBar
|
object QuestBar: TProgressBar
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 490
|
Top = 427
|
||||||
Width = 198
|
Width = 198
|
||||||
Height = 16
|
Height = 16
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
@@ -377,7 +377,7 @@ object MainForm: TMainForm
|
|||||||
Left = 1
|
Left = 1
|
||||||
Top = 190
|
Top = 190
|
||||||
Width = 198
|
Width = 198
|
||||||
Height = 300
|
Height = 237
|
||||||
Align = alClient
|
Align = alClient
|
||||||
Columns = <
|
Columns = <
|
||||||
item
|
item
|
||||||
@@ -401,7 +401,7 @@ object MainForm: TMainForm
|
|||||||
Left = 200
|
Left = 200
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 274
|
Width = 274
|
||||||
Height = 507
|
Height = 444
|
||||||
Align = alClient
|
Align = alClient
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
object InventoryLabelAlsoGameStyle: TLabel
|
object InventoryLabelAlsoGameStyle: TLabel
|
||||||
@@ -420,7 +420,7 @@ object MainForm: TMainForm
|
|||||||
end
|
end
|
||||||
object Label7: TLabel
|
object Label7: TLabel
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 477
|
Top = 414
|
||||||
Width = 272
|
Width = 272
|
||||||
Height = 13
|
Height = 13
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
@@ -450,7 +450,7 @@ object MainForm: TMainForm
|
|||||||
Left = 1
|
Left = 1
|
||||||
Top = 189
|
Top = 189
|
||||||
Width = 272
|
Width = 272
|
||||||
Height = 288
|
Height = 225
|
||||||
Align = alClient
|
Align = alClient
|
||||||
Columns = <
|
Columns = <
|
||||||
item
|
item
|
||||||
@@ -473,7 +473,7 @@ object MainForm: TMainForm
|
|||||||
end
|
end
|
||||||
object EncumBar: TProgressBar
|
object EncumBar: TProgressBar
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 490
|
Top = 427
|
||||||
Width = 272
|
Width = 272
|
||||||
Height = 16
|
Height = 16
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
@@ -562,7 +562,7 @@ object MainForm: TMainForm
|
|||||||
end
|
end
|
||||||
object Panel4: TPanel
|
object Panel4: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 507
|
Top = 444
|
||||||
Width = 674
|
Width = 674
|
||||||
Height = 35
|
Height = 35
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
unit Main;
|
unit Main;
|
||||||
{ copyright (c)2002 Eric Fredricksen all rights reserved }
|
{ copyright (c)2022 Eric Fredricksen all rights reserved }
|
||||||
|
|
||||||
{$UNDEF CHEATS}
|
{$UNDEF CHEATS}
|
||||||
{$UNDEF LOGGING}
|
{$UNDEF LOGGING}
|
||||||
|
{$UNDEF TURBO}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
@@ -12,11 +13,15 @@ uses
|
|||||||
|
|
||||||
const
|
const
|
||||||
// revs:
|
// revs:
|
||||||
|
// 8: pq 6.4.1
|
||||||
|
// 7: pq 6.4
|
||||||
|
// 6: pq-web
|
||||||
|
// 5: pq 6.3 (no official release)
|
||||||
// 4: pq 6.2
|
// 4: pq 6.2
|
||||||
// 3: pq 6.1
|
// 3: pq 6.1
|
||||||
// 2: pq 6.0
|
// 2: pq 6.0
|
||||||
// 1: pq 6.0, some early release I guess; don't remember
|
// 1: pq 6.0, some early release I guess; don't remember
|
||||||
RevString = '&rev=4';
|
RevString = '&rev=8';
|
||||||
wmIconTray = WM_USER + Ord('t');
|
wmIconTray = WM_USER + Ord('t');
|
||||||
kFileExt = '.pq';
|
kFileExt = '.pq';
|
||||||
|
|
||||||
@@ -104,6 +109,9 @@ type
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
procedure ExportCharSheet;
|
procedure ExportCharSheet;
|
||||||
function CharSheet: String;
|
function CharSheet: String;
|
||||||
|
procedure InterplotCinematic;
|
||||||
|
function NamedMonster(level: Integer): String;
|
||||||
|
function ImpressiveGuy: String;
|
||||||
public
|
public
|
||||||
FTrayIcon: TNotifyIconData;
|
FTrayIcon: TNotifyIconData;
|
||||||
FReportSave: Boolean;
|
FReportSave: Boolean;
|
||||||
@@ -145,7 +153,8 @@ type
|
|||||||
var
|
var
|
||||||
MainForm: TMainForm;
|
MainForm: TMainForm;
|
||||||
|
|
||||||
function Split(s: String; field: Integer): String;
|
function Split(s: String; field: Integer): String; overload;
|
||||||
|
function Split(s: String; field: Integer; separator: String): String; overload;
|
||||||
|
|
||||||
procedure Navigate(url: String);
|
procedure Navigate(url: String);
|
||||||
|
|
||||||
@@ -194,15 +203,21 @@ var
|
|||||||
kOpenCommand: String;
|
kOpenCommand: String;
|
||||||
begin
|
begin
|
||||||
kOpenCommand := '"' + Application.ExeName + '" "%1"';
|
kOpenCommand := '"' + Application.ExeName + '" "%1"';
|
||||||
RegWrite(HKEY_CLASSES_ROOT, kFileExt,'', kPQFileType);
|
try
|
||||||
RegWrite(HKEY_CLASSES_ROOT, kPQFileType, '', 'Progresss Quest saved game');
|
RegWrite(HKEY_CLASSES_ROOT, kFileExt,'', kPQFileType);
|
||||||
RegWrite(HKEY_CLASSES_ROOT, kPQFileType + '\DefaultIcon', '', Application.ExeName + ',0');
|
RegWrite(HKEY_CLASSES_ROOT, kPQFileType, '', 'Progresss Quest saved game');
|
||||||
RegWrite(HKEY_CLASSES_ROOT, kPQFileType + '\Shell\Open', '', '&Open');
|
RegWrite(HKEY_CLASSES_ROOT, kPQFileType + '\DefaultIcon', '', Application.ExeName + ',0');
|
||||||
if RegRead(HKEY_CLASSES_ROOT, kPQFileType + '\Shell\Open\Command', '') <> kOpenCommand then begin
|
RegWrite(HKEY_CLASSES_ROOT, kPQFileType + '\Shell\Open', '', '&Open');
|
||||||
RegWrite(HKEY_CLASSES_ROOT, kPQFileType + '\Shell\Open\Command', '', kOpenCommand);
|
if RegRead(HKEY_CLASSES_ROOT, kPQFileType + '\Shell\Open\Command', '') <> kOpenCommand then begin
|
||||||
// Notify Windows Explorer to realize we added this. In case this is slow
|
RegWrite(HKEY_CLASSES_ROOT, kPQFileType + '\Shell\Open\Command', '', kOpenCommand);
|
||||||
// I don't do this unless I'm sure this one has changed.
|
// Notify Windows Explorer to realize we added this. In case this is slow
|
||||||
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
|
// I don't do this unless I'm sure this one has changed.
|
||||||
|
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
on Exception do begin
|
||||||
|
// Don't care
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -321,7 +336,12 @@ function RandomLow(below: Integer): Integer;
|
|||||||
begin
|
begin
|
||||||
Result := Min(Random(below),Random(below));
|
Result := Min(Random(below),Random(below));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function PickLow(s: TStrings): String;
|
||||||
|
begin
|
||||||
|
Result := s[RandomLow(s.Count)];
|
||||||
|
end;
|
||||||
|
|
||||||
function Ends(s,e: String): Boolean;
|
function Ends(s,e: String): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := Copy(s,1+Length(s)-Length(e),Length(e)) = e;
|
Result := Copy(s,1+Length(s)-Length(e),Length(e)) = e;
|
||||||
@@ -342,20 +362,25 @@ begin
|
|||||||
else Result := s + 's';
|
else Result := s + 's';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function Split(s: String; field: Integer): String;
|
function Split(s: String; field: Integer; separator: String): String;
|
||||||
var
|
var
|
||||||
p: Integer;
|
p: Integer;
|
||||||
begin
|
begin
|
||||||
while field > 0 do begin
|
while field > 0 do begin
|
||||||
p := Pos('|',s);
|
p := Pos(separator,s);
|
||||||
s := Copy(s,p+1,10000);
|
s := Copy(s,p+1,10000);
|
||||||
Dec(field);
|
Dec(field);
|
||||||
end;
|
end;
|
||||||
if Pos('|',s) > 0
|
if Pos(separator,s) > 0
|
||||||
then Result := Copy(s,1,Pos('|',s)-1)
|
then Result := Copy(s,1,Pos(separator,s)-1)
|
||||||
else Result := s;
|
else Result := s;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function Split(s: String; field: Integer): String;
|
||||||
|
begin
|
||||||
|
result := Split(s, field, '|');
|
||||||
|
end;
|
||||||
|
|
||||||
function Indefinite(s: String; qty: Integer): String;
|
function Indefinite(s: String; qty: Integer): String;
|
||||||
begin
|
begin
|
||||||
if qty = 1 then begin
|
if qty = 1 then begin
|
||||||
@@ -428,11 +453,80 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.InterplotCinematic;
|
||||||
|
var
|
||||||
|
nemesis: String;
|
||||||
|
i, s: Integer;
|
||||||
|
begin
|
||||||
|
case Random(3) of
|
||||||
|
0: begin
|
||||||
|
Q('task|1|Exhausted, you arrive at a friendly oasis in a hostile land');
|
||||||
|
Q('task|2|You greet old friends and meet new allies');
|
||||||
|
Q('task|2|You are privy to a council of powerful do-gooders');
|
||||||
|
Q('task|1|There is much to be done. You are chosen!');
|
||||||
|
end;
|
||||||
|
1: begin
|
||||||
|
Q('task|1|Your quarry is in sight, but a mighty enemy bars your path!');
|
||||||
|
nemesis := NamedMonster(GetI(Traits,'Level')+3);
|
||||||
|
Q('task|4|A desperate struggle commences with ' + nemesis);
|
||||||
|
s := Random(3);
|
||||||
|
for i := 1 to Random(1 + Plots.Items.Count) do begin
|
||||||
|
Inc(s, 1 + Random(2));
|
||||||
|
case s mod 3 of
|
||||||
|
0: Q('task|2|Locked in grim combat with ' + nemesis);
|
||||||
|
1: Q('task|2|' + nemesis + ' seems to have the upper hand');
|
||||||
|
2: Q('task|2|You seem to gain the advantage over ' + nemesis);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Q('task|3|Victory! ' + nemesis + ' is slain! Exhausted, you lose conciousness');
|
||||||
|
Q('task|2|You awake in a friendly place, but the road awaits');
|
||||||
|
end;
|
||||||
|
2: begin
|
||||||
|
nemesis := ImpressiveGuy;
|
||||||
|
Q('task|2|Oh sweet relief! You''ve reached the kind protection of ' + nemesis);
|
||||||
|
Q('task|3|There is rejoicing, and an unnerving encouter with ' + nemesis + ' in private');
|
||||||
|
Q('task|2|You forget your ' + BoringItem + ' and go back to get it');
|
||||||
|
Q('task|2|What''s this!? You overhear something shocking!');
|
||||||
|
Q('task|2|Could ' + nemesis + ' be a dirty double-dealer?');
|
||||||
|
Q('task|3|Who can possibly be trusted with this news!? -- Oh yes, of course');
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Q('plot|2|Loading');
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function TMainForm.NamedMonster(level: Integer): String;
|
||||||
|
var
|
||||||
|
lev, i: Integer;
|
||||||
|
m: String;
|
||||||
|
begin
|
||||||
|
lev := 0; // shut up, compiler hint
|
||||||
|
for i := 1 to 5 do begin
|
||||||
|
m := Pick(K.Monsters.Lines);
|
||||||
|
if (Result = '') or (abs(level-StrToInt(Split(m,1))) < abs(level-lev)) then begin
|
||||||
|
Result := Split(m,0);
|
||||||
|
lev := StrToInt(Split(m,1));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Result := GenerateName + ' the ' + Result;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TMainForm.ImpressiveGuy: String;
|
||||||
|
begin
|
||||||
|
Result := Pick(K.ImpressiveTitles.Lines);
|
||||||
|
case Random(2) of
|
||||||
|
0: Result := 'the ' + Result + ' of the ' + Plural(Split(Pick(K.Races.Lines), 0));
|
||||||
|
1: Result := Result + ' ' + GenerateName + ' of ' + GenerateName;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TMainForm.MonsterTask(var level: Integer): String;
|
function TMainForm.MonsterTask(var level: Integer): String;
|
||||||
var
|
var
|
||||||
qty, lev, i: Integer;
|
qty, lev, i: Integer;
|
||||||
monster, m1: string;
|
monster, m1: string;
|
||||||
|
definite: Boolean;
|
||||||
begin
|
begin
|
||||||
|
definite := false;
|
||||||
for i := level downto 1 do begin
|
for i := level downto 1 do begin
|
||||||
if Odds(2,5) then
|
if Odds(2,5) then
|
||||||
Inc(level, RandSign());
|
Inc(level, RandSign());
|
||||||
@@ -442,7 +536,13 @@ begin
|
|||||||
|
|
||||||
if Odds(1,25) then begin
|
if Odds(1,25) then begin
|
||||||
// use an NPC every once in a while
|
// use an NPC every once in a while
|
||||||
monster := 'passing ' + Pick(NewGuyForm.Race.Items) + ' ' + Pick(NewGuyForm.Klass.Items);
|
monster := ' ' + Pick(NewGuyForm.Race.Items);
|
||||||
|
if Odds(1,2)
|
||||||
|
then monster := 'passing' + monster + ' ' + Pick(NewGuyForm.Klass.Items)
|
||||||
|
else begin
|
||||||
|
monster := PickLow(K.Titles.Lines) + ' ' + GenerateName + ' the' + monster;
|
||||||
|
definite := true;
|
||||||
|
end;
|
||||||
lev := level;
|
lev := level;
|
||||||
monster := monster + '|' + IntToStr(level) + '|*';
|
monster := monster + '|' + IntToStr(level) + '|*';
|
||||||
end else if (fQuest.Caption <> '') and Odds(1,4) then begin
|
end else if (fQuest.Caption <> '') and Odds(1,4) then begin
|
||||||
@@ -501,7 +601,7 @@ begin
|
|||||||
lev := level;
|
lev := level;
|
||||||
level := lev * qty;
|
level := lev * qty;
|
||||||
|
|
||||||
Result := Indefinite(Result, qty);
|
if not definite then Result := Indefinite(Result, qty);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ProperCase(s:String):String;
|
function ProperCase(s:String):String;
|
||||||
@@ -554,7 +654,11 @@ begin
|
|||||||
a := Split(fQueue.Items[0],0);
|
a := Split(fQueue.Items[0],0);
|
||||||
n := StrToInt(Split(fQueue.Items[0],1));
|
n := StrToInt(Split(fQueue.Items[0],1));
|
||||||
s := Split(fQueue.Items[0],2);
|
s := Split(fQueue.Items[0],2);
|
||||||
if a = 'task' then begin
|
if (a = 'task') or (a = 'plot') then begin
|
||||||
|
if a = 'plot' then begin
|
||||||
|
CompleteAct;
|
||||||
|
s := 'Loading ' + Plots.Items[Plots.Items.Count-1].Caption;
|
||||||
|
end;
|
||||||
Task(s, n * 1000);
|
Task(s, n * 1000);
|
||||||
fQueue.Items.Delete(0);
|
fQueue.Items.Delete(0);
|
||||||
end else begin
|
end else begin
|
||||||
@@ -619,17 +723,19 @@ begin
|
|||||||
if SubItems.Count < 1
|
if SubItems.Count < 1
|
||||||
then SubItems.Add(value)
|
then SubItems.Add(value)
|
||||||
else SubItems[0] := value;
|
else SubItems[0] := value;
|
||||||
|
|
||||||
|
Selected := true;
|
||||||
|
MakeVisible(false);
|
||||||
end;
|
end;
|
||||||
//list.MultiSelect := true;
|
//list.MultiSelect := true;
|
||||||
//list.RowSelect := true;
|
//list.RowSelect := true;
|
||||||
//list.HideSelection := false;
|
//list.HideSelection := false;
|
||||||
list.Items[pos].Selected := true;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function LevelUpTime(level: Integer): Integer;
|
function LevelUpTime(level: Integer): Integer; // seconds
|
||||||
begin
|
begin
|
||||||
// ~20 minutes for level 1, eventually dominated by exponential
|
// ~20 minutes for level 1, eventually dominated by exponential
|
||||||
Result := Round((20.0 + IntPower(1.15,level)) * 60.0);
|
Result := Round((20.0 + IntPower(1.15,level)) * 60.0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.GoButtonClick(Sender: TObject);
|
procedure TMainForm.GoButtonClick(Sender: TObject);
|
||||||
@@ -639,16 +745,16 @@ begin
|
|||||||
Max := LevelUpTime(1);
|
Max := LevelUpTime(1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
fTask.Caption := '';
|
fTask.Caption := 'load';
|
||||||
fQuest.Caption := '';
|
fQuest.Caption := '';
|
||||||
fQueue.Items.Clear;
|
fQueue.Items.Clear;
|
||||||
|
|
||||||
Task('Loading.',2000); // that dot is spotted for later...
|
Task('Loading',2000);
|
||||||
Q('task|10|Experiencing an enigmatic and foreboding night vision');
|
Q('task|10|Experiencing an enigmatic and foreboding night vision');
|
||||||
Q('task|6|Much is revealed about that wise old bastard you''d underestimated');
|
Q('task|6|Much is revealed about that wise old bastard you''d underestimated');
|
||||||
Q('task|6|A shocking series of events leaves you alone and bewildered, but resolute');
|
Q('task|6|A shocking series of events leaves you alone and bewildered, but resolute');
|
||||||
Q('task|4|Drawing upon an unexpected reserve of determination, you set out on a long and dangerous journey');
|
Q('task|4|Drawing upon an unexpected reserve of determination, you set out on a long and dangerous journey');
|
||||||
Q('task|2|Loading');
|
Q('plot|2|Loading');
|
||||||
|
|
||||||
PlotBar.Max := 26;
|
PlotBar.Max := 26;
|
||||||
with Plots.Items.Add do begin
|
with Plots.Items.Add do begin
|
||||||
@@ -735,10 +841,13 @@ begin
|
|||||||
t := 0;
|
t := 0;
|
||||||
for i := 0 to 5 do Inc(t,Square(GetI(Stats,i)));
|
for i := 0 to 5 do Inc(t,Square(GetI(Stats,i)));
|
||||||
t := Random(t);
|
t := Random(t);
|
||||||
i := -1;
|
if t < 0 then i := Random(Stats.Items.Count)
|
||||||
while t >= 0 do begin
|
else begin
|
||||||
Inc(i);
|
i := -1;
|
||||||
Dec(t,Square(GetI(Stats,i)));
|
while t >= 0 do begin
|
||||||
|
Inc(i);
|
||||||
|
Dec(t,Square(GetI(Stats,i)));
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
Add(Stats, Stats.Items[i].Caption, 1);
|
Add(Stats, Stats.Items[i].Caption, 1);
|
||||||
@@ -763,7 +872,9 @@ end;
|
|||||||
|
|
||||||
procedure TMainForm.WinItem;
|
procedure TMainForm.WinItem;
|
||||||
begin
|
begin
|
||||||
Add(Inventory, SpecialItem, 1);
|
if max(250, Random(999)) < Inventory.Items.Count
|
||||||
|
then Add(Inventory, Inventory.Items[Random(Inventory.Items.Count)].Caption, 1)
|
||||||
|
else Add(Inventory, SpecialItem, 1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.CompleteQuest;
|
procedure TMainForm.CompleteQuest;
|
||||||
@@ -866,8 +977,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// I V X L C D M A T P E
|
||||||
|
// 1 5 10 50 100 500 1000 5000 10000 50000 100000
|
||||||
function IntToRoman(n: Integer): String;
|
function IntToRoman(n: Integer): String;
|
||||||
begin
|
begin
|
||||||
|
while Rome(n, 10000, Result, 'T') do ;
|
||||||
|
Rome(n, 9000, Result, 'MT');
|
||||||
|
Rome(n, 5000, Result, 'A');
|
||||||
|
Rome(n, 4000, Result, 'MA');
|
||||||
while Rome(n, 1000, Result, 'M') do ;
|
while Rome(n, 1000, Result, 'M') do ;
|
||||||
Rome(n, 900, Result, 'CM');
|
Rome(n, 900, Result, 'CM');
|
||||||
Rome(n, 500, Result, 'D');
|
Rome(n, 500, Result, 'D');
|
||||||
@@ -886,6 +1003,10 @@ end;
|
|||||||
function RomanToInt(n: String): Integer;
|
function RomanToInt(n: String): Integer;
|
||||||
begin
|
begin
|
||||||
Result := 0;
|
Result := 0;
|
||||||
|
while UnRome(n, 10000, Result, 'T') do ;
|
||||||
|
UnRome(n, 9000, Result, 'MT');
|
||||||
|
UnRome(n, 5000, Result, 'A');
|
||||||
|
UnRome(n, 4000, Result, 'MA');
|
||||||
while UnRome(n, 1000, Result, 'M') do ;
|
while UnRome(n, 1000, Result, 'M') do ;
|
||||||
UnRome(n, 900, Result, 'CM');
|
UnRome(n, 900, Result, 'CM');
|
||||||
UnRome(n, 500, Result, 'D');
|
UnRome(n, 500, Result, 'D');
|
||||||
@@ -914,11 +1035,14 @@ begin
|
|||||||
StateIndex := 0;
|
StateIndex := 0;
|
||||||
Width := Width-1;
|
Width := Width-1;
|
||||||
end;
|
end;
|
||||||
|
if Items.Count > 2 then WinItem;
|
||||||
|
if Items.Count > 3 then WinEquip;
|
||||||
end;
|
end;
|
||||||
SaveGame;
|
SaveGame;
|
||||||
Brag('a');
|
Brag('a');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{$IFDEF LOGGING}
|
{$IFDEF LOGGING}
|
||||||
procedure TMainForm.Log(line: String);
|
procedure TMainForm.Log(line: String);
|
||||||
var
|
var
|
||||||
@@ -997,7 +1121,7 @@ begin
|
|||||||
else WrLn( ' ' + Indefinite(Items[i].Caption, GetI(Inventory,i)));
|
else WrLn( ' ' + Indefinite(Items[i].Caption, GetI(Inventory,i)));
|
||||||
WrLn;
|
WrLn;
|
||||||
WrLn( '-- ' + DateTimeToStr(Now));
|
WrLn( '-- ' + DateTimeToStr(Now));
|
||||||
WrLn( '-- Progress Quest 6.2 - http://progressquest.com/');
|
WrLn( '-- Progress Quest 6.4 - http://progressquest.com/');
|
||||||
Result := f;
|
Result := f;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -1123,16 +1247,19 @@ var
|
|||||||
begin
|
begin
|
||||||
gain := Pos('kill|',fTask.Caption) = 1;
|
gain := Pos('kill|',fTask.Caption) = 1;
|
||||||
with TaskBar do begin
|
with TaskBar do begin
|
||||||
|
{$IFDEF TURBO}
|
||||||
|
Position := Max;
|
||||||
|
{$ENDIF}
|
||||||
if Position >= Max then begin
|
if Position >= Max then begin
|
||||||
ClearAllSelections;
|
ClearAllSelections;
|
||||||
|
|
||||||
if Kill.SimpleText = 'Loading....' then Max := 0;
|
// gain XP / level up
|
||||||
|
|
||||||
if gain then with ExpBar do if Position >= Max
|
if gain then with ExpBar do if Position >= Max
|
||||||
then LevelUp
|
then LevelUp
|
||||||
else Position := Position + TaskBar.Max div 1000;
|
else Position := Position + TaskBar.Max div 1000;
|
||||||
with ExpBar do Hint := IntToStr(Max-Position) + ' XP needed for next level';
|
with ExpBar do Hint := IntToStr(Max-Position) + ' XP needed for next level';
|
||||||
|
|
||||||
|
// advance quest
|
||||||
if gain then if Plots.Items.Count > 1 then with QuestBar do if Position >= Max then begin
|
if gain then if Plots.Items.Count > 1 then with QuestBar do if Position >= Max then begin
|
||||||
CompleteQuest;
|
CompleteQuest;
|
||||||
end else if Quests.Items.Count > 0 then begin
|
end else if Quests.Items.Count > 0 then begin
|
||||||
@@ -1140,9 +1267,11 @@ begin
|
|||||||
Hint := IntToStr(100 * Position div Max) + '% complete';
|
Hint := IntToStr(100 * Position div Max) + '% complete';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
with PlotBar do if Position >= Max
|
// advance plot
|
||||||
then CompleteAct
|
if (PlotBar.Position >= PlotBar.Max) and gain
|
||||||
else Position := Position + TaskBar.Max div 1000;
|
then InterplotCinematic
|
||||||
|
else if fTask.Caption <> 'load'
|
||||||
|
then PlotBar.Position := Math.Min(PlotBar.Position + TaskBar.Max div 1000, PlotBar.Max);
|
||||||
|
|
||||||
//Time.Caption := FormatDateTime('h:mm:ss',PlotBar.Position / (24.0 * 60 * 60));
|
//Time.Caption := FormatDateTime('h:mm:ss',PlotBar.Position / (24.0 * 60 * 60));
|
||||||
PlotBar.Hint := RoughTime(PlotBar.Max-PlotBar.Position) + ' remaining';
|
PlotBar.Hint := RoughTime(PlotBar.Max-PlotBar.Position) + ' remaining';
|
||||||
@@ -1153,7 +1282,7 @@ begin
|
|||||||
elapsed := LongInt(timeGetTime) - LongInt(Timer1.Tag);
|
elapsed := LongInt(timeGetTime) - LongInt(Timer1.Tag);
|
||||||
if elapsed > 100 then elapsed := 100;
|
if elapsed > 100 then elapsed := 100;
|
||||||
if elapsed < 0 then elapsed := 0;
|
if elapsed < 0 then elapsed := 0;
|
||||||
Position := Position + elapsed;//Integer(Timer1.Interval);
|
Position := Position + elapsed;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
Timer1.Tag := timeGetTime;
|
Timer1.Tag := timeGetTime;
|
||||||
@@ -1173,7 +1302,7 @@ begin
|
|||||||
FMinToTray := true;
|
FMinToTray := true;
|
||||||
FExportSheets := false;
|
FExportSheets := false;
|
||||||
|
|
||||||
MakeFileAssociations;
|
if Win32MajorVersion < 6 then MakeFileAssociations;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.SpeedButton1Click(Sender: TObject);
|
procedure TMainForm.SpeedButton1Click(Sender: TObject);
|
||||||
@@ -1395,10 +1524,6 @@ begin
|
|||||||
f.Free;
|
f.Free;
|
||||||
except
|
except
|
||||||
on EZCompressionError do begin
|
on EZCompressionError do begin
|
||||||
// backwards-compatibility
|
|
||||||
//m.Free;
|
|
||||||
//m := f;
|
|
||||||
//f := nil;
|
|
||||||
ShowMessage('Error loading game.');
|
ShowMessage('Error loading game.');
|
||||||
Close;
|
Close;
|
||||||
Exit;
|
Exit;
|
||||||
@@ -1508,6 +1633,12 @@ var
|
|||||||
const
|
const
|
||||||
flat = 1;
|
flat = 1;
|
||||||
begin
|
begin
|
||||||
|
{$IFDEF TURBO}
|
||||||
|
Exit; // For testing multiplayer saves without hitting the server
|
||||||
|
{$ENDIF}
|
||||||
|
{$IFDEF CHEATS}
|
||||||
|
Exit; // For testing multiplayer saves without hitting the server
|
||||||
|
{$ENDIF}
|
||||||
if FExportSheets then
|
if FExportSheets then
|
||||||
ExportCharSheet;
|
ExportCharSheet;
|
||||||
if GetPasskey = 0 then Exit; // not a online game!
|
if GetPasskey = 0 then Exit; // not a online game!
|
||||||
@@ -1549,7 +1680,7 @@ end;
|
|||||||
function TMainForm.AuthenticateUrl(url: String): String;
|
function TMainForm.AuthenticateUrl(url: String): String;
|
||||||
begin
|
begin
|
||||||
if (GetLogin <> '') or (GetPassword <> '') then
|
if (GetLogin <> '') or (GetPassword <> '') then
|
||||||
Result := StuffString(url, 8, 0, GetLogin+':'+GetPassword+'@')
|
Result := StuffString(url, 8, 0, UrlEncode(GetLogin)+':'+UrlEncode(GetPassword)+'@')
|
||||||
else
|
else
|
||||||
Result := url;
|
Result := url;
|
||||||
end;
|
end;
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+7
-6
@@ -1,6 +1,6 @@
|
|||||||
object NewGuyForm: TNewGuyForm
|
object NewGuyForm: TNewGuyForm
|
||||||
Left = 203
|
Left = 474
|
||||||
Top = 146
|
Top = 177
|
||||||
BorderIcons = []
|
BorderIcons = []
|
||||||
BorderStyle = bsDialog
|
BorderStyle = bsDialog
|
||||||
Caption = 'Progress Quest - New Character'
|
Caption = 'Progress Quest - New Character'
|
||||||
@@ -86,6 +86,7 @@ object NewGuyForm: TNewGuyForm
|
|||||||
OldCreateOrder = False
|
OldCreateOrder = False
|
||||||
Position = poScreenCenter
|
Position = poScreenCenter
|
||||||
OnActivate = FormActivate
|
OnActivate = FormActivate
|
||||||
|
OnCreate = FormCreate
|
||||||
OnShow = FormShow
|
OnShow = FormShow
|
||||||
PixelsPerInch = 96
|
PixelsPerInch = 96
|
||||||
TextHeight = 13
|
TextHeight = 13
|
||||||
@@ -100,10 +101,10 @@ object NewGuyForm: TNewGuyForm
|
|||||||
'Half Man'
|
'Half Man'
|
||||||
'Half Halfling'
|
'Half Halfling'
|
||||||
'Double Hobbit'
|
'Double Hobbit'
|
||||||
|
'Gobhobbit'
|
||||||
'Low Elf'
|
'Low Elf'
|
||||||
'Dung Elf'
|
'Dung Elf'
|
||||||
'Talking Pony'
|
'Talking Pony'
|
||||||
'Greater Gnome'
|
|
||||||
'Gyrognome'
|
'Gyrognome'
|
||||||
'Lesser Dwarf'
|
'Lesser Dwarf'
|
||||||
'Crested Dwarf'
|
'Crested Dwarf'
|
||||||
@@ -136,14 +137,14 @@ object NewGuyForm: TNewGuyForm
|
|||||||
'Fighter/Organist'
|
'Fighter/Organist'
|
||||||
'Puma Burgular'
|
'Puma Burgular'
|
||||||
'Runeloremaster'
|
'Runeloremaster'
|
||||||
'Tongueblade'
|
|
||||||
'Hunter Strangler'
|
'Hunter Strangler'
|
||||||
'Battle-Felon'
|
'Battle-Felon'
|
||||||
'Tickle-Mimic'
|
'Tickle-Mimic'
|
||||||
'Slow Poisoner'
|
'Slow Poisoner'
|
||||||
'Bastard Lunatic'
|
'Bastard Lunatic'
|
||||||
'Lowling'
|
'Jungle Clown'
|
||||||
'Birdrider')
|
'Birdrider'
|
||||||
|
'Vermineer')
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
end
|
end
|
||||||
object GroupBox1: TGroupBox
|
object GroupBox1: TGroupBox
|
||||||
|
|||||||
+18
-4
@@ -44,6 +44,7 @@ type
|
|||||||
procedure ApplicationEvents1Minimize(Sender: TObject);
|
procedure ApplicationEvents1Minimize(Sender: TObject);
|
||||||
procedure GenClick(Sender: TObject);
|
procedure GenClick(Sender: TObject);
|
||||||
procedure FormActivate(Sender: TObject);
|
procedure FormActivate(Sender: TObject);
|
||||||
|
procedure FormCreate(Sender: TObject);
|
||||||
private
|
private
|
||||||
procedure RollEm;
|
procedure RollEm;
|
||||||
function GetAccount: String;
|
function GetAccount: String;
|
||||||
@@ -57,10 +58,11 @@ var
|
|||||||
NewGuyForm: TNewGuyForm;
|
NewGuyForm: TNewGuyForm;
|
||||||
|
|
||||||
function UrlEncode(s: string): string;
|
function UrlEncode(s: string): string;
|
||||||
|
function GenerateName: string;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses Main, SelServ, StrUtils, Web;
|
uses Main, SelServ, StrUtils, Web, Config;
|
||||||
|
|
||||||
{$R *.dfm}
|
{$R *.dfm}
|
||||||
|
|
||||||
@@ -182,15 +184,15 @@ begin
|
|||||||
else url := 'http://www.progressquest.com/create.php?';
|
else url := 'http://www.progressquest.com/create.php?';
|
||||||
// url := StringReplace(url, '.com/', '.com/dev/', []);
|
// url := StringReplace(url, '.com/', '.com/dev/', []);
|
||||||
if (GetAccount <> '') or (GetPassword <> '') then
|
if (GetAccount <> '') or (GetPassword <> '') then
|
||||||
url := StuffString(url, 8, 0, GetAccount+':'+GetPassword+'@');
|
url := StuffString(url, 8, 0, UrlEncode(GetAccount)+':'+UrlEncode(GetPassword)+'@');
|
||||||
args := 'cmd=create' +
|
args := 'cmd=create' +
|
||||||
'&name=' + UrlEncode(Name.Text) +
|
'&name=' + UrlEncode(Name.Text) +
|
||||||
'&realm=' + UrlEncode(MainForm.GetHostName) +
|
'&realm=' + UrlEncode(MainForm.GetHostName) +
|
||||||
RevString;
|
RevString;
|
||||||
ParseSoldResponse(DownloadString(url + args));
|
ParseSoldResponse(DownloadString(url + args));
|
||||||
except
|
except
|
||||||
on EWebError do begin
|
on E: EWebError do begin
|
||||||
ShowMessage('Error connecting to server');
|
ShowMessage('Error connecting to server')//: ' + StringReplace(E.Message, '&', '&&', [rfReplaceAll]));
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
@@ -250,4 +252,16 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.FormCreate(Sender: TObject);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
Race.Items.Clear;
|
||||||
|
for i := 0 to K.Races.Lines.Count-1 do
|
||||||
|
Race.Items.Add(Split(K.Races.Lines[i],0));
|
||||||
|
Klass.Items.Clear;
|
||||||
|
for i := 0 to K.Klasses.Lines.Count-1 do
|
||||||
|
Klass.Items.Add(Split(K.Klasses.Lines[i],0));
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
[contents of readme]
|
|
||||||
ProgressQuest v6.2 (probably as released)
|
|
||||||
-----------------------------------------
|
|
||||||
This directory represents an ex post facto rendering of pq6 in its
|
|
||||||
various versions in svn, so that changes will be trackable thataway.
|
|
||||||
|
|
||||||
The version as of this moment in svn is 6.2 (but I had two copies
|
|
||||||
around, so I'm not positive this is the final one, and not the previous
|
|
||||||
rev checked in)
|
|
||||||
|
|
||||||
(I didn't add this file in PQ 6.0, but after that you can use this README
|
|
||||||
to trace the checkin history using svn.)
|
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
ProgressQuest v6.4
|
||||||
|
==================
|
||||||
|
|
||||||
|
BUILDING
|
||||||
|
--------
|
||||||
|
|
||||||
|
Requires Delphi 6.
|
||||||
|
|
||||||
|
Requires the package in DelphiZLib.zip to be installed in Delphi, or
|
||||||
|
decompress the .obj files from there into this, the project, directory.
|
||||||
|
|
||||||
|
|
||||||
|
VCS NOTES
|
||||||
|
---------
|
||||||
|
|
||||||
|
Converted to Mercurial on 1/12/2010 & sent to
|
||||||
|
http://bitbucket.org/grumdrig/pq/ ; development will continue from
|
||||||
|
there. If at all. Source opened 5/20/11. The world ends tomorrow anyway.[^1]
|
||||||
|
|
||||||
|
This project represents an ex post facto rendering of pq6 in its
|
||||||
|
various versions in version control, so that changes will be trackable
|
||||||
|
thataway.
|
||||||
|
|
||||||
|
(I didn't add this README file in PQ 6.0, but after that you can use
|
||||||
|
this README to trace the checkin history using version control.)
|
||||||
|
|
||||||
|
Subversion revsion numbers vs. versions:
|
||||||
|
|
||||||
|
* r321 v6.3 as I found it after a couple years of inactivity
|
||||||
|
* r320 v6.2 probably as released, though I'm not totally sure
|
||||||
|
* r318 v6.2 but probably a slightly older version
|
||||||
|
* r317 v6.1
|
||||||
|
* r313 v6.0
|
||||||
|
|
||||||
|
(But these revision numbers aren't immediately accessible, if at all,
|
||||||
|
since moving to git.)
|
||||||
|
|
||||||
|
|
||||||
|
SEE ALSO
|
||||||
|
--------
|
||||||
|
|
||||||
|
The in-browser edition: this project, ported to JavaScript/HTML
|
||||||
|
https://bitbucket.org/grumdrig/pq-web
|
||||||
|
|
||||||
|
|
||||||
|
[^1]: Although I don't remember it here in 2022, this is presumably a reference
|
||||||
|
to Christian radio host Harold Camping's prediction that the world would
|
||||||
|
end on 5/21/11 at 6pm. It did not, to the dismay of himself and his
|
||||||
|
followers (only).
|
||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -51,7 +51,7 @@ begin
|
|||||||
Result := '';
|
Result := '';
|
||||||
conntype := INTERNET_OPEN_TYPE_DIRECT;
|
conntype := INTERNET_OPEN_TYPE_DIRECT;
|
||||||
if proxyok then conntype := INTERNET_OPEN_TYPE_PRECONFIG;
|
if proxyok then conntype := INTERNET_OPEN_TYPE_PRECONFIG;
|
||||||
NetHandle := InternetOpen('PQ6.2', conntype, nil, nil, 0);
|
NetHandle := InternetOpen('PQ6.4', conntype, nil, nil, 0);
|
||||||
if Assigned(NetHandle) then
|
if Assigned(NetHandle) then
|
||||||
begin {
|
begin {
|
||||||
if Len(username + password) > 0 then
|
if Len(username + password) > 0 then
|
||||||
|
|||||||
+777
@@ -0,0 +1,777 @@
|
|||||||
|
{*****************************************************************************
|
||||||
|
* ZLibEx.pas *
|
||||||
|
* *
|
||||||
|
* copyright (c) 2000-2002 base2 technologies *
|
||||||
|
* copyright (c) 1997 Borland International *
|
||||||
|
* *
|
||||||
|
* revision history *
|
||||||
|
* 2002.03.15 updated to zlib version 1.1.4 *
|
||||||
|
* 2001.11.27 enhanced TZDecompressionStream.Read to adjust source *
|
||||||
|
* stream position upon end of compression data *
|
||||||
|
* fixed endless loop in TZDecompressionStream.Read when *
|
||||||
|
* destination count was greater than uncompressed data *
|
||||||
|
* 2001.10.26 renamed unit to integrate "nicely" with delphi 6 *
|
||||||
|
* 2000.11.24 added soFromEnd condition to TZDecompressionStream.Seek *
|
||||||
|
* added ZCompressStream and ZDecompressStream *
|
||||||
|
* 2000.06.13 optimized, fixed, rewrote, and enhanced the zlib.pas unit *
|
||||||
|
* included on the delphi cd (zlib version 1.1.3) *
|
||||||
|
* *
|
||||||
|
* acknowledgements *
|
||||||
|
* erik turner Z*Stream routines *
|
||||||
|
* david bennion finding the nastly little endless loop quirk with the *
|
||||||
|
* TZDecompressionStream.Read method *
|
||||||
|
* burak kalayci informing me about the zlib 1.1.4 update *
|
||||||
|
*****************************************************************************}
|
||||||
|
|
||||||
|
unit ZLibEx;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Sysutils, Classes;
|
||||||
|
|
||||||
|
const
|
||||||
|
ZLIB_VERSION = '1.1.4';
|
||||||
|
|
||||||
|
type
|
||||||
|
TZAlloc = function (opaque: Pointer; items, size: Integer): Pointer;
|
||||||
|
TZFree = procedure (opaque, block: Pointer);
|
||||||
|
|
||||||
|
TZCompressionLevel = (zcNone, zcFastest, zcDefault, zcMax);
|
||||||
|
|
||||||
|
{** TZStreamRec ***********************************************************}
|
||||||
|
|
||||||
|
TZStreamRec = packed record
|
||||||
|
next_in : PChar; // next input byte
|
||||||
|
avail_in : Longint; // number of bytes available at next_in
|
||||||
|
total_in : Longint; // total nb of input bytes read so far
|
||||||
|
|
||||||
|
next_out : PChar; // next output byte should be put here
|
||||||
|
avail_out: Longint; // remaining free space at next_out
|
||||||
|
total_out: Longint; // total nb of bytes output so far
|
||||||
|
|
||||||
|
msg : PChar; // last error message, NULL if no error
|
||||||
|
state : Pointer; // not visible by applications
|
||||||
|
|
||||||
|
zalloc : TZAlloc; // used to allocate the internal state
|
||||||
|
zfree : TZFree; // used to free the internal state
|
||||||
|
opaque : Pointer; // private data object passed to zalloc and zfree
|
||||||
|
|
||||||
|
data_type: Integer; // best guess about the data type: ascii or binary
|
||||||
|
adler : Longint; // adler32 value of the uncompressed data
|
||||||
|
reserved : Longint; // reserved for future use
|
||||||
|
end;
|
||||||
|
|
||||||
|
{** TCustomZStream ********************************************************}
|
||||||
|
|
||||||
|
TCustomZStream = class(TStream)
|
||||||
|
private
|
||||||
|
FStream : TStream;
|
||||||
|
FStreamPos : Integer;
|
||||||
|
FOnProgress: TNotifyEvent;
|
||||||
|
|
||||||
|
FZStream : TZStreamRec;
|
||||||
|
FBuffer : Array [Word] of Char;
|
||||||
|
protected
|
||||||
|
constructor Create(stream: TStream);
|
||||||
|
|
||||||
|
procedure DoProgress; dynamic;
|
||||||
|
|
||||||
|
property OnProgress: TNotifyEvent read FOnProgress write FOnProgress;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{** TZCompressionStream ***************************************************}
|
||||||
|
|
||||||
|
TZCompressionStream = class(TCustomZStream)
|
||||||
|
private
|
||||||
|
function GetCompressionRate: Single;
|
||||||
|
public
|
||||||
|
constructor Create(dest: TStream; compressionLevel: TZCompressionLevel = zcDefault);
|
||||||
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
function Read(var buffer; count: Longint): Longint; override;
|
||||||
|
function Write(const buffer; count: Longint): Longint; override;
|
||||||
|
function Seek(offset: Longint; origin: Word): Longint; override;
|
||||||
|
|
||||||
|
property CompressionRate: Single read GetCompressionRate;
|
||||||
|
property OnProgress;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{** TZDecompressionStream *************************************************}
|
||||||
|
|
||||||
|
TZDecompressionStream = class(TCustomZStream)
|
||||||
|
public
|
||||||
|
constructor Create(source: TStream);
|
||||||
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
function Read(var buffer; count: Longint): Longint; override;
|
||||||
|
function Write(const buffer; count: Longint): Longint; override;
|
||||||
|
function Seek(offset: Longint; origin: Word): Longint; override;
|
||||||
|
|
||||||
|
property OnProgress;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{** zlib public routines ****************************************************}
|
||||||
|
|
||||||
|
{*****************************************************************************
|
||||||
|
* ZCompress *
|
||||||
|
* *
|
||||||
|
* pre-conditions *
|
||||||
|
* inBuffer = pointer to uncompressed data *
|
||||||
|
* inSize = size of inBuffer (bytes) *
|
||||||
|
* outBuffer = pointer (unallocated) *
|
||||||
|
* level = compression level *
|
||||||
|
* *
|
||||||
|
* post-conditions *
|
||||||
|
* outBuffer = pointer to compressed data (allocated) *
|
||||||
|
* outSize = size of outBuffer (bytes) *
|
||||||
|
*****************************************************************************}
|
||||||
|
|
||||||
|
procedure ZCompress(const inBuffer: Pointer; inSize: Integer;
|
||||||
|
out outBuffer: Pointer; out outSize: Integer;
|
||||||
|
level: TZCompressionLevel = zcDefault);
|
||||||
|
|
||||||
|
{*****************************************************************************
|
||||||
|
* ZDecompress *
|
||||||
|
* *
|
||||||
|
* pre-conditions *
|
||||||
|
* inBuffer = pointer to compressed data *
|
||||||
|
* inSize = size of inBuffer (bytes) *
|
||||||
|
* outBuffer = pointer (unallocated) *
|
||||||
|
* outEstimate = estimated size of uncompressed data (bytes) *
|
||||||
|
* *
|
||||||
|
* post-conditions *
|
||||||
|
* outBuffer = pointer to decompressed data (allocated) *
|
||||||
|
* outSize = size of outBuffer (bytes) *
|
||||||
|
*****************************************************************************}
|
||||||
|
|
||||||
|
procedure ZDecompress(const inBuffer: Pointer; inSize: Integer;
|
||||||
|
out outBuffer: Pointer; out outSize: Integer; outEstimate: Integer = 0);
|
||||||
|
|
||||||
|
{** string routines *********************************************************}
|
||||||
|
|
||||||
|
function ZCompressStr(const s: String; level: TZCompressionLevel = zcDefault): String;
|
||||||
|
|
||||||
|
function ZDecompressStr(const s: String): String;
|
||||||
|
|
||||||
|
{** stream routines *********************************************************}
|
||||||
|
|
||||||
|
procedure ZCompressStream(inStream, outStream: TStream;
|
||||||
|
level: TZCompressionLevel = zcDefault);
|
||||||
|
|
||||||
|
procedure ZDecompressStream(inStream, outStream: TStream);
|
||||||
|
|
||||||
|
{****************************************************************************}
|
||||||
|
|
||||||
|
type
|
||||||
|
EZLibError = class(Exception);
|
||||||
|
|
||||||
|
EZCompressionError = class(EZLibError);
|
||||||
|
EZDecompressionError = class(EZLibError);
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{** link zlib code **********************************************************}
|
||||||
|
|
||||||
|
{$L deflate.obj}
|
||||||
|
{$L inflate.obj}
|
||||||
|
{$L infblock.obj}
|
||||||
|
{$L inftrees.obj}
|
||||||
|
{$L infcodes.obj}
|
||||||
|
{$L infutil.obj}
|
||||||
|
{$L inffast.obj}
|
||||||
|
{$L trees.obj}
|
||||||
|
{$L adler32.obj}
|
||||||
|
|
||||||
|
{*****************************************************************************
|
||||||
|
* note: do not reorder the above -- doing so will result in external *
|
||||||
|
* functions being undefined *
|
||||||
|
*****************************************************************************}
|
||||||
|
|
||||||
|
const
|
||||||
|
{** flush constants *******************************************************}
|
||||||
|
|
||||||
|
Z_NO_FLUSH = 0;
|
||||||
|
Z_PARTIAL_FLUSH = 1;
|
||||||
|
Z_SYNC_FLUSH = 2;
|
||||||
|
Z_FULL_FLUSH = 3;
|
||||||
|
Z_FINISH = 4;
|
||||||
|
|
||||||
|
{** return codes **********************************************************}
|
||||||
|
|
||||||
|
Z_OK = 0;
|
||||||
|
Z_STREAM_END = 1;
|
||||||
|
Z_NEED_DICT = 2;
|
||||||
|
Z_ERRNO = (-1);
|
||||||
|
Z_STREAM_ERROR = (-2);
|
||||||
|
Z_DATA_ERROR = (-3);
|
||||||
|
Z_MEM_ERROR = (-4);
|
||||||
|
Z_BUF_ERROR = (-5);
|
||||||
|
Z_VERSION_ERROR = (-6);
|
||||||
|
|
||||||
|
{** compression levels ****************************************************}
|
||||||
|
|
||||||
|
Z_NO_COMPRESSION = 0;
|
||||||
|
Z_BEST_SPEED = 1;
|
||||||
|
Z_BEST_COMPRESSION = 9;
|
||||||
|
Z_DEFAULT_COMPRESSION = (-1);
|
||||||
|
|
||||||
|
{** compression strategies ************************************************}
|
||||||
|
|
||||||
|
Z_FILTERED = 1;
|
||||||
|
Z_HUFFMAN_ONLY = 2;
|
||||||
|
Z_DEFAULT_STRATEGY = 0;
|
||||||
|
|
||||||
|
{** data types ************************************************************}
|
||||||
|
|
||||||
|
Z_BINARY = 0;
|
||||||
|
Z_ASCII = 1;
|
||||||
|
Z_UNKNOWN = 2;
|
||||||
|
|
||||||
|
{** compression methods ***************************************************}
|
||||||
|
|
||||||
|
Z_DEFLATED = 8;
|
||||||
|
|
||||||
|
{** return code messages **************************************************}
|
||||||
|
|
||||||
|
_z_errmsg: array[0..9] of PChar = (
|
||||||
|
'need dictionary', // Z_NEED_DICT (2)
|
||||||
|
'stream end', // Z_STREAM_END (1)
|
||||||
|
'', // Z_OK (0)
|
||||||
|
'file error', // Z_ERRNO (-1)
|
||||||
|
'stream error', // Z_STREAM_ERROR (-2)
|
||||||
|
'data error', // Z_DATA_ERROR (-3)
|
||||||
|
'insufficient memory', // Z_MEM_ERROR (-4)
|
||||||
|
'buffer error', // Z_BUF_ERROR (-5)
|
||||||
|
'incompatible version', // Z_VERSION_ERROR (-6)
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
|
ZLevels: array [TZCompressionLevel] of Shortint = (
|
||||||
|
Z_NO_COMPRESSION,
|
||||||
|
Z_BEST_SPEED,
|
||||||
|
Z_DEFAULT_COMPRESSION,
|
||||||
|
Z_BEST_COMPRESSION
|
||||||
|
);
|
||||||
|
|
||||||
|
SZInvalid = 'Invalid ZStream operation!';
|
||||||
|
|
||||||
|
{** deflate routines ********************************************************}
|
||||||
|
|
||||||
|
function deflateInit_(var strm: TZStreamRec; level: Integer; version: PChar;
|
||||||
|
recsize: Integer): Integer; external;
|
||||||
|
|
||||||
|
function deflate(var strm: TZStreamRec; flush: Integer): Integer;
|
||||||
|
external;
|
||||||
|
|
||||||
|
function deflateEnd(var strm: TZStreamRec): Integer; external;
|
||||||
|
|
||||||
|
{** inflate routines ********************************************************}
|
||||||
|
|
||||||
|
function inflateInit_(var strm: TZStreamRec; version: PChar;
|
||||||
|
recsize: Integer): Integer; external;
|
||||||
|
|
||||||
|
function inflate(var strm: TZStreamRec; flush: Integer): Integer;
|
||||||
|
external;
|
||||||
|
|
||||||
|
function inflateEnd(var strm: TZStreamRec): Integer; external;
|
||||||
|
|
||||||
|
function inflateReset(var strm: TZStreamRec): Integer; external;
|
||||||
|
|
||||||
|
{** zlib function implementations *******************************************}
|
||||||
|
|
||||||
|
function zcalloc(opaque: Pointer; items, size: Integer): Pointer;
|
||||||
|
begin
|
||||||
|
GetMem(result,items * size);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure zcfree(opaque, block: Pointer);
|
||||||
|
begin
|
||||||
|
FreeMem(block);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{** c function implementations **********************************************}
|
||||||
|
|
||||||
|
procedure _memset(p: Pointer; b: Byte; count: Integer); cdecl;
|
||||||
|
begin
|
||||||
|
FillChar(p^,count,b);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure _memcpy(dest, source: Pointer; count: Integer); cdecl;
|
||||||
|
begin
|
||||||
|
Move(source^,dest^,count);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{** custom zlib routines ****************************************************}
|
||||||
|
|
||||||
|
function DeflateInit(var stream: TZStreamRec; level: Integer): Integer;
|
||||||
|
begin
|
||||||
|
result := DeflateInit_(stream,level,ZLIB_VERSION,SizeOf(TZStreamRec));
|
||||||
|
end;
|
||||||
|
|
||||||
|
// function DeflateInit2(var stream: TZStreamRec; level, method, windowBits,
|
||||||
|
// memLevel, strategy: Integer): Integer;
|
||||||
|
// begin
|
||||||
|
// result := DeflateInit2_(stream,level,method,windowBits,memLevel,
|
||||||
|
// strategy,ZLIB_VERSION,SizeOf(TZStreamRec));
|
||||||
|
// end;
|
||||||
|
|
||||||
|
function InflateInit(var stream: TZStreamRec): Integer;
|
||||||
|
begin
|
||||||
|
result := InflateInit_(stream,ZLIB_VERSION,SizeOf(TZStreamRec));
|
||||||
|
end;
|
||||||
|
|
||||||
|
// function InflateInit2(var stream: TZStreamRec; windowBits: Integer): Integer;
|
||||||
|
// begin
|
||||||
|
// result := InflateInit2_(stream,windowBits,ZLIB_VERSION,SizeOf(TZStreamRec));
|
||||||
|
// end;
|
||||||
|
|
||||||
|
{****************************************************************************}
|
||||||
|
|
||||||
|
function ZCompressCheck(code: Integer): Integer;
|
||||||
|
begin
|
||||||
|
result := code;
|
||||||
|
|
||||||
|
if code < 0 then
|
||||||
|
begin
|
||||||
|
raise EZCompressionError.Create(_z_errmsg[2 - code]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ZDecompressCheck(code: Integer): Integer;
|
||||||
|
begin
|
||||||
|
Result := code;
|
||||||
|
|
||||||
|
if code < 0 then
|
||||||
|
begin
|
||||||
|
raise EZDecompressionError.Create(_z_errmsg[2 - code]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ZCompress(const inBuffer: Pointer; inSize: Integer;
|
||||||
|
out outBuffer: Pointer; out outSize: Integer;
|
||||||
|
level: TZCompressionLevel);
|
||||||
|
const
|
||||||
|
delta = 256;
|
||||||
|
var
|
||||||
|
zstream: TZStreamRec;
|
||||||
|
begin
|
||||||
|
FillChar(zstream,SizeOf(TZStreamRec),0);
|
||||||
|
|
||||||
|
outSize := ((inSize + (inSize div 10) + 12) + 255) and not 255;
|
||||||
|
GetMem(outBuffer,outSize);
|
||||||
|
|
||||||
|
try
|
||||||
|
zstream.next_in := inBuffer;
|
||||||
|
zstream.avail_in := inSize;
|
||||||
|
zstream.next_out := outBuffer;
|
||||||
|
zstream.avail_out := outSize;
|
||||||
|
|
||||||
|
ZCompressCheck(DeflateInit(zstream,ZLevels[level]));
|
||||||
|
|
||||||
|
try
|
||||||
|
while ZCompressCheck(deflate(zstream,Z_FINISH)) <> Z_STREAM_END do
|
||||||
|
begin
|
||||||
|
Inc(outSize,delta);
|
||||||
|
ReallocMem(outBuffer,outSize);
|
||||||
|
|
||||||
|
zstream.next_out := PChar(Integer(outBuffer) + zstream.total_out);
|
||||||
|
zstream.avail_out := delta;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
ZCompressCheck(deflateEnd(zstream));
|
||||||
|
end;
|
||||||
|
|
||||||
|
ReallocMem(outBuffer,zstream.total_out);
|
||||||
|
outSize := zstream.total_out;
|
||||||
|
except
|
||||||
|
FreeMem(outBuffer);
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ZDecompress(const inBuffer: Pointer; inSize: Integer;
|
||||||
|
out outBuffer: Pointer; out outSize: Integer; outEstimate: Integer);
|
||||||
|
var
|
||||||
|
zstream: TZStreamRec;
|
||||||
|
delta : Integer;
|
||||||
|
begin
|
||||||
|
FillChar(zstream,SizeOf(TZStreamRec),0);
|
||||||
|
|
||||||
|
delta := (inSize + 255) and not 255;
|
||||||
|
|
||||||
|
if outEstimate = 0 then outSize := delta
|
||||||
|
else outSize := outEstimate;
|
||||||
|
|
||||||
|
GetMem(outBuffer,outSize);
|
||||||
|
|
||||||
|
try
|
||||||
|
zstream.next_in := inBuffer;
|
||||||
|
zstream.avail_in := inSize;
|
||||||
|
zstream.next_out := outBuffer;
|
||||||
|
zstream.avail_out := outSize;
|
||||||
|
|
||||||
|
ZDecompressCheck(InflateInit(zstream));
|
||||||
|
|
||||||
|
try
|
||||||
|
while ZDecompressCheck(inflate(zstream,Z_NO_FLUSH)) <> Z_STREAM_END do
|
||||||
|
begin
|
||||||
|
Inc(outSize,delta);
|
||||||
|
ReallocMem(outBuffer,outSize);
|
||||||
|
|
||||||
|
zstream.next_out := PChar(Integer(outBuffer) + zstream.total_out);
|
||||||
|
zstream.avail_out := delta;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
ZDecompressCheck(inflateEnd(zstream));
|
||||||
|
end;
|
||||||
|
|
||||||
|
ReallocMem(outBuffer,zstream.total_out);
|
||||||
|
outSize := zstream.total_out;
|
||||||
|
except
|
||||||
|
FreeMem(outBuffer);
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{** string routines *********************************************************}
|
||||||
|
|
||||||
|
function ZCompressStr(const s: String; level: TZCompressionLevel): String;
|
||||||
|
var
|
||||||
|
buffer: Pointer;
|
||||||
|
size : Integer;
|
||||||
|
begin
|
||||||
|
ZCompress(PChar(s),Length(s),buffer,size,level);
|
||||||
|
|
||||||
|
SetLength(result,size);
|
||||||
|
Move(buffer^,result[1],size);
|
||||||
|
|
||||||
|
FreeMem(buffer);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ZDecompressStr(const s: String): String;
|
||||||
|
var
|
||||||
|
buffer: Pointer;
|
||||||
|
size : Integer;
|
||||||
|
begin
|
||||||
|
ZDecompress(PChar(s),Length(s),buffer,size);
|
||||||
|
|
||||||
|
SetLength(result,size);
|
||||||
|
Move(buffer^,result[1],size);
|
||||||
|
|
||||||
|
FreeMem(buffer);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{** stream routines *********************************************************}
|
||||||
|
|
||||||
|
procedure ZCompressStream(inStream, outStream: TStream;
|
||||||
|
level: TZCompressionLevel);
|
||||||
|
const
|
||||||
|
bufferSize = 32768;
|
||||||
|
var
|
||||||
|
zstream : TZStreamRec;
|
||||||
|
zresult : Integer;
|
||||||
|
inBuffer : Array [0..bufferSize-1] of Char;
|
||||||
|
outBuffer: Array [0..bufferSize-1] of Char;
|
||||||
|
inSize : Integer;
|
||||||
|
outSize : Integer;
|
||||||
|
begin
|
||||||
|
FillChar(zstream,SizeOf(TZStreamRec),0);
|
||||||
|
|
||||||
|
ZCompressCheck(DeflateInit(zstream,ZLevels[level]));
|
||||||
|
|
||||||
|
inSize := inStream.Read(inBuffer,bufferSize);
|
||||||
|
|
||||||
|
while inSize > 0 do
|
||||||
|
begin
|
||||||
|
zstream.next_in := inBuffer;
|
||||||
|
zstream.avail_in := inSize;
|
||||||
|
|
||||||
|
repeat
|
||||||
|
zstream.next_out := outBuffer;
|
||||||
|
zstream.avail_out := bufferSize;
|
||||||
|
|
||||||
|
ZCompressCheck(deflate(zstream,Z_NO_FLUSH));
|
||||||
|
|
||||||
|
// outSize := zstream.next_out - outBuffer;
|
||||||
|
outSize := bufferSize - zstream.avail_out;
|
||||||
|
|
||||||
|
outStream.Write(outBuffer,outSize);
|
||||||
|
until (zstream.avail_in = 0) and (zstream.avail_out > 0);
|
||||||
|
|
||||||
|
inSize := inStream.Read(inBuffer,bufferSize);
|
||||||
|
end;
|
||||||
|
|
||||||
|
repeat
|
||||||
|
zstream.next_out := outBuffer;
|
||||||
|
zstream.avail_out := bufferSize;
|
||||||
|
|
||||||
|
zresult := ZCompressCheck(deflate(zstream,Z_FINISH));
|
||||||
|
|
||||||
|
// outSize := zstream.next_out - outBuffer;
|
||||||
|
outSize := bufferSize - zstream.avail_out;
|
||||||
|
|
||||||
|
outStream.Write(outBuffer,outSize);
|
||||||
|
until (zresult = Z_STREAM_END) and (zstream.avail_out > 0);
|
||||||
|
|
||||||
|
ZCompressCheck(deflateEnd(zstream));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ZDecompressStream(inStream, outStream: TStream);
|
||||||
|
const
|
||||||
|
bufferSize = 32768;
|
||||||
|
var
|
||||||
|
zstream : TZStreamRec;
|
||||||
|
zresult : Integer;
|
||||||
|
inBuffer : Array [0..bufferSize-1] of Char;
|
||||||
|
outBuffer: Array [0..bufferSize-1] of Char;
|
||||||
|
inSize : Integer;
|
||||||
|
outSize : Integer;
|
||||||
|
begin
|
||||||
|
FillChar(zstream,SizeOf(TZStreamRec),0);
|
||||||
|
|
||||||
|
ZCompressCheck(InflateInit(zstream));
|
||||||
|
|
||||||
|
inSize := inStream.Read(inBuffer,bufferSize);
|
||||||
|
|
||||||
|
while inSize > 0 do
|
||||||
|
begin
|
||||||
|
zstream.next_in := inBuffer;
|
||||||
|
zstream.avail_in := inSize;
|
||||||
|
|
||||||
|
repeat
|
||||||
|
zstream.next_out := outBuffer;
|
||||||
|
zstream.avail_out := bufferSize;
|
||||||
|
|
||||||
|
ZCompressCheck(inflate(zstream,Z_NO_FLUSH));
|
||||||
|
|
||||||
|
// outSize := zstream.next_out - outBuffer;
|
||||||
|
outSize := bufferSize - zstream.avail_out;
|
||||||
|
|
||||||
|
outStream.Write(outBuffer,outSize);
|
||||||
|
until (zstream.avail_in = 0) and (zstream.avail_out > 0);
|
||||||
|
|
||||||
|
inSize := inStream.Read(inBuffer,bufferSize);
|
||||||
|
end;
|
||||||
|
|
||||||
|
repeat
|
||||||
|
zstream.next_out := outBuffer;
|
||||||
|
zstream.avail_out := bufferSize;
|
||||||
|
|
||||||
|
zresult := ZCompressCheck(inflate(zstream,Z_FINISH));
|
||||||
|
|
||||||
|
// outSize := zstream.next_out - outBuffer;
|
||||||
|
outSize := bufferSize - zstream.avail_out;
|
||||||
|
|
||||||
|
outStream.Write(outBuffer,outSize);
|
||||||
|
until (zresult = Z_STREAM_END) and (zstream.avail_out > 0);
|
||||||
|
|
||||||
|
ZCompressCheck(inflateEnd(zstream));
|
||||||
|
end;
|
||||||
|
|
||||||
|
{** TCustomZStream **********************************************************}
|
||||||
|
|
||||||
|
constructor TCustomZStream.Create(stream: TStream);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
|
||||||
|
FStream := stream;
|
||||||
|
FStreamPos := stream.Position;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCustomZStream.DoProgress;
|
||||||
|
begin
|
||||||
|
if Assigned(FOnProgress) then FOnProgress(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{** TZCompressionStream *****************************************************}
|
||||||
|
|
||||||
|
constructor TZCompressionStream.Create(dest: TStream;
|
||||||
|
compressionLevel: TZCompressionLevel);
|
||||||
|
begin
|
||||||
|
inherited Create(dest);
|
||||||
|
|
||||||
|
FZStream.next_out := FBuffer;
|
||||||
|
FZStream.avail_out := SizeOf(FBuffer);
|
||||||
|
|
||||||
|
ZCompressCheck(DeflateInit(FZStream,ZLevels[compressionLevel]));
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TZCompressionStream.Destroy;
|
||||||
|
begin
|
||||||
|
FZStream.next_in := Nil;
|
||||||
|
FZStream.avail_in := 0;
|
||||||
|
|
||||||
|
try
|
||||||
|
if FStream.Position <> FStreamPos then FStream.Position := FStreamPos;
|
||||||
|
|
||||||
|
while ZCompressCheck(deflate(FZStream,Z_FINISH)) <> Z_STREAM_END do
|
||||||
|
begin
|
||||||
|
FStream.WriteBuffer(FBuffer,SizeOf(FBuffer) - FZStream.avail_out);
|
||||||
|
|
||||||
|
FZStream.next_out := FBuffer;
|
||||||
|
FZStream.avail_out := SizeOf(FBuffer);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if FZStream.avail_out < SizeOf(FBuffer) then
|
||||||
|
begin
|
||||||
|
FStream.WriteBuffer(FBuffer,SizeOf(FBuffer) - FZStream.avail_out);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
deflateEnd(FZStream);
|
||||||
|
end;
|
||||||
|
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TZCompressionStream.Read(var buffer; count: Longint): Longint;
|
||||||
|
begin
|
||||||
|
raise EZCompressionError.Create(SZInvalid);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TZCompressionStream.Write(const buffer; count: Longint): Longint;
|
||||||
|
begin
|
||||||
|
FZStream.next_in := @buffer;
|
||||||
|
FZStream.avail_in := count;
|
||||||
|
|
||||||
|
if FStream.Position <> FStreamPos then FStream.Position := FStreamPos;
|
||||||
|
|
||||||
|
while FZStream.avail_in > 0 do
|
||||||
|
begin
|
||||||
|
ZCompressCheck(deflate(FZStream,Z_NO_FLUSH));
|
||||||
|
|
||||||
|
if FZStream.avail_out = 0 then
|
||||||
|
begin
|
||||||
|
FStream.WriteBuffer(FBuffer,SizeOf(FBuffer));
|
||||||
|
|
||||||
|
FZStream.next_out := FBuffer;
|
||||||
|
FZStream.avail_out := SizeOf(FBuffer);
|
||||||
|
|
||||||
|
FStreamPos := FStream.Position;
|
||||||
|
|
||||||
|
DoProgress;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
result := Count;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TZCompressionStream.Seek(offset: Longint; origin: Word): Longint;
|
||||||
|
begin
|
||||||
|
if (offset = 0) and (origin = soFromCurrent) then
|
||||||
|
begin
|
||||||
|
result := FZStream.total_in;
|
||||||
|
end
|
||||||
|
else raise EZCompressionError.Create(SZInvalid);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TZCompressionStream.GetCompressionRate: Single;
|
||||||
|
begin
|
||||||
|
if FZStream.total_in = 0 then result := 0
|
||||||
|
else result := (1.0 - (FZStream.total_out / FZStream.total_in)) * 100.0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{** TZDecompressionStream ***************************************************}
|
||||||
|
|
||||||
|
constructor TZDecompressionStream.Create(source: TStream);
|
||||||
|
begin
|
||||||
|
inherited Create(source);
|
||||||
|
|
||||||
|
FZStream.next_in := FBuffer;
|
||||||
|
FZStream.avail_in := 0;
|
||||||
|
|
||||||
|
ZDecompressCheck(InflateInit(FZStream));
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TZDecompressionStream.Destroy;
|
||||||
|
begin
|
||||||
|
inflateEnd(FZStream);
|
||||||
|
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TZDecompressionStream.Read(var buffer; count: Longint): Longint;
|
||||||
|
var
|
||||||
|
zresult: Integer;
|
||||||
|
begin
|
||||||
|
FZStream.next_out := @buffer;
|
||||||
|
FZStream.avail_out := count;
|
||||||
|
|
||||||
|
if FStream.Position <> FStreamPos then FStream.Position := FStreamPos;
|
||||||
|
|
||||||
|
zresult := Z_OK;
|
||||||
|
|
||||||
|
while (FZStream.avail_out > 0) and (zresult <> Z_STREAM_END) do
|
||||||
|
begin
|
||||||
|
if FZStream.avail_in = 0 then
|
||||||
|
begin
|
||||||
|
FZStream.avail_in := FStream.Read(FBuffer,SizeOf(FBuffer));
|
||||||
|
|
||||||
|
if FZStream.avail_in = 0 then
|
||||||
|
begin
|
||||||
|
result := count - FZStream.avail_out;
|
||||||
|
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
FZStream.next_in := FBuffer;
|
||||||
|
FStreamPos := FStream.Position;
|
||||||
|
|
||||||
|
DoProgress;
|
||||||
|
end;
|
||||||
|
|
||||||
|
zresult := ZDecompressCheck(inflate(FZStream,Z_NO_FLUSH));
|
||||||
|
end;
|
||||||
|
|
||||||
|
if (zresult = Z_STREAM_END) and (FZStream.avail_in > 0) then
|
||||||
|
begin
|
||||||
|
FStream.Position := FStream.Position - FZStream.avail_in;
|
||||||
|
FStreamPos := FStream.Position;
|
||||||
|
|
||||||
|
FZStream.avail_in := 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
result := count - FZStream.avail_out;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TZDecompressionStream.Write(const Buffer; Count: Longint): Longint;
|
||||||
|
begin
|
||||||
|
raise EZDecompressionError.Create(SZInvalid);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TZDecompressionStream.Seek(Offset: Longint; Origin: Word): Longint;
|
||||||
|
var
|
||||||
|
buf: Array [0..8191] of Char;
|
||||||
|
i : Integer;
|
||||||
|
begin
|
||||||
|
if (offset = 0) and (origin = soFromBeginning) then
|
||||||
|
begin
|
||||||
|
ZDecompressCheck(inflateReset(FZStream));
|
||||||
|
|
||||||
|
FZStream.next_in := FBuffer;
|
||||||
|
FZStream.avail_in := 0;
|
||||||
|
|
||||||
|
FStream.Position := 0;
|
||||||
|
FStreamPos := 0;
|
||||||
|
end
|
||||||
|
else if ((offset >= 0) and (origin = soFromCurrent)) or
|
||||||
|
(((offset - FZStream.total_out) > 0) and (origin = soFromBeginning)) then
|
||||||
|
begin
|
||||||
|
if origin = soFromBeginning then Dec(offset,FZStream.total_out);
|
||||||
|
|
||||||
|
if offset > 0 then
|
||||||
|
begin
|
||||||
|
for i := 1 to offset div SizeOf(buf) do ReadBuffer(buf,SizeOf(buf));
|
||||||
|
ReadBuffer(buf,offset mod SizeOf(buf));
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else if (offset = 0) and (origin = soFromEnd) then
|
||||||
|
begin
|
||||||
|
while Read(buf,SizeOf(buf)) > 0 do ;
|
||||||
|
end
|
||||||
|
else raise EZDecompressionError.Create(SZInvalid);
|
||||||
|
|
||||||
|
result := FZStream.total_out;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
Chillmitts [Oobag]
|
|
||||||
Gyrognome Puma Burgular
|
|
||||||
Level 1 (exp. 220/1200)
|
|
||||||
|
|
||||||
Plot stage: Act I (5 hours remaining)
|
|
||||||
Quest: Deliver this counterpane (83% complete)
|
|
||||||
|
|
||||||
Stats:
|
|
||||||
STR 10
|
|
||||||
CON 9
|
|
||||||
DEX 6
|
|
||||||
INT 7
|
|
||||||
WIS 5 HP Max 2
|
|
||||||
CHA 15 MP Max 8
|
|
||||||
|
|
||||||
Equipment:
|
|
||||||
Weapon Sharp Stick
|
|
||||||
Shield Pie Plate
|
|
||||||
Helm
|
|
||||||
Hauberk
|
|
||||||
Brassairts -1 Holey Threadbare Chamois
|
|
||||||
Vambraces
|
|
||||||
Gauntlets
|
|
||||||
Cuisses
|
|
||||||
Greaves
|
|
||||||
Sollerets
|
|
||||||
|
|
||||||
Spell Book:
|
|
||||||
Hastiness I
|
|
||||||
Big Sister III
|
|
||||||
|
|
||||||
Inventory (20/20 cubits):
|
|
||||||
34 Gold
|
|
||||||
2 orc snouts
|
|
||||||
a merman trident
|
|
||||||
a Gleaming Bandolier of Grob
|
|
||||||
|
|
||||||
-- June 12 2002 10:12:12
|
|
||||||
-- Progress Quest 6.2 - http://progressquest.com
|
|
||||||
Vendored
+1
-1
@@ -125,5 +125,5 @@ running</i>. Your character will make <i>no</i> progress once you quit the prog
|
|||||||
<tr><td>Alt-F4<td>Exit <b>Progress Quest</b></table>
|
<tr><td>Alt-F4<td>Exit <b>Progress Quest</b></table>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<small>©:Copyright 2003
|
<small>©:Copyright 2022
|
||||||
<a href=mailto:grumdrig@progressquest.com>grumdrig@progressquest.com</a>
|
<a href=mailto:grumdrig@progressquest.com>grumdrig@progressquest.com</a>
|
||||||
Vendored
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
Progress Quest version 6.2
|
Progress Quest version 6.4
|
||||||
Copyright (c) 2003 Eric Fredricksen
|
Copyright (c) 2022 Eric Fredricksen
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
@@ -31,5 +31,5 @@
|
|||||||
-M
|
-M
|
||||||
-$M16384,1048576
|
-$M16384,1048576
|
||||||
-K$00400000
|
-K$00400000
|
||||||
-LE"c:\appl\delphi6\Projects\Bpl"
|
-LE"c:\program files\borland\delphi6\Projects\Bpl"
|
||||||
-LN"c:\appl\delphi6\Projects\Bpl"
|
-LN"c:\program files\borland\delphi6\Projects\Bpl"
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
[2003-04-12 11:34:34] Gained a swamp elf lilypad
|
|
||||||
[2003-04-12 11:34:34] Executing a fetal Anhkheg...
|
|
||||||
[2003-04-12 11:37:14] Loaded game: C:\proj\pq6.2\Chillmitts [Oobag].pq
|
|
||||||
[2003-04-12 11:37:15] Saving game: C:\proj\pq6.2\Chillmitts [Oobag].pq
|
|
||||||
[2003-04-12 11:51:16] Loaded game: C:\proj\pq6.2\Chillmitts [Oobag].pq
|
|
||||||
[2003-04-12 11:51:30] Gained an anhkheg chitin
|
|
||||||
[2003-04-12 11:51:30] Executing a fetal Anhkheg...
|
|
||||||
[2003-04-12 11:51:36] Gained an anhkheg chitin
|
|
||||||
[2003-04-12 11:51:36] Executing a fetal Anhkheg...
|
|
||||||
Binary file not shown.
@@ -1,45 +0,0 @@
|
|||||||
Chillmitts [Oobag]
|
|
||||||
Gyrognome Puma Burgular
|
|
||||||
Level 2 (exp. 345/1279)
|
|
||||||
|
|
||||||
Plot stage: Act I (5 hours remaining)
|
|
||||||
Quest: Exterminate the Gargoyles (40% complete)
|
|
||||||
|
|
||||||
Stats:
|
|
||||||
STR 11
|
|
||||||
CON 10
|
|
||||||
DEX 6
|
|
||||||
INT 8
|
|
||||||
WIS 5 HP Max 9
|
|
||||||
CHA 16 MP Max 11
|
|
||||||
|
|
||||||
Equipment:
|
|
||||||
Shield Pie Plate
|
|
||||||
Helm -2 Holey Threadbare Chamois
|
|
||||||
Hauberk -2 Burlap
|
|
||||||
Vambraces Macrame
|
|
||||||
Gauntlets Mildewed Motheaten Chamois
|
|
||||||
Gambeson Macrame
|
|
||||||
Greaves -4 Faded Chamois
|
|
||||||
|
|
||||||
Spell Book:
|
|
||||||
Slime Finger II
|
|
||||||
Sadness I
|
|
||||||
Seasick I
|
|
||||||
|
|
||||||
Inventory (19/21 cubits):
|
|
||||||
89 gold pieces
|
|
||||||
a peryton antler
|
|
||||||
a lizard man tail
|
|
||||||
a pirate booty
|
|
||||||
a gray ooze gravy
|
|
||||||
a hobgoblin patella
|
|
||||||
a violet fungi spore
|
|
||||||
2 billy goat beards
|
|
||||||
an eel sashimi
|
|
||||||
6 yellow mold spores
|
|
||||||
2 nixie webbings
|
|
||||||
the Fearsome Laurel of Prurience
|
|
||||||
|
|
||||||
-- 4/12/2003 1:19:29 PM
|
|
||||||
-- Progress Quest 6.2 - http://progressquest.com/
|
|
||||||
@@ -1,266 +0,0 @@
|
|||||||
[2003-04-12 11:41:57] Loaded game: C:\proj\pq6.2\Cokie [Oobag].pq
|
|
||||||
[2003-04-12 11:42:02] Gained a manes tooth
|
|
||||||
[2003-04-12 11:42:02] Executing a Manes...
|
|
||||||
[2003-04-12 11:42:09] Gained a manes tooth
|
|
||||||
[2003-04-12 11:42:09] Executing a Battle-Manes...
|
|
||||||
[2003-04-12 11:42:22] Quest completed: Deliver this bucket
|
|
||||||
[2003-04-12 11:42:22] Commencing quest: Placate the Boogies
|
|
||||||
[2003-04-12 11:42:22] Saving game: C:\proj\pq6.2\Cokie [Oobag].pq
|
|
||||||
[2003-04-12 11:42:22] Gained a manes tooth
|
|
||||||
[2003-04-12 11:42:22] Executing a Nixie...
|
|
||||||
[2003-04-12 11:42:28] Gained a nixie webbing
|
|
||||||
[2003-04-12 11:42:28] Executing a Goblin...
|
|
||||||
[2003-04-12 11:42:34] Gained a goblin ear
|
|
||||||
[2003-04-12 11:42:34] Heading to market to sell loot...
|
|
||||||
[2003-04-12 11:42:38] Selling a gnoll collar...
|
|
||||||
[2003-04-12 11:42:40] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:40] Selling a pirate booty...
|
|
||||||
[2003-04-12 11:42:41] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:41] Selling a quasit tail...
|
|
||||||
[2003-04-12 11:42:42] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:42] Selling a girl scout cookie...
|
|
||||||
[2003-04-12 11:42:43] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:43] Selling a multicell dendrite...
|
|
||||||
[2003-04-12 11:42:44] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:44] Selling a nebbish belly...
|
|
||||||
[2003-04-12 11:42:46] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:46] Selling a troglodyte tail...
|
|
||||||
[2003-04-12 11:42:47] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:47] Selling a merman trident...
|
|
||||||
[2003-04-12 11:42:48] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:48] Selling a yellow mold spore...
|
|
||||||
[2003-04-12 11:42:49] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:49] Selling a hippogriff egg...
|
|
||||||
[2003-04-12 11:42:50] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:50] Selling a koala heart...
|
|
||||||
[2003-04-12 11:42:52] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:52] Selling 7 manes tooths...
|
|
||||||
[2003-04-12 11:42:53] Got paid 7 gold pieces
|
|
||||||
[2003-04-12 11:42:53] Selling a nixie webbing...
|
|
||||||
[2003-04-12 11:42:54] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:54] Selling a goblin ear...
|
|
||||||
[2003-04-12 11:42:55] Got paid a gold piece
|
|
||||||
[2003-04-12 11:42:55] Heading to the killing fields...
|
|
||||||
[2003-04-12 11:42:59] Executing an undernourished Triton...
|
|
||||||
[2003-04-12 11:43:12] Gained a triton scale
|
|
||||||
[2003-04-12 11:43:12] Executing a passing Battle-Finch Hunter Strangler...
|
|
||||||
[2003-04-12 11:43:24] Gained a Fearsome Sceptre of Loyalty
|
|
||||||
[2003-04-12 11:43:24] Executing an Uruk...
|
|
||||||
[2003-04-12 11:43:36] Gained an uruk boot
|
|
||||||
[2003-04-12 11:43:36] Executing a Battle-Dwarf...
|
|
||||||
[2003-04-12 11:43:49] Gained a dwarf drawers
|
|
||||||
[2003-04-12 11:43:49] Executing a Pixie...
|
|
||||||
[2003-04-12 11:43:55] Gained a pixie dust
|
|
||||||
[2003-04-12 11:43:55] Executing a Nebbish...
|
|
||||||
[2003-04-12 11:44:01] Gained a nebbish belly
|
|
||||||
[2003-04-12 11:44:01] Executing a Battle-Beagle...
|
|
||||||
[2003-04-12 11:44:07] Gained a beagle collar
|
|
||||||
[2003-04-12 11:44:07] Executing a Manes...
|
|
||||||
[2003-04-12 11:44:13] Gained a manes tooth
|
|
||||||
[2003-04-12 11:44:13] Executing a Sea Elf...
|
|
||||||
[2003-04-12 11:44:20] Gained a Level
|
|
||||||
[2003-04-12 11:44:20] Gained 7 HP Maxes
|
|
||||||
[2003-04-12 11:44:20] Gained 8 MP Maxes
|
|
||||||
[2003-04-12 11:44:20] Gained a STR
|
|
||||||
[2003-04-12 11:44:20] Gained a STR
|
|
||||||
[2003-04-12 11:44:20] Saving game: C:\proj\pq6.2\Cokie [Oobag].pq
|
|
||||||
[2003-04-12 11:44:22] Gained a sea elf jerkin
|
|
||||||
[2003-04-12 11:44:22] Executing a crippled preadolescent Umber Hulk...
|
|
||||||
[2003-04-12 11:44:28] Gained an umber hulk claw
|
|
||||||
[2003-04-12 11:44:28] Executing a cursed Orc...
|
|
||||||
[2003-04-12 11:44:37] Quest completed: Placate the Boogies
|
|
||||||
[2003-04-12 11:44:37] Commencing quest: Placate the Nymphs
|
|
||||||
[2003-04-12 11:44:37] Saving game: C:\proj\pq6.2\Cokie [Oobag].pq
|
|
||||||
[2003-04-12 11:44:37] Gained an orc snout
|
|
||||||
[2003-04-12 11:44:37] Executing a Wolf...
|
|
||||||
[2003-04-12 11:44:43] Gained a wolf paw
|
|
||||||
[2003-04-12 11:44:43] Executing a greater Nixie...
|
|
||||||
[2003-04-12 11:44:50] Gained a nixie webbing
|
|
||||||
[2003-04-12 11:44:50] Executing a Grid Bug...
|
|
||||||
[2003-04-12 11:44:53] Gained a grid bug carapace
|
|
||||||
[2003-04-12 11:44:53] Executing a Troglodyte...
|
|
||||||
[2003-04-12 11:44:59] Gained a troglodyte tail
|
|
||||||
[2003-04-12 11:44:59] Executing an Uruk...
|
|
||||||
[2003-04-12 11:45:06] Gained an uruk boot
|
|
||||||
[2003-04-12 11:45:06] Executing an underage Piercer...
|
|
||||||
[2003-04-12 11:45:12] Gained a piercer tip
|
|
||||||
[2003-04-12 11:45:12] Executing a Brown Elf...
|
|
||||||
[2003-04-12 11:45:15] Gained a brown elf tusk
|
|
||||||
[2003-04-12 11:45:15] Executing a greater Swamp Elf...
|
|
||||||
[2003-04-12 11:45:21] Gained a swamp elf lilypad
|
|
||||||
[2003-04-12 11:45:21] Executing a crippled Medusa...
|
|
||||||
[2003-04-12 11:45:31] Gained a medusa eye
|
|
||||||
[2003-04-12 11:45:31] Executing an undernourished Nymph...
|
|
||||||
[2003-04-12 11:45:38] Gained a nymph hanky
|
|
||||||
[2003-04-12 11:45:38] Executing a Stun Worm...
|
|
||||||
[2003-04-12 11:45:44] Gained a stun worm trode
|
|
||||||
[2003-04-12 11:45:44] Heading to market to sell loot...
|
|
||||||
[2003-04-12 11:45:48] Selling a triton scale...
|
|
||||||
[2003-04-12 11:45:49] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:45:49] Selling a Fearsome Sceptre of Loyalty...
|
|
||||||
[2003-04-12 11:45:50] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:45:50] Selling 2 uruk boots...
|
|
||||||
[2003-04-12 11:45:52] Got paid 4 gold pieces
|
|
||||||
[2003-04-12 11:45:52] Selling a dwarf drawers...
|
|
||||||
[2003-04-12 11:45:53] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:45:53] Selling a pixie dust...
|
|
||||||
[2003-04-12 11:45:54] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:45:54] Selling a nebbish belly...
|
|
||||||
[2003-04-12 11:45:55] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:45:55] Selling a beagle collar...
|
|
||||||
[2003-04-12 11:45:57] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:45:57] Selling a manes tooth...
|
|
||||||
[2003-04-12 11:45:58] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:45:58] Selling a sea elf jerkin...
|
|
||||||
[2003-04-12 11:45:59] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:45:59] Selling an umber hulk claw...
|
|
||||||
[2003-04-12 11:46:00] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:46:00] Selling an orc snout...
|
|
||||||
[2003-04-12 11:46:01] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:46:01] Selling a wolf paw...
|
|
||||||
[2003-04-12 11:46:03] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:46:03] Selling a nixie webbing...
|
|
||||||
[2003-04-12 11:46:04] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:46:04] Selling a grid bug carapace...
|
|
||||||
[2003-04-12 11:46:05] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:46:05] Selling a troglodyte tail...
|
|
||||||
[2003-04-12 11:46:06] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:46:06] Selling a piercer tip...
|
|
||||||
[2003-04-12 11:46:07] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:46:07] Selling a brown elf tusk...
|
|
||||||
[2003-04-12 11:46:09] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:46:09] Selling a swamp elf lilypad...
|
|
||||||
[2003-04-12 11:46:10] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:46:10] Selling a medusa eye...
|
|
||||||
[2003-04-12 11:46:11] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:46:11] Selling a nymph hanky...
|
|
||||||
[2003-04-12 11:46:12] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:46:12] Selling a stun worm trode...
|
|
||||||
[2003-04-12 11:46:13] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:46:13] Negotiating purchase of better equipment...
|
|
||||||
[2003-04-12 11:46:19] Spent 60 gold pieces
|
|
||||||
[2003-04-12 11:46:19] Heading to the killing fields...
|
|
||||||
[2003-04-12 11:46:23] Executing a greater Rot Grub...
|
|
||||||
[2003-04-12 11:46:29] Gained a rot grub eggsac
|
|
||||||
[2003-04-12 11:46:29] Executing a sick Quasit...
|
|
||||||
[2003-04-12 11:46:32] Gained a quasit tail
|
|
||||||
[2003-04-12 11:46:33] Executing an underage Sea Hag...
|
|
||||||
[2003-04-12 11:46:39] Gained a sea hag wart
|
|
||||||
[2003-04-12 11:46:39] Executing a greater Bunny...
|
|
||||||
[2003-04-12 11:46:42] Gained a bunny ear
|
|
||||||
[2003-04-12 11:46:42] Executing a greater Uruk...
|
|
||||||
[2003-04-12 11:46:51] Gained an uruk boot
|
|
||||||
[2003-04-12 11:46:51] Executing a comatose Catoblepas...
|
|
||||||
[2003-04-12 11:46:58] Gained a catoblepas neck
|
|
||||||
[2003-04-12 11:46:58] Executing a Piercer...
|
|
||||||
[2003-04-12 11:47:07] Gained a piercer tip
|
|
||||||
[2003-04-12 11:47:07] Executing a greater Wolf...
|
|
||||||
[2003-04-12 11:47:17] Quest completed: Placate the Nymphs
|
|
||||||
[2003-04-12 11:47:17] Gained an INT
|
|
||||||
[2003-04-12 11:47:17] Commencing quest: Deliver this trinket
|
|
||||||
[2003-04-12 11:47:17] Saving game: C:\proj\pq6.2\Cokie [Oobag].pq
|
|
||||||
[2003-04-12 11:47:17] Gained a wolf paw
|
|
||||||
[2003-04-12 11:47:17] Executing a Cub Scout...
|
|
||||||
[2003-04-12 11:47:20] Gained a cub scout neckercheif
|
|
||||||
[2003-04-12 11:47:20] Executing a Sylph...
|
|
||||||
[2003-04-12 11:47:29] Gained a sylph thigh
|
|
||||||
[2003-04-12 11:47:29] Executing a Bat...
|
|
||||||
[2003-04-12 11:47:32] Gained a bat wing
|
|
||||||
[2003-04-12 11:47:32] Executing an underage Homonculus...
|
|
||||||
[2003-04-12 11:47:36] Gained a homonculus fluid
|
|
||||||
[2003-04-12 11:47:36] Executing a Gnoll...
|
|
||||||
[2003-04-12 11:47:42] Gained a gnoll collar
|
|
||||||
[2003-04-12 11:47:42] Executing an Eel...
|
|
||||||
[2003-04-12 11:47:48] Gained an eel sashimi
|
|
||||||
[2003-04-12 11:47:48] Executing a Girl Scout...
|
|
||||||
[2003-04-12 11:47:54] Gained a girl scout cookie
|
|
||||||
[2003-04-12 11:47:54] Executing a greater Merman...
|
|
||||||
[2003-04-12 11:48:01] Gained a merman trident
|
|
||||||
[2003-04-12 11:48:01] Executing a Battle-Orc...
|
|
||||||
[2003-04-12 11:48:07] Gained an orc snout
|
|
||||||
[2003-04-12 11:48:07] Executing a Yellow Mold...
|
|
||||||
[2003-04-12 11:48:10] Gained a yellow mold spore
|
|
||||||
[2003-04-12 11:48:10] Executing a cursed Goblin...
|
|
||||||
[2003-04-12 11:48:19] Gained a goblin ear
|
|
||||||
[2003-04-12 11:48:19] Executing a Piercer...
|
|
||||||
[2003-04-12 11:48:29] Gained a piercer tip
|
|
||||||
[2003-04-12 11:48:29] Executing a Jumpskin...
|
|
||||||
[2003-04-12 11:48:38] Gained a jumpskin shin
|
|
||||||
[2003-04-12 11:48:38] Executing a greater Grid Bug...
|
|
||||||
[2003-04-12 11:48:44] Gained a grid bug carapace
|
|
||||||
[2003-04-12 11:48:44] Heading to market to sell loot...
|
|
||||||
[2003-04-12 11:48:48] Selling a rot grub eggsac...
|
|
||||||
[2003-04-12 11:48:50] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:48:50] Selling a quasit tail...
|
|
||||||
[2003-04-12 11:48:51] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:48:51] Selling a sea hag wart...
|
|
||||||
[2003-04-12 11:48:52] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:48:52] Selling a bunny ear...
|
|
||||||
[2003-04-12 11:48:53] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:48:53] Selling an uruk boot...
|
|
||||||
[2003-04-12 11:48:54] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:48:54] Selling a catoblepas neck...
|
|
||||||
[2003-04-12 11:48:56] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:48:56] Selling 2 piercer tips...
|
|
||||||
[2003-04-12 11:48:57] Got paid 4 gold pieces
|
|
||||||
[2003-04-12 11:48:57] Selling a wolf paw...
|
|
||||||
[2003-04-12 11:48:58] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:48:58] Selling a cub scout neckercheif...
|
|
||||||
[2003-04-12 11:48:59] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:48:59] Selling a sylph thigh...
|
|
||||||
[2003-04-12 11:49:00] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:49:00] Selling a bat wing...
|
|
||||||
[2003-04-12 11:49:02] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:49:02] Selling a homonculus fluid...
|
|
||||||
[2003-04-12 11:49:03] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:49:03] Selling a gnoll collar...
|
|
||||||
[2003-04-12 11:49:04] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:49:04] Selling an eel sashimi...
|
|
||||||
[2003-04-12 11:49:05] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:49:05] Selling a girl scout cookie...
|
|
||||||
[2003-04-12 11:49:06] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:49:06] Selling a merman trident...
|
|
||||||
[2003-04-12 11:49:08] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:49:08] Selling an orc snout...
|
|
||||||
[2003-04-12 11:49:09] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:49:09] Selling a yellow mold spore...
|
|
||||||
[2003-04-12 11:49:10] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:49:10] Selling a goblin ear...
|
|
||||||
[2003-04-12 11:49:11] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:49:11] Selling a jumpskin shin...
|
|
||||||
[2003-04-12 11:49:12] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:49:12] Selling a grid bug carapace...
|
|
||||||
[2003-04-12 11:49:14] Got paid 2 gold pieces
|
|
||||||
[2003-04-12 11:49:14] Heading to the killing fields...
|
|
||||||
[2003-04-12 11:49:18] Executing a greater Leprechaun...
|
|
||||||
[2003-04-12 11:49:24] Gained a leprechaun wallet
|
|
||||||
[2003-04-12 11:49:24] Executing a cursed Crayfish...
|
|
||||||
[2003-04-12 11:49:30] Gained a crayfish antenna
|
|
||||||
[2003-04-12 11:49:30] Executing an Iron Peasant...
|
|
||||||
[2003-04-12 11:49:40] Gained an iron peasant chaff
|
|
||||||
[2003-04-12 11:49:40] Executing an undernourished Green Slime...
|
|
||||||
[2003-04-12 11:49:43] Gained a green slime sample
|
|
||||||
[2003-04-12 11:49:43] Executing an Uruk...
|
|
||||||
[2003-04-12 11:49:49] Gained an uruk boot
|
|
||||||
[2003-04-12 11:49:49] Executing an underage Violet Fungi...
|
|
||||||
[2003-04-12 11:49:55] Gained a violet fungi spore
|
|
||||||
[2003-04-12 11:49:55] Executing a Camel...
|
|
||||||
[2003-04-12 11:50:01] Gained a camel hump
|
|
||||||
[2003-04-12 11:50:01] Executing a greater Rat...
|
|
||||||
[2003-04-12 11:50:23] Loaded game: C:\proj\pq6.2\Cokie [Oobag].pq
|
|
||||||
[2003-04-12 11:50:23] Gained a wolf paw
|
|
||||||
[2003-04-12 11:50:23] Executing a Yellow Mold...
|
|
||||||
[2003-04-12 11:50:27] Gained a yellow mold spore
|
|
||||||
[2003-04-12 11:50:27] Executing a massive Nixie...
|
|
||||||
[2003-04-12 11:50:30] Saving game: C:\proj\pq6.2\Cokie [Oobag].pq
|
|
||||||
[2003-04-12 11:52:42] Loaded game: C:\proj\pq6.2\Cokie [Oobag].pq
|
|
||||||
[2003-04-12 11:53:40] Loaded game: C:\proj\pq6.2\Cokie [Oobag].pq
|
|
||||||
[2003-04-12 11:53:46] Gained a nixie webbing
|
|
||||||
[2003-04-12 11:53:46] Executing a Yellow Mold...
|
|
||||||
[2003-04-12 11:53:49] Gained a yellow mold spore
|
|
||||||
[2003-04-12 11:53:49] Executing a massive Nixie...
|
|
||||||
[2003-04-12 11:53:59] Gained a nixie webbing
|
|
||||||
[2003-04-12 11:53:59] Executing a Goblin...
|
|
||||||
[2003-04-12 11:54:02] Gained a goblin ear
|
|
||||||
[2003-04-12 11:54:02] Executing a Battle-Leprechaun...
|
|
||||||
[2003-04-12 11:54:06] Saving game: C:\proj\pq6.2\Cokie [Oobag].pq
|
|
||||||
Binary file not shown.
@@ -1,37 +0,0 @@
|
|||||||
Cookie [Oobag]
|
|
||||||
Half Halfling Puma Burgular
|
|
||||||
Level 3 (exp. 44/1291)
|
|
||||||
|
|
||||||
Plot stage: Act I (5 hours remaining)
|
|
||||||
Quest: Exterminate the Unicorns (93% complete)
|
|
||||||
|
|
||||||
Stats:
|
|
||||||
STR 12
|
|
||||||
CON 9
|
|
||||||
DEX 6
|
|
||||||
INT 14
|
|
||||||
WIS 13 HP Max 19
|
|
||||||
CHA 11 MP Max 19
|
|
||||||
|
|
||||||
Equipment:
|
|
||||||
Shield +1 Pie Plate
|
|
||||||
Helm Macrame
|
|
||||||
Hauberk -1 Canvas
|
|
||||||
Brassairts Mildewed Rusty Pleathers
|
|
||||||
Vambraces Cracked Patched Pleathers
|
|
||||||
Gauntlets Lace
|
|
||||||
Gambeson Lace
|
|
||||||
Greaves -1 Macrame
|
|
||||||
Sollerets -1 Burlap
|
|
||||||
|
|
||||||
Spell Book:
|
|
||||||
Hastiness III
|
|
||||||
Slime Finger III
|
|
||||||
Sadness I
|
|
||||||
Rabbit Punch I
|
|
||||||
|
|
||||||
Inventory (1/22 cubits):
|
|
||||||
6 gold pieces
|
|
||||||
|
|
||||||
-- 9/5/2003 12:22:01 AM
|
|
||||||
-- Progress Quest 6.2 - http://progressquest.com/
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in new issue
Block a user