[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 prev
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.)
This commit is contained in:
Eric Fredricksen
2006-12-24 21:04:57 +00:00
parent bf4a42515c
commit 5e7e820533
27 changed files with 416 additions and 106 deletions
BIN
View File
Binary file not shown.
+8 -3
View File
@@ -342,7 +342,8 @@ object K: TK
'Galoon'
'Bijou'
'Spangle'
'Gimcrack')
'Gimcrack'
'Hood')
TabOrder = 6
WordWrap = False
end
@@ -493,7 +494,8 @@ object K: TK
'tuppence'
'casket'
'nosegay'
'trinket')
'trinket'
'credenza')
TabOrder = 9
WordWrap = False
end
@@ -729,7 +731,10 @@ object K: TK
'Koala|2|heart'
'Wolf|2|paw'
'Whippet|2|collar'
'Uruk|2|boot')
'Uruk|2|boot'
'Poroid|4|node'
'Moakum|8|frenum'
'Fly|0|*')
TabOrder = 10
WordWrap = False
end
-4
View File
@@ -37,10 +37,6 @@ type
Label13: TLabel;
DefenseBad: TMemo;
Label14: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -105,7 +105,7 @@ object FrontForm: TFrontForm
Height = 13
Align = alBottom
Alignment = taCenter
Caption = #169' 2002 Eric Fredricksen - v6.2'
Caption = #169' 2003 Eric Fredricksen - v6.2'
Color = clWhite
Font.Charset = DEFAULT_CHARSET
Font.Color = 11382189
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+43 -7
View File
@@ -523,15 +523,15 @@ object MainForm: TMainForm
ViewStyle = vsReport
end
object vars: TPanel
Left = 84
Top = 32
Width = 177
Left = 188
Top = 24
Width = 77
Height = 129
Caption = 'vars'
TabOrder = 3
Visible = False
object fTask: TLabel
Left = 20
Left = 12
Top = 16
Width = 27
Height = 13
@@ -541,7 +541,7 @@ object MainForm: TMainForm
ParentColor = False
end
object fQuest: TLabel
Left = 24
Left = 12
Top = 36
Width = 31
Height = 13
@@ -551,7 +551,7 @@ object MainForm: TMainForm
ParentColor = False
end
object fQueue: TListBox
Left = 48
Left = 12
Top = 76
Width = 49
Height = 45
@@ -608,7 +608,43 @@ object MainForm: TMainForm
Top = 52
Bitmap = {
494C01010200040004000C000C00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000300000000C00000001001000000000008004
0000000000003600000028000000300000000C00000001002000000000000009
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+111 -49
View File
@@ -1,6 +1,9 @@
unit Main;
{ copyright (c)2002 Eric Fredricksen all rights reserved }
{$UNDEF CHEATS}
{$UNDEF LOGGING}
interface
uses
@@ -8,6 +11,11 @@ uses
Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, ImgList, Menus, ShellAPI;
const
// revs:
// 4: pq 6.2
// 3: pq 6.1
// 2: pq 6.0
// 1: pq 6.0, some early release I guess; don't remember
RevString = '&rev=4';
wmIconTray = WM_USER + Ord('t');
kFileExt = '.pq';
@@ -91,8 +99,11 @@ type
procedure OnEndSession(var Msg : TMessage); message WM_ENDSESSION;
procedure RestoreIt;
function AuthenticateUrl(url: String): String;
{$IFDEF LOGGING}
procedure Log(line: String);
{$ENDIF}
procedure ExportCharSheet;
function CharSheet: String;
public
FTrayIcon: TNotifyIconData;
FReportSave: Boolean;
@@ -144,7 +155,6 @@ uses Web, StrUtils, NewGuy, Math, Config, Front, zlibex, SelServ, Login,
mmsystem, Registry, ShlObj;
{$R *.dfm}
{$DEFINE CHEATS}
// Returns '' if not there, which is lame, but okay for my purposes
function RegRead(root: HKEY; path, name: String): String;
@@ -207,8 +217,7 @@ begin
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage := wmIconTray;
hIcon := Application.Icon.Handle;
StrPCopy(szTip, Caption);
//a.szTip := 'Progress Quest';
StrPLCopy(szTip, Caption, 63);
end;
Application.Minimize;
ShowWindow(Application.Handle, SW_HIDE);
@@ -230,11 +239,13 @@ begin
end;
procedure TMainForm.OnTrayMessage(var Msg: TMessage);
//var p : TPoint;
begin
case Msg.lParam of
WM_LBUTTONDOWN, WM_RBUTTONDOWN:
RestoreIt;
WM_LBUTTONDBLCLK, WM_RBUTTONDBLCLK:
RestoreIt;
end;
end;
@@ -245,8 +256,8 @@ begin
//Shell_NotifyIcon(NIM_ADD, @MainForm.FTrayIcon);
end;
MainForm.Timer1.Enabled := True;
// BS location for this but
MainForm.Caption := 'ProgressQuest - ' + ChangeFileExt(MainForm.GameSaveName, '');
// BS location for this, but...
MainForm.Caption := 'ProgressQuest - ' + ChangeFileExt(ExtractFileName(MainForm.GameSaveName), '');
end;
function TMainForm.GetPasskey: Integer; begin Result := Traits.Tag; end;
@@ -379,7 +390,7 @@ function Young(m: Integer; s: String): String;
begin
Result := IntToStr(m) + s; // in case I screw up
case -m of
-5,5: Result := 'fetal ' + s;
-5,5: Result := 'foetal ' + s;
-4,4: Result := 'baby ' + s;
-3,3: Result := 'preadolescent ' + s;
-2,2: Result := 'teenage ' + s;
@@ -767,7 +778,9 @@ begin
end;
with Quests do begin
if Items.Count > 0 then begin
{$IFDEF LOGGING}
Log('Quest completed: ' + Items[Items.Count-1].Caption);
{$ENDIF}
Items[Items.Count-1].StateIndex := 1;
case Random(4) of
0: WinSpell;
@@ -824,7 +837,9 @@ begin
fQuest.Caption := '';
end;
end;
{$IFDEF LOGGING}
Log('Commencing quest: ' + Caption);
{$ENDIF}
StateIndex := 0;
MakeVisible(false);
end;
@@ -904,11 +919,12 @@ begin
Brag('a');
end;
{$IFDEF LOGGING}
procedure TMainForm.Log(line: String);
var
stamp: String;
logname: String;
log: TextFile;
log: Text;
begin
if FLogEvents then begin
logname := ChangeFileExt(GameSaveName, '.log');
@@ -920,63 +936,77 @@ begin
CloseFile(log);
end;
end;
{$ENDIF}
procedure TMainForm.ExportCharSheet;
var
f: TextFile;
i: Integer;
begin
AssignFile(f, ChangeFileExt(GameSaveName, '.sheet'));
Rewrite(f);
Write(f,Get(Traits,'Name'));
Write(f, CharSheet);
Flush(f);
CloseFile(f);
end;
function TMainForm.CharSheet: String;
var
i: Integer;
f: String;
procedure Wr(a: String); begin f := f + a; end;
procedure WrLn(a: String); overload; begin Wr(a + #13#10); end;
procedure WrLn; overload; begin Wr(#13#10); end;
begin
Wr(Get(Traits,'Name'));
if GetHostName <> '' then
Write(f,' [' + GetHostName + ']');
WriteLn(f);
WriteLn(f,Get(Traits,'Race') + ' ' + Get(Traits,'Class'));
WriteLn(f,Format('Level %d (exp. %d/%d)', [GetI(Traits,'Level'), ExpBar.Position, ExpBar.Max]));
//WriteLn(f,'Level ' + Get(Traits,'Level') + ' (' + ExpBar.Hint + ')');
WriteLn(f);
Wr(' [' + GetHostName + ']');
WrLn;
WrLn(Get(Traits,'Race') + ' ' + Get(Traits,'Class'));
WrLn(Format('Level %d (exp. %d/%d)', [GetI(Traits,'Level'), ExpBar.Position, ExpBar.Max]));
//WrLn('Level ' + Get(Traits,'Level') + ' (' + ExpBar.Hint + ')');
WrLn;
with Plots do if Items.Count > 0 then
WriteLn(f,'Plot stage: ' + Items[Items.Count-1].Caption + ' (' + PlotBar.Hint + ')');
WrLn('Plot stage: ' + Items[Items.Count-1].Caption + ' (' + PlotBar.Hint + ')');
with Quests do if Items.Count > 0 then
WriteLn(f,'Quest: ' + Items[Items.Count-1].Caption + ' (' + QuestBar.Hint + ')');
WriteLn(f);
WriteLn(f, 'Stats:');
WriteLn(f, Format(' STR%7d', [GetI(Stats,'STR')]));
WriteLn(f, Format(' CON%7d', [GetI(Stats,'CON')]));
WriteLn(f, Format(' DEX%7d', [GetI(Stats,'DEX')]));
WriteLn(f, Format(' INT%7d', [GetI(Stats,'INT')]));
WriteLn(f, Format(' WIS%7d HP Max%7d', [GetI(Stats,'WIS'), GetI(Stats,'HP Max')]));
WriteLn(f, Format(' CHA%7d MP Max%7d', [GetI(Stats,'CHA'), GetI(Stats,'MP Max')]));
WriteLn(f);
WriteLn(f, 'Equipment:');
WrLn('Quest: ' + Items[Items.Count-1].Caption + ' (' + QuestBar.Hint + ')');
WrLn;
WrLn( 'Stats:');
WrLn( Format(' STR%7d', [GetI(Stats,'STR')]));
WrLn( Format(' CON%7d', [GetI(Stats,'CON')]));
WrLn( Format(' DEX%7d', [GetI(Stats,'DEX')]));
WrLn( Format(' INT%7d', [GetI(Stats,'INT')]));
WrLn( Format(' WIS%7d HP Max%7d', [GetI(Stats,'WIS'), GetI(Stats,'HP Max')]));
WrLn( Format(' CHA%7d MP Max%7d', [GetI(Stats,'CHA'), GetI(Stats,'MP Max')]));
WrLn;
WrLn( 'Equipment:');
for i := 1 to Equips.Items.Count-1 do
if Get(Equips,i) <> '' then
WriteLn(f, ' ' + LeftStr(Equips.Items[i].Caption + ' ', 12) + Get(Equips,i));
WriteLn(f);
WriteLn(f, 'Spell Book:');
WrLn( ' ' + LeftStr(Equips.Items[i].Caption + ' ', 12) + Get(Equips,i));
WrLn;
WrLn( 'Spell Book:');
with Spells do
for i := 1 to Items.Count-1 do
WriteLn(f, ' ' + Items[i].Caption + ' ' + Get(Spells,i));
WriteLn(f);
WriteLn(f, 'Inventory (' + EncumBar.Hint + '):');
WriteLn(f, ' ' + Indefinite('gold piece', GetI(Inventory, 'Gold')));
WrLn( ' ' + Items[i].Caption + ' ' + Get(Spells,i));
WrLn;
WrLn( 'Inventory (' + EncumBar.Hint + '):');
WrLn( ' ' + Indefinite('gold piece', GetI(Inventory, 'Gold')));
with Inventory do
for i := 2 to Items.Count-1 do
if Pos(' of ', Items[i].Caption) > 0
then WriteLn(f, ' ' + Definite(Items[i].Caption, GetI(Inventory,i)))
else WriteLn(f, ' ' + Indefinite(Items[i].Caption, GetI(Inventory,i)));
WriteLn(f);
WriteLn(f, '-- ' + DateTimeToStr(Now));
WriteLn(f, '-- Progress Quest 6.2 - http://progressquest.com/');
Flush(f);
CloseFile(f);
then WrLn( ' ' + Definite(Items[i].Caption, GetI(Inventory,i)))
else WrLn( ' ' + Indefinite(Items[i].Caption, GetI(Inventory,i)));
WrLn;
WrLn( '-- ' + DateTimeToStr(Now));
WrLn( '-- Progress Quest 6.2 - http://progressquest.com/');
Result := f;
end;
procedure TMainForm.Task(caption: String; msec: Integer);
begin
Kill.SimpleText := caption + '...';
{$IFDEF LOGGING}
Log(Kill.SimpleText);
{$ENDIF}
with TaskBar do begin
Position := 0;
Max := msec;
@@ -996,7 +1026,9 @@ begin
end;
if value < 0 then value := -value;
line := line + ' ' + Indefinite(key, value);
{$IFDEF LOGGING}
Log(line);
{$ENDIF}
end;
procedure TMainForm.AddR(list: TListView; key: String; value: Integer);
@@ -1137,7 +1169,7 @@ begin
FReportSave := true;
FLogEvents := false;
FMakeBackups := false;
FMakeBackups := true;
FMinToTray := true;
FExportSheets := false;
@@ -1197,6 +1229,21 @@ begin
end;
end;
const
KUsage =
'Usage: pq [flags] [game.pq]'#10 +
#10 +
'Flags:'#10 +
' -no-backup Do not make a backup file when saving the game'#10 +
{$IFDEF LOGGING}
' -log Create a text log of events as they occur in the game'#10 +
{$ENDIF}
' -no-report-save Do not display the "Game saved" message when saving'#10 +
' -no-tray Do not minimize to the system tray'#10 +
' -export Export a text character sheet periodically'#10 +
' -export-only Export a text character sheet now, then exit'#10 +
' -no-proxy Do not use Internet Explorer proxy settings'#10 +
' -help Display this chatter (and exit)'#10 ;
procedure TMainForm.FormShow(Sender: TObject);
var
@@ -1207,10 +1254,12 @@ begin
done := false;
exportandexit := false;
for i := 1 to ParamCount do begin
if ParamStr(i) = '-log'
then FLogEvents := true
else if ParamStr(i) = '-backup'
if ParamStr(i) = '-backup'
then FMakeBackups := true
{$IFDEF LOGGING}
else if ParamStr(i) = '-log'
then FLogEvents := true
{$ENDIF}
else if ParamStr(i) = '-no-report-save'
then FReportSave := false
else if ParamStr(i) = '-no-tray'
@@ -1219,7 +1268,14 @@ begin
then FExportSheets := true
else if ParamStr(i) = '-export-only'
then exportandexit := true
else begin
else if ParamStr(i) = '-no-proxy'
then ProxyOK := false
else if ParamStr(i) = '-help'
then begin
ShowMessage(KUsage);
Close;
Exit;
end else begin
LoadGame(ParamStr(i));
if exportandexit then begin
ExportCharSheet;
@@ -1296,7 +1352,9 @@ var
m: TMemoryStream;
i: Integer;
begin
{$IFDEF LOGGING}
Log('Saving game: ' + GameSaveName);
{$ENDIF}
Result := true;
try
if FMakeBackups then begin
@@ -1353,7 +1411,9 @@ begin
for i := 0 to ComponentCount-1 do
m.ReadComponent(Components[i]);
m.Free;
{$IFDEF LOGGING}
Log('Loaded game: ' + name);
{$ENDIF}
StartTimer;
TriggerAutosizes;
end;
@@ -1402,6 +1462,9 @@ begin
Cheats.Visible := not Cheats.Visible;
{$ENDIF}
end;
if (ssCtrl in Shift) and (Key = ord('A')) then begin
ShowMessage(CharSheet);
end;
if GetPasskey = 0 then Exit; // no need for these things
if (ssCtrl in Shift) and (Key = ord('B')) then begin
Brag('b');
@@ -1420,8 +1483,7 @@ end;
procedure Navigate(url: String);
begin
ShellExecute(GetDesktopWindow(), 'open', PChar(url),
nil, '', SW_SHOW);
ShellExecute(GetDesktopWindow(), 'open', PChar(url), nil, '', SW_SHOW);
end;
function LFSR(pt: String; salt: Integer): Integer;
BIN
View File
Binary file not shown.
+11 -2
View File
@@ -85,6 +85,7 @@ object NewGuyForm: TNewGuyForm
C07FFC07E03FF80FF01FF01FF80FE03FFC07E07FFE07E0FFFF07E1FFFF87}
OldCreateOrder = False
Position = poScreenCenter
OnActivate = FormActivate
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
@@ -298,7 +299,7 @@ object NewGuyForm: TNewGuyForm
object Name: TLabeledEdit
Left = 8
Top = 20
Width = 185
Width = 165
Height = 21
EditLabel.Width = 28
EditLabel.Height = 13
@@ -307,7 +308,6 @@ object NewGuyForm: TNewGuyForm
LabelSpacing = 3
MaxLength = 30
TabOrder = 4
Text = 'Grumdrig'
end
object OldRolls: TListBox
Left = 396
@@ -354,6 +354,15 @@ object NewGuyForm: TNewGuyForm
TabOrder = 8
Visible = False
end
object Gen: TButton
Left = 176
Top = 20
Width = 17
Height = 22
Caption = '?'
TabOrder = 9
OnClick = GenClick
end
object PoorCodeDesign: TNMURL
Left = 336
Top = 268
+42 -2
View File
@@ -36,11 +36,14 @@ type
Account: TLabeledEdit;
Password: TLabeledEdit;
ApplicationEvents1: TApplicationEvents;
Gen: TButton;
procedure RerollClick(Sender: TObject);
procedure UnrollClick(Sender: TObject);
procedure SoldClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ApplicationEvents1Minimize(Sender: TObject);
procedure GenClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
procedure RollEm;
function GetAccount: String;
@@ -130,7 +133,6 @@ begin
ItemIndex := Random(Items.Count);
with Klass do
ItemIndex := Random(Items.Count);
Name.SetFocus;
end;
end;
@@ -178,6 +180,7 @@ begin
if (MainForm.Label8.Tag and 16) = 0
then url := MainForm.GetHostAddr
else url := 'http://www.progressquest.com/create.php?';
// url := StringReplace(url, '.com/', '.com/dev/', []);
if (GetAccount <> '') or (GetPassword <> '') then
url := StuffString(url, 8, 0, GetAccount+':'+GetPassword+'@');
args := 'cmd=create' +
@@ -204,10 +207,47 @@ begin
Server.SendHeader.Values['Guild'] := MainForm.GetGuild;
end;
}
procedure TNewGuyForm.ApplicationEvents1Minimize(Sender: TObject);
begin
MainForm.MinimizeIt;
end;
function GenerateName: string;
const
KParts: array [0..2] of string = (
'br|cr|dr|fr|gr|j|kr|l|m|n|pr||||r|sh|tr|v|wh|x|y|z',
'a|a|e|e|i|i|o|o|u|u|ae|ie|oo|ou',
'b|ck|d|g|k|m|n|p|t|v|x|z');
var
i: Integer;
function Pick(s: string): string;
var
count, i: Integer;
begin
count := 1;
for i := 0 to Length(s)-1 do
if s[i] = '|' then Inc(count);
Result := Split(s, Random(count));
end;
begin
for i := 0 to 5 do
Result := Result + Pick(KParts[i mod 3]);
Result := UpperCase(Copy(Result,1,1)) + Copy(Result,2,Length(Result));
end;
procedure TNewGuyForm.GenClick(Sender: TObject);
begin
Name.Text := GenerateName;
end;
procedure TNewGuyForm.FormActivate(Sender: TObject);
begin
if Name.Text = '' then begin
GenClick(Sender);
Name.SetFocus;
end;
end;
end.
+5 -3
View File
@@ -1,10 +1,12 @@
ProgressQuest v6.2(probably pre-release)
[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 this is probably not
the final 6.2. That will come in the next checkin.
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.)
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+48 -10
View File
@@ -8,27 +8,62 @@ uses
type
EWebError = class(Exception);
function DownloadString(const Url: string): string;
function DownloadString(url: String): String;
var
// Change to false to insist on no proxy
ProxyOK: Boolean;
implementation
function DownloadString(const Url: string): string;
{
function OpenAuthUrl(net: HInternet; url, username, password: String): HInternet;
var
connection: HInternet;
begin
connection := InternetConnect(net, host, port, nil, nil,
INTERNET_SERVICE_HTTP, 0, 0);
Result := HttpOpenRequest(Connection, "GET", path,
nil, nil, nil,
// INTERNET_FLAG_KEEP_CONNECTION or
INTERNET_FLAG_RELOAD or
INTERNET_FLAG_PRAGMA_NOCACHE or
INTERNET_FLAG_NO_UI, 0);
InternetSetOption(result, INTERNET_OPTION_USERNAME,
PChar(username), len(username));
InternetSetOption(result, INTERNET_OPTION_PASSWORD,
PChar(password), len(password));
HttpSendRequest(result, nil, 0, nil, 0);
//HttpQueryInfo(Resource, HTTP_QUERY_FLAG_NUMBER |
// HTTP_QUERY_STATUS_CODE, &dwStatus, &dwStatusSize, NULL);
end;
}
function DownloadString(url: string): string;
var
NetHandle: HINTERNET;
UrlHandle: HINTERNET;
Buffer: array[0..1024] of Char;
BytesRead: dWord;
conntype: DWORD;
begin
Result := '';
NetHandle := InternetOpen('PQ6.2', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
conntype := INTERNET_OPEN_TYPE_DIRECT;
if proxyok then conntype := INTERNET_OPEN_TYPE_PRECONFIG;
NetHandle := InternetOpen('PQ6.2', conntype, nil, nil, 0);
if Assigned(NetHandle) then
begin
UrlHandle := InternetOpenUrl(NetHandle, PChar(Url),
nil, 0, // headers
INTERNET_FLAG_RELOAD or
INTERNET_FLAG_PRAGMA_NOCACHE or
INTERNET_FLAG_NO_UI,
0);
begin {
if Len(username + password) > 0 then
UrlHandle := OpenAuthUrl(NetHandle, username, password)
else }
UrlHandle := InternetOpenUrl(NetHandle, PChar(Url),
nil, 0, // headers[size]
INTERNET_FLAG_KEEP_CONNECTION or
INTERNET_FLAG_RELOAD or
INTERNET_FLAG_PRAGMA_NOCACHE or
INTERNET_FLAG_NO_UI,
0);
if Assigned(UrlHandle) then begin
repeat
InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer)-1, BytesRead);
@@ -46,4 +81,7 @@ begin
end;
end;
initialization
ProxyOK := True;
end.
View File
+129
View File
@@ -0,0 +1,129 @@
<html>
<body bgcolor=#ffffd0>
<font color=#404000>
<h1><font color=#e02000>P</font>rogress <font color=#e02000>Q</font>uest</h1>
<font color=#404000>
<a href=http://progressquest.com/>http://progressquest.com/</a>
<h3> Back story </h3>
Since time before time the Vorlak had held the Crosshutch at Thraeskamp.
The ancient reckoning held that the Five Skrelkampi (and their Truebine) would
return when the great Trond-feast could be held anew and the Belnap reunited.
But this legend became lost to all but the Papperboxen at Horbug.
One of their own was Yallow the Speldrig, who found an unlikely pupil in
Torbole Understeady, the discarded illigitimate waif of Wainthane Topknox,
whom Yallow renamed Grumdrig and began to school as a boar-pulmet's apprentice. ...And, as it
was said by some, in aberdoxy.
<p>
As our story opens young Grumdrig has returned to Horbug following a trying stint in
Spilwaer Spond where his laconic disposition and fertile mind bred a series
of misadventures which had landed him outside the good graces of the Jordref there,
Welham, who had secretly begun a long term course of slow but
disaccomodating illpeel in the lad's morning fanwael.
Meanwhile, though scarce a tuft of <i>mansefur</i> had yet made its appearance
on the boy's <i>manssach</i>, a number of visiting Roilwachhs have begun to
exhibit a discreet
and seemingly inexplicable interest in the boy. Strange indeed, as he would not reach
his krouchensterm for another harvest or more.
And when Grumdrig's resiliant compatriot Paedri
appears at Grumdrig's lochnotat with a Scrolstamp from the old Speldrig,
a woozy foreboding feeling rises from his young gut...
<h3> Introduction </h3>
<b>Progress Quest</b> is a next generation computer role-playing game.
Gamers who have played modern online role-playing games,
or almost any computer role-playing game,
or who have at any time installed or upgraded their operating system, will find themselves
incredibly comfortable with <b>Progress Quest</b>'s very familiar gameplay.
<b>Progress Quest</b> follows reverently in the footsteps of recent smash hit
online worlds, but is careful to streamline the more tedious aspects of those
offerings. Players will still have the satisfaction of building their character
from a ninety-pound level 1 teenager, to an incredibly puissant, magically imbued warrior,
well able to snuff out the lives of a barnload of bugbears
without need of so much as a lunch break. Yet, gone are the tedious micromanagement
and other frustrations common to that older generation of RPG's.
<h3> User manual </h3>
Even inexperienced gamers will find <b>Progress Quest</b>
remarkably intutive and simple to play. Start the program
and click the <code>New Game (Single Player)</code> button,
or click <code>New Game (Multiplayer)</code> and select a Realm to
compete against players from all over the world.
You will then be presented with the character creation screen.
Select a name, race and class for the new character. Then, use the <code>Roll</code> button
until you are statisfied with the stats
for your character. <i>Tip: You can use the <code>Unroll</code> button (a feature exclusive to <b>Progress Quest</b>)
to go back to any previous roll if you find that you've
clicked too hastily.</i>
<p>
If you choose to play an online game, your character will share adventures with other <b>Progress
Quest</b> characters in an online virtual world. Online play requires
internet connectivity, though sophisiticated algorithms
keep the bandwidth usage to a minimum. You can compare your character against
the top <b>Progress Quest</b> players by visiting
<a href=http://progressquest.com/realms.php>http://progressquest.com/realms.php</a>
(or hit &lt;Ctrl&gt;-&lt;B&gt; from within the game).
<p>
Finally, hit the <code>Sold!</code> button to begin the game. The game will start immediately and
you can safely familiarize yourself with the game's single interface screen as the game progresses
on its own.
Soon your avatar will will be seeking and destroying an exotic panopoly of beasts while you
gaze proudly on. Missing, you will notice, is the tedious march from town, the bewildering maze of cookie cutter
streets hiding some specific merchant or NPC,
and the repetetive hunt for just the right beast to execute. <b>Progress Quest</b> supplies
your character with an endless series of victims, as well as exciting quests which keep your quest
log full to the brim at all times.
<p>
TREASURE: Each slain creature yields a trophy, which can be sold in any town.
When the encumbrance bar reaches maximum, your character automatically returns to the nearest town
to sell your loot. If sufficiently liquid, he may then purchase an upgrade in equpiment (weapon or armor).
That being done, the interpid adventurer then returns to the frontier to spill more blood.
<i>Tip: The amount your character can carry before his encumbrance bar fills up
increases as his STR stat improves.</i>
<p>
QUESTS: When a quest is complete, your character is rewarded with one of:
a) a special, valuable, treasure item,
b) an improved weapon or piece of armor,
c) a boost in stats, or
d) a new spell for his spellbook. The character is then assigned
a follow-up quest, which he immediately begins to make progress on.
<p>
EXPERIENCE AND LEVELING UP: Experience represents your character's knowledge about the world
around him, as well as his battle prowess and ability to channel the forces of magical power.
Your character gains experience by killing monsters and sentient beings,
over and over again. Once the experience bar is full, your character levels up, and is
given an automatic boost in several of his stats and a new spell for his spellbook.
<p>
DYING: Be warned that your character can be slain by monsters which are tougher than
he can handle. However, this concept
has been abstracted out of the game and takes effect simply by somewhat reducing the experience
accumulated for each successful murder.
<p>
SAVING YOUR PROGRESS: Your game is saved whenever you quit, as well as each time your character levels
up or completes a quest. You can pick up where you left off by restarting <b>Progress Quest</b> and clicking the <code>Load Game</code>
button. <b>Progress Quest</b> makes a backup of your existing save file each time it saves anew, so
if your save file becomes corrupted, load the backup, and lament the progress that must now be regained.
<h3> Game controls </h3>
<b>Progress Quest</b> belongs to a new breed of "fire and forget" RPG's. There is no need to interact
with <b>Progress Quest</b> at all; it will make progress with you or without you.
<p>
You can quit <b>Progress Quest</b> by using the window close box, or by hitting &lt;Alt&gt;-&lt;F4&gt;
(hold down the &lt;Alt&gt; key while hitting &lt;F4&gt;), but there is really little need to ever do so.
Please note that your character will <i>not</i> make any progress <i>except when <b>Progress Quest</b> is
running</i>. Your character will make <i>no</i> progress once you quit the program, until you start
<b>Progress Quest</b> again.
<h3> Keyboard quick reference </h3>
<table border=1 cellspacing=5><th>Key</th><th>Description</tr>
<tr><td>Alt-F4<td>Exit <b>Progress Quest</b></table>
<p>
<small>&copy:Copyright 2003
<a href=mailto:grumdrig@progressquest.com>grumdrig@progressquest.com</a>
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -51,7 +51,7 @@ Conditionals=
DebugSourceDirs=
UsePackages=0
[Parameters]
RunParams=-export "Cokie [oobag].pq"
RunParams=
HostApplication=
Launcher=
UseLauncher=0
Binary file not shown.
+17 -24
View File
@@ -1,44 +1,37 @@
Cookie [Oobag]
Half Halfling Puma Burgular
Level 2 (exp. 180/1279)
Level 3 (exp. 44/1291)
Plot stage: Act I (5 hours remaining)
Quest: Deliver this trinket (38% complete)
Quest: Exterminate the Unicorns (93% complete)
Stats:
STR 12
CON 9
DEX 6
INT 13
WIS 12 HP Max 11
CHA 11 MP Max 12
INT 14
WIS 13 HP Max 19
CHA 11 MP Max 19
Equipment:
Shield +1 Pie Plate
Helm Lace
Hauberk -2 Warped Dented Bearskin
Brassairts +1 Lace
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 II
Slime Finger I
Hastiness III
Slime Finger III
Sadness I
Rabbit Punch I
Inventory (17/22 cubits):
15 gold pieces
a quasit tail
a sea hag wart
a bunny ear
an uruk boot
a catoblepas neck
a piercer tip
a wolf paw
5 yellow mold spores
2 nixie webbings
a goblin ear
a leprechaun wallet
Inventory (1/22 cubits):
6 gold pieces
-- 4/12/2003 1:21:40 PM
-- 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.