mirror of
https://bitbucket.org/grumdrig/pq.git
synced 2026-09-29 00:33:59 -06:00
Part II: This is an ex post facto rendering of pq6 in its various versions in
svn, so that changes will be trackable thataway This is version 6.1 as found in the old sources. Used whathappened.py to update it.
This commit is contained in:
BIN
Binary file not shown.
+61
-8
@@ -134,11 +134,14 @@ object K: TK
|
|||||||
'Clever Fellow'
|
'Clever Fellow'
|
||||||
'Lockjaw'
|
'Lockjaw'
|
||||||
'Hydrophobia'
|
'Hydrophobia'
|
||||||
|
'Big Sister'
|
||||||
|
'Cone of Paste'
|
||||||
'Mulligan'
|
'Mulligan'
|
||||||
'Nestor'#39's Bright Idea'
|
'Nestor'#39's Bright Idea'
|
||||||
'Holy Batpole'
|
'Holy Batpole'
|
||||||
'Tumor (Benign)'
|
'Tumor (Benign)'
|
||||||
'Braingate'
|
'Braingate'
|
||||||
|
'Nonplus'
|
||||||
'Animate Nightstand'
|
'Animate Nightstand'
|
||||||
'Eye of the Troglodyte'
|
'Eye of the Troglodyte'
|
||||||
'Curse Name'
|
'Curse Name'
|
||||||
@@ -174,6 +177,7 @@ object K: TK
|
|||||||
'Steely|+2'
|
'Steely|+2'
|
||||||
'Vicious|+3'
|
'Vicious|+3'
|
||||||
'Venomed|+4'
|
'Venomed|+4'
|
||||||
|
'Stabbity|+4'
|
||||||
'Dancing|+5'
|
'Dancing|+5'
|
||||||
'Invisible|+6'
|
'Invisible|+6'
|
||||||
'Vorpal|+7')
|
'Vorpal|+7')
|
||||||
@@ -209,12 +213,16 @@ object K: TK
|
|||||||
'Garbage Can Lid|2'
|
'Garbage Can Lid|2'
|
||||||
'Buckler|3'
|
'Buckler|3'
|
||||||
'Plexiglass|4'
|
'Plexiglass|4'
|
||||||
|
'Fender|4'
|
||||||
'Round Shield|5'
|
'Round Shield|5'
|
||||||
|
'Carapace|5'
|
||||||
'Scutum|6'
|
'Scutum|6'
|
||||||
|
'Propugner|6'
|
||||||
'Kite Shield|7'
|
'Kite Shield|7'
|
||||||
'Pavise|8'
|
'Pavise|8'
|
||||||
'Tower Shield|9'
|
'Tower Shield|9'
|
||||||
'Baroque Shield|11'
|
'Baroque Shield|11'
|
||||||
|
'Aegis|12'
|
||||||
'Magnetic Field|18')
|
'Magnetic Field|18')
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
WordWrap = False
|
WordWrap = False
|
||||||
@@ -233,6 +241,7 @@ object K: TK
|
|||||||
'Chamois|6'
|
'Chamois|6'
|
||||||
'Pleathers|7'
|
'Pleathers|7'
|
||||||
'Leathers|8'
|
'Leathers|8'
|
||||||
|
'Bearskin|9'
|
||||||
'Ringmail|10'
|
'Ringmail|10'
|
||||||
'Scale Mail|12'
|
'Scale Mail|12'
|
||||||
'Chainmail|14'
|
'Chainmail|14'
|
||||||
@@ -256,23 +265,39 @@ object K: TK
|
|||||||
'Stick|0'
|
'Stick|0'
|
||||||
'Broken Bottle|1'
|
'Broken Bottle|1'
|
||||||
'Shiv|1'
|
'Shiv|1'
|
||||||
|
'Sprig|1'
|
||||||
|
'Oxgoad|1'
|
||||||
|
'Eelspear|2'
|
||||||
'Bowie Knife|2'
|
'Bowie Knife|2'
|
||||||
'Claw Hammer|2'
|
'Claw Hammer|2'
|
||||||
|
'Handpeen|2'
|
||||||
'Andiron|3'
|
'Andiron|3'
|
||||||
'Hatchet|3'
|
'Hatchet|3'
|
||||||
|
'Tomahawk|3'
|
||||||
|
'Hackbarm|3'
|
||||||
'Crowbar|4'
|
'Crowbar|4'
|
||||||
'Mace|4'
|
'Mace|4'
|
||||||
|
'Battleadze|4'
|
||||||
|
'Leafmace|5'
|
||||||
'Shortsword|5'
|
'Shortsword|5'
|
||||||
'Longiron|5'
|
'Longiron|5'
|
||||||
'Zip Gun|6'
|
'Poachard|5'
|
||||||
|
'Baselard|5'
|
||||||
|
'Whinyard|6'
|
||||||
|
'Blunderbuss|6'
|
||||||
'Longsword|6'
|
'Longsword|6'
|
||||||
|
'Crankbow|6'
|
||||||
|
'Blibo|7'
|
||||||
'Broadsword|7'
|
'Broadsword|7'
|
||||||
'Morning Star|8'
|
'Morning Star|8'
|
||||||
|
'Pole-adze|8'
|
||||||
|
'Spontoon|8'
|
||||||
'Bastard Sword|9'
|
'Bastard Sword|9'
|
||||||
|
'Peen-arm|9'
|
||||||
|
'Culverin|10'
|
||||||
'Lance|10'
|
'Lance|10'
|
||||||
'Halberd|11'
|
'Halberd|11'
|
||||||
'Poleax|12'
|
'Poleax|12'
|
||||||
'Bandyclef|15'
|
|
||||||
'Bandyclef|15')
|
'Bandyclef|15')
|
||||||
TabOrder = 5
|
TabOrder = 5
|
||||||
WordWrap = False
|
WordWrap = False
|
||||||
@@ -311,7 +336,13 @@ object K: TK
|
|||||||
'Ankh'
|
'Ankh'
|
||||||
'Talisman'
|
'Talisman'
|
||||||
'Orb'
|
'Orb'
|
||||||
'Gammel')
|
'Gammel'
|
||||||
|
'Ornament'
|
||||||
|
'Brocade'
|
||||||
|
'Galoon'
|
||||||
|
'Bijou'
|
||||||
|
'Spangle'
|
||||||
|
'Gimcrack')
|
||||||
TabOrder = 6
|
TabOrder = 6
|
||||||
WordWrap = False
|
WordWrap = False
|
||||||
end
|
end
|
||||||
@@ -345,7 +376,15 @@ object K: TK
|
|||||||
'Austere'
|
'Austere'
|
||||||
'Ostentatious'
|
'Ostentatious'
|
||||||
'One True'
|
'One True'
|
||||||
'Proverbial')
|
'Proverbial'
|
||||||
|
'Fearsome '
|
||||||
|
'Deadly'
|
||||||
|
'Benevolent'
|
||||||
|
'Unearthly'
|
||||||
|
'Magnificent'
|
||||||
|
'Iron'
|
||||||
|
'Ormolu'
|
||||||
|
'Puissant')
|
||||||
TabOrder = 7
|
TabOrder = 7
|
||||||
WordWrap = False
|
WordWrap = False
|
||||||
end
|
end
|
||||||
@@ -404,7 +443,8 @@ object K: TK
|
|||||||
'Ra'
|
'Ra'
|
||||||
'the Bone'
|
'the Bone'
|
||||||
'Diamonique'
|
'Diamonique'
|
||||||
'Electrum')
|
'Electrum'
|
||||||
|
'Hydragyrum')
|
||||||
TabOrder = 8
|
TabOrder = 8
|
||||||
WordWrap = False
|
WordWrap = False
|
||||||
end
|
end
|
||||||
@@ -446,11 +486,14 @@ object K: TK
|
|||||||
'hoe'
|
'hoe'
|
||||||
'bandage'
|
'bandage'
|
||||||
'trowel'
|
'trowel'
|
||||||
|
'towel'
|
||||||
'planter box'
|
'planter box'
|
||||||
'anvil'
|
'anvil'
|
||||||
'axle'
|
'axle'
|
||||||
'tuppence'
|
'tuppence'
|
||||||
'casket')
|
'casket'
|
||||||
|
'nosegay'
|
||||||
|
'trinket')
|
||||||
TabOrder = 9
|
TabOrder = 9
|
||||||
WordWrap = False
|
WordWrap = False
|
||||||
end
|
end
|
||||||
@@ -566,11 +609,14 @@ object K: TK
|
|||||||
'Hill Giant|8|corpse'
|
'Hill Giant|8|corpse'
|
||||||
'Stone Giant|9|hatchling'
|
'Stone Giant|9|hatchling'
|
||||||
'Storm Giant|15|barometer'
|
'Storm Giant|15|barometer'
|
||||||
|
'Mini Giant|4|pompadour'
|
||||||
'Gnoll|2|collar'
|
'Gnoll|2|collar'
|
||||||
'Gnome|1|hat'
|
'Gnome|1|hat'
|
||||||
'Goblin|1|ear'
|
'Goblin|1|ear'
|
||||||
|
'Grid Bug|1|carapace'
|
||||||
'Jellyrock|9|seedling'
|
'Jellyrock|9|seedling'
|
||||||
'Beer Golem|15|foam'
|
'Beer Golem|15|foam'
|
||||||
|
'Oxygen Golem|17|platelet'
|
||||||
'Cardboard Golem|14|recycling'
|
'Cardboard Golem|14|recycling'
|
||||||
'Rubber Golem|16|ball'
|
'Rubber Golem|16|ball'
|
||||||
'Leather Golem|15|fob'
|
'Leather Golem|15|fob'
|
||||||
@@ -585,9 +631,11 @@ object K: TK
|
|||||||
'Hippogriff|3|egg'
|
'Hippogriff|3|egg'
|
||||||
'Hobgoblin|1|patella'
|
'Hobgoblin|1|patella'
|
||||||
'Homonculus|2|fluid'
|
'Homonculus|2|fluid'
|
||||||
'Hydra|8|liver'
|
'Hydra|8|gyrum'
|
||||||
'Imp|2|tail'
|
'Imp|2|tail'
|
||||||
'Invisible Stalker|8|*'
|
'Invisible Stalker|8|*'
|
||||||
|
'Iron Peasant|3|chaff'
|
||||||
|
'Jumpskin|3|shin'
|
||||||
'Kobold|1|penis'
|
'Kobold|1|penis'
|
||||||
'Leprechaun|1|wallet'
|
'Leprechaun|1|wallet'
|
||||||
'Leucrotta|6|hoof'
|
'Leucrotta|6|hoof'
|
||||||
@@ -597,6 +645,7 @@ object K: TK
|
|||||||
'Manticore|6|spike'
|
'Manticore|6|spike'
|
||||||
'Mastodon|12|tusk'
|
'Mastodon|12|tusk'
|
||||||
'Medusa|6|eye'
|
'Medusa|6|eye'
|
||||||
|
'Multicell|2|dendrite'
|
||||||
'Pirate|1|booty'
|
'Pirate|1|booty'
|
||||||
'Berserker|1|shirt'
|
'Berserker|1|shirt'
|
||||||
'Caveman|2|club'
|
'Caveman|2|club'
|
||||||
@@ -610,6 +659,7 @@ object K: TK
|
|||||||
'Morkoth|7|teeth'
|
'Morkoth|7|teeth'
|
||||||
'Mummy|6|gauze'
|
'Mummy|6|gauze'
|
||||||
'Naga|9|rattle'
|
'Naga|9|rattle'
|
||||||
|
'Nebbish|1|belly'
|
||||||
'Neo-Otyugh|11|organ '
|
'Neo-Otyugh|11|organ '
|
||||||
'Nixie|1|webbing'
|
'Nixie|1|webbing'
|
||||||
'Nymph|3|hanky'
|
'Nymph|3|hanky'
|
||||||
@@ -636,6 +686,7 @@ object K: TK
|
|||||||
'Rust Monster|5|shavings'
|
'Rust Monster|5|shavings'
|
||||||
'Satyr|5|hoof'
|
'Satyr|5|hoof'
|
||||||
'Sea Hag|3|wart'
|
'Sea Hag|3|wart'
|
||||||
|
'Silkie|3|fur'
|
||||||
'Shadow|3|silhouette'
|
'Shadow|3|silhouette'
|
||||||
'Shambling Mound|10|mulch'
|
'Shambling Mound|10|mulch'
|
||||||
'Shedu|9|hoof'
|
'Shedu|9|hoof'
|
||||||
@@ -646,6 +697,8 @@ object K: TK
|
|||||||
'Spider|0|web'
|
'Spider|0|web'
|
||||||
'Sprite|1|can'
|
'Sprite|1|can'
|
||||||
'Stirge|1|proboscis'
|
'Stirge|1|proboscis'
|
||||||
|
'Stun Bear|5|tooth'
|
||||||
|
'Stun Worm|2|trode'
|
||||||
'Su-monster|5|tail'
|
'Su-monster|5|tail'
|
||||||
'Sylph|3|thigh'
|
'Sylph|3|thigh'
|
||||||
'Titan|20|sandal'
|
'Titan|20|sandal'
|
||||||
@@ -660,7 +713,7 @@ object K: TK
|
|||||||
'Wight|4|lung'
|
'Wight|4|lung'
|
||||||
'Will-o-the-Wisp|9|wisp'
|
'Will-o-the-Wisp|9|wisp'
|
||||||
'Wraith|5|finger'
|
'Wraith|5|finger'
|
||||||
'Wyvern|7|poison'
|
'Wyvern|7|wing'
|
||||||
'Xorn|7|jaw'
|
'Xorn|7|jaw'
|
||||||
'Yeti|4|fur'
|
'Yeti|4|fur'
|
||||||
'Zombie|2|forehead'
|
'Zombie|2|forehead'
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
unit Config;
|
unit Config;
|
||||||
|
{ copyright (c)2002 Eric Fredricksen all rights reserved }
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
unit Front;
|
unit Front;
|
||||||
|
{ copyright (c)2002 Eric Fredricksen all rights reserved }
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
@@ -7,17 +8,19 @@ uses
|
|||||||
Dialogs, StdCtrls, ExtCtrls;
|
Dialogs, StdCtrls, ExtCtrls;
|
||||||
|
|
||||||
type
|
type
|
||||||
TForm3 = class(TForm)
|
TFrontForm = class(TForm)
|
||||||
Panel1: TPanel;
|
Panel1: TPanel;
|
||||||
Logo: TImage;
|
|
||||||
Button1: TButton;
|
Button1: TButton;
|
||||||
Button2: TButton;
|
Button2: TButton;
|
||||||
Label1: TLabel;
|
|
||||||
OpenDialog1: TOpenDialog;
|
OpenDialog1: TOpenDialog;
|
||||||
Button4: TButton;
|
Button4: TButton;
|
||||||
Label2: TLabel;
|
Label2: TLabel;
|
||||||
|
Button3: TButton;
|
||||||
|
Panel2: TPanel;
|
||||||
|
Logo: TImage;
|
||||||
Label3: TLabel;
|
Label3: TLabel;
|
||||||
HomeLink: TLabel;
|
HomeLink: TLabel;
|
||||||
|
Label1: TLabel;
|
||||||
procedure HomeLinkClick(Sender: TObject);
|
procedure HomeLinkClick(Sender: TObject);
|
||||||
procedure LogoClick(Sender: TObject);
|
procedure LogoClick(Sender: TObject);
|
||||||
private
|
private
|
||||||
@@ -27,7 +30,7 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
Form3: TForm3;
|
FrontForm: TFrontForm;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
@@ -35,14 +38,14 @@ uses ShellAPI, Main, Info;
|
|||||||
|
|
||||||
{$R *.dfm}
|
{$R *.dfm}
|
||||||
|
|
||||||
procedure TForm3.HomeLinkClick(Sender: TObject);
|
procedure TFrontForm.HomeLinkClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/pq.html', 0, '', SW_SHOW);
|
ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/', nil, '', SW_SHOW);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm3.LogoClick(Sender: TObject);
|
procedure TFrontForm.LogoClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/', 0, '', SW_SHOW);
|
ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/', nil, '', SW_SHOW);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|||||||
+448
@@ -0,0 +1,448 @@
|
|||||||
|
{*************************************************************}
|
||||||
|
{ HTTPGet component for Delphi 32 }
|
||||||
|
{ Version: 1.94 }
|
||||||
|
{ E-Mail: info@utilmind.com }
|
||||||
|
{ WWW: http://www.utilmind.com }
|
||||||
|
{ Created: October 19, 1999 }
|
||||||
|
{ Modified: June 6, 2000 }
|
||||||
|
{ Legal: Copyright (c) 1999-2000, UtilMind Solutions }
|
||||||
|
{*************************************************************}
|
||||||
|
{ PROPERTIES: }
|
||||||
|
{ Agent: String - User Agent }
|
||||||
|
{ }
|
||||||
|
{* BinaryData: Boolean - This setting specifies which type }
|
||||||
|
{* of data will taken from the web. }
|
||||||
|
{* If you set this property TRUE then }
|
||||||
|
{* component will determinee the size }
|
||||||
|
{* of files *before* getting them from }
|
||||||
|
{* the web. }
|
||||||
|
{* If this property is FALSE then as we}
|
||||||
|
{* do not knows the file size the }
|
||||||
|
{* OnProgress event will doesn't work. }
|
||||||
|
{* Also please remember that is you set}
|
||||||
|
{* this property as TRUE you will not }
|
||||||
|
{* capable to get from the web ASCII }
|
||||||
|
{* data and ofter got OnError event. }
|
||||||
|
{ }
|
||||||
|
{ FileName: String - Path to local file to store the data }
|
||||||
|
{ taken from the web }
|
||||||
|
{ Password, UserName - set this properties if you trying to }
|
||||||
|
{ get data from password protected }
|
||||||
|
{ directories. }
|
||||||
|
{ Referer: String - Additional data about referer document }
|
||||||
|
{ URL: String - The url to file or document }
|
||||||
|
{ UseCache: Boolean - Get file from the Internet Explorer's }
|
||||||
|
{ cache if requested file is cached. }
|
||||||
|
{*************************************************************}
|
||||||
|
{ METHODS: }
|
||||||
|
{ GetFile - Get the file from the web specified in the URL }
|
||||||
|
{ property and store it to the file specified in }
|
||||||
|
{ the FileName property }
|
||||||
|
{ GetString - Get the data from web and return it as usual }
|
||||||
|
{ String. You can receive this string hooking }
|
||||||
|
{ the OnDoneString event. }
|
||||||
|
{ Abort - Stop the current session }
|
||||||
|
{*************************************************************}
|
||||||
|
{ EVENTS: }
|
||||||
|
{ OnDoneFile - Occurs when the file is downloaded }
|
||||||
|
{ OnDoneString - Occurs when the string is received }
|
||||||
|
{ OnError - Occurs when error happend }
|
||||||
|
{ OnProgress - Occurs at the receiving of the BINARY DATA }
|
||||||
|
{*************************************************************}
|
||||||
|
{ Please see demo program for more information. }
|
||||||
|
{*************************************************************}
|
||||||
|
{ IMPORTANT NOTE: }
|
||||||
|
{ This software is provided 'as-is', without any express or }
|
||||||
|
{ implied warranty. In no event will the author be held }
|
||||||
|
{ liable for any damages arising from the use of this }
|
||||||
|
{ software. }
|
||||||
|
{ Permission is granted to anyone to use this software for }
|
||||||
|
{ any purpose, including commercial applications, and to }
|
||||||
|
{ alter it and redistribute it freely, subject to the }
|
||||||
|
{ following restrictions: }
|
||||||
|
{ 1. The origin of this software must not be misrepresented, }
|
||||||
|
{ you must not claim that you wrote the original software. }
|
||||||
|
{ If you use this software in a product, an acknowledgment }
|
||||||
|
{ in the product documentation would be appreciated but is }
|
||||||
|
{ not required. }
|
||||||
|
{ 2. Altered source versions must be plainly marked as such, }
|
||||||
|
{ and must not be misrepresented as being the original }
|
||||||
|
{ software. }
|
||||||
|
{ 3. This notice may not be removed or altered from any }
|
||||||
|
{ source distribution. }
|
||||||
|
{*************************************************************}
|
||||||
|
|
||||||
|
unit HTTPGet;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Windows, Messages, SysUtils, Classes, WinInet;
|
||||||
|
|
||||||
|
type
|
||||||
|
TOnProgressEvent = procedure(Sender: TObject; TotalSize, Readed: Integer) of object;
|
||||||
|
TOnDoneFileEvent = procedure(Sender: TObject; FileName: String; FileSize: Integer) of object;
|
||||||
|
TOnDoneStringEvent = procedure(Sender: TObject; Result: String) of object;
|
||||||
|
|
||||||
|
THTTPGetThread = class(TThread)
|
||||||
|
private
|
||||||
|
FTAcceptTypes,
|
||||||
|
FTAgent,
|
||||||
|
FTURL,
|
||||||
|
FTFileName,
|
||||||
|
FTStringResult,
|
||||||
|
FTUserName,
|
||||||
|
FTPassword,
|
||||||
|
FTPostQuery,
|
||||||
|
FTReferer: String;
|
||||||
|
FTBinaryData,
|
||||||
|
FTUseCache: Boolean;
|
||||||
|
|
||||||
|
FTResult: Boolean;
|
||||||
|
FTFileSize: Integer;
|
||||||
|
FTToFile: Boolean;
|
||||||
|
|
||||||
|
BytesToRead, BytesReaded: DWord;
|
||||||
|
|
||||||
|
FTProgress: TOnProgressEvent;
|
||||||
|
|
||||||
|
procedure UpdateProgress;
|
||||||
|
protected
|
||||||
|
procedure Execute; override;
|
||||||
|
public
|
||||||
|
constructor Create(aAcceptTypes, aAgent, aURL, aFileName, aUserName, aPassword, aPostQuery, aReferer: String;
|
||||||
|
aBinaryData, aUseCache: Boolean; aProgress: TOnProgressEvent; aToFile: Boolean);
|
||||||
|
end;
|
||||||
|
|
||||||
|
THTTPGet = class(TComponent)
|
||||||
|
private
|
||||||
|
FAcceptTypes: String;
|
||||||
|
FAgent: String;
|
||||||
|
FBinaryData: Boolean;
|
||||||
|
FURL: String;
|
||||||
|
FUseCache: Boolean;
|
||||||
|
FFileName: String;
|
||||||
|
FUserName: String;
|
||||||
|
FPassword: String;
|
||||||
|
FPostQuery: String;
|
||||||
|
FReferer: String;
|
||||||
|
FWaitThread: Boolean;
|
||||||
|
|
||||||
|
FThread: THTTPGetThread;
|
||||||
|
FError: TNotifyEvent;
|
||||||
|
FResult: Boolean;
|
||||||
|
|
||||||
|
FProgress: TOnProgressEvent;
|
||||||
|
FDoneFile: TOnDoneFileEvent;
|
||||||
|
FDoneString: TOnDoneStringEvent;
|
||||||
|
|
||||||
|
procedure ThreadDone(Sender: TObject);
|
||||||
|
public
|
||||||
|
constructor Create(aOwner: TComponent); override;
|
||||||
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
procedure GetFile;
|
||||||
|
procedure GetString;
|
||||||
|
procedure Abort;
|
||||||
|
published
|
||||||
|
property AcceptTypes: String read FAcceptTypes write FAcceptTypes;
|
||||||
|
property Agent: String read FAgent write FAgent;
|
||||||
|
property BinaryData: Boolean read FBinaryData write FBinaryData;
|
||||||
|
property URL: String read FURL write FURL;
|
||||||
|
property UseCache: Boolean read FUseCache write FUseCache;
|
||||||
|
property FileName: String read FFileName write FFileName;
|
||||||
|
property UserName: String read FUserName write FUserName;
|
||||||
|
property Password: String read FPassword write FPassword;
|
||||||
|
property PostQuery: String read FPostQuery write FPostQuery;
|
||||||
|
property Referer: String read FReferer write FReferer;
|
||||||
|
property WaitThread: Boolean read FWaitThread write FWaitThread;
|
||||||
|
|
||||||
|
property OnProgress: TOnProgressEvent read FProgress write FProgress;
|
||||||
|
property OnDoneFile: TOnDoneFileEvent read FDoneFile write FDoneFile;
|
||||||
|
property OnDoneString: TOnDoneStringEvent read FDoneString write FDoneString;
|
||||||
|
property OnError: TNotifyEvent read FError write FError;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Register;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
// THTTPGetThread
|
||||||
|
|
||||||
|
constructor THTTPGetThread.Create(aAcceptTypes, aAgent, aURL, aFileName, aUserName, aPassword, aPostQuery, aReferer: String;
|
||||||
|
aBinaryData, aUseCache: Boolean; aProgress: TOnProgressEvent; aToFile: Boolean);
|
||||||
|
begin
|
||||||
|
FreeOnTerminate := True;
|
||||||
|
inherited Create(True);
|
||||||
|
|
||||||
|
FTAcceptTypes := aAcceptTypes;
|
||||||
|
FTAgent := aAgent;
|
||||||
|
FTURL := aURL;
|
||||||
|
FTFileName := aFileName;
|
||||||
|
FTUserName := aUserName;
|
||||||
|
FTPassword := aPassword;
|
||||||
|
FTPostQuery := aPostQuery;
|
||||||
|
FTReferer := aReferer;
|
||||||
|
FTProgress := aProgress;
|
||||||
|
FTBinaryData := aBinaryData;
|
||||||
|
FTUseCache := aUseCache;
|
||||||
|
|
||||||
|
FTToFile := aToFile;
|
||||||
|
Resume;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTTPGetThread.UpdateProgress;
|
||||||
|
begin
|
||||||
|
FTProgress(Self, FTFileSize, BytesReaded);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTTPGetThread.Execute;
|
||||||
|
var
|
||||||
|
hSession, hConnect, hRequest: hInternet;
|
||||||
|
HostName, FileName: String;
|
||||||
|
f: File;
|
||||||
|
Buf: Pointer;
|
||||||
|
dwBufLen, dwIndex: DWord;
|
||||||
|
Data: Array[0..$400] of Char;
|
||||||
|
TempStr: String;
|
||||||
|
RequestMethod: PChar;
|
||||||
|
InternetFlag: DWord;
|
||||||
|
AcceptType: LPStr;
|
||||||
|
|
||||||
|
procedure ParseURL(URL: String; var HostName, FileName: String);
|
||||||
|
|
||||||
|
procedure ReplaceChar(c1, c2: Char; var St: String);
|
||||||
|
var
|
||||||
|
p: Integer;
|
||||||
|
begin
|
||||||
|
while True do
|
||||||
|
begin
|
||||||
|
p := Pos(c1, St);
|
||||||
|
if p = 0 then Break
|
||||||
|
else St[p] := c2;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if Pos('http://', LowerCase(URL)) <> 0 then
|
||||||
|
System.Delete(URL, 1, 7);
|
||||||
|
|
||||||
|
i := Pos('/', URL);
|
||||||
|
HostName := Copy(URL, 1, i);
|
||||||
|
FileName := Copy(URL, i, Length(URL) - i + 1);
|
||||||
|
|
||||||
|
if (Length(HostName) > 0) and (HostName[Length(HostName)] = '/') then
|
||||||
|
SetLength(HostName, Length(HostName) - 1);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure CloseHandles;
|
||||||
|
begin
|
||||||
|
InternetCloseHandle(hRequest);
|
||||||
|
InternetCloseHandle(hConnect);
|
||||||
|
InternetCloseHandle(hSession);
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
ParseURL(FTURL, HostName, FileName);
|
||||||
|
|
||||||
|
if Terminated then
|
||||||
|
begin
|
||||||
|
FTResult := False;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if FTAgent <> '' then
|
||||||
|
hSession := InternetOpen(PChar(FTAgent),
|
||||||
|
INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0)
|
||||||
|
else
|
||||||
|
hSession := InternetOpen(nil,
|
||||||
|
INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
|
||||||
|
|
||||||
|
hConnect := InternetConnect(hSession, PChar(HostName),
|
||||||
|
INTERNET_DEFAULT_HTTP_PORT, PChar(FTUserName), PChar(FTPassword), INTERNET_SERVICE_HTTP, 0, 0);
|
||||||
|
|
||||||
|
if FTPostQuery = '' then RequestMethod := 'GET'
|
||||||
|
else RequestMethod := 'POST';
|
||||||
|
|
||||||
|
if FTUseCache then InternetFlag := 0
|
||||||
|
else InternetFlag := INTERNET_FLAG_RELOAD;
|
||||||
|
|
||||||
|
AcceptType := PChar('Accept: ' + FTAcceptTypes);
|
||||||
|
hRequest := HttpOpenRequest(hConnect, RequestMethod, PChar(FileName), 'HTTP/1.0',
|
||||||
|
PChar(FTReferer), @AcceptType, InternetFlag, 0);
|
||||||
|
|
||||||
|
if FTPostQuery = '' then
|
||||||
|
HttpSendRequest(hRequest, nil, 0, nil, 0)
|
||||||
|
else
|
||||||
|
HttpSendRequest(hRequest, 'Content-Type: application/x-www-form-urlencoded', 47,
|
||||||
|
PChar(FTPostQuery), Length(FTPostQuery));
|
||||||
|
|
||||||
|
if Terminated then
|
||||||
|
begin
|
||||||
|
CloseHandles;
|
||||||
|
FTResult := False;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
dwIndex := 0;
|
||||||
|
dwBufLen := 1024;
|
||||||
|
GetMem(Buf, dwBufLen);
|
||||||
|
|
||||||
|
FTResult := HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH,
|
||||||
|
Buf, dwBufLen, dwIndex);
|
||||||
|
|
||||||
|
if Terminated then
|
||||||
|
begin
|
||||||
|
FreeMem(Buf);
|
||||||
|
CloseHandles;
|
||||||
|
FTResult := False;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if FTResult or not FTBinaryData then
|
||||||
|
begin
|
||||||
|
if FTResult then
|
||||||
|
FTFileSize := StrToInt(StrPas(Buf));
|
||||||
|
|
||||||
|
BytesReaded := 0;
|
||||||
|
|
||||||
|
if FTToFile then
|
||||||
|
begin
|
||||||
|
AssignFile(f, FTFileName);
|
||||||
|
Rewrite(f, 1);
|
||||||
|
end
|
||||||
|
else FTStringResult := '';
|
||||||
|
|
||||||
|
while True do
|
||||||
|
begin
|
||||||
|
if Terminated then
|
||||||
|
begin
|
||||||
|
if FTToFile then CloseFile(f);
|
||||||
|
FreeMem(Buf);
|
||||||
|
CloseHandles;
|
||||||
|
|
||||||
|
FTResult := False;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if not InternetReadFile(hRequest, @Data, SizeOf(Data), BytesToRead) then Break
|
||||||
|
else
|
||||||
|
if BytesToRead = 0 then Break
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if FTToFile then
|
||||||
|
BlockWrite(f, Data, BytesToRead)
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
TempStr := Data;
|
||||||
|
SetLength(TempStr, BytesToRead);
|
||||||
|
FTStringResult := FTStringResult + TempStr;
|
||||||
|
end;
|
||||||
|
|
||||||
|
inc(BytesReaded, BytesToRead);
|
||||||
|
if Assigned(FTProgress) then
|
||||||
|
Synchronize(UpdateProgress);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if FTToFile then
|
||||||
|
FTResult := FTFileSize = Integer(BytesReaded)
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
SetLength(FTStringResult, BytesReaded);
|
||||||
|
FTResult := BytesReaded <> 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if FTToFile then CloseFile(f);
|
||||||
|
end;
|
||||||
|
|
||||||
|
FreeMem(Buf);
|
||||||
|
|
||||||
|
CloseHandles;
|
||||||
|
except
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// HTTPGet
|
||||||
|
|
||||||
|
constructor THTTPGet.Create(aOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(aOwner);
|
||||||
|
FAcceptTypes := '*/*';
|
||||||
|
FAgent := 'UtilMind HTTPGet';
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor THTTPGet.Destroy;
|
||||||
|
begin
|
||||||
|
Abort;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTTPGet.GetFile;
|
||||||
|
var
|
||||||
|
Msg: TMsg;
|
||||||
|
begin
|
||||||
|
if not Assigned(FThread) then
|
||||||
|
begin
|
||||||
|
FThread := THTTPGetThread.Create(FAcceptTypes, FAgent, FURL, FFileName, FUserName, FPassword, FPostQuery, FReferer,
|
||||||
|
FBinaryData, FUseCache, FProgress, True);
|
||||||
|
FThread.OnTerminate := ThreadDone;
|
||||||
|
if FWaitThread then
|
||||||
|
while Assigned(FThread) do
|
||||||
|
while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
|
||||||
|
begin
|
||||||
|
TranslateMessage(Msg);
|
||||||
|
DispatchMessage(Msg);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTTPGet.GetString;
|
||||||
|
var
|
||||||
|
Msg: TMsg;
|
||||||
|
begin
|
||||||
|
if not Assigned(FThread) then
|
||||||
|
begin
|
||||||
|
FThread := THTTPGetThread.Create(FAcceptTypes, FAgent, FURL, FFileName, FUserName, FPassword, FPostQuery, FReferer,
|
||||||
|
FBinaryData, FUseCache, FProgress, False);
|
||||||
|
FThread.OnTerminate := ThreadDone;
|
||||||
|
if FWaitThread then
|
||||||
|
while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
|
||||||
|
begin
|
||||||
|
TranslateMessage(Msg);
|
||||||
|
DispatchMessage(Msg);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTTPGet.Abort;
|
||||||
|
begin
|
||||||
|
if Assigned(FThread) then
|
||||||
|
begin
|
||||||
|
FThread.Terminate;
|
||||||
|
FThread.FTResult := False;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTTPGet.ThreadDone(Sender: TObject);
|
||||||
|
begin
|
||||||
|
FResult := FThread.FTResult;
|
||||||
|
if FResult then
|
||||||
|
if FThread.FTToFile then
|
||||||
|
if Assigned(FDoneFile) then FDoneFile(Self, FThread.FTFileName, FThread.FTFileSize) else
|
||||||
|
else
|
||||||
|
if Assigned(FDoneString) then FDoneString(Self, FThread.FTStringResult) else
|
||||||
|
else
|
||||||
|
if Assigned(FError) then FError(Self);
|
||||||
|
FThread := nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Register;
|
||||||
|
begin
|
||||||
|
RegisterComponents('UtilMind', [THTTPGet]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
BIN
Binary file not shown.
@@ -0,0 +1,166 @@
|
|||||||
|
object LoginForm: TLoginForm
|
||||||
|
Left = 314
|
||||||
|
Top = 162
|
||||||
|
Width = 265
|
||||||
|
Height = 448
|
||||||
|
Caption = 'Progress Quest Login'
|
||||||
|
Color = clBtnFace
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = []
|
||||||
|
OldCreateOrder = False
|
||||||
|
Position = poScreenCenter
|
||||||
|
PixelsPerInch = 96
|
||||||
|
TextHeight = 13
|
||||||
|
object GroupBox1: TGroupBox
|
||||||
|
Left = 12
|
||||||
|
Top = 176
|
||||||
|
Width = 237
|
||||||
|
Height = 69
|
||||||
|
Caption = 'New Users'
|
||||||
|
TabOrder = 0
|
||||||
|
object Label1: TLabel
|
||||||
|
Left = 2
|
||||||
|
Top = 15
|
||||||
|
Width = 233
|
||||||
|
Height = 18
|
||||||
|
Align = alTop
|
||||||
|
AutoSize = False
|
||||||
|
Caption = ' To sign up for a new account, visit'
|
||||||
|
Layout = tlBottom
|
||||||
|
end
|
||||||
|
object Label2: TLabel
|
||||||
|
Left = 2
|
||||||
|
Top = 33
|
||||||
|
Width = 233
|
||||||
|
Height = 25
|
||||||
|
Cursor = crHandPoint
|
||||||
|
Align = alTop
|
||||||
|
Alignment = taCenter
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'http://progressquest.com/user.php'
|
||||||
|
Color = clBtnFace
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clActiveCaption
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold, fsUnderline]
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
Layout = tlCenter
|
||||||
|
OnClick = Label2Click
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object Login: TButton
|
||||||
|
Left = 88
|
||||||
|
Top = 388
|
||||||
|
Width = 75
|
||||||
|
Height = 25
|
||||||
|
Caption = 'Login'
|
||||||
|
Default = True
|
||||||
|
Enabled = False
|
||||||
|
TabOrder = 1
|
||||||
|
OnClick = LoginClick
|
||||||
|
end
|
||||||
|
object Button1: TButton
|
||||||
|
Left = 172
|
||||||
|
Top = 388
|
||||||
|
Width = 75
|
||||||
|
Height = 25
|
||||||
|
Caption = 'Cancel'
|
||||||
|
ModalResult = 2
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
|
object GroupBox2: TGroupBox
|
||||||
|
Left = 12
|
||||||
|
Top = 256
|
||||||
|
Width = 237
|
||||||
|
Height = 121
|
||||||
|
Caption = 'Proxy Settings'
|
||||||
|
TabOrder = 3
|
||||||
|
object Label3: TLabel
|
||||||
|
Left = 12
|
||||||
|
Top = 20
|
||||||
|
Width = 213
|
||||||
|
Height = 45
|
||||||
|
AutoSize = False
|
||||||
|
Caption =
|
||||||
|
'Most people can leave this blank, but if you use a proxy to conn' +
|
||||||
|
'ect to the Web, or wish to use a proxy to cheat, enter it here.'
|
||||||
|
WordWrap = True
|
||||||
|
end
|
||||||
|
object LabeledEdit1: TLabeledEdit
|
||||||
|
Left = 12
|
||||||
|
Top = 84
|
||||||
|
Width = 149
|
||||||
|
Height = 21
|
||||||
|
EditLabel.Width = 31
|
||||||
|
EditLabel.Height = 13
|
||||||
|
EditLabel.Caption = 'Server'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object LabeledEdit2: TLabeledEdit
|
||||||
|
Left = 164
|
||||||
|
Top = 84
|
||||||
|
Width = 57
|
||||||
|
Height = 21
|
||||||
|
EditLabel.Width = 19
|
||||||
|
EditLabel.Height = 13
|
||||||
|
EditLabel.Caption = 'Port'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object GroupBox3: TGroupBox
|
||||||
|
Left = 12
|
||||||
|
Top = 12
|
||||||
|
Width = 237
|
||||||
|
Height = 157
|
||||||
|
Caption = 'Account Info'
|
||||||
|
TabOrder = 4
|
||||||
|
object Label4: TLabel
|
||||||
|
Left = 8
|
||||||
|
Top = 20
|
||||||
|
Width = 221
|
||||||
|
Height = 45
|
||||||
|
AutoSize = False
|
||||||
|
Caption =
|
||||||
|
'Some realms are open to the public riffraff, but others may requ' +
|
||||||
|
'ire a valid account. You can enter default account information h' +
|
||||||
|
'ere.'
|
||||||
|
WordWrap = True
|
||||||
|
end
|
||||||
|
object Account: TLabeledEdit
|
||||||
|
Left = 8
|
||||||
|
Top = 84
|
||||||
|
Width = 221
|
||||||
|
Height = 21
|
||||||
|
EditLabel.Width = 40
|
||||||
|
EditLabel.Height = 13
|
||||||
|
EditLabel.Caption = 'Account'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
TabOrder = 0
|
||||||
|
OnChange = AccountChange
|
||||||
|
end
|
||||||
|
object Password: TLabeledEdit
|
||||||
|
Left = 8
|
||||||
|
Top = 124
|
||||||
|
Width = 221
|
||||||
|
Height = 21
|
||||||
|
EditLabel.Width = 46
|
||||||
|
EditLabel.Height = 13
|
||||||
|
EditLabel.Caption = 'Password'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
PasswordChar = '*'
|
||||||
|
TabOrder = 1
|
||||||
|
OnChange = AccountChange
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
unit Login;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||||
|
Dialogs, StdCtrls, ExtCtrls, Psock, NMHttp;
|
||||||
|
|
||||||
|
type
|
||||||
|
TLoginForm = class(TForm)
|
||||||
|
GroupBox1: TGroupBox;
|
||||||
|
Label1: TLabel;
|
||||||
|
Label2: TLabel;
|
||||||
|
Login: TButton;
|
||||||
|
Button1: TButton;
|
||||||
|
GroupBox2: TGroupBox;
|
||||||
|
LabeledEdit1: TLabeledEdit;
|
||||||
|
LabeledEdit2: TLabeledEdit;
|
||||||
|
Label3: TLabel;
|
||||||
|
GroupBox3: TGroupBox;
|
||||||
|
Account: TLabeledEdit;
|
||||||
|
Password: TLabeledEdit;
|
||||||
|
Label4: TLabel;
|
||||||
|
procedure Label2Click(Sender: TObject);
|
||||||
|
procedure AccountChange(Sender: TObject);
|
||||||
|
procedure LoginClick(Sender: TObject);
|
||||||
|
private
|
||||||
|
{ Private declarations }
|
||||||
|
public
|
||||||
|
{ Public declarations }
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
LoginForm: TLoginForm;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses ShellAPI, Main, NewGuy, SelServ;
|
||||||
|
|
||||||
|
{$R *.dfm}
|
||||||
|
|
||||||
|
procedure TLoginForm.Label2Click(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ShellExecute(GetDesktopWindow(), 'open', PChar(TLabel(Sender).Caption), nil, '', SW_SHOW);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoginForm.AccountChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
Login.Enabled := (Account.Text <> '') and (Password.Text <> '');
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoginForm.LoginClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MainForm.SetLogin(Account.Text);
|
||||||
|
MainForm.SetPassword(Password.Text);
|
||||||
|
if ServerSelectForm.Go then
|
||||||
|
ModalResult := mrOk;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
object Form1: TForm1
|
object MainForm: TMainForm
|
||||||
Left = 163
|
Left = 226
|
||||||
Top = 116
|
Top = 145
|
||||||
Width = 682
|
Width = 682
|
||||||
Height = 569
|
Height = 569
|
||||||
HorzScrollBar.Visible = False
|
HorzScrollBar.Visible = False
|
||||||
VertScrollBar.Visible = False
|
VertScrollBar.Visible = False
|
||||||
BorderIcons = [biSystemMenu, biMinimize]
|
|
||||||
Caption = 'Progress Quest'
|
Caption = 'Progress Quest'
|
||||||
Color = clBtnFace
|
Color = clBtnFace
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
@@ -47,43 +46,43 @@ object Form1: TForm1
|
|||||||
6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
|
6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
|
||||||
66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
|
66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
|
||||||
D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
|
D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
|
||||||
80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF005852
|
80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000A0A
|
||||||
5151515151515258585858585858585858585858585858585852515151515852
|
0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
51514A4A4A515152585858585858585858585858585858585251514B4A4B5852
|
0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
514B4A4A4A4B51515258585858585858585858585858585251514B4A4A4A5852
|
0A4B0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
150F4A4A4A4A4B5151515152525251525252525252525151514A0F154A4B580B
|
150F0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F150A0A0A0C
|
||||||
0E0E0B4A4A4A4A4A5151515151515151515151515151514B4B0B0E0E0B512311
|
0E0E0C0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0C0E0E0C0A2311
|
||||||
15220E514A4A4A4A4A4A4A4B4A4A4A4A4A4A4A4A4A4A4A4A4A0F22143D234313
|
15220E0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F22143D234313
|
||||||
22431151514A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A11432213435822
|
2243110A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A11432213430A22
|
||||||
23296710294B4A4A44442244154422441544224444444A221012292322585858
|
23296710290A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A2210122923220A0A0A
|
||||||
58514443151D4B4A442215221522152215221522154B0E151544515252585858
|
0A514443151D0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A4B0E151544510A0A0A0A0A
|
||||||
5879294A43140D4A22150D0E2243100E1D0D2215220D14434A03525258585858
|
0A0A294A43140E0A0A150E0E220A0A0E1D0E220A0A0E14434A030A0A0A0A0A0A
|
||||||
585852514A224A430E0E1443220D111543140E0E4344224A4A51515258585858
|
0A0A0A514A224A430E0E1443220E111543140E0E4344224A4A0A0A0A0A0A0A0A
|
||||||
585858514B1514220E2243150D444444444322222214154B4B4B515258585858
|
0A0A0A514B1514220E2243150E444444444322222214150A0A0A0A0A0A0A0A0A
|
||||||
585858585174151D4A434A4A15104422234A434A1D15742A4A4B515258585858
|
0A0A0A0A5174151D4A434A4A15104422234A434A1D15740A0A0A0A0A0A0A0A0A
|
||||||
585858585222444B457422224B44224B222274454B4422524A4B515258585858
|
0A0A0A0A5222444B457422224B0A0A4B222274454B44220A0A0A0A0A0A0A0A0A
|
||||||
58585858510A4B4C3F4C44EA4A22224A6D444C3F4C4B0A4A4A51515258585858
|
0A0A0A0A510A4B4C3F4C44EA4A0A0A4A6D444C3F4C4B0A0A0A0A0A0A0A0A0A0A
|
||||||
585858580D15294B4523ECC8C44A4AE946EC23454B29150D4A51515858585858
|
0A0A0A0A0E15294B4523ECC8C44A4AE946EC23454B29150E0A0A0A0A0A0A0A0A
|
||||||
58585858444A4A234AAEC8FCFCA7E9F9F946AE44234A4A435151525858585858
|
0A0A0A0A444A4A234AAEC8FCFCA7E9F9F946AE44234A4A430A0A0A0A0A0A0A0A
|
||||||
58585858232244224AEFA7FCFC62F9F9F946EF4A224422235151525858585858
|
0A0A0A0A232244224AEFA7FCFC62F9F9F946EF4A224422230A0A0A0A0A0A0A0A
|
||||||
585858584B434A110C4A8DA862F9F9F9698D4A0C114A43295151525858585858
|
0A0A0A0A4B434A110A4A8DA862F9F9F969EC0A0A114A43290A0A0A0A0A0A0A0A
|
||||||
5858585852222210514A8D46F9F9F962A78D4A51104322524B51525858585858
|
0A0A0A0A0A2222100A0AED46F9F9F962A7ED0A0A104322520A0A0A0A0A0A0A0A
|
||||||
58585858524B0C034AEB46F9F9F962FCFCA7F84A030C4B4A4A51515258585858
|
0A0A0A0A0A4B0C030AEB46F9F9F962FCFCA7EC0A030C0A0A0A0A0A0A0A0A0A0A
|
||||||
5858585251514B4AED46F9F9F9E3A8FCFCFCA7ED4A4B4A4A4A4B515152585858
|
0A0A0A0A0A0A0A0AED46F9F9F9E3A8FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
58585851514B4AED46F9F9F9E3F7F7E6FCFCFCA7ED4A4A4A4A4A4B5152585858
|
0A0A0A0A0A0A0AED46F9F9F9E3F7F7E6FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A
|
||||||
585852514B4AEB46F9F9F9E3ED525892E6FCFCFCA7EB4A4A4A4A4A4B51525858
|
0A0A0A0A0A0AEB46F9F9F9E3ED0A0A92E6FCFCFCA7EB0A0A0A0A0A0A0A0A0A0A
|
||||||
585852514A6D46F9F9F9E3ED5858585892E6FCFCFCA76D4A4A4A4A4A51515858
|
0A0A0A0A0A6D46F9F9F9E3ED0A0A0A0A92E6FCFCFCA76D0A0A0A0A0A0A0A0A0A
|
||||||
5858514B14B5F047F9E3F7585858585858B5E6FCC8DDB5144A4A4A4A51515858
|
0A0A0A0A14B5F047F9E3F70A0A0A0A0A0AB5E6FCC8DDB5140A0A0A0A0A0A0A0A
|
||||||
585852AE09F3F3BCE3B55858585858585858B5D0DDF3F309AE4A4B4B51515858
|
0A0A0AAE09F3F3BCE3B50A0A0A0A0A0A0A0AB5D0DDF3F309AE0A0A0A0A0A0A0A
|
||||||
5858BCF4F5F4F4F4075858585858585858585807F4F4F4F5DEBC515151525858
|
0A0ABCF4FFF4F4F4070A0A0A0A0A0A0A0A0A0A07F4F4F4FFDEBC0A0A0A0A0A0A
|
||||||
58991BF5F5F2DDB6585858585858585858585858B6DDF3F5F51B995152585858
|
0A991BFFFFF2DDB60A0A0A0A0A0A0A0A0A0A0A0AB6DDF3FFFF1B990A0A0A0A0A
|
||||||
5892B51909B592585858585858585858585858585892B509DDB5925858585858
|
0A92B51909B5920A0A0A0A0A0A0A0A0A0A0A0A0A0A92B509DDB5920A0A0A0A0A
|
||||||
58720909ECEB58585858585858585858585858585858F8EC0909725858585858
|
0A720909ECEB0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0AECEC0909720A0A0A0A0A
|
||||||
58F78DAEED5858585858585858585858585858585858581CAE8D925858580000
|
0AF78DAEED0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1CAE8D920A0A0AFFFF
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
FFFFFFFFFFFFEFFFFFFFCFFFFFF387FFFFE107FFFFE007FFFFE081FFFF81E0FF
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
FE07F061860FF800001FF800007FFC00007FFC01807FFC01807FFC00003FFC00
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
003FFC00003FFC200C3FFE300C3FFE2004FFFFC003FFFF8001FFFF0180FFFE03
|
||||||
000000000000000000000000000000000000000000000000000000000000}
|
C07FFC07E03FF80FF01FF01FF80FE03FFC07E07FFE07E0FFFF07E1FFFF87}
|
||||||
KeyPreview = True
|
KeyPreview = True
|
||||||
OldCreateOrder = False
|
OldCreateOrder = False
|
||||||
Position = poScreenCenter
|
Position = poScreenCenter
|
||||||
@@ -153,12 +152,15 @@ object Form1: TForm1
|
|||||||
end>
|
end>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
FlatScrollBars = True
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
Items.Data = {
|
Items.Data = {
|
||||||
6E0000000400000000000000FFFFFFFFFFFFFFFF0000000000000000044E616D
|
6E0000000400000000000000FFFFFFFFFFFFFFFF0000000000000000044E616D
|
||||||
6500000000FFFFFFFFFFFFFFFF0000000000000000045261636500000000FFFF
|
6500000000FFFFFFFFFFFFFFFF0000000000000000045261636500000000FFFF
|
||||||
FFFFFFFFFFFF000000000000000005436C61737300000000FFFFFFFFFFFFFFFF
|
FFFFFFFFFFFF000000000000000005436C61737300000000FFFFFFFFFFFFFFFF
|
||||||
0000000000000000054C6576656C}
|
0000000000000000054C6576656C}
|
||||||
|
MultiSelect = True
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
ViewStyle = vsReport
|
ViewStyle = vsReport
|
||||||
end
|
end
|
||||||
@@ -179,6 +181,7 @@ object Form1: TForm1
|
|||||||
end>
|
end>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
FlatScrollBars = True
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
Items.Data = {
|
Items.Data = {
|
||||||
CE0000000800000000000000FFFFFFFFFFFFFFFF000000000000000003535452
|
CE0000000800000000000000FFFFFFFFFFFFFFFF000000000000000003535452
|
||||||
00000000FFFFFFFFFFFFFFFF000000000000000003434F4E00000000FFFFFFFF
|
00000000FFFFFFFFFFFFFFFF000000000000000003434F4E00000000FFFFFFFF
|
||||||
@@ -187,7 +190,9 @@ object Form1: TForm1
|
|||||||
00000000FFFFFFFFFFFFFFFF00000000000000000343484100000000FFFFFFFF
|
00000000FFFFFFFFFFFFFFFF00000000000000000343484100000000FFFFFFFF
|
||||||
FFFFFFFF0000000000000000064850204D617800000000FFFFFFFFFFFFFFFF00
|
FFFFFFFF0000000000000000064850204D617800000000FFFFFFFFFFFFFFFF00
|
||||||
00000000000000064D50204D6178}
|
00000000000000064D50204D6178}
|
||||||
|
MultiSelect = True
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
ViewStyle = vsReport
|
ViewStyle = vsReport
|
||||||
end
|
end
|
||||||
@@ -222,7 +227,10 @@ object Form1: TForm1
|
|||||||
end>
|
end>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
FlatScrollBars = True
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
|
MultiSelect = True
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
ViewStyle = vsReport
|
ViewStyle = vsReport
|
||||||
end
|
end
|
||||||
@@ -342,8 +350,11 @@ object Form1: TForm1
|
|||||||
end>
|
end>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
FlatScrollBars = True
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
IconOptions.Arrangement = iaLeft
|
IconOptions.Arrangement = iaLeft
|
||||||
|
MultiSelect = True
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
ShowColumnHeaders = False
|
ShowColumnHeaders = False
|
||||||
StateImages = ImageList1
|
StateImages = ImageList1
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
@@ -375,8 +386,11 @@ object Form1: TForm1
|
|||||||
end>
|
end>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
FlatScrollBars = True
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
IconOptions.Arrangement = iaLeft
|
IconOptions.Arrangement = iaLeft
|
||||||
|
MultiSelect = True
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
ShowColumnHeaders = False
|
ShowColumnHeaders = False
|
||||||
StateImages = ImageList1
|
StateImages = ImageList1
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
@@ -450,7 +464,10 @@ object Form1: TForm1
|
|||||||
end>
|
end>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
FlatScrollBars = True
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
|
MultiSelect = True
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
ViewStyle = vsReport
|
ViewStyle = vsReport
|
||||||
end
|
end
|
||||||
@@ -485,6 +502,7 @@ object Form1: TForm1
|
|||||||
end>
|
end>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
FlatScrollBars = True
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
Items.Data = {
|
Items.Data = {
|
||||||
410100000B00000000000000FFFFFFFFFFFFFFFF000000000000000006576561
|
410100000B00000000000000FFFFFFFFFFFFFFFF000000000000000006576561
|
||||||
706F6E00000000FFFFFFFFFFFFFFFF000000000000000006536869656C640000
|
706F6E00000000FFFFFFFFFFFFFFFF000000000000000006536869656C640000
|
||||||
@@ -497,15 +515,17 @@ object Form1: TForm1
|
|||||||
4375697373657300000000FFFFFFFFFFFFFFFF00000000000000000747726561
|
4375697373657300000000FFFFFFFFFFFFFFFF00000000000000000747726561
|
||||||
76657300000000FFFFFFFFFFFFFFFF000000000000000009536F6C6C65726574
|
76657300000000FFFFFFFFFFFFFFFF000000000000000009536F6C6C65726574
|
||||||
73}
|
73}
|
||||||
|
MultiSelect = True
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
ShowColumnHeaders = False
|
ShowColumnHeaders = False
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
ViewStyle = vsReport
|
ViewStyle = vsReport
|
||||||
end
|
end
|
||||||
object vars: TPanel
|
object vars: TPanel
|
||||||
Left = 64
|
Left = 84
|
||||||
Top = 40
|
Top = 32
|
||||||
Width = 185
|
Width = 177
|
||||||
Height = 129
|
Height = 129
|
||||||
Caption = 'vars'
|
Caption = 'vars'
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
@@ -531,10 +551,10 @@ object Form1: TForm1
|
|||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object fQueue: TListBox
|
object fQueue: TListBox
|
||||||
Left = 16
|
Left = 12
|
||||||
Top = 84
|
Top = 72
|
||||||
Width = 121
|
Width = 49
|
||||||
Height = 41
|
Height = 45
|
||||||
ItemHeight = 13
|
ItemHeight = 13
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,17 +1,19 @@
|
|||||||
unit Main;
|
unit Main;
|
||||||
|
{ copyright (c)2002 Eric Fredricksen all rights reserved }
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||||
Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, ImgList, Menus, Psock,
|
Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, ImgList, Menus, Psock,
|
||||||
NMHttp;
|
NMHttp, ShellAPI;
|
||||||
|
|
||||||
const
|
const
|
||||||
RevString = '&rev=2';
|
RevString = '&rev=3';
|
||||||
|
wmIconTray = WM_USER + Ord('t');
|
||||||
|
|
||||||
type
|
type
|
||||||
TForm1 = class(TForm)
|
TMainForm = class(TForm)
|
||||||
Panel1: TPanel;
|
Panel1: TPanel;
|
||||||
Label1: TLabel;
|
Label1: TLabel;
|
||||||
Traits: TListView;
|
Traits: TListView;
|
||||||
@@ -68,7 +70,6 @@ type
|
|||||||
function TaskDone: Boolean;
|
function TaskDone: Boolean;
|
||||||
procedure CompleteQuest;
|
procedure CompleteQuest;
|
||||||
procedure CompleteAct;
|
procedure CompleteAct;
|
||||||
function RollCharacter: Boolean;
|
|
||||||
procedure WinEquip;
|
procedure WinEquip;
|
||||||
procedure WinSpell;
|
procedure WinSpell;
|
||||||
procedure WinStat;
|
procedure WinStat;
|
||||||
@@ -79,11 +80,18 @@ type
|
|||||||
function InterestingItem: String;
|
function InterestingItem: String;
|
||||||
function MonsterTask(var level: Integer): String;
|
function MonsterTask(var level: Integer): String;
|
||||||
function EquipPrice: Integer;
|
function EquipPrice: Integer;
|
||||||
procedure Brag;
|
procedure Brag(trigger: String);
|
||||||
procedure TriggerAutosizes;
|
procedure TriggerAutosizes;
|
||||||
|
function GameSaveName: String;
|
||||||
|
procedure OnTrayMessage(var Msg: TMessage); message wmIconTray;
|
||||||
|
procedure OnSysCommand(Var Msg : TWMSysCommand); message WM_SYSCOMMAND;
|
||||||
|
procedure Guildify;
|
||||||
|
procedure ClearAllSelections;
|
||||||
public
|
public
|
||||||
|
FTrayIcon: TNotifyIconData;
|
||||||
|
procedure MinimizeIt;
|
||||||
procedure LoadGame(name: String);
|
procedure LoadGame(name: String);
|
||||||
function SaveGame(report: Boolean): Boolean;
|
function SaveGame: Boolean;
|
||||||
procedure Put(list: TListView; key: String; value: String); overload;
|
procedure Put(list: TListView; key: String; value: String); overload;
|
||||||
procedure Put(list: TListView; pos: Integer; value: String); overload;
|
procedure Put(list: TListView; pos: Integer; value: String); overload;
|
||||||
procedure Put(list: TListView; key: String; value: Integer); overload;
|
procedure Put(list: TListView; key: String; value: Integer); overload;
|
||||||
@@ -94,26 +102,138 @@ type
|
|||||||
function GetI(list: TListView; key: String): Integer; overload;
|
function GetI(list: TListView; key: String): Integer; overload;
|
||||||
function GetI(list: TListView; index: Integer): Integer; overload;
|
function GetI(list: TListView; index: Integer): Integer; overload;
|
||||||
function Sum(list: TListView): Integer;
|
function Sum(list: TListView): Integer;
|
||||||
|
function RollCharacter: Boolean;
|
||||||
|
function GetMotto: String;
|
||||||
|
function GetPasskey: Integer;
|
||||||
|
procedure SetMotto(v: String);
|
||||||
|
procedure SetPasskey(v: String);
|
||||||
|
function GetHostAddr: String;
|
||||||
|
function GetHostName: String;
|
||||||
|
procedure SetHostAddr(v: String);
|
||||||
|
procedure SetHostName(v: String);
|
||||||
|
function GetLogin: String;
|
||||||
|
function GetPassword: String;
|
||||||
|
procedure SetLogin(v: String);
|
||||||
|
procedure SetPassword(v: String);
|
||||||
|
function GetGuild: String;
|
||||||
|
procedure SetGuild(v: String);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
Form1: TForm1;
|
MainForm: TMainForm;
|
||||||
|
|
||||||
function Split(s: String; field: Integer): String;
|
function Split(s: String; field: Integer): String;
|
||||||
|
|
||||||
|
procedure Navigate(url: String);
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses NewGuy, Math, Config, Front, ShellAPI, zlibex;
|
uses NewGuy, Math, Config, Front, zlibex, SelServ, Login, mmsystem;
|
||||||
|
|
||||||
{$R *.dfm}
|
{$R *.dfm}
|
||||||
|
{ D E F I N E CHEATS}
|
||||||
|
|
||||||
procedure TForm1.Q(s: string);
|
procedure MakeFileAssociations;
|
||||||
|
begin
|
||||||
|
// HKCR/.pq (Default)="pqfile"
|
||||||
|
// HKCR/pqfile (Default)="Progress Quest saved game"
|
||||||
|
// HKCR/pqfile/shell (Default)="open"
|
||||||
|
// HKCR/pqfile/shell/open/command (Default)='c:\blah\pq.exe "%1"'
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.MinimizeIt;
|
||||||
|
begin
|
||||||
|
with FTrayIcon do
|
||||||
|
begin
|
||||||
|
cbSize := SizeOf(FTrayIcon);
|
||||||
|
Wnd := Handle;
|
||||||
|
uID := 0;
|
||||||
|
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
|
||||||
|
uCallbackMessage := wmIconTray;
|
||||||
|
hIcon := Application.Icon.Handle;
|
||||||
|
StrPCopy(szTip, Application.Title);
|
||||||
|
//a.szTip := 'Progress Quest';
|
||||||
|
end;
|
||||||
|
Application.Minimize;
|
||||||
|
ShowWindow(Application.Handle, SW_HIDE);
|
||||||
|
Shell_NotifyIcon(NIM_ADD,@FTrayIcon);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.OnSysCommand(var Msg: TWMSysCommand);
|
||||||
|
begin
|
||||||
|
if (Msg.CmdType = SC_MINIMIZE) then
|
||||||
|
MinimizeIt();
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.OnTrayMessage(var Msg: TMessage);
|
||||||
|
var
|
||||||
|
p : TPoint;
|
||||||
|
begin
|
||||||
|
case Msg.lParam of
|
||||||
|
WM_LBUTTONDOWN, WM_RBUTTONDOWN:
|
||||||
|
begin
|
||||||
|
ShowWindow(Application.Handle, SW_SHOW);
|
||||||
|
Application.Restore;
|
||||||
|
Shell_NotifyIcon(NIM_DELETE, @MainForm.FTrayIcon);
|
||||||
|
end;
|
||||||
|
{ WM_RBUTTONDOWN:
|
||||||
|
begin
|
||||||
|
//SetForegroundWindow(Handle);
|
||||||
|
//GetCursorPos(p);
|
||||||
|
//PopUpMenu1.Popup(p.x, p.y);
|
||||||
|
//PostMessage(Handle, WM_NULL, 0, 0);
|
||||||
|
end;
|
||||||
|
}
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure StartTimer;
|
||||||
|
begin
|
||||||
|
if not MainForm.Timer1.Enabled then begin
|
||||||
|
MainForm.Timer1.Tag := timeGetTime;
|
||||||
|
//Shell_NotifyIcon(NIM_ADD, @MainForm.FTrayIcon);
|
||||||
|
end;
|
||||||
|
MainForm.Timer1.Enabled := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TMainForm.GetPasskey: Integer; begin Result := Traits.Tag; end;
|
||||||
|
procedure TMainForm.SetPasskey(v: String);
|
||||||
|
begin
|
||||||
|
Traits.Hint := v;
|
||||||
|
Traits.Tag := StrToIntDef(Traits.Hint,0);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TMainForm.GetMotto: String; begin Result := Stats.Hint; end;
|
||||||
|
procedure TMainForm.SetMotto(v: String); begin Stats.Hint := v; end;
|
||||||
|
|
||||||
|
function TMainForm.GetHostName: String; begin Result := Spells.Hint; end;
|
||||||
|
procedure TMainForm.SetHostName(v: String); begin Spells.Hint := v; end;
|
||||||
|
|
||||||
|
function TMainForm.GetHostAddr: String;
|
||||||
|
begin
|
||||||
|
Result := Equips.Hint;
|
||||||
|
if (Result = '') and (GetPasskey <> 0) then
|
||||||
|
Result := 'http://www.progressquest.com/knoram.php?';
|
||||||
|
end;
|
||||||
|
procedure TMainForm.SetHostAddr(v: String); begin Equips.Hint := v; end;
|
||||||
|
|
||||||
|
function TMainForm.GetLogin: String; begin Result := Inventory.Hint; end;
|
||||||
|
procedure TMainForm.SetLogin(v: String); begin Inventory.Hint := v; end;
|
||||||
|
|
||||||
|
function TMainForm.GetPassword: String; begin Result := Plots.Hint; end;
|
||||||
|
procedure TMainForm.SetPassword(v: String); begin Plots.Hint := v; end;
|
||||||
|
|
||||||
|
function TMainForm.GetGuild: String; begin Result := Label1.Hint; end;
|
||||||
|
procedure TMainForm.SetGuild(v: String); begin Label1.Hint := v; end;
|
||||||
|
|
||||||
|
procedure TMainForm.Q(s: string);
|
||||||
begin
|
begin
|
||||||
fQueue.Items.Add(s);
|
fQueue.Items.Add(s);
|
||||||
Dequeue;
|
Dequeue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TForm1.TaskDone: Boolean;
|
function TMainForm.TaskDone: Boolean;
|
||||||
begin
|
begin
|
||||||
with TaskBar do
|
with TaskBar do
|
||||||
Result := Position >= Max;
|
Result := Position >= Max;
|
||||||
@@ -148,11 +268,13 @@ function Plural(s: String): String;
|
|||||||
begin
|
begin
|
||||||
if Ends(s,'y')
|
if Ends(s,'y')
|
||||||
then Result := Copy(s,1,Length(s)-1) + 'ies'
|
then Result := Copy(s,1,Length(s)-1) + 'ies'
|
||||||
|
else if Ends(s,'us')
|
||||||
|
then Result := Copy(s,1,Length(s)-2) + 'i'
|
||||||
else if Ends(s,'ch') or Ends(s,'x') or Ends(s,'s')
|
else if Ends(s,'ch') or Ends(s,'x') or Ends(s,'s')
|
||||||
then Result := s + 'es'
|
then Result := s + 'es'
|
||||||
else if Ends(s,'f')
|
else if Ends(s,'f')
|
||||||
then Result := Copy(s,1,Length(s)-1) + 'ves'
|
then Result := Copy(s,1,Length(s)-1) + 'ves'
|
||||||
else if Ends(s,'men') or Ends(s,'Men')
|
else if Ends(s,'man') or Ends(s,'Man')
|
||||||
then Result := Copy(s,1,Length(s)-2) + 'en'
|
then Result := Copy(s,1,Length(s)-2) + 'en'
|
||||||
else Result := s + 's';
|
else Result := s + 's';
|
||||||
end;
|
end;
|
||||||
@@ -243,7 +365,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TForm1.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;
|
||||||
@@ -257,7 +379,7 @@ 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(Form2.Race.Items) + ' ' + Pick(Form2.Klass.Items);
|
monster := 'passing ' + Pick(NewGuyForm.Race.Items) + ' ' + Pick(NewGuyForm.Klass.Items);
|
||||||
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
|
||||||
@@ -324,14 +446,14 @@ begin
|
|||||||
Result := UpperCase(Copy(s,1,1)) + Copy(s,2,10000);
|
Result := UpperCase(Copy(s,1,1)) + Copy(s,2,10000);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TForm1.EquipPrice: Integer;
|
function TMainForm.EquipPrice: Integer;
|
||||||
begin
|
begin
|
||||||
Result := 5 * GetI(Traits,'Level') * GetI(Traits,'Level')
|
Result := 5 * GetI(Traits,'Level') * GetI(Traits,'Level')
|
||||||
+ 10 * GetI(Traits,'Level')
|
+ 10 * GetI(Traits,'Level')
|
||||||
+ 20;
|
+ 20;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.Dequeue;
|
procedure TMainForm.Dequeue;
|
||||||
var
|
var
|
||||||
s, a, old: String;
|
s, a, old: String;
|
||||||
n, l: Integer;
|
n, l: Integer;
|
||||||
@@ -412,12 +534,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.Put(list: TListView; key, value: String);
|
procedure TMainForm.Put(list: TListView; key, value: String);
|
||||||
begin
|
begin
|
||||||
Put(list, IndexOf(list,key), value);
|
Put(list, IndexOf(list,key), value);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.Put(list: TListView; key: String; value: Integer);
|
procedure TMainForm.Put(list: TListView; key: String; value: Integer);
|
||||||
begin
|
begin
|
||||||
Put(list,key,IntToStr(value));
|
Put(list,key,IntToStr(value));
|
||||||
if key = 'STR' then
|
if key = 'STR' then
|
||||||
@@ -428,13 +550,17 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.Put(list: TListView; pos: Integer; value: String);
|
procedure TMainForm.Put(list: TListView; pos: Integer; value: String);
|
||||||
begin
|
begin
|
||||||
with list.Items.Item[pos] do begin
|
with list.Items.Item[pos] do 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;
|
||||||
end;
|
end;
|
||||||
|
//list.MultiSelect := true;
|
||||||
|
//list.RowSelect := true;
|
||||||
|
//list.HideSelection := false;
|
||||||
|
list.Items[pos].Selected := true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function LevelUpTime(level: Integer): Integer;
|
function LevelUpTime(level: Integer): Integer;
|
||||||
@@ -443,7 +569,7 @@ begin
|
|||||||
Result := Round((20.0 + IntPower(1.15,level)) * 60.0);
|
Result := Round((20.0 + IntPower(1.15,level)) * 60.0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.GoButtonClick(Sender: TObject);
|
procedure TMainForm.GoButtonClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
with ExpBar do begin
|
with ExpBar do begin
|
||||||
Position := 0;
|
Position := 0;
|
||||||
@@ -467,46 +593,17 @@ begin
|
|||||||
StateIndex := 0;
|
StateIndex := 0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Timer1.Enabled := True;
|
StartTimer;
|
||||||
SaveGame(true);
|
SaveGame;
|
||||||
|
Brag('s');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.WinSpell;
|
procedure TMainForm.WinSpell;
|
||||||
begin
|
begin
|
||||||
AddR(Spells, K.Spells.Lines[RandomLow(Min(GetI(Stats,'WIS')+GetI(Traits,'Level'),
|
AddR(Spells, K.Spells.Lines[RandomLow(Min(GetI(Stats,'WIS')+GetI(Traits,'Level'),
|
||||||
K.Spells.Lines.Count))], 1);
|
K.Spells.Lines.Count))], 1);
|
||||||
end;
|
end;
|
||||||
{
|
|
||||||
procedure TForm1.WinEquip;
|
|
||||||
var
|
|
||||||
pos, qual, plus, attrib, attribmax: Integer;
|
|
||||||
name: String;
|
|
||||||
stuff, better: TStrings;
|
|
||||||
begin
|
|
||||||
qual := Max(Random(GetI(Traits,'Level')),Random(1+GetI(Traits,'Level')));
|
|
||||||
pos := Random(Equips.Items.Count);
|
|
||||||
case pos of
|
|
||||||
0: begin stuff := K.Weapons.Lines; better := K.OffenseAttrib.Lines; end;
|
|
||||||
1: begin stuff := K.Shields.Lines; better := K.DefenseAttrib.Lines; end;
|
|
||||||
else begin stuff := K.Armors.Lines; better := K.DefenseAttrib.Lines; end;
|
|
||||||
end;
|
|
||||||
if qual > stuff.Count - 1 then
|
|
||||||
qual := stuff.Count - 1;
|
|
||||||
name := stuff[qual];
|
|
||||||
plus := GetI(Traits,'Level') - qual;
|
|
||||||
attribmax := Min(plus, better.Count-1);
|
|
||||||
while (plus > 0) and (attribmax > 0) and Odds(1,2) do begin
|
|
||||||
attrib := Random(attribmax+1);
|
|
||||||
name := better[attrib] + ' ' + name;
|
|
||||||
Dec(plus, attrib);
|
|
||||||
attribmax := Min(Min(plus, better.Count-1), attrib-1);
|
|
||||||
end;
|
|
||||||
if plus <> 0 then name := IntToStr(plus) + ' ' + name;
|
|
||||||
if plus > 0 then name := '+' + name;
|
|
||||||
|
|
||||||
Put(Equips, pos, name);
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
function LPick(list: TStrings; goal: Integer): String;
|
function LPick(list: TStrings; goal: Integer): String;
|
||||||
var
|
var
|
||||||
i, best, b1: Integer;
|
i, best, b1: Integer;
|
||||||
@@ -522,7 +619,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.WinEquip;
|
procedure TMainForm.WinEquip;
|
||||||
var
|
var
|
||||||
posn, qual, plus, count: Integer;
|
posn, qual, plus, count: Integer;
|
||||||
name, modifier: String;
|
name, modifier: String;
|
||||||
@@ -563,7 +660,7 @@ begin
|
|||||||
Put(Equips, posn, name);
|
Put(Equips, posn, name);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.WinStat;
|
procedure TMainForm.WinStat;
|
||||||
var
|
var
|
||||||
i,t: Integer;
|
i,t: Integer;
|
||||||
function Square(x: Integer): Integer; begin Result := x * x; end;
|
function Square(x: Integer): Integer; begin Result := x * x; end;
|
||||||
@@ -584,29 +681,29 @@ begin
|
|||||||
Add(Stats, Stats.Items[i].Caption, 1);
|
Add(Stats, Stats.Items[i].Caption, 1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TForm1.SpecialItem: String;
|
function TMainForm.SpecialItem: String;
|
||||||
begin
|
begin
|
||||||
Result := InterestingItem + ' of ' +
|
Result := InterestingItem + ' of ' +
|
||||||
Pick(K.ItemOfs.Lines);
|
Pick(K.ItemOfs.Lines);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TForm1.InterestingItem: String;
|
function TMainForm.InterestingItem: String;
|
||||||
begin
|
begin
|
||||||
Result := Pick(K.ItemAttrib.Lines) + ' ' +
|
Result := Pick(K.ItemAttrib.Lines) + ' ' +
|
||||||
Pick(K.Specials.Lines);
|
Pick(K.Specials.Lines);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TForm1.BoringItem: String;
|
function TMainForm.BoringItem: String;
|
||||||
begin
|
begin
|
||||||
Result := Pick(K.BoringItems.Lines);
|
Result := Pick(K.BoringItems.Lines);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.WinItem;
|
procedure TMainForm.WinItem;
|
||||||
begin
|
begin
|
||||||
Add(Inventory, SpecialItem, 1);
|
Add(Inventory, SpecialItem, 1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.CompleteQuest;
|
procedure TMainForm.CompleteQuest;
|
||||||
var
|
var
|
||||||
lev, level, l, i, montag: Integer;
|
lev, level, l, i, montag: Integer;
|
||||||
m: string;
|
m: string;
|
||||||
@@ -626,14 +723,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
while Items.Count > 99 do Items.Delete(0);
|
while Items.Count > 99 do Items.Delete(0);
|
||||||
{
|
|
||||||
lev := GetI(Traits,'Level');
|
|
||||||
for i := lev downto 1 do
|
|
||||||
if Odds(1,3) then
|
|
||||||
Inc(lev,RandSign());
|
|
||||||
if lev > MonsterMax then lev := MonsterMax - Random(2);
|
|
||||||
if lev < 1 then lev := 1;
|
|
||||||
}
|
|
||||||
with Items.Add do begin
|
with Items.Add do begin
|
||||||
case Random(5) of
|
case Random(5) of
|
||||||
0: begin
|
0: begin
|
||||||
@@ -685,7 +775,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
Width := Width - 1; // trigger a column resize
|
Width := Width - 1; // trigger a column resize
|
||||||
end;
|
end;
|
||||||
SaveGame(false);
|
SaveGame;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function Rome(var n: Integer; dn: Integer; var s: String; ds: String): Boolean;
|
function Rome(var n: Integer; dn: Integer; var s: String; ds: String): Boolean;
|
||||||
@@ -741,7 +831,7 @@ begin
|
|||||||
while UnRome(n, 1, Result, 'I') do ;
|
while UnRome(n, 1, Result, 'I') do ;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.CompleteAct;
|
procedure TMainForm.CompleteAct;
|
||||||
begin
|
begin
|
||||||
PlotBar.Position := 0;
|
PlotBar.Position := 0;
|
||||||
with Plots do begin
|
with Plots do begin
|
||||||
@@ -755,10 +845,11 @@ begin
|
|||||||
Width := Width-1;
|
Width := Width-1;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
SaveGame(true);
|
SaveGame;
|
||||||
|
Brag('a');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.Task(caption: String; msec: Integer);
|
procedure TMainForm.Task(caption: String; msec: Integer);
|
||||||
begin
|
begin
|
||||||
Kill.SimpleText := caption + '...';
|
Kill.SimpleText := caption + '...';
|
||||||
with TaskBar do begin
|
with TaskBar do begin
|
||||||
@@ -767,22 +858,22 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.Add(list: TListView; key: String; value: Integer);
|
procedure TMainForm.Add(list: TListView; key: String; value: Integer);
|
||||||
begin
|
begin
|
||||||
Put(list, key, value + GetI(list,key));
|
Put(list, key, value + GetI(list,key));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.AddR(list: TListView; key: String; value: Integer);
|
procedure TMainForm.AddR(list: TListView; key: String; value: Integer);
|
||||||
begin
|
begin
|
||||||
Put(list, key, IntToRoman(value + RomanToInt(Get(list,key))));
|
Put(list, key, IntToRoman(value + RomanToInt(Get(list,key))));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TForm1.Get(list: TListView; key: String): String;
|
function TMainForm.Get(list: TListView; key: String): String;
|
||||||
begin
|
begin
|
||||||
Result := Get(list, IndexOf(list,key));
|
Result := Get(list, IndexOf(list,key));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TForm1.Get(list: TListView; index: Integer): String;
|
function TMainForm.Get(list: TListView; index: Integer): String;
|
||||||
begin
|
begin
|
||||||
with list.Items.Item[index] do begin
|
with list.Items.Item[index] do begin
|
||||||
if SubItems.Count < 1
|
if SubItems.Count < 1
|
||||||
@@ -791,17 +882,17 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TForm1.GetI(list: TListView; key: String): Integer;
|
function TMainForm.GetI(list: TListView; key: String): Integer;
|
||||||
begin
|
begin
|
||||||
Result := StrToIntDef(Get(list,key),0);
|
Result := StrToIntDef(Get(list,key),0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TForm1.GetI(list: TListView; index: Integer): Integer;
|
function TMainForm.GetI(list: TListView; index: Integer): Integer;
|
||||||
begin
|
begin
|
||||||
Result := StrToIntDef(Get(list,index),0);
|
Result := StrToIntDef(Get(list,index),0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TForm1.Sum(list: TListView): Integer;
|
function TMainForm.Sum(list: TListView): Integer;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
@@ -821,7 +912,7 @@ begin
|
|||||||
list.Width := list.Width - 1; // trigger an autosize
|
list.Width := list.Width - 1; // trigger an autosize
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.LevelUp;
|
procedure TMainForm.LevelUp;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
@@ -834,16 +925,39 @@ begin
|
|||||||
Position := 0;
|
Position := 0;
|
||||||
Max := LevelUpTime(GetI(Traits,'Level'));
|
Max := LevelUpTime(GetI(Traits,'Level'));
|
||||||
end;
|
end;
|
||||||
SaveGame(true);
|
SaveGame;
|
||||||
|
Brag('l');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.Timer1Timer(Sender: TObject);
|
procedure TMainForm.ClearAllSelections;
|
||||||
|
begin
|
||||||
|
Equips.ClearSelection;
|
||||||
|
Spells.ClearSelection;
|
||||||
|
Stats.ClearSelection;
|
||||||
|
Traits.ClearSelection;
|
||||||
|
Inventory.ClearSelection;
|
||||||
|
Plots.ClearSelection;
|
||||||
|
Quests.ClearSelection;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function RoughTime(s: Integer): String;
|
||||||
|
begin
|
||||||
|
if s < 120 then Result := IntToStr(s) + ' seconds'
|
||||||
|
else if s < 60 * 120 then Result := IntToStr(s div 60) + ' minutes'
|
||||||
|
else if s < 60 * 60 * 48 then Result := IntToStr(s div 3600) + ' hours'
|
||||||
|
else Result := IntToStr(s div (3600 * 24)) + ' days';
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.Timer1Timer(Sender: TObject);
|
||||||
var
|
var
|
||||||
gain: Boolean;
|
gain: Boolean;
|
||||||
|
elapsed: Integer;
|
||||||
begin
|
begin
|
||||||
gain := Pos('kill|',fTask.Caption) = 1;
|
gain := Pos('kill|',fTask.Caption) = 1;
|
||||||
with TaskBar do begin
|
with TaskBar do begin
|
||||||
if Position >= Max then begin
|
if Position >= Max then begin
|
||||||
|
ClearAllSelections;
|
||||||
|
|
||||||
if Kill.SimpleText = 'Loading....' then Max := 0;
|
if Kill.SimpleText = 'Loading....' then Max := 0;
|
||||||
|
|
||||||
if gain then with ExpBar do if Position >= Max
|
if gain then with ExpBar do if Position >= Max
|
||||||
@@ -863,76 +977,54 @@ begin
|
|||||||
else Position := Position + TaskBar.Max div 1000;
|
else Position := Position + TaskBar.Max div 1000;
|
||||||
|
|
||||||
//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 := FormatDateTime('h:mm:ss" remaining"',(PlotBar.Max-PlotBar.Position) / (24.0 * 60 * 60));
|
PlotBar.Hint := RoughTime(PlotBar.Max-PlotBar.Position) + ' remaining';
|
||||||
|
//PlotBar.Hint := FormatDateTime('h:mm:ss" remaining"',(PlotBar.Max-PlotBar.Position) / (24.0 * 60 * 60));
|
||||||
|
|
||||||
Dequeue();
|
Dequeue();
|
||||||
end else with TaskBar do
|
end else with TaskBar do begin
|
||||||
Position := Position + Integer(Timer1.Interval);
|
elapsed := timeGetTime - Timer1.Tag;
|
||||||
|
if elapsed > 100 then elapsed := 100;
|
||||||
|
if elapsed < 0 then elapsed := 0;
|
||||||
|
Position := Position + elapsed;//Integer(Timer1.Interval);
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
Timer1.Tag := timeGetTime;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.FormCreate(Sender: TObject);
|
procedure TMainForm.FormCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
QuestBar.Position := 0;
|
QuestBar.Position := 0;
|
||||||
PlotBar.Position := 0;
|
PlotBar.Position := 0;
|
||||||
TaskBar.Position := 0;
|
TaskBar.Position := 0;
|
||||||
ExpBar.Position := 0;
|
ExpBar.Position := 0;
|
||||||
Encumbar.Position := 0;
|
Encumbar.Position := 0;
|
||||||
{
|
|
||||||
for i := 1 to MonsterMax do
|
|
||||||
fMonsters[i] := TStringList.Create;
|
|
||||||
M(1,'Wasp','Stinger');
|
|
||||||
M(1,'Rat','Tail');
|
|
||||||
M(1,'Bunny','Ear');
|
|
||||||
M(1,'Moth','Dust');
|
|
||||||
M(1,'Beagle','Collar');
|
|
||||||
M(1,'Midge','Corpse');
|
|
||||||
M(2,'Ostrich','Beak');
|
|
||||||
M(2,'Billy Goat','Beard');
|
|
||||||
M(2,'Bat','Wing');
|
|
||||||
M(2,'Koala','Heart');
|
|
||||||
M(3,'Wolf','Paw');
|
|
||||||
M(3,'Gnome','Skull');
|
|
||||||
M(3,'Kobold','Penis');
|
|
||||||
M(3,'Whippet','Collar');
|
|
||||||
M(4,'Orc','Shoe');
|
|
||||||
M(5,'Uruk','Boot');
|
|
||||||
M(6,'Tiger','Stripe');
|
|
||||||
M(7,'Lich','Mascara');
|
|
||||||
M(8,'Mummy','Chapeau');
|
|
||||||
M(9,'Vampire','Pancreas');
|
|
||||||
M(10,'Slime','Slime');
|
|
||||||
M(11,'Giant','Jumpsuit');
|
|
||||||
M(12,'Bugbear','Fang');
|
|
||||||
M(13,'Owlbear','Tuft');
|
|
||||||
M(14,'Basilisk','Gallstone');
|
|
||||||
M(15,'Cockatrice','Cock');
|
|
||||||
M(16,'Dragon','Scale');
|
|
||||||
}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.SpeedButton1Click(Sender: TObject);
|
procedure TMainForm.SpeedButton1Click(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
{$IFDEF CHEATS}
|
||||||
TaskBar.Position := TaskBar.Max;
|
TaskBar.Position := TaskBar.Max;
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TForm1.RollCharacter: Boolean;
|
function TMainForm.RollCharacter: Boolean;
|
||||||
var
|
var
|
||||||
f: Integer;
|
f: Integer;
|
||||||
begin
|
begin
|
||||||
Result := true;
|
Result := true;
|
||||||
repeat
|
repeat
|
||||||
if mrCancel = Form2.ShowModal then begin
|
if not NewGuyForm.Go then begin
|
||||||
Result := false;
|
Result := false;
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
if FileExists(Form2.Name.Text + '.pq') and
|
Put(Traits, 'Name', NewGuyForm.Name.Text);
|
||||||
(mrNo = MessageDlg('A saved game with that name already exists. Do you want to overwrite it?', mtWarning, [mbYes,mbNo], 0)) then begin
|
if FileExists(GameSaveName) and
|
||||||
|
(mrNo = MessageDlg('The saved game "' + GameSaveName + '" already exists. Do you want to overwrite it?', mtWarning, [mbYes,mbNo], 0)) then begin
|
||||||
// go around again
|
// go around again
|
||||||
end else begin
|
end else begin
|
||||||
f := FileCreate(Form2.Name.Text + '.pq');
|
f := FileCreate(GameSaveName);
|
||||||
if f = -1 then begin
|
if f = -1 then begin
|
||||||
ShowMessage('The thought police don''t like that name. Choose a name without \\ / : * ? " < > or | in it.');
|
ShowMessage('The thought police don''t like the name "' + GameSaveName + '". Choose a name without \\ / : * ? " < > or | in it.');
|
||||||
end else begin
|
end else begin
|
||||||
FileClose(f);
|
FileClose(f);
|
||||||
Break;
|
Break;
|
||||||
@@ -940,7 +1032,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
until false;
|
until false;
|
||||||
|
|
||||||
with Form2 do begin
|
with NewGuyForm do begin
|
||||||
Put(Traits,'Name',Name.Text);
|
Put(Traits,'Name',Name.Text);
|
||||||
Put(Traits,'Race',Race.Items[Race.ItemIndex]);
|
Put(Traits,'Race',Race.Items[Race.ItemIndex]);
|
||||||
Put(Traits,'Class',Klass.Items[Klass.ItemIndex]);
|
Put(Traits,'Class',Klass.Items[Klass.ItemIndex]);
|
||||||
@@ -955,113 +1047,98 @@ begin
|
|||||||
Put(Stats,'MP Max',Random(8) + INT.Tag div 6);
|
Put(Stats,'MP Max',Random(8) + INT.Tag div 6);
|
||||||
Put(Equips,'Weapon','Sharp Stick');
|
Put(Equips,'Weapon','Sharp Stick');
|
||||||
Put(Inventory,'Gold',0);
|
Put(Inventory,'Gold',0);
|
||||||
InventoryLabelAlsoGameStyle.Tag := GameStyle.Position;
|
InventoryLabelAlsoGameStyle.Tag := 3;//GameStyle.Position;
|
||||||
GoButtonClick(Form2);
|
ClearAllSelections;
|
||||||
|
GoButtonClick(NewGuyForm);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.FormShow(Sender: TObject);
|
|
||||||
|
procedure TMainForm.FormShow(Sender: TObject);
|
||||||
|
var
|
||||||
|
Done: Boolean;
|
||||||
begin
|
begin
|
||||||
|
if Timer1.Enabled then Exit;
|
||||||
|
Done := false;
|
||||||
if ParamCount >= 1 then begin
|
if ParamCount >= 1 then begin
|
||||||
LoadGame(ParamStr(1));
|
LoadGame(ParamStr(1));
|
||||||
Form2.Server.OnSuccess := nil;
|
NewGuyForm.Server.OnSuccess := nil;
|
||||||
Form2.Server.OnFailure := nil;
|
NewGuyForm.Server.OnFailure := nil;
|
||||||
end else
|
end else
|
||||||
while 1=1 do begin
|
while not Done do begin
|
||||||
case Form3.ShowModal of
|
SetHostName('');
|
||||||
|
SetHostAddr('');
|
||||||
|
SetLogin('');
|
||||||
|
SetPassword('');
|
||||||
|
case FrontForm.ShowModal of
|
||||||
mrOk: begin
|
mrOk: begin
|
||||||
if RollCharacter then
|
Done := RollCharacter;
|
||||||
Break;
|
|
||||||
end;
|
end;
|
||||||
mrRetry: begin
|
mrRetry: begin
|
||||||
// load
|
// load
|
||||||
if Form3.OpenDialog1.Execute then begin
|
if FrontForm.OpenDialog1.Execute then begin
|
||||||
LoadGame(Form3.OpenDialog1.Filename);
|
LoadGame(FrontForm.OpenDialog1.Filename);
|
||||||
Form2.Server.OnSuccess := nil;
|
NewGuyForm.Server.OnSuccess := nil;
|
||||||
Form2.Server.OnFailure := nil;
|
NewGuyForm.Server.OnFailure := nil;
|
||||||
break;
|
Done := true;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
mrYesToAll: begin
|
||||||
|
Done := ServerSelectForm.Go;
|
||||||
|
end;
|
||||||
mrCancel: begin
|
mrCancel: begin
|
||||||
Close;
|
Close;
|
||||||
Break;
|
Done := true;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.Button1Click(Sender: TObject);
|
procedure TMainForm.Button1Click(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
{$IFDEF CHEATS}
|
||||||
LevelUp;
|
LevelUp;
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.CashInClick(Sender: TObject);
|
procedure TMainForm.CashInClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
{$IFDEF CHEATS}
|
||||||
WinEquip;
|
WinEquip;
|
||||||
WinItem;
|
WinItem;
|
||||||
WinSpell;
|
WinSpell;
|
||||||
WinStat;
|
WinStat;
|
||||||
Add(Inventory,'Gold',Random(100));
|
Add(Inventory,'Gold',Random(100));
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.FinishQuestClick(Sender: TObject);
|
procedure TMainForm.FinishQuestClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
{$IFDEF CHEATS}
|
||||||
QuestBar.Position := QuestBar.Max;
|
QuestBar.Position := QuestBar.Max;
|
||||||
TaskBar.Position := TaskBar.Max;
|
TaskBar.Position := TaskBar.Max;
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.CheatPlotClick(Sender: TObject);
|
procedure TMainForm.CheatPlotClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
{$IFDEF CHEATS}
|
||||||
PlotBar.Position := PlotBar.Max;
|
PlotBar.Position := PlotBar.Max;
|
||||||
TaskBar.Position := TaskBar.Max;
|
TaskBar.Position := TaskBar.Max;
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{
|
function TMainForm.SaveGame: Boolean;
|
||||||
function TForm1.SaveGame(report: Boolean): Boolean;
|
|
||||||
var
|
|
||||||
f: TFileStream;
|
|
||||||
i: Integer;
|
|
||||||
name: String;
|
|
||||||
begin
|
|
||||||
name := Get(Traits,'Name') + '.pq';
|
|
||||||
Result := true;
|
|
||||||
try
|
|
||||||
f := TFileStream.Create(name, fmCreate);
|
|
||||||
for i := 0 to ComponentCount-1 do
|
|
||||||
f.WriteComponent(Components[i]);
|
|
||||||
f.Free;
|
|
||||||
except
|
|
||||||
on EfCreateError do Result := false;
|
|
||||||
end;
|
|
||||||
if report then Brag;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.LoadGame(name: String);
|
|
||||||
var
|
|
||||||
f: TFileStream;
|
|
||||||
i: Integer;
|
|
||||||
begin
|
|
||||||
f := TFileStream.Create(name, fmOpenRead);
|
|
||||||
for i := 0 to ComponentCount-1 do begin
|
|
||||||
f.ReadComponent(Components[i]);
|
|
||||||
end;
|
|
||||||
f.Free;
|
|
||||||
Timer1.Enabled := True;
|
|
||||||
TriggerAutosizes;
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
|
|
||||||
function TForm1.SaveGame(report: Boolean): Boolean;
|
|
||||||
var
|
var
|
||||||
f: TFileStream;
|
f: TFileStream;
|
||||||
m: TMemoryStream;
|
m: TMemoryStream;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
name: String;
|
|
||||||
begin
|
begin
|
||||||
name := Get(Traits,'Name') + '.pq';
|
|
||||||
Result := true;
|
Result := true;
|
||||||
try
|
try
|
||||||
f := TFileStream.Create(name, fmCreate);
|
DeleteFile(GameSaveName + '.bak');
|
||||||
|
MoveFile(PChar(GameSaveName), PChar(GameSaveName + '.bak'));
|
||||||
|
f := TFileStream.Create(GameSaveName, fmCreate);
|
||||||
except
|
except
|
||||||
on EfCreateError do begin
|
on EfCreateError do begin
|
||||||
Result := false;
|
Result := false;
|
||||||
@@ -1069,6 +1146,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
//ClearAllSelections;
|
||||||
m := TMemoryStream.Create;
|
m := TMemoryStream.Create;
|
||||||
for i := 0 to ComponentCount-1 do
|
for i := 0 to ComponentCount-1 do
|
||||||
m.WriteComponent(Components[i]);
|
m.WriteComponent(Components[i]);
|
||||||
@@ -1078,10 +1156,9 @@ begin
|
|||||||
|
|
||||||
m.Free;
|
m.Free;
|
||||||
f.Free;
|
f.Free;
|
||||||
if report then Brag;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.LoadGame(name: String);
|
procedure TMainForm.LoadGame(name: String);
|
||||||
var
|
var
|
||||||
f: TStream;
|
f: TStream;
|
||||||
m: TStream;
|
m: TStream;
|
||||||
@@ -1095,20 +1172,26 @@ begin
|
|||||||
except
|
except
|
||||||
on EZCompressionError do begin
|
on EZCompressionError do begin
|
||||||
// backwards-compatibility
|
// backwards-compatibility
|
||||||
m.Free;
|
//m.Free;
|
||||||
m := f;
|
//m := f;
|
||||||
f := nil;
|
//f := nil;
|
||||||
|
ShowMessage('Error loading game.');
|
||||||
|
Close;
|
||||||
|
Exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
Traits.Items.Clear;
|
||||||
|
Stats.Items.Clear;
|
||||||
|
Equips.Items.Clear;
|
||||||
m.Seek(0, soFromBeginning);
|
m.Seek(0, soFromBeginning);
|
||||||
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;
|
||||||
Timer1.Enabled := True;
|
StartTimer;
|
||||||
TriggerAutosizes;
|
TriggerAutosizes;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.TriggerAutosizes;
|
procedure TMainForm.TriggerAutosizes;
|
||||||
begin
|
begin
|
||||||
Plots.Width := 100;
|
Plots.Width := 100;
|
||||||
Quests.Width := 100;
|
Quests.Width := 100;
|
||||||
@@ -1119,44 +1202,81 @@ begin
|
|||||||
Stats.Width := 100;
|
Stats.Width := 100;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
|
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
||||||
begin
|
begin
|
||||||
if Timer1.Enabled then begin
|
if Timer1.Enabled then begin
|
||||||
Timer1.Enabled := false;
|
Timer1.Enabled := false;
|
||||||
if SaveGame(false) then
|
Shell_NotifyIcon(NIM_DELETE, @FTrayIcon);
|
||||||
ShowMessage('Game saved as ' + Get(Traits,'Name') + '.pq');
|
if SaveGame then
|
||||||
|
ShowMessage('Game saved as ' + GameSaveName);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
|
function TMainForm.GameSaveName: String;
|
||||||
|
begin
|
||||||
|
Result := Get(Traits,'Name');
|
||||||
|
if GetHostName <> '' then Result := Result + ' [' + GetHostName + ']';
|
||||||
|
Result := Result + '.pq';
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
|
||||||
Shift: TShiftState);
|
Shift: TShiftState);
|
||||||
begin
|
begin
|
||||||
if (FindWindow('TAppBuilder', nil) > 0) and (ssCtrl in Shift) and (ssShift in Shift) and (Key = ord('C')) then begin
|
if (FindWindow('TAppBuilder', nil) > 0) and (ssCtrl in Shift) and (ssShift in Shift) and (Key = ord('C')) then begin
|
||||||
|
{$IFDEF CHEATS}
|
||||||
Cheats.Visible := not Cheats.Visible;
|
Cheats.Visible := not Cheats.Visible;
|
||||||
Traits.Hint := ''; // sorry cheater -- you've been taken offline.
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
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;
|
Brag('b');
|
||||||
ShellExecute(GetDesktopWindow(), 'open', PChar('http://www.progressquest.com/hi.php?name=' + UrlEncode(Get(Traits,'Name'))), nil, '', SW_SHOW);
|
Navigate(GetHostAddr + 'name=' + UrlEncode(Get(Traits,'Name')));
|
||||||
end;
|
end;
|
||||||
if (ssCtrl in Shift) and (Key = ord('M')) then begin
|
if (ssCtrl in Shift) and (Key = ord('M')) then begin
|
||||||
Stats.Hint := InputBox('Progress Quest', 'Declare your motto!', Stats.Hint);
|
SetMotto(InputBox('Progress Quest', 'Declare your motto!', GetMotto));
|
||||||
Brag;
|
Brag('m');
|
||||||
ShellExecute(GetDesktopWindow(), 'open', PChar('http://www.progressquest.com/hi.php?name=' + UrlEncode(Get(Traits,'Name'))), nil, '', SW_SHOW);
|
Navigate(GetHostAddr + 'name=' + UrlEncode(Get(Traits,'Name')));
|
||||||
|
end;
|
||||||
|
if (ssCtrl in Shift) and (Key = ord('G')) then begin
|
||||||
|
SetGuild(InputBox('Progress Quest', 'Choose a guild.'#13#13'Make sure you undestand the guild rules before you join one. To learn more about guilds, visit http://progressquest.com/guilds.php', GetGuild));
|
||||||
|
Guildify;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.Brag;
|
procedure Navigate(url: String);
|
||||||
|
begin
|
||||||
|
ShellExecute(GetDesktopWindow(), 'open', PChar(url),
|
||||||
|
nil, '', SW_SHOW);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function LFSR(pt: String; salt: Integer): Integer;
|
||||||
|
var
|
||||||
|
k: Integer;
|
||||||
|
begin
|
||||||
|
Result := salt;
|
||||||
|
for k := 1 to Length(pt) do
|
||||||
|
Result := Ord(pt[k])
|
||||||
|
xor (Result shl 1)
|
||||||
|
xor (1 and ((Result shr 31) xor (Result shr 5)));
|
||||||
|
for k := 1 to 10 do
|
||||||
|
Result := (Result shl 1)
|
||||||
|
xor (1 and ((Result shr 31) xor (Result shr 5)));
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TMainForm.Brag(trigger: String);
|
||||||
var
|
var
|
||||||
url: string;
|
url: string;
|
||||||
best, i: Integer;
|
best, i: Integer;
|
||||||
const
|
const
|
||||||
flat = 1;
|
flat = 1;
|
||||||
begin
|
begin
|
||||||
if Traits.Hint = '' then Exit; // not a online game!
|
if GetPasskey = 0 then Exit; // not a online game!
|
||||||
|
url := 'cmd=b&t=' + trigger;
|
||||||
with Traits do for i := 0 to Items.Count-1 do
|
with Traits do for i := 0 to Items.Count-1 do
|
||||||
url := url + '&' + LowerCase(Items[i].Caption) + '=' + UrlEncode(Items[i].Subitems[0]);
|
url := url + '&' + LowerCase(Items[i].Caption[1]) + '=' + UrlEncode(Items[i].Subitems[0]);
|
||||||
url := url + '&item=' + UrlEncode(Get(Equips,Equips.Tag));
|
url := url + '&x=' + IntToStr(ExpBar.Position);
|
||||||
|
url := url + '&i=' + UrlEncode(Get(Equips,Equips.Tag));
|
||||||
if Equips.Tag > 1 then url := url + '+' + Equips.Items[Equips.Tag].Caption;
|
if Equips.Tag > 1 then url := url + '+' + Equips.Items[Equips.Tag].Caption;
|
||||||
best := 0;
|
best := 0;
|
||||||
if Spells.Items.Count > 0 then with Spells do begin
|
if Spells.Items.Count > 0 then with Spells do begin
|
||||||
@@ -1164,30 +1284,61 @@ begin
|
|||||||
if (i+flat) * RomanToInt(Get(Spells,i)) >
|
if (i+flat) * RomanToInt(Get(Spells,i)) >
|
||||||
(best+flat) * RomanToInt(Get(Spells,best)) then
|
(best+flat) * RomanToInt(Get(Spells,best)) then
|
||||||
best := i;
|
best := i;
|
||||||
url := url + '&spell=' + UrlEncode(Items[best].Caption + ' ' + Get(Spells,best));
|
url := url + '&z=' + UrlEncode(Items[best].Caption + ' ' + Get(Spells,best));
|
||||||
end;
|
end;
|
||||||
best := 0;
|
best := 0;
|
||||||
for i := 1 to 5 do
|
for i := 1 to 5 do
|
||||||
if GetI(Stats,i) > GetI(Stats,best) then best := i;
|
if GetI(Stats,i) > GetI(Stats,best) then best := i;
|
||||||
url := url + '&stat=' + Stats.Items[best].Caption + '+' + Get(Stats,best);
|
url := url + '&k=' + Stats.Items[best].Caption + '+' + Get(Stats,best);
|
||||||
url := url + '&plot=' + UrlEncode(Plots.Items[Plots.Items.Count-1].Caption);
|
url := url + '&a=' + UrlEncode(Plots.Items[Plots.Items.Count-1].Caption);
|
||||||
url := url + '&motto=' + UrlEncode(Stats.Hint);
|
url := url + '&h=' + UrlEncode(GetHostName);
|
||||||
url := url + '&passkey=' + IntToStr((not GetI(Traits,'Level') * 9831) xor Traits.Tag);
|
|
||||||
url := url + RevString;
|
url := url + RevString;
|
||||||
Form2.Server.Abort;
|
//url := url + '&passkey=' + IntToStr((not GetI(Traits,'Level') * 9831) xor GetPasskey);
|
||||||
url := 'http://www.progressquest.com/hi.php?cmd=brag' + url;
|
url := url + '&p=' + IntToStr(LFSR(url, GetPasskey));
|
||||||
try
|
url := url + '&m=' + UrlEncode(GetMotto);
|
||||||
//Form2.Server.OnSuccess := Form2.ReportSuccess;
|
with NewGuyForm.Server do try
|
||||||
Form2.Server.Get(url);
|
Abort;
|
||||||
|
HeaderInfo.UserId := GetLogin;
|
||||||
|
HeaderInfo.Password := GetPassword;
|
||||||
|
OnSuccess := NewGuyForm.BragSuccess;
|
||||||
|
Get(GetHostAddr + url);
|
||||||
except
|
except
|
||||||
on ESockError do begin
|
on ESockError do begin
|
||||||
// 'ats okay.
|
// 'ats okay.
|
||||||
Form2.Server.Abort;
|
Abort;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.Guildify;
|
||||||
|
var
|
||||||
|
url: string;
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if GetPasskey = 0 then Exit; // not a online game!
|
||||||
|
url := 'cmd=guild';
|
||||||
|
with Traits do for i := 0 to Items.Count-1 do
|
||||||
|
url := url + '&' + LowerCase(Items[i].Caption[1]) + '=' + UrlEncode(Items[i].Subitems[0]);
|
||||||
|
url := url + '&h=' + UrlEncode(GetHostName);
|
||||||
|
url := url + RevString;
|
||||||
|
url := url + '&guild=' + UrlEncode(GetGuild);
|
||||||
|
url := url + '&p=' + IntToStr(LFSR(url, GetPasskey));
|
||||||
|
with NewGuyForm.GuildGet do try
|
||||||
|
Abort;
|
||||||
|
HeaderInfo.UserId := GetLogin;
|
||||||
|
HeaderInfo.Password := GetPassword;
|
||||||
|
Get(GetHostAddr + url);
|
||||||
|
except
|
||||||
|
on ESockError do begin
|
||||||
|
// 'ats okay.
|
||||||
|
Abort;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
RegisterClasses([TForm1]);
|
RegisterClasses([TMainForm]);
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+110
-109
@@ -1,10 +1,10 @@
|
|||||||
object Form2: TForm2
|
object NewGuyForm: TNewGuyForm
|
||||||
Left = 264
|
Left = 323
|
||||||
Top = 169
|
Top = 164
|
||||||
BorderIcons = []
|
BorderIcons = []
|
||||||
BorderStyle = bsDialog
|
BorderStyle = bsDialog
|
||||||
Caption = 'Progress Quest - New Character'
|
Caption = 'Progress Quest - New Character'
|
||||||
ClientHeight = 457
|
ClientHeight = 458
|
||||||
ClientWidth = 509
|
ClientWidth = 509
|
||||||
Color = clBtnFace
|
Color = clBtnFace
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
@@ -46,43 +46,43 @@ object Form2: TForm2
|
|||||||
6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
|
6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
|
||||||
66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
|
66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
|
||||||
D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
|
D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
|
||||||
80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF005852
|
80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000A0A
|
||||||
5151515151515258585858585858585858585858585858585852515151515852
|
0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
51514A4A4A515152585858585858585858585858585858585251514B4A4B5852
|
0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
514B4A4A4A4B51515258585858585858585858585858585251514B4A4A4A5852
|
0A4B0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
150F4A4A4A4A4B5151515152525251525252525252525151514A0F154A4B580B
|
150F0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F150A0A0A0C
|
||||||
0E0E0B4A4A4A4A4A5151515151515151515151515151514B4B0B0E0E0B512311
|
0E0E0C0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0C0E0E0C0A2311
|
||||||
15220E514A4A4A4A4A4A4A4B4A4A4A4A4A4A4A4A4A4A4A4A4A0F22143D234313
|
15220E0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F22143D234313
|
||||||
22431151514A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A11432213435822
|
2243110A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A11432213430A22
|
||||||
23296710294B4A4A44442244154422441544224444444A221012292322585858
|
23296710290A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A2210122923220A0A0A
|
||||||
58514443151D4B4A442215221522152215221522154B0E151544515252585858
|
0A514443151D0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A4B0E151544510A0A0A0A0A
|
||||||
5879294A43140D4A22150D0E2243100E1D0D2215220D14434A03525258585858
|
0A0A294A43140E0A0A150E0E220A0A0E1D0E220A0A0E14434A030A0A0A0A0A0A
|
||||||
585852514A224A430E0E1443220D111543140E0E4344224A4A51515258585858
|
0A0A0A514A224A430E0E1443220E111543140E0E4344224A4A0A0A0A0A0A0A0A
|
||||||
585858514B1514220E2243150D444444444322222214154B4B4B515258585858
|
0A0A0A514B1514220E2243150E444444444322222214150A0A0A0A0A0A0A0A0A
|
||||||
585858585174151D4A434A4A15104422234A434A1D15742A4A4B515258585858
|
0A0A0A0A5174151D4A434A4A15104422234A434A1D15740A0A0A0A0A0A0A0A0A
|
||||||
585858585222444B457422224B44224B222274454B4422524A4B515258585858
|
0A0A0A0A5222444B457422224B0A0A4B222274454B44220A0A0A0A0A0A0A0A0A
|
||||||
58585858510A4B4C3F4C44EA4A22224A6D444C3F4C4B0A4A4A51515258585858
|
0A0A0A0A510A4B4C3F4C44EA4A0A0A4A6D444C3F4C4B0A0A0A0A0A0A0A0A0A0A
|
||||||
585858580D15294B4523ECC8C44A4AE946EC23454B29150D4A51515858585858
|
0A0A0A0A0E15294B4523ECC8C44A4AE946EC23454B29150E0A0A0A0A0A0A0A0A
|
||||||
58585858444A4A234AAEC8FCFCA7E9F9F946AE44234A4A435151525858585858
|
0A0A0A0A444A4A234AAEC8FCFCA7E9F9F946AE44234A4A430A0A0A0A0A0A0A0A
|
||||||
58585858232244224AEFA7FCFC62F9F9F946EF4A224422235151525858585858
|
0A0A0A0A232244224AEFA7FCFC62F9F9F946EF4A224422230A0A0A0A0A0A0A0A
|
||||||
585858584B434A110C4A8DA862F9F9F9698D4A0C114A43295151525858585858
|
0A0A0A0A4B434A110A4A8DA862F9F9F969EC0A0A114A43290A0A0A0A0A0A0A0A
|
||||||
5858585852222210514A8D46F9F9F962A78D4A51104322524B51525858585858
|
0A0A0A0A0A2222100A0AED46F9F9F962A7ED0A0A104322520A0A0A0A0A0A0A0A
|
||||||
58585858524B0C034AEB46F9F9F962FCFCA7F84A030C4B4A4A51515258585858
|
0A0A0A0A0A4B0C030AEB46F9F9F962FCFCA7EC0A030C0A0A0A0A0A0A0A0A0A0A
|
||||||
5858585251514B4AED46F9F9F9E3A8FCFCFCA7ED4A4B4A4A4A4B515152585858
|
0A0A0A0A0A0A0A0AED46F9F9F9E3A8FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
58585851514B4AED46F9F9F9E3F7F7E6FCFCFCA7ED4A4A4A4A4A4B5152585858
|
0A0A0A0A0A0A0AED46F9F9F9E3F7F7E6FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A
|
||||||
585852514B4AEB46F9F9F9E3ED525892E6FCFCFCA7EB4A4A4A4A4A4B51525858
|
0A0A0A0A0A0AEB46F9F9F9E3ED0A0A92E6FCFCFCA7EB0A0A0A0A0A0A0A0A0A0A
|
||||||
585852514A6D46F9F9F9E3ED5858585892E6FCFCFCA76D4A4A4A4A4A51515858
|
0A0A0A0A0A6D46F9F9F9E3ED0A0A0A0A92E6FCFCFCA76D0A0A0A0A0A0A0A0A0A
|
||||||
5858514B14B5F047F9E3F7585858585858B5E6FCC8DDB5144A4A4A4A51515858
|
0A0A0A0A14B5F047F9E3F70A0A0A0A0A0AB5E6FCC8DDB5140A0A0A0A0A0A0A0A
|
||||||
585852AE09F3F3BCE3B55858585858585858B5D0DDF3F309AE4A4B4B51515858
|
0A0A0AAE09F3F3BCE3B50A0A0A0A0A0A0A0AB5D0DDF3F309AE0A0A0A0A0A0A0A
|
||||||
5858BCF4F5F4F4F4075858585858585858585807F4F4F4F5DEBC515151525858
|
0A0ABCF4FFF4F4F4070A0A0A0A0A0A0A0A0A0A07F4F4F4FFDEBC0A0A0A0A0A0A
|
||||||
58991BF5F5F2DDB6585858585858585858585858B6DDF3F5F51B995152585858
|
0A991BFFFFF2DDB60A0A0A0A0A0A0A0A0A0A0A0AB6DDF3FFFF1B990A0A0A0A0A
|
||||||
5892B51909B592585858585858585858585858585892B509DDB5925858585858
|
0A92B51909B5920A0A0A0A0A0A0A0A0A0A0A0A0A0A92B509DDB5920A0A0A0A0A
|
||||||
58720909ECEB58585858585858585858585858585858F8EC0909725858585858
|
0A720909ECEB0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0AECEC0909720A0A0A0A0A
|
||||||
58F78DAEED5858585858585858585858585858585858581CAE8D925858580000
|
0AF78DAEED0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1CAE8D920A0A0AFFFF
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
FFFFFFFFFFFFEFFFFFFFCFFFFFF387FFFFE107FFFFE007FFFFE081FFFF81E0FF
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
FE07F061860FF800001FF800007FFC00007FFC01807FFC01807FFC00003FFC00
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
003FFC00003FFC200C3FFE300C3FFE2004FFFFC003FFFF8001FFFF0180FFFE03
|
||||||
000000000000000000000000000000000000000000000000000000000000}
|
C07FFC07E03FF80FF01FF01FF80FE03FFC07E07FFE07E0FFFF07E1FFFF87}
|
||||||
OldCreateOrder = False
|
OldCreateOrder = False
|
||||||
Position = poScreenCenter
|
Position = poScreenCenter
|
||||||
OnShow = FormShow
|
OnShow = FormShow
|
||||||
@@ -90,7 +90,7 @@ object Form2: TForm2
|
|||||||
TextHeight = 13
|
TextHeight = 13
|
||||||
object Race: TRadioGroup
|
object Race: TRadioGroup
|
||||||
Left = 8
|
Left = 8
|
||||||
Top = 52
|
Top = 48
|
||||||
Width = 185
|
Width = 185
|
||||||
Height = 401
|
Height = 401
|
||||||
Caption = 'Race'
|
Caption = 'Race'
|
||||||
@@ -114,14 +114,15 @@ object Form2: TForm2
|
|||||||
'Battle-Finch'
|
'Battle-Finch'
|
||||||
'Double Wookiee'
|
'Double Wookiee'
|
||||||
'Skraeling'
|
'Skraeling'
|
||||||
'Demicanadian')
|
'Demicanadian'
|
||||||
|
'Land Squid')
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
object Klass: TRadioGroup
|
object Klass: TRadioGroup
|
||||||
Left = 200
|
Left = 200
|
||||||
Top = 52
|
Top = 48
|
||||||
Width = 185
|
Width = 185
|
||||||
Height = 345
|
Height = 365
|
||||||
Caption = 'Class'
|
Caption = 'Class'
|
||||||
Items.Strings = (
|
Items.Strings = (
|
||||||
'Ur-Paladin'
|
'Ur-Paladin'
|
||||||
@@ -140,14 +141,15 @@ object Form2: TForm2
|
|||||||
'Tickle-Mimic'
|
'Tickle-Mimic'
|
||||||
'Slow Poisoner'
|
'Slow Poisoner'
|
||||||
'Bastard Lunatic'
|
'Bastard Lunatic'
|
||||||
'Lowling')
|
'Lowling'
|
||||||
|
'Birdrider')
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
end
|
end
|
||||||
object GroupBox1: TGroupBox
|
object GroupBox1: TGroupBox
|
||||||
Left = 392
|
Left = 392
|
||||||
Top = 52
|
Top = 48
|
||||||
Width = 109
|
Width = 109
|
||||||
Height = 345
|
Height = 365
|
||||||
Caption = 'Stats'
|
Caption = 'Stats'
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
object Label3: TLabel
|
object Label3: TLabel
|
||||||
@@ -255,7 +257,7 @@ object Form2: TForm2
|
|||||||
end
|
end
|
||||||
object Reroll: TButton
|
object Reroll: TButton
|
||||||
Left = 18
|
Left = 18
|
||||||
Top = 264
|
Top = 284
|
||||||
Width = 75
|
Width = 75
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'Roll'
|
Caption = 'Roll'
|
||||||
@@ -274,7 +276,7 @@ object Form2: TForm2
|
|||||||
end
|
end
|
||||||
object Unroll: TButton
|
object Unroll: TButton
|
||||||
Left = 18
|
Left = 18
|
||||||
Top = 296
|
Top = 316
|
||||||
Width = 75
|
Width = 75
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'Unroll'
|
Caption = 'Unroll'
|
||||||
@@ -284,8 +286,8 @@ object Form2: TForm2
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
object Sold: TButton
|
object Sold: TButton
|
||||||
Left = 330
|
Left = 342
|
||||||
Top = 416
|
Top = 424
|
||||||
Width = 75
|
Width = 75
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'Sold!'
|
Caption = 'Sold!'
|
||||||
@@ -293,48 +295,9 @@ object Form2: TForm2
|
|||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
OnClick = SoldClick
|
OnClick = SoldClick
|
||||||
end
|
end
|
||||||
object GroupBox2: TGroupBox
|
|
||||||
Left = 424
|
|
||||||
Top = 4
|
|
||||||
Width = 185
|
|
||||||
Height = 77
|
|
||||||
Caption = 'Game Style'
|
|
||||||
TabOrder = 4
|
|
||||||
Visible = False
|
|
||||||
object Label9: TLabel
|
|
||||||
Left = 20
|
|
||||||
Top = 56
|
|
||||||
Width = 30
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Action'
|
|
||||||
end
|
|
||||||
object Label10: TLabel
|
|
||||||
Left = 120
|
|
||||||
Top = 56
|
|
||||||
Width = 39
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Strategy'
|
|
||||||
end
|
|
||||||
object GameStyle: TTrackBar
|
|
||||||
Left = 24
|
|
||||||
Top = 24
|
|
||||||
Width = 126
|
|
||||||
Height = 33
|
|
||||||
Max = 5
|
|
||||||
Min = 1
|
|
||||||
Orientation = trHorizontal
|
|
||||||
Frequency = 1
|
|
||||||
Position = 3
|
|
||||||
SelEnd = 0
|
|
||||||
SelStart = 0
|
|
||||||
TabOrder = 0
|
|
||||||
TickMarks = tmBottomRight
|
|
||||||
TickStyle = tsAuto
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Name: TLabeledEdit
|
object Name: TLabeledEdit
|
||||||
Left = 8
|
Left = 8
|
||||||
Top = 24
|
Top = 20
|
||||||
Width = 185
|
Width = 185
|
||||||
Height = 21
|
Height = 21
|
||||||
EditLabel.Width = 28
|
EditLabel.Width = 28
|
||||||
@@ -342,53 +305,91 @@ object Form2: TForm2
|
|||||||
EditLabel.Caption = 'Name'
|
EditLabel.Caption = 'Name'
|
||||||
LabelPosition = lpAbove
|
LabelPosition = lpAbove
|
||||||
LabelSpacing = 3
|
LabelSpacing = 3
|
||||||
TabOrder = 5
|
MaxLength = 30
|
||||||
|
TabOrder = 4
|
||||||
Text = 'Grumdrig'
|
Text = 'Grumdrig'
|
||||||
end
|
end
|
||||||
object OldRolls: TListBox
|
object OldRolls: TListBox
|
||||||
Left = 396
|
Left = 396
|
||||||
Top = 232
|
Top = 228
|
||||||
Width = 21
|
Width = 21
|
||||||
Height = 13
|
Height = 13
|
||||||
ItemHeight = 13
|
ItemHeight = 13
|
||||||
TabOrder = 6
|
TabOrder = 5
|
||||||
Visible = False
|
Visible = False
|
||||||
end
|
end
|
||||||
object Button2: TButton
|
object Button2: TButton
|
||||||
Left = 414
|
Left = 426
|
||||||
Top = 416
|
Top = 424
|
||||||
Width = 75
|
Width = 75
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'Cancel'
|
Caption = 'Cancel'
|
||||||
ModalResult = 2
|
ModalResult = 2
|
||||||
TabOrder = 7
|
TabOrder = 6
|
||||||
end
|
end
|
||||||
object Online: TCheckBox
|
object Account: TLabeledEdit
|
||||||
Left = 204
|
Left = 200
|
||||||
Top = 24
|
Top = 20
|
||||||
Width = 97
|
Width = 185
|
||||||
Height = 17
|
Height = 21
|
||||||
Caption = 'Play online'
|
EditLabel.Width = 40
|
||||||
Checked = True
|
EditLabel.Height = 13
|
||||||
State = cbChecked
|
EditLabel.Caption = 'Account'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
TabOrder = 7
|
||||||
|
Visible = False
|
||||||
|
end
|
||||||
|
object Password: TLabeledEdit
|
||||||
|
Left = 392
|
||||||
|
Top = 20
|
||||||
|
Width = 109
|
||||||
|
Height = 21
|
||||||
|
EditLabel.Width = 46
|
||||||
|
EditLabel.Height = 13
|
||||||
|
EditLabel.Caption = 'Password'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
PasswordChar = '*'
|
||||||
TabOrder = 8
|
TabOrder = 8
|
||||||
|
Visible = False
|
||||||
end
|
end
|
||||||
object Server: TNMHTTP
|
object Server: TNMHTTP
|
||||||
Port = 0
|
Port = 0
|
||||||
ReportLevel = 0
|
ReportLevel = 0
|
||||||
Body = 'Default.htm'
|
Body = 'Default.htm'
|
||||||
Header = 'Head.txt'
|
Header = 'Head.txt'
|
||||||
HeaderInfo.Cookie = 'yumyum'
|
HeaderInfo.Referer = 'PQ6.1'
|
||||||
HeaderInfo.Password = 'chickens'
|
|
||||||
InputFileMode = False
|
InputFileMode = False
|
||||||
OutputFileMode = False
|
OutputFileMode = False
|
||||||
|
OnAboutToSend = ServerAboutToSend
|
||||||
OnSuccess = ServerSuccess
|
OnSuccess = ServerSuccess
|
||||||
|
OnFailure = ServerFailure
|
||||||
ProxyPort = 0
|
ProxyPort = 0
|
||||||
Left = 332
|
Left = 332
|
||||||
Top = 312
|
Top = 312
|
||||||
end
|
end
|
||||||
object PoorCodeDesign: TNMURL
|
object PoorCodeDesign: TNMURL
|
||||||
Left = 336
|
Left = 336
|
||||||
Top = 272
|
Top = 268
|
||||||
|
end
|
||||||
|
object ApplicationEvents1: TApplicationEvents
|
||||||
|
OnMinimize = ApplicationEvents1Minimize
|
||||||
|
Left = 332
|
||||||
|
Top = 208
|
||||||
|
end
|
||||||
|
object GuildGet: TNMHTTP
|
||||||
|
Port = 0
|
||||||
|
ReportLevel = 0
|
||||||
|
Body = 'Default.htm'
|
||||||
|
Header = 'Head.txt'
|
||||||
|
HeaderInfo.Referer = 'PQ6.1'
|
||||||
|
InputFileMode = False
|
||||||
|
OutputFileMode = False
|
||||||
|
OnAboutToSend = ServerAboutToSend
|
||||||
|
OnSuccess = GuildGetSuccess
|
||||||
|
ProxyPort = 0
|
||||||
|
Left = 332
|
||||||
|
Top = 340
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+95
-25
@@ -1,13 +1,14 @@
|
|||||||
unit NewGuy;
|
unit NewGuy;
|
||||||
|
{ copyright (c)2002 Eric Fredricksen all rights reserved }
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||||
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Psock, NMHttp, NMURL;
|
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Psock, NMHttp, NMURL, AppEvnts;
|
||||||
|
|
||||||
type
|
type
|
||||||
TForm2 = class(TForm)
|
TNewGuyForm = class(TForm)
|
||||||
Race: TRadioGroup;
|
Race: TRadioGroup;
|
||||||
Klass: TRadioGroup;
|
Klass: TRadioGroup;
|
||||||
Label2: TLabel;
|
Label2: TLabel;
|
||||||
@@ -28,42 +29,48 @@ type
|
|||||||
Total: TPanel;
|
Total: TPanel;
|
||||||
Sold: TButton;
|
Sold: TButton;
|
||||||
Unroll: TButton;
|
Unroll: TButton;
|
||||||
GroupBox2: TGroupBox;
|
|
||||||
GameStyle: TTrackBar;
|
|
||||||
Label9: TLabel;
|
|
||||||
Label10: TLabel;
|
|
||||||
Name: TLabeledEdit;
|
Name: TLabeledEdit;
|
||||||
OldRolls: TListBox;
|
OldRolls: TListBox;
|
||||||
Button2: TButton;
|
Button2: TButton;
|
||||||
Server: TNMHTTP;
|
Server: TNMHTTP;
|
||||||
Online: TCheckBox;
|
|
||||||
PoorCodeDesign: TNMURL;
|
PoorCodeDesign: TNMURL;
|
||||||
|
Account: TLabeledEdit;
|
||||||
|
Password: TLabeledEdit;
|
||||||
|
ApplicationEvents1: TApplicationEvents;
|
||||||
|
GuildGet: TNMHTTP;
|
||||||
procedure RerollClick(Sender: TObject);
|
procedure RerollClick(Sender: TObject);
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure UnrollClick(Sender: TObject);
|
procedure UnrollClick(Sender: TObject);
|
||||||
procedure ServerSuccess(Cmd: CmdType);
|
procedure ServerSuccess(Cmd: CmdType);
|
||||||
procedure SoldClick(Sender: TObject);
|
procedure SoldClick(Sender: TObject);
|
||||||
|
procedure ServerFailure(Cmd: CmdType);
|
||||||
|
procedure FormShow(Sender: TObject);
|
||||||
|
procedure ServerAboutToSend(Sender: TObject);
|
||||||
|
procedure ApplicationEvents1Minimize(Sender: TObject);
|
||||||
|
procedure GuildGetSuccess(Cmd: CmdType);
|
||||||
private
|
private
|
||||||
procedure RollEm;
|
procedure RollEm;
|
||||||
|
function GetAccount: String;
|
||||||
|
function GetPassword: String;
|
||||||
public
|
public
|
||||||
procedure ReportSuccess(Cmd: CmdType);
|
procedure BragSuccess(Cmd: CmdType);
|
||||||
|
function Go: Boolean;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
Form2: TForm2;
|
NewGuyForm: TNewGuyForm;
|
||||||
|
|
||||||
function UrlEncode(s: string): string;
|
function UrlEncode(s: string): string;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses Main;
|
uses Main, SelServ;
|
||||||
|
|
||||||
{$R *.dfm}
|
{$R *.dfm}
|
||||||
|
|
||||||
function UrlEncode(s: string): string;
|
function UrlEncode(s: string): string;
|
||||||
begin
|
begin
|
||||||
Form2.PoorCodeDesign.InputString := s;
|
NewGuyForm.PoorCodeDesign.InputString := s;
|
||||||
Result := Form2.PoorCodeDesign.Encode;
|
Result := NewGuyForm.PoorCodeDesign.Encode;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure Roll(stat: TPanel);
|
procedure Roll(stat: TPanel);
|
||||||
@@ -85,7 +92,7 @@ begin
|
|||||||
Result := Result / d;
|
Result := Result / d;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm2.RollEm;
|
procedure TNewGuyForm.RollEm;
|
||||||
begin
|
begin
|
||||||
ReRoll.Tag := RandSeed;
|
ReRoll.Tag := RandSeed;
|
||||||
Roll(STR);
|
Roll(STR);
|
||||||
@@ -103,15 +110,26 @@ begin
|
|||||||
else Total.Color := clWhite;
|
else Total.Color := clWhite;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm2.RerollClick(Sender: TObject);
|
procedure TNewGuyForm.RerollClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
OldRolls.Items.Insert(0, IntToStr(ReRoll.Tag));
|
OldRolls.Items.Insert(0, IntToStr(ReRoll.Tag));
|
||||||
Unroll.Enabled := true;
|
Unroll.Enabled := true;
|
||||||
RollEm;
|
RollEm;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm2.FormShow(Sender: TObject);
|
function TNewGuyForm.Go: Boolean;
|
||||||
begin
|
begin
|
||||||
|
Tag := 1;
|
||||||
|
Result := mrOk = ShowModal;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.FormShow(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if Tag > 0 then begin
|
||||||
|
Tag := 0;
|
||||||
|
Caption := 'Progress Quest - New Character';
|
||||||
|
if MainForm.GetHostName <> '' then
|
||||||
|
Caption := Caption + ' [' + MainForm.GetHostName + ']';
|
||||||
Randomize;
|
Randomize;
|
||||||
RollEm;
|
RollEm;
|
||||||
with Race do
|
with Race do
|
||||||
@@ -119,9 +137,10 @@ begin
|
|||||||
with Klass do
|
with Klass do
|
||||||
ItemIndex := Random(Items.Count);
|
ItemIndex := Random(Items.Count);
|
||||||
Name.SetFocus;
|
Name.SetFocus;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm2.UnrollClick(Sender: TObject);
|
procedure TNewGuyForm.UnrollClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
RandSeed := StrToInt(OldRolls.Items[0]);
|
RandSeed := StrToInt(OldRolls.Items[0]);
|
||||||
OldRolls.Items.Delete(0);
|
OldRolls.Items.Delete(0);
|
||||||
@@ -129,11 +148,12 @@ begin
|
|||||||
RollEm;
|
RollEm;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm2.ServerSuccess(Cmd: CmdType);
|
procedure TNewGuyForm.ServerSuccess(Cmd: CmdType);
|
||||||
begin
|
begin
|
||||||
if (LowerCase(Split(Server.Body,0)) = 'ok') then begin
|
if (LowerCase(Split(Server.Body,0)) = 'ok') then begin
|
||||||
Form1.Traits.Hint := Split(Server.Body,1);
|
MainForm.SetPasskey(Split(Server.Body,1));
|
||||||
Form1.Traits.Tag := StrToInt(Form1.Traits.Hint);
|
MainForm.SetLogin(GetAccount);
|
||||||
|
MainForm.SetPassword(GetPassword);
|
||||||
Server.OnSuccess := nil;
|
Server.OnSuccess := nil;
|
||||||
Server.OnFailure := nil;
|
Server.OnFailure := nil;
|
||||||
ModalResult := mrOk;
|
ModalResult := mrOk;
|
||||||
@@ -142,20 +162,43 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm2.ReportSuccess(Cmd: CmdType);
|
procedure TNewGuyForm.BragSuccess(Cmd: CmdType);
|
||||||
begin
|
begin
|
||||||
ShowMessage(Server.Body);
|
if (LowerCase(Split(Server.Body,0)) = 'report') then
|
||||||
|
ShowMessage(Split(Server.Body,1));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm2.SoldClick(Sender: TObject);
|
function TNewGuyForm.GetAccount: String;
|
||||||
begin
|
begin
|
||||||
if not Online.Checked
|
Result := '';
|
||||||
|
if Account.Visible then Result := Account.Text;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TNewGuyForm.GetPassword: String;
|
||||||
|
begin
|
||||||
|
Result := '';
|
||||||
|
if Password.Visible then Result := Password.Text;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.SoldClick(Sender: TObject);
|
||||||
|
var url, args: String;
|
||||||
|
begin
|
||||||
|
if MainForm.GetHostAddr = ''
|
||||||
then ModalResult := mrOk
|
then ModalResult := mrOk
|
||||||
else begin
|
else begin
|
||||||
try
|
try
|
||||||
Screen.Cursor := crHourglass;
|
Screen.Cursor := crHourglass;
|
||||||
try
|
try
|
||||||
Server.Get('http://www.progressquest.com/hi.php?cmd=create&name=' + UrlEncode(Name.Text) + RevString);
|
Server.HeaderInfo.UserId := GetAccount;
|
||||||
|
Server.HeaderInfo.Password := GetPassword;
|
||||||
|
args := 'cmd=create' +
|
||||||
|
'&name=' + UrlEncode(Name.Text) +
|
||||||
|
'&realm=' + UrlEncode(MainForm.GetHostName) +
|
||||||
|
RevString;
|
||||||
|
if (MainForm.Label8.Tag and 16) = 0
|
||||||
|
then url := MainForm.GetHostAddr
|
||||||
|
else url := 'http://www.progressquest.com/create.php?';
|
||||||
|
Server.Get(url + args);
|
||||||
except
|
except
|
||||||
on ESockError do begin
|
on ESockError do begin
|
||||||
ShowMessage('Error connecting to server');
|
ShowMessage('Error connecting to server');
|
||||||
@@ -168,4 +211,31 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.ServerFailure(Cmd: CmdType);
|
||||||
|
begin
|
||||||
|
ShowMessage('Connection to server ' + MainForm.GetHostName + ' failed');
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.ServerAboutToSend(Sender: TObject);
|
||||||
|
begin
|
||||||
|
Server.SendHeader.Values['Content-Type'] := 'text/plain';
|
||||||
|
Server.SendHeader.Values['Motto'] := MainForm.GetMotto;
|
||||||
|
Server.SendHeader.Values['Guild'] := MainForm.GetGuild;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.ApplicationEvents1Minimize(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MainForm.MinimizeIt;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.GuildGetSuccess(Cmd: CmdType);
|
||||||
|
var s,b: string;
|
||||||
|
begin
|
||||||
|
b := GuildGet.Body;
|
||||||
|
s := Take(b);
|
||||||
|
if s <> '' then ShowMessage(s);
|
||||||
|
s := Take(b);
|
||||||
|
if s <> '' then Navigate(s);
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|||||||
BIN
Binary file not shown.
+231
@@ -0,0 +1,231 @@
|
|||||||
|
object ServerSelectForm: TServerSelectForm
|
||||||
|
Left = 279
|
||||||
|
Top = 201
|
||||||
|
Width = 490
|
||||||
|
Height = 381
|
||||||
|
Caption = 'Progress Quest - Select Realm'
|
||||||
|
Color = clBtnFace
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = []
|
||||||
|
Icon.Data = {
|
||||||
|
0000010001002020000000000000A80800001600000028000000200000004000
|
||||||
|
0000010008000000000080040000000000000000000000000000000000000000
|
||||||
|
0000000080000080000000808000800000008000800080800000C0C0C000C0DC
|
||||||
|
C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222
|
||||||
|
220029292900555555004D4D4D004242420039393900807CFF005050FF009300
|
||||||
|
D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000
|
||||||
|
CC00003300000033330000336600003399000033CC000033FF00006600000066
|
||||||
|
330000666600006699000066CC000066FF000099000000993300009966000099
|
||||||
|
99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC
|
||||||
|
FF0000FF660000FF990000FFCC00330000003300330033006600330099003300
|
||||||
|
CC003300FF00333300003333330033336600333399003333CC003333FF003366
|
||||||
|
00003366330033666600336699003366CC003366FF0033990000339933003399
|
||||||
|
6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC
|
||||||
|
CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600
|
||||||
|
330066006600660099006600CC006600FF006633000066333300663366006633
|
||||||
|
99006633CC006633FF00666600006666330066666600666699006666CC006699
|
||||||
|
00006699330066996600669999006699CC006699FF0066CC000066CC330066CC
|
||||||
|
990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00
|
||||||
|
CC009999000099339900990099009900CC009900000099333300990066009933
|
||||||
|
CC009900FF00996600009966330099336600996699009966CC009933FF009999
|
||||||
|
330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC
|
||||||
|
990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF
|
||||||
|
FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33
|
||||||
|
6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66
|
||||||
|
CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC
|
||||||
|
0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF
|
||||||
|
6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33
|
||||||
|
3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66
|
||||||
|
9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99
|
||||||
|
FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF
|
||||||
|
6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
|
||||||
|
66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
|
||||||
|
D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
|
||||||
|
80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000A0A
|
||||||
|
0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A4B0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
|
150F0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F150A0A0A0C
|
||||||
|
0E0E0C0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0C0E0E0C0A2311
|
||||||
|
15220E0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F22143D234313
|
||||||
|
2243110A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A11432213430A22
|
||||||
|
23296710290A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A2210122923220A0A0A
|
||||||
|
0A514443151D0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A4B0E151544510A0A0A0A0A
|
||||||
|
0A0A294A43140E0A0A150E0E220A0A0E1D0E220A0A0E14434A030A0A0A0A0A0A
|
||||||
|
0A0A0A514A224A430E0E1443220E111543140E0E4344224A4A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A514B1514220E2243150E444444444322222214150A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A5174151D4A434A4A15104422234A434A1D15740A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A5222444B457422224B0A0A4B222274454B44220A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A510A4B4C3F4C44EA4A0A0A4A6D444C3F4C4B0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0E15294B4523ECC8C44A4AE946EC23454B29150E0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A444A4A234AAEC8FCFCA7E9F9F946AE44234A4A430A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A232244224AEFA7FCFC62F9F9F946EF4A224422230A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A4B434A110A4A8DA862F9F9F969EC0A0A114A43290A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A2222100A0AED46F9F9F962A7ED0A0A104322520A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A4B0C030AEB46F9F9F962FCFCA7EC0A030C0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A0A0A0AED46F9F9F9E3A8FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A0A0AED46F9F9F9E3F7F7E6FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A0AEB46F9F9F9E3ED0A0A92E6FCFCFCA7EB0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A6D46F9F9F9E3ED0A0A0A0A92E6FCFCFCA76D0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A14B5F047F9E3F70A0A0A0A0A0AB5E6FCC8DDB5140A0A0A0A0A0A0A0A
|
||||||
|
0A0A0AAE09F3F3BCE3B50A0A0A0A0A0A0A0AB5D0DDF3F309AE0A0A0A0A0A0A0A
|
||||||
|
0A0ABCF4FFF4F4F4070A0A0A0A0A0A0A0A0A0A07F4F4F4FFDEBC0A0A0A0A0A0A
|
||||||
|
0A991BFFFFF2DDB60A0A0A0A0A0A0A0A0A0A0A0AB6DDF3FFFF1B990A0A0A0A0A
|
||||||
|
0A92B51909B5920A0A0A0A0A0A0A0A0A0A0A0A0A0A92B509DDB5920A0A0A0A0A
|
||||||
|
0A720909ECEB0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0AECEC0909720A0A0A0A0A
|
||||||
|
0AF78DAEED0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1CAE8D920A0A0AFFFF
|
||||||
|
FFFFFFFFFFFFEFFFFFFFCFFFFFF387FFFFE107FFFFE007FFFFE081FFFF81E0FF
|
||||||
|
FE07F061860FF800001FF800007FFC00007FFC01807FFC01807FFC00003FFC00
|
||||||
|
003FFC00003FFC200C3FFE300C3FFE2004FFFFC003FFFF8001FFFF0180FFFE03
|
||||||
|
C07FFC07E03FF80FF01FF01FF80FE03FFC07E07FFE07E0FFFF07E1FFFF87}
|
||||||
|
OldCreateOrder = False
|
||||||
|
Position = poScreenCenter
|
||||||
|
DesignSize = (
|
||||||
|
482
|
||||||
|
354)
|
||||||
|
PixelsPerInch = 96
|
||||||
|
TextHeight = 13
|
||||||
|
object Label1: TLabel
|
||||||
|
Left = 8
|
||||||
|
Top = 8
|
||||||
|
Width = 31
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Server'
|
||||||
|
end
|
||||||
|
object Label2: TLabel
|
||||||
|
Left = 172
|
||||||
|
Top = 8
|
||||||
|
Width = 53
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Description'
|
||||||
|
end
|
||||||
|
object Servers: TListBox
|
||||||
|
Left = 8
|
||||||
|
Top = 24
|
||||||
|
Width = 157
|
||||||
|
Height = 277
|
||||||
|
Anchors = [akLeft, akTop, akBottom]
|
||||||
|
ItemHeight = 13
|
||||||
|
TabOrder = 0
|
||||||
|
OnClick = ServersClick
|
||||||
|
OnDblClick = ServersDblClick
|
||||||
|
end
|
||||||
|
object Panel1: TPanel
|
||||||
|
Left = 172
|
||||||
|
Top = 24
|
||||||
|
Width = 302
|
||||||
|
Height = 277
|
||||||
|
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||||
|
BevelOuter = bvLowered
|
||||||
|
BorderWidth = 4
|
||||||
|
Caption = 'Panel1'
|
||||||
|
TabOrder = 1
|
||||||
|
object Desc: TRichEdit
|
||||||
|
Left = 5
|
||||||
|
Top = 5
|
||||||
|
Width = 292
|
||||||
|
Height = 267
|
||||||
|
Align = alClient
|
||||||
|
BevelEdges = []
|
||||||
|
BevelInner = bvNone
|
||||||
|
BevelOuter = bvNone
|
||||||
|
BevelKind = bkTile
|
||||||
|
BorderStyle = bsNone
|
||||||
|
Color = clBtnFace
|
||||||
|
Ctl3D = True
|
||||||
|
ParentCtl3D = False
|
||||||
|
ReadOnly = True
|
||||||
|
TabOrder = 0
|
||||||
|
WantTabs = True
|
||||||
|
WantReturns = False
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object Select: TButton
|
||||||
|
Left = 313
|
||||||
|
Top = 320
|
||||||
|
Width = 75
|
||||||
|
Height = 25
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
|
Caption = '&Select'
|
||||||
|
Default = True
|
||||||
|
Enabled = False
|
||||||
|
TabOrder = 2
|
||||||
|
OnClick = SelectClick
|
||||||
|
end
|
||||||
|
object Button2: TButton
|
||||||
|
Left = 397
|
||||||
|
Top = 320
|
||||||
|
Width = 75
|
||||||
|
Height = 25
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
|
Caption = '&Cancel'
|
||||||
|
ModalResult = 2
|
||||||
|
TabOrder = 3
|
||||||
|
end
|
||||||
|
object Descs: TListBox
|
||||||
|
Left = 24
|
||||||
|
Top = 100
|
||||||
|
Width = 121
|
||||||
|
Height = 33
|
||||||
|
ItemHeight = 13
|
||||||
|
TabOrder = 4
|
||||||
|
Visible = False
|
||||||
|
end
|
||||||
|
object Hosts: TListBox
|
||||||
|
Left = 24
|
||||||
|
Top = 144
|
||||||
|
Width = 121
|
||||||
|
Height = 33
|
||||||
|
ItemHeight = 13
|
||||||
|
TabOrder = 5
|
||||||
|
Visible = False
|
||||||
|
end
|
||||||
|
object Options: TListBox
|
||||||
|
Left = 24
|
||||||
|
Top = 56
|
||||||
|
Width = 121
|
||||||
|
Height = 33
|
||||||
|
ItemHeight = 13
|
||||||
|
TabOrder = 6
|
||||||
|
Visible = False
|
||||||
|
end
|
||||||
|
object AccessCode: TLabeledEdit
|
||||||
|
Left = 8
|
||||||
|
Top = 320
|
||||||
|
Width = 157
|
||||||
|
Height = 21
|
||||||
|
Anchors = [akLeft, akBottom]
|
||||||
|
EditLabel.Width = 63
|
||||||
|
EditLabel.Height = 13
|
||||||
|
EditLabel.Caption = 'Access Code'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
TabOrder = 7
|
||||||
|
Visible = False
|
||||||
|
OnChange = AccessCodeChange
|
||||||
|
end
|
||||||
|
object ServerLoader: TNMHTTP
|
||||||
|
Port = 0
|
||||||
|
ReportLevel = 0
|
||||||
|
Body = 'Default.htm'
|
||||||
|
Header = 'Head.txt'
|
||||||
|
HeaderInfo.Cookie = 'yumyum'
|
||||||
|
HeaderInfo.Password = 'chickens'
|
||||||
|
InputFileMode = False
|
||||||
|
OutputFileMode = False
|
||||||
|
OnSuccess = ServerLoaderSuccess
|
||||||
|
ProxyPort = 0
|
||||||
|
Left = 220
|
||||||
|
Top = 152
|
||||||
|
end
|
||||||
|
object Timer1: TTimer
|
||||||
|
Enabled = False
|
||||||
|
Interval = 10
|
||||||
|
OnTimer = Timer1Timer
|
||||||
|
Left = 116
|
||||||
|
Top = 4
|
||||||
|
end
|
||||||
|
end
|
||||||
+183
@@ -0,0 +1,183 @@
|
|||||||
|
unit SelServ;
|
||||||
|
{ copyright (c)2002 Eric Fredricksen all rights reserved }
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||||
|
Dialogs, StdCtrls, ComCtrls, ExtCtrls, Psock, NMHttp;
|
||||||
|
|
||||||
|
type
|
||||||
|
TServerSelectForm = class(TForm)
|
||||||
|
Servers: TListBox;
|
||||||
|
Label1: TLabel;
|
||||||
|
Label2: TLabel;
|
||||||
|
Panel1: TPanel;
|
||||||
|
Desc: TRichEdit;
|
||||||
|
Select: TButton;
|
||||||
|
Button2: TButton;
|
||||||
|
ServerLoader: TNMHTTP;
|
||||||
|
Descs: TListBox;
|
||||||
|
Timer1: TTimer;
|
||||||
|
Hosts: TListBox;
|
||||||
|
Options: TListBox;
|
||||||
|
AccessCode: TLabeledEdit;
|
||||||
|
procedure ServerLoaderSuccess(Cmd: CmdType);
|
||||||
|
procedure ServersClick(Sender: TObject);
|
||||||
|
procedure SelectClick(Sender: TObject);
|
||||||
|
procedure AccessCodeChange(Sender: TObject);
|
||||||
|
procedure Timer1Timer(Sender: TObject);
|
||||||
|
procedure ServersDblClick(Sender: TObject);
|
||||||
|
private
|
||||||
|
procedure Fetch(path: String);
|
||||||
|
function CurrentOpts: Integer;
|
||||||
|
public
|
||||||
|
function Go: Boolean;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
ServerSelectForm: TServerSelectForm;
|
||||||
|
|
||||||
|
function Take(var s: String): String;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses NewGuy, Login, Main;
|
||||||
|
|
||||||
|
{$R *.dfm}
|
||||||
|
|
||||||
|
function Take(var s: String): String;
|
||||||
|
begin
|
||||||
|
if Pos('|',s) > 0 then begin
|
||||||
|
Result := Trim(Copy(s,1,Pos('|',s)-1));
|
||||||
|
s := Copy(s,Pos('|',s)+1,100000);
|
||||||
|
end else begin
|
||||||
|
Result := Trim(s);
|
||||||
|
s := '';
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TServerSelectForm.ServerLoaderSuccess(Cmd: CmdType);
|
||||||
|
var
|
||||||
|
s, def: String;
|
||||||
|
ndef: Integer;
|
||||||
|
begin
|
||||||
|
s := ServerLoader.Body;
|
||||||
|
if (LowerCase(Take(s)) = 'ok') then begin
|
||||||
|
def := Take(s);
|
||||||
|
ndef := 0;
|
||||||
|
repeat
|
||||||
|
Servers.Items.Add(Take(s));
|
||||||
|
if Servers.Items[Servers.Count-1] = def then
|
||||||
|
ndef := Servers.Count-1;
|
||||||
|
Options.Items.Add(Take(s));
|
||||||
|
Hosts.Items.Add(Take(s));
|
||||||
|
Descs.Items.Add(Take(s));
|
||||||
|
until s = '';
|
||||||
|
Servers.ItemIndex := ndef;
|
||||||
|
ServersClick(Self);
|
||||||
|
// Select.Enabled := true;
|
||||||
|
end else begin
|
||||||
|
ShowMessage(ServerLoader.Body);
|
||||||
|
ModalResult := mrCancel;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TServerSelectForm.ServersClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
Desc.Lines.Text := Descs.Items[Servers.ItemIndex];
|
||||||
|
AccessCode.Visible := (CurrentOpts and 8) > 0;
|
||||||
|
AccessCodeChange(Sender);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TServerSelectForm.CurrentOpts: Integer;
|
||||||
|
begin
|
||||||
|
Result := StrToIntDef(Options.Items[Servers.ItemIndex],0);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TServerSelectForm.Fetch(path: String);
|
||||||
|
begin
|
||||||
|
Select.Enabled := false;
|
||||||
|
Servers.Items.Clear;
|
||||||
|
Descs.Items.Clear;
|
||||||
|
Options.Items.Clear;
|
||||||
|
Hosts.Items.Clear;
|
||||||
|
Caption := 'Progress Quest - Select Realm';
|
||||||
|
if path <> '' then
|
||||||
|
Caption := Caption + ' [' + path + ']';
|
||||||
|
Desc.Text := 'Fetching realm list from server...';
|
||||||
|
try
|
||||||
|
Screen.Cursor := crHourglass;
|
||||||
|
try
|
||||||
|
if AccessCode.Visible
|
||||||
|
then ServerLoader.HeaderInfo.Password := AccessCode.Text
|
||||||
|
else ServerLoader.HeaderInfo.Password := '';
|
||||||
|
ServerLoader.Get('http://www.progressquest.com/list.php?' + RevString + '&p=' + path +'&ac=' + UrlEncode(ServerLoader.HeaderInfo.Password));
|
||||||
|
except
|
||||||
|
on ESockError do begin
|
||||||
|
ShowMessage('Error connecting to server');
|
||||||
|
ServerLoader.Abort;
|
||||||
|
ModalResult := mrCancel;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
Screen.Cursor := crDefault;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TServerSelectForm.Go: Boolean;
|
||||||
|
begin
|
||||||
|
Timer1.Enabled := true;
|
||||||
|
Result := //(Servers.Count > 0) and
|
||||||
|
(mrOk = ShowModal);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ServerURL(user, pass, host, uri: String): String;
|
||||||
|
begin
|
||||||
|
if Pos(uri, '?') > 0 then uri := uri + '&' else uri := uri + '?';
|
||||||
|
uri := uri + 'rev=3';
|
||||||
|
Result := 'http://' + user + ':' + pass + '@' + host + uri;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TServerSelectForm.AccessCodeChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
Select.Enabled :=
|
||||||
|
(CurrentOpts and 32 = 0) and
|
||||||
|
(Servers.Count > 0) and (
|
||||||
|
(not AccessCode.Visible) or
|
||||||
|
(AccessCode.Text <> ''));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TServerSelectForm.SelectClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
// 1: account required to create char
|
||||||
|
// 2: password required to create char
|
||||||
|
// 4: is a dir
|
||||||
|
// 8: password required to select
|
||||||
|
// 16: use progressquest.com for creates!
|
||||||
|
// 32: disable it!
|
||||||
|
if (CurrentOpts and 4) > 0 then begin
|
||||||
|
Fetch(Hosts.Items[Servers.ItemIndex]);
|
||||||
|
end else begin
|
||||||
|
MainForm.SetHostAddr(Hosts.Items[Servers.ItemIndex]);
|
||||||
|
MainForm.SetHostName(Servers.Items[Servers.ItemIndex]);
|
||||||
|
MainForm.Label8.Tag := CurrentOpts;
|
||||||
|
NewGuyForm.Account.Visible := (CurrentOpts and 1) > 0;
|
||||||
|
NewGuyForm.Password.Visible := (CurrentOpts and 2) > 0;
|
||||||
|
if MainForm.RollCharacter then
|
||||||
|
ModalResult := mrOk;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TServerSelectForm.Timer1Timer(Sender: TObject);
|
||||||
|
begin
|
||||||
|
Timer1.Enabled := false;
|
||||||
|
Fetch('');
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TServerSelectForm.ServersDblClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if Select.Enabled then SelectClick(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,167 +0,0 @@
|
|||||||
unit NewGuy;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
||||||
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Psock, NMHttp, NMURL;
|
|
||||||
|
|
||||||
type
|
|
||||||
TForm2 = class(TForm)
|
|
||||||
Race: TRadioGroup;
|
|
||||||
Klass: TRadioGroup;
|
|
||||||
Label2: TLabel;
|
|
||||||
STR: TPanel;
|
|
||||||
Label3: TLabel;
|
|
||||||
CON: TPanel;
|
|
||||||
Label4: TLabel;
|
|
||||||
DEX: TPanel;
|
|
||||||
Label5: TLabel;
|
|
||||||
INT: TPanel;
|
|
||||||
Label6: TLabel;
|
|
||||||
WIS: TPanel;
|
|
||||||
Label7: TLabel;
|
|
||||||
CHA: TPanel;
|
|
||||||
Reroll: TButton;
|
|
||||||
GroupBox1: TGroupBox;
|
|
||||||
Label8: TLabel;
|
|
||||||
Total: TPanel;
|
|
||||||
Sold: TButton;
|
|
||||||
Unroll: TButton;
|
|
||||||
GroupBox2: TGroupBox;
|
|
||||||
GameStyle: TTrackBar;
|
|
||||||
Label9: TLabel;
|
|
||||||
Label10: TLabel;
|
|
||||||
Name: TLabeledEdit;
|
|
||||||
OldRolls: TListBox;
|
|
||||||
Button2: TButton;
|
|
||||||
Server: TNMHTTP;
|
|
||||||
Online: TCheckBox;
|
|
||||||
PoorCodeDesign: TNMURL;
|
|
||||||
procedure RerollClick(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure UnrollClick(Sender: TObject);
|
|
||||||
procedure ServerSuccess(Cmd: CmdType);
|
|
||||||
procedure SoldClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
procedure RollEm;
|
|
||||||
{ Private declarations }
|
|
||||||
public
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
Form2: TForm2;
|
|
||||||
|
|
||||||
function UrlEncode(s: string): string;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Main;
|
|
||||||
|
|
||||||
{$R *.dfm}
|
|
||||||
|
|
||||||
function UrlEncode(s: string): string;
|
|
||||||
begin
|
|
||||||
Form2.PoorCodeDesign.InputString := s;
|
|
||||||
Result := Form2.PoorCodeDesign.Encode;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure Roll(stat: TPanel);
|
|
||||||
begin
|
|
||||||
stat.Tag := 3 + Random(6) + Random(6) + Random(6);
|
|
||||||
stat.Caption := IntToStr(stat.Tag);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function Choose(n, k: Integer): Real;
|
|
||||||
var
|
|
||||||
d, i: Longint;
|
|
||||||
begin
|
|
||||||
Result := n;
|
|
||||||
d := 1;
|
|
||||||
for i := 2 to k do begin
|
|
||||||
Result := Result * (1+n-i);
|
|
||||||
d := d * i;
|
|
||||||
end;
|
|
||||||
Result := Result / d;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm2.RollEm;
|
|
||||||
begin
|
|
||||||
ReRoll.Tag := RandSeed;
|
|
||||||
Roll(STR);
|
|
||||||
Roll(CON);
|
|
||||||
Roll(DEX);
|
|
||||||
Roll(INT);
|
|
||||||
Roll(WIS);
|
|
||||||
Roll(CHA);
|
|
||||||
Total.tag := STR.Tag + Con.Tag + DEX.Tag + Int.Tag + Wis.Tag + CHA.Tag;
|
|
||||||
Total.Caption := IntToStr(Total.Tag);
|
|
||||||
if Total.Tag >= (63+18) then Total.Color := clRed
|
|
||||||
else if Total.Tag > (4 * 18) then Total.Color := clYellow
|
|
||||||
else if Total.Tag <= (63-18) then Total.Color := clGray
|
|
||||||
else if Total.Tag < (3 * 18) then Total.Color := clSilver
|
|
||||||
else Total.Color := clWhite;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm2.RerollClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
OldRolls.Items.Insert(0, IntToStr(ReRoll.Tag));
|
|
||||||
Unroll.Enabled := true;
|
|
||||||
RollEm;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm2.FormShow(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Randomize;
|
|
||||||
RollEm;
|
|
||||||
with Race do
|
|
||||||
ItemIndex := Random(Items.Count);
|
|
||||||
with Klass do
|
|
||||||
ItemIndex := Random(Items.Count);
|
|
||||||
Name.SetFocus;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm2.UnrollClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
RandSeed := StrToInt(OldRolls.Items[0]);
|
|
||||||
OldRolls.Items.Delete(0);
|
|
||||||
Unroll.Enabled := OldRolls.Items.Count > 0;
|
|
||||||
RollEm;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm2.ServerSuccess(Cmd: CmdType);
|
|
||||||
begin
|
|
||||||
if (LowerCase(Split(Server.Body,0)) = 'ok') then begin
|
|
||||||
Form1.Traits.Hint := Split(Server.Body,1);
|
|
||||||
Form1.Traits.Tag := StrToInt(Form1.Traits.Hint);
|
|
||||||
Server.OnSuccess := nil;
|
|
||||||
Server.OnFailure := nil;
|
|
||||||
ModalResult := mrOk;
|
|
||||||
end else begin
|
|
||||||
ShowMessage(Split(Server.Body,1));
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm2.SoldClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if not Online.Checked
|
|
||||||
then ModalResult := mrOk
|
|
||||||
else begin
|
|
||||||
try
|
|
||||||
Screen.Cursor := crHourglass;
|
|
||||||
try
|
|
||||||
Server.Get('http://progressquest.name2host.com/hi.php?cmd=create&name=' + UrlEncode(Name.Text));
|
|
||||||
except
|
|
||||||
on ESockError do begin
|
|
||||||
ShowMessage('Error connecting to server');
|
|
||||||
Server.Abort;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
Screen.Cursor := crDefault;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-682
@@ -1,682 +0,0 @@
|
|||||||
unit Unit1;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
||||||
Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, ImgList;
|
|
||||||
|
|
||||||
type
|
|
||||||
TForm1 = class(TForm)
|
|
||||||
Panel1: TPanel;
|
|
||||||
Label1: TLabel;
|
|
||||||
Traits: TListView;
|
|
||||||
Equips: TListView;
|
|
||||||
Panel3: TPanel;
|
|
||||||
Label3: TLabel;
|
|
||||||
QuestBar: TProgressBar;
|
|
||||||
Stats: TListView;
|
|
||||||
Label2: TLabel;
|
|
||||||
PlotBar: TProgressBar;
|
|
||||||
Plots: TListView;
|
|
||||||
Quests: TListView;
|
|
||||||
Panel2: TPanel;
|
|
||||||
Label4: TLabel;
|
|
||||||
Spells: TListView;
|
|
||||||
Label5: TLabel;
|
|
||||||
Inventory: TListView;
|
|
||||||
Panel4: TPanel;
|
|
||||||
Kill: TStatusBar;
|
|
||||||
Label6: TLabel;
|
|
||||||
ExpBar: TProgressBar;
|
|
||||||
KillBar: TProgressBar;
|
|
||||||
Timer1: TTimer;
|
|
||||||
GoButton: TButton;
|
|
||||||
EncumBar: TProgressBar;
|
|
||||||
Label7: TLabel;
|
|
||||||
Button1: TButton;
|
|
||||||
ImageList1: TImageList;
|
|
||||||
Button2: TButton;
|
|
||||||
procedure GoButtonClick(Sender: TObject);
|
|
||||||
procedure Timer1Timer(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure SpeedButton1Click(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure Button1Click(Sender: TObject);
|
|
||||||
private
|
|
||||||
procedure Task(caption: String; msec: Integer);
|
|
||||||
procedure Dequeue;
|
|
||||||
procedure Q(s: string);
|
|
||||||
function TaskDone: Boolean;
|
|
||||||
procedure CompleteQuest;
|
|
||||||
procedure M(level: Integer; name, spoor: String);
|
|
||||||
procedure CompleteAct;
|
|
||||||
procedure RollCharacter;
|
|
||||||
procedure S(name: String);
|
|
||||||
procedure WinEquip;
|
|
||||||
procedure WinSpell;
|
|
||||||
procedure WinStat;
|
|
||||||
procedure WinItem;
|
|
||||||
procedure Aa(var list: TStrings; item: String);
|
|
||||||
public
|
|
||||||
procedure Put(list: TListView; key: String; value: String); overload;
|
|
||||||
procedure Put(list: TListView; pos: Integer; value: String); overload;
|
|
||||||
procedure Put(list: TListView; key: String; value: Integer); overload;
|
|
||||||
procedure Add(list: TListView; key: String; value: Integer); overload;
|
|
||||||
function Get(list: TListView; key: String): String; overload;
|
|
||||||
function Get(list: TListView; index: Integer): String; overload;
|
|
||||||
function GetI(list: TListView; key: String): Integer; overload;
|
|
||||||
function GetI(list: TListView; index: Integer): Integer; overload;
|
|
||||||
function Sum(list: TListView): Integer;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
Form1: TForm1;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses Unit2, Math;
|
|
||||||
|
|
||||||
{$R *.dfm}
|
|
||||||
|
|
||||||
const
|
|
||||||
MonsterMax = 16;
|
|
||||||
|
|
||||||
var
|
|
||||||
fMonsters: array[1..MonsterMax] of TStrings;
|
|
||||||
fWeapons, fOffenseAttrib, fArmors, fDefenseAttrib, fShields, fSpellList: TStrings;
|
|
||||||
fTask: String;
|
|
||||||
fQuest: String;
|
|
||||||
fQueue: TStrings;
|
|
||||||
|
|
||||||
procedure TForm1.Q(s: string);
|
|
||||||
begin
|
|
||||||
if fQueue = nil then fQueue := TStringList.Create;
|
|
||||||
fQueue.Add(s);
|
|
||||||
Dequeue;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TForm1.TaskDone: Boolean;
|
|
||||||
begin
|
|
||||||
with KillBar do
|
|
||||||
Result := Position >= Max;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function Odds(chance, outof: Integer): Boolean;
|
|
||||||
begin
|
|
||||||
Result := Random(outof) < chance;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function RandSign(): Integer;
|
|
||||||
begin
|
|
||||||
Result := Random(2) * 2 - 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function Pick(s: TStrings): String;
|
|
||||||
begin
|
|
||||||
Result := s[Random(s.Count)];
|
|
||||||
end;
|
|
||||||
|
|
||||||
function PickLow(s: TStrings): String;
|
|
||||||
begin
|
|
||||||
Result := s[Min(Random(s.Count),Random(s.Count))];
|
|
||||||
end;
|
|
||||||
|
|
||||||
function Ends(s,e: String): Boolean;
|
|
||||||
begin
|
|
||||||
Result := Copy(s,1+Length(s)-Length(e),Length(e)) = e;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function Plural(s: String): String;
|
|
||||||
begin
|
|
||||||
if Ends(s,'y')
|
|
||||||
then Result := Copy(s,1,Length(s)-1) + 'ies'
|
|
||||||
else if Ends(s,'ch')
|
|
||||||
then Result := s + 'es'
|
|
||||||
else if Ends(s,'f')
|
|
||||||
then Result := Copy(s,1,Length(s)-1) + 'ves'
|
|
||||||
else Result := s + 's';
|
|
||||||
end;
|
|
||||||
|
|
||||||
function Split(s: String; field: Integer): String;
|
|
||||||
var
|
|
||||||
p: Integer;
|
|
||||||
begin
|
|
||||||
while field > 0 do begin
|
|
||||||
p := Pos('|',s);
|
|
||||||
s := Copy(s,p+1,10000);
|
|
||||||
Dec(field);
|
|
||||||
end;
|
|
||||||
if Pos('|',s) > 0
|
|
||||||
then Result := Copy(s,1,Pos('|',s)-1)
|
|
||||||
else Result := s;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function MonsterTask(var level: Integer): String;
|
|
||||||
var
|
|
||||||
qty, lev, i: Integer;
|
|
||||||
begin
|
|
||||||
lev := level;
|
|
||||||
for i := 1 to level do begin
|
|
||||||
if Odds(2,3) then
|
|
||||||
Inc(lev, RandSign());
|
|
||||||
if Odds(2,5) then
|
|
||||||
Inc(level, RandSign());
|
|
||||||
end;
|
|
||||||
if lev < 1 then lev := 1;
|
|
||||||
if lev > MonsterMax then lev := MonsterMax;
|
|
||||||
if level < 1 then level := 1;
|
|
||||||
|
|
||||||
fTask := Pick(fMonsters[lev]);
|
|
||||||
Result := Split(fTask,0);
|
|
||||||
fTask := 'kill|' + fTask;
|
|
||||||
|
|
||||||
qty := 1;
|
|
||||||
case level-lev of
|
|
||||||
-3: Result := 'Fœtal ' + Result;
|
|
||||||
-2: Result := 'Very Sick ' + Result;
|
|
||||||
-1: Result := 'Lesser ' + Result;
|
|
||||||
0: ; // that's fine
|
|
||||||
1: Result := 'Greater ' + Result;
|
|
||||||
2: Result := 'War ' + Result;
|
|
||||||
3: Result := 'Über ' + Result;
|
|
||||||
else
|
|
||||||
if lev = 2 * level
|
|
||||||
then Result := 'Half ' + Result
|
|
||||||
else if lev * 2 = level
|
|
||||||
then Result := 'Double ' + Result
|
|
||||||
else begin
|
|
||||||
if lev > level then begin
|
|
||||||
lev := lev div 2;
|
|
||||||
Result := 'Leper ' + Result;
|
|
||||||
end;
|
|
||||||
qty := (level + (lev div 2)) div 2;
|
|
||||||
if qty < 1 then qty := 1;
|
|
||||||
level := level * qty;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if qty = 1 then begin
|
|
||||||
if Pos(Result[1], 'AEIOUaeiou') > 0
|
|
||||||
then Result := 'an ' + Result
|
|
||||||
else Result := 'a ' + Result;
|
|
||||||
end else begin
|
|
||||||
Result := IntToStr(qty) + ' ' + Plural(Result);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.Dequeue;
|
|
||||||
var
|
|
||||||
s, a: String;
|
|
||||||
n, l: Integer;
|
|
||||||
begin
|
|
||||||
while TaskDone do begin
|
|
||||||
if Split(fTask,0) = 'kill' then begin
|
|
||||||
if Split(fTask,3) <> '' then
|
|
||||||
Add(Inventory,Split(fTask,1) + ' ' + Split(fTask,3),1);
|
|
||||||
end else if fTask = 'sell' then with Inventory do begin
|
|
||||||
while Items.Count > 1 do begin
|
|
||||||
Tag := GetI(Inventory,Items.Count-1);
|
|
||||||
Items.Delete(Items.Count-1);
|
|
||||||
Add(Inventory,'Gold',Tag);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
fTask := '';
|
|
||||||
if (fQueue.Count > 0) then begin
|
|
||||||
a := Split(fQueue[0],0);
|
|
||||||
n := StrToInt(Split(fQueue[0],1));
|
|
||||||
s := Split(fQueue[0],2);
|
|
||||||
if a = 'task' then begin
|
|
||||||
Task(s, n * 1000);
|
|
||||||
fQueue.Delete(0);
|
|
||||||
end else begin
|
|
||||||
raise Exception.Create('bah!');
|
|
||||||
end;
|
|
||||||
end else with Encumbar do if Position >= Max then begin
|
|
||||||
Task('Heading to market to sell loot',4 * 1000);
|
|
||||||
fTask := 'sell';
|
|
||||||
end else begin
|
|
||||||
n := GetI(Traits,'Level');
|
|
||||||
l := n;
|
|
||||||
s := MonsterTask(n);
|
|
||||||
n := (2 * Form2.GameStyle.Position * n * 1000) div l;
|
|
||||||
Task('Executing ' + s, n);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function IndexOf(list: TListView; key: String): Integer;
|
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
begin
|
|
||||||
for i := 0 to list.Items.Count-1 do if list.Items.Item[i].Caption = key then begin
|
|
||||||
Result := i;
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
with list.Items.Add do begin
|
|
||||||
Result := Index;
|
|
||||||
Caption := key;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.Put(list: TListView; key, value: String);
|
|
||||||
begin
|
|
||||||
Put(list, IndexOf(list,key), value);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.Put(list: TListView; key: String; value: Integer);
|
|
||||||
begin
|
|
||||||
Put(list,key,IntToStr(value));
|
|
||||||
if key = 'CON' then
|
|
||||||
Encumbar.Max := value;
|
|
||||||
if list = Inventory then
|
|
||||||
Encumbar.Position := Sum(Inventory) - GetI(Inventory,'Gold');
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.Put(list: TListView; pos: Integer; value: String);
|
|
||||||
begin
|
|
||||||
with list.Items.Item[pos] do begin
|
|
||||||
if SubItems.Count < 1
|
|
||||||
then SubItems.Add(value)
|
|
||||||
else SubItems[0] := value;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.GoButtonClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
with ExpBar do begin
|
|
||||||
Position := 0;
|
|
||||||
Max := 20 * 60; // 20 minutes for level 1...
|
|
||||||
end;
|
|
||||||
|
|
||||||
Task('Loading...',1000);
|
|
||||||
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|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|1|Loading...');
|
|
||||||
|
|
||||||
PlotBar.Max := 27;
|
|
||||||
with Plots.Items.Add do begin
|
|
||||||
Caption := 'Prologue';
|
|
||||||
StateIndex := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Timer1.Enabled := True;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.WinSpell;
|
|
||||||
begin
|
|
||||||
Add(Spells,PickLow(fSpellList),1);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.WinEquip;
|
|
||||||
var
|
|
||||||
pos, qual, plus, attrib, attribmax: Integer;
|
|
||||||
name: String;
|
|
||||||
stuff, better: TStrings;
|
|
||||||
begin
|
|
||||||
qual := Max(Random(GetI(Traits,'Level')),Random(1+GetI(Traits,'Level')));
|
|
||||||
pos := Random(Equips.Items.Count);
|
|
||||||
case pos of
|
|
||||||
0: begin stuff := fWeapons; better := fOffenseAttrib; end;
|
|
||||||
1: begin stuff := fShields; better := fDefenseAttrib; end;
|
|
||||||
else begin stuff := fArmors; better := fDefenseAttrib; end;
|
|
||||||
end;
|
|
||||||
if qual > stuff.Count - 1 then
|
|
||||||
qual := stuff.Count - 1;
|
|
||||||
name := stuff[qual];
|
|
||||||
plus := GetI(Traits,'Level') - qual;
|
|
||||||
attribmax := Min(plus, better.Count);
|
|
||||||
while (plus > 0) and (attribmax >= 0) and Odds(1,2) do begin
|
|
||||||
attrib := Random(attribmax+1);
|
|
||||||
name := better[attrib] + ' ' + name;
|
|
||||||
Dec(plus, attrib);
|
|
||||||
attribmax := Max(plus, attrib - 1);
|
|
||||||
end;
|
|
||||||
if plus <> 0 then name := IntToStr(plus) + ' ' + name;
|
|
||||||
if plus > 0 then name := '+' + name;
|
|
||||||
|
|
||||||
Put(Equips, pos, name);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.WinStat;
|
|
||||||
begin
|
|
||||||
Add(Stats, Stats.Items[Random(Stats.Items.Count)].Caption, 1);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.WinItem;
|
|
||||||
begin
|
|
||||||
Add(Inventory, 'Special Item', 1);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.CompleteQuest;
|
|
||||||
var
|
|
||||||
lev, i: Integer;
|
|
||||||
begin
|
|
||||||
with QuestBar do begin
|
|
||||||
Position := 0;
|
|
||||||
Max := 50 + Random(100);
|
|
||||||
end;
|
|
||||||
with Quests do begin
|
|
||||||
if Items.Count > 0 then begin
|
|
||||||
Items[Items.Count-1].StateIndex := 1;
|
|
||||||
case Random(4) of
|
|
||||||
0: WinSpell;
|
|
||||||
1: WinEquip;
|
|
||||||
2: WinStat;
|
|
||||||
3: WinItem;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
lev := GetI(Traits,'Level');
|
|
||||||
for i := lev downto 1 do
|
|
||||||
if Odds(1,3) then
|
|
||||||
Inc(lev,RandSign());
|
|
||||||
if lev > MonsterMax then lev := MonsterMax - Random(2);
|
|
||||||
if lev < 1 then lev := 1;
|
|
||||||
with Items.Add do begin
|
|
||||||
fQuest := Pick(fMonsters[lev]);
|
|
||||||
Caption := 'Exterminate ' + Plural(Split(fQuest,0));
|
|
||||||
StateIndex := 0;
|
|
||||||
MakeVisible(false);
|
|
||||||
end;
|
|
||||||
Width := Width - 1; // trigger a column resize
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function Rome(var n: Integer; dn: Integer; var s: String; ds: String): Boolean;
|
|
||||||
begin
|
|
||||||
Result := (n >= dn);
|
|
||||||
if Result then begin
|
|
||||||
n := n - dn;
|
|
||||||
s := s + ds;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function IntToRoman(n: Integer): String;
|
|
||||||
begin
|
|
||||||
while Rome(n, 1000, Result, 'M') do ;
|
|
||||||
Rome(n, 900, Result, 'CM');
|
|
||||||
Rome(n, 500, Result, 'D');
|
|
||||||
Rome(n, 400, Result, 'CD');
|
|
||||||
while Rome(n, 100, Result, 'C') do ;
|
|
||||||
Rome(n, 90, Result, 'XC');
|
|
||||||
Rome(n, 50, Result, 'L');
|
|
||||||
Rome(n, 40, Result, 'XL');
|
|
||||||
while Rome(n, 10, Result, 'X') do ;
|
|
||||||
Rome(n, 9, Result, 'IX');
|
|
||||||
Rome(n, 5, Result, 'V');
|
|
||||||
Rome(n, 4, Result, 'IV');
|
|
||||||
while Rome(n, 1, Result, 'I') do ;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.CompleteAct;
|
|
||||||
begin
|
|
||||||
PlotBar.Position := 0;
|
|
||||||
with Plots do begin
|
|
||||||
Items[Items.Count-1].StateIndex := 1;
|
|
||||||
PlotBar.Max := 60 * 60 * (10 + 5 * Items.Count); // 10 hrs + 5/act
|
|
||||||
Items.Add.Caption := 'Act ' + IntToRoman(Items.Count);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.Task(caption: String; msec: Integer);
|
|
||||||
begin
|
|
||||||
Kill.SimpleText := caption + '...';
|
|
||||||
with KillBar do begin
|
|
||||||
Position := 0;
|
|
||||||
Max := msec;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.Add(list: TListView; key: String; value: Integer);
|
|
||||||
begin
|
|
||||||
Put(list, key, value + GetI(list,key));
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TForm1.Get(list: TListView; key: String): String;
|
|
||||||
begin
|
|
||||||
Result := Get(list, IndexOf(list,key));
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TForm1.Get(list: TListView; index: Integer): String;
|
|
||||||
begin
|
|
||||||
with list.Items.Item[index] do begin
|
|
||||||
if SubItems.Count < 1
|
|
||||||
then Result := ''
|
|
||||||
else Result := SubItems[0];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TForm1.GetI(list: TListView; key: String): Integer;
|
|
||||||
begin
|
|
||||||
Result := StrToIntDef(Get(list,key),0);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TForm1.GetI(list: TListView; index: Integer): Integer;
|
|
||||||
begin
|
|
||||||
Result := StrToIntDef(Get(list,index),0);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TForm1.Sum(list: TListView): Integer;
|
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
begin
|
|
||||||
Result := 0;
|
|
||||||
for i := 0 to list.Items.Count - 1 do
|
|
||||||
Inc(Result, GetI(list,i));
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure PutLast(list: TListView; value: String);
|
|
||||||
begin
|
|
||||||
if list.Items.Count > 0 then
|
|
||||||
with list.Items.Item[list.Items.Count-1] do begin
|
|
||||||
if SubItems.Count < 1
|
|
||||||
then SubItems.Add(value)
|
|
||||||
else SubItems[0] := value;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.Timer1Timer(Sender: TObject);
|
|
||||||
begin
|
|
||||||
with KillBar do begin
|
|
||||||
if Position >= Max then begin
|
|
||||||
if Kill.SimpleText = 'Loading...' then Max := 0;
|
|
||||||
|
|
||||||
with ExpBar do if Position >= Max then begin
|
|
||||||
Position := 0;
|
|
||||||
Max := (Max * 3) div 2;
|
|
||||||
Add(Traits,'Level',1);
|
|
||||||
end else
|
|
||||||
Position := Position + KillBar.Max div 1000;
|
|
||||||
|
|
||||||
if Plots.Items.Count > 1 then
|
|
||||||
with QuestBar do if Position >= Max then begin
|
|
||||||
CompleteQuest;
|
|
||||||
end else if Quests.Items.Count > 0 then
|
|
||||||
Position := Position + KillBar.Max div 1000;
|
|
||||||
|
|
||||||
with PlotBar do if Position >= Max
|
|
||||||
then CompleteAct
|
|
||||||
else Position := Position + KillBar.Max div 1000;
|
|
||||||
|
|
||||||
Dequeue();
|
|
||||||
end else with KillBar do
|
|
||||||
Position := Position + Integer(Timer1.Interval);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.M(level: Integer; name, spoor: String);
|
|
||||||
begin
|
|
||||||
fMonsters[level].Add(name + '|' + IntToStr(level) + '|' + spoor);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.S(name: String);
|
|
||||||
begin
|
|
||||||
fSpellList.Add(name);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.Aa(var list: TStrings; item: String);
|
|
||||||
begin
|
|
||||||
if list = nil then
|
|
||||||
list := TStringList.Create;
|
|
||||||
list.Add(item);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.FormCreate(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
begin
|
|
||||||
QuestBar.Position := 0;
|
|
||||||
PlotBar.Position := 0;
|
|
||||||
KillBar.Position := 0;
|
|
||||||
ExpBar.Position := 0;
|
|
||||||
Encumbar.Position := 0;
|
|
||||||
fSpellList := TStringList.Create;
|
|
||||||
for i := 1 to MonsterMax do
|
|
||||||
fMonsters[i] := TStringList.Create;
|
|
||||||
M(1,'Wasp','Stinger');
|
|
||||||
M(1,'Rat','Whiskers');
|
|
||||||
M(1,'Bunny','Ear');
|
|
||||||
M(1,'Moth','Dust');
|
|
||||||
M(1,'Beagle','Collar');
|
|
||||||
M(1,'Midge','');
|
|
||||||
M(2,'Ostrich','Beak');
|
|
||||||
M(2,'Billy Goat','Beard');
|
|
||||||
M(2,'Bat','Wing');
|
|
||||||
M(2,'Koala','Heart');
|
|
||||||
M(3,'Wolf','Paw');
|
|
||||||
M(3,'Gnome','Skull');
|
|
||||||
M(3,'Kobold','Penis');
|
|
||||||
M(3,'Whippet','Collar');
|
|
||||||
M(4,'Orc','Shoe');
|
|
||||||
M(5,'Uruk','Boot');
|
|
||||||
M(6,'Tiger','Stripe');
|
|
||||||
M(7,'Lich','Mascara');
|
|
||||||
M(8,'Mummy','Chapeu');
|
|
||||||
M(9,'Vampire','Pancreas');
|
|
||||||
M(10,'Slime','Slime');
|
|
||||||
M(11,'Giant','Pants');
|
|
||||||
M(12,'Bugbear','Fang');
|
|
||||||
M(13,'Owlbear','Tuft');
|
|
||||||
M(14,'Basilisk','Gallstone');
|
|
||||||
M(15,'Cockatrice','Cock');
|
|
||||||
M(16,'Dragon','Scale');
|
|
||||||
|
|
||||||
S('Slime Finger');
|
|
||||||
S('Rabbit Punch');
|
|
||||||
S('Hastiness');
|
|
||||||
S('Good Mood');
|
|
||||||
S('Sadness');
|
|
||||||
S('Seasick');
|
|
||||||
S('Magnetic Orb');
|
|
||||||
S('Invisible Hands');
|
|
||||||
S('Revolting Cloud');
|
|
||||||
S('Aqueous Humor');
|
|
||||||
S('Spectral Miasma');
|
|
||||||
S('Zymarx''s Wild Illusion');
|
|
||||||
S('Clever Fellow I');
|
|
||||||
S('Clever Fellow II');
|
|
||||||
S('Nestor''s Sweeping Concept');
|
|
||||||
S('Holy Batpole');
|
|
||||||
S('Braingate');
|
|
||||||
S('Eye of the Troglodyte');
|
|
||||||
S('Curse Name');
|
|
||||||
S('Vitreous Humor');
|
|
||||||
S('Roger''s Grand Illusion');
|
|
||||||
S('Clomdor''s Plastic Window');
|
|
||||||
S('Covet');
|
|
||||||
S('Astral Miasma');
|
|
||||||
S('Spectral Clamshell');
|
|
||||||
S('Acrid Hands');
|
|
||||||
S('Animate Tunic');
|
|
||||||
S('Ursine Armor');
|
|
||||||
S('Holy Roller');
|
|
||||||
S('Curse Family');
|
|
||||||
S('Infinite Confusion');
|
|
||||||
|
|
||||||
Aa(fShields, 'Pie Plate');
|
|
||||||
Aa(fShields, 'Buckler');
|
|
||||||
Aa(fShields, 'Tower Shield');
|
|
||||||
|
|
||||||
Aa(fArmors, 'Lace');
|
|
||||||
Aa(fArmors, 'Macrame');
|
|
||||||
Aa(fArmors, 'Burlap');
|
|
||||||
Aa(fArmors, 'Canvas');
|
|
||||||
Aa(fArmors, 'Flannel');
|
|
||||||
Aa(fArmors, 'Chamois');
|
|
||||||
Aa(fArmors, 'Pleathers');
|
|
||||||
Aa(fArmors, 'Leathers');
|
|
||||||
Aa(fArmors, 'Chainmail');
|
|
||||||
Aa(fArmors, 'Platemail');
|
|
||||||
|
|
||||||
Aa(fWeapons, 'Stick');
|
|
||||||
Aa(fWeapons, 'Broken Bottle');
|
|
||||||
Aa(fWeapons, 'Shiv');
|
|
||||||
Aa(fWeapons, 'Bowie Knife');
|
|
||||||
Aa(fWeapons, 'Claw Hammer');
|
|
||||||
Aa(fWeapons, 'Andiron');
|
|
||||||
Aa(fWeapons, 'Hatchet');
|
|
||||||
Aa(fWeapons, 'Crowbar');
|
|
||||||
Aa(fWeapons, 'Longiron');
|
|
||||||
Aa(fWeapons, 'Zip Gun');
|
|
||||||
Aa(fWeapons, 'Broadsword');
|
|
||||||
Aa(fWeapons, 'Longsword');
|
|
||||||
Aa(fWeapons, 'Poleax');
|
|
||||||
Aa(fWeapons, 'Bandyclef');
|
|
||||||
|
|
||||||
Aa(fDefenseAttrib, 'Studded');
|
|
||||||
Aa(fDefenseAttrib, 'Banded');
|
|
||||||
Aa(fDefenseAttrib, 'Gilded');
|
|
||||||
Aa(fDefenseAttrib, 'Festooned');
|
|
||||||
Aa(fDefenseAttrib, 'Holy');
|
|
||||||
Aa(fDefenseAttrib, 'Cambric');
|
|
||||||
Aa(fDefenseAttrib, 'Fine');
|
|
||||||
Aa(fDefenseAttrib, 'Impressive');
|
|
||||||
|
|
||||||
Aa(fOffenseAttrib, 'Polished');
|
|
||||||
Aa(fOffenseAttrib, 'Pronged');
|
|
||||||
Aa(fOffenseAttrib, 'Steely');
|
|
||||||
Aa(fOffenseAttrib, 'Bloodied');
|
|
||||||
Aa(fOffenseAttrib, 'Dancing');
|
|
||||||
Aa(fOffenseAttrib, 'Invisible');
|
|
||||||
Aa(fOffenseAttrib, 'Vorpal');
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.SpeedButton1Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
KillBar.Position := KillBar.Max;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.RollCharacter;
|
|
||||||
begin
|
|
||||||
if mrOk = Form2.ShowModal then ;
|
|
||||||
with Form2 do begin
|
|
||||||
Put(Traits,'Name',Name.Text);
|
|
||||||
Put(Traits,'Race',Race.Items[Race.ItemIndex]);
|
|
||||||
Put(Traits,'Class',Klass.Items[Klass.ItemIndex]);
|
|
||||||
Put(Traits,'Level',1);
|
|
||||||
Put(Stats,'STR',STR.Tag);
|
|
||||||
Put(Stats,'CON',CON.Tag);
|
|
||||||
Put(Stats,'DEX',DEX.Tag);
|
|
||||||
Put(Stats,'INT',INT.Tag);
|
|
||||||
Put(Stats,'WIS',WIS.Tag);
|
|
||||||
Put(Stats,'CHA',CHA.Tag);
|
|
||||||
Put(Stats,'HP Max',Random(8) + CON.Tag div 6);
|
|
||||||
Put(Stats,'MP Max',Random(8) + INT.Tag div 6);
|
|
||||||
Put(Equips,'Weapon','Sharp Stick');
|
|
||||||
Put(Inventory,'Gold',0);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.FormShow(Sender: TObject);
|
|
||||||
begin
|
|
||||||
RollCharacter;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TForm1.Button1Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Add(Traits,'Level',1);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
Binary file not shown.
Binary file not shown.
-1781
File diff suppressed because it is too large
Load Diff
@@ -1,40 +0,0 @@
|
|||||||
unit Unit3;
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
||||||
Dialogs, StdCtrls, ExtCtrls;
|
|
||||||
|
|
||||||
type
|
|
||||||
TForm3 = class(TForm)
|
|
||||||
Panel1: TPanel;
|
|
||||||
Image1: TImage;
|
|
||||||
Button1: TButton;
|
|
||||||
Button2: TButton;
|
|
||||||
Button3: TButton;
|
|
||||||
Label1: TLabel;
|
|
||||||
OpenDialog1: TOpenDialog;
|
|
||||||
Button4: TButton;
|
|
||||||
procedure Button3Click(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ Private declarations }
|
|
||||||
public
|
|
||||||
{ Public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
Form3: TForm3;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses ShellAPI, Main;
|
|
||||||
|
|
||||||
{$R *.dfm}
|
|
||||||
|
|
||||||
procedure TForm3.Button3Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ShellExecute(Form1.Handle, 0, PChar('res://' + Application.ExeName + '/6'), 0, 0, SW_SHOWNORMAL);
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
@@ -1,25 +0,0 @@
|
|||||||
<?
|
|
||||||
if (isset($message)) {
|
|
||||||
mail("lesterbarion@yahoo.com",
|
|
||||||
"Ask!",
|
|
||||||
$message,
|
|
||||||
"From: asked@bigretard.com") or die("bad");
|
|
||||||
header("Location: ask.php?sent=1");
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<html>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<? if ($sent): ?>
|
|
||||||
Your message was sent, it seems.
|
|
||||||
<? endif; ?>
|
|
||||||
|
|
||||||
<form>
|
|
||||||
Q: <textarea name=message rows=5 cols=60></textarea>
|
|
||||||
<p>
|
|
||||||
<input type=submit value=Send>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,35 +0,0 @@
|
|||||||
-$A8
|
|
||||||
-$B-
|
|
||||||
-$C+
|
|
||||||
-$D+
|
|
||||||
-$E-
|
|
||||||
-$F-
|
|
||||||
-$G+
|
|
||||||
-$H+
|
|
||||||
-$I+
|
|
||||||
-$J-
|
|
||||||
-$K-
|
|
||||||
-$L+
|
|
||||||
-$M-
|
|
||||||
-$N+
|
|
||||||
-$O+
|
|
||||||
-$P+
|
|
||||||
-$Q-
|
|
||||||
-$R-
|
|
||||||
-$S-
|
|
||||||
-$T-
|
|
||||||
-$U-
|
|
||||||
-$V+
|
|
||||||
-$W-
|
|
||||||
-$X+
|
|
||||||
-$YD
|
|
||||||
-$Z1
|
|
||||||
-cg
|
|
||||||
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
|
||||||
-H+
|
|
||||||
-W+
|
|
||||||
-M
|
|
||||||
-$M16384,1048576
|
|
||||||
-K$00400000
|
|
||||||
-LE"c:\appl\delphi6\Projects\Bpl"
|
|
||||||
-LN"c:\appl\delphi6\Projects\Bpl"
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
[FileVersion]
|
|
||||||
Version=6.0
|
|
||||||
[Compiler]
|
|
||||||
A=8
|
|
||||||
B=0
|
|
||||||
C=1
|
|
||||||
D=1
|
|
||||||
E=0
|
|
||||||
F=0
|
|
||||||
G=1
|
|
||||||
H=1
|
|
||||||
I=1
|
|
||||||
J=0
|
|
||||||
K=0
|
|
||||||
L=1
|
|
||||||
M=0
|
|
||||||
N=1
|
|
||||||
O=1
|
|
||||||
P=1
|
|
||||||
Q=0
|
|
||||||
R=0
|
|
||||||
S=0
|
|
||||||
T=0
|
|
||||||
U=0
|
|
||||||
V=1
|
|
||||||
W=0
|
|
||||||
X=1
|
|
||||||
Y=1
|
|
||||||
Z=1
|
|
||||||
ShowHints=1
|
|
||||||
ShowWarnings=1
|
|
||||||
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
|
|
||||||
[Linker]
|
|
||||||
MapFile=0
|
|
||||||
OutputObjs=0
|
|
||||||
ConsoleApp=1
|
|
||||||
DebugInfo=0
|
|
||||||
RemoteSymbols=0
|
|
||||||
MinStackSize=16384
|
|
||||||
MaxStackSize=1048576
|
|
||||||
ImageBase=4194304
|
|
||||||
ExeDescription=
|
|
||||||
[Directories]
|
|
||||||
OutputDir=
|
|
||||||
UnitOutputDir=
|
|
||||||
PackageDLLOutputDir=
|
|
||||||
PackageDCPOutputDir=
|
|
||||||
SearchPath=
|
|
||||||
Packages=vcl;rtl;vclx;VclSmp;vclshlctrls;dbrtl;adortl;vcldb;qrpt;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;teeqr;ibxpress;visualclx;visualdbclx;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;dbexpress;dbxcds;indy;dclOffice2k
|
|
||||||
Conditionals=
|
|
||||||
DebugSourceDirs=
|
|
||||||
UsePackages=0
|
|
||||||
[Parameters]
|
|
||||||
RunParams=
|
|
||||||
HostApplication=
|
|
||||||
Launcher=
|
|
||||||
UseLauncher=0
|
|
||||||
DebugCWD=
|
|
||||||
[Language]
|
|
||||||
ActiveLang=
|
|
||||||
ProjectLang=
|
|
||||||
RootDir=
|
|
||||||
[Version Info]
|
|
||||||
IncludeVerInfo=0
|
|
||||||
AutoIncBuild=0
|
|
||||||
MajorVer=1
|
|
||||||
MinorVer=0
|
|
||||||
Release=0
|
|
||||||
Build=0
|
|
||||||
Debug=0
|
|
||||||
PreRelease=0
|
|
||||||
Special=0
|
|
||||||
Private=0
|
|
||||||
DLL=0
|
|
||||||
Locale=1033
|
|
||||||
CodePage=1252
|
|
||||||
[Version Info Keys]
|
|
||||||
CompanyName=
|
|
||||||
FileDescription=
|
|
||||||
FileVersion=1.0.0.0
|
|
||||||
InternalName=
|
|
||||||
LegalCopyright=
|
|
||||||
LegalTrademarks=
|
|
||||||
OriginalFilename=
|
|
||||||
ProductName=
|
|
||||||
ProductVersion=1.0.0.0
|
|
||||||
Comments=
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
program pq6;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uses
|
|
||||||
Forms,
|
|
||||||
Classes,
|
|
||||||
Main in 'Main.pas' {Form1},
|
|
||||||
NewGuy in 'NewGuy.pas' {Form2},
|
|
||||||
Config in 'Config.pas' {K},
|
|
||||||
Front in 'Front.pas' {Form3};
|
|
||||||
|
|
||||||
{$R *.res}
|
|
||||||
|
|
||||||
begin
|
|
||||||
Application.Initialize;
|
|
||||||
Application.Title := 'Progress Quest VI';
|
|
||||||
if ParamCount > 0 then begin
|
|
||||||
Form1.LoadGame(ParamStr(1));
|
|
||||||
end else begin
|
|
||||||
Application.CreateForm(TForm1, Form1);
|
|
||||||
Application.CreateForm(TForm2, Form2);
|
|
||||||
Application.CreateForm(TForm3, Form3);
|
|
||||||
end;
|
|
||||||
Application.CreateForm(TK, K);
|
|
||||||
Application.Run;
|
|
||||||
end.
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 9.1 KiB |
@@ -1,20 +0,0 @@
|
|||||||
<html>
|
|
||||||
<body bgcolor=#ffffff>
|
|
||||||
<center>
|
|
||||||
<img src=pq.gif>
|
|
||||||
<font color=#404000>
|
|
||||||
<br>
|
|
||||||
<i>quamvis progressio</i>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<table border=0 width=100%><tr>
|
|
||||||
<td width=33% align=center>
|
|
||||||
<a href=pq6help.html>Information</a>
|
|
||||||
<td width=33% align=center>
|
|
||||||
<a href=pq6.zip>Download</a>
|
|
||||||
<td width=33% align=center>
|
|
||||||
<a href=mailto:efredricksen@yahoo.com>Comment</a>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
</center>
|
|
||||||
<p>
|
|
||||||
Binary file not shown.
-140
@@ -1,140 +0,0 @@
|
|||||||
<?
|
|
||||||
mysql_connect('localhost','eric','placenta') or die("Unable to connect");
|
|
||||||
mysql_select_db("eric")
|
|
||||||
or die("Unable to select db");
|
|
||||||
mysql_query("
|
|
||||||
CREATE TABLE IF NOT EXISTS pq6hi (
|
|
||||||
name char(30) NOT NULL,
|
|
||||||
passkey int(11) NOT NULL,
|
|
||||||
race char(30) default NULL,
|
|
||||||
class char(30) default NULL,
|
|
||||||
level int(11) default NULL,
|
|
||||||
plot char(30) default NULL,
|
|
||||||
item char(50) default NULL,
|
|
||||||
spell char(30) default NULL,
|
|
||||||
stat char(10) default NULL,
|
|
||||||
motto char(50) default NULL,
|
|
||||||
stamp timestamp default NULL )
|
|
||||||
")
|
|
||||||
or die(mysql_error());
|
|
||||||
|
|
||||||
if ($cmd == 'blah') {
|
|
||||||
//$result = mysql_query("UPDATE pq6hi SET plot='Backward ass', item='Nothing', spell='Nada'") or die(mysql_error());
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
if ($cmd == 'create') {
|
|
||||||
header('content-type: text/plain');
|
|
||||||
srand((double)microtime()*1000000);
|
|
||||||
$passkey = rand();
|
|
||||||
$name = mysql_escape_string($name);
|
|
||||||
$result = mysql_query("SELECT * FROM pq6hi WHERE name='$name' and level >= 1") or die(mysql_error());
|
|
||||||
if (mysql_num_rows($result) > 0) {
|
|
||||||
echo("taken|The character name you have selected is not available. Please choose a different name.");
|
|
||||||
} else {
|
|
||||||
mysql_query("DELETE FROM pq6hi WHERE name='$name'") or die(mysql_error());
|
|
||||||
mysql_query("INSERT INTO pq6hi(name,passkey) VALUES ('$name',$passkey)") or die(mysql_error());
|
|
||||||
echo("ok|$passkey");
|
|
||||||
}
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
else if ($cmd == 'brag') {
|
|
||||||
$name = mysql_escape_string($name);
|
|
||||||
$class = mysql_escape_string($class);
|
|
||||||
$race = mysql_escape_string($race);
|
|
||||||
$level = intval($level);
|
|
||||||
$plot = mysql_escape_string($plot);
|
|
||||||
$item = mysql_escape_string($item);
|
|
||||||
$spell = mysql_escape_string($spell);
|
|
||||||
$stat = mysql_escape_string($stat);
|
|
||||||
$motto = mysql_escape_string($motto);
|
|
||||||
$result = mysql_query("SELECT passkey FROM pq6hi WHERE name='$name'") or die(mysql_error());
|
|
||||||
$key = mysql_result($result,0,0);
|
|
||||||
if ($passkey == (~$level * 9831) ^ $key) {
|
|
||||||
mysql_query("UPDATE pq6hi SET class='$class', race='$race', level='$level', item='$item', spell='$spell', stat='$stat', plot='$plot', motto='$motto' WHERE name='$name'");
|
|
||||||
echo("ok");
|
|
||||||
} else {
|
|
||||||
echo("forbidden");
|
|
||||||
}
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
else if (isset($query) && $passwd == 'livers') {
|
|
||||||
$query = stripslashes($query);
|
|
||||||
$query2 = htmlspecialchars($query);
|
|
||||||
echo("<h3>$query2</h3>");
|
|
||||||
$result = mysql_query($query) or die(mysql_error());
|
|
||||||
print "<table>\n";
|
|
||||||
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
|
|
||||||
print "\t<tr>\n";
|
|
||||||
foreach ($line as $col_value) {
|
|
||||||
print "\t\t<td>$col_value</td>\n";
|
|
||||||
}
|
|
||||||
print "\t</tr>\n";
|
|
||||||
}
|
|
||||||
print "</table>\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($cmd)) {
|
|
||||||
echo("'$cmd'?");
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = mysql_query('SELECT name,race,class,level,plot,item,spell,stat,motto FROM pq6hi WHERE level >= 1 ORDER BY -level LIMIT 100');
|
|
||||||
?>
|
|
||||||
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Progress Quest Hall of Fame</title>
|
|
||||||
<script>
|
|
||||||
function okp(){
|
|
||||||
if(event.ctrlKey && event.keyCode == 13)
|
|
||||||
alert('From within the *game*, Einstein.');
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body bgcolor=#ffffff onKeyPress="okp()">
|
|
||||||
<center>
|
|
||||||
<img src=pq.gif>
|
|
||||||
<font color=#404000>
|
|
||||||
<br>
|
|
||||||
<i>quamvis progressio</i>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<h1>Hall of Fame</h1>
|
|
||||||
<style>
|
|
||||||
th { padding: 3px; border-style: solid; background-color: #ddddff; color: black; font: 8pt verdana; text-align: left; }
|
|
||||||
td { padding: 3px; border-style: solid; color: black; font: 8pt verdana; }
|
|
||||||
</style>
|
|
||||||
<table border=1>
|
|
||||||
|
|
||||||
<?
|
|
||||||
if ($admin == 'chickens') {
|
|
||||||
echo("<form><input type=text name=query size=80><input type=hidden name=passwd value=livers><input type=submit value=SQL></form>");
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
<tr><th align=right>Rank<th>Name<th>Race<th>Class<th align=right>Level<th>Prime Stat<th>Plot Stage<th>Most Prized Item<th>Specialty<th>Motto (Ctrl-M)</tr>
|
|
||||||
<?
|
|
||||||
$n = 1;
|
|
||||||
while ($row = mysql_fetch_row ($result)) {
|
|
||||||
$name = htmlspecialchars($row[0]);
|
|
||||||
$race = htmlspecialchars($row[1]);
|
|
||||||
$class = htmlspecialchars($row[2]);
|
|
||||||
$level = $row[3];
|
|
||||||
$plot = htmlspecialchars($row[4]);
|
|
||||||
$item = htmlspecialchars($row[5]);
|
|
||||||
$spell = htmlspecialchars($row[6]);
|
|
||||||
$stat = htmlspecialchars($row[7]);
|
|
||||||
$motto = htmlspecialchars($row[8]);
|
|
||||||
echo("<tr><td align=right>$n.<td>$name<td>$race<td>$class<td align=right>$level<td>$stat<td>$plot<td>$item<td>$spell<td>$motto</tr>");
|
|
||||||
$n = $n + 1;
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
<?
|
|
||||||
//mysql_close($db);
|
|
||||||
?>
|
|
||||||
|
|
||||||
<p align=left>
|
|
||||||
<a href=/pq6.html>← Regress</a>
|
|
||||||
</body></html>
|
|
||||||
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 262 B |
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,20 @@
|
|||||||
|
Progress Quest
|
||||||
|
Copyright (c) 2002 Eric Fredricksen
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -27,19 +27,19 @@ exhibit a discreet
|
|||||||
and seemingly inexplicable interest in the boy. Strange indeed, as he would not reach
|
and seemingly inexplicable interest in the boy. Strange indeed, as he would not reach
|
||||||
his krouchensterm for another harvest or more.
|
his krouchensterm for another harvest or more.
|
||||||
And when Grumdrig's resiliant compatriot Paedri
|
And when Grumdrig's resiliant compatriot Paedri
|
||||||
appears at Drumdrig's lochnotat with a Scrolstamp from the old Speldrig,
|
appears at Grumdrig's lochnotat with a Scrolstamp from the old Speldrig,
|
||||||
a woozy foreboding feeling rises from his young gut...
|
a woozy foreboding feeling rises from his young gut...
|
||||||
|
|
||||||
<h3> Introduction </h3>
|
<h3> Introduction </h3>
|
||||||
|
|
||||||
<b>Progress Quest</b> is next generation computer role-playing game.
|
<b>Progress Quest</b> is a next generation computer role-playing game.
|
||||||
Gamers who have played modern online role-playing games,
|
Gamers who have played modern online role-playing games,
|
||||||
or almost any computer role-playing game,
|
or almost any computer role-playing game,
|
||||||
or who have at any time installed or upgraded their operating system, will find themselves
|
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.
|
incredibly comfortable with <b>Progress Quest</b>'s very familiar gameplay.
|
||||||
<b>Progress Quest</b> follows reverently in the footsteps of recent smash hit
|
<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
|
online worlds, but is careful to streamline the more tedious aspects of those
|
||||||
offerings. Players will still have the satisfaction of building thier character
|
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,
|
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
|
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
|
without need of so much as a lunch break. Yet, gone are the tedious micromanagement
|
||||||
@@ -47,9 +47,12 @@ and other frustrations common to that older generation of RPG's.
|
|||||||
|
|
||||||
<h3> User manual </h3>
|
<h3> User manual </h3>
|
||||||
|
|
||||||
Even inexpereinced gamers will find <b>Progress Quest</b>
|
Even inexperienced gamers will find <b>Progress Quest</b>
|
||||||
remarkably intutive and simple to play. Start the program
|
remarkably intutive and simple to play. Start the program
|
||||||
and click the <code>New Game</code> button. You will presented with the character creation screen.
|
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
|
Select a name, race and class for the new character. Then, use the <code>Roll</code> button
|
||||||
until you are statisfied with the stats
|
until you are statisfied with the stats
|
||||||
@@ -57,12 +60,13 @@ for your character. <i>Tip: You can use the <code>Unroll</code> button (a featur
|
|||||||
to go back to any previous roll if you find that you've
|
to go back to any previous roll if you find that you've
|
||||||
clicked too hastily.</i>
|
clicked too hastily.</i>
|
||||||
<p>
|
<p>
|
||||||
If "Play online" is checked, your character will share adventures with other <b>Progress
|
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 is reccommended only for
|
Quest</b> characters in an online virtual world. Online play requires
|
||||||
users with always-on internet connectivity, though sophisiticated algorithms
|
internet connectivity, though sophisiticated algorithms
|
||||||
keep the bandwidth usage to a minimum. You can compare your character against
|
keep the bandwidth usage to a minimum. You can compare your character against
|
||||||
the top <b>Progress Quest</b> players by visiting
|
the top <b>Progress Quest</b> players by visiting
|
||||||
<a href=http://progressquest.com/hi.php>http://progressquest.com/hi.php</a>.
|
<a href=http://progressquest.com/realms.php>http://progressquest.com/realms.php</a>
|
||||||
|
(or hit <Ctrl>-<B> from within the game).
|
||||||
<p>
|
<p>
|
||||||
Finally, hit the <code>Sold!</code> button to begin the game. The game will start immediately and
|
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
|
you can safely familiarize yourself with the game's single interface screen as the game progresses
|
||||||
@@ -75,15 +79,17 @@ your character with an endless series of victims, as well as exciting quests whi
|
|||||||
log full to the brim at all times.
|
log full to the brim at all times.
|
||||||
<p>
|
<p>
|
||||||
TREASURE: Each slain creature yields a trophy, which can be sold in any town.
|
TREASURE: Each slain creature yields a trophy, which can be sold in any town.
|
||||||
When the encumberance bar reaches maximum, your character automatically returns to the nearest 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).
|
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.
|
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 encumberance bar fills up
|
<i>Tip: The amount your character can carry before his encumbrance bar fills up
|
||||||
increases as his STR stat improves.</i>
|
increases as his STR stat improves.</i>
|
||||||
<p>
|
<p>
|
||||||
QUESTS: When a quest is complete, your character is rewarded with one of: a) a special, valuable, treasure item,
|
QUESTS: When a quest is complete, your character is rewarded with one of:
|
||||||
b) an improved weapon
|
a) a special, valuable, treasure item,
|
||||||
or piece of armor, c) a boost in stats, or d) a new spell for his spellbook. The character is then assigned
|
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.
|
a follow-up quest, which he immediately begins to make progress on.
|
||||||
<p>
|
<p>
|
||||||
EXPERIENCE AND LEVELING UP: Experience represents your character's knowledge about the world
|
EXPERIENCE AND LEVELING UP: Experience represents your character's knowledge about the world
|
||||||
@@ -99,7 +105,8 @@ accumulated for each successful murder.
|
|||||||
<p>
|
<p>
|
||||||
SAVING YOUR PROGRESS: Your game is saved whenever you quit, as well as each time your character levels
|
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>
|
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.
|
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>
|
<h3> Game controls </h3>
|
||||||
|
|
||||||
Binary file not shown.
@@ -0,0 +1,802 @@
|
|||||||
|
object K: TK
|
||||||
|
Left = 335
|
||||||
|
Top = 119
|
||||||
|
Width = 572
|
||||||
|
Height = 567
|
||||||
|
Caption = 'K'
|
||||||
|
Color = clBtnFace
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = []
|
||||||
|
OldCreateOrder = False
|
||||||
|
PixelsPerInch = 96
|
||||||
|
TextHeight = 13
|
||||||
|
object Label1: TLabel
|
||||||
|
Left = 8
|
||||||
|
Top = 116
|
||||||
|
Width = 28
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Spells'
|
||||||
|
end
|
||||||
|
object Label2: TLabel
|
||||||
|
Left = 168
|
||||||
|
Top = 4
|
||||||
|
Width = 64
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Offense Attrib'
|
||||||
|
end
|
||||||
|
object Label3: TLabel
|
||||||
|
Left = 280
|
||||||
|
Top = 228
|
||||||
|
Width = 70
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Defense Atrtrib'
|
||||||
|
end
|
||||||
|
object Label4: TLabel
|
||||||
|
Left = 140
|
||||||
|
Top = 228
|
||||||
|
Width = 34
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Shields'
|
||||||
|
end
|
||||||
|
object Label5: TLabel
|
||||||
|
Left = 8
|
||||||
|
Top = 228
|
||||||
|
Width = 27
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Armor'
|
||||||
|
end
|
||||||
|
object Label6: TLabel
|
||||||
|
Left = 8
|
||||||
|
Top = 4
|
||||||
|
Width = 41
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Weapon'
|
||||||
|
end
|
||||||
|
object Label7: TLabel
|
||||||
|
Left = 164
|
||||||
|
Top = 428
|
||||||
|
Width = 40
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Speicals'
|
||||||
|
end
|
||||||
|
object Label8: TLabel
|
||||||
|
Left = 8
|
||||||
|
Top = 428
|
||||||
|
Width = 47
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Item Attrib'
|
||||||
|
end
|
||||||
|
object Label9: TLabel
|
||||||
|
Left = 320
|
||||||
|
Top = 428
|
||||||
|
Width = 34
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Item Of'
|
||||||
|
end
|
||||||
|
object Label10: TLabel
|
||||||
|
Left = 172
|
||||||
|
Top = 116
|
||||||
|
Width = 58
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Boring Items'
|
||||||
|
end
|
||||||
|
object Label11: TLabel
|
||||||
|
Left = 12
|
||||||
|
Top = 344
|
||||||
|
Width = 125
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Monsters (name level item)'
|
||||||
|
end
|
||||||
|
object Label12: TLabel
|
||||||
|
Left = 236
|
||||||
|
Top = 344
|
||||||
|
Width = 162
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Monster mods (adjustment pattern)'
|
||||||
|
end
|
||||||
|
object Label13: TLabel
|
||||||
|
Left = 324
|
||||||
|
Top = 8
|
||||||
|
Width = 56
|
||||||
|
Height = 13
|
||||||
|
Caption = 'OffenseBad'
|
||||||
|
end
|
||||||
|
object Label14: TLabel
|
||||||
|
Left = 404
|
||||||
|
Top = 232
|
||||||
|
Width = 59
|
||||||
|
Height = 13
|
||||||
|
Caption = 'DefenseBad'
|
||||||
|
end
|
||||||
|
object Spells: TMemo
|
||||||
|
Left = 8
|
||||||
|
Top = 132
|
||||||
|
Width = 153
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Slime Finger'
|
||||||
|
'Rabbit Punch'
|
||||||
|
'Hastiness'
|
||||||
|
'Good Move'
|
||||||
|
'Sadness'
|
||||||
|
'Seasick'
|
||||||
|
'Gyp'
|
||||||
|
'Innoculate'
|
||||||
|
'Cone of Annoyance'
|
||||||
|
'Magnetic Orb'
|
||||||
|
'Invisible Hands'
|
||||||
|
'Revolting Cloud'
|
||||||
|
'Aqueous Humor'
|
||||||
|
'Spectral Miasma'
|
||||||
|
'Clever Fellow'
|
||||||
|
'Lockjaw'
|
||||||
|
'Hydrophobia'
|
||||||
|
'Big Sister'
|
||||||
|
'Cone of Paste'
|
||||||
|
'Mulligan'
|
||||||
|
'Nestor'#39's Bright Idea'
|
||||||
|
'Holy Batpole'
|
||||||
|
'Tumor (Benign)'
|
||||||
|
'Braingate'
|
||||||
|
'Nonplus'
|
||||||
|
'Animate Nightstand'
|
||||||
|
'Eye of the Troglodyte'
|
||||||
|
'Curse Name'
|
||||||
|
'Dropsy'
|
||||||
|
'Vitreous Humor'
|
||||||
|
'Roger'#39's Grand Illusion'
|
||||||
|
'Covet'
|
||||||
|
'Astral Miasma'
|
||||||
|
'Spectral Oyster'
|
||||||
|
'Acrid Hands'
|
||||||
|
'Angioplasty'
|
||||||
|
'Grognor'#39's Big Day Off'
|
||||||
|
'Tumor (Malignant)'
|
||||||
|
'Animate Tunic'
|
||||||
|
'Ursine Armor'
|
||||||
|
'Holy Roller'
|
||||||
|
'Tonsilectomy'
|
||||||
|
'Curse Family'
|
||||||
|
'Infinite Confusion')
|
||||||
|
TabOrder = 0
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object OffenseAttrib: TMemo
|
||||||
|
Left = 168
|
||||||
|
Top = 20
|
||||||
|
Width = 141
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Polished|+1'
|
||||||
|
'Serrated|+1'
|
||||||
|
'Heavy|+1'
|
||||||
|
'Pronged|+2'
|
||||||
|
'Steely|+2'
|
||||||
|
'Vicious|+3'
|
||||||
|
'Venomed|+4'
|
||||||
|
'Stabbity|+4'
|
||||||
|
'Dancing|+5'
|
||||||
|
'Invisible|+6'
|
||||||
|
'Vorpal|+7')
|
||||||
|
TabOrder = 1
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object DefenseAttrib: TMemo
|
||||||
|
Left = 280
|
||||||
|
Top = 244
|
||||||
|
Width = 113
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Studded|+1'
|
||||||
|
'Banded|+2'
|
||||||
|
'Gilded|+2'
|
||||||
|
'Festooned|+3'
|
||||||
|
'Holy|+4'
|
||||||
|
'Cambric|+1'
|
||||||
|
'Fine|+4'
|
||||||
|
'Impressive|+5'
|
||||||
|
'Custom|+3')
|
||||||
|
TabOrder = 2
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object Shields: TMemo
|
||||||
|
Left = 140
|
||||||
|
Top = 244
|
||||||
|
Width = 133
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Parasol|0'
|
||||||
|
'Pie Plate|1'
|
||||||
|
'Garbage Can Lid|2'
|
||||||
|
'Buckler|3'
|
||||||
|
'Plexiglass|4'
|
||||||
|
'Fender|4'
|
||||||
|
'Round Shield|5'
|
||||||
|
'Carapace|5'
|
||||||
|
'Scutum|6'
|
||||||
|
'Propugner|6'
|
||||||
|
'Kite Shield|7'
|
||||||
|
'Pavise|8'
|
||||||
|
'Tower Shield|9'
|
||||||
|
'Baroque Shield|11'
|
||||||
|
'Aegis|12'
|
||||||
|
'Magnetic Field|18')
|
||||||
|
TabOrder = 3
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object Armors: TMemo
|
||||||
|
Left = 8
|
||||||
|
Top = 244
|
||||||
|
Width = 129
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Lace|1'
|
||||||
|
'Macrame|2'
|
||||||
|
'Burlap|3'
|
||||||
|
'Canvas|4'
|
||||||
|
'Flannel|5'
|
||||||
|
'Chamois|6'
|
||||||
|
'Pleathers|7'
|
||||||
|
'Leathers|8'
|
||||||
|
'Bearskin|9'
|
||||||
|
'Ringmail|10'
|
||||||
|
'Scale Mail|12'
|
||||||
|
'Chainmail|14'
|
||||||
|
'Splint Mail|15'
|
||||||
|
'Platemail|16'
|
||||||
|
'ABS|17'
|
||||||
|
'Kevlar|18'
|
||||||
|
'Titanium|19'
|
||||||
|
'Mithril Mail|20'
|
||||||
|
'Diamond Mail|25'
|
||||||
|
'Plasma|30')
|
||||||
|
TabOrder = 4
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object Weapons: TMemo
|
||||||
|
Left = 8
|
||||||
|
Top = 20
|
||||||
|
Width = 153
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Stick|0'
|
||||||
|
'Broken Bottle|1'
|
||||||
|
'Shiv|1'
|
||||||
|
'Sprig|1'
|
||||||
|
'Oxgoad|1'
|
||||||
|
'Eelspear|2'
|
||||||
|
'Bowie Knife|2'
|
||||||
|
'Claw Hammer|2'
|
||||||
|
'Handpeen|2'
|
||||||
|
'Andiron|3'
|
||||||
|
'Hatchet|3'
|
||||||
|
'Tomahawk|3'
|
||||||
|
'Hackbarm|3'
|
||||||
|
'Crowbar|4'
|
||||||
|
'Mace|4'
|
||||||
|
'Battleadze|4'
|
||||||
|
'Leafmace|5'
|
||||||
|
'Shortsword|5'
|
||||||
|
'Longiron|5'
|
||||||
|
'Poachard|5'
|
||||||
|
'Baselard|5'
|
||||||
|
'Whinyard|6'
|
||||||
|
'Blunderbuss|6'
|
||||||
|
'Longsword|6'
|
||||||
|
'Crankbow|6'
|
||||||
|
'Blibo|7'
|
||||||
|
'Broadsword|7'
|
||||||
|
'Morning Star|8'
|
||||||
|
'Pole-adze|8'
|
||||||
|
'Spontoon|8'
|
||||||
|
'Bastard Sword|9'
|
||||||
|
'Peen-arm|9'
|
||||||
|
'Culverin|10'
|
||||||
|
'Lance|10'
|
||||||
|
'Halberd|11'
|
||||||
|
'Poleax|12'
|
||||||
|
'Bandyclef|15')
|
||||||
|
TabOrder = 5
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object Specials: TMemo
|
||||||
|
Left = 164
|
||||||
|
Top = 444
|
||||||
|
Width = 149
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Diadem'
|
||||||
|
'Festoon'
|
||||||
|
'Gemstone'
|
||||||
|
'Phial'
|
||||||
|
'Tiara'
|
||||||
|
'Scabbard'
|
||||||
|
'Arrow'
|
||||||
|
'Lens'
|
||||||
|
'Lamp'
|
||||||
|
'Hymnal'
|
||||||
|
'Fleece'
|
||||||
|
'Laurel'
|
||||||
|
'Brooch'
|
||||||
|
'Gimlet'
|
||||||
|
'Cobble'
|
||||||
|
'Albatross'
|
||||||
|
'Brazier'
|
||||||
|
'Bandolier'
|
||||||
|
'Tome'
|
||||||
|
'Garnet'
|
||||||
|
'Amethyst'
|
||||||
|
'Candelabra'
|
||||||
|
'Corset'
|
||||||
|
'Sphere'
|
||||||
|
'Sceptre'
|
||||||
|
'Ankh'
|
||||||
|
'Talisman'
|
||||||
|
'Orb'
|
||||||
|
'Gammel'
|
||||||
|
'Ornament'
|
||||||
|
'Brocade'
|
||||||
|
'Galoon'
|
||||||
|
'Bijou'
|
||||||
|
'Spangle'
|
||||||
|
'Gimcrack')
|
||||||
|
TabOrder = 6
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object ItemAttrib: TMemo
|
||||||
|
Left = 8
|
||||||
|
Top = 444
|
||||||
|
Width = 149
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Golden'
|
||||||
|
'Gilded'
|
||||||
|
'Spectral'
|
||||||
|
'Astral'
|
||||||
|
'Garlanded'
|
||||||
|
'Precious'
|
||||||
|
'Crafted'
|
||||||
|
'Dual'
|
||||||
|
'Filigreed'
|
||||||
|
'Cruciate'
|
||||||
|
'Arcane'
|
||||||
|
'Blessed'
|
||||||
|
'Reverential'
|
||||||
|
'Lucky'
|
||||||
|
'Enchanted'
|
||||||
|
'Gleaming'
|
||||||
|
'Grandiose'
|
||||||
|
'Sacred'
|
||||||
|
'Legendary'
|
||||||
|
'Mythic'
|
||||||
|
'Crystalline'
|
||||||
|
'Austere'
|
||||||
|
'Ostentatious'
|
||||||
|
'One True'
|
||||||
|
'Proverbial'
|
||||||
|
'Fearsome '
|
||||||
|
'Deadly'
|
||||||
|
'Benevolent'
|
||||||
|
'Unearthly'
|
||||||
|
'Magnificent'
|
||||||
|
'Iron'
|
||||||
|
'Ormolu'
|
||||||
|
'Puissant')
|
||||||
|
TabOrder = 7
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object ItemOfs: TMemo
|
||||||
|
Left = 320
|
||||||
|
Top = 444
|
||||||
|
Width = 149
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Foreboding'
|
||||||
|
'Foreshadowing'
|
||||||
|
'Nervousness'
|
||||||
|
'Happiness'
|
||||||
|
'Torpor'
|
||||||
|
'Danger'
|
||||||
|
'Craft'
|
||||||
|
'Silence'
|
||||||
|
'Invisibility'
|
||||||
|
'Rapidity'
|
||||||
|
'Pleasure'
|
||||||
|
'Practicality'
|
||||||
|
'Hurting'
|
||||||
|
'Joy'
|
||||||
|
'Petulance'
|
||||||
|
'Intrusion'
|
||||||
|
'Chaos'
|
||||||
|
'Suffering'
|
||||||
|
'Extroversion'
|
||||||
|
'Frenzy'
|
||||||
|
'Solitude'
|
||||||
|
'Punctuality'
|
||||||
|
'Efficiency'
|
||||||
|
'Comfort'
|
||||||
|
'Patience'
|
||||||
|
'Internment'
|
||||||
|
'Incarceration'
|
||||||
|
'Misapprehension'
|
||||||
|
'Loyalty'
|
||||||
|
'Envy'
|
||||||
|
'Acrimony'
|
||||||
|
'Worry'
|
||||||
|
'Fear'
|
||||||
|
'Awe'
|
||||||
|
'Guile'
|
||||||
|
'Prurience'
|
||||||
|
'Fortune'
|
||||||
|
'Perspicacity'
|
||||||
|
'Domination'
|
||||||
|
'Submission'
|
||||||
|
'Fealty'
|
||||||
|
'Hunger'
|
||||||
|
'Despair'
|
||||||
|
'Cruelty'
|
||||||
|
'Grob'
|
||||||
|
'Dignard'
|
||||||
|
'Ra'
|
||||||
|
'the Bone'
|
||||||
|
'Diamonique'
|
||||||
|
'Electrum'
|
||||||
|
'Hydragyrum')
|
||||||
|
TabOrder = 8
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object BoringItems: TMemo
|
||||||
|
Left = 168
|
||||||
|
Top = 132
|
||||||
|
Width = 149
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'nail'
|
||||||
|
'lunchpail'
|
||||||
|
'sock'
|
||||||
|
'I.O.U.'
|
||||||
|
'cookie'
|
||||||
|
'pint'
|
||||||
|
'toothpick'
|
||||||
|
'writ'
|
||||||
|
'newspaper'
|
||||||
|
'letter'
|
||||||
|
'plank'
|
||||||
|
'hat'
|
||||||
|
'egg'
|
||||||
|
'coin'
|
||||||
|
'needle'
|
||||||
|
'bucket'
|
||||||
|
'ladder'
|
||||||
|
'chicken'
|
||||||
|
'twig'
|
||||||
|
'dirtclod'
|
||||||
|
'counterpane'
|
||||||
|
'vest'
|
||||||
|
'teratoma'
|
||||||
|
'bunny'
|
||||||
|
'rock'
|
||||||
|
'pole'
|
||||||
|
'carrot'
|
||||||
|
'canoe'
|
||||||
|
'inkwell'
|
||||||
|
'hoe'
|
||||||
|
'bandage'
|
||||||
|
'trowel'
|
||||||
|
'towel'
|
||||||
|
'planter box'
|
||||||
|
'anvil'
|
||||||
|
'axle'
|
||||||
|
'tuppence'
|
||||||
|
'casket'
|
||||||
|
'nosegay'
|
||||||
|
'trinket')
|
||||||
|
TabOrder = 9
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object Monsters: TMemo
|
||||||
|
Left = 8
|
||||||
|
Top = 360
|
||||||
|
Width = 221
|
||||||
|
Height = 61
|
||||||
|
Lines.Strings = (
|
||||||
|
'Anhkheg|6|chitin'
|
||||||
|
'Ant|0|antenna'
|
||||||
|
'Ape|4|ass'
|
||||||
|
'Baluchitherium|14|ear'
|
||||||
|
'Beholder|10|eyestalk'
|
||||||
|
'Black Pudding|10|saliva'
|
||||||
|
'Blink Dog|4|eyelid'
|
||||||
|
'Cub Scout|1|neckercheif'
|
||||||
|
'Girl Scout|2|cookie'
|
||||||
|
'Boy Scout|3|merit badge'
|
||||||
|
'Eagle Scout|4|merit badge'
|
||||||
|
'Bugbear|3|skin'
|
||||||
|
'Bugboar|3|tusk'
|
||||||
|
'Boogie|3|slime'
|
||||||
|
'Camel|2|hump'
|
||||||
|
'Carrion Crawler|3|egg'
|
||||||
|
'Catoblepas|6|neck'
|
||||||
|
'Centaur|4|rib'
|
||||||
|
'Centipede|0|leg'
|
||||||
|
'Cockatrice|5|wattle'
|
||||||
|
'Couatl|9|wing'
|
||||||
|
'Crayfish|0|antenna'
|
||||||
|
'Demogorgon|53|tentacle'
|
||||||
|
'Jubilex|17|gel'
|
||||||
|
'Manes|1|tooth'
|
||||||
|
'Orcus|27|wand'
|
||||||
|
'Succubus|6|bra'
|
||||||
|
'Vrock|8|neck'
|
||||||
|
'Hezrou|9|leg'
|
||||||
|
'Glabrezu|10|collar'
|
||||||
|
'Nalfeshnee|11|tusk'
|
||||||
|
'Marilith|7|arm'
|
||||||
|
'Balor|8|whip'
|
||||||
|
'Yeenoghu|25|flail'
|
||||||
|
'Asmodeus|52|leathers'
|
||||||
|
'Baalzebul|43|pants'
|
||||||
|
'Barbed Devil|8|flame'
|
||||||
|
'Bone Devil|9|hook'
|
||||||
|
'Dispater|30|matches'
|
||||||
|
'Erinyes|6|thong'
|
||||||
|
'Geryon|30|cornucopia'
|
||||||
|
'Malebranche|5|fork'
|
||||||
|
'Ice Devil|11|snow'
|
||||||
|
'Lemure|3|blob'
|
||||||
|
'Pit Fiend|13|seed'
|
||||||
|
'Anklyosaurus|9|tail'
|
||||||
|
'Brontosaurus|30|brain'
|
||||||
|
'Diplodocus|24|fin'
|
||||||
|
'Elasmosaurus|15|neck'
|
||||||
|
'Gorgosaurus|13|arm'
|
||||||
|
'Iguanadon|6|thumb'
|
||||||
|
'Megalosaurus|12|jaw'
|
||||||
|
'Monoclonius|8|horn'
|
||||||
|
'Pentasaurus|12|head'
|
||||||
|
'Stegosaurus|18|plate'
|
||||||
|
'Triceratops|16|horn'
|
||||||
|
'Tyranosauraus Rex|18|forearm'
|
||||||
|
'Djinn|7|lamp'
|
||||||
|
'Doppleganger|4|face'
|
||||||
|
'Black Dragon|7|*'
|
||||||
|
'Plaid Dragon|7|sporrin'
|
||||||
|
'Blue Dragon|9|*'
|
||||||
|
'Beige Dragon|9|*'
|
||||||
|
'Brass Dragon|7|pole'
|
||||||
|
'Tin Dragon|8|*'
|
||||||
|
'Bronze Dragon|9|medal'
|
||||||
|
'Chromatic Dragon|16|mineral water'
|
||||||
|
'Copper Dragon|8|loafer'
|
||||||
|
'Gold Dragon|8|filling'
|
||||||
|
'Green Dragon|8|*'
|
||||||
|
'Platinum Dragon|21|*'
|
||||||
|
'Red Dragon|10|cocktail'
|
||||||
|
'Silver Dragon|10|*'
|
||||||
|
'White Dragon|6|tooth'
|
||||||
|
'Dragon Turtle|13|shell'
|
||||||
|
'Dryad|2|acorn'
|
||||||
|
'Dwarf|1|drawers'
|
||||||
|
'Eel|2|sashimi'
|
||||||
|
'Efreet|10|cinder'
|
||||||
|
'Sand Elemental|8|glass'
|
||||||
|
'Bacon Elemental|10|bit'
|
||||||
|
'Porn Elemental|12|lube'
|
||||||
|
'Cheese Elemental|14|curd'
|
||||||
|
'Hair Elemental|16|follicle'
|
||||||
|
'Swamp Elf|1|lilypad'
|
||||||
|
'Brown Elf|1|tusk'
|
||||||
|
'Sea Elf|1|jerkin'
|
||||||
|
'Ettin|10|fur'
|
||||||
|
'Frog|0|leg'
|
||||||
|
'Violet Fungi|3|spore'
|
||||||
|
'Gargoyle|4|gravel'
|
||||||
|
'Gelatinous Cube|4|jam'
|
||||||
|
'Ghast|4|vomit'
|
||||||
|
'Ghost|10|*'
|
||||||
|
'Ghoul|2|muscle'
|
||||||
|
'Humidity Giant|12|drops'
|
||||||
|
'Beef Giant|11|steak'
|
||||||
|
'Quartz Giant|10|crystal'
|
||||||
|
'Porcelain Giant|9|fixture'
|
||||||
|
'Rice Giant|8|grain'
|
||||||
|
'Cloud Giant|12|condensation'
|
||||||
|
'Fire Giant|11|cigarettes'
|
||||||
|
'Frost Giant|10|snowman'
|
||||||
|
'Hill Giant|8|corpse'
|
||||||
|
'Stone Giant|9|hatchling'
|
||||||
|
'Storm Giant|15|barometer'
|
||||||
|
'Mini Giant|4|pompadour'
|
||||||
|
'Gnoll|2|collar'
|
||||||
|
'Gnome|1|hat'
|
||||||
|
'Goblin|1|ear'
|
||||||
|
'Grid Bug|1|carapace'
|
||||||
|
'Jellyrock|9|seedling'
|
||||||
|
'Beer Golem|15|foam'
|
||||||
|
'Oxygen Golem|17|platelet'
|
||||||
|
'Cardboard Golem|14|recycling'
|
||||||
|
'Rubber Golem|16|ball'
|
||||||
|
'Leather Golem|15|fob'
|
||||||
|
'Gorgon|8|testicle'
|
||||||
|
'Gray Ooze|3|gravy'
|
||||||
|
'Green Slime|2|sample'
|
||||||
|
'Griffon|7|nest'
|
||||||
|
'Banshee|7|larynx'
|
||||||
|
'Harpy|3|mascara'
|
||||||
|
'Hell Hound|5|tongue'
|
||||||
|
'Hippocampus|4|mane'
|
||||||
|
'Hippogriff|3|egg'
|
||||||
|
'Hobgoblin|1|patella'
|
||||||
|
'Homonculus|2|fluid'
|
||||||
|
'Hydra|8|gyrum'
|
||||||
|
'Imp|2|tail'
|
||||||
|
'Invisible Stalker|8|*'
|
||||||
|
'Iron Peasant|3|chaff'
|
||||||
|
'Jumpskin|3|shin'
|
||||||
|
'Kobold|1|penis'
|
||||||
|
'Leprechaun|1|wallet'
|
||||||
|
'Leucrotta|6|hoof'
|
||||||
|
'Lich|11|crown'
|
||||||
|
'Lizard Man|2|tail'
|
||||||
|
'Lurker|10|sac'
|
||||||
|
'Manticore|6|spike'
|
||||||
|
'Mastodon|12|tusk'
|
||||||
|
'Medusa|6|eye'
|
||||||
|
'Multicell|2|dendrite'
|
||||||
|
'Pirate|1|booty'
|
||||||
|
'Berserker|1|shirt'
|
||||||
|
'Caveman|2|club'
|
||||||
|
'Dervish|1|robe'
|
||||||
|
'Merman|1|trident'
|
||||||
|
'Mermaid|1|gills'
|
||||||
|
'Mimic|9|hinge'
|
||||||
|
'Mind Flayer|8|tentacle'
|
||||||
|
'Minotaur|6|map'
|
||||||
|
'Yellow Mold|1|spore'
|
||||||
|
'Morkoth|7|teeth'
|
||||||
|
'Mummy|6|gauze'
|
||||||
|
'Naga|9|rattle'
|
||||||
|
'Nebbish|1|belly'
|
||||||
|
'Neo-Otyugh|11|organ '
|
||||||
|
'Nixie|1|webbing'
|
||||||
|
'Nymph|3|hanky'
|
||||||
|
'Ochre Jelly|6|nucleus'
|
||||||
|
'Octopus|2|beak'
|
||||||
|
'Ogre|4|talon'
|
||||||
|
'Ogre Mage|5|apparel'
|
||||||
|
'Orc|1|snout'
|
||||||
|
'Otyugh|7|organ'
|
||||||
|
'Owlbear|5|feather'
|
||||||
|
'Pegasus|4|aileron'
|
||||||
|
'Peryton|4|antler'
|
||||||
|
'Piercer|3|tip'
|
||||||
|
'Pixie|1|dust'
|
||||||
|
'Man-o-war|3|tentacle'
|
||||||
|
'Purple Worm|15|dung'
|
||||||
|
'Quasit|3|tail'
|
||||||
|
'Rakshasa|7|pajamas'
|
||||||
|
'Rat|0|tail'
|
||||||
|
'Remorhaz|11|protrusion'
|
||||||
|
'Roc|18|wing'
|
||||||
|
'Roper|11|twine'
|
||||||
|
'Rot Grub|1|eggsac'
|
||||||
|
'Rust Monster|5|shavings'
|
||||||
|
'Satyr|5|hoof'
|
||||||
|
'Sea Hag|3|wart'
|
||||||
|
'Silkie|3|fur'
|
||||||
|
'Shadow|3|silhouette'
|
||||||
|
'Shambling Mound|10|mulch'
|
||||||
|
'Shedu|9|hoof'
|
||||||
|
'Shrieker|3|stalk'
|
||||||
|
'Skeleton|1|clavicle'
|
||||||
|
'Spectre|7|vestige'
|
||||||
|
'Sphinx|10|paw'
|
||||||
|
'Spider|0|web'
|
||||||
|
'Sprite|1|can'
|
||||||
|
'Stirge|1|proboscis'
|
||||||
|
'Stun Bear|5|tooth'
|
||||||
|
'Stun Worm|2|trode'
|
||||||
|
'Su-monster|5|tail'
|
||||||
|
'Sylph|3|thigh'
|
||||||
|
'Titan|20|sandal'
|
||||||
|
'Trapper|12|shag'
|
||||||
|
'Treant|10|acorn'
|
||||||
|
'Triton|3|scale'
|
||||||
|
'Troglodyte|2|tail'
|
||||||
|
'Troll|6|hide'
|
||||||
|
'Umber Hulk|8|claw'
|
||||||
|
'Unicorn|4|blood'
|
||||||
|
'Vampire|8|pancreas'
|
||||||
|
'Wight|4|lung'
|
||||||
|
'Will-o-the-Wisp|9|wisp'
|
||||||
|
'Wraith|5|finger'
|
||||||
|
'Wyvern|7|wing'
|
||||||
|
'Xorn|7|jaw'
|
||||||
|
'Yeti|4|fur'
|
||||||
|
'Zombie|2|forehead'
|
||||||
|
'Wasp|0|stinger'
|
||||||
|
'Rat|1|tail'
|
||||||
|
'Bunny|0|ear'
|
||||||
|
'Moth|0|dust'
|
||||||
|
'Beagle|0|collar'
|
||||||
|
'Midge|0|corpse'
|
||||||
|
'Ostrich|1|beak'
|
||||||
|
'Billy Goat|1|beard'
|
||||||
|
'Bat|1|wing'
|
||||||
|
'Koala|2|heart'
|
||||||
|
'Wolf|2|paw'
|
||||||
|
'Whippet|2|collar'
|
||||||
|
'Uruk|2|boot')
|
||||||
|
TabOrder = 10
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object MonMods: TMemo
|
||||||
|
Left = 232
|
||||||
|
Top = 360
|
||||||
|
Width = 221
|
||||||
|
Height = 61
|
||||||
|
Lines.Strings = (
|
||||||
|
'-4 f'#339'tal *'
|
||||||
|
'-4 dying *'
|
||||||
|
'-3 crippled *'
|
||||||
|
'-3 baby *'
|
||||||
|
'-2 adolescent'
|
||||||
|
'-2 very sick *'
|
||||||
|
'-1 lesser *'
|
||||||
|
'-1 undernourished *'
|
||||||
|
'+1 greater *'
|
||||||
|
'+1 * Elder'
|
||||||
|
'+2 war *'
|
||||||
|
'+2 Battle-*'
|
||||||
|
'+3 Were-*'
|
||||||
|
'+3 undead *'
|
||||||
|
'+4 giant *'
|
||||||
|
'+4 * Rex')
|
||||||
|
TabOrder = 11
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object OffenseBad: TMemo
|
||||||
|
Left = 316
|
||||||
|
Top = 20
|
||||||
|
Width = 141
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Dull|-2'
|
||||||
|
'Tarnished|-1'
|
||||||
|
'Rusty|-3'
|
||||||
|
'Padded|-5'
|
||||||
|
'Bent|-4'
|
||||||
|
'Mini|-4'
|
||||||
|
'Rubber|-6'
|
||||||
|
'Nerf|-7'
|
||||||
|
'Unbalanced|-2')
|
||||||
|
TabOrder = 12
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
object DefenseBad: TMemo
|
||||||
|
Left = 396
|
||||||
|
Top = 244
|
||||||
|
Width = 141
|
||||||
|
Height = 89
|
||||||
|
Lines.Strings = (
|
||||||
|
'Holey|-1'
|
||||||
|
'Patched|-1'
|
||||||
|
'Threadbare|-2'
|
||||||
|
'Faded|-1'
|
||||||
|
'Rusty|-3'
|
||||||
|
'Motheaten|-3'
|
||||||
|
'Mildewed|-2'
|
||||||
|
'Torn|-3'
|
||||||
|
'Dented|-3'
|
||||||
|
'Cursed|-5'
|
||||||
|
'Plastic|-4'
|
||||||
|
'Cracked|-4'
|
||||||
|
'Warped|-3'
|
||||||
|
'Corroded|-3')
|
||||||
|
TabOrder = 13
|
||||||
|
WordWrap = False
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
unit Config;
|
||||||
|
{ copyright (c)2002 Eric Fredricksen all rights reserved }
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||||
|
Dialogs, StdCtrls, ComCtrls;
|
||||||
|
|
||||||
|
type
|
||||||
|
TK = class(TForm)
|
||||||
|
Spells: TMemo;
|
||||||
|
Label1: TLabel;
|
||||||
|
OffenseAttrib: TMemo;
|
||||||
|
Label2: TLabel;
|
||||||
|
DefenseAttrib: TMemo;
|
||||||
|
Label3: TLabel;
|
||||||
|
Shields: TMemo;
|
||||||
|
Label4: TLabel;
|
||||||
|
Armors: TMemo;
|
||||||
|
Label5: TLabel;
|
||||||
|
Weapons: TMemo;
|
||||||
|
Label6: TLabel;
|
||||||
|
Specials: TMemo;
|
||||||
|
Label7: TLabel;
|
||||||
|
ItemAttrib: TMemo;
|
||||||
|
Label8: TLabel;
|
||||||
|
ItemOfs: TMemo;
|
||||||
|
Label9: TLabel;
|
||||||
|
BoringItems: TMemo;
|
||||||
|
Label10: TLabel;
|
||||||
|
Monsters: TMemo;
|
||||||
|
MonMods: TMemo;
|
||||||
|
Label11: TLabel;
|
||||||
|
Label12: TLabel;
|
||||||
|
OffenseBad: TMemo;
|
||||||
|
Label13: TLabel;
|
||||||
|
DefenseBad: TMemo;
|
||||||
|
Label14: TLabel;
|
||||||
|
private
|
||||||
|
{ Private declarations }
|
||||||
|
public
|
||||||
|
{ Public declarations }
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
K: TK;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.dfm}
|
||||||
|
|
||||||
|
end.
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,51 @@
|
|||||||
|
unit Front;
|
||||||
|
{ copyright (c)2002 Eric Fredricksen all rights reserved }
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||||
|
Dialogs, StdCtrls, ExtCtrls;
|
||||||
|
|
||||||
|
type
|
||||||
|
TFrontForm = class(TForm)
|
||||||
|
Panel1: TPanel;
|
||||||
|
Button1: TButton;
|
||||||
|
Button2: TButton;
|
||||||
|
OpenDialog1: TOpenDialog;
|
||||||
|
Button4: TButton;
|
||||||
|
Label2: TLabel;
|
||||||
|
Button3: TButton;
|
||||||
|
Panel2: TPanel;
|
||||||
|
Logo: TImage;
|
||||||
|
Label3: TLabel;
|
||||||
|
HomeLink: TLabel;
|
||||||
|
Label1: TLabel;
|
||||||
|
procedure HomeLinkClick(Sender: TObject);
|
||||||
|
procedure LogoClick(Sender: TObject);
|
||||||
|
private
|
||||||
|
{ Private declarations }
|
||||||
|
public
|
||||||
|
{ Public declarations }
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
FrontForm: TFrontForm;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses ShellAPI, Main, Info;
|
||||||
|
|
||||||
|
{$R *.dfm}
|
||||||
|
|
||||||
|
procedure TFrontForm.HomeLinkClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/', nil, '', SW_SHOW);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TFrontForm.LogoClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ShellExecute(GetDesktopWindow(), 'open', 'http://progressquest.com/', nil, '', SW_SHOW);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
@@ -0,0 +1,448 @@
|
|||||||
|
{*************************************************************}
|
||||||
|
{ HTTPGet component for Delphi 32 }
|
||||||
|
{ Version: 1.94 }
|
||||||
|
{ E-Mail: info@utilmind.com }
|
||||||
|
{ WWW: http://www.utilmind.com }
|
||||||
|
{ Created: October 19, 1999 }
|
||||||
|
{ Modified: June 6, 2000 }
|
||||||
|
{ Legal: Copyright (c) 1999-2000, UtilMind Solutions }
|
||||||
|
{*************************************************************}
|
||||||
|
{ PROPERTIES: }
|
||||||
|
{ Agent: String - User Agent }
|
||||||
|
{ }
|
||||||
|
{* BinaryData: Boolean - This setting specifies which type }
|
||||||
|
{* of data will taken from the web. }
|
||||||
|
{* If you set this property TRUE then }
|
||||||
|
{* component will determinee the size }
|
||||||
|
{* of files *before* getting them from }
|
||||||
|
{* the web. }
|
||||||
|
{* If this property is FALSE then as we}
|
||||||
|
{* do not knows the file size the }
|
||||||
|
{* OnProgress event will doesn't work. }
|
||||||
|
{* Also please remember that is you set}
|
||||||
|
{* this property as TRUE you will not }
|
||||||
|
{* capable to get from the web ASCII }
|
||||||
|
{* data and ofter got OnError event. }
|
||||||
|
{ }
|
||||||
|
{ FileName: String - Path to local file to store the data }
|
||||||
|
{ taken from the web }
|
||||||
|
{ Password, UserName - set this properties if you trying to }
|
||||||
|
{ get data from password protected }
|
||||||
|
{ directories. }
|
||||||
|
{ Referer: String - Additional data about referer document }
|
||||||
|
{ URL: String - The url to file or document }
|
||||||
|
{ UseCache: Boolean - Get file from the Internet Explorer's }
|
||||||
|
{ cache if requested file is cached. }
|
||||||
|
{*************************************************************}
|
||||||
|
{ METHODS: }
|
||||||
|
{ GetFile - Get the file from the web specified in the URL }
|
||||||
|
{ property and store it to the file specified in }
|
||||||
|
{ the FileName property }
|
||||||
|
{ GetString - Get the data from web and return it as usual }
|
||||||
|
{ String. You can receive this string hooking }
|
||||||
|
{ the OnDoneString event. }
|
||||||
|
{ Abort - Stop the current session }
|
||||||
|
{*************************************************************}
|
||||||
|
{ EVENTS: }
|
||||||
|
{ OnDoneFile - Occurs when the file is downloaded }
|
||||||
|
{ OnDoneString - Occurs when the string is received }
|
||||||
|
{ OnError - Occurs when error happend }
|
||||||
|
{ OnProgress - Occurs at the receiving of the BINARY DATA }
|
||||||
|
{*************************************************************}
|
||||||
|
{ Please see demo program for more information. }
|
||||||
|
{*************************************************************}
|
||||||
|
{ IMPORTANT NOTE: }
|
||||||
|
{ This software is provided 'as-is', without any express or }
|
||||||
|
{ implied warranty. In no event will the author be held }
|
||||||
|
{ liable for any damages arising from the use of this }
|
||||||
|
{ software. }
|
||||||
|
{ Permission is granted to anyone to use this software for }
|
||||||
|
{ any purpose, including commercial applications, and to }
|
||||||
|
{ alter it and redistribute it freely, subject to the }
|
||||||
|
{ following restrictions: }
|
||||||
|
{ 1. The origin of this software must not be misrepresented, }
|
||||||
|
{ you must not claim that you wrote the original software. }
|
||||||
|
{ If you use this software in a product, an acknowledgment }
|
||||||
|
{ in the product documentation would be appreciated but is }
|
||||||
|
{ not required. }
|
||||||
|
{ 2. Altered source versions must be plainly marked as such, }
|
||||||
|
{ and must not be misrepresented as being the original }
|
||||||
|
{ software. }
|
||||||
|
{ 3. This notice may not be removed or altered from any }
|
||||||
|
{ source distribution. }
|
||||||
|
{*************************************************************}
|
||||||
|
|
||||||
|
unit HTTPGet;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Windows, Messages, SysUtils, Classes, WinInet;
|
||||||
|
|
||||||
|
type
|
||||||
|
TOnProgressEvent = procedure(Sender: TObject; TotalSize, Readed: Integer) of object;
|
||||||
|
TOnDoneFileEvent = procedure(Sender: TObject; FileName: String; FileSize: Integer) of object;
|
||||||
|
TOnDoneStringEvent = procedure(Sender: TObject; Result: String) of object;
|
||||||
|
|
||||||
|
THTTPGetThread = class(TThread)
|
||||||
|
private
|
||||||
|
FTAcceptTypes,
|
||||||
|
FTAgent,
|
||||||
|
FTURL,
|
||||||
|
FTFileName,
|
||||||
|
FTStringResult,
|
||||||
|
FTUserName,
|
||||||
|
FTPassword,
|
||||||
|
FTPostQuery,
|
||||||
|
FTReferer: String;
|
||||||
|
FTBinaryData,
|
||||||
|
FTUseCache: Boolean;
|
||||||
|
|
||||||
|
FTResult: Boolean;
|
||||||
|
FTFileSize: Integer;
|
||||||
|
FTToFile: Boolean;
|
||||||
|
|
||||||
|
BytesToRead, BytesReaded: DWord;
|
||||||
|
|
||||||
|
FTProgress: TOnProgressEvent;
|
||||||
|
|
||||||
|
procedure UpdateProgress;
|
||||||
|
protected
|
||||||
|
procedure Execute; override;
|
||||||
|
public
|
||||||
|
constructor Create(aAcceptTypes, aAgent, aURL, aFileName, aUserName, aPassword, aPostQuery, aReferer: String;
|
||||||
|
aBinaryData, aUseCache: Boolean; aProgress: TOnProgressEvent; aToFile: Boolean);
|
||||||
|
end;
|
||||||
|
|
||||||
|
THTTPGet = class(TComponent)
|
||||||
|
private
|
||||||
|
FAcceptTypes: String;
|
||||||
|
FAgent: String;
|
||||||
|
FBinaryData: Boolean;
|
||||||
|
FURL: String;
|
||||||
|
FUseCache: Boolean;
|
||||||
|
FFileName: String;
|
||||||
|
FUserName: String;
|
||||||
|
FPassword: String;
|
||||||
|
FPostQuery: String;
|
||||||
|
FReferer: String;
|
||||||
|
FWaitThread: Boolean;
|
||||||
|
|
||||||
|
FThread: THTTPGetThread;
|
||||||
|
FError: TNotifyEvent;
|
||||||
|
FResult: Boolean;
|
||||||
|
|
||||||
|
FProgress: TOnProgressEvent;
|
||||||
|
FDoneFile: TOnDoneFileEvent;
|
||||||
|
FDoneString: TOnDoneStringEvent;
|
||||||
|
|
||||||
|
procedure ThreadDone(Sender: TObject);
|
||||||
|
public
|
||||||
|
constructor Create(aOwner: TComponent); override;
|
||||||
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
procedure GetFile;
|
||||||
|
procedure GetString;
|
||||||
|
procedure Abort;
|
||||||
|
published
|
||||||
|
property AcceptTypes: String read FAcceptTypes write FAcceptTypes;
|
||||||
|
property Agent: String read FAgent write FAgent;
|
||||||
|
property BinaryData: Boolean read FBinaryData write FBinaryData;
|
||||||
|
property URL: String read FURL write FURL;
|
||||||
|
property UseCache: Boolean read FUseCache write FUseCache;
|
||||||
|
property FileName: String read FFileName write FFileName;
|
||||||
|
property UserName: String read FUserName write FUserName;
|
||||||
|
property Password: String read FPassword write FPassword;
|
||||||
|
property PostQuery: String read FPostQuery write FPostQuery;
|
||||||
|
property Referer: String read FReferer write FReferer;
|
||||||
|
property WaitThread: Boolean read FWaitThread write FWaitThread;
|
||||||
|
|
||||||
|
property OnProgress: TOnProgressEvent read FProgress write FProgress;
|
||||||
|
property OnDoneFile: TOnDoneFileEvent read FDoneFile write FDoneFile;
|
||||||
|
property OnDoneString: TOnDoneStringEvent read FDoneString write FDoneString;
|
||||||
|
property OnError: TNotifyEvent read FError write FError;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Register;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
// THTTPGetThread
|
||||||
|
|
||||||
|
constructor THTTPGetThread.Create(aAcceptTypes, aAgent, aURL, aFileName, aUserName, aPassword, aPostQuery, aReferer: String;
|
||||||
|
aBinaryData, aUseCache: Boolean; aProgress: TOnProgressEvent; aToFile: Boolean);
|
||||||
|
begin
|
||||||
|
FreeOnTerminate := True;
|
||||||
|
inherited Create(True);
|
||||||
|
|
||||||
|
FTAcceptTypes := aAcceptTypes;
|
||||||
|
FTAgent := aAgent;
|
||||||
|
FTURL := aURL;
|
||||||
|
FTFileName := aFileName;
|
||||||
|
FTUserName := aUserName;
|
||||||
|
FTPassword := aPassword;
|
||||||
|
FTPostQuery := aPostQuery;
|
||||||
|
FTReferer := aReferer;
|
||||||
|
FTProgress := aProgress;
|
||||||
|
FTBinaryData := aBinaryData;
|
||||||
|
FTUseCache := aUseCache;
|
||||||
|
|
||||||
|
FTToFile := aToFile;
|
||||||
|
Resume;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTTPGetThread.UpdateProgress;
|
||||||
|
begin
|
||||||
|
FTProgress(Self, FTFileSize, BytesReaded);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTTPGetThread.Execute;
|
||||||
|
var
|
||||||
|
hSession, hConnect, hRequest: hInternet;
|
||||||
|
HostName, FileName: String;
|
||||||
|
f: File;
|
||||||
|
Buf: Pointer;
|
||||||
|
dwBufLen, dwIndex: DWord;
|
||||||
|
Data: Array[0..$400] of Char;
|
||||||
|
TempStr: String;
|
||||||
|
RequestMethod: PChar;
|
||||||
|
InternetFlag: DWord;
|
||||||
|
AcceptType: LPStr;
|
||||||
|
|
||||||
|
procedure ParseURL(URL: String; var HostName, FileName: String);
|
||||||
|
|
||||||
|
procedure ReplaceChar(c1, c2: Char; var St: String);
|
||||||
|
var
|
||||||
|
p: Integer;
|
||||||
|
begin
|
||||||
|
while True do
|
||||||
|
begin
|
||||||
|
p := Pos(c1, St);
|
||||||
|
if p = 0 then Break
|
||||||
|
else St[p] := c2;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if Pos('http://', LowerCase(URL)) <> 0 then
|
||||||
|
System.Delete(URL, 1, 7);
|
||||||
|
|
||||||
|
i := Pos('/', URL);
|
||||||
|
HostName := Copy(URL, 1, i);
|
||||||
|
FileName := Copy(URL, i, Length(URL) - i + 1);
|
||||||
|
|
||||||
|
if (Length(HostName) > 0) and (HostName[Length(HostName)] = '/') then
|
||||||
|
SetLength(HostName, Length(HostName) - 1);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure CloseHandles;
|
||||||
|
begin
|
||||||
|
InternetCloseHandle(hRequest);
|
||||||
|
InternetCloseHandle(hConnect);
|
||||||
|
InternetCloseHandle(hSession);
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
ParseURL(FTURL, HostName, FileName);
|
||||||
|
|
||||||
|
if Terminated then
|
||||||
|
begin
|
||||||
|
FTResult := False;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if FTAgent <> '' then
|
||||||
|
hSession := InternetOpen(PChar(FTAgent),
|
||||||
|
INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0)
|
||||||
|
else
|
||||||
|
hSession := InternetOpen(nil,
|
||||||
|
INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
|
||||||
|
|
||||||
|
hConnect := InternetConnect(hSession, PChar(HostName),
|
||||||
|
INTERNET_DEFAULT_HTTP_PORT, PChar(FTUserName), PChar(FTPassword), INTERNET_SERVICE_HTTP, 0, 0);
|
||||||
|
|
||||||
|
if FTPostQuery = '' then RequestMethod := 'GET'
|
||||||
|
else RequestMethod := 'POST';
|
||||||
|
|
||||||
|
if FTUseCache then InternetFlag := 0
|
||||||
|
else InternetFlag := INTERNET_FLAG_RELOAD;
|
||||||
|
|
||||||
|
AcceptType := PChar('Accept: ' + FTAcceptTypes);
|
||||||
|
hRequest := HttpOpenRequest(hConnect, RequestMethod, PChar(FileName), 'HTTP/1.0',
|
||||||
|
PChar(FTReferer), @AcceptType, InternetFlag, 0);
|
||||||
|
|
||||||
|
if FTPostQuery = '' then
|
||||||
|
HttpSendRequest(hRequest, nil, 0, nil, 0)
|
||||||
|
else
|
||||||
|
HttpSendRequest(hRequest, 'Content-Type: application/x-www-form-urlencoded', 47,
|
||||||
|
PChar(FTPostQuery), Length(FTPostQuery));
|
||||||
|
|
||||||
|
if Terminated then
|
||||||
|
begin
|
||||||
|
CloseHandles;
|
||||||
|
FTResult := False;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
dwIndex := 0;
|
||||||
|
dwBufLen := 1024;
|
||||||
|
GetMem(Buf, dwBufLen);
|
||||||
|
|
||||||
|
FTResult := HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH,
|
||||||
|
Buf, dwBufLen, dwIndex);
|
||||||
|
|
||||||
|
if Terminated then
|
||||||
|
begin
|
||||||
|
FreeMem(Buf);
|
||||||
|
CloseHandles;
|
||||||
|
FTResult := False;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if FTResult or not FTBinaryData then
|
||||||
|
begin
|
||||||
|
if FTResult then
|
||||||
|
FTFileSize := StrToInt(StrPas(Buf));
|
||||||
|
|
||||||
|
BytesReaded := 0;
|
||||||
|
|
||||||
|
if FTToFile then
|
||||||
|
begin
|
||||||
|
AssignFile(f, FTFileName);
|
||||||
|
Rewrite(f, 1);
|
||||||
|
end
|
||||||
|
else FTStringResult := '';
|
||||||
|
|
||||||
|
while True do
|
||||||
|
begin
|
||||||
|
if Terminated then
|
||||||
|
begin
|
||||||
|
if FTToFile then CloseFile(f);
|
||||||
|
FreeMem(Buf);
|
||||||
|
CloseHandles;
|
||||||
|
|
||||||
|
FTResult := False;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if not InternetReadFile(hRequest, @Data, SizeOf(Data), BytesToRead) then Break
|
||||||
|
else
|
||||||
|
if BytesToRead = 0 then Break
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if FTToFile then
|
||||||
|
BlockWrite(f, Data, BytesToRead)
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
TempStr := Data;
|
||||||
|
SetLength(TempStr, BytesToRead);
|
||||||
|
FTStringResult := FTStringResult + TempStr;
|
||||||
|
end;
|
||||||
|
|
||||||
|
inc(BytesReaded, BytesToRead);
|
||||||
|
if Assigned(FTProgress) then
|
||||||
|
Synchronize(UpdateProgress);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if FTToFile then
|
||||||
|
FTResult := FTFileSize = Integer(BytesReaded)
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
SetLength(FTStringResult, BytesReaded);
|
||||||
|
FTResult := BytesReaded <> 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if FTToFile then CloseFile(f);
|
||||||
|
end;
|
||||||
|
|
||||||
|
FreeMem(Buf);
|
||||||
|
|
||||||
|
CloseHandles;
|
||||||
|
except
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// HTTPGet
|
||||||
|
|
||||||
|
constructor THTTPGet.Create(aOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(aOwner);
|
||||||
|
FAcceptTypes := '*/*';
|
||||||
|
FAgent := 'UtilMind HTTPGet';
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor THTTPGet.Destroy;
|
||||||
|
begin
|
||||||
|
Abort;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTTPGet.GetFile;
|
||||||
|
var
|
||||||
|
Msg: TMsg;
|
||||||
|
begin
|
||||||
|
if not Assigned(FThread) then
|
||||||
|
begin
|
||||||
|
FThread := THTTPGetThread.Create(FAcceptTypes, FAgent, FURL, FFileName, FUserName, FPassword, FPostQuery, FReferer,
|
||||||
|
FBinaryData, FUseCache, FProgress, True);
|
||||||
|
FThread.OnTerminate := ThreadDone;
|
||||||
|
if FWaitThread then
|
||||||
|
while Assigned(FThread) do
|
||||||
|
while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
|
||||||
|
begin
|
||||||
|
TranslateMessage(Msg);
|
||||||
|
DispatchMessage(Msg);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTTPGet.GetString;
|
||||||
|
var
|
||||||
|
Msg: TMsg;
|
||||||
|
begin
|
||||||
|
if not Assigned(FThread) then
|
||||||
|
begin
|
||||||
|
FThread := THTTPGetThread.Create(FAcceptTypes, FAgent, FURL, FFileName, FUserName, FPassword, FPostQuery, FReferer,
|
||||||
|
FBinaryData, FUseCache, FProgress, False);
|
||||||
|
FThread.OnTerminate := ThreadDone;
|
||||||
|
if FWaitThread then
|
||||||
|
while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
|
||||||
|
begin
|
||||||
|
TranslateMessage(Msg);
|
||||||
|
DispatchMessage(Msg);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTTPGet.Abort;
|
||||||
|
begin
|
||||||
|
if Assigned(FThread) then
|
||||||
|
begin
|
||||||
|
FThread.Terminate;
|
||||||
|
FThread.FTResult := False;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure THTTPGet.ThreadDone(Sender: TObject);
|
||||||
|
begin
|
||||||
|
FResult := FThread.FTResult;
|
||||||
|
if FResult then
|
||||||
|
if FThread.FTToFile then
|
||||||
|
if Assigned(FDoneFile) then FDoneFile(Self, FThread.FTFileName, FThread.FTFileSize) else
|
||||||
|
else
|
||||||
|
if Assigned(FDoneString) then FDoneString(Self, FThread.FTStringResult) else
|
||||||
|
else
|
||||||
|
if Assigned(FError) then FError(Self);
|
||||||
|
FThread := nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Register;
|
||||||
|
begin
|
||||||
|
RegisterComponents('UtilMind', [THTTPGet]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
object Form4: TForm4
|
||||||
|
Left = 192
|
||||||
|
Top = 107
|
||||||
|
Width = 696
|
||||||
|
Height = 480
|
||||||
|
Caption = 'Progress Quest VI'
|
||||||
|
Color = clBtnFace
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = []
|
||||||
|
Icon.Data = {
|
||||||
|
0000010001002020000000000000A80800001600000028000000200000004000
|
||||||
|
0000010008000000000080040000000000000000000000000000000000000000
|
||||||
|
0000000080000080000000808000800000008000800080800000C0C0C000C0DC
|
||||||
|
C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222
|
||||||
|
220029292900555555004D4D4D004242420039393900807CFF005050FF009300
|
||||||
|
D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000
|
||||||
|
CC00003300000033330000336600003399000033CC000033FF00006600000066
|
||||||
|
330000666600006699000066CC000066FF000099000000993300009966000099
|
||||||
|
99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC
|
||||||
|
FF0000FF660000FF990000FFCC00330000003300330033006600330099003300
|
||||||
|
CC003300FF00333300003333330033336600333399003333CC003333FF003366
|
||||||
|
00003366330033666600336699003366CC003366FF0033990000339933003399
|
||||||
|
6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC
|
||||||
|
CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600
|
||||||
|
330066006600660099006600CC006600FF006633000066333300663366006633
|
||||||
|
99006633CC006633FF00666600006666330066666600666699006666CC006699
|
||||||
|
00006699330066996600669999006699CC006699FF0066CC000066CC330066CC
|
||||||
|
990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00
|
||||||
|
CC009999000099339900990099009900CC009900000099333300990066009933
|
||||||
|
CC009900FF00996600009966330099336600996699009966CC009933FF009999
|
||||||
|
330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC
|
||||||
|
990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF
|
||||||
|
FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33
|
||||||
|
6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66
|
||||||
|
CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC
|
||||||
|
0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF
|
||||||
|
6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33
|
||||||
|
3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66
|
||||||
|
9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99
|
||||||
|
FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF
|
||||||
|
6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
|
||||||
|
66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
|
||||||
|
D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
|
||||||
|
80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF005852
|
||||||
|
5151515151515258585858585858585858585858585858585852515151515852
|
||||||
|
51514A4A4A515152585858585858585858585858585858585251514B4A4B5852
|
||||||
|
514B4A4A4A4B51515258585858585858585858585858585251514B4A4A4A5852
|
||||||
|
150F4A4A4A4A4B5151515152525251525252525252525151514A0F154A4B580B
|
||||||
|
0E0E0B4A4A4A4A4A5151515151515151515151515151514B4B0B0E0E0B512311
|
||||||
|
15220E514A4A4A4A4A4A4A4B4A4A4A4A4A4A4A4A4A4A4A4A4A0F22143D234313
|
||||||
|
22431151514A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A11432213435822
|
||||||
|
23296710294B4A4A44442244154422441544224444444A221012292322585858
|
||||||
|
58514443151D4B4A442215221522152215221522154B0E151544515252585858
|
||||||
|
5879294A43140D4A22150D0E2243100E1D0D2215220D14434A03525258585858
|
||||||
|
585852514A224A430E0E1443220D111543140E0E4344224A4A51515258585858
|
||||||
|
585858514B1514220E2243150D444444444322222214154B4B4B515258585858
|
||||||
|
585858585174151D4A434A4A15104422234A434A1D15742A4A4B515258585858
|
||||||
|
585858585222444B457422224B44224B222274454B4422524A4B515258585858
|
||||||
|
58585858510A4B4C3F4C44EA4A22224A6D444C3F4C4B0A4A4A51515258585858
|
||||||
|
585858580D15294B4523ECC8C44A4AE946EC23454B29150D4A51515858585858
|
||||||
|
58585858444A4A234AAEC8FCFCA7E9F9F946AE44234A4A435151525858585858
|
||||||
|
58585858232244224AEFA7FCFC62F9F9F946EF4A224422235151525858585858
|
||||||
|
585858584B434A110C4A8DA862F9F9F9698D4A0C114A43295151525858585858
|
||||||
|
5858585852222210514A8D46F9F9F962A78D4A51104322524B51525858585858
|
||||||
|
58585858524B0C034AEB46F9F9F962FCFCA7F84A030C4B4A4A51515258585858
|
||||||
|
5858585251514B4AED46F9F9F9E3A8FCFCFCA7ED4A4B4A4A4A4B515152585858
|
||||||
|
58585851514B4AED46F9F9F9E3F7F7E6FCFCFCA7ED4A4A4A4A4A4B5152585858
|
||||||
|
585852514B4AEB46F9F9F9E3ED525892E6FCFCFCA7EB4A4A4A4A4A4B51525858
|
||||||
|
585852514A6D46F9F9F9E3ED5858585892E6FCFCFCA76D4A4A4A4A4A51515858
|
||||||
|
5858514B14B5F047F9E3F7585858585858B5E6FCC8DDB5144A4A4A4A51515858
|
||||||
|
585852AE09F3F3BCE3B55858585858585858B5D0DDF3F309AE4A4B4B51515858
|
||||||
|
5858BCF4F5F4F4F4075858585858585858585807F4F4F4F5DEBC515151525858
|
||||||
|
58991BF5F5F2DDB6585858585858585858585858B6DDF3F5F51B995152585858
|
||||||
|
5892B51909B592585858585858585858585858585892B509DDB5925858585858
|
||||||
|
58720909ECEB58585858585858585858585858585858F8EC0909725858585858
|
||||||
|
58F78DAEED5858585858585858585858585858585858581CAE8D925858580000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000}
|
||||||
|
OldCreateOrder = False
|
||||||
|
PixelsPerInch = 96
|
||||||
|
TextHeight = 13
|
||||||
|
object WebBrowser1: TWebBrowser
|
||||||
|
Left = 0
|
||||||
|
Top = 0
|
||||||
|
Width = 688
|
||||||
|
Height = 453
|
||||||
|
Align = alClient
|
||||||
|
TabOrder = 0
|
||||||
|
ControlData = {
|
||||||
|
4C0000001B470000D22E00000000000000000000000000000000000000000000
|
||||||
|
000000004C000000000000000000000001000000E0D057007335CF11AE690800
|
||||||
|
2B2E126208000000000000004C0000000114020000000000C000000000000046
|
||||||
|
8000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000100000000000000000000000000000000000000}
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
unit Info;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||||
|
Dialogs, OleCtrls, SHDocVw;
|
||||||
|
|
||||||
|
type
|
||||||
|
TForm4 = class(TForm)
|
||||||
|
WebBrowser1: TWebBrowser;
|
||||||
|
private
|
||||||
|
{ Private declarations }
|
||||||
|
public
|
||||||
|
procedure Go(url: String);
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
Form4: TForm4;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.dfm}
|
||||||
|
|
||||||
|
procedure TForm4.Go(url: String);
|
||||||
|
begin
|
||||||
|
WebBrowser1.Navigate(url);
|
||||||
|
Show;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
@@ -0,0 +1,166 @@
|
|||||||
|
object LoginForm: TLoginForm
|
||||||
|
Left = 314
|
||||||
|
Top = 162
|
||||||
|
Width = 265
|
||||||
|
Height = 448
|
||||||
|
Caption = 'Progress Quest Login'
|
||||||
|
Color = clBtnFace
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = []
|
||||||
|
OldCreateOrder = False
|
||||||
|
Position = poScreenCenter
|
||||||
|
PixelsPerInch = 96
|
||||||
|
TextHeight = 13
|
||||||
|
object GroupBox1: TGroupBox
|
||||||
|
Left = 12
|
||||||
|
Top = 176
|
||||||
|
Width = 237
|
||||||
|
Height = 69
|
||||||
|
Caption = 'New Users'
|
||||||
|
TabOrder = 0
|
||||||
|
object Label1: TLabel
|
||||||
|
Left = 2
|
||||||
|
Top = 15
|
||||||
|
Width = 233
|
||||||
|
Height = 18
|
||||||
|
Align = alTop
|
||||||
|
AutoSize = False
|
||||||
|
Caption = ' To sign up for a new account, visit'
|
||||||
|
Layout = tlBottom
|
||||||
|
end
|
||||||
|
object Label2: TLabel
|
||||||
|
Left = 2
|
||||||
|
Top = 33
|
||||||
|
Width = 233
|
||||||
|
Height = 25
|
||||||
|
Cursor = crHandPoint
|
||||||
|
Align = alTop
|
||||||
|
Alignment = taCenter
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'http://progressquest.com/user.php'
|
||||||
|
Color = clBtnFace
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clActiveCaption
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold, fsUnderline]
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
Layout = tlCenter
|
||||||
|
OnClick = Label2Click
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object Login: TButton
|
||||||
|
Left = 88
|
||||||
|
Top = 388
|
||||||
|
Width = 75
|
||||||
|
Height = 25
|
||||||
|
Caption = 'Login'
|
||||||
|
Default = True
|
||||||
|
Enabled = False
|
||||||
|
TabOrder = 1
|
||||||
|
OnClick = LoginClick
|
||||||
|
end
|
||||||
|
object Button1: TButton
|
||||||
|
Left = 172
|
||||||
|
Top = 388
|
||||||
|
Width = 75
|
||||||
|
Height = 25
|
||||||
|
Caption = 'Cancel'
|
||||||
|
ModalResult = 2
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
|
object GroupBox2: TGroupBox
|
||||||
|
Left = 12
|
||||||
|
Top = 256
|
||||||
|
Width = 237
|
||||||
|
Height = 121
|
||||||
|
Caption = 'Proxy Settings'
|
||||||
|
TabOrder = 3
|
||||||
|
object Label3: TLabel
|
||||||
|
Left = 12
|
||||||
|
Top = 20
|
||||||
|
Width = 213
|
||||||
|
Height = 45
|
||||||
|
AutoSize = False
|
||||||
|
Caption =
|
||||||
|
'Most people can leave this blank, but if you use a proxy to conn' +
|
||||||
|
'ect to the Web, or wish to use a proxy to cheat, enter it here.'
|
||||||
|
WordWrap = True
|
||||||
|
end
|
||||||
|
object LabeledEdit1: TLabeledEdit
|
||||||
|
Left = 12
|
||||||
|
Top = 84
|
||||||
|
Width = 149
|
||||||
|
Height = 21
|
||||||
|
EditLabel.Width = 31
|
||||||
|
EditLabel.Height = 13
|
||||||
|
EditLabel.Caption = 'Server'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object LabeledEdit2: TLabeledEdit
|
||||||
|
Left = 164
|
||||||
|
Top = 84
|
||||||
|
Width = 57
|
||||||
|
Height = 21
|
||||||
|
EditLabel.Width = 19
|
||||||
|
EditLabel.Height = 13
|
||||||
|
EditLabel.Caption = 'Port'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object GroupBox3: TGroupBox
|
||||||
|
Left = 12
|
||||||
|
Top = 12
|
||||||
|
Width = 237
|
||||||
|
Height = 157
|
||||||
|
Caption = 'Account Info'
|
||||||
|
TabOrder = 4
|
||||||
|
object Label4: TLabel
|
||||||
|
Left = 8
|
||||||
|
Top = 20
|
||||||
|
Width = 221
|
||||||
|
Height = 45
|
||||||
|
AutoSize = False
|
||||||
|
Caption =
|
||||||
|
'Some realms are open to the public riffraff, but others may requ' +
|
||||||
|
'ire a valid account. You can enter default account information h' +
|
||||||
|
'ere.'
|
||||||
|
WordWrap = True
|
||||||
|
end
|
||||||
|
object Account: TLabeledEdit
|
||||||
|
Left = 8
|
||||||
|
Top = 84
|
||||||
|
Width = 221
|
||||||
|
Height = 21
|
||||||
|
EditLabel.Width = 40
|
||||||
|
EditLabel.Height = 13
|
||||||
|
EditLabel.Caption = 'Account'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
TabOrder = 0
|
||||||
|
OnChange = AccountChange
|
||||||
|
end
|
||||||
|
object Password: TLabeledEdit
|
||||||
|
Left = 8
|
||||||
|
Top = 124
|
||||||
|
Width = 221
|
||||||
|
Height = 21
|
||||||
|
EditLabel.Width = 46
|
||||||
|
EditLabel.Height = 13
|
||||||
|
EditLabel.Caption = 'Password'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
PasswordChar = '*'
|
||||||
|
TabOrder = 1
|
||||||
|
OnChange = AccountChange
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
unit Login;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||||
|
Dialogs, StdCtrls, ExtCtrls, Psock, NMHttp;
|
||||||
|
|
||||||
|
type
|
||||||
|
TLoginForm = class(TForm)
|
||||||
|
GroupBox1: TGroupBox;
|
||||||
|
Label1: TLabel;
|
||||||
|
Label2: TLabel;
|
||||||
|
Login: TButton;
|
||||||
|
Button1: TButton;
|
||||||
|
GroupBox2: TGroupBox;
|
||||||
|
LabeledEdit1: TLabeledEdit;
|
||||||
|
LabeledEdit2: TLabeledEdit;
|
||||||
|
Label3: TLabel;
|
||||||
|
GroupBox3: TGroupBox;
|
||||||
|
Account: TLabeledEdit;
|
||||||
|
Password: TLabeledEdit;
|
||||||
|
Label4: TLabel;
|
||||||
|
procedure Label2Click(Sender: TObject);
|
||||||
|
procedure AccountChange(Sender: TObject);
|
||||||
|
procedure LoginClick(Sender: TObject);
|
||||||
|
private
|
||||||
|
{ Private declarations }
|
||||||
|
public
|
||||||
|
{ Public declarations }
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
LoginForm: TLoginForm;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses ShellAPI, Main, NewGuy, SelServ;
|
||||||
|
|
||||||
|
{$R *.dfm}
|
||||||
|
|
||||||
|
procedure TLoginForm.Label2Click(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ShellExecute(GetDesktopWindow(), 'open', PChar(TLabel(Sender).Caption), nil, '', SW_SHOW);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoginForm.AccountChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
Login.Enabled := (Account.Text <> '') and (Password.Text <> '');
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLoginForm.LoginClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MainForm.SetLogin(Account.Text);
|
||||||
|
MainForm.SetPassword(Password.Text);
|
||||||
|
if ServerSelectForm.Go then
|
||||||
|
ModalResult := mrOk;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
@@ -1,33 +1,108 @@
|
|||||||
object Form1: TForm1
|
object MainForm: TMainForm
|
||||||
Left = 219
|
Left = 226
|
||||||
Top = 95
|
Top = 145
|
||||||
Width = 561
|
Width = 682
|
||||||
Height = 538
|
Height = 569
|
||||||
BorderIcons = [biSystemMenu, biMinimize]
|
HorzScrollBar.Visible = False
|
||||||
Caption = 'Progress Quest VI'
|
VertScrollBar.Visible = False
|
||||||
|
Caption = 'Progress Quest'
|
||||||
Color = clBtnFace
|
Color = clBtnFace
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
Font.Color = clWindowText
|
Font.Color = clWindowText
|
||||||
Font.Height = -11
|
Font.Height = -11
|
||||||
Font.Name = 'MS Sans Serif'
|
Font.Name = 'MS Sans Serif'
|
||||||
Font.Style = []
|
Font.Style = []
|
||||||
|
Icon.Data = {
|
||||||
|
0000010001002020000000000000A80800001600000028000000200000004000
|
||||||
|
0000010008000000000080040000000000000000000000000000000000000000
|
||||||
|
0000000080000080000000808000800000008000800080800000C0C0C000C0DC
|
||||||
|
C000F0CAA60004040400080808000C0C0C0011111100161616001C1C1C002222
|
||||||
|
220029292900555555004D4D4D004242420039393900807CFF005050FF009300
|
||||||
|
D600FFECCC00C6D6EF00D6E7E70090A9AD000000330000006600000099000000
|
||||||
|
CC00003300000033330000336600003399000033CC000033FF00006600000066
|
||||||
|
330000666600006699000066CC000066FF000099000000993300009966000099
|
||||||
|
99000099CC000099FF0000CC000000CC330000CC660000CC990000CCCC0000CC
|
||||||
|
FF0000FF660000FF990000FFCC00330000003300330033006600330099003300
|
||||||
|
CC003300FF00333300003333330033336600333399003333CC003333FF003366
|
||||||
|
00003366330033666600336699003366CC003366FF0033990000339933003399
|
||||||
|
6600339999003399CC003399FF0033CC000033CC330033CC660033CC990033CC
|
||||||
|
CC0033CCFF0033FF330033FF660033FF990033FFCC0033FFFF00660000006600
|
||||||
|
330066006600660099006600CC006600FF006633000066333300663366006633
|
||||||
|
99006633CC006633FF00666600006666330066666600666699006666CC006699
|
||||||
|
00006699330066996600669999006699CC006699FF0066CC000066CC330066CC
|
||||||
|
990066CCCC0066CCFF0066FF000066FF330066FF990066FFCC00CC00FF00FF00
|
||||||
|
CC009999000099339900990099009900CC009900000099333300990066009933
|
||||||
|
CC009900FF00996600009966330099336600996699009966CC009933FF009999
|
||||||
|
330099996600999999009999CC009999FF0099CC000099CC330066CC660099CC
|
||||||
|
990099CCCC0099CCFF0099FF000099FF330099CC660099FF990099FFCC0099FF
|
||||||
|
FF00CC00000099003300CC006600CC009900CC00CC0099330000CC333300CC33
|
||||||
|
6600CC339900CC33CC00CC33FF00CC660000CC66330099666600CC669900CC66
|
||||||
|
CC009966FF00CC990000CC993300CC996600CC999900CC99CC00CC99FF00CCCC
|
||||||
|
0000CCCC3300CCCC6600CCCC9900CCCCCC00CCCCFF00CCFF0000CCFF330099FF
|
||||||
|
6600CCFF9900CCFFCC00CCFFFF00CC003300FF006600FF009900CC330000FF33
|
||||||
|
3300FF336600FF339900FF33CC00FF33FF00FF660000FF663300CC666600FF66
|
||||||
|
9900FF66CC00CC66FF00FF990000FF993300FF996600FF999900FF99CC00FF99
|
||||||
|
FF00FFCC0000FFCC3300FFCC6600FFCC9900FFCCCC00FFCCFF00FFFF3300CCFF
|
||||||
|
6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
|
||||||
|
66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
|
||||||
|
D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
|
||||||
|
80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000A0A
|
||||||
|
0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A4B0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
|
150F0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F150A0A0A0C
|
||||||
|
0E0E0C0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0C0E0E0C0A2311
|
||||||
|
15220E0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F22143D234313
|
||||||
|
2243110A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A11432213430A22
|
||||||
|
23296710290A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A2210122923220A0A0A
|
||||||
|
0A514443151D0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A4B0E151544510A0A0A0A0A
|
||||||
|
0A0A294A43140E0A0A150E0E220A0A0E1D0E220A0A0E14434A030A0A0A0A0A0A
|
||||||
|
0A0A0A514A224A430E0E1443220E111543140E0E4344224A4A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A514B1514220E2243150E444444444322222214150A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A5174151D4A434A4A15104422234A434A1D15740A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A5222444B457422224B0A0A4B222274454B44220A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A510A4B4C3F4C44EA4A0A0A4A6D444C3F4C4B0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0E15294B4523ECC8C44A4AE946EC23454B29150E0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A444A4A234AAEC8FCFCA7E9F9F946AE44234A4A430A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A232244224AEFA7FCFC62F9F9F946EF4A224422230A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A4B434A110A4A8DA862F9F9F969EC0A0A114A43290A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A2222100A0AED46F9F9F962A7ED0A0A104322520A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A4B0C030AEB46F9F9F962FCFCA7EC0A030C0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A0A0A0AED46F9F9F9E3A8FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A0A0AED46F9F9F9E3F7F7E6FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A0AEB46F9F9F9E3ED0A0A92E6FCFCFCA7EB0A0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A0A6D46F9F9F9E3ED0A0A0A0A92E6FCFCFCA76D0A0A0A0A0A0A0A0A0A
|
||||||
|
0A0A0A0A14B5F047F9E3F70A0A0A0A0A0AB5E6FCC8DDB5140A0A0A0A0A0A0A0A
|
||||||
|
0A0A0AAE09F3F3BCE3B50A0A0A0A0A0A0A0AB5D0DDF3F309AE0A0A0A0A0A0A0A
|
||||||
|
0A0ABCF4FFF4F4F4070A0A0A0A0A0A0A0A0A0A07F4F4F4FFDEBC0A0A0A0A0A0A
|
||||||
|
0A991BFFFFF2DDB60A0A0A0A0A0A0A0A0A0A0A0AB6DDF3FFFF1B990A0A0A0A0A
|
||||||
|
0A92B51909B5920A0A0A0A0A0A0A0A0A0A0A0A0A0A92B509DDB5920A0A0A0A0A
|
||||||
|
0A720909ECEB0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0AECEC0909720A0A0A0A0A
|
||||||
|
0AF78DAEED0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1CAE8D920A0A0AFFFF
|
||||||
|
FFFFFFFFFFFFEFFFFFFFCFFFFFF387FFFFE107FFFFE007FFFFE081FFFF81E0FF
|
||||||
|
FE07F061860FF800001FF800007FFC00007FFC01807FFC01807FFC00003FFC00
|
||||||
|
003FFC00003FFC200C3FFE300C3FFE2004FFFFC003FFFF8001FFFF0180FFFE03
|
||||||
|
C07FFC07E03FF80FF01FF01FF80FE03FFC07E07FFE07E0FFFF07E1FFFF87}
|
||||||
|
KeyPreview = True
|
||||||
OldCreateOrder = False
|
OldCreateOrder = False
|
||||||
Position = poScreenCenter
|
Position = poScreenCenter
|
||||||
|
OnClose = FormClose
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
|
OnKeyDown = FormKeyDown
|
||||||
OnShow = FormShow
|
OnShow = FormShow
|
||||||
PixelsPerInch = 96
|
PixelsPerInch = 96
|
||||||
TextHeight = 13
|
TextHeight = 13
|
||||||
object Panel1: TPanel
|
object Panel1: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 185
|
Width = 200
|
||||||
Height = 476
|
Height = 507
|
||||||
Align = alLeft
|
Align = alLeft
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object Label1: TLabel
|
object Label1: TLabel
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 1
|
Top = 1
|
||||||
Width = 183
|
Width = 198
|
||||||
Height = 13
|
Height = 13
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Caption = 'Character Sheet'
|
Caption = 'Character Sheet'
|
||||||
@@ -40,16 +115,30 @@ object Form1: TForm1
|
|||||||
end
|
end
|
||||||
object Label6: TLabel
|
object Label6: TLabel
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 409
|
Top = 229
|
||||||
Width = 183
|
Width = 198
|
||||||
Height = 13
|
Height = 13
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Caption = 'Experience'
|
Caption = 'Experience'
|
||||||
end
|
end
|
||||||
|
object Label4: TLabel
|
||||||
|
Left = 1
|
||||||
|
Top = 258
|
||||||
|
Width = 198
|
||||||
|
Height = 13
|
||||||
|
Align = alTop
|
||||||
|
Caption = 'Spell Book'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
end
|
||||||
object Traits: TListView
|
object Traits: TListView
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 14
|
Top = 14
|
||||||
Width = 183
|
Width = 198
|
||||||
Height = 79
|
Height = 79
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Columns = <
|
Columns = <
|
||||||
@@ -62,50 +151,23 @@ object Form1: TForm1
|
|||||||
Caption = 'Value'
|
Caption = 'Value'
|
||||||
end>
|
end>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
Items.Data = {
|
Items.Data = {
|
||||||
6E0000000400000000000000FFFFFFFFFFFFFFFF0000000000000000044E616D
|
6E0000000400000000000000FFFFFFFFFFFFFFFF0000000000000000044E616D
|
||||||
6500000000FFFFFFFFFFFFFFFF0000000000000000045261636500000000FFFF
|
6500000000FFFFFFFFFFFFFFFF0000000000000000045261636500000000FFFF
|
||||||
FFFFFFFFFFFF000000000000000005436C61737300000000FFFFFFFFFFFFFFFF
|
FFFFFFFFFFFF000000000000000005436C61737300000000FFFFFFFFFFFFFFFF
|
||||||
0000000000000000054C6576656C}
|
0000000000000000054C6576656C}
|
||||||
|
MultiSelect = True
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
TabOrder = 2
|
RowSelect = True
|
||||||
ViewStyle = vsReport
|
|
||||||
end
|
|
||||||
object Equips: TListView
|
|
||||||
Left = 1
|
|
||||||
Top = 229
|
|
||||||
Width = 183
|
|
||||||
Height = 180
|
|
||||||
Align = alTop
|
|
||||||
Columns = <
|
|
||||||
item
|
|
||||||
Caption = 'Position'
|
|
||||||
Width = 60
|
|
||||||
end
|
|
||||||
item
|
|
||||||
AutoSize = True
|
|
||||||
Caption = 'Equipped'
|
|
||||||
end>
|
|
||||||
ColumnClick = False
|
|
||||||
Items.Data = {
|
|
||||||
410100000B00000000000000FFFFFFFFFFFFFFFF000000000000000006576561
|
|
||||||
706F6E00000000FFFFFFFFFFFFFFFF000000000000000006536865696C640000
|
|
||||||
0000FFFFFFFFFFFFFFFF00000000000000000448656C6D00000000FFFFFFFFFF
|
|
||||||
FFFFFF0000000000000000074861756265726B00000000FFFFFFFFFFFFFFFF00
|
|
||||||
000000000000000A4272617373616972747300000000FFFFFFFFFFFFFFFF0000
|
|
||||||
0000000000000956616D62726163657300000000FFFFFFFFFFFFFFFF00000000
|
|
||||||
00000000094761756E746C65747300000000FFFFFFFFFFFFFFFF000000000000
|
|
||||||
00000847616D6265736F6E00000000FFFFFFFFFFFFFFFF000000000000000007
|
|
||||||
4375697373657300000000FFFFFFFFFFFFFFFF00000000000000000747726561
|
|
||||||
76657300000000FFFFFFFFFFFFFFFF000000000000000009536F6C6C65726574
|
|
||||||
73}
|
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
ViewStyle = vsReport
|
ViewStyle = vsReport
|
||||||
end
|
end
|
||||||
object Stats: TListView
|
object Stats: TListView
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 93
|
Top = 93
|
||||||
Width = 183
|
Width = 198
|
||||||
Height = 136
|
Height = 136
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Columns = <
|
Columns = <
|
||||||
@@ -118,6 +180,8 @@ object Form1: TForm1
|
|||||||
Caption = 'Value'
|
Caption = 'Value'
|
||||||
end>
|
end>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
Items.Data = {
|
Items.Data = {
|
||||||
CE0000000800000000000000FFFFFFFFFFFFFFFF000000000000000003535452
|
CE0000000800000000000000FFFFFFFFFFFFFFFF000000000000000003535452
|
||||||
00000000FFFFFFFFFFFFFFFF000000000000000003434F4E00000000FFFFFFFF
|
00000000FFFFFFFFFFFFFFFF000000000000000003434F4E00000000FFFFFFFF
|
||||||
@@ -126,60 +190,116 @@ object Form1: TForm1
|
|||||||
00000000FFFFFFFFFFFFFFFF00000000000000000343484100000000FFFFFFFF
|
00000000FFFFFFFFFFFFFFFF00000000000000000343484100000000FFFFFFFF
|
||||||
FFFFFFFF0000000000000000064850204D617800000000FFFFFFFFFFFFFFFF00
|
FFFFFFFF0000000000000000064850204D617800000000FFFFFFFFFFFFFFFF00
|
||||||
00000000000000064D50204D6178}
|
00000000000000064D50204D6178}
|
||||||
|
MultiSelect = True
|
||||||
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
ViewStyle = vsReport
|
ViewStyle = vsReport
|
||||||
end
|
end
|
||||||
object ExpBar: TProgressBar
|
object ExpBar: TProgressBar
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 422
|
Top = 242
|
||||||
Width = 183
|
Width = 198
|
||||||
Height = 16
|
Height = 16
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Min = 0
|
Min = 0
|
||||||
Max = 100
|
Max = 100
|
||||||
|
ParentShowHint = False
|
||||||
Position = 50
|
Position = 50
|
||||||
Smooth = True
|
Smooth = True
|
||||||
TabOrder = 3
|
ShowHint = True
|
||||||
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
object GoButton: TButton
|
object Spells: TListView
|
||||||
Left = 52
|
Left = 1
|
||||||
Top = 444
|
Top = 271
|
||||||
Width = 75
|
Width = 198
|
||||||
Height = 25
|
Height = 203
|
||||||
Caption = 'Go'
|
Align = alClient
|
||||||
|
Columns = <
|
||||||
|
item
|
||||||
|
AutoSize = True
|
||||||
|
Caption = 'Spell'
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Caption = 'Level'
|
||||||
|
Width = 60
|
||||||
|
end>
|
||||||
|
ColumnClick = False
|
||||||
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
|
MultiSelect = True
|
||||||
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
|
TabOrder = 3
|
||||||
|
ViewStyle = vsReport
|
||||||
|
end
|
||||||
|
object Cheats: TPanel
|
||||||
|
Left = 1
|
||||||
|
Top = 474
|
||||||
|
Width = 198
|
||||||
|
Height = 32
|
||||||
|
Align = alBottom
|
||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
OnClick = GoButtonClick
|
Visible = False
|
||||||
|
object CashIn: TButton
|
||||||
|
Left = 32
|
||||||
|
Top = 4
|
||||||
|
Width = 25
|
||||||
|
Height = 25
|
||||||
|
Caption = '$'
|
||||||
|
TabOrder = 0
|
||||||
|
OnClick = CashInClick
|
||||||
end
|
end
|
||||||
object Button1: TButton
|
object Button1: TButton
|
||||||
Left = 12
|
Left = 4
|
||||||
Top = 444
|
Top = 4
|
||||||
Width = 25
|
Width = 25
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'L+1'
|
Caption = 'L+1'
|
||||||
TabOrder = 5
|
TabOrder = 1
|
||||||
OnClick = Button1Click
|
OnClick = Button1Click
|
||||||
end
|
end
|
||||||
object Button2: TButton
|
object FinishQuest: TButton
|
||||||
Left = 148
|
Left = 92
|
||||||
Top = 444
|
Top = 4
|
||||||
Width = 27
|
Width = 27
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'Q!'
|
Caption = 'Q!'
|
||||||
TabOrder = 6
|
TabOrder = 2
|
||||||
|
OnClick = FinishQuestClick
|
||||||
|
end
|
||||||
|
object Button3: TButton
|
||||||
|
Left = 124
|
||||||
|
Top = 4
|
||||||
|
Width = 27
|
||||||
|
Height = 25
|
||||||
|
Caption = 'X!'
|
||||||
|
TabOrder = 3
|
||||||
OnClick = SpeedButton1Click
|
OnClick = SpeedButton1Click
|
||||||
end
|
end
|
||||||
|
object CheatPlot: TButton
|
||||||
|
Left = 60
|
||||||
|
Top = 3
|
||||||
|
Width = 27
|
||||||
|
Height = 25
|
||||||
|
Caption = 'P!'
|
||||||
|
TabOrder = 4
|
||||||
|
OnClick = CheatPlotClick
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object Panel3: TPanel
|
object Panel3: TPanel
|
||||||
Left = 370
|
Left = 474
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 183
|
Width = 200
|
||||||
Height = 476
|
Height = 507
|
||||||
Align = alLeft
|
Align = alRight
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
object Label3: TLabel
|
object Label3: TLabel
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 201
|
Top = 177
|
||||||
Width = 181
|
Width = 198
|
||||||
Height = 13
|
Height = 13
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Caption = 'Quests'
|
Caption = 'Quests'
|
||||||
@@ -193,7 +313,7 @@ object Form1: TForm1
|
|||||||
object Label2: TLabel
|
object Label2: TLabel
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 1
|
Top = 1
|
||||||
Width = 181
|
Width = 198
|
||||||
Height = 13
|
Height = 13
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Caption = 'Plot Development'
|
Caption = 'Plot Development'
|
||||||
@@ -206,20 +326,22 @@ object Form1: TForm1
|
|||||||
end
|
end
|
||||||
object QuestBar: TProgressBar
|
object QuestBar: TProgressBar
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 459
|
Top = 490
|
||||||
Width = 181
|
Width = 198
|
||||||
Height = 16
|
Height = 16
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
Min = 0
|
Min = 0
|
||||||
Max = 0
|
Max = 0
|
||||||
|
ParentShowHint = False
|
||||||
Smooth = True
|
Smooth = True
|
||||||
|
ShowHint = True
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
object Plots: TListView
|
object Plots: TListView
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 14
|
Top = 14
|
||||||
Width = 181
|
Width = 198
|
||||||
Height = 171
|
Height = 147
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Columns = <
|
Columns = <
|
||||||
item
|
item
|
||||||
@@ -227,7 +349,12 @@ object Form1: TForm1
|
|||||||
Caption = 'Act'
|
Caption = 'Act'
|
||||||
end>
|
end>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
IconOptions.Arrangement = iaLeft
|
IconOptions.Arrangement = iaLeft
|
||||||
|
MultiSelect = True
|
||||||
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
ShowColumnHeaders = False
|
ShowColumnHeaders = False
|
||||||
StateImages = ImageList1
|
StateImages = ImageList1
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
@@ -235,20 +362,22 @@ object Form1: TForm1
|
|||||||
end
|
end
|
||||||
object PlotBar: TProgressBar
|
object PlotBar: TProgressBar
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 185
|
Top = 161
|
||||||
Width = 181
|
Width = 198
|
||||||
Height = 16
|
Height = 16
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Min = 0
|
Min = 0
|
||||||
Max = 0
|
Max = 0
|
||||||
|
ParentShowHint = False
|
||||||
Smooth = True
|
Smooth = True
|
||||||
|
ShowHint = True
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
object Quests: TListView
|
object Quests: TListView
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 214
|
Top = 190
|
||||||
Width = 181
|
Width = 198
|
||||||
Height = 245
|
Height = 300
|
||||||
Align = alClient
|
Align = alClient
|
||||||
Columns = <
|
Columns = <
|
||||||
item
|
item
|
||||||
@@ -257,8 +386,11 @@ object Form1: TForm1
|
|||||||
end>
|
end>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
FlatScrollBars = True
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
IconOptions.Arrangement = iaLeft
|
IconOptions.Arrangement = iaLeft
|
||||||
|
MultiSelect = True
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
ShowColumnHeaders = False
|
ShowColumnHeaders = False
|
||||||
StateImages = ImageList1
|
StateImages = ImageList1
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
@@ -266,30 +398,16 @@ object Form1: TForm1
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
object Panel2: TPanel
|
object Panel2: TPanel
|
||||||
Left = 185
|
Left = 200
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 185
|
Width = 274
|
||||||
Height = 476
|
Height = 507
|
||||||
Align = alLeft
|
Align = alClient
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
object Label4: TLabel
|
object InventoryLabelAlsoGameStyle: TLabel
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 291
|
Top = 176
|
||||||
Width = 183
|
Width = 272
|
||||||
Height = 13
|
|
||||||
Align = alBottom
|
|
||||||
Caption = 'Spell Book'
|
|
||||||
Font.Charset = DEFAULT_CHARSET
|
|
||||||
Font.Color = clWindowText
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'MS Sans Serif'
|
|
||||||
Font.Style = [fsBold]
|
|
||||||
ParentFont = False
|
|
||||||
end
|
|
||||||
object Label5: TLabel
|
|
||||||
Left = 1
|
|
||||||
Top = 1
|
|
||||||
Width = 183
|
|
||||||
Height = 13
|
Height = 13
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Caption = 'Inventory'
|
Caption = 'Inventory'
|
||||||
@@ -302,11 +420,11 @@ object Form1: TForm1
|
|||||||
end
|
end
|
||||||
object Label7: TLabel
|
object Label7: TLabel
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 262
|
Top = 477
|
||||||
Width = 183
|
Width = 272
|
||||||
Height = 13
|
Height = 13
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
Caption = 'Encumberance'
|
Caption = 'Encumbrance'
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
Font.Color = clWindowText
|
Font.Color = clWindowText
|
||||||
Font.Height = -11
|
Font.Height = -11
|
||||||
@@ -314,30 +432,25 @@ object Form1: TForm1
|
|||||||
Font.Style = []
|
Font.Style = []
|
||||||
ParentFont = False
|
ParentFont = False
|
||||||
end
|
end
|
||||||
object Spells: TListView
|
object Label8: TLabel
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 304
|
Top = 1
|
||||||
Width = 183
|
Width = 272
|
||||||
Height = 171
|
Height = 13
|
||||||
Align = alBottom
|
Align = alTop
|
||||||
Columns = <
|
Caption = 'Equipment'
|
||||||
item
|
Font.Charset = DEFAULT_CHARSET
|
||||||
AutoSize = True
|
Font.Color = clWindowText
|
||||||
Caption = 'Spell'
|
Font.Height = -11
|
||||||
end
|
Font.Name = 'MS Sans Serif'
|
||||||
item
|
Font.Style = [fsBold]
|
||||||
Caption = 'Level'
|
ParentFont = False
|
||||||
Width = 40
|
|
||||||
end>
|
|
||||||
ColumnClick = False
|
|
||||||
TabOrder = 0
|
|
||||||
ViewStyle = vsReport
|
|
||||||
end
|
end
|
||||||
object Inventory: TListView
|
object Inventory: TListView
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 14
|
Top = 189
|
||||||
Width = 183
|
Width = 272
|
||||||
Height = 248
|
Height = 288
|
||||||
Align = alClient
|
Align = alClient
|
||||||
Columns = <
|
Columns = <
|
||||||
item
|
item
|
||||||
@@ -345,30 +458,112 @@ object Form1: TForm1
|
|||||||
Caption = 'Item'
|
Caption = 'Item'
|
||||||
end
|
end
|
||||||
item
|
item
|
||||||
|
Alignment = taRightJustify
|
||||||
Caption = 'Qty'
|
Caption = 'Qty'
|
||||||
Width = 40
|
Width = 69
|
||||||
end>
|
end>
|
||||||
ColumnClick = False
|
ColumnClick = False
|
||||||
TabOrder = 1
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
|
MultiSelect = True
|
||||||
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
|
TabOrder = 0
|
||||||
ViewStyle = vsReport
|
ViewStyle = vsReport
|
||||||
end
|
end
|
||||||
object EncumBar: TProgressBar
|
object EncumBar: TProgressBar
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 275
|
Top = 490
|
||||||
Width = 183
|
Width = 272
|
||||||
Height = 16
|
Height = 16
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
Min = 0
|
Min = 0
|
||||||
Max = 100
|
Max = 100
|
||||||
|
ParentShowHint = False
|
||||||
Position = 50
|
Position = 50
|
||||||
Smooth = True
|
Smooth = True
|
||||||
|
ShowHint = True
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object Equips: TListView
|
||||||
|
Left = 1
|
||||||
|
Top = 14
|
||||||
|
Width = 272
|
||||||
|
Height = 162
|
||||||
|
Align = alTop
|
||||||
|
Columns = <
|
||||||
|
item
|
||||||
|
Caption = 'Position'
|
||||||
|
Width = 60
|
||||||
|
end
|
||||||
|
item
|
||||||
|
AutoSize = True
|
||||||
|
Caption = 'Equipped'
|
||||||
|
end>
|
||||||
|
ColumnClick = False
|
||||||
|
FlatScrollBars = True
|
||||||
|
HideSelection = False
|
||||||
|
Items.Data = {
|
||||||
|
410100000B00000000000000FFFFFFFFFFFFFFFF000000000000000006576561
|
||||||
|
706F6E00000000FFFFFFFFFFFFFFFF000000000000000006536869656C640000
|
||||||
|
0000FFFFFFFFFFFFFFFF00000000000000000448656C6D00000000FFFFFFFFFF
|
||||||
|
FFFFFF0000000000000000074861756265726B00000000FFFFFFFFFFFFFFFF00
|
||||||
|
000000000000000A4272617373616972747300000000FFFFFFFFFFFFFFFF0000
|
||||||
|
0000000000000956616D62726163657300000000FFFFFFFFFFFFFFFF00000000
|
||||||
|
00000000094761756E746C65747300000000FFFFFFFFFFFFFFFF000000000000
|
||||||
|
00000847616D6265736F6E00000000FFFFFFFFFFFFFFFF000000000000000007
|
||||||
|
4375697373657300000000FFFFFFFFFFFFFFFF00000000000000000747726561
|
||||||
|
76657300000000FFFFFFFFFFFFFFFF000000000000000009536F6C6C65726574
|
||||||
|
73}
|
||||||
|
MultiSelect = True
|
||||||
|
ReadOnly = True
|
||||||
|
RowSelect = True
|
||||||
|
ShowColumnHeaders = False
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
|
ViewStyle = vsReport
|
||||||
|
end
|
||||||
|
object vars: TPanel
|
||||||
|
Left = 84
|
||||||
|
Top = 32
|
||||||
|
Width = 177
|
||||||
|
Height = 129
|
||||||
|
Caption = 'vars'
|
||||||
|
TabOrder = 3
|
||||||
|
Visible = False
|
||||||
|
object fTask: TLabel
|
||||||
|
Left = 20
|
||||||
|
Top = 16
|
||||||
|
Width = 27
|
||||||
|
Height = 13
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'fTask'
|
||||||
|
Color = clMoneyGreen
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object fQuest: TLabel
|
||||||
|
Left = 24
|
||||||
|
Top = 36
|
||||||
|
Width = 31
|
||||||
|
Height = 13
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'fQuest'
|
||||||
|
Color = clSkyBlue
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object fQueue: TListBox
|
||||||
|
Left = 12
|
||||||
|
Top = 72
|
||||||
|
Width = 49
|
||||||
|
Height = 45
|
||||||
|
ItemHeight = 13
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object Panel4: TPanel
|
object Panel4: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 476
|
Top = 507
|
||||||
Width = 553
|
Width = 674
|
||||||
Height = 35
|
Height = 35
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
Caption = 'Panel4'
|
Caption = 'Panel4'
|
||||||
@@ -376,7 +571,7 @@ object Form1: TForm1
|
|||||||
object Kill: TStatusBar
|
object Kill: TStatusBar
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = -1
|
Top = -1
|
||||||
Width = 551
|
Width = 672
|
||||||
Height = 19
|
Height = 19
|
||||||
Panels = <
|
Panels = <
|
||||||
item
|
item
|
||||||
@@ -385,10 +580,10 @@ object Form1: TForm1
|
|||||||
SimplePanel = True
|
SimplePanel = True
|
||||||
SimpleText = 'Welcome to Progress Quest!'
|
SimpleText = 'Welcome to Progress Quest!'
|
||||||
end
|
end
|
||||||
object KillBar: TProgressBar
|
object TaskBar: TProgressBar
|
||||||
Left = 1
|
Left = 1
|
||||||
Top = 18
|
Top = 18
|
||||||
Width = 551
|
Width = 672
|
||||||
Height = 16
|
Height = 16
|
||||||
Align = alBottom
|
Align = alBottom
|
||||||
Min = 0
|
Min = 0
|
||||||
@@ -412,7 +607,7 @@ object Form1: TForm1
|
|||||||
Left = 92
|
Left = 92
|
||||||
Top = 52
|
Top = 52
|
||||||
Bitmap = {
|
Bitmap = {
|
||||||
494C01010200040004000C000C00FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
|
494C01010200040004000C000C00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||||
0000000000003600000028000000300000000C00000001001000000000008004
|
0000000000003600000028000000300000000C00000001001000000000008004
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
@@ -455,6 +650,7 @@ object Form1: TForm1
|
|||||||
000000000000000000000000FFFFFF0000100100000000007FD7FD0000000000
|
000000000000000000000000FFFFFF0000100100000000007FD7FD0000000000
|
||||||
7FD77D00000000007FD63D00000000007FD41D00000000007FD48D0000000000
|
7FD77D00000000007FD63D00000000007FD41D00000000007FD48D0000000000
|
||||||
7FD5C500000000007FD7E500000000007FD7F500000000007FD7FD0000000000
|
7FD5C500000000007FD7E500000000007FD7F500000000007FD7FD0000000000
|
||||||
0010010000000000FFFFFF0000000000}
|
0010010000000000FFFFFF000000000000000000000000000000000000000000
|
||||||
|
000000000000}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,10 +1,10 @@
|
|||||||
object Form2: TForm2
|
object NewGuyForm: TNewGuyForm
|
||||||
Left = 264
|
Left = 323
|
||||||
Top = 169
|
Top = 164
|
||||||
BorderIcons = []
|
BorderIcons = []
|
||||||
BorderStyle = bsDialog
|
BorderStyle = bsDialog
|
||||||
Caption = 'Progress Quest - New Character'
|
Caption = 'Progress Quest - New Character'
|
||||||
ClientHeight = 457
|
ClientHeight = 458
|
||||||
ClientWidth = 509
|
ClientWidth = 509
|
||||||
Color = clBtnFace
|
Color = clBtnFace
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
@@ -46,43 +46,43 @@ object Form2: TForm2
|
|||||||
6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
|
6600FFFF9900FFFFCC006666FF0066FF660066FFFF00FF666600FF66FF00FFFF
|
||||||
66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
|
66002100A5005F5F5F00777777008686860096969600CBCBCB00B2B2B200D7D7
|
||||||
D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
|
D700DDDDDD00E3E3E300EAEAEA00F1F1F100F8F8F800F0FBFF00A4A0A0008080
|
||||||
80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF005852
|
80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000A0A
|
||||||
5151515151515258585858585858585858585858585858585852515151515852
|
0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
51514A4A4A515152585858585858585858585858585858585251514B4A4B5852
|
0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
514B4A4A4A4B51515258585858585858585858585858585251514B4A4A4A5852
|
0A4B0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
150F4A4A4A4A4B5151515152525251525252525252525151514A0F154A4B580B
|
150F0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F150A0A0A0C
|
||||||
0E0E0B4A4A4A4A4A5151515151515151515151515151514B4B0B0E0E0B512311
|
0E0E0C0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0C0E0E0C0A2311
|
||||||
15220E514A4A4A4A4A4A4A4B4A4A4A4A4A4A4A4A4A4A4A4A4A0F22143D234313
|
15220E0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0F22143D234313
|
||||||
22431151514A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A11432213435822
|
2243110A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A11432213430A22
|
||||||
23296710294B4A4A44442244154422441544224444444A221012292322585858
|
23296710290A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A2210122923220A0A0A
|
||||||
58514443151D4B4A442215221522152215221522154B0E151544515252585858
|
0A514443151D0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A4B0E151544510A0A0A0A0A
|
||||||
5879294A43140D4A22150D0E2243100E1D0D2215220D14434A03525258585858
|
0A0A294A43140E0A0A150E0E220A0A0E1D0E220A0A0E14434A030A0A0A0A0A0A
|
||||||
585852514A224A430E0E1443220D111543140E0E4344224A4A51515258585858
|
0A0A0A514A224A430E0E1443220E111543140E0E4344224A4A0A0A0A0A0A0A0A
|
||||||
585858514B1514220E2243150D444444444322222214154B4B4B515258585858
|
0A0A0A514B1514220E2243150E444444444322222214150A0A0A0A0A0A0A0A0A
|
||||||
585858585174151D4A434A4A15104422234A434A1D15742A4A4B515258585858
|
0A0A0A0A5174151D4A434A4A15104422234A434A1D15740A0A0A0A0A0A0A0A0A
|
||||||
585858585222444B457422224B44224B222274454B4422524A4B515258585858
|
0A0A0A0A5222444B457422224B0A0A4B222274454B44220A0A0A0A0A0A0A0A0A
|
||||||
58585858510A4B4C3F4C44EA4A22224A6D444C3F4C4B0A4A4A51515258585858
|
0A0A0A0A510A4B4C3F4C44EA4A0A0A4A6D444C3F4C4B0A0A0A0A0A0A0A0A0A0A
|
||||||
585858580D15294B4523ECC8C44A4AE946EC23454B29150D4A51515858585858
|
0A0A0A0A0E15294B4523ECC8C44A4AE946EC23454B29150E0A0A0A0A0A0A0A0A
|
||||||
58585858444A4A234AAEC8FCFCA7E9F9F946AE44234A4A435151525858585858
|
0A0A0A0A444A4A234AAEC8FCFCA7E9F9F946AE44234A4A430A0A0A0A0A0A0A0A
|
||||||
58585858232244224AEFA7FCFC62F9F9F946EF4A224422235151525858585858
|
0A0A0A0A232244224AEFA7FCFC62F9F9F946EF4A224422230A0A0A0A0A0A0A0A
|
||||||
585858584B434A110C4A8DA862F9F9F9698D4A0C114A43295151525858585858
|
0A0A0A0A4B434A110A4A8DA862F9F9F969EC0A0A114A43290A0A0A0A0A0A0A0A
|
||||||
5858585852222210514A8D46F9F9F962A78D4A51104322524B51525858585858
|
0A0A0A0A0A2222100A0AED46F9F9F962A7ED0A0A104322520A0A0A0A0A0A0A0A
|
||||||
58585858524B0C034AEB46F9F9F962FCFCA7F84A030C4B4A4A51515258585858
|
0A0A0A0A0A4B0C030AEB46F9F9F962FCFCA7EC0A030C0A0A0A0A0A0A0A0A0A0A
|
||||||
5858585251514B4AED46F9F9F9E3A8FCFCFCA7ED4A4B4A4A4A4B515152585858
|
0A0A0A0A0A0A0A0AED46F9F9F9E3A8FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A0A
|
||||||
58585851514B4AED46F9F9F9E3F7F7E6FCFCFCA7ED4A4A4A4A4A4B5152585858
|
0A0A0A0A0A0A0AED46F9F9F9E3F7F7E6FCFCFCA7ED0A0A0A0A0A0A0A0A0A0A0A
|
||||||
585852514B4AEB46F9F9F9E3ED525892E6FCFCFCA7EB4A4A4A4A4A4B51525858
|
0A0A0A0A0A0AEB46F9F9F9E3ED0A0A92E6FCFCFCA7EB0A0A0A0A0A0A0A0A0A0A
|
||||||
585852514A6D46F9F9F9E3ED5858585892E6FCFCFCA76D4A4A4A4A4A51515858
|
0A0A0A0A0A6D46F9F9F9E3ED0A0A0A0A92E6FCFCFCA76D0A0A0A0A0A0A0A0A0A
|
||||||
5858514B14B5F047F9E3F7585858585858B5E6FCC8DDB5144A4A4A4A51515858
|
0A0A0A0A14B5F047F9E3F70A0A0A0A0A0AB5E6FCC8DDB5140A0A0A0A0A0A0A0A
|
||||||
585852AE09F3F3BCE3B55858585858585858B5D0DDF3F309AE4A4B4B51515858
|
0A0A0AAE09F3F3BCE3B50A0A0A0A0A0A0A0AB5D0DDF3F309AE0A0A0A0A0A0A0A
|
||||||
5858BCF4F5F4F4F4075858585858585858585807F4F4F4F5DEBC515151525858
|
0A0ABCF4FFF4F4F4070A0A0A0A0A0A0A0A0A0A07F4F4F4FFDEBC0A0A0A0A0A0A
|
||||||
58991BF5F5F2DDB6585858585858585858585858B6DDF3F5F51B995152585858
|
0A991BFFFFF2DDB60A0A0A0A0A0A0A0A0A0A0A0AB6DDF3FFFF1B990A0A0A0A0A
|
||||||
5892B51909B592585858585858585858585858585892B509DDB5925858585858
|
0A92B51909B5920A0A0A0A0A0A0A0A0A0A0A0A0A0A92B509DDB5920A0A0A0A0A
|
||||||
58720909ECEB58585858585858585858585858585858F8EC0909725858585858
|
0A720909ECEB0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0AECEC0909720A0A0A0A0A
|
||||||
58F78DAEED5858585858585858585858585858585858581CAE8D925858580000
|
0AF78DAEED0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1CAE8D920A0A0AFFFF
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
FFFFFFFFFFFFEFFFFFFFCFFFFFF387FFFFE107FFFFE007FFFFE081FFFF81E0FF
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
FE07F061860FF800001FF800007FFC00007FFC01807FFC01807FFC00003FFC00
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
003FFC00003FFC200C3FFE300C3FFE2004FFFFC003FFFF8001FFFF0180FFFE03
|
||||||
000000000000000000000000000000000000000000000000000000000000}
|
C07FFC07E03FF80FF01FF01FF80FE03FFC07E07FFE07E0FFFF07E1FFFF87}
|
||||||
OldCreateOrder = False
|
OldCreateOrder = False
|
||||||
Position = poScreenCenter
|
Position = poScreenCenter
|
||||||
OnShow = FormShow
|
OnShow = FormShow
|
||||||
@@ -90,9 +90,9 @@ object Form2: TForm2
|
|||||||
TextHeight = 13
|
TextHeight = 13
|
||||||
object Race: TRadioGroup
|
object Race: TRadioGroup
|
||||||
Left = 8
|
Left = 8
|
||||||
Top = 52
|
Top = 48
|
||||||
Width = 185
|
Width = 185
|
||||||
Height = 397
|
Height = 401
|
||||||
Caption = 'Race'
|
Caption = 'Race'
|
||||||
Items.Strings = (
|
Items.Strings = (
|
||||||
'Half Orc'
|
'Half Orc'
|
||||||
@@ -108,20 +108,21 @@ object Form2: TForm2
|
|||||||
'Crested Dwarf'
|
'Crested Dwarf'
|
||||||
'Eel Man'
|
'Eel Man'
|
||||||
'Panda Man'
|
'Panda Man'
|
||||||
'Monster'
|
'Trans-Kobold'
|
||||||
'Enchanted Motorcycle'
|
'Enchanted Motorcycle'
|
||||||
'Will o'#39' the Wisp'
|
'Will o'#39' the Wisp'
|
||||||
'Battle-Finch'
|
'Battle-Finch'
|
||||||
'Double Wookie'
|
'Double Wookiee'
|
||||||
'Skraeling'
|
'Skraeling'
|
||||||
'Demicanadian')
|
'Demicanadian'
|
||||||
|
'Land Squid')
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
object Klass: TRadioGroup
|
object Klass: TRadioGroup
|
||||||
Left = 200
|
Left = 200
|
||||||
Top = 20
|
Top = 48
|
||||||
Width = 185
|
Width = 185
|
||||||
Height = 345
|
Height = 365
|
||||||
Caption = 'Class'
|
Caption = 'Class'
|
||||||
Items.Strings = (
|
Items.Strings = (
|
||||||
'Ur-Paladin'
|
'Ur-Paladin'
|
||||||
@@ -135,73 +136,74 @@ object Form2: TForm2
|
|||||||
'Puma Burgular'
|
'Puma Burgular'
|
||||||
'Runeloremaster'
|
'Runeloremaster'
|
||||||
'Tongueblade'
|
'Tongueblade'
|
||||||
'Hunter Stalker'
|
'Hunter Strangler'
|
||||||
'Battle-Felon'
|
'Battle-Felon'
|
||||||
'Tickle-Mimic'
|
'Tickle-Mimic'
|
||||||
'Slow Poisoner'
|
'Slow Poisoner'
|
||||||
'Bastard Lunatic'
|
'Bastard Lunatic'
|
||||||
'Lowling')
|
'Lowling'
|
||||||
|
'Birdrider')
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
end
|
end
|
||||||
object GroupBox1: TGroupBox
|
object GroupBox1: TGroupBox
|
||||||
Left = 392
|
Left = 392
|
||||||
Top = 20
|
Top = 48
|
||||||
Width = 109
|
Width = 109
|
||||||
Height = 305
|
Height = 365
|
||||||
Caption = 'Stats'
|
Caption = 'Stats'
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
object Label3: TLabel
|
object Label3: TLabel
|
||||||
Left = 22
|
Left = 22
|
||||||
Top = 56
|
Top = 60
|
||||||
Width = 23
|
Width = 23
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'CON'
|
Caption = 'CON'
|
||||||
end
|
end
|
||||||
object Label7: TLabel
|
object Label7: TLabel
|
||||||
Left = 22
|
Left = 22
|
||||||
Top = 152
|
Top = 156
|
||||||
Width = 22
|
Width = 22
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'CHA'
|
Caption = 'CHA'
|
||||||
end
|
end
|
||||||
object Label6: TLabel
|
object Label6: TLabel
|
||||||
Left = 22
|
Left = 22
|
||||||
Top = 128
|
Top = 132
|
||||||
Width = 21
|
Width = 21
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'WIS'
|
Caption = 'WIS'
|
||||||
end
|
end
|
||||||
object Label5: TLabel
|
object Label5: TLabel
|
||||||
Left = 22
|
Left = 22
|
||||||
Top = 104
|
Top = 108
|
||||||
Width = 18
|
Width = 18
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'INT'
|
Caption = 'INT'
|
||||||
end
|
end
|
||||||
object Label4: TLabel
|
object Label4: TLabel
|
||||||
Left = 22
|
Left = 22
|
||||||
Top = 80
|
Top = 84
|
||||||
Width = 22
|
Width = 22
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'DEX'
|
Caption = 'DEX'
|
||||||
end
|
end
|
||||||
object Label2: TLabel
|
object Label2: TLabel
|
||||||
Left = 22
|
Left = 22
|
||||||
Top = 32
|
Top = 36
|
||||||
Width = 22
|
Width = 22
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'STR'
|
Caption = 'STR'
|
||||||
end
|
end
|
||||||
object Label8: TLabel
|
object Label8: TLabel
|
||||||
Left = 22
|
Left = 22
|
||||||
Top = 188
|
Top = 204
|
||||||
Width = 24
|
Width = 24
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'Total'
|
Caption = 'Total'
|
||||||
end
|
end
|
||||||
object CHA: TPanel
|
object CHA: TPanel
|
||||||
Left = 52
|
Left = 52
|
||||||
Top = 148
|
Top = 152
|
||||||
Width = 37
|
Width = 37
|
||||||
Height = 21
|
Height = 21
|
||||||
BevelOuter = bvLowered
|
BevelOuter = bvLowered
|
||||||
@@ -210,7 +212,7 @@ object Form2: TForm2
|
|||||||
end
|
end
|
||||||
object WIS: TPanel
|
object WIS: TPanel
|
||||||
Left = 52
|
Left = 52
|
||||||
Top = 124
|
Top = 128
|
||||||
Width = 37
|
Width = 37
|
||||||
Height = 21
|
Height = 21
|
||||||
BevelOuter = bvLowered
|
BevelOuter = bvLowered
|
||||||
@@ -219,7 +221,7 @@ object Form2: TForm2
|
|||||||
end
|
end
|
||||||
object INT: TPanel
|
object INT: TPanel
|
||||||
Left = 52
|
Left = 52
|
||||||
Top = 100
|
Top = 104
|
||||||
Width = 37
|
Width = 37
|
||||||
Height = 21
|
Height = 21
|
||||||
BevelOuter = bvLowered
|
BevelOuter = bvLowered
|
||||||
@@ -228,7 +230,7 @@ object Form2: TForm2
|
|||||||
end
|
end
|
||||||
object DEX: TPanel
|
object DEX: TPanel
|
||||||
Left = 52
|
Left = 52
|
||||||
Top = 76
|
Top = 80
|
||||||
Width = 37
|
Width = 37
|
||||||
Height = 21
|
Height = 21
|
||||||
BevelOuter = bvLowered
|
BevelOuter = bvLowered
|
||||||
@@ -237,7 +239,7 @@ object Form2: TForm2
|
|||||||
end
|
end
|
||||||
object CON: TPanel
|
object CON: TPanel
|
||||||
Left = 52
|
Left = 52
|
||||||
Top = 52
|
Top = 56
|
||||||
Width = 37
|
Width = 37
|
||||||
Height = 21
|
Height = 21
|
||||||
BevelOuter = bvLowered
|
BevelOuter = bvLowered
|
||||||
@@ -246,7 +248,7 @@ object Form2: TForm2
|
|||||||
end
|
end
|
||||||
object STR: TPanel
|
object STR: TPanel
|
||||||
Left = 52
|
Left = 52
|
||||||
Top = 28
|
Top = 32
|
||||||
Width = 37
|
Width = 37
|
||||||
Height = 21
|
Height = 21
|
||||||
BevelOuter = bvLowered
|
BevelOuter = bvLowered
|
||||||
@@ -255,7 +257,7 @@ object Form2: TForm2
|
|||||||
end
|
end
|
||||||
object Reroll: TButton
|
object Reroll: TButton
|
||||||
Left = 18
|
Left = 18
|
||||||
Top = 232
|
Top = 284
|
||||||
Width = 75
|
Width = 75
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'Roll'
|
Caption = 'Roll'
|
||||||
@@ -264,7 +266,7 @@ object Form2: TForm2
|
|||||||
end
|
end
|
||||||
object Total: TPanel
|
object Total: TPanel
|
||||||
Left = 52
|
Left = 52
|
||||||
Top = 184
|
Top = 200
|
||||||
Width = 37
|
Width = 37
|
||||||
Height = 21
|
Height = 21
|
||||||
BevelOuter = bvLowered
|
BevelOuter = bvLowered
|
||||||
@@ -274,7 +276,7 @@ object Form2: TForm2
|
|||||||
end
|
end
|
||||||
object Unroll: TButton
|
object Unroll: TButton
|
||||||
Left = 18
|
Left = 18
|
||||||
Top = 264
|
Top = 316
|
||||||
Width = 75
|
Width = 75
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'Unroll'
|
Caption = 'Unroll'
|
||||||
@@ -284,8 +286,8 @@ object Form2: TForm2
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
object Sold: TButton
|
object Sold: TButton
|
||||||
Left = 414
|
Left = 342
|
||||||
Top = 412
|
Top = 424
|
||||||
Width = 75
|
Width = 75
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'Sold!'
|
Caption = 'Sold!'
|
||||||
@@ -293,47 +295,9 @@ object Form2: TForm2
|
|||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
OnClick = SoldClick
|
OnClick = SoldClick
|
||||||
end
|
end
|
||||||
object GroupBox2: TGroupBox
|
|
||||||
Left = 200
|
|
||||||
Top = 372
|
|
||||||
Width = 185
|
|
||||||
Height = 77
|
|
||||||
Caption = 'Game Style'
|
|
||||||
TabOrder = 4
|
|
||||||
object Label9: TLabel
|
|
||||||
Left = 20
|
|
||||||
Top = 56
|
|
||||||
Width = 30
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Action'
|
|
||||||
end
|
|
||||||
object Label10: TLabel
|
|
||||||
Left = 120
|
|
||||||
Top = 56
|
|
||||||
Width = 39
|
|
||||||
Height = 13
|
|
||||||
Caption = 'Strategy'
|
|
||||||
end
|
|
||||||
object GameStyle: TTrackBar
|
|
||||||
Left = 24
|
|
||||||
Top = 24
|
|
||||||
Width = 126
|
|
||||||
Height = 33
|
|
||||||
Max = 5
|
|
||||||
Min = 1
|
|
||||||
Orientation = trHorizontal
|
|
||||||
Frequency = 1
|
|
||||||
Position = 3
|
|
||||||
SelEnd = 0
|
|
||||||
SelStart = 0
|
|
||||||
TabOrder = 0
|
|
||||||
TickMarks = tmBottomRight
|
|
||||||
TickStyle = tsAuto
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Name: TLabeledEdit
|
object Name: TLabeledEdit
|
||||||
Left = 8
|
Left = 8
|
||||||
Top = 24
|
Top = 20
|
||||||
Width = 185
|
Width = 185
|
||||||
Height = 21
|
Height = 21
|
||||||
EditLabel.Width = 28
|
EditLabel.Width = 28
|
||||||
@@ -341,53 +305,91 @@ object Form2: TForm2
|
|||||||
EditLabel.Caption = 'Name'
|
EditLabel.Caption = 'Name'
|
||||||
LabelPosition = lpAbove
|
LabelPosition = lpAbove
|
||||||
LabelSpacing = 3
|
LabelSpacing = 3
|
||||||
TabOrder = 5
|
MaxLength = 30
|
||||||
|
TabOrder = 4
|
||||||
Text = 'Grumdrig'
|
Text = 'Grumdrig'
|
||||||
end
|
end
|
||||||
object OldRolls: TListBox
|
object OldRolls: TListBox
|
||||||
Left = 396
|
Left = 396
|
||||||
Top = 232
|
Top = 228
|
||||||
Width = 21
|
Width = 21
|
||||||
Height = 13
|
Height = 13
|
||||||
ItemHeight = 13
|
ItemHeight = 13
|
||||||
TabOrder = 6
|
TabOrder = 5
|
||||||
Visible = False
|
Visible = False
|
||||||
end
|
end
|
||||||
object Button2: TButton
|
object Button2: TButton
|
||||||
Left = 414
|
Left = 426
|
||||||
Top = 376
|
Top = 424
|
||||||
Width = 75
|
Width = 75
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'Never mind.'
|
Caption = 'Cancel'
|
||||||
ModalResult = 2
|
ModalResult = 2
|
||||||
TabOrder = 7
|
TabOrder = 6
|
||||||
end
|
end
|
||||||
object Online: TCheckBox
|
object Account: TLabeledEdit
|
||||||
Left = 400
|
Left = 200
|
||||||
Top = 340
|
Top = 20
|
||||||
Width = 97
|
Width = 185
|
||||||
Height = 17
|
Height = 21
|
||||||
Caption = 'Play online'
|
EditLabel.Width = 40
|
||||||
Checked = True
|
EditLabel.Height = 13
|
||||||
State = cbChecked
|
EditLabel.Caption = 'Account'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
TabOrder = 7
|
||||||
|
Visible = False
|
||||||
|
end
|
||||||
|
object Password: TLabeledEdit
|
||||||
|
Left = 392
|
||||||
|
Top = 20
|
||||||
|
Width = 109
|
||||||
|
Height = 21
|
||||||
|
EditLabel.Width = 46
|
||||||
|
EditLabel.Height = 13
|
||||||
|
EditLabel.Caption = 'Password'
|
||||||
|
LabelPosition = lpAbove
|
||||||
|
LabelSpacing = 3
|
||||||
|
PasswordChar = '*'
|
||||||
TabOrder = 8
|
TabOrder = 8
|
||||||
|
Visible = False
|
||||||
end
|
end
|
||||||
object Server: TNMHTTP
|
object Server: TNMHTTP
|
||||||
Port = 0
|
Port = 0
|
||||||
ReportLevel = 0
|
ReportLevel = 0
|
||||||
Body = 'Default.htm'
|
Body = 'Default.htm'
|
||||||
Header = 'Head.txt'
|
Header = 'Head.txt'
|
||||||
HeaderInfo.Cookie = 'yumyum'
|
HeaderInfo.Referer = 'PQ6.1'
|
||||||
HeaderInfo.Password = 'chickens'
|
|
||||||
InputFileMode = False
|
InputFileMode = False
|
||||||
OutputFileMode = False
|
OutputFileMode = False
|
||||||
|
OnAboutToSend = ServerAboutToSend
|
||||||
OnSuccess = ServerSuccess
|
OnSuccess = ServerSuccess
|
||||||
|
OnFailure = ServerFailure
|
||||||
ProxyPort = 0
|
ProxyPort = 0
|
||||||
Left = 332
|
Left = 332
|
||||||
Top = 312
|
Top = 312
|
||||||
end
|
end
|
||||||
object PoorCodeDesign: TNMURL
|
object PoorCodeDesign: TNMURL
|
||||||
Left = 336
|
Left = 336
|
||||||
Top = 272
|
Top = 268
|
||||||
|
end
|
||||||
|
object ApplicationEvents1: TApplicationEvents
|
||||||
|
OnMinimize = ApplicationEvents1Minimize
|
||||||
|
Left = 332
|
||||||
|
Top = 208
|
||||||
|
end
|
||||||
|
object GuildGet: TNMHTTP
|
||||||
|
Port = 0
|
||||||
|
ReportLevel = 0
|
||||||
|
Body = 'Default.htm'
|
||||||
|
Header = 'Head.txt'
|
||||||
|
HeaderInfo.Referer = 'PQ6.1'
|
||||||
|
InputFileMode = False
|
||||||
|
OutputFileMode = False
|
||||||
|
OnAboutToSend = ServerAboutToSend
|
||||||
|
OnSuccess = GuildGetSuccess
|
||||||
|
ProxyPort = 0
|
||||||
|
Left = 332
|
||||||
|
Top = 340
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -0,0 +1,241 @@
|
|||||||
|
unit NewGuy;
|
||||||
|
{ copyright (c)2002 Eric Fredricksen all rights reserved }
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||||
|
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Psock, NMHttp, NMURL, AppEvnts;
|
||||||
|
|
||||||
|
type
|
||||||
|
TNewGuyForm = class(TForm)
|
||||||
|
Race: TRadioGroup;
|
||||||
|
Klass: TRadioGroup;
|
||||||
|
Label2: TLabel;
|
||||||
|
STR: TPanel;
|
||||||
|
Label3: TLabel;
|
||||||
|
CON: TPanel;
|
||||||
|
Label4: TLabel;
|
||||||
|
DEX: TPanel;
|
||||||
|
Label5: TLabel;
|
||||||
|
INT: TPanel;
|
||||||
|
Label6: TLabel;
|
||||||
|
WIS: TPanel;
|
||||||
|
Label7: TLabel;
|
||||||
|
CHA: TPanel;
|
||||||
|
Reroll: TButton;
|
||||||
|
GroupBox1: TGroupBox;
|
||||||
|
Label8: TLabel;
|
||||||
|
Total: TPanel;
|
||||||
|
Sold: TButton;
|
||||||
|
Unroll: TButton;
|
||||||
|
Name: TLabeledEdit;
|
||||||
|
OldRolls: TListBox;
|
||||||
|
Button2: TButton;
|
||||||
|
Server: TNMHTTP;
|
||||||
|
PoorCodeDesign: TNMURL;
|
||||||
|
Account: TLabeledEdit;
|
||||||
|
Password: TLabeledEdit;
|
||||||
|
ApplicationEvents1: TApplicationEvents;
|
||||||
|
GuildGet: TNMHTTP;
|
||||||
|
procedure RerollClick(Sender: TObject);
|
||||||
|
procedure UnrollClick(Sender: TObject);
|
||||||
|
procedure ServerSuccess(Cmd: CmdType);
|
||||||
|
procedure SoldClick(Sender: TObject);
|
||||||
|
procedure ServerFailure(Cmd: CmdType);
|
||||||
|
procedure FormShow(Sender: TObject);
|
||||||
|
procedure ServerAboutToSend(Sender: TObject);
|
||||||
|
procedure ApplicationEvents1Minimize(Sender: TObject);
|
||||||
|
procedure GuildGetSuccess(Cmd: CmdType);
|
||||||
|
private
|
||||||
|
procedure RollEm;
|
||||||
|
function GetAccount: String;
|
||||||
|
function GetPassword: String;
|
||||||
|
public
|
||||||
|
procedure BragSuccess(Cmd: CmdType);
|
||||||
|
function Go: Boolean;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
NewGuyForm: TNewGuyForm;
|
||||||
|
|
||||||
|
function UrlEncode(s: string): string;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses Main, SelServ;
|
||||||
|
|
||||||
|
{$R *.dfm}
|
||||||
|
|
||||||
|
function UrlEncode(s: string): string;
|
||||||
|
begin
|
||||||
|
NewGuyForm.PoorCodeDesign.InputString := s;
|
||||||
|
Result := NewGuyForm.PoorCodeDesign.Encode;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Roll(stat: TPanel);
|
||||||
|
begin
|
||||||
|
stat.Tag := 3 + Random(6) + Random(6) + Random(6);
|
||||||
|
stat.Caption := IntToStr(stat.Tag);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Choose(n, k: Integer): Real;
|
||||||
|
var
|
||||||
|
d, i: Longint;
|
||||||
|
begin
|
||||||
|
Result := n;
|
||||||
|
d := 1;
|
||||||
|
for i := 2 to k do begin
|
||||||
|
Result := Result * (1+n-i);
|
||||||
|
d := d * i;
|
||||||
|
end;
|
||||||
|
Result := Result / d;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.RollEm;
|
||||||
|
begin
|
||||||
|
ReRoll.Tag := RandSeed;
|
||||||
|
Roll(STR);
|
||||||
|
Roll(CON);
|
||||||
|
Roll(DEX);
|
||||||
|
Roll(INT);
|
||||||
|
Roll(WIS);
|
||||||
|
Roll(CHA);
|
||||||
|
Total.tag := STR.Tag + Con.Tag + DEX.Tag + Int.Tag + Wis.Tag + CHA.Tag;
|
||||||
|
Total.Caption := IntToStr(Total.Tag);
|
||||||
|
if Total.Tag >= (63+18) then Total.Color := clRed
|
||||||
|
else if Total.Tag > (4 * 18) then Total.Color := clYellow
|
||||||
|
else if Total.Tag <= (63-18) then Total.Color := clGray
|
||||||
|
else if Total.Tag < (3 * 18) then Total.Color := clSilver
|
||||||
|
else Total.Color := clWhite;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.RerollClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
OldRolls.Items.Insert(0, IntToStr(ReRoll.Tag));
|
||||||
|
Unroll.Enabled := true;
|
||||||
|
RollEm;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TNewGuyForm.Go: Boolean;
|
||||||
|
begin
|
||||||
|
Tag := 1;
|
||||||
|
Result := mrOk = ShowModal;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.FormShow(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if Tag > 0 then begin
|
||||||
|
Tag := 0;
|
||||||
|
Caption := 'Progress Quest - New Character';
|
||||||
|
if MainForm.GetHostName <> '' then
|
||||||
|
Caption := Caption + ' [' + MainForm.GetHostName + ']';
|
||||||
|
Randomize;
|
||||||
|
RollEm;
|
||||||
|
with Race do
|
||||||
|
ItemIndex := Random(Items.Count);
|
||||||
|
with Klass do
|
||||||
|
ItemIndex := Random(Items.Count);
|
||||||
|
Name.SetFocus;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.UnrollClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
RandSeed := StrToInt(OldRolls.Items[0]);
|
||||||
|
OldRolls.Items.Delete(0);
|
||||||
|
Unroll.Enabled := OldRolls.Items.Count > 0;
|
||||||
|
RollEm;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.ServerSuccess(Cmd: CmdType);
|
||||||
|
begin
|
||||||
|
if (LowerCase(Split(Server.Body,0)) = 'ok') then begin
|
||||||
|
MainForm.SetPasskey(Split(Server.Body,1));
|
||||||
|
MainForm.SetLogin(GetAccount);
|
||||||
|
MainForm.SetPassword(GetPassword);
|
||||||
|
Server.OnSuccess := nil;
|
||||||
|
Server.OnFailure := nil;
|
||||||
|
ModalResult := mrOk;
|
||||||
|
end else begin
|
||||||
|
ShowMessage(Server.Body);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.BragSuccess(Cmd: CmdType);
|
||||||
|
begin
|
||||||
|
if (LowerCase(Split(Server.Body,0)) = 'report') then
|
||||||
|
ShowMessage(Split(Server.Body,1));
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TNewGuyForm.GetAccount: String;
|
||||||
|
begin
|
||||||
|
Result := '';
|
||||||
|
if Account.Visible then Result := Account.Text;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TNewGuyForm.GetPassword: String;
|
||||||
|
begin
|
||||||
|
Result := '';
|
||||||
|
if Password.Visible then Result := Password.Text;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.SoldClick(Sender: TObject);
|
||||||
|
var url, args: String;
|
||||||
|
begin
|
||||||
|
if MainForm.GetHostAddr = ''
|
||||||
|
then ModalResult := mrOk
|
||||||
|
else begin
|
||||||
|
try
|
||||||
|
Screen.Cursor := crHourglass;
|
||||||
|
try
|
||||||
|
Server.HeaderInfo.UserId := GetAccount;
|
||||||
|
Server.HeaderInfo.Password := GetPassword;
|
||||||
|
args := 'cmd=create' +
|
||||||
|
'&name=' + UrlEncode(Name.Text) +
|
||||||
|
'&realm=' + UrlEncode(MainForm.GetHostName) +
|
||||||
|
RevString;
|
||||||
|
if (MainForm.Label8.Tag and 16) = 0
|
||||||
|
then url := MainForm.GetHostAddr
|
||||||
|
else url := 'http://www.progressquest.com/create.php?';
|
||||||
|
Server.Get(url + args);
|
||||||
|
except
|
||||||
|
on ESockError do begin
|
||||||
|
ShowMessage('Error connecting to server');
|
||||||
|
Server.Abort;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
Screen.Cursor := crDefault;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.ServerFailure(Cmd: CmdType);
|
||||||
|
begin
|
||||||
|
ShowMessage('Connection to server ' + MainForm.GetHostName + ' failed');
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.ServerAboutToSend(Sender: TObject);
|
||||||
|
begin
|
||||||
|
Server.SendHeader.Values['Content-Type'] := 'text/plain';
|
||||||
|
Server.SendHeader.Values['Motto'] := MainForm.GetMotto;
|
||||||
|
Server.SendHeader.Values['Guild'] := MainForm.GetGuild;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.ApplicationEvents1Minimize(Sender: TObject);
|
||||||
|
begin
|
||||||
|
MainForm.MinimizeIt;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TNewGuyForm.GuildGetSuccess(Cmd: CmdType);
|
||||||
|
var s,b: string;
|
||||||
|
begin
|
||||||
|
b := GuildGet.Body;
|
||||||
|
s := Take(b);
|
||||||
|
if s <> '' then ShowMessage(s);
|
||||||
|
s := Take(b);
|
||||||
|
if s <> '' then Navigate(s);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user