[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' 'Galoon'
'Bijou' 'Bijou'
'Spangle' 'Spangle'
'Gimcrack') 'Gimcrack'
'Hood')
TabOrder = 6 TabOrder = 6
WordWrap = False WordWrap = False
end end
@@ -493,7 +494,8 @@ object K: TK
'tuppence' 'tuppence'
'casket' 'casket'
'nosegay' 'nosegay'
'trinket') 'trinket'
'credenza')
TabOrder = 9 TabOrder = 9
WordWrap = False WordWrap = False
end end
@@ -729,7 +731,10 @@ object K: TK
'Koala|2|heart' 'Koala|2|heart'
'Wolf|2|paw' 'Wolf|2|paw'
'Whippet|2|collar' 'Whippet|2|collar'
'Uruk|2|boot') 'Uruk|2|boot'
'Poroid|4|node'
'Moakum|8|frenum'
'Fly|0|*')
TabOrder = 10 TabOrder = 10
WordWrap = False WordWrap = False
end end
-4
View File
@@ -37,10 +37,6 @@ type
Label13: TLabel; Label13: TLabel;
DefenseBad: TMemo; DefenseBad: TMemo;
Label14: TLabel; Label14: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end; end;
var 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 Height = 13
Align = alBottom Align = alBottom
Alignment = taCenter Alignment = taCenter
Caption = #169' 2002 Eric Fredricksen - v6.2' Caption = #169' 2003 Eric Fredricksen - v6.2'
Color = clWhite Color = clWhite
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
Font.Color = 11382189 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 ViewStyle = vsReport
end end
object vars: TPanel object vars: TPanel
Left = 84 Left = 188
Top = 32 Top = 24
Width = 177 Width = 77
Height = 129 Height = 129
Caption = 'vars' Caption = 'vars'
TabOrder = 3 TabOrder = 3
Visible = False Visible = False
object fTask: TLabel object fTask: TLabel
Left = 20 Left = 12
Top = 16 Top = 16
Width = 27 Width = 27
Height = 13 Height = 13
@@ -541,7 +541,7 @@ object MainForm: TMainForm
ParentColor = False ParentColor = False
end end
object fQuest: TLabel object fQuest: TLabel
Left = 24 Left = 12
Top = 36 Top = 36
Width = 31 Width = 31
Height = 13 Height = 13
@@ -551,7 +551,7 @@ object MainForm: TMainForm
ParentColor = False ParentColor = False
end end
object fQueue: TListBox object fQueue: TListBox
Left = 48 Left = 12
Top = 76 Top = 76
Width = 49 Width = 49
Height = 45 Height = 45
@@ -608,7 +608,43 @@ object MainForm: TMainForm
Top = 52 Top = 52
Bitmap = { Bitmap = {
494C01010200040004000C000C00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 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 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
+111 -49
View File
@@ -1,6 +1,9 @@
unit Main; unit Main;
{ copyright (c)2002 Eric Fredricksen all rights reserved } { copyright (c)2002 Eric Fredricksen all rights reserved }
{$UNDEF CHEATS}
{$UNDEF LOGGING}
interface interface
uses uses
@@ -8,6 +11,11 @@ uses
Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, ImgList, Menus, ShellAPI; Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, ImgList, Menus, ShellAPI;
const 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'; RevString = '&rev=4';
wmIconTray = WM_USER + Ord('t'); wmIconTray = WM_USER + Ord('t');
kFileExt = '.pq'; kFileExt = '.pq';
@@ -91,8 +99,11 @@ type
procedure OnEndSession(var Msg : TMessage); message WM_ENDSESSION; procedure OnEndSession(var Msg : TMessage); message WM_ENDSESSION;
procedure RestoreIt; procedure RestoreIt;
function AuthenticateUrl(url: String): String; function AuthenticateUrl(url: String): String;
{$IFDEF LOGGING}
procedure Log(line: String); procedure Log(line: String);
{$ENDIF}
procedure ExportCharSheet; procedure ExportCharSheet;
function CharSheet: String;
public public
FTrayIcon: TNotifyIconData; FTrayIcon: TNotifyIconData;
FReportSave: Boolean; FReportSave: Boolean;
@@ -144,7 +155,6 @@ uses Web, StrUtils, NewGuy, Math, Config, Front, zlibex, SelServ, Login,
mmsystem, Registry, ShlObj; mmsystem, Registry, ShlObj;
{$R *.dfm} {$R *.dfm}
{$DEFINE CHEATS}
// Returns '' if not there, which is lame, but okay for my purposes // Returns '' if not there, which is lame, but okay for my purposes
function RegRead(root: HKEY; path, name: String): String; function RegRead(root: HKEY; path, name: String): String;
@@ -207,8 +217,7 @@ begin
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP; uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage := wmIconTray; uCallbackMessage := wmIconTray;
hIcon := Application.Icon.Handle; hIcon := Application.Icon.Handle;
StrPCopy(szTip, Caption); StrPLCopy(szTip, Caption, 63);
//a.szTip := 'Progress Quest';
end; end;
Application.Minimize; Application.Minimize;
ShowWindow(Application.Handle, SW_HIDE); ShowWindow(Application.Handle, SW_HIDE);
@@ -230,11 +239,13 @@ begin
end; end;
procedure TMainForm.OnTrayMessage(var Msg: TMessage); procedure TMainForm.OnTrayMessage(var Msg: TMessage);
//var p : TPoint;
begin begin
case Msg.lParam of case Msg.lParam of
WM_LBUTTONDOWN, WM_RBUTTONDOWN: WM_LBUTTONDOWN, WM_RBUTTONDOWN:
RestoreIt; RestoreIt;
WM_LBUTTONDBLCLK, WM_RBUTTONDBLCLK:
RestoreIt;
end; end;
end; end;
@@ -245,8 +256,8 @@ begin
//Shell_NotifyIcon(NIM_ADD, @MainForm.FTrayIcon); //Shell_NotifyIcon(NIM_ADD, @MainForm.FTrayIcon);
end; end;
MainForm.Timer1.Enabled := True; MainForm.Timer1.Enabled := True;
// BS location for this but // BS location for this, but...
MainForm.Caption := 'ProgressQuest - ' + ChangeFileExt(MainForm.GameSaveName, ''); MainForm.Caption := 'ProgressQuest - ' + ChangeFileExt(ExtractFileName(MainForm.GameSaveName), '');
end; end;
function TMainForm.GetPasskey: Integer; begin Result := Traits.Tag; end; function TMainForm.GetPasskey: Integer; begin Result := Traits.Tag; end;
@@ -379,7 +390,7 @@ function Young(m: Integer; s: String): String;
begin begin
Result := IntToStr(m) + s; // in case I screw up Result := IntToStr(m) + s; // in case I screw up
case -m of case -m of
-5,5: Result := 'fetal ' + s; -5,5: Result := 'foetal ' + s;
-4,4: Result := 'baby ' + s; -4,4: Result := 'baby ' + s;
-3,3: Result := 'preadolescent ' + s; -3,3: Result := 'preadolescent ' + s;
-2,2: Result := 'teenage ' + s; -2,2: Result := 'teenage ' + s;
@@ -767,7 +778,9 @@ begin
end; end;
with Quests do begin with Quests do begin
if Items.Count > 0 then begin if Items.Count > 0 then begin
{$IFDEF LOGGING}
Log('Quest completed: ' + Items[Items.Count-1].Caption); Log('Quest completed: ' + Items[Items.Count-1].Caption);
{$ENDIF}
Items[Items.Count-1].StateIndex := 1; Items[Items.Count-1].StateIndex := 1;
case Random(4) of case Random(4) of
0: WinSpell; 0: WinSpell;
@@ -824,7 +837,9 @@ begin
fQuest.Caption := ''; fQuest.Caption := '';
end; end;
end; end;
{$IFDEF LOGGING}
Log('Commencing quest: ' + Caption); Log('Commencing quest: ' + Caption);
{$ENDIF}
StateIndex := 0; StateIndex := 0;
MakeVisible(false); MakeVisible(false);
end; end;
@@ -904,11 +919,12 @@ begin
Brag('a'); Brag('a');
end; end;
{$IFDEF LOGGING}
procedure TMainForm.Log(line: String); procedure TMainForm.Log(line: String);
var var
stamp: String; stamp: String;
logname: String; logname: String;
log: TextFile; log: Text;
begin begin
if FLogEvents then begin if FLogEvents then begin
logname := ChangeFileExt(GameSaveName, '.log'); logname := ChangeFileExt(GameSaveName, '.log');
@@ -920,63 +936,77 @@ begin
CloseFile(log); CloseFile(log);
end; end;
end; end;
{$ENDIF}
procedure TMainForm.ExportCharSheet; procedure TMainForm.ExportCharSheet;
var var
f: TextFile; f: TextFile;
i: Integer;
begin begin
AssignFile(f, ChangeFileExt(GameSaveName, '.sheet')); AssignFile(f, ChangeFileExt(GameSaveName, '.sheet'));
Rewrite(f); 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 if GetHostName <> '' then
Write(f,' [' + GetHostName + ']'); Wr(' [' + GetHostName + ']');
WriteLn(f); WrLn;
WriteLn(f,Get(Traits,'Race') + ' ' + Get(Traits,'Class')); WrLn(Get(Traits,'Race') + ' ' + Get(Traits,'Class'));
WriteLn(f,Format('Level %d (exp. %d/%d)', [GetI(Traits,'Level'), ExpBar.Position, ExpBar.Max])); WrLn(Format('Level %d (exp. %d/%d)', [GetI(Traits,'Level'), ExpBar.Position, ExpBar.Max]));
//WriteLn(f,'Level ' + Get(Traits,'Level') + ' (' + ExpBar.Hint + ')'); //WrLn('Level ' + Get(Traits,'Level') + ' (' + ExpBar.Hint + ')');
WriteLn(f); WrLn;
with Plots do if Items.Count > 0 then 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 with Quests do if Items.Count > 0 then
WriteLn(f,'Quest: ' + Items[Items.Count-1].Caption + ' (' + QuestBar.Hint + ')'); WrLn('Quest: ' + Items[Items.Count-1].Caption + ' (' + QuestBar.Hint + ')');
WriteLn(f); WrLn;
WriteLn(f, 'Stats:'); WrLn( 'Stats:');
WriteLn(f, Format(' STR%7d', [GetI(Stats,'STR')])); WrLn( Format(' STR%7d', [GetI(Stats,'STR')]));
WriteLn(f, Format(' CON%7d', [GetI(Stats,'CON')])); WrLn( Format(' CON%7d', [GetI(Stats,'CON')]));
WriteLn(f, Format(' DEX%7d', [GetI(Stats,'DEX')])); WrLn( Format(' DEX%7d', [GetI(Stats,'DEX')]));
WriteLn(f, Format(' INT%7d', [GetI(Stats,'INT')])); WrLn( Format(' INT%7d', [GetI(Stats,'INT')]));
WriteLn(f, Format(' WIS%7d HP Max%7d', [GetI(Stats,'WIS'), GetI(Stats,'HP Max')])); WrLn( 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')])); WrLn( Format(' CHA%7d MP Max%7d', [GetI(Stats,'CHA'), GetI(Stats,'MP Max')]));
WriteLn(f); WrLn;
WriteLn(f, 'Equipment:'); WrLn( 'Equipment:');
for i := 1 to Equips.Items.Count-1 do for i := 1 to Equips.Items.Count-1 do
if Get(Equips,i) <> '' then if Get(Equips,i) <> '' then
WriteLn(f, ' ' + LeftStr(Equips.Items[i].Caption + ' ', 12) + Get(Equips,i)); WrLn( ' ' + LeftStr(Equips.Items[i].Caption + ' ', 12) + Get(Equips,i));
WriteLn(f); WrLn;
WriteLn(f, 'Spell Book:'); WrLn( 'Spell Book:');
with Spells do with Spells do
for i := 1 to Items.Count-1 do for i := 1 to Items.Count-1 do
WriteLn(f, ' ' + Items[i].Caption + ' ' + Get(Spells,i)); WrLn( ' ' + Items[i].Caption + ' ' + Get(Spells,i));
WriteLn(f); WrLn;
WriteLn(f, 'Inventory (' + EncumBar.Hint + '):'); WrLn( 'Inventory (' + EncumBar.Hint + '):');
WriteLn(f, ' ' + Indefinite('gold piece', GetI(Inventory, 'Gold'))); WrLn( ' ' + Indefinite('gold piece', GetI(Inventory, 'Gold')));
with Inventory do with Inventory do
for i := 2 to Items.Count-1 do for i := 2 to Items.Count-1 do
if Pos(' of ', Items[i].Caption) > 0 if Pos(' of ', Items[i].Caption) > 0
then WriteLn(f, ' ' + Definite(Items[i].Caption, GetI(Inventory,i))) then WrLn( ' ' + Definite(Items[i].Caption, GetI(Inventory,i)))
else WriteLn(f, ' ' + Indefinite(Items[i].Caption, GetI(Inventory,i))); else WrLn( ' ' + Indefinite(Items[i].Caption, GetI(Inventory,i)));
WriteLn(f); WrLn;
WriteLn(f, '-- ' + DateTimeToStr(Now)); WrLn( '-- ' + DateTimeToStr(Now));
WriteLn(f, '-- Progress Quest 6.2 - http://progressquest.com/'); WrLn( '-- Progress Quest 6.2 - http://progressquest.com/');
Flush(f); Result := f;
CloseFile(f);
end; end;
procedure TMainForm.Task(caption: String; msec: Integer); procedure TMainForm.Task(caption: String; msec: Integer);
begin begin
Kill.SimpleText := caption + '...'; Kill.SimpleText := caption + '...';
{$IFDEF LOGGING}
Log(Kill.SimpleText); Log(Kill.SimpleText);
{$ENDIF}
with TaskBar do begin with TaskBar do begin
Position := 0; Position := 0;
Max := msec; Max := msec;
@@ -996,7 +1026,9 @@ begin
end; end;
if value < 0 then value := -value; if value < 0 then value := -value;
line := line + ' ' + Indefinite(key, value); line := line + ' ' + Indefinite(key, value);
{$IFDEF LOGGING}
Log(line); Log(line);
{$ENDIF}
end; end;
procedure TMainForm.AddR(list: TListView; key: String; value: Integer); procedure TMainForm.AddR(list: TListView; key: String; value: Integer);
@@ -1137,7 +1169,7 @@ begin
FReportSave := true; FReportSave := true;
FLogEvents := false; FLogEvents := false;
FMakeBackups := false; FMakeBackups := true;
FMinToTray := true; FMinToTray := true;
FExportSheets := false; FExportSheets := false;
@@ -1197,6 +1229,21 @@ begin
end; end;
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); procedure TMainForm.FormShow(Sender: TObject);
var var
@@ -1207,10 +1254,12 @@ begin
done := false; done := false;
exportandexit := false; exportandexit := false;
for i := 1 to ParamCount do begin for i := 1 to ParamCount do begin
if ParamStr(i) = '-log' if ParamStr(i) = '-backup'
then FLogEvents := true
else if ParamStr(i) = '-backup'
then FMakeBackups := true then FMakeBackups := true
{$IFDEF LOGGING}
else if ParamStr(i) = '-log'
then FLogEvents := true
{$ENDIF}
else if ParamStr(i) = '-no-report-save' else if ParamStr(i) = '-no-report-save'
then FReportSave := false then FReportSave := false
else if ParamStr(i) = '-no-tray' else if ParamStr(i) = '-no-tray'
@@ -1219,7 +1268,14 @@ begin
then FExportSheets := true then FExportSheets := true
else if ParamStr(i) = '-export-only' else if ParamStr(i) = '-export-only'
then exportandexit := true 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)); LoadGame(ParamStr(i));
if exportandexit then begin if exportandexit then begin
ExportCharSheet; ExportCharSheet;
@@ -1296,7 +1352,9 @@ var
m: TMemoryStream; m: TMemoryStream;
i: Integer; i: Integer;
begin begin
{$IFDEF LOGGING}
Log('Saving game: ' + GameSaveName); Log('Saving game: ' + GameSaveName);
{$ENDIF}
Result := true; Result := true;
try try
if FMakeBackups then begin if FMakeBackups then begin
@@ -1353,7 +1411,9 @@ begin
for i := 0 to ComponentCount-1 do for i := 0 to ComponentCount-1 do
m.ReadComponent(Components[i]); m.ReadComponent(Components[i]);
m.Free; m.Free;
{$IFDEF LOGGING}
Log('Loaded game: ' + name); Log('Loaded game: ' + name);
{$ENDIF}
StartTimer; StartTimer;
TriggerAutosizes; TriggerAutosizes;
end; end;
@@ -1402,6 +1462,9 @@ begin
Cheats.Visible := not Cheats.Visible; Cheats.Visible := not Cheats.Visible;
{$ENDIF} {$ENDIF}
end; 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 GetPasskey = 0 then Exit; // no need for these things
if (ssCtrl in Shift) and (Key = ord('B')) then begin if (ssCtrl in Shift) and (Key = ord('B')) then begin
Brag('b'); Brag('b');
@@ -1420,8 +1483,7 @@ end;
procedure Navigate(url: String); procedure Navigate(url: String);
begin begin
ShellExecute(GetDesktopWindow(), 'open', PChar(url), ShellExecute(GetDesktopWindow(), 'open', PChar(url), nil, '', SW_SHOW);
nil, '', SW_SHOW);
end; end;
function LFSR(pt: String; salt: Integer): Integer; 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} C07FFC07E03FF80FF01FF01FF80FE03FFC07E07FFE07E0FFFF07E1FFFF87}
OldCreateOrder = False OldCreateOrder = False
Position = poScreenCenter Position = poScreenCenter
OnActivate = FormActivate
OnShow = FormShow OnShow = FormShow
PixelsPerInch = 96 PixelsPerInch = 96
TextHeight = 13 TextHeight = 13
@@ -298,7 +299,7 @@ object NewGuyForm: TNewGuyForm
object Name: TLabeledEdit object Name: TLabeledEdit
Left = 8 Left = 8
Top = 20 Top = 20
Width = 185 Width = 165
Height = 21 Height = 21
EditLabel.Width = 28 EditLabel.Width = 28
EditLabel.Height = 13 EditLabel.Height = 13
@@ -307,7 +308,6 @@ object NewGuyForm: TNewGuyForm
LabelSpacing = 3 LabelSpacing = 3
MaxLength = 30 MaxLength = 30
TabOrder = 4 TabOrder = 4
Text = 'Grumdrig'
end end
object OldRolls: TListBox object OldRolls: TListBox
Left = 396 Left = 396
@@ -354,6 +354,15 @@ object NewGuyForm: TNewGuyForm
TabOrder = 8 TabOrder = 8
Visible = False Visible = False
end end
object Gen: TButton
Left = 176
Top = 20
Width = 17
Height = 22
Caption = '?'
TabOrder = 9
OnClick = GenClick
end
object PoorCodeDesign: TNMURL object PoorCodeDesign: TNMURL
Left = 336 Left = 336
Top = 268 Top = 268
+42 -2
View File
@@ -36,11 +36,14 @@ type
Account: TLabeledEdit; Account: TLabeledEdit;
Password: TLabeledEdit; Password: TLabeledEdit;
ApplicationEvents1: TApplicationEvents; ApplicationEvents1: TApplicationEvents;
Gen: TButton;
procedure RerollClick(Sender: TObject); procedure RerollClick(Sender: TObject);
procedure UnrollClick(Sender: TObject); procedure UnrollClick(Sender: TObject);
procedure SoldClick(Sender: TObject); procedure SoldClick(Sender: TObject);
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure ApplicationEvents1Minimize(Sender: TObject); procedure ApplicationEvents1Minimize(Sender: TObject);
procedure GenClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private private
procedure RollEm; procedure RollEm;
function GetAccount: String; function GetAccount: String;
@@ -130,7 +133,6 @@ begin
ItemIndex := Random(Items.Count); ItemIndex := Random(Items.Count);
with Klass do with Klass do
ItemIndex := Random(Items.Count); ItemIndex := Random(Items.Count);
Name.SetFocus;
end; end;
end; end;
@@ -178,6 +180,7 @@ begin
if (MainForm.Label8.Tag and 16) = 0 if (MainForm.Label8.Tag and 16) = 0
then url := MainForm.GetHostAddr then url := MainForm.GetHostAddr
else url := 'http://www.progressquest.com/create.php?'; else url := 'http://www.progressquest.com/create.php?';
// 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, GetAccount+':'+GetPassword+'@');
args := 'cmd=create' + args := 'cmd=create' +
@@ -204,10 +207,47 @@ begin
Server.SendHeader.Values['Guild'] := MainForm.GetGuild; Server.SendHeader.Values['Guild'] := MainForm.GetGuild;
end; end;
} }
procedure TNewGuyForm.ApplicationEvents1Minimize(Sender: TObject); procedure TNewGuyForm.ApplicationEvents1Minimize(Sender: TObject);
begin begin
MainForm.MinimizeIt; MainForm.MinimizeIt;
end; 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. 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 This directory represents an ex post facto rendering of pq6 in its
various versions in svn, so that changes will be trackable thataway. 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 version as of this moment in svn is 6.2 (but I had two copies
the final 6.2. That will come in the next checkin. 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 (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.) 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 type
EWebError = class(Exception); 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 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 var
NetHandle: HINTERNET; NetHandle: HINTERNET;
UrlHandle: HINTERNET; UrlHandle: HINTERNET;
Buffer: array[0..1024] of Char; Buffer: array[0..1024] of Char;
BytesRead: dWord; BytesRead: dWord;
conntype: DWORD;
begin begin
Result := ''; 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 if Assigned(NetHandle) then
begin begin {
UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), if Len(username + password) > 0 then
nil, 0, // headers UrlHandle := OpenAuthUrl(NetHandle, username, password)
INTERNET_FLAG_RELOAD or else }
INTERNET_FLAG_PRAGMA_NOCACHE or UrlHandle := InternetOpenUrl(NetHandle, PChar(Url),
INTERNET_FLAG_NO_UI, nil, 0, // headers[size]
0); INTERNET_FLAG_KEEP_CONNECTION or
INTERNET_FLAG_RELOAD or
INTERNET_FLAG_PRAGMA_NOCACHE or
INTERNET_FLAG_NO_UI,
0);
if Assigned(UrlHandle) then begin if Assigned(UrlHandle) then begin
repeat repeat
InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer)-1, BytesRead); InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer)-1, BytesRead);
@@ -46,4 +81,7 @@ begin
end; end;
end; end;
initialization
ProxyOK := True;
end. 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= DebugSourceDirs=
UsePackages=0 UsePackages=0
[Parameters] [Parameters]
RunParams=-export "Cokie [oobag].pq" RunParams=
HostApplication= HostApplication=
Launcher= Launcher=
UseLauncher=0 UseLauncher=0
Binary file not shown.
+17 -24
View File
@@ -1,44 +1,37 @@
Cookie [Oobag] Cookie [Oobag]
Half Halfling Puma Burgular Half Halfling Puma Burgular
Level 2 (exp. 180/1279) Level 3 (exp. 44/1291)
Plot stage: Act I (5 hours remaining) Plot stage: Act I (5 hours remaining)
Quest: Deliver this trinket (38% complete) Quest: Exterminate the Unicorns (93% complete)
Stats: Stats:
STR 12 STR 12
CON 9 CON 9
DEX 6 DEX 6
INT 13 INT 14
WIS 12 HP Max 11 WIS 13 HP Max 19
CHA 11 MP Max 12 CHA 11 MP Max 19
Equipment: Equipment:
Shield +1 Pie Plate Shield +1 Pie Plate
Helm Lace Helm Macrame
Hauberk -2 Warped Dented Bearskin Hauberk -1 Canvas
Brassairts +1 Lace Brassairts Mildewed Rusty Pleathers
Vambraces Cracked Patched Pleathers
Gauntlets Lace Gauntlets Lace
Gambeson Lace Gambeson Lace
Greaves -1 Macrame Greaves -1 Macrame
Sollerets -1 Burlap
Spell Book: Spell Book:
Hastiness II Hastiness III
Slime Finger I Slime Finger III
Sadness I
Rabbit Punch I
Inventory (17/22 cubits): Inventory (1/22 cubits):
15 gold pieces 6 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
-- 4/12/2003 1:21:40 PM -- 9/5/2003 12:22:01 AM
-- Progress Quest 6.2 - http://progressquest.com/ -- Progress Quest 6.2 - http://progressquest.com/
Binary file not shown.
Binary file not shown.
Binary file not shown.