PDA

View Full Version : [R2]Catacomber



Flight
08-19-2011, 09:28 AM
http://flight.clawz.com/sigs/Catacomber/CatacomberTotal.php

SRL Stats Page (http://stats.villavu.com/script/165)

Description:
Catacomber is our first and only Catacomb-running combat script. It's designed for swift combat and lasting endurance. The catacombs are a great place to train with only a simple F2P quest to access them. This script will handle all 10 rooms and you choose which one to raid!

About the Catacombs:
The Catacombs are a dungeon located in the Lumbridge Graveyard. To unlock this area all you need is completion of The Blood Pact quest (http://www.tip.it/runescape/index.php?rs2quest_id=216). (Note that this quest gives 100 exp to attack/defence/strength/ranged/magic) The Catacombs is swarmed with 10 combat rooms and 1 boss room, this script will run all 10 combat rooms, each individually handled. Enemies range from level 1 to level 15 combat, so it's a good place for low-to-mid level players to train endlessly.

'FightRegion' (line 25) is your input on which room to fight in. Here's a picture of the different rooms:

http://i.imgur.com/VqSOw.png

Features:

Fights endlessly in 1 of 10 rooms in the Lumbridge Catacombs
Train any combat style (Have this set before running script!)
No food required
Complete "Death Screen" handling
Re-equips your items upon dieing
Junk-dropping (Drops junk items upon death, check line 1123 for the list)
Death-walk back to chosen fight room
Lost detection with Home-Teleporting
Out-of-ammo recognition
Very swift combat
Solid break system (By Echo_) with cool graphics!
World switching option (Switch worlds after every break)
SRL Stats
On-Screen progress report
Failsafes to ensure endurance


AntiBans:

Human'ish waiting periods
Realistic combat
Camera rotating


How to use:

The Blood Pact quest completed
Start your player in front of Lumbridge castle or anywhere in the Catacombs


Credits:

Awkwardsaw for the idea
Iamadam for a portion of the fighting procedure
Nava2 for his wonderful path-generating functions



[End Note]:

I'm really excited about releasing this script. This was my first ever combat script and I'm very pleased with the end results! Now, I've only solo-tested this by myself so there might be a couple bugs I'll have to sort out, so please, by all means, post 'em here! Bob's Ratinator was a very popular script, even with the low amounts of exp it brought and crowded areas it had to run it, so I'm hoping that this can be a very wise alternative for that script. Enjoy the script, and post your progress reports here! :)

P.S. Because of my newly acquired knowledge of combat scripts, there's sure to be plenty more on the way. ;)

~Cheerz, Flight~

Flight
08-19-2011, 09:30 AM
Using your own Dynamic Signature:

Put this img code in your signature under UserCP and wrap it in "[img]" tags.



http://flight.clawz.com/sigs/Catacomber/CatacomberSig.php?uid=USERIDHERE


Where it says "USERIDHERE" you simply put your SRL Stats User ID. For example, mine is 208, so I would use "CatacomberSig.php?uid=208"



Progress reports:


=-=-=-=-=-= Catacomber 1.0 by Flight =-=-=-=-=-=
Time Running: 15 Hours, 19 Minutes and 9 Seconds
Attack XP: 0
Strength XP: 132469
Defence XP: 0
Constitution XP: 44156
Ranged XP: 0
Deaths: 14
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=



=-=-=-=-=-= Catacomber 1.0 by Flight =-=-=-=-=-=
Time Running: 4 Hours, 32 Minutes and 20 Seconds
Attack XP: 0
Strength XP: 82702
Defence XP: 0
Constitution XP: 27568
Ranged XP: 0
Deaths: 8
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Home
08-19-2011, 09:41 AM
Great job mate!

~Home

i luffs yeww
08-19-2011, 09:48 AM
The sig stats look a bit off. D:

Other than that, sounds cool. :)

Harry
08-19-2011, 10:02 AM
Oooo nice. Should have it handle the quest :p And does room #10 click on the statue-area for infinite mages to attack you?

tls
08-19-2011, 10:34 AM
Oh man, this might give me a reason to finish the quester.

Flight
08-19-2011, 10:57 AM
Oooo nice. Should have it handle the quest :p And does room #10 click on the statue-area for infinite mages to attack you?

Well the boss room is Room #11, and because it just has that one NPC, I didn't think it was worth doing. :p So it just does the other 10 rooms.

@i luffs yeww
Are you talking about the 9 att/def exp? That's done for a reason, I had to force my script to commit a slight bit of exp to those two stats just so the Stats API has info for those two to grab. So that's the reason they're there.

Also, it looks like I'll need to put a couple more "SetAngle"'s in there, I got stuck in the grave yard because it, for some reason, failed to set the angle when we died, thus it could not find the Entrance Tile.

Edit:
Fixed and updated.

Harry
08-19-2011, 11:39 AM
Oh, dude, the final boss or whatever is the best. Every time you click you get a dedicated monster that attacks you. Especially good if the world is full of bots because there is no competition.

Flight
08-19-2011, 11:47 AM
Oh, dude, the final boss or whatever is the best. Every time you click you get a dedicated monster that attacks you. Especially good if the world is full of bots because there is no competition.

Did not know this. :o Thanks Harry, I think I'll experiment with that.

Jakkle
08-19-2011, 02:19 PM
Grate script, was thinking of doing this my self a while ago. Will defo use this with my army. :)

bolshak25
08-19-2011, 04:09 PM
gotta do the quest with my whole army, then i will be using this.

Howd you get the sig? i kind of want one

Flight
08-19-2011, 04:24 PM
gotta do the quest with my whole army, then i will be using this.

Howd you get the sig? i kind of want one

I'll make a proper post in the morning on how to put the sig for your Stats ID in your signature. So it'll show what you've personally gained in this script and how much time you've used it. I'm beat right now, gonna get some sleep.

bolshak25
08-19-2011, 09:08 PM
=-=-=-=-=-= Catacomber 1.0 by Flight =-=-=-=-=-=
Time Running: 3 Hours, 9 Minutes and 7 Seconds
Attack XP: 0
Strength XP: 17571
Defence XP: 0
Constitution XP: 5857
Ranged XP: 0
Deaths: 4
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


10 att 10 def 23 str starting. 36 str now

=-=-=-=-=-= Catacomber 1.0 by Flight =-=-=-=-=-=
Time Running: 1 Hours, 28 Minutes and 33 Seconds
Attack XP: 1620
Strength XP: 1620
Defence XP: 1620
Constitution XP: 1619
Ranged XP: 0
Deaths: 4
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


1 att 1 def 1 str at start. had to restart the script a couple times, but up to 17 on each. love the script.

suggestion: add grim reaper support. thats why i had to restart the second one a couple times

onilika
08-19-2011, 10:44 PM
Finnaly! The script is Out!
Cheers Mate!

Flight
08-20-2011, 12:43 AM
Grim reaper? I thought that as a Halloween thing only. I guess I'll have to take a look at that.

Let me throw together a new img and PHP script and then everyone can have their own dynamic signature for this script that tells how much exp they've gained and how long they've used it.

Edit:
Done making the PHP script and new signature image. I added a mini-tutorial on the second post of this thread on how to get your own, it's very simple!

Bubix
08-20-2011, 03:34 AM
This should be great, my little army was waiting for some combat scripts :)
but now for all of them i need to do a simple quest. but i hate them.. well.. what ever.. :D

Harry
08-20-2011, 02:27 PM
Just wondering if you have any plans to run though the quest in the script ... it isn't that complex of a quest, shouldn't be too hard for your script to solve it. And also adding an option for training the lowest melee skill (though that wouldn't be too difficult to add). Maybe wielding weapon and armour drops if they drop any?

I'd just love to run my huge army but until those features are added I can't :( No way am I doing that stuff legit for 100+ players, lols. I am going somewhere for a week so I'm wanting to run a nice script for that time (other than woodcutting, everyone in my army already had 85+ wc :/)

bolshak25
08-20-2011, 04:20 PM
I agree with Harry on the quest part. If youd like a few accounts ive got a mini army that i can let you use.

and to harry, if you get a mace or scimmy you can use controlled. many of the monsters down there drop maces as well.

bevardis
08-20-2011, 10:37 PM
Too bad you have to complete that quest >.>

Flight
08-21-2011, 12:16 AM
A quest as well... :S That would take some heavy modifying, because I'm quite sure box regions would overlap, but then again I could have the script know what to do based on the location and if the quest is already complete, for example:


if AreaCheck('CatacombsFloor_1') then
if QuestDone then
Fight
else
Do_That_Part_Of_Quest;


I might experiment around. I'll need some accounts though, so I might take you up on that offer, bolshak25. As soon as you can get me a few accounts I think the sooner I can, at least, give this a try.

tls
08-21-2011, 12:28 AM
A quest as well... :S That would take some heavy modifying, because I'm quite sure box regions would overlap, but then again I could have the script know what to do based on the location and if the quest is already complete, for example:


if AreaCheck('CatacombsFloor_1') then
if QuestDone then
Fight
else
Do_That_Part_Of_Quest;


I might experiment around. I'll need some accounts though, so I might take you up on that offer, bolshak25. As soon as you can get me a few accounts I think the sooner I can, at least, give this a try.

The quest has dynamic tiles.

Flight
08-21-2011, 12:33 AM
The quest has dynamic tiles.

:duh: That's good news. Thanks for the info.



and to harry, if you get a mace or scimmy you can use controlled. many of the monsters down there drop maces as well.


I think maces would combat with my re-equipping in Lumbridge. The script is set to look for these items:

[
'scimitar','blade','sling','Sling','shortbow',
'helm','platebody','kiteshield','defender','hide',
'Amulet of','bracelet']


So, if I put 'mace' in that list, and let's say the player is using a Rune scimitar and, there's a good chance he'll re-equip the mace instead of the scimitar, because low level items like that aren't dropped upon death here. Or atleast I'm pretty sure they aren't.

bolshak25
08-21-2011, 03:51 AM
pmed you accounts

i luffs yeww
08-21-2011, 05:06 AM
I may be interested in helping with the quest. :o I've always liked your contributions here.

Flight
08-21-2011, 05:24 AM
I may be interested in helping with the quest. :o I've always liked your contributions here.

That's really awesome of you to offer help. :) But I brainstormed a basic idea/skeleton mentally already and I'm gonna give it a shot and see how it turns out. But if I do happen to get stuck somewhere, you'll be the first to know. :p

@Bolshak25:
Thanks for the test dummies, I will warn you now though, the quest gives 100 xp to all combat skills (excluding constitution) so you might gain a couple levels, I hope this is okay. I should only need 1 account for coding, 1/2 accounts for testing.


Edit:
Well, I misunderstood you, Mormonman, as I thought you meant the tiles were dynamic to the quest <> finished quest, when actually they are, infact, dynamic to the player. I can do this but agh... it's gonna be tough and take a long time to do. I luffs, if you're still interested I can give you what I have and you could take over. I've done all the Quest-Starting and killing Kayle. But that last part will have to have slight edit, because I have it set to webwalk to a static tile (Kayle's tile) and do the fighting. Let me know if you're interested, because like I said, if people really want the quest done I can do it, but I'm reluctant to do so.

bolshak25
08-21-2011, 03:27 PM
im totally fine with that. im planing on getting all of them up with this script anyways

Nava2
08-21-2011, 03:34 PM
http://flight.clawz.com/sigs/Catacomber/CatacomberSig.php?uid=70

:(

Also, the deathwalk to the 10th room does not work.. it just tries to blind click through the wall. Perhaps having it walk to each room individually?

It runs great inside.

Flight
08-21-2011, 04:13 PM
http://flight.clawz.com/sigs/Catacomber/CatacomberSig.php?uid=70

:(

Also, the deathwalk to the 10th room does not work.. it just tries to blind click through the wall. Perhaps having it walk to each room individually?

It runs great inside.

I can see where that would fail, yes. I was thinking about having 2 parsed tiles for separate WindWalking. Sorry about that, but I think I can make a quick fix for the higher level'd rooms.

Nava2
08-21-2011, 05:39 PM
I started messing with this script.. I changed how you declare your areas to a record setup. Much cleaner then when walking to an area, you can cycle through the area array and walk to each RTile until you're at the correct room.

Just a thought.. I don't have time to make it compile, its close though. Basically "CurrentArea" holds the record of the fighting room, and the other global rooms are in indecies. I would suggest writing in some constants to make the indicies easier!

{/////////////////////////////////////////
// ~Catacomber by Flight~ //
// //
// Version: 1.0 //
/////////////////////////////////////////}

program Catacomber;

{$define SMART}
{$i SRL/SRL.scar}
{$i SRL/SRL/skill/magic.scar}
{$i SRL/SRL/Misc/stats.simba}
{$i Reflection/Reflection.simba}
{$i SRL/SRL/misc/paintsmart.scar}


//////////////////////////////-Begin setup-/////////////////////////////////////

Const

//SRL Stats
SRLStats_Username = '';
SRLStats_Password = '';

//Script settings
FightRegion = 10;
ChangeWorlds = True;
Member = True;

//Break settings
BreakIn = 135; //How long before we take a break? (minutes)
BreakFor = 13; //How long will we break for? (minutes)
Bir = 12; //Random minutes to add/subtract from how long until we break
Bfr = 7; //Random minutes to add/subjtract from break duraction

//////////////////////////////-End of setup-////////////////////////////////////

Var
BreakImg: TMufasaBitmap;
targetName,Version: String;
lastFightTime: Integer;
lastInteractedTile,Stairs1_Down,Stairs2_Down,
Stairs_Enter,RTile: TTile;
Deaths,CommitTime,ScreenTime,NewImg: Integer;

//Break variables
BreakRounds,TotalBreaks: Integer;

//Exp variables
AttXP_Start,AttXP_Old,AttXP_New,StrXP_Start,
StrXP_Old,StrXP_New,DefXP_Start,DefXP_Old,
DefXP_New,HitXP_Start,HitXP_Old,HitXP_New,
RngXP_Start,RngXP_Old,RngXP_New: Integer;

Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
BoxRewards := ['XP','xp','lamp'];
LampSkill := 'hitpoints';
Active := True;
end;
end;

Procedure CheckStats;
begin
if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
begin
case MessageBox('No Stats account entered, would you like to set one up?','SRL Stats',mbYesNoCancel) of
mrYes:
begin
OpenWebPage('http://stats.villavu.com/register');
TerminateScript;
end;
mrNo:
begin
SetupSRLStats(165,'Anonymous','anon1337');
Exit;
end;
mrCancel: TerminateScript;
end;
end else
SetupSRLStats(165,SRLStats_Username,SRLStats_Passw ord);
end;

type
TArea = record
Region: TBox;
DAnim: TIntegerArray;
targetName: String;
RTile: TTile;
fightArea: Boolean;
end;

TAreaArray = array of TArea;

var
currentArea: TArea;
Areas: TAreaArray;

Procedure DefineAreas;
Var
Zone: Integer;
begin
Zone := FightRegion;

setLength(Areas, 15);

// lumbridge:
with Areas[0] do
begin
Region := IntToBox(3217,3210,3226,3228);
fightArea := False;
end;

// grave:
with Areas[1] do
begin
Region := intToBox(3238, 3191, 3251, 3203);
fightArea := False;
end;

// room 1:
with Areas[2] do
begin
Region := intToBox(3875,5526,3879,5529);
fightArea := False;
end;

with Areas[3] do
begin
Region := intToBox(3863,5522,3869,5526);
fightArea := False;
end;

with Areas[4] do
begin
Region := intToBox(3970,5560,3974,5565);
fightArea := False;
end;

with Areas[5] do
begin
DAnim := [8878, 8878];
targetName := 'Warped cockroach';
RTile := Point(3972,5553);
Region := intToBox(3969,5550,3977,5557);
fightArea := True;
end;

with Areas[6] do
begin
DAnim := [12896,12896]
targetName := 'Corpse Spider';

RTile := Point(3986,5553);
Region := intToBox(3978, 5550, 3994, 5556);
fightArea := True;
end;

with Areas[7] do
begin
DAnim := [7244, 7244];
targetName := 'Warped fly';

RTile := Point(3995,5543);
Region.X1 := 3987;
Region.Y1 := 5539;
Region.X2 := 4003;
Region.Y2 := 5547;
fightArea := True;
end;

with Areas[8] do
begin
DAnim := [12893, 12893];
targetName := 'Crawling corpse torso';

RTile := Point(4010,5544);
Region.X1 := 4004;
Region.Y1 := 5542;
Region.X2 := 4015;
Region.Y2 := 5546;
fightArea := True;
end;

with Areas[9] do
begin
DAnim := [14860, 14860];
targetName := 'Warped rat';

RTile := Point(4023,5544);
Region.X1 := 4016;
Region.Y1 := 5538;
Region.X2 := 4029;
Region.Y2 := 5548;
fightArea := True;
end;

with Areas[10] do
begin
DAnim := [12869, 12870];
targetName := 'Skeleton';

RTile := Point(4024,5530);
Region.X1 := 4019;
Region.Y1 := 5523;
Region.X2 := 4028;
Region.Y2 := 5537;
fightArea := True;
end;

with Areas[11] do
begin
DAnim := [4917, 4917];
targetName := 'Warped bat';

RTile := Point(4020,5515);
Region.X1 := 4011;
Region.Y1 := 5504;
Region.X2 := 4027;
Region.Y2 := 5520;
fightArea := True;
end;

with Areas[12] do
begin
DAnim := [12869, 12870];
targetName := 'Corpse archer';

RTile := Point(4017,5496);
Region.X1 := 4009;
Region.Y1 := 5489;
Region.X2 := 4021;
Region.Y2 := 5502;
fightArea := True;
end;

with Areas[13] do
begin
DAnim := [6182, 6282];
targetName := 'Skoblin';

RTile := Point(4000,5495);
Region.X1 := 3992;
Region.Y1 := 5492;
Region.X2 := 4009;
Region.Y2 := 5499;
fightArea := True;
end;

with Areas[14] do
begin
DAnim := [12869, 12870];
targetName := 'Corpse mage';

RTile := Point(3995,5481);
Region.X1 := 3988;
Region.Y1 := 5475;
Region.X2 := 4002;
Region.Y2 := 5489;
fightArea := True;
end;

currentArea := Areas[zone+4];
end;

{Skeleton by Brak, re-written with bitmaps, yay!}
Procedure TurnAidOff;
Var
x,y,BMP: Integer;
begin
BMP := BitmapFromString(9, 8, 'meJyTkqmSkWuUkqkSl8yWArORuRAR' +
'eaUeCBuCgFy4GknpYggbohLIBcoyMjDgQd0z5gNRdueS8Kwy7 +Ri+' +
'9iK0JScv//+wRHDXk4g4pohCEQZx1GkgFxkWWQpNI0AjLpP/A==');
setbitmapname(BMP,'AidButton'); //Don't laugh

if TabExists(tab_Options) then
if GameTab(tab_Options) then
begin
if FindBitmapIn(BMP,x,y,570,410,605,450) then
begin
MMouse(x,y,5,5);
Wait(Random(100));
if WaitUpTextMulti(['oggle', 'ccep', 'cept', ' Aid'], 500) then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,True);
Wait(RandomRange(150,250));
Exit;
end;
end;
end;
Gametab(tab_Inv);
FreeBitmap(BMP);
end;

Procedure LoadVars;
Var
tempPic: TMufasaBitmap;
begin
Retaliate(True);
TurnAidOff;
Version := '1.0';
MarkTime(CommitTime);
MarkTime(ScreenTime);
MouseSpeed := RandomRange(17,20);

AttXp_Start := R_GetSkillExp(SKILL_ATTACK);
StrXp_Start := R_GetSkillExp(SKILL_STRENGTH);
DefXp_Start := R_GetSkillExp(SKILL_DEFENCE);
HitXp_Start := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_Start := R_GetSkillExp(SKILL_RANGE);
AttXp_Old := R_GetSkillExp(SKILL_ATTACK);
StrXp_Old := R_GetSkillExp(SKILL_STRENGTH);
DefXp_Old := R_GetSkillExp(SKILL_DEFENCE);
HitXp_Old := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_Old := R_GetSkillExp(SKILL_RANGE);

Stairs_Enter := Point(3248,3198);
Stairs1_Down := Point(3874,5527);
Stairs2_Down := Point(3867,5524);

DefineAreas;

NewImg := BitmapFromString(311, 49, 'meJztnXdcFNf6/1M01auJ0Rg7X' +
'XrvsCx9OyzLAkuX3kHpCgIiinQURFHpRUBAuiCC9CJFuvTeVE A05X' +
'7//D2w9xqjy7KACcn9+XmdV15rmDl7Zva85/M8Z86c+eSTj9oG7dr' +
'17alTDvfvZ3uesf3000+3uzkf9c8QBwd7ZcX9i4EeGkR5dXU5 KMSV' +
'gvxPIUKRf6doairp6GC0tfHyCrIHDvy43UfwT1J5ecHS4nRPb 62sL' +
'D83N+d2N+ej/hnS0yMPDLR1dNQY6CkryPPb25IePcodG++bmOh/+r' +
'S1/Ul1fX1xZUV2aXkGtdTXFvT1PZ6eGiwqStLVUZSW5iZqqBw9dmS ' +
'7j+OfoYcVd/r76nt76rg4j+EJqtvdnI/6Z8jKxiA/P665+cHkZP/Y' +
'WC/QmnX3embmtTuZ0amp4aslIjk1HEp8YvCtWxd9fSy1yXIKcrxqB ' +
'KmS4uSe3mYleX5hETakvPR2H8o/QMlJwTdj/V+8mABItbVx292cj/' +
'pnyMnJOCrKW0yUbWysb2pyYHS4q62tMuZ6iImJnqycFAcH2/4f933' +
'zzTdffLHzs88+27Vr19GjhyUkhHBYGTkEj6QEh6qKMHguHit+/Ng+' +
'RSXZ7T6av7vi4i9FRHguLU4BpDpamO1uDkPi5eW5ciX8rJeLu aWhj' +
'Izkdjfn/0e5uZkbGagaGaqCh06M9SUm3WJiOs7IjuzsLFJS3MKCzC' +
'LCrKOj3RLi7CzMPwoI8v7ZDf5HCyANCXaZmxsCSDU1tznc5eH hwWL' +
'R624WFOy3tDj+86u5kpKE836Of0HDPuodnT1riUGJDA6037x9 8cb1' +
'KLBLxvfds2e3lBSPmAgbQpa7peXhipkqCn/++ed/Xmv/6YoHSENcx' +
'8e6+HhZNIjK29WM/fv3JyXdXng+djnQZceOHfQ3NjAgEghyN66ff/' +
'Vqbmz0yV/Two96W97nrDQ1ZAb6W0lEGWZmpo3ufujwQQiVkXK8KWm' +
'RygoCwOlHM6UjKqRDg48FBdg0NLYH0s8++/RRZeHPr+afPx+VlxPm' +
'5OKgv72YmKChISG/ID4lJdbZ2emvaeRHvS1fHytNokxzSznXiUMbs' +
'tE3QiLFlBUFVRQFU9KvAKR4wrYZxN9fEO6GrkIqsH2Q7t37fW tb2c' +
'hwy+REJz8/m4qqwrY046MYV8AFe3DSxqYHTMf2ffXVV5uogYubg0y' +
'So2jJT0z2A6Rqah9/9DUVHx8Yut1OysLCVF19N+/ejYUXYwCptrba' +
'tjTjoxgRJCMCAvyZWTGODtr5+fFMx/dtbmbCd9/vsbMlkzXlRke7V' +
'VWEjU00P3hT/2f0d4AU8pGHD9PvpEcsv5wGSPX1idvSjI9aV/fuZR' +
'YUJldW5k5O9A8MtKNRIkeP7OXkXCc9oSmA/byfDaSlExNPAy46nna' +
'2+eCt/Z/R3wFSGVkJgPTu3ehXr+YAUrIWalua8VHrKi01Ynysr+zB' +
'nda2yr6+Foh1AVJJKdFNVPXdd3vCIzwkxDmmJvsLCuLRmI8/+pr6O' +
'0CqrIy8X5p8Nzv659fPAFJZGYFDhw5uS0s+ir4CAuzT0iJGhr umJv' +
'pDQt2AUCgoFHITVfHxc7u46GMx4qOjPfmF6V988cUHb+3/jP4OkOJ' +
'wKhUV6auQzgOkUEjqigcP/rQtjfkoOvL1tfbzs4lPCnlYnmWor0yF' +
'FI3ezJQhe0cLfT3lurrC0fE+JWXFD97U/yXFJ2wzpLt27YqJCWtrL' +
'2tqLlp+ObMKKTsUI2PSx6dy/m7y87NeLTbu7kbmZjgqpLIyfButh4' +
'WFOSk13NVFf3pq0MX19J/R1P8lrULqti2QHj161NvLc3SkF6Lc5Zf' +
'T83MDCy/GwsPcgVMBfnYoVlZ6/AIf73H/jUQlFIqlpZr/BTsqpCc4' +
'Dv3rX/9ivJL9P+6/X5oTEeExOtx58+Y1xi/FUlKSgYH+0TGBp08b6' +
'GjJQ6iMUhFBU4uqCEpFjExS/pGBoWZRURFHR9vgYD//86dOOelRtJ' +
'VIGkhdCsrAQE1LmyAqJvzll18yfjjva9++H3T1dIKCLqSkxPh 4W1t' +
'aaBjqY/T1sSeN1UxMyEQNnIAg34ZmWK2Eu6HgpC1/MaSRkSEvXozP' +
'zfaPDLXMzjz9+dUcxLqvlmfweAT/KqHUQsDLeXravbOvtLRUe2tDQ' +
'UGcubnut99+Q/+L4GyoqCh7eDi7eTgaGekQSXh5eQQfH+933323uZ' +
'bz8PCc9XLPzIy/dfuyn6+dk6OBo4Ohra0xHo/aUF99R2Jios7OjtH' +
'RwdFXfQP8HWytyaam6laW2jY2ugaGZAlJsS32nA+iN05qaopN Tgmn' +
'QrpiprISDNYgJ4dof9IwPNw5Mz3U1Fz17bffMrLXzp07w8KCJ 6f62' +
'9sf3cmK9vQ4qa+rTMBLYTESTg7a2Tk3mpvL6usLk5JDdPW06V Ry8q' +
'RR5aOi6pq8hw8zW1vLZ2dHns2PQZmbGxsb76l6lH0p0ElHS4F IRBL' +
'U4NfcxeBBvf0VXt4eTY2lri6GhvqorKzo+bnhrq5qMxOCkpKI HIJf' +
'XIxTVIRDDiGgo6Oqro7es2cPI9VSw91hhp0U+nxISGBfX0NCw uW4u' +
'BDMZgfloq/59fbUvHo1B2CCjUKgC5CCk2Iw0lQnFRHh1CAq1Dfk5+' +
'UnvbNvXkHqLz8/hwhZUJCDoqtB51sgrGporH65ON7VVREQ4KRLwXh' +
'6mCfEB0K5eTMgJMTDy8vOycnczNxAjYg9fvwYnaqgO+noaJWU 3Hv+' +
'bPDn17P//nXh19UC/7ybFYXDIyQleM1MSFpaahu6SH7xxU4zM5Omp' +
'qqnfbWdHQ9HR1qWX86+fjX/Gs7My9nnz0bgf9666W9pQTQyxJE08V' +
'u5DmxdbyB1dtYrKIh/AynnicOKirJsbCxrQXf48CESiZiaGjc81DE' +
'x8RQgTUgKJpHU1/1GPB77/fffxcRcBaAA0oaGogcP0isfZQ8Ots3O' +
'DE9NDTx5UlVYnFRVnTc7O9zZUX/wIO0hR3FxsdrahzOzI3Nzo5OT/' +
'UWF8deivf3P21w4bxt55cyVK2c83I1dnPVv3brQ3V0/Otp56pQeGi' +
'0pIiK4ofODwykaGeL5+Lh/+GGvkpK0jAwvGi1RUBg3/2zMx8eKSqi' +
'gACsPN9OJE0ehQA+XkhJbt1pgbQXS4TY+PhZ19XXyd+h+yclx Cy8m' +
'lpZmlpfnRkY6Dx8+vKGjeCMdHayOtioEAE5O+iEhbnFxF4uK4 iMjz' +
'87M9IG5Dw409vc3NDYWDA41ubi8O/Gvru7e1GTX3Fw/QKqri13rK+' +
'BEPX3a/u/fFl+/mpme6ny1PA2fXzwfGh5u7umurHyUUVOXMzHR/uv' +
'P8//322JPb9XZs5ZOTiZ29maFRck3rvs5OBibmek5OFicO+cSExPY' +
'1VkBu8OOqamhfj62lpZkSwtNaxttYyOC/3n7X395kZYaLigAPwG7h' +
'QVl926GUJKQEG95XLu8PPt6eW5pafJxU2HO3ajYG36xN3zvpI enp4' +
'eHBDtfuuiQmxMzPtbxbG7wvJ8NWVNRTFx4c+d863oT7sbe8K+ rK3o' +
'DKRQuzsNiImxyCB5lJUE8XkqDKKdBRBI15LXIiieNcR5uhilp EcXF' +
'yQ8eZHR31ZucxEiIc+zfv2/dbxwa7ujqqqurzZ+cGpicHgRUgc329' +
'iqAdHS0a3ikc2iwvbunvqOjururEY2mbRkmJkZTU8Pz82PTUw N3s2' +
'Oy7l6rry9qflyWkRl7KdDL3cPBycnC1dXKy9vG1kZTUxNJ0VZ sa31' +
'4vzQViRBQV9+ADR07dmTXW/6rqiqjqYG0tiLdvRv94vm4uSkBIIVy' +
'guMoFVLOE0eFBNkoFLWvvqIXJiUkBF6JPDM83M7Px0IgyNNvw 5Uro' +
'S9eTDztqwfLA0iNjQ0Zb/87kpIShcgWCklDkaguTy3+/va/vH72en' +
'kWjHVmqmdspG1goGXv3r3v7FtcdLumJhu8BiBVVBRf6yvCwi7 98vP' +
'8rz8/e/1q9rdfF3775dkvr+eWlyYa6u/fuBHq5+8ZGuqbEB/i4W6q' +
'p4dNTAwGVJ88eRAc5JqfF3vp4il1dXlrC7Krs3FsrP/iwtjPr2bHR' +
'lsflKempF4LCva9EHAmLNQnIuKM8ykDC3MSkSgfGXmmpbUEII ViZq' +
'q1rp+CgS4tTP38an55aaq2JqemOnvgaf3w0GPoxlFXL/r5e3h6Ovr' +
'5OoeGenqfNTczVbOyIMK1q6ExH4uW1NLCb/rMb0VUQqEEBzsPD3Uy' +
'Hd+nTpDUpSgSCVIZWddWbs1MDQwPPunsrGtoKHlUmX2/LD0v/3ZmZ' +
'lRickjARQdTExwBJ5GYHBoW5sbG+hMjA/ip6ZHj4z1DQ0/Gx3tHRr' +
'paWsrHxrrnANXZEQiYgdzS0lwDQx0mpuM7dtJ+LsPa2mJufmx mdnh' +
'k6AmExCPDT3p6mh0crY/RWheCmfk4GiWnqCCEkOWLivLq6W2QluLZ' +
'EKdvi4eX085OG84VdKGO9oru7hoIdE9wHKESSoV0tRzT0lTZt XZ0D' +
'U567ZrP8GALF9dxeTkhOt8Ijra4MNndU/3i+RiEZNevR22u5VRBH1' +
'ZTV1RXR+rpovV0MZokRSiRV87+8vr5q+XVeA9QXZ61s6MxESU vL7a' +
'4KG5srA0glZSgMbTo7+/j6nr69fI8QNrT/QicFAgFH+x80gwJ6dsT' +
'wuEzPz+Pvr6apqaympp8Ts71//v30vh4GwTDurqY8752XV2Vyy+ng' +
'HGoKjjk0uEjh97+ol27dikpI8hkFYouGi4yWmTltrZSAQF2KC QSvS' +
'fo7e1tVvBcnl14PjLY3/Di2fDYaI+rqyMTE42Qm5WVWZ2ookaQRaM' +
'kUlOCx0fblRVFtoVTKqFg6DicBPQ9iHgH+tsmxvsmJwcAn5L7 aUVF' +
'SXdzYzOzYtLSIlNTIxKSQuITg69c9TrrZWZpqa6vq2RsiDrlp DM9P' +
'aSjJc/I495BQc5p6ZEdT6qAx97exqnpQaAVPgOkfb2tFF0t+s9M4X' +
'DomZmh0ZHOmroC+ABmmpx8e93hCFY2ZqScoLg4JwRUObk32Ng OKSh' +
'u5jbTTz8dCI/wiI09HxHhoaurqq2l1NhYtLAwVV2VDf98G1IoOmsv' +
'uQBOCpw+7WsASCEt3b17N83NdHTIEOJOTfYAoRDu1tVWfP311 5to9' +
'tuCGggEJaI6kqKjSlqF1M3t5OvX869ezvzyGvh6fuNGNM2fAC DNy4' +
'/t7a0WE+WmCen0ZOdvvy6ChwJfy0uTkJMCpwUFuWu1Ga4YJE00s EY' +
'tEAb/tpJs9i8vT63U8HLq1fIchbLmiATE1SQNZTgEMN9TjnruricB' +
'UgJBbvce2idTXR0PFyKIRiCkX16egStSxp1kyLzony4ODlYMW koeK' +
'ZSRHl7+MI2b+7iyymZmEWxF/3HS8zZCgswQc/b2NA0NdwKhwOnQ4J' +
'NHVfd8/NwJBDQPD9ePKyszfA0n9quvvoKwFtJVJFIS8imgG+JhOzs' +
'ycOrja7tnjVP0RgAplOvXz0OkDWxClAvfC1FueXkxIEB/36PHjnR2' +
'Nvb1NWVmRa/EujNDgYEBDA4mHzx4AFwPpSoGsRyYqagw+9GjG16R6' +
'cCBH+NuXwROAU95pKD/BfuS0pTs7Bivs+ZVVdkDg4/RKPE3kArws7' +
'JzsNGsBwhNSLzc1FQEkELh4+N5fxsFBeT8/OjsTH9n56Olhcnp6QE' +
'eHu6NNngtcfNwqqkhtbRVKRTU5cDTU5Pd8/OD0G8d7G3X2oUKaVdH' +
'ORBKE9KqqizgdGlxHMLUkZHm0dHW5se133xDbxwYLFWLjIG49 +RJd' +
'R1tlKkJEZx3ZqprcLBhaXHMxWWde3l7935PVFcAJ4XoHWKAFT PlZ8' +
'fiVN7f8vjxYxPjPfOz/bW1OStm+nImJCSQwZ5z6NBPKJQESQM5NdG' +
'tpCgiK81DM2b780Ql9Px5G0kJDiC0s7Omq7N2dKR7YKDDysqU kaFa' +
'ABaJFBMVZadoK0xN9judtqS//Qqkwc6mJniAtOJRdlb29QcP7jQ2P' +
'mJkAC3mehjkrQUFcbOzkMZWJiTe2tBTdbKyYmSyQlSUNxwvO9 shDd' +
'KGl0SQlBRNS4/QJCGB0MBLTkDonYwrvr7WtjZkS0sNHR3l6ZkBRwc' +
'dKqRQSCTaKx5QIS17kAY2ys11HIt9d4BXVFRkZnoQAt2m5mLI Q2em' +
'+1xcTm20tfTFzMJkba0NCWlxcXxEuEdnZ4UR3Wz3D5BK0oC0s DCuv' +
'v6eu4cZcFpQeHtivF1Scv17BEeOHKJQ0FYWmqamRANDAkTIdX W5vX' +
'01ZaX5jPy4YmKCYKaGBjhDA6yPj7XAynwMGk92pCTHLi6Mtzw uBpY' +
'nxjvSUhM31HMUFKRMTuJTkoMiI9zh99Kl/KVB7xtIPTyMQ8Pc4xKC' +
'MjKvtbfV8/LSuLbTEcSTkhKcujoKw0MdeAK9jI/qpBrqsvfvpyYkB' +
'IWGulU+ykYg1g8+RcWEu7tqq6pzO7tqMjKjHlXmbnQO25Gjh6 E3pq' +
'dHwLUIIOXjZYKMdUM1nL/grqmBlEPwA6GlZalFJYkJ8YFgoyYmBBJ' +
'RTl0NAfnL/PyIvh6KCqmCgujOnTvfrwcIXS1BaLQk/Ohk8h+WOeLk' +
'PDE60vtyaXpstOPly9mR4daqyhKa9WxRSckhN2P9x8c7iEQFL 681P' +
'ZQqgDQfIO0sB0JpQ1p0u7AoztaOkptzvbDwdmraTQaboaunZm uj4+' +
'5qAgnp7ExvZlYUQMpIl6CKQsGamxEhy15YGAVItcjvXnslpcR np3u' +
'f9tVOT3XX1GR3dTxa65bBWgLrTIi7WFx4e3joMfxeosIcLCxM G6ph' +
'K6ImpABpQlKoPIJHSUHA28sMUqFNVAWBrqQEl5urQVV1AZ3xa qqTE' +
'vBSY+O9bi76l4OcI69eYqT+i5e8AM/Mu9cgkw0IsHdxddhQ8+DKGR' +
'ER2NBYDJA+fzZOJCLIZHkjozVTnvdF0lQ7aYTT0lKKj7tUXp5 eUpr' +
'8u41aaOhoK+Px0oqKIgS8zLP5EV4e5hVOOY+JitEYF6JCGhbm 7miv' +
'Az+6qurv63odO3a0p7vl5crdutGXSzNP++qnp3oZsaRN6G72t dhY/' +
'5mpbilJPgODdW6fgY3mUSFdy0mL4u7duxEXd8nrjEVycjDjvU hcXP' +
'j0aaPQEHcDQ3xrWynsezc7jvGjUFKStbTU9D5rsfxyWoCfTVX p3ZH' +
'n6Oig6akeMOi5macJ8Ze8vN0Yr/yT1Z5zLTqkq+tRceGtly9n4Aps' +
'bIQxM9XdUCVbEdVJyRqywKmhgeoJjoMIWe7v936/udoOHNgvJnbi7' +
't2YlNRILu4TNLcBQoODV5x0cnoQj5M8dYpCJq//JCM0qbA4uaYuv7' +
'w8w9gQZWyIlpbewIJ1O3bsuHbtytzsSEtLKQErNdD/eGwMEp/WlJR' +
'bjOz++Y7PTc0MDQxwJE2ckDA/ZKZffvkFZFuHDh+UlhXX1FRVV5OF' +
'gsfLgJNCJJyWFp6SGkqFlEKh8TA1FVI/P9vklBCAlJ+PhZWNBf7/w' +
'UMH21vrgNClxanxsc6uriooMTGRjB/phpSdfe1m7AWAVFych6K7Tg' +
'j3X0gf0oEUDrytvczIAO911pKZmZnBZvzww14g9No1Xzt73eT kELh' +
'u2NqaM34UTMzHzp21CF+J2B9KSfGJi/0hc4fKoUkDA43dXZUebsYe' +
'rsayCBnGK4eeExsbvbQw9bSnhqKlODneNTfTPznZfScjgfFKt ijwT' +
'U0NWSFBJlkZrkdVuSzMP7KxHtjc8ilUCQnxSoqfmJwasLbShD 78/g' +
'bgpAApWVOuu6tOTJQdpSLCxsa6brVKynLl5XeKi5P6+poEBVg Qsry' +
'MP5m+e/fuzMzU2Zmh6uocFRVRcNKpqX4w05bmGg6OdZ6c/fTTT9Fo' +
'VFTUZaS8NJ17cKysTFi0NFpVAiCFooAUWlqclpTgBki1aD2nC YQmJ' +
'l729rLo7akBSLm5mDQ0VLm4OJ90NC+/nAVIZ6AnTHTfv5/Y1VVz5M' +
'ifNUyRnROzIUjzqZBK8knRgrSoKC4pKXhkpFlLS9XWVndDE/XDws7' +
'Gxwf6n7cPCHBycQaONrB688p0rGC369d9S0oSsBjpdyDFYlUA z/a2' +
'svnZfqScoDoBcWC98ck3gp6Tm5Ox9GLiSVuZujoCnPT5sxEIb 9rbG' +
'k6c2Mwz15sTBi0qyH9cUvKEuBhbZ2ettOQJpuObXD6FKvhpFO SFba' +
'xJNTV5igqi33zz7vA7OGlQsAtFR7Gp6T7XiSPCQqy7dq0/PGVlbVR' +
'WlpabGzszO8x54ggP97F1V7ejipWVpa72YU9Pg5+ftQZRrqIy Czy0' +
's6vRzc2J/sDjvn37HB3sGpuqr169vO6Q9SertzZQqtIqKmIAqaKCy' +
'KWLjpC3QtBLJCq9vzE1IY2J8V14PkGFFEpCUtBAfxP0gaWlae DU08' +
'MkKyvK1/csI4e5Of0X0p4VSNcbDMlfgfQmFVKaTkqFdHqqU01N3sR' +
'0YxlTUNCZlJQQ4NTWlqKlpbLRtUEuX3a/dfNCSkqoro7qO5C6uthC' +
'm5saC5aXZ8VEOSXFeRjsOeAdzU1V46PtVyI8DA0xjx8Xz80MD A60e' +
'Xo60+85H1zCAswKSF4FJJ+oCCtRXdrSnACQbjrcpUpSUhiHle jvb0' +
'EieLDYd1c6Cg52CV6FtK62gIP9ENcJhma4eZ9zzMmNvX7db25 +jIP' +
'9MBRGJuLicJiensdlZan2tuSc3Bs11fk3boTj8Gj688P3798X Eho0' +
'Mz0yNtoVEnqJ8bgCLm4oVSmAFIeTgeS0ra1cgJ91DUiDEhODC gpuL' +
'y5OiQifAEIVFUV1tVWqarKB0MUXk5ERZ2Sk+czNiOzstG/ifBC9Da' +
'nuek76X0gr6Dvp/Fy/irKEicnGIL140R0S5Ky70VbmmghZoY3ahJ/' +
'fqYSEQIDU0AD7DqThEX5NTQWFBbd+fjUvLMQBhZH7CHg8bmS4 E9A+' +
'e8b04cO09vby+PgoNTXsuk8W/Bna+cVOZpbj0tKCSFke8NOwcI+jR' +
'/YeP350K3UePHhAj6KYmBh87pwFeOWRI3/A8G1IT7AfgsJInSEhnh' +
'lZ0QEBDpOTT1lZfoLCw8tFZ/sdOz739j5TW5t/Oej09Rjf6GuBunp' +
'akJ6s+0UIhOxAf8f87PD83HBaWtJGVw8+evQw4KapgQRIX7yY WAvS' +
'xJVwNygz82pTU/G1GF8rS9LEeNfMVC8YKPSHzs7KGzfOQ3cCTnft2' +
'vBDAYwrO+fazZv/ddL1Ib1JdVIpupA+fzaAQAgZGm5sxaQLF9wK4C' +
'KQFwuQSkvxb2hfkI+PU1bGlcyMKyZG+HcgTUkKr63LSUy4/HJpio+' +
'XlY+Xhf6DeOCzvr7eXZ2VN2PPZ9wJj4+PMDSk7Nv3w0ab9MHF y8dp' +
'b6upRUKkpV85euQH+v2fEVlbavr4WD7pqGY6vh+H+8ME8t8hr dsAp' +
'GFhnrduX3wbUjyeRuenCi4Lqam3/HytfXwcjIwpxxi+5oiLi05ODs' +
'zODkHGCqgeOMBo8vK2sFiktpYiUV3uxcIkfSe9fTuAqI6E7BX YrK3' +
'NjYjwCAlx1dCQNzTE9vc38nAz8XAzyyL+xBc65ICTbhjSinUh Bco2' +
'AWlxcfxWIIVjycyIfB/SzIyrkNr/B1I+FoCUztQ+cJTs7KSrkWfCw' +
's+YmRvSnC64XeLn5/E5Z2Ggp1xYmABOKi29/nMc9GVtrXX58qnZmW' +
'GAVFnpDysmbc5JL/jbBwc5n/eznp8fo0IqI8P79XsJL2TEFF3t6Ku' +
'+kBPJyEpuyAchkqmoyB8ZefJsfrSm5p69wyYXUhMS5rO20rS3 056c' +
'7F3bSVcgDQ93R6MlAdLFhamZmYG62ty62nuBgaewGOnHj0uRS GGAV' +
'FdvzedNtq7/QDrNYLj7F0Eq9UEhTYi/lJ4WduumP4S7QCgULEbm/a' +
'QSeo6+PiUtNdzewUgOKfM3fP8CHx/XuVVI6xuKAVJlVbktVmhtTQk' +
'LdW1qLOFgOygm+odxsM05qaursauLoZMTpaWljJ+Picop4Y/rb0tL' +
'SyUmX7e00tvcBZBEVut/2lxVld3ZWeXqasTMzLSJSj5ZTWn9/W39/' +
'e2GhlrpQ+rqbAi9emjocX9/E5hpR2dlcnIIAE7SkFdRElt4MQGQ8v' +
'CAmUptriXrKnsV0tnZPhERLj29DwXpoLSUwMYhdQVI8/4ESMPDPcP' +
'DPeAKPzrSKivNR+VUR5vw9jYyMtJZWYmnnc3/yikKGxUPzwkPz5MA' +
'aV9P8+oaR1uF1MvLJizULSMzWkqCU07mD5OXNgephbmGlSXRQ F/V3' +
'k4rJsaXCulq0Kvy/fffCQsLJSTcDAw+K7CFdT+CQ3zbWsvb28otzd' +
'XJ5DVj6XW1c+fOqCjvkGCXoYFmepAmBRkb4zu7qsofpmdkXpm a6Ja' +
'SlmBlZSYQkHi8LJgpAS8bH3cJICWqyTP4KP1GBR07IT4QIJUQ 59Fj' +
'xEkL6EJaHJe8eUjd/iRIvc5Ynve1cXE2vHjB4d69G1RIoZDJ+L17v' +
'xcREU5LS7gWEygsLLDRL/2LxcnFAZBaWxHHx/uOHflBWWmr4W7kFS' +
'/ISfPybuOwEtpaf+ilm4NUU1NFR1tRg4iAAhGvkAALFdLEpMszM 8N' +
'PntSi0EqffbalFbTi44KKS5La2srFRE9gsZt/e+OePbvT0yIiwj3G' +
'xjoEBFg11nZSA33M4uJ01FWvzMwr12LCqH+CqBuLQWCx0mCmF ZUZ+' +
'hQUcKqtQ3i/kq0LOnb8KqSiIlza2uu8WI0BSOOTkrfopDc2Cek5gP' +
'TafyH9w4iKmbm2k6OupSXJ0oL0+tW8HEKACun9kviXSzNDg21 4Amo' +
'rEwP+MrGzs3h6njzlpDM1OXDsyF4REfat1AbR5p3MKFsb0sBA q7kZ' +
'3sHx5Nt/3RykSkrSBII0EIpBieXl3yoqSbp69WxBYfzc3Ghh4d1jx' +
'7Y0HE3VxQCn0DC3isosXh4mNGrzr0KGkKmwKD4q2ntm+umaTp q04q' +
'T6+ujnz8fhIg+xwduLWnz33R4sRhY4VVIUXV6eExRgkxDj4ub m3HS' +
'T1hJAmpwaCjkpQEokrrNABBDKAKQhW4L0XqylOenDQgo5kZmZ OkBq' +
'qIdubMxveVySlXmlsbHg1cu58vJC+ou3/K3EzHzc1UUfytDgk2NHf' +
'2Bl+XEr8ZWBgXZ5eSZAOjrWc8Hf1trG9O2/bg5SPn5uDEoUIFVWEj' +
'59Sq+pqTjn3s3HLWU5ORkf6s6yk6O+kwPl+nVfOTkBBN0Hsem LpEm' +
'oqclNvxOxtDhFx0mTkoJ0Kao93dV2NloBFx3fWdSChZVJVVUc jZZU' +
'IyBq6+6Bmerp4Ri8C8+4VkLEzKsT4+D47CjUOpkvEFpAF1KgL ClpF' +
'VLpzTvpCqSSm4Q0IyPi/XBXWJjfUB8DNqqtpRwUeHpooKm2PndoqL' +
'kwP+cvnpOwRR05cghsFArABeEucMrOvv5UPZr6+uuvMzNvFhY lBly' +
'wLypKSk2PlEMi3t4ACA3ZOKRffLFTWVFYVUUEIMXjJDOyorXI 8nEJ' +
'4R9whSgKBWOgp0omK9jaaHJzHdv0zeIbN8NaWx88KE+fmx1aE 9IVJ' +
'w0GSB+Up4GT+vjQeCcvAiGBRkuhVCXzC26bmKitTl76wO8EB0 hzcq' +
'6PjLSAkwJ39Nczh41zc2LanzyQlRFcy0mTqeHuCqT0Vip7XwA ppLS' +
'QM27OSc9RnfQODSeFg9ImK8OphrTL2AhXVZ1lY0W6lxe/vWuLbUL7' +
'9v9gb0cGSG/dvMjO+hNAipDb5O25U852PT2N12J8VxdCSbt7N/6dg' +
'H8F0pC3IOVgCFKQvLyEvBw/QColwVlTkyctxUPSoPF476aFRiPVCT' +
'IYtGR9XT4H+xGC+mZewI1Eyvb3N3V1VoGZgt3Th9TKkgTXK3f 3k84' +
'uNB4T+/TTT/F4eRxORkVZHIJe6HtIOaEtzjN5R6vcXe/traGuPUL/' +
'3e5AaEbGlbb2NSHNz4uNW81wtwNSxxUnvRN50gj3DqSfrNy5l tcgI' +
'gFStKoEHCwGLWVo8M97O9W//rULCHV11T/lRJGR4gRIUajNjJwoKS' +
'kMDnXVN6zMooFYt6ur7uTJd58jDg5xCV6FtP4/kDK68N0PP+xFyPL' +
'JI/mlJLhmZkdgR/jnRl9m8fnnn7Ozs5HJGpGRQQi5PzwNwcvHhUFL' +
'oFASQ0OtYqIn5OQEGZmh9E4L6xseQio6Md49NNAcGuK68vrRN SBNS' +
'go+f97OykoTnFRbh/Yb6Pbt+wGNkoJOpamp2NZWxsvDoq+v9gFXmF' +
'9x0tzr7e1lVEgVFemN6qelhQOkra33FeRFaEIKNhob6z868ni rkNK' +
'qnL5WIY3OuBMBkIq9BymcRgIBQVRHAqTLL2eFBNmxGOkvv9x4 z+Fg' +
'19LSjL4WKie3+XHFTQvMzslJx96erKujYGVBAEilpTf20DdIW UVpZ' +
'LR3cOhJwAU7IHRktCsvL/P9cTMgFJxUl7JhSD9ZuRMqIiPNIyPDAx' +
'Gvu5sRK8tBAoEhM4WOTSaTUlJu5eTeSk0Nb2spe/y41MCA8vY2kPG' +
'hVCQUFSCcliqvyAAzJWmqMH4RgCy+/EHhi4XJZ/OjYKa9vfWrkK7l' +
'pMFxty+mp4drqMkBpyKiaz5+Ky4uhEJJQrlfmgTOC5yqoD7Yi 18zM' +
'69ATlpYeEtVVRIgNaDrL/EJwSkpoeXlqWiMDE2OAi6e9j9vX1l5B4' +
'tDbBxSl6KirUGafY0KqbgojflyiorSOKwMDittZIgNDXHh5WX WZmx' +
'JMeg5AGZGRkJpaXLeveu93dVdnZVGRnobbeEHkclJvLkZnoCX zM27' +
'vTp2dOCng4xOitu5c4fnGffJycGJ8V7w0IrK7JmZ4ba2BppDZ 4GXH' +
'KGQNZHNzaUQ6zIe7n6yesbk5UXlEHwS4pzNTSVqBBngFINRom 8uEM' +
'UVFuXOTA8+fdrU2lI2Otr54tnE6Gj3+3PXhYR45eQE5GT5UtP CzUz' +
'wHBxHKBQ8I3Oqoaq6usrnz8YeN5fAmUTKCTrY6Tx+fH/1Rd40IAUb' +
'jQj3eFR1F4+T0dfHfPcdvSW18Th5DEZKVUX81at5cTFuSFQ/1FTSl' +
'NTQhITLV696B146vWqmHHAy19o4MtI7JsYvNSVURwdFc2zH0k rXzl' +
'731ClDT08LQ6ONQer/BlKzTUKanb3qpIY4MVqQfvbZp2p4eQJeFnK' +
'Hof5GSE5Xc3z0ej2H6f79/IXnY2OjT3p7qqen+14uTU9NPmVnp3H7' +
'Q1lZoa+35cYNP309VWNDPI7WUkvKSgo93c1RV89qkxX09TDvL 5vzy' +
'Wo42tFRHxbqSlKXpWgpo9G/j7pTdNEG+ioA6dTUIEAKRUUF8X4N7x' +
'37Z1gcpqyscHZmuK+vycBAtbAwEQhtb2tgZmaiuYu3t/kZTxMcVqK' +
'7u56L8wiUdb/lbe3atUseKSwrwwNBb0truZMjhYvzqLY2hoWVxiPG' +
'8BOYmBiPjvbNza2sof382fjTp43z8/Bh4qyXB836lZWl5OUFZWV4q' +
'6tzvM6aAafaWipCa9/p3r17t6ur8/hE/9P+RqK6nLKSqLmZupursa' +
'4uam5uGICl6aRJSUHBwc5trQ801OV0KeusL7p7z24MWgY4NTT ANjQ' +
'W8PKyGGzQp9ZSSIh7wAVHW1sKdRUvQQEOiu6aY1N+fo6A8+XL zvYO' +
'epCWvr8Bkbiykpi2Nqq5udB0g0/BUCHNzLpqYUaiWTl9rTppNMTb4' +
'KSSErSDQMjpCAQkDiONUhEfHnp8wd9ORJjD1JTMtvq4/TuCnmNqeh' +
'JYWFqYXFycerk0MzbSvrg4ubQ47e19hmb9yUlRCy/GuzoqkAh+To4' +
'j6mo08ElIiHw+P9reUiorzc3OdhCc/f1tbt8OnZ8dbm4slBTnYGU+' +
'gEb9PmkBi0GQiDI4jHhhUSI728rYkYgI2zsPsLzRnj17FBTkn Z0d8' +
'vNSJyaf9ve3BF4+ZWKMAQ8FMw0Lv/z992s+7AYOBbGujDT3zOywAp' +
'IfPqy15VoC31GUFwGO5BD8xSXJoyMdhvoo+GxgoIbFqfAL8IJ 1cnK' +
'eMDDQLXtQMDXVP7eyou9gdPS55ub783MjYKMXL/qvVTnEt8oqkkqK' +
'wgryQiX3k4eH2gz0UeJinEaGakQNjIiIEPymLCzMoqLCmprEk JCAn' +
't7m+dmhkvtJmVnRqWkRcfERfn52QJOeLurOncixsU4LCxortE Rd9T' +
'rjYfq4pRRslOYG70hEhB8NQa+KeFX1XScHXeBUSmrN5akZl7k ZycA' +
'ARyYrXwxwSkwMAkhFRbmOrzGp0t7eyNfH1tZWJzEhCPzu/Q3Y2VkN' +
'DAlEdYXffl04d+7dBfDpy+mUqZWVlp+P7chQU0SE50YPxNHR2 MJc4' +
'6ynaV9vdcAF+7U2+/7779QJSCxGCo+XaWoufD4/5Givg8VKWVlR1N' +
'UxgkL8zMxMXFycRkb6VY/uv3g2urgwCTaalHi5u+sRfAYbDQwMWKv' +
'ytNSI+rp742OdkRHuoiLsCkgalxo4ddWPskaG2kKCTgkLsiBk aEyQ' +
'uxV7ofxB6mB/86ULtgK8x6Ulfr8/jkCIKsrzi4myySN44QLiecZEE' +
'cmnoCCAxUiQSEgSSZ5EUoSip6uqr6/q52tVX180MzVYWpp68+YFN1' +
'eD5NTwyur8kJALdNIrqlCqEghZHkkJzqHB9vyCOB+fzcxj//rrr5W' +
'VJBWQAirKIrbWmlVVObOzw/fybpuexKkqixDVEZYW6jm5N8DcZ2eG' +
'AE//87adnTXP58cG+58AXPQr/+abb9AoWeAUi5E8fUqvra18cqL31' +
'u0ALS0lPEZKUwNpZIgJC3WbnOydnOhpaiqurMwsKU1z9zhFfQ nvvv' +
'0/4PArT8HY2JBnp/vT79BYrsfcVF1VVby8PP1hxZ3g4HOMHDJuJeg' +
'FF5BYXBiPjvb28LTc+lNsRKKquhpSQ0MROB0dabkc6AycrrWO nI4O' +
'wdAA5+Zm+nJpsq4+n/Y2FBxRXf63X56npTG0Ls0b6epCyKFQWHQbA' +
'B8YaN3ogVB0sHicbEZ6xM+vn/X2NtLZ8ptvviYQFMDmyJqK57wswP' +
'heLk5XV991PqWnSZQzNEC7uRiWP0wbH+9YfDGRnBQUEb7y8jv YZmy' +
'4m0ymF8BYWRCJajKQK8GO1VVZ7q5G729jehKLx4jLSHG9mB+r KE87' +
'7aTz/jaG+ipoFWEJMY75ueH7JYn2Nr9/KTcPh4Q4u4gwKxB3vyy9q' +
'7OupqagtCy9ouLug4dZUErL7hQUJebkxt7JuJp+50p8wmXAMy Mz6u' +
'rVi9Y2pvIKCDru+bakpYWBUCVFodqavKmZoaSkWEb2oil+AW7 I6XA' +
'YCaK6rK2NppODTlpaeG1dfkd7RUdn9YMHaRcDHOzttCoqs8bH e0ZH' +
'OoODAhh5EcYnq9EOAiFBwMkQ8DK6uqrubsY+PtZQYWdXdV9fQ 3d3T' +
'WdHZVv7w7q6/OKSDBMTw/cXlzh8+KCauqqLm52Ojtb79RNwcqqqEq' +
'Wlyc+fj/n7+zDSpJVFrdUUsBjpkBC3V8tzM7P9hob6jOxIRz/+uJ9' +
'IXCHU0op8+/bFX3950dhUeN6fdiKAREqpEeTu30/8968LYWHBNLfh' +
'4+e2sNRqbChlfK0/qoRF+E1MNB5VZOTmpnFxbfhJSRFRASMDfFlpU' +
'k52ioDA+ndwIDLRpaD1KSqQnHqfNT/vY1VSEt/VWTk82DQy1NLYkB' +
'8ddfasp0lzc9H83ODMZF9Y2KV1ew6cHCUFIXtr0uR41+KLyfr 6sve' +
'3wWJk5OX4rMzwoyNPIPmqrS15fxuUiqSsNJepEWpooBUCv6pH BW/+' +
'tGPHDikJbgtzQlJqeMadqMzMqMyMlf+mpkempEWkpV9JSYtMT AqLS' +
'wiNjb0cGubr7eNiamZAJ1lbS/BF0tIiFB1UatrV5KTYLS7gA0mxoB' +
'Avkajk4EDx9jIPD3NPSAzOyorOK7gNTNXXFzQ0luTmJlnbmG3 iXfO' +
'QxSgryxro486eNQsJcUlJCS0qSayty2tvr+jqqEpOvo7FoXau 8S4M' +
'+jp85BCZjEpODr9x4yrjhggWTySqXLjgWFCQ5uzs+EHeynfgw I8UC' +
'sHOlhIRcaa7pwo4jYujfdn89ttvtbXQGRk3zMxO/iMmu9IXHIKoqK' +
'CeHuGctxXERYkJl/LzYsvLkh89ygRIOzsednU9KinJsLe3PHyYobF' +
'Nbm4OElE++qpXSXFazLUQmtcKLi52Al46IsytID8x6mqQAD+N ITJO' +
'TjYsWiI40Ole7u0rkYH8tLb5h2rHjs9ZWJgkJEVQaAUNEk6di FVBK' +
'YqKCa/1BocN6cCB/fCDKiohSJoEEokA+eAeuuOx/zgdPPSTvLyMtg' +
'5RW5v0Qc7YP0jgGmxszDIy4ni8iraOuiZZDYNRFpcQYWRhq79 G/w+' +
'LKQil');

//Procedures taken from Iamadam's StrongHolder
tempPic := GetMufasaBitmap(NewImg);
BreakImg := TMufasaBitmap.create;
BreakImg.SetSize(tempPic.Width, tempPic.Height);
tempPic.FastDrawTransparent(0, 0, BreakImg);

end;

//Procedures taken from Iamadam's StrongHolder
Procedure BreakScreen;
Var
Canvas: TCanvas;
begin
Wait(500);
try
SmartSetDebug(True);
Canvas := TCanvas.Create;
Canvas.Handle := SmartGetDebugDC;
ClearRSCanvas(Canvas);
BreakImg.DrawToCanvas(235,200,Canvas);
except
writeln('error...');
end;
end;

Procedure Report;
Var
ExpA,ExpS,ExpD,ExpC,ExpR: Integer;
begin
ClearDebug;
ExpA := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
ExpS := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
ExpD := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
ExpC := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
ExpR := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;

WriteLn('=-=-=-=-=-= Catacomber '+Version+' by Flight =-=-=-=-=-=');
WriteLn('Time Running: '+TimeRunning);
WriteLn('Attack XP: '+IntToStr(ExpA));
WriteLn('Strength XP: '+IntToStr(ExpS));
WriteLn('Defence XP: '+IntToStr(ExpD));
WriteLn('Constitution XP: '+IntToStr(ExpC));
WriteLn('Ranged XP: '+IntToStr(ExpR));
WriteLn('Deaths: '+IntToStr(Deaths));
//WriteLn('Breaks: '+IntToStr(TotalBreaks));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
end;

Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,131072);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
FreeBitmap(Pic);
end;

Procedure OnScreen;
Var
ExpA,ExpS,ExpD,
ExpH,ExpR,XPH_A,XPH_S,
XPH_D,XPH_H,XPH_R: Integer;
begin
ExpA := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
ExpS := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
ExpD := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
ExpH := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
ExpR := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;

XPH_A := Round((ExpA * 3600) / (GetTimeRunning / 1000));
XPH_S := Round((ExpS * 3600) / (GetTimeRunning / 1000));
XPH_D := Round((ExpD * 3600) / (GetTimeRunning / 1000));
XPH_H := Round((ExpH * 3600) / (GetTimeRunning / 1000));
XPH_R := Round((ExpR * 3600) / (GetTimeRunning / 1000));

PrintOnSmart(['~Catacomber '+Version+' (by Flight)~'],Point(15,30),3716227);
PrintOnSmart([''+TimeRunning,'Attack XP: '+IntToStr(ExpA)+' ('+IntToStr(XPH_A)+' XP/Hour)',
'Strength XP: '+IntToStr(ExpS)+' ('+IntToStr(XPH_S)+' XP/Hour)',
'Defence XP: '+IntToStr(ExpD)+' ('+IntToStr(XPH_D)+' XP/Hour)',
'Hitpoints XP: '+IntToStr(ExpH)+' ('+IntToStr(XPH_H)+' XP/Hour)',
'Ranged XP: '+IntToStr(ExpR)+' ('+IntToStr(XPH_R)+' XP/Hour)',
'Deaths: '+IntToStr(Deaths)],Point(20,60),15856381);

MarkTime(ScreenTime);
end;

Procedure Commit;
begin

AttXp_New := R_GetSkillExp(SKILL_ATTACK);
StrXp_New := R_GetSkillExp(SKILL_STRENGTH);
DefXp_New := R_GetSkillExp(SKILL_DEFENCE);
HitXp_New := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_New := R_GetSkillExp(SKILL_RANGE);

stats_IncVariable('Attack EXP (Gained)',(AttXp_New-AttXp_Old));
stats_IncVariable('Strength EXP (Gained)',(StrXp_New-StrXp_Old));
stats_IncVariable('Defence EXP (Gained)',(DefXp_New-DefXp_Old));
stats_IncVariable('Hitpoints EXP (Gained)',(HitXp_New-HitXp_Old));
stats_IncVariable('Ranged EXP (Gained)',(RngXp_New-RngXp_Old));
Stats_Commit;

AttXp_Old := AttXp_New;
StrXp_Old := StrXp_New;
DefXp_Old := DefXp_New;
HitXp_Old := HitXp_New;
RngXp_Old := RngXp_New;

Report;
MarkTime(CommitTime);

end;

Procedure ScriptSetup(World:Integer;Signed,Clear,SetCam:Bool ean);
Begin

AddOnTerminate('Report');

Smart_Server := World;
Smart_Members := Member;
Smart_Signed := Signed;
Smart_SuperDetail := False;

SetupSRL;
DeclarePlayers;
CheckStats;
R_UpdateHooks;

if Clear then
ClearDebug;
LogInPlayer;
if SetCam then
SetAngle(true);

LoadVars;
OnScreen;

End;

Procedure humanWait(time : Integer);
begin
wait(time + random(time) + random(random(time)));
end;

Function DeathScreen: Boolean;
begin
Result := R_ValidInterface(18);
end;

Function R_ClickItem_F(Slot: Integer; Action1, Action2: String): Boolean;
var
InterfaceID, X, Y: Integer;
Item: TInterfaceComponent;
begin
Result := False;
InterfaceID := R_GetInventoryInterfaceIndex;
if InterfaceID = NULL_INT then
begin
R_Debug('The Inventory interface doesn''t exist!', '');
Exit;
end;
if InterfaceID = INTERFACE_INVENTORY then
begin
R_GameTab(RTAB_INVENTORY);
end;

Item := R_GetInterfaceComponent(InterfaceID, 0, Slot-1);
if(Item.ID <= 0)then
Exit;

R_ClickInterface(Item, 3);
GetMousePos(X, Y);
wait(125+Random(55));

if(IsUpText(Action1) Or IsUpText(Action2))then
begin
Mouse(X, Y, 0, 0, True);
Result := True;
end;
end;

Function R_WindWalk_F(T: TTile): Boolean;
Var
I, Tries: Integer;
M, P: TPoint;
CTRLPoints: TPointArray;
begin
P := T;
repeat
M := R_GetMyPos;
CtrlPoints := R_WindPath(M.x, M.y, P.X, P.Y, 5.0, 2.5, 0.0, 0.0, 4.5, 2.5);
Inc(Tries);
if(Tries > 20)then
begin
R_Debug('Failed more than 20 times', 'R_WindWalk');
R_FindRandoms;
if Cast('lumbridge home teleport', False) then
Wait(RandomRange(9500,1175));
Exit;
end;
for I:= High(CtrlPoints) downto 0 do
if R_WalkToTile(CtrlPoints[i],0, 10) then
begin
Result := I = High(CtrlPoints);
Break;
end;
until(Result);
end;

Function inArea(Area : TBox) : boolean;
begin
result := PointInBox(R_GetMyPos, Area);
end;

function atTile(location: TTile; name, action : TStringArray; height, randomness : Integer) : boolean;
var
tilePoint : TPoint;
begin
result := False;
tilePoint := R_tileToMs(location, height);
MMouse(tilePoint.x, tilePoint.y, randomness, randomness);
wait(100);
if(IsUpTextMultiCustom(name) Or IsUpTextMultiCustom(action)) then
begin
ClickMouse2(True);
if DidRedClick then
result := True
else
result := False;
end else if(isUpText('options')) then
begin
clickMouse2(False);
if ChooseOptionMulti(action) then
result := True;
end;
end;

Procedure Fight;
Var
inFightWith : TNPC;
npcs : TNPCArray;
index : Integer;
begin
if(R_AreWeInteracting(InFightWith, False) and (getSystemTime - lastFightTime < 1000 * 60)) then
begin
lastInteractedTile := inFightWith.tile;
humanWait(1000);
exit;
end;

npcs := R_SortNPCs(R_GetNPCs(currentArea.targetName, false));
if(GetArrayLength(npcs) = 0) then
begin
humanwait(500);
Exit;
end;

for index := 0 to high(npcs) do
begin
if((npcs[index].Interacting = -1)
and not((npcs[index].Tile = lastInteractedTile))
and not (inIntArray(currentArea.DAnim, npcs[index].Animation))) then
begin
lastInteractedTile := npcs[index].tile;
if(not R_tileOnMS(npcs[index].Tile, 0)) then
exit;
if(atTile(npcs[index].Tile, [currentArea.targetName], ['Attack'], 300, 5)) then
begin

case (Random(4)) of
1: MakeCompass('Random');
end;

lastFightTime := GetSystemTime;
humanWait(2000);
end;
break;
end;
end;
end;

Function AreaCheck(Where: String): Boolean;
begin
Result := False;

Case LowerCase(Where) of

'castle' : Result := inArea(Areas[0].region);

'grave' : Result := inArea(Areas[1].region);

'room1' : Result := inArea(Areas[2].region);

'room2' : Result := inArea(Areas[3].region);

'room3' : Result := inArea(Areas[4].region);

'region' : Result := inArea(currentArea.region);

end;
end;

Procedure ToLocation(Where: String);
Var
T1,T2,T3,T4: Integer;
begin

Case LowerCase(Where) of

'grave':
begin
R_WindWalk_F(Point(3246,3198));
Wait(RandomRange(1215,1325));
While R_Moving do
Wait(1);
end;

'room1':
begin
if(Not R_TileOnMS(Stairs_Enter,100)) then
begin
R_WalkToTile(Point(3246,3198),1,1);
SetAngle(True);
While R_Moving do
Wait(1);
end;
if atTile(Stairs_Enter, ['Catacomb','entrance'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);

MarkTime(T1);
repeat
if (AreaCheck('Room1') Or (TimeFromMark(T1) > 5000)) then
Exit;
until (False)

end;
end;

'room2':
begin
if atTile(Stairs1_Down, ['Stairs'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);

MarkTime(T2);
repeat
if (AreaCheck('Room2') Or (TimeFromMark(T2) > 5000)) then
Exit;
until (False)

end;
end;

'room3':
begin
if atTile(Stairs2_Down, ['Stairs'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);

MarkTime(T3);
repeat
if (AreaCheck('Room3') Or (TimeFromMark(T3) > 5000)) then
Exit;
until (False)

end;
end;

'region':
begin
R_WindWalk_F(RTile);
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);

MarkTime(T4);
repeat
if (AreaCheck('Region') Or (TimeFromMark(T4) > 5000)) then
Exit;
until (False)

end;

end;
end;

Procedure CheckScreen;
Var
T,I: Integer;
S: TInterfaceChild;
Items,Items2: TInvItemArray;
begin
if DeathScreen then
begin
Inc(Deaths);
MarkTime(T);
Repeat

if(TimeFromMark(T) > 5000)then
Break;

S := R_GetInterfaceChild(18, 36);
R_ClickInterface(S, 1);


if Not DeathScreen then
Break;

Until(False)

end;

Wait(RandomRange(4375,5350));
Gametab(tab_Inv);
Wait(RandomRange(575,780));

if R_ItemExistsEx([
'scimitar','blade','sling','Sling','shortbow',
'helm','platebody','kiteshield','defender','hide',
'Amulet of','bracelet'],Items) then
begin
if(GetArrayLength(Items) = 0) then
begin
humanwait(500);
Exit;
end;

For I := 0 to high(Items) do
begin
R_ClickItem_F(Items[I].Slot,'Wear','Wield');
Wait(RandomRange(1150,1350));
end;
end;

Wait(RandomRange(575,780));

if R_ItemExistsEx([
'scimitar','blade','sling','Sling','shortbow',
'helm','platebody','kiteshield','defender','hide',
'Amulet of','bracelet'],Items2) then
begin
if(GetArrayLength(Items2) = 0) then
begin
humanwait(500);
Exit;
end;

For I := 0 to high(Items2) do
begin
R_ClickItem_F(Items2[I].Slot,'Wear','Wield');
Wait(RandomRange(1150,1350));
end;
end;

SetAngle(True);
ToLocation('Grave');

end;

Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
w,x,y,z,h,m,s,
RealBTime,
CurrentBTime: integer;
NPC: TNPC;
begin
if not LoggedIn then Exit;

w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-randBreakIn * 60000, randBreakIn * 60000);
z := RandomRange(-randBreakFor * 60000, randBreakFor * 60000);

if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
if R_AreWeInteracting(NPC, False) then
Wait(RandomRange(4750,7535))
else
begin
Repeat

R_FindRandoms;
Logout;
Wait(RandomRange(435,675));
if Not LoggedIn then
break;

Until(False)

BreakScreen;
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(x+z));
Writeln('Logging in.');
OnScreen;
if ChangeWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(Member, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
SetAngle(True);
R_FindRandoms;
IncEx(BreakRounds, (w) + (x));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
end;
end;
end;
end;

Function NoAmmo: Boolean;
begin
Result := FindBlackChatMessage('no ammo');
end;

Begin

ScriptSetup(86,True,True,True);

Repeat

if (TimeFromMark(CommitTime)>=30000) then
Commit;
if (TimeFromMark(ScreenTime)>=5000) then
OnScreen;
BreakHandler(BreakIn,BreakFor,Bir,Bfr);

if NoAmmo then
begin
Writeln('Ran out of ammo!');
Report;
Logout;
TerminateScript;
end;

if not LoggedIn then LoginPlayer;

if AreaCheck('Castle') then
begin
CheckScreen;
ToLocation('Grave');
end
else if AreaCheck('Grave') then
ToLocation('Room1')
else if AreaCheck('Room1') then
ToLocation('Room2')
else if AreaCheck('Room2') then
ToLocation('Room3')
else if AreaCheck('Room3') then
ToLocation('Region')
else if AreaCheck('Region') then
Fight
else if (Not AreaCheck('Castle') And Not AreaCheck('Grave')
And Not AreaCheck('Room1') And Not AreaCheck('Room2')
And Not AreaCheck('Room3') And Not AreaCheck('Region')) then
begin
R_FindRandoms;
CheckScreen;
end;

Until(False);

End.

Also, why is your entire script indented by two spaces? :P

Nava2
08-21-2011, 07:42 PM
Double posting.. but I redid the walking. got it going:

{/////////////////////////////////////////
// ~Catacomber by Flight~ //
// //
// Version: 1.0 //
/////////////////////////////////////////}

program Catacomber;

{$define SMART}
{$i SRL/SRL.scar}
{$i SRL/SRL/skill/magic.scar}
{$i SRL/SRL/Misc/stats.simba}
{$i Reflection/Reflection.simba}
{$i SRL/SRL/misc/paintsmart.scar}


//////////////////////////////-Begin setup-/////////////////////////////////////

Const

//SRL Stats
SRLStats_Username = '';
SRLStats_Password = '';

//Script settings
FightRegion = 10;
ChangeWorlds = True;
Member = True;

//Break settings
BreakIn = 135; //How long before we take a break? (minutes)
BreakFor = 13; //How long will we break for? (minutes)
Bir = 12; //Random minutes to add/subtract from how long until we break
Bfr = 7; //Random minutes to add/subjtract from break duraction

//////////////////////////////-End of setup-////////////////////////////////////

Var
BreakImg: TMufasaBitmap;
targetName,Version: String;
lastFightTime: Integer;
lastInteractedTile,Stairs1_Down,Stairs2_Down,
Stairs_Enter,RTile: TTile;
Deaths,CommitTime,ScreenTime,NewImg: Integer;

//Break variables
BreakRounds,TotalBreaks: Integer;

//Exp variables
AttXP_Start,AttXP_Old,AttXP_New,StrXP_Start,
StrXP_Old,StrXP_New,DefXP_Start,DefXP_Old,
DefXP_New,HitXP_Start,HitXP_Old,HitXP_New,
RngXP_Start,RngXP_Old,RngXP_New: Integer;

Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
BoxRewards := ['XP','xp','lamp'];
LampSkill := 'hitpoints';
Active := True;
end;
end;

Procedure CheckStats;
begin
if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
begin
case MessageBox('No Stats account entered, would you like to set one up?','SRL Stats',mbYesNoCancel) of
mrYes:
begin
OpenWebPage('http://stats.villavu.com/register');
TerminateScript;
end;
mrNo:
begin
SetupSRLStats(165,'Anonymous','anon1337');
Exit;
end;
mrCancel: TerminateScript;
end;
end else
SetupSRLStats(165,SRLStats_Username,SRLStats_Passw ord);
end;

type
TArea = record
Region: TBox;
DAnim: TIntegerArray;
targetName: String;
RTile: TTile;
fightArea: Boolean;
end;

TAreaArray = array of TArea;

var
currentArea: TArea;
Areas: TAreaArray;

Procedure DefineAreas;
Var
Zone: Integer;
begin
Zone := FightRegion;

setLength(Areas, 15);

// lumbridge:
with Areas[0] do
begin
Region := IntToBox(3217,3210,3226,3228);
fightArea := False;
end;

// grave:
with Areas[1] do
begin
Region := intToBox(3238, 3191, 3251, 3203);
fightArea := False;
end;

// room 1:
with Areas[2] do
begin
Region := intToBox(3875,5526,3879,5529);
fightArea := False;
end;

with Areas[3] do
begin
Region := intToBox(3863,5522,3869,5526);
fightArea := False;
end;

with Areas[4] do
begin
Region := intToBox(3970,5560,3974,5565);
fightArea := False;
end;

// region 1:
with Areas[5] do
begin
DAnim := [8878, 8878];
targetName := 'Warped cockroach';
RTile := Point(3972,5553);
Region := intToBox(3969,5550,3977,5557);
fightArea := True;
end;

with Areas[6] do
begin
DAnim := [12896,12896]
targetName := 'Corpse Spider';

RTile := Point(3986,5553);
Region := intToBox(3978, 5550, 3994, 5556);
fightArea := True;
end;

with Areas[7] do
begin
DAnim := [7244, 7244];
targetName := 'Warped fly';

RTile := Point(3995,5543);
Region.X1 := 3987;
Region.Y1 := 5539;
Region.X2 := 4003;
Region.Y2 := 5547;
fightArea := True;
end;

with Areas[8] do
begin
DAnim := [12893, 12893];
targetName := 'Crawling corpse torso';

RTile := Point(4010,5544);
Region.X1 := 4004;
Region.Y1 := 5542;
Region.X2 := 4015;
Region.Y2 := 5546;
fightArea := True;
end;

with Areas[9] do
begin
DAnim := [14860, 14860];
targetName := 'Warped rat';

RTile := Point(4023,5544);
Region.X1 := 4016;
Region.Y1 := 5538;
Region.X2 := 4029;
Region.Y2 := 5548;
fightArea := True;
end;

with Areas[10] do
begin
DAnim := [12869, 12870];
targetName := 'Skeleton';

RTile := Point(4024,5530);
Region.X1 := 4019;
Region.Y1 := 5523;
Region.X2 := 4028;
Region.Y2 := 5537;
fightArea := True;
end;

with Areas[11] do
begin
DAnim := [4917, 4917];
targetName := 'Warped bat';

RTile := Point(4020,5515);
Region.X1 := 4011;
Region.Y1 := 5504;
Region.X2 := 4027;
Region.Y2 := 5520;
fightArea := True;
end;

with Areas[12] do
begin
DAnim := [12869, 12870];
targetName := 'Corpse archer';

RTile := Point(4017,5496);
Region.X1 := 4009;
Region.Y1 := 5489;
Region.X2 := 4021;
Region.Y2 := 5502;
fightArea := True;
end;

with Areas[13] do
begin
DAnim := [6182, 6282];
targetName := 'Skoblin';

RTile := Point(4000,5495);
Region.X1 := 3992;
Region.Y1 := 5492;
Region.X2 := 4009;
Region.Y2 := 5499;
fightArea := True;
end;

with Areas[14] do
begin
DAnim := [12869, 12870];
targetName := 'Corpse mage';

RTile := Point(3995,5481);
Region.X1 := 3988;
Region.Y1 := 5475;
Region.X2 := 4002;
Region.Y2 := 5489;
fightArea := True;
end;

currentArea := Areas[zone+4];
end;

{Skeleton by Brak, re-written with bitmaps, yay!}
Procedure TurnAidOff;
Var
x,y,BMP: Integer;
begin
BMP := BitmapFromString(9, 8, 'meJyTkqmSkWuUkqkSl8yWArORuRAR' +
'eaUeCBuCgFy4GknpYggbohLIBcoyMjDgQd0z5gNRdueS8Kwy7 +Ri+' +
'9iK0JScv//+wRHDXk4g4pohCEQZx1GkgFxkWWQpNI0AjLpP/A==');
setbitmapname(BMP,'AidButton'); //Don't laugh

if TabExists(tab_Options) then
if GameTab(tab_Options) then
begin
if FindBitmapIn(BMP,x,y,570,410,605,450) then
begin
MMouse(x,y,5,5);
Wait(Random(100));
if WaitUpTextMulti(['oggle', 'ccep', 'cept', ' Aid'], 500) then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,True);
Wait(RandomRange(150,250));
Exit;
end;
end;
end;
Gametab(tab_Inv);
FreeBitmap(BMP);
end;

Procedure LoadVars;
Var
tempPic: TMufasaBitmap;
begin
Retaliate(True);
TurnAidOff;
Version := '1.0';
MarkTime(CommitTime);
MarkTime(ScreenTime);
MouseSpeed := RandomRange(17,20);

AttXp_Start := R_GetSkillExp(SKILL_ATTACK);
StrXp_Start := R_GetSkillExp(SKILL_STRENGTH);
DefXp_Start := R_GetSkillExp(SKILL_DEFENCE);
HitXp_Start := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_Start := R_GetSkillExp(SKILL_RANGE);
AttXp_Old := R_GetSkillExp(SKILL_ATTACK);
StrXp_Old := R_GetSkillExp(SKILL_STRENGTH);
DefXp_Old := R_GetSkillExp(SKILL_DEFENCE);
HitXp_Old := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_Old := R_GetSkillExp(SKILL_RANGE);

Stairs_Enter := Point(3248,3198);
Stairs1_Down := Point(3874,5527);
Stairs2_Down := Point(3867,5524);

DefineAreas;

NewImg := BitmapFromString(311, 49, 'meJztnXdcFNf6/1M01auJ0Rg7X' +
'XrvsCx9OyzLAkuX3kHpCgIiinQURFHpRUBAuiCC9CJFuvTeVE A05X' +
'7//D2w9xqjy7KACcn9+XmdV15rmDl7Zva85/M8Z86c+eSTj9oG7dr' +
'17alTDvfvZ3uesf3000+3uzkf9c8QBwd7ZcX9i4EeGkR5dXU5 KMSV' +
'gvxPIUKRf6doairp6GC0tfHyCrIHDvy43UfwT1J5ecHS4nRPb 62sL' +
'D83N+d2N+ej/hnS0yMPDLR1dNQY6CkryPPb25IePcodG++bmOh/+r' +
'S1/Ul1fX1xZUV2aXkGtdTXFvT1PZ6eGiwqStLVUZSW5iZqqBw9dmS ' +
'7j+OfoYcVd/r76nt76rg4j+EJqtvdnI/6Z8jKxiA/P665+cHkZP/Y' +
'WC/QmnX3embmtTuZ0amp4aslIjk1HEp8YvCtWxd9fSy1yXIKcrxqB ' +
'KmS4uSe3mYleX5hETakvPR2H8o/QMlJwTdj/V+8mABItbVx292cj/' +
'pnyMnJOCrKW0yUbWysb2pyYHS4q62tMuZ6iImJnqycFAcH2/4f933' +
'zzTdffLHzs88+27Vr19GjhyUkhHBYGTkEj6QEh6qKMHguHit+/Ng+' +
'RSXZ7T6av7vi4i9FRHguLU4BpDpamO1uDkPi5eW5ciX8rJeLu aWhj' +
'Izkdjfn/0e5uZkbGagaGaqCh06M9SUm3WJiOs7IjuzsLFJS3MKCzC' +
'LCrKOj3RLi7CzMPwoI8v7ZDf5HCyANCXaZmxsCSDU1tznc5eH hwWL' +
'R624WFOy3tDj+86u5kpKE836Of0HDPuodnT1riUGJDA6037x9 8cb1' +
'KLBLxvfds2e3lBSPmAgbQpa7peXhipkqCn/++ed/Xmv/6YoHSENcx' +
'8e6+HhZNIjK29WM/fv3JyXdXng+djnQZceOHfQ3NjAgEghyN66ff/' +
'Vqbmz0yV/Two96W97nrDQ1ZAb6W0lEGWZmpo3ufujwQQiVkXK8KWm' +
'RygoCwOlHM6UjKqRDg48FBdg0NLYH0s8++/RRZeHPr+afPx+VlxPm' +
'5OKgv72YmKChISG/ID4lJdbZ2emvaeRHvS1fHytNokxzSznXiUMbs' +
'tE3QiLFlBUFVRQFU9KvAKR4wrYZxN9fEO6GrkIqsH2Q7t37fW tb2c' +
'hwy+REJz8/m4qqwrY046MYV8AFe3DSxqYHTMf2ffXVV5uogYubg0y' +
'So2jJT0z2A6Rqah9/9DUVHx8Yut1OysLCVF19N+/ejYUXYwCptrba' +
'tjTjoxgRJCMCAvyZWTGODtr5+fFMx/dtbmbCd9/vsbMlkzXlRke7V' +
'VWEjU00P3hT/2f0d4AU8pGHD9PvpEcsv5wGSPX1idvSjI9aV/fuZR' +
'YUJldW5k5O9A8MtKNRIkeP7OXkXCc9oSmA/byfDaSlExNPAy46nna' +
'2+eCt/Z/R3wFSGVkJgPTu3ehXr+YAUrIWalua8VHrKi01Ynysr+zB' +
'nda2yr6+Foh1AVJJKdFNVPXdd3vCIzwkxDmmJvsLCuLRmI8/+pr6O' +
'0CqrIy8X5p8Nzv659fPAFJZGYFDhw5uS0s+ir4CAuzT0iJGhr umJv' +
'pDQt2AUCgoFHITVfHxc7u46GMx4qOjPfmF6V988cUHb+3/jP4OkOJ' +
'wKhUV6auQzgOkUEjqigcP/rQtjfkoOvL1tfbzs4lPCnlYnmWor0yF' +
'FI3ezJQhe0cLfT3lurrC0fE+JWXFD97U/yXFJ2wzpLt27YqJCWtrL' +
'2tqLlp+ObMKKTsUI2PSx6dy/m7y87NeLTbu7kbmZjgqpLIyfButh4' +
'WFOSk13NVFf3pq0MX19J/R1P8lrULqti2QHj161NvLc3SkF6Lc5Zf' +
'T83MDCy/GwsPcgVMBfnYoVlZ6/AIf73H/jUQlFIqlpZr/BTsqpCc4' +
'Dv3rX/9ivJL9P+6/X5oTEeExOtx58+Y1xi/FUlKSgYH+0TGBp08b6' +
'GjJQ6iMUhFBU4uqCEpFjExS/pGBoWZRURFHR9vgYD//86dOOelRtJ' +
'VIGkhdCsrAQE1LmyAqJvzll18yfjjva9++H3T1dIKCLqSkxPh 4W1t' +
'aaBjqY/T1sSeN1UxMyEQNnIAg34ZmWK2Eu6HgpC1/MaSRkSEvXozP' +
'zfaPDLXMzjz9+dUcxLqvlmfweAT/KqHUQsDLeXravbOvtLRUe2tDQ' +
'UGcubnut99+Q/+L4GyoqCh7eDi7eTgaGekQSXh5eQQfH+933323uZ' +
'bz8PCc9XLPzIy/dfuyn6+dk6OBo4Ohra0xHo/aUF99R2Jios7OjtH' +
'RwdFXfQP8HWytyaam6laW2jY2ugaGZAlJsS32nA+iN05qaopN Tgmn' +
'QrpiprISDNYgJ4dof9IwPNw5Mz3U1Fz17bffMrLXzp07w8KCJ 6f62' +
'9sf3cmK9vQ4qa+rTMBLYTESTg7a2Tk3mpvL6usLk5JDdPW06V Ry8q' +
'RR5aOi6pq8hw8zW1vLZ2dHns2PQZmbGxsb76l6lH0p0ElHS4F IRBL' +
'U4NfcxeBBvf0VXt4eTY2lri6GhvqorKzo+bnhrq5qMxOCkpKI HIJf' +
'XIxTVIRDDiGgo6Oqro7es2cPI9VSw91hhp0U+nxISGBfX0NCw uW4u' +
'BDMZgfloq/59fbUvHo1B2CCjUKgC5CCk2Iw0lQnFRHh1CAq1Dfk5+' +
'UnvbNvXkHqLz8/hwhZUJCDoqtB51sgrGporH65ON7VVREQ4KRLwXh' +
'6mCfEB0K5eTMgJMTDy8vOycnczNxAjYg9fvwYnaqgO+noaJWU 3Hv+' +
'bPDn17P//nXh19UC/7ybFYXDIyQleM1MSFpaahu6SH7xxU4zM5Omp' +
'qqnfbWdHQ9HR1qWX86+fjX/Gs7My9nnz0bgf9666W9pQTQyxJE08V' +
'u5DmxdbyB1dtYrKIh/AynnicOKirJsbCxrQXf48CESiZiaGjc81DE' +
'x8RQgTUgKJpHU1/1GPB77/fffxcRcBaAA0oaGogcP0isfZQ8Ots3O' +
'DE9NDTx5UlVYnFRVnTc7O9zZUX/wIO0hR3FxsdrahzOzI3Nzo5OT/' +
'UWF8deivf3P21w4bxt55cyVK2c83I1dnPVv3brQ3V0/Otp56pQeGi' +
'0pIiK4ofODwykaGeL5+Lh/+GGvkpK0jAwvGi1RUBg3/2zMx8eKSqi' +
'gACsPN9OJE0ehQA+XkhJbt1pgbQXS4TY+PhZ19XXyd+h+yclx Cy8m' +
'lpZmlpfnRkY6Dx8+vKGjeCMdHayOtioEAE5O+iEhbnFxF4uK4 iMjz' +
'87M9IG5Dw409vc3NDYWDA41ubi8O/Gvru7e1GTX3Fw/QKqri13rK+' +
'BEPX3a/u/fFl+/mpme6ny1PA2fXzwfGh5u7umurHyUUVOXMzHR/uv' +
'P8//322JPb9XZs5ZOTiZ29maFRck3rvs5OBibmek5OFicO+cSExPY' +
'1VkBu8OOqamhfj62lpZkSwtNaxttYyOC/3n7X395kZYaLigAPwG7h' +
'QVl926GUJKQEG95XLu8PPt6eW5pafJxU2HO3ajYG36xN3zvpI enp4' +
'eHBDtfuuiQmxMzPtbxbG7wvJ8NWVNRTFx4c+d863oT7sbe8K+ rK3o' +
'DKRQuzsNiImxyCB5lJUE8XkqDKKdBRBI15LXIiieNcR5uhilp EcXF' +
'yQ8eZHR31ZucxEiIc+zfv2/dbxwa7ujqqqurzZ+cGpicHgRUgc329' +
'iqAdHS0a3ikc2iwvbunvqOjururEY2mbRkmJkZTU8Pz82PTUw N3s2' +
'Oy7l6rry9qflyWkRl7KdDL3cPBycnC1dXKy9vG1kZTUxNJ0VZ sa31' +
'4vzQViRBQV9+ADR07dmTXW/6rqiqjqYG0tiLdvRv94vm4uSkBIIVy' +
'guMoFVLOE0eFBNkoFLWvvqIXJiUkBF6JPDM83M7Px0IgyNNvw 5Uro' +
'S9eTDztqwfLA0iNjQ0Zb/87kpIShcgWCklDkaguTy3+/va/vH72en' +
'kWjHVmqmdspG1goGXv3r3v7FtcdLumJhu8BiBVVBRf6yvCwi7 98vP' +
'8rz8/e/1q9rdfF3775dkvr+eWlyYa6u/fuBHq5+8ZGuqbEB/i4W6q' +
'p4dNTAwGVJ88eRAc5JqfF3vp4il1dXlrC7Krs3FsrP/iwtjPr2bHR' +
'lsflKempF4LCva9EHAmLNQnIuKM8ykDC3MSkSgfGXmmpbUEII ViZq' +
'q1rp+CgS4tTP38an55aaq2JqemOnvgaf3w0GPoxlFXL/r5e3h6Ovr' +
'5OoeGenqfNTczVbOyIMK1q6ExH4uW1NLCb/rMb0VUQqEEBzsPD3Uy' +
'Hd+nTpDUpSgSCVIZWddWbs1MDQwPPunsrGtoKHlUmX2/LD0v/3ZmZ' +
'lRickjARQdTExwBJ5GYHBoW5sbG+hMjA/ip6ZHj4z1DQ0/Gx3tHRr' +
'paWsrHxrrnANXZEQiYgdzS0lwDQx0mpuM7dtJ+LsPa2mJufmx mdnh' +
'k6AmExCPDT3p6mh0crY/RWheCmfk4GiWnqCCEkOWLivLq6W2QluLZ' +
'EKdvi4eX085OG84VdKGO9oru7hoIdE9wHKESSoV0tRzT0lTZt XZ0D' +
'U567ZrP8GALF9dxeTkhOt8Ijra4MNndU/3i+RiEZNevR22u5VRBH1' +
'ZTV1RXR+rpovV0MZokRSiRV87+8vr5q+XVeA9QXZ61s6MxESU vL7a' +
'4KG5srA0glZSgMbTo7+/j6nr69fI8QNrT/QicFAgFH+x80gwJ6dsT' +
'wuEzPz+Pvr6apqaympp8Ts71//v30vh4GwTDurqY8752XV2Vyy+ng' +
'HGoKjjk0uEjh97+ol27dikpI8hkFYouGi4yWmTltrZSAQF2KC QSvS' +
'fo7e1tVvBcnl14PjLY3/Di2fDYaI+rqyMTE42Qm5WVWZ2ookaQRaM' +
'kUlOCx0fblRVFtoVTKqFg6DicBPQ9iHgH+tsmxvsmJwcAn5L7 aUVF' +
'SXdzYzOzYtLSIlNTIxKSQuITg69c9TrrZWZpqa6vq2RsiDrlp DM9P' +
'aSjJc/I495BQc5p6ZEdT6qAx97exqnpQaAVPgOkfb2tFF0t+s9M4X' +
'DomZmh0ZHOmroC+ABmmpx8e93hCFY2ZqScoLg4JwRUObk32Ng OKSh' +
'u5jbTTz8dCI/wiI09HxHhoaurqq2l1NhYtLAwVV2VDf98G1IoOmsv' +
'uQBOCpw+7WsASCEt3b17N83NdHTIEOJOTfYAoRDu1tVWfP311 5to9' +
'tuCGggEJaI6kqKjSlqF1M3t5OvX869ezvzyGvh6fuNGNM2fAC DNy4' +
'/t7a0WE+WmCen0ZOdvvy6ChwJfy0uTkJMCpwUFuWu1Ga4YJE00s EY' +
'tEAb/tpJs9i8vT63U8HLq1fIchbLmiATE1SQNZTgEMN9TjnruricB' +
'UgJBbvce2idTXR0PFyKIRiCkX16egStSxp1kyLzony4ODlYMW koeK' +
'ZSRHl7+MI2b+7iyymZmEWxF/3HS8zZCgswQc/b2NA0NdwKhwOnQ4J' +
'NHVfd8/NwJBDQPD9ePKyszfA0n9quvvoKwFtJVJFIS8imgG+JhOzs' +
'ycOrja7tnjVP0RgAplOvXz0OkDWxClAvfC1FueXkxIEB/36PHjnR2' +
'Nvb1NWVmRa/EujNDgYEBDA4mHzx4AFwPpSoGsRyYqagw+9GjG16R6' +
'cCBH+NuXwROAU95pKD/BfuS0pTs7Bivs+ZVVdkDg4/RKPE3kArws7' +
'JzsNGsBwhNSLzc1FQEkELh4+N5fxsFBeT8/OjsTH9n56Olhcnp6QE' +
'eHu6NNngtcfNwqqkhtbRVKRTU5cDTU5Pd8/OD0G8d7G3X2oUKaVdH' +
'ORBKE9KqqizgdGlxHMLUkZHm0dHW5se133xDbxwYLFWLjIG49 +RJd' +
'R1tlKkJEZx3ZqprcLBhaXHMxWWde3l7935PVFcAJ4XoHWKAFT PlZ8' +
'fiVN7f8vjxYxPjPfOz/bW1OStm+nImJCSQwZ5z6NBPKJQESQM5NdG' +
'tpCgiK81DM2b780Ql9Px5G0kJDiC0s7Omq7N2dKR7YKDDysqU kaFa' +
'ABaJFBMVZadoK0xN9judtqS//Qqkwc6mJniAtOJRdlb29QcP7jQ2P' +
'mJkAC3mehjkrQUFcbOzkMZWJiTe2tBTdbKyYmSyQlSUNxwvO9 shDd' +
'KGl0SQlBRNS4/QJCGB0MBLTkDonYwrvr7WtjZkS0sNHR3l6ZkBRwc' +
'dKqRQSCTaKx5QIS17kAY2ys11HIt9d4BXVFRkZnoQAt2m5mLI Q2em' +
'+1xcTm20tfTFzMJkba0NCWlxcXxEuEdnZ4UR3Wz3D5BK0oC0s DCuv' +
'v6eu4cZcFpQeHtivF1Scv17BEeOHKJQ0FYWmqamRANDAkTIdX W5vX' +
'01ZaX5jPy4YmKCYKaGBjhDA6yPj7XAynwMGk92pCTHLi6Mtzw uBpY' +
'nxjvSUhM31HMUFKRMTuJTkoMiI9zh99Kl/KVB7xtIPTyMQ8Pc4xKC' +
'MjKvtbfV8/LSuLbTEcSTkhKcujoKw0MdeAK9jI/qpBrqsvfvpyYkB' +
'IWGulU+ykYg1g8+RcWEu7tqq6pzO7tqMjKjHlXmbnQO25Gjh6 E3pq' +
'dHwLUIIOXjZYKMdUM1nL/grqmBlEPwA6GlZalFJYkJ8YFgoyYmBBJ' +
'RTl0NAfnL/PyIvh6KCqmCgujOnTvfrwcIXS1BaLQk/Ohk8h+WOeLk' +
'PDE60vtyaXpstOPly9mR4daqyhKa9WxRSckhN2P9x8c7iEQFL 681P' +
'ZQqgDQfIO0sB0JpQ1p0u7AoztaOkptzvbDwdmraTQaboaunZm uj4+' +
'5qAgnp7ExvZlYUQMpIl6CKQsGamxEhy15YGAVItcjvXnslpcR np3u' +
'f9tVOT3XX1GR3dTxa65bBWgLrTIi7WFx4e3joMfxeosIcLCxM G6ph' +
'K6ImpABpQlKoPIJHSUHA28sMUqFNVAWBrqQEl5urQVV1AZ3xa qqTE' +
'vBSY+O9bi76l4OcI69eYqT+i5e8AM/Mu9cgkw0IsHdxddhQ8+DKGR' +
'ER2NBYDJA+fzZOJCLIZHkjozVTnvdF0lQ7aYTT0lKKj7tUXp5 eUpr' +
'8u41aaOhoK+Px0oqKIgS8zLP5EV4e5hVOOY+JitEYF6JCGhbm 7miv' +
'Az+6qurv63odO3a0p7vl5crdutGXSzNP++qnp3oZsaRN6G72t dhY/' +
'5mpbilJPgODdW6fgY3mUSFdy0mL4u7duxEXd8nrjEVycjDjvU hcXP' +
'j0aaPQEHcDQ3xrWynsezc7jvGjUFKStbTU9D5rsfxyWoCfTVX p3ZH' +
'n6Oig6akeMOi5macJ8Ze8vN0Yr/yT1Z5zLTqkq+tRceGtly9n4Aps' +
'bIQxM9XdUCVbEdVJyRqywKmhgeoJjoMIWe7v936/udoOHNgvJnbi7' +
't2YlNRILu4TNLcBQoODV5x0cnoQj5M8dYpCJq//JCM0qbA4uaYuv7' +
'w8w9gQZWyIlpbewIJ1O3bsuHbtytzsSEtLKQErNdD/eGwMEp/WlJR' +
'bjOz++Y7PTc0MDQxwJE2ckDA/ZKZffvkFZFuHDh+UlhXX1FRVV5OF' +
'gsfLgJNCJJyWFp6SGkqFlEKh8TA1FVI/P9vklBCAlJ+PhZWNBf7/w' +
'UMH21vrgNClxanxsc6uriooMTGRjB/phpSdfe1m7AWAVFych6K7Tg' +
'j3X0gf0oEUDrytvczIAO911pKZmZnBZvzww14g9No1Xzt73eT kELh' +
'u2NqaM34UTMzHzp21CF+J2B9KSfGJi/0hc4fKoUkDA43dXZUebsYe' +
'rsayCBnGK4eeExsbvbQw9bSnhqKlODneNTfTPznZfScjgfFKt ijwT' +
'U0NWSFBJlkZrkdVuSzMP7KxHtjc8ilUCQnxSoqfmJwasLbShD 78/g' +
'bgpAApWVOuu6tOTJQdpSLCxsa6brVKynLl5XeKi5P6+poEBVg Qsry' +
'MP5m+e/fuzMzU2Zmh6uocFRVRcNKpqX4w05bmGg6OdZ6c/fTTT9Fo' +
'VFTUZaS8NJ17cKysTFi0NFpVAiCFooAUWlqclpTgBki1aD2nC YQmJ' +
'l729rLo7akBSLm5mDQ0VLm4OJ90NC+/nAVIZ6AnTHTfv5/Y1VVz5M' +
'ifNUyRnROzIUjzqZBK8knRgrSoKC4pKXhkpFlLS9XWVndDE/XDws7' +
'Gxwf6n7cPCHBycQaONrB688p0rGC369d9S0oSsBjpdyDFYlUA z/a2' +
'svnZfqScoDoBcWC98ck3gp6Tm5Ox9GLiSVuZujoCnPT5sxEIb 9rbG' +
'k6c2Mwz15sTBi0qyH9cUvKEuBhbZ2ettOQJpuObXD6FKvhpFO SFba' +
'xJNTV5igqi33zz7vA7OGlQsAtFR7Gp6T7XiSPCQqy7dq0/PGVlbVR' +
'WlpabGzszO8x54ggP97F1V7ejipWVpa72YU9Pg5+ftQZRrqIy Czy0' +
's6vRzc2J/sDjvn37HB3sGpuqr169vO6Q9SertzZQqtIqKmIAqaKCy' +
'KWLjpC3QtBLJCq9vzE1IY2J8V14PkGFFEpCUtBAfxP0gaWlae DU08' +
'MkKyvK1/csI4e5Of0X0p4VSNcbDMlfgfQmFVKaTkqFdHqqU01N3sR' +
'0YxlTUNCZlJQQ4NTWlqKlpbLRtUEuX3a/dfNCSkqoro7qO5C6uthC' +
'm5saC5aXZ8VEOSXFeRjsOeAdzU1V46PtVyI8DA0xjx8Xz80MD A60e' +
'Xo60+85H1zCAswKSF4FJJ+oCCtRXdrSnACQbjrcpUpSUhiHle jvb0' +
'EieLDYd1c6Cg52CV6FtK62gIP9ENcJhma4eZ9zzMmNvX7db25 +jIP' +
'9MBRGJuLicJiensdlZan2tuSc3Bs11fk3boTj8Gj688P3798X Eho0' +
'Mz0yNtoVEnqJ8bgCLm4oVSmAFIeTgeS0ra1cgJ91DUiDEhODC gpuL' +
'y5OiQifAEIVFUV1tVWqarKB0MUXk5ERZ2Sk+czNiOzstG/ifBC9Da' +
'nuek76X0gr6Dvp/Fy/irKEicnGIL140R0S5Ky70VbmmghZoY3ahJ/' +
'fqYSEQIDU0AD7DqThEX5NTQWFBbd+fjUvLMQBhZH7CHg8bmS4 E9A+' +
'e8b04cO09vby+PgoNTXsuk8W/Bna+cVOZpbj0tKCSFke8NOwcI+jR' +
'/YeP350K3UePHhAj6KYmBh87pwFeOWRI3/A8G1IT7AfgsJInSEhnh' +
'lZ0QEBDpOTT1lZfoLCw8tFZ/sdOz739j5TW5t/Oej09Rjf6GuBunp' +
'akJ6s+0UIhOxAf8f87PD83HBaWtJGVw8+evQw4KapgQRIX7yY WAvS' +
'xJVwNygz82pTU/G1GF8rS9LEeNfMVC8YKPSHzs7KGzfOQ3cCTnft2' +
'vBDAYwrO+fazZv/ddL1Ib1JdVIpupA+fzaAQAgZGm5sxaQLF9wK4C' +
'KQFwuQSkvxb2hfkI+PU1bGlcyMKyZG+HcgTUkKr63LSUy4/HJpio+' +
'XlY+Xhf6DeOCzvr7eXZ2VN2PPZ9wJj4+PMDSk7Nv3w0ab9MHF y8dp' +
'b6upRUKkpV85euQH+v2fEVlbavr4WD7pqGY6vh+H+8ME8t8hr dsAp' +
'GFhnrduX3wbUjyeRuenCi4Lqam3/HytfXwcjIwpxxi+5oiLi05ODs' +
'zODkHGCqgeOMBo8vK2sFiktpYiUV3uxcIkfSe9fTuAqI6E7BX YrK3' +
'NjYjwCAlx1dCQNzTE9vc38nAz8XAzyyL+xBc65ICTbhjSinUh Bco2' +
'AWlxcfxWIIVjycyIfB/SzIyrkNr/B1I+FoCUztQ+cJTs7KSrkWfCw' +
's+YmRvSnC64XeLn5/E5Z2Ggp1xYmABOKi29/nMc9GVtrXX58qnZmW' +
'GAVFnpDysmbc5JL/jbBwc5n/eznp8fo0IqI8P79XsJL2TEFF3t6Ku' +
'+kBPJyEpuyAchkqmoyB8ZefJsfrSm5p69wyYXUhMS5rO20rS3 056c' +
'7F3bSVcgDQ93R6MlAdLFhamZmYG62ty62nuBgaewGOnHj0uRS GGAV' +
'FdvzedNtq7/QDrNYLj7F0Eq9UEhTYi/lJ4WduumP4S7QCgULEbm/a' +
'QSeo6+PiUtNdzewUgOKfM3fP8CHx/XuVVI6xuKAVJlVbktVmhtTQk' +
'LdW1qLOFgOygm+odxsM05qaursauLoZMTpaWljJ+Picop4Y/rb0tL' +
'SyUmX7e00tvcBZBEVut/2lxVld3ZWeXqasTMzLSJSj5ZTWn9/W39/' +
'e2GhlrpQ+rqbAi9emjocX9/E5hpR2dlcnIIAE7SkFdRElt4MQGQ8v' +
'CAmUptriXrKnsV0tnZPhERLj29DwXpoLSUwMYhdQVI8/4ESMPDPcP' +
'DPeAKPzrSKivNR+VUR5vw9jYyMtJZWYmnnc3/yikKGxUPzwkPz5MA' +
'aV9P8+oaR1uF1MvLJizULSMzWkqCU07mD5OXNgephbmGlSXRQ F/V3' +
'k4rJsaXCulq0Kvy/fffCQsLJSTcDAw+K7CFdT+CQ3zbWsvb28otzd' +
'XJ5DVj6XW1c+fOqCjvkGCXoYFmepAmBRkb4zu7qsofpmdkXpm a6Ja' +
'SlmBlZSYQkHi8LJgpAS8bH3cJICWqyTP4KP1GBR07IT4QIJUQ 59Fj' +
'xEkL6EJaHJe8eUjd/iRIvc5Ynve1cXE2vHjB4d69G1RIoZDJ+L17v' +
'xcREU5LS7gWEygsLLDRL/2LxcnFAZBaWxHHx/uOHflBWWmr4W7kFS' +
'/ISfPybuOwEtpaf+ilm4NUU1NFR1tRg4iAAhGvkAALFdLEpMszM 8N' +
'PntSi0EqffbalFbTi44KKS5La2srFRE9gsZt/e+OePbvT0yIiwj3G' +
'xjoEBFg11nZSA33M4uJ01FWvzMwr12LCqH+CqBuLQWCx0mCmF ZUZ+' +
'hQUcKqtQ3i/kq0LOnb8KqSiIlza2uu8WI0BSOOTkrfopDc2Cek5gP' +
'TafyH9w4iKmbm2k6OupSXJ0oL0+tW8HEKACun9kviXSzNDg21 4Amo' +
'rEwP+MrGzs3h6njzlpDM1OXDsyF4REfat1AbR5p3MKFsb0sBA q7kZ' +
'3sHx5Nt/3RykSkrSBII0EIpBieXl3yoqSbp69WxBYfzc3Ghh4d1jx' +
'7Y0HE3VxQCn0DC3isosXh4mNGrzr0KGkKmwKD4q2ntm+umaTp q04q' +
'T6+ujnz8fhIg+xwduLWnz33R4sRhY4VVIUXV6eExRgkxDj4ub m3HS' +
'T1hJAmpwaCjkpQEokrrNABBDKAKQhW4L0XqylOenDQgo5kZmZ OkBq' +
'qIdubMxveVySlXmlsbHg1cu58vJC+ou3/K3EzHzc1UUfytDgk2NHf' +
'2Bl+XEr8ZWBgXZ5eSZAOjrWc8Hf1trG9O2/bg5SPn5uDEoUIFVWEj' +
'59Sq+pqTjn3s3HLWU5ORkf6s6yk6O+kwPl+nVfOTkBBN0Hsem LpEm' +
'oqclNvxOxtDhFx0mTkoJ0Kao93dV2NloBFx3fWdSChZVJVVUc jZZU' +
'IyBq6+6Bmerp4Ri8C8+4VkLEzKsT4+D47CjUOpkvEFpAF1KgL ClpF' +
'VLpzTvpCqSSm4Q0IyPi/XBXWJjfUB8DNqqtpRwUeHpooKm2PndoqL' +
'kwP+cvnpOwRR05cghsFArABeEucMrOvv5UPZr6+uuvMzNvFhY lBly' +
'wLypKSk2PlEMi3t4ACA3ZOKRffLFTWVFYVUUEIMXjJDOyorXI 8nEJ' +
'4R9whSgKBWOgp0omK9jaaHJzHdv0zeIbN8NaWx88KE+fmx1aE 9IVJ' +
'w0GSB+Up4GT+vjQeCcvAiGBRkuhVCXzC26bmKitTl76wO8EB0 hzcq' +
'6PjLSAkwJ39Nczh41zc2LanzyQlRFcy0mTqeHuCqT0Vip7XwA ppLS' +
'QM27OSc9RnfQODSeFg9ImK8OphrTL2AhXVZ1lY0W6lxe/vWuLbUL7' +
'9v9gb0cGSG/dvMjO+hNAipDb5O25U852PT2N12J8VxdCSbt7N/6dg' +
'H8F0pC3IOVgCFKQvLyEvBw/QColwVlTkyctxUPSoPF476aFRiPVCT' +
'IYtGR9XT4H+xGC+mZewI1Eyvb3N3V1VoGZgt3Th9TKkgTXK3f 3k84' +
'uNB4T+/TTT/F4eRxORkVZHIJe6HtIOaEtzjN5R6vcXe/traGuPUL/' +
'3e5AaEbGlbb2NSHNz4uNW81wtwNSxxUnvRN50gj3DqSfrNy5l tcgI' +
'gFStKoEHCwGLWVo8M97O9W//rULCHV11T/lRJGR4gRIUajNjJwoKS' +
'kMDnXVN6zMooFYt6ur7uTJd58jDg5xCV6FtP4/kDK68N0PP+xFyPL' +
'JI/mlJLhmZkdgR/jnRl9m8fnnn7Ozs5HJGpGRQQi5PzwNwcvHhUFL' +
'oFASQ0OtYqIn5OQEGZmh9E4L6xseQio6Md49NNAcGuK68vrRN SBNS' +
'go+f97OykoTnFRbh/Yb6Pbt+wGNkoJOpamp2NZWxsvDoq+v9gFXmF' +
'9x0tzr7e1lVEgVFemN6qelhQOkra33FeRFaEIKNhob6z868ni rkNK' +
'qnL5WIY3OuBMBkIq9BymcRgIBQVRHAqTLL2eFBNmxGOkvv9x4 z+Fg' +
'19LSjL4WKie3+XHFTQvMzslJx96erKujYGVBAEilpTf20DdIW UVpZ' +
'LR3cOhJwAU7IHRktCsvL/P9cTMgFJxUl7JhSD9ZuRMqIiPNIyPDAx' +
'Gvu5sRK8tBAoEhM4WOTSaTUlJu5eTeSk0Nb2spe/y41MCA8vY2kPG' +
'hVCQUFSCcliqvyAAzJWmqMH4RgCy+/EHhi4XJZ/OjYKa9vfWrkK7l' +
'pMFxty+mp4drqMkBpyKiaz5+Ky4uhEJJQrlfmgTOC5yqoD7Yi 18zM' +
'69ATlpYeEtVVRIgNaDrL/EJwSkpoeXlqWiMDE2OAi6e9j9vX1l5B4' +
'tDbBxSl6KirUGafY0KqbgojflyiorSOKwMDittZIgNDXHh5WX WZmx' +
'JMeg5AGZGRkJpaXLeveu93dVdnZVGRnobbeEHkclJvLkZnoCX zM27' +
'vTp2dOCng4xOitu5c4fnGffJycGJ8V7w0IrK7JmZ4ba2BppDZ 4GXH' +
'KGQNZHNzaUQ6zIe7n6yesbk5UXlEHwS4pzNTSVqBBngFINRom 8uEM' +
'UVFuXOTA8+fdrU2lI2Otr54tnE6Gj3+3PXhYR45eQE5GT5UtP CzUz' +
'wHBxHKBQ8I3Oqoaq6usrnz8YeN5fAmUTKCTrY6Tx+fH/1Rd40IAUb' +
'jQj3eFR1F4+T0dfHfPcdvSW18Th5DEZKVUX81at5cTFuSFQ/1FTSl' +
'NTQhITLV696B146vWqmHHAy19o4MtI7JsYvNSVURwdFc2zH0k rXzl' +
'731ClDT08LQ6ONQer/BlKzTUKanb3qpIY4MVqQfvbZp2p4eQJeFnK' +
'Hof5GSE5Xc3z0ej2H6f79/IXnY2OjT3p7qqen+14uTU9NPmVnp3H7' +
'Q1lZoa+35cYNP309VWNDPI7WUkvKSgo93c1RV89qkxX09TDvL 5vzy' +
'Wo42tFRHxbqSlKXpWgpo9G/j7pTdNEG+ioA6dTUIEAKRUUF8X4N7x' +
'37Z1gcpqyscHZmuK+vycBAtbAwEQhtb2tgZmaiuYu3t/kZTxMcVqK' +
'7u56L8wiUdb/lbe3atUseKSwrwwNBb0truZMjhYvzqLY2hoWVxiPG' +
'8BOYmBiPjvbNza2sof382fjTp43z8/Bh4qyXB836lZWl5OUFZWV4q' +
'6tzvM6aAafaWipCa9/p3r17t6ur8/hE/9P+RqK6nLKSqLmZupursa' +
'4uam5uGICl6aRJSUHBwc5trQ801OV0KeusL7p7z24MWgY4NTT ANjQ' +
'W8PKyGGzQp9ZSSIh7wAVHW1sKdRUvQQEOiu6aY1N+fo6A8+XL zvYO' +
'epCWvr8Bkbiykpi2Nqq5udB0g0/BUCHNzLpqYUaiWTl9rTppNMTb4' +
'KSSErSDQMjpCAQkDiONUhEfHnp8wd9ORJjD1JTMtvq4/TuCnmNqeh' +
'JYWFqYXFycerk0MzbSvrg4ubQ47e19hmb9yUlRCy/GuzoqkAh+To4' +
'j6mo08ElIiHw+P9reUiorzc3OdhCc/f1tbt8OnZ8dbm4slBTnYGU+' +
'gEb9PmkBi0GQiDI4jHhhUSI728rYkYgI2zsPsLzRnj17FBTkn Z0d8' +
'vNSJyaf9ve3BF4+ZWKMAQ8FMw0Lv/z992s+7AYOBbGujDT3zOywAp' +
'IfPqy15VoC31GUFwGO5BD8xSXJoyMdhvoo+GxgoIbFqfAL8IJ 1cnK' +
'eMDDQLXtQMDXVP7eyou9gdPS55ub783MjYKMXL/qvVTnEt8oqkkqK' +
'wgryQiX3k4eH2gz0UeJinEaGakQNjIiIEPymLCzMoqLCmprEk JCAn' +
't7m+dmhkvtJmVnRqWkRcfERfn52QJOeLurOncixsU4LCxortE Rd9T' +
'rjYfq4pRRslOYG70hEhB8NQa+KeFX1XScHXeBUSmrN5akZl7k ZycA' +
'ARyYrXwxwSkwMAkhFRbmOrzGp0t7eyNfH1tZWJzEhCPzu/Q3Y2VkN' +
'DAlEdYXffl04d+7dBfDpy+mUqZWVlp+P7chQU0SE50YPxNHR2 MJc4' +
'6ynaV9vdcAF+7U2+/7779QJSCxGCo+XaWoufD4/5Givg8VKWVlR1N' +
'UxgkL8zMxMXFycRkb6VY/uv3g2urgwCTaalHi5u+sRfAYbDQwMWKv' +
'ytNSI+rp742OdkRHuoiLsCkgalxo4ddWPskaG2kKCTgkLsiBk aEyQ' +
'uxV7ofxB6mB/86ULtgK8x6Ulfr8/jkCIKsrzi4myySN44QLiecZEE' +
'cmnoCCAxUiQSEgSSZ5EUoSip6uqr6/q52tVX180MzVYWpp68+YFN1' +
'eD5NTwyur8kJALdNIrqlCqEghZHkkJzqHB9vyCOB+fzcxj//rrr5W' +
'VJBWQAirKIrbWmlVVObOzw/fybpuexKkqixDVEZYW6jm5N8DcZ2eG' +
'AE//87adnTXP58cG+58AXPQr/+abb9AoWeAUi5E8fUqvra18cqL31' +
'u0ALS0lPEZKUwNpZIgJC3WbnOydnOhpaiqurMwsKU1z9zhFfQ nvvv' +
'0/4PArT8HY2JBnp/vT79BYrsfcVF1VVby8PP1hxZ3g4HOMHDJuJeg' +
'FF5BYXBiPjvb28LTc+lNsRKKquhpSQ0MROB0dabkc6AycrrWO nI4O' +
'wdAA5+Zm+nJpsq4+n/Y2FBxRXf63X56npTG0Ls0b6epCyKFQWHQbA' +
'B8YaN3ogVB0sHicbEZ6xM+vn/X2NtLZ8ptvviYQFMDmyJqK57wswP' +
'heLk5XV991PqWnSZQzNEC7uRiWP0wbH+9YfDGRnBQUEb7y8jv YZmy' +
'4m0ymF8BYWRCJajKQK8GO1VVZ7q5G729jehKLx4jLSHG9mB+r KE87' +
'7aTz/jaG+ipoFWEJMY75ueH7JYn2Nr9/KTcPh4Q4u4gwKxB3vyy9q' +
'7OupqagtCy9ouLug4dZUErL7hQUJebkxt7JuJp+50p8wmXAMy Mz6u' +
'rVi9Y2pvIKCDru+bakpYWBUCVFodqavKmZoaSkWEb2oil+AW7 I6XA' +
'YCaK6rK2NppODTlpaeG1dfkd7RUdn9YMHaRcDHOzttCoqs8bH e0ZH' +
'OoODAhh5EcYnq9EOAiFBwMkQ8DK6uqrubsY+PtZQYWdXdV9fQ 3d3T' +
'WdHZVv7w7q6/OKSDBMTw/cXlzh8+KCauqqLm52Ojtb79RNwcqqqEq' +
'Wlyc+fj/n7+zDSpJVFrdUUsBjpkBC3V8tzM7P9hob6jOxIRz/+uJ9' +
'IXCHU0op8+/bFX3950dhUeN6fdiKAREqpEeTu30/8968LYWHBNLfh' +
'4+e2sNRqbChlfK0/qoRF+E1MNB5VZOTmpnFxbfhJSRFRASMDfFlpU' +
'k52ioDA+ndwIDLRpaD1KSqQnHqfNT/vY1VSEt/VWTk82DQy1NLYkB' +
'8ddfasp0lzc9H83ODMZF9Y2KV1ew6cHCUFIXtr0uR41+KLyfr 6sve' +
'3wWJk5OX4rMzwoyNPIPmqrS15fxuUiqSsNJepEWpooBUCv6pH BW/+' +
'tGPHDikJbgtzQlJqeMadqMzMqMyMlf+mpkempEWkpV9JSYtMT AqLS' +
'wiNjb0cGubr7eNiamZAJ1lbS/BF0tIiFB1UatrV5KTYLS7gA0mxoB' +
'Avkajk4EDx9jIPD3NPSAzOyorOK7gNTNXXFzQ0luTmJlnbmG3 iXfO' +
'QxSgryxro486eNQsJcUlJCS0qSayty2tvr+jqqEpOvo7FoXau 8S4M' +
'+jp85BCZjEpODr9x4yrjhggWTySqXLjgWFCQ5uzs+EHeynfgw I8UC' +
'sHOlhIRcaa7pwo4jYujfdn89ttvtbXQGRk3zMxO/iMmu9IXHIKoqK' +
'CeHuGctxXERYkJl/LzYsvLkh89ygRIOzsednU9KinJsLe3PHyYobF' +
'Nbm4OElE++qpXSXFazLUQmtcKLi52Al46IsytID8x6mqQAD+N ITJO' +
'TjYsWiI40Ole7u0rkYH8tLb5h2rHjs9ZWJgkJEVQaAUNEk6di FVBK' +
'YqKCa/1BocN6cCB/fCDKiohSJoEEokA+eAeuuOx/zgdPPSTvLyMtg' +
'5RW5v0Qc7YP0jgGmxszDIy4ni8iraOuiZZDYNRFpcQYWRhq79 G/w+' +
'LKQil');

//Procedures taken from Iamadam's StrongHolder
tempPic := GetMufasaBitmap(NewImg);
BreakImg := TMufasaBitmap.create;
BreakImg.SetSize(tempPic.Width, tempPic.Height);
tempPic.FastDrawTransparent(0, 0, BreakImg);

end;

//Procedures taken from Iamadam's StrongHolder
Procedure BreakScreen;
Var
Canvas: TCanvas;
begin
Wait(500);
try
SmartSetDebug(True);
Canvas := TCanvas.Create;
Canvas.Handle := SmartGetDebugDC;
ClearRSCanvas(Canvas);
BreakImg.DrawToCanvas(235,200,Canvas);
except
writeln('error...');
end;
end;

Procedure Report;
Var
ExpA,ExpS,ExpD,ExpC,ExpR: Integer;
begin
ClearDebug;
ExpA := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
ExpS := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
ExpD := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
ExpC := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
ExpR := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;

WriteLn('=-=-=-=-=-= Catacomber '+Version+' by Flight =-=-=-=-=-=');
WriteLn('Time Running: '+TimeRunning);
WriteLn('Attack XP: '+IntToStr(ExpA));
WriteLn('Strength XP: '+IntToStr(ExpS));
WriteLn('Defence XP: '+IntToStr(ExpD));
WriteLn('Constitution XP: '+IntToStr(ExpC));
WriteLn('Ranged XP: '+IntToStr(ExpR));
WriteLn('Deaths: '+IntToStr(Deaths));
//WriteLn('Breaks: '+IntToStr(TotalBreaks));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
end;

Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,131072);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
FreeBitmap(Pic);
end;

Procedure OnScreen;
Var
ExpA,ExpS,ExpD,
ExpH,ExpR,XPH_A,XPH_S,
XPH_D,XPH_H,XPH_R: Integer;
begin
ExpA := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
ExpS := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
ExpD := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
ExpH := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
ExpR := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;

XPH_A := Round((ExpA * 3600) / (GetTimeRunning / 1000));
XPH_S := Round((ExpS * 3600) / (GetTimeRunning / 1000));
XPH_D := Round((ExpD * 3600) / (GetTimeRunning / 1000));
XPH_H := Round((ExpH * 3600) / (GetTimeRunning / 1000));
XPH_R := Round((ExpR * 3600) / (GetTimeRunning / 1000));

PrintOnSmart(['~Catacomber '+Version+' (by Flight)~'],Point(15,30),3716227);
PrintOnSmart([''+TimeRunning,'Attack XP: '+IntToStr(ExpA)+' ('+IntToStr(XPH_A)+' XP/Hour)',
'Strength XP: '+IntToStr(ExpS)+' ('+IntToStr(XPH_S)+' XP/Hour)',
'Defence XP: '+IntToStr(ExpD)+' ('+IntToStr(XPH_D)+' XP/Hour)',
'Hitpoints XP: '+IntToStr(ExpH)+' ('+IntToStr(XPH_H)+' XP/Hour)',
'Ranged XP: '+IntToStr(ExpR)+' ('+IntToStr(XPH_R)+' XP/Hour)',
'Deaths: '+IntToStr(Deaths)],Point(20,60),15856381);

MarkTime(ScreenTime);
end;

Procedure Commit;
begin

AttXp_New := R_GetSkillExp(SKILL_ATTACK);
StrXp_New := R_GetSkillExp(SKILL_STRENGTH);
DefXp_New := R_GetSkillExp(SKILL_DEFENCE);
HitXp_New := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_New := R_GetSkillExp(SKILL_RANGE);

stats_IncVariable('Attack EXP (Gained)',(AttXp_New-AttXp_Old));
stats_IncVariable('Strength EXP (Gained)',(StrXp_New-StrXp_Old));
stats_IncVariable('Defence EXP (Gained)',(DefXp_New-DefXp_Old));
stats_IncVariable('Hitpoints EXP (Gained)',(HitXp_New-HitXp_Old));
stats_IncVariable('Ranged EXP (Gained)',(RngXp_New-RngXp_Old));
Stats_Commit;

AttXp_Old := AttXp_New;
StrXp_Old := StrXp_New;
DefXp_Old := DefXp_New;
HitXp_Old := HitXp_New;
RngXp_Old := RngXp_New;

Report;
MarkTime(CommitTime);

end;

Procedure ScriptSetup(World:Integer;Signed,Clear,SetCam:Bool ean);
Begin

AddOnTerminate('Report');

Smart_Server := World;
Smart_Members := Member;
Smart_Signed := Signed;
Smart_SuperDetail := False;

SetupSRL;
DeclarePlayers;
CheckStats;
R_UpdateHooks;

if Clear then
ClearDebug;
LogInPlayer;
if SetCam then
SetAngle(true);

LoadVars;
OnScreen;

End;

Procedure humanWait(time : Integer);
begin
wait(time + random(time) + random(random(time)));
end;

Function DeathScreen: Boolean;
begin
Result := R_ValidInterface(18);
end;

Function R_ClickItem_F(Slot: Integer; Action1, Action2: String): Boolean;
var
InterfaceID, X, Y: Integer;
Item: TInterfaceComponent;
begin
Result := False;
InterfaceID := R_GetInventoryInterfaceIndex;
if InterfaceID = NULL_INT then
begin
R_Debug('The Inventory interface doesn''t exist!', '');
Exit;
end;
if InterfaceID = INTERFACE_INVENTORY then
begin
R_GameTab(RTAB_INVENTORY);
end;

Item := R_GetInterfaceComponent(InterfaceID, 0, Slot-1);
if(Item.ID <= 0)then
Exit;

R_ClickInterface(Item, 3);
GetMousePos(X, Y);
wait(125+Random(55));

if(IsUpText(Action1) Or IsUpText(Action2))then
begin
Mouse(X, Y, 0, 0, True);
Result := True;
end;
end;

Function R_WindWalk_F(T: TTile): Boolean;
Var
I, Tries: Integer;
M, P: TPoint;
CTRLPoints: TPointArray;
begin
P := T;
repeat
M := R_GetMyPos;
CtrlPoints := R_WindPath(M.x, M.y, P.X, P.Y, 5.0, 2.5, 0.0, 0.0, 4.5, 2.5);
Inc(Tries);
if(Tries > 20)then
begin
R_Debug('Failed more than 20 times', 'R_WindWalk');
R_FindRandoms;
if Cast('lumbridge home teleport', False) then
Wait(RandomRange(9500,1175));
Exit;
end;
for I:= High(CtrlPoints) downto 0 do
if R_WalkToTile(CtrlPoints[i],0, 10) then
begin
Result := I = High(CtrlPoints);
Break;
end;
until(Result);
end;

Function inArea(Area : TBox) : boolean;
begin
result := PointInBox(R_GetMyPos, Area);
end;

function atTile(location: TTile; name, action : TStringArray; height, randomness : Integer) : boolean;
var
tilePoint : TPoint;
begin
result := False;
tilePoint := R_tileToMs(location, height);
MMouse(tilePoint.x, tilePoint.y, randomness, randomness);
wait(100);
if(IsUpTextMultiCustom(name) Or IsUpTextMultiCustom(action)) then
begin
ClickMouse2(True);
if DidRedClick then
result := True
else
result := False;
end else if(isUpText('options')) then
begin
clickMouse2(False);
if ChooseOptionMulti(action) then
result := True;
end;
end;

Procedure Fight;
Var
inFightWith : TNPC;
npcs : TNPCArray;
index : Integer;
begin
if(R_AreWeInteracting(InFightWith, False) and (getSystemTime - lastFightTime < 1000 * 60)) then
begin
lastInteractedTile := inFightWith.tile;
humanWait(1000);
exit;
end;

npcs := R_SortNPCs(R_GetNPCs(currentArea.targetName, false));
if(GetArrayLength(npcs) = 0) then
begin
humanwait(500);
Exit;
end;

for index := 0 to high(npcs) do
begin
if((npcs[index].Interacting = -1)
and not((npcs[index].Tile = lastInteractedTile))
and not (inIntArray(currentArea.DAnim, npcs[index].Animation))) then
begin
lastInteractedTile := npcs[index].tile;
if(not R_tileOnMS(npcs[index].Tile, 0)) then
exit;
if(atTile(npcs[index].Tile, [currentArea.targetName], ['Attack'], 300, 5)) then
begin

case (Random(4)) of
1: MakeCompass('Random');
end;

lastFightTime := GetSystemTime;
humanWait(2000);
end;
break;
end;
end;
end;

Function AreaCheck(Where: String): Boolean;
begin
Result := False;

Case LowerCase(Where) of

'castle' : Result := inArea(Areas[0].region);

'grave' : Result := inArea(Areas[1].region);

'room1' : Result := inArea(Areas[2].region);

'room2' : Result := inArea(Areas[3].region);

'room3' : Result := inArea(Areas[4].region);

'region' : Result := inArea(currentArea.region);

end;
end;

// nava2
function FindTileOnPath(var Index: integer; Path: TTileArray; P: TTile; MaxDist: Integer): Boolean;
var {Find the closest tile in a path within MaxDist}
I, H, DistC, DistS, T: integer;
begin
T := GetTimeRunning;
H := High(Path);
Index := -1;
if (H < 0) then Exit;

DistS := Distance(P.x, P.y, Path[0].x, Path[0].y); //Distance from Current Tile

for I := 0 to H do //Looks for the Closest Tile
begin
DistC := Distance(P.x, P.y, Path[I].x, Path[I].y);
if DistC <= DistS then
begin
DistS := DistC;
Index := I;
end;
end;

Result := DistS <= MaxDist;
if not Result then Index := -1;
WriteLn('FindTileOnPath: Index = ' + IntToStr(Index) + ' Time: ' + IntToStr(GetTimeRunning - T) + ' ms');
end;

// nava2
function WalkToRoom(zone: Integer): Boolean;
var
i, t: Integer;
p: TTileArray;
begin
setLength(p, zone);
for i := 1 to zone do
p[i-1] := Areas[4+i].RTile;

writeln('path: ' + toStr(p));
writeln('Area tile: ' + toStr(currentArea.RTile));

FindTileOnPath(t, p, R_getMyPos, 7);
for i := t+1 to zone-1 do
if (not R_WindWalk_F(p[i])) then
break;
result := AreaCheck('region');
end;

Procedure ToLocation(Where: String);
Var
T1,T2,T3,T4: Integer;
begin

RunEnergy(50);

Case LowerCase(Where) of

'grave':
begin
R_WindWalk_F(Point(3246,3198));
Wait(RandomRange(1215,1325));
While R_Moving do
Wait(1);
end;

'room1':
begin
if(Not R_TileOnMS(Stairs_Enter,100)) then
begin
R_WalkToTile(Point(3246,3198),1,1);
SetAngle(True);
While R_Moving do
Wait(1);
end;
if atTile(Stairs_Enter, ['Catacomb','entrance'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);

MarkTime(T1);
repeat
if (AreaCheck('Room1') Or (TimeFromMark(T1) > 5000)) then
Exit;
until (False)

end;
end;

'room2':
begin
if atTile(Stairs1_Down, ['Stairs'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);

MarkTime(T2);
repeat
if (AreaCheck('Room2') Or (TimeFromMark(T2) > 5000)) then
Exit;
until (False)

end;
end;

'room3':
begin
if atTile(Stairs2_Down, ['Stairs'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);

MarkTime(T3);
repeat
if (AreaCheck('Room3') Or (TimeFromMark(T3) > 5000)) then
Exit;
until (False)

end;
end;

'region':
begin
WalkToRoom(FightRegion);
Wait(RandomRange(355,525));
while R_Moving do
Wait(16);

MarkTime(T4);
repeat
if (AreaCheck('Region') Or (TimeFromMark(T4) > 5000)) then
Exit;
until (False);

end;

end;
end;

Procedure CheckScreen;
Var
T,I: Integer;
S: TInterfaceChild;
Items,Items2: TInvItemArray;
begin
if DeathScreen then
begin
Inc(Deaths);
MarkTime(T);
Repeat

if(TimeFromMark(T) > 5000)then
Break;

S := R_GetInterfaceChild(18, 36);
R_ClickInterface(S, 1);


if Not DeathScreen then
Break;

Until(False)

end;

Wait(RandomRange(4375,5350));
Gametab(tab_Inv);
Wait(RandomRange(575,780));

if R_ItemExistsEx([
'scimitar','blade','sling','Sling','shortbow',
'helm','platebody','kiteshield','defender','hide',
'Amulet of','bracelet'],Items) then
begin
if(GetArrayLength(Items) = 0) then
begin
humanwait(500);
Exit;
end;

For I := 0 to high(Items) do
begin
R_ClickItem_F(Items[I].Slot,'Wear','Wield');
Wait(RandomRange(1150,1350));
end;
end;

Wait(RandomRange(575,780));

if R_ItemExistsEx([
'scimitar','blade','sling','Sling','shortbow',
'helm','platebody','kiteshield','defender','hide',
'Amulet of','bracelet'],Items2) then
begin
if(GetArrayLength(Items2) = 0) then
begin
humanwait(500);
Exit;
end;

For I := 0 to high(Items2) do
begin
R_ClickItem_F(Items2[I].Slot,'Wear','Wield');
Wait(RandomRange(1150,1350));
end;
end;

SetAngle(True);
ToLocation('Grave');

end;

Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
w,x,y,z,h,m,s,
RealBTime,
CurrentBTime: integer;
NPC: TNPC;
begin
if not LoggedIn then Exit;

w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-randBreakIn * 60000, randBreakIn * 60000);
z := RandomRange(-randBreakFor * 60000, randBreakFor * 60000);

if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
if R_AreWeInteracting(NPC, False) then
Wait(RandomRange(4750,7535))
else
begin
Repeat

R_FindRandoms;
Logout;
Wait(RandomRange(435,675));
if Not LoggedIn then
break;

Until(False)

BreakScreen;
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(x+z));
Writeln('Logging in.');
OnScreen;
if ChangeWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(Member, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
SetAngle(True);
R_FindRandoms;
IncEx(BreakRounds, (w) + (x));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
end;
end;
end;
end;

Function NoAmmo: Boolean;
begin
Result := FindBlackChatMessage('no ammo');
end;

Begin

ScriptSetup(86,True,True,True);

Repeat

if (TimeFromMark(CommitTime)>=30000) then
Commit;
if (TimeFromMark(ScreenTime)>=5000) then
OnScreen;
BreakHandler(BreakIn,BreakFor,Bir,Bfr);

if NoAmmo then
begin
Writeln('Ran out of ammo!');
Report;
Logout;
TerminateScript;
end;

if not LoggedIn then LoginPlayer;

if AreaCheck('Castle') then
begin
CheckScreen;
ToLocation('Grave');
end
else if AreaCheck('Grave') then
ToLocation('Room1')
else if AreaCheck('Room1') then
ToLocation('Room2')
else if AreaCheck('Room2') then
ToLocation('Room3')
else if AreaCheck('Room3') then
ToLocation('Region')
else if AreaCheck('Region') then
Fight
else if (Not AreaCheck('Castle') And Not AreaCheck('Grave')
And Not AreaCheck('Room1') And Not AreaCheck('Room2')
And Not AreaCheck('Room3') And Not AreaCheck('Region')) then
begin
R_FindRandoms;
CheckScreen;
end;

Until(False);

End.

KingKong
08-21-2011, 10:19 PM
[QUOTE=Flight;828180]That's really awesome of you to offer help. :) But I brainstormed a basic idea/skeleton mentally already and I'm gonna give it a shot and see how it turns out. But if I do happen to get stuck somewhere, you'll be the first to know. :p

@Bolshak25:
Thanks for the test dummies, I will warn you now though, the quest gives 100 xp to all combat skills (excluding constitution) so you might gain a couple levels, I hope this is okay. I should only need 1 account for coding, 1/2 accounts for testing.


Edit:
Well, I misunderstood you, Mormonman, as I thought you meant the tiles were dynamic to the quest <> finished quest, when actually they are, infact, dynamic to the player. I can do this but agh... it's gonna be tough and take a long time to do. I luffs, if you're still interested I can give you what I have and you could take over. I've done all the Quest-Starting and killing Kayle. But that last part will have to have slight edit, because I have it set to webwalk to a static tile (Kayle's tile) and do the fighting. Let me know if you're interested, because like I said, if people really want the quest done I can do it, but I'm reluctant to do so.[/QUOTE

If you're still having problems let me know, i like making questing scripts, they're quite challenging and fun, and i have some free time this week and next week.

tls
08-21-2011, 10:30 PM
Just search for Kayle and everyother object/npc.

Nava2
08-21-2011, 10:58 PM
Once you have a reference point (AKA Kayle's tile), everything else would be relative to it.

Its how PC was done all those times.

tls
08-21-2011, 11:02 PM
Once you have a reference point (AKA Kayle's tile), everything else would be relative to it.

Its how PC was done all those times.

The thing is, you could do the whole quest without ever using static points.

Nava2
08-21-2011, 11:11 PM
The thing is, you could do the whole quest without ever using static points.

Yup, I'm just giving suggestions for speed. :)

Also:

=-=-=-=-=-= Catacomber 1.0 by Flight =-=-=-=-=-=
Time Running: 3 Hours, 29 Minutes and 8 Seconds
Attack XP: 0
Strength XP: 61948
Defence XP: 0
Constitution XP: 21277
Ranged XP: 0
Deaths: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
This was my version btw.

Flight
08-22-2011, 12:27 AM
The thing is, you could do the whole quest without ever using static points.

Yes, but I could use local tiles instead, those will still remain static to every player. I always prefer searching for tiles as opposed to NPCs/Objects.

Very nice work Nava2, I'll definitely use your final revision and do a little editing here and there, as I think there's a couple things I could improve on my part. What you did with the regions and room walking looks top-notch. :)

"IntToBox".... Why didn't I think of that? :( It's embarrassing spending so much time to try and make things as neat as possible, then someone comes along and gets the same result for a fraction of the lines. Also, about the 2-line indention, that's just my signature style. :p

bolshak25
08-22-2011, 03:16 PM
=-=-=-=-=-= Catacomber 1.0 by Flight =-=-=-=-=-=
Time Running: 15 Hours, 19 Minutes and 9 Seconds
Attack XP: 0
Strength XP: 132469
Defence XP: 0
Constitution XP: 44156
Ranged XP: 0
Deaths: 14
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


Do i win longest? Oh and its still going

Flight
08-22-2011, 03:25 PM
Lol bolshak25, that's great! I think you'll like V1.1. The path-generating was re-done, and wonderfully I might add, by Nava2. He also cleaned up my sloppy box regions. On top of that, I threw in Home's AdjustTile, sped of fighting slightly (and I noticed an approx. increase of 21-25% in XP/Hour), and added what should prove to be a more stable way of lost detection and home teleporting. I think I'll just put the quest part of the script on hold and release V.1.1 as it is now.

bolshak25
08-22-2011, 03:34 PM
Speaking of lost detection, you should add a wait in the walking, because when it goes from dead to the catacombs, sometimes itll tele home when its right there because it failed to walk 20 times. small wait should fix it because itll be called 20 times. and maybe have it write your levels on smart? because tight now id love to know my str lvl and hp

Flight
08-22-2011, 04:02 PM
Lol just disable smart, check your stats, and re-enable it. It shouldn't effect the script. You're bound to have some really high levels now.

Also, since I decided against finishing the quest portion, you can do whatever you want with those first 2 accounts of the list you sent me, I obviously won't be needing them. It's only the first 2 that I used, and they're both at the same stage of the script, go ahead and finish it on them if you'd like.

bolshak25
08-22-2011, 04:08 PM
i just hit 57 str and 49 hp. loving the script. ill probably finish with them then have them start abusing this script as well

Harry
08-27-2011, 06:06 PM
plsplsplsplspls add those features I suggested so I can run this on my huge army :(

Flight
08-28-2011, 12:59 AM
plsplsplsplspls add those features I suggested so I can run this on my huge army :(

Yeah I think I'm gonna pass on the quest part. I'm taking a small break from scripting at the moment, and when that's over I have a bigger project on my hands, I'm sorry Harry.

Although in the newest version I did add the procedure to start the quest (all the talking, ect..), it's included in the script, so if you'd like to take it from there then by all means do so.

Harry
08-28-2011, 03:47 AM
You underestimate my laziness :( Oh well.

tarajunky
08-28-2011, 07:58 PM
Do any of these monsters drop stackable items worth collecting?

bolshak25
08-28-2011, 08:03 PM
runes, bronze arrows, fishing bait, and feathers are about it

kanah
08-28-2011, 10:48 PM
*"dieing" should be dying

Love the concept; I'd been using the fast fighter at the skoblins for a while. Good job Rep++.

FEAR
08-30-2011, 05:32 PM
Hey nice script. I love the efficient combat system. But I noticed some minor problems that you could fix for the next update.

- If your character dies, when it respawns it can't re-equip the items because the uptext is not clearly visible sometimes due to adbots spamming websites. The mouse just keeps hovering on the equipment. This can be solved by equipping the items inside the catacomb.

- It randomly picks up items, probably due to misclicks. If it picks up weapons, it falls into an endless loop trying to equip them. For example, I was training with kayle's sling. It randomly picked up an oak shortbow. After I died, it equipped the shortbow and the sling went in the inventory. Then it re-equipped the sling and the shortbow went in the inventory, this went on in a endless loop. Luckily I was there to drop the shortbow. That's very bannable if someone stands in one place for hours equipping and re-equipping items. You should add a failsafe there. Maybe have it check inventory randomly and drop any items that might be there.

Again you have a very nice script. Wish there were higher level monsters though...;)

Edit: Also it will be fantastic if make the script pick up arrows and equip them (if they are the same as the equiped arrows).

Edit2: Two nice proggies ;)


=-=-=-=-=-= Catacomber 1.1 by Flight =-=-=-=-=-=
Time Running: 5 Hours, 9 Minutes and 27 Seconds
Attack XP: 0
Strength XP: 0
Defence XP: 0
Constitution XP: 22817
Ranged XP: 69087
Deaths: 0
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


=-=-=-=-=-= Catacomber 1.1 by Flight =-=-=-=-=-=
Time Running: 8 Hours, 1 Minutes and 45 Seconds
Attack XP: 0
Strength XP: 127510
Defence XP: 0
Constitution XP: 42281
Ranged XP: 0
Deaths: 0
Breaks: 3
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Flight
09-01-2011, 07:01 AM
Nice reports there, FEAR.

Yes about the misclicking and picking up items I noticed it as well. I made some proto-type junk-dropper for it. I made it right before I left a few days back so I don't remember if it was successful or not.

I think I could do a new version (if the junk-dropper works ok) with optional stackables collecting.

FEAR
09-01-2011, 01:38 PM
Nice reports there, FEAR.

Yes about the misclicking and picking up items I noticed it as well. I made some proto-type junk-dropper for it. I made it right before I left a few days back so I don't remember if it was successful or not.

I think I could do a new version (if the junk-dropper works ok) with optional stackables collecting.

And equipping the arrows which can be set by the user. That will make the scrip run longer for rangers. Also could you make the FightRegion selection for individual players? I have a lot of accounts with very different combat levels so it would be great if I could select which part of the catacomb each account will go to.

Flight
09-01-2011, 01:47 PM
Yep I can make it multiplayer, but I just can't test it.

FEAR
09-01-2011, 08:07 PM
I can test it for you if you want :)

sf411
09-13-2011, 04:51 PM
Keeps trying to fight while already in a fight.

E: Fighting in Room 2, btw.

Bixby Sayz
09-13-2011, 05:34 PM
Keeps trying to fight while already in a fight.
I had the same issue. Gets enemy down to 1/2 or so then tries to move on to next kill. Repeatedly.

bolshak25
09-13-2011, 08:12 PM
i was wondering if you can add lvls to stop at. so train attack until >= 40 and where we can pick the levels to train up to

Mr. Bottomtooth
09-13-2011, 11:03 PM
=-=-=-=-=-= Catacomber 1.0 by Flight =-=-=-=-=-=
Time Running: 2 Hours, 13 Minutes and 58 Seconds
Attack XP: 14905
Strength XP: 0
Defence XP: 0
Constitution XP: 4968
Ranged XP: 0
Deaths: 0
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Just leveling my guys so they can equipt rune tools. Runs smooth. :) Manually stopped.

ry0240
09-14-2011, 03:09 AM
Hey, I'm testing you your script now, howcome everytime I try to add more than 1 player it still just thinks it is 1 and goes to the last player.

Edit- If it accidently clicks a grave, it doesnt realize and just continues to look for the NPC's and it doesnt seem to know when its in a fight and just continues to attack diffrent NPC's every few seconds while its still in a fight.

Edit-Ok, do you know if I'm setting it up wrong for multiplayer's? It automatically thinks it is still only 1 player and doesnt switch, Lke if theres 6 players filled out it automatically goes to player 6 at the bottom and ignores the other players, Does it look like I'm filling out it out right?

Edit- Also eah time the char dies, if it has another weapon in the Inv. it will switch between the wielding weapon and the Inv. weapon a couple times and just keep switching between before heading back to the catacombs.

Procedure DeclarePlayers;
begin
HowManyPlayers := 4;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '1@gmail.com';
Pass := '';
BoxRewards := ['XP','xp','lamp'];
LampSkill := 'hitpoints';
Active := True;

Name := '2@gmail.com';
Pass := '';
BoxRewards := ['XP','xp','lamp'];
LampSkill := 'hitpoints';
Active := True;

Name := '3@gmail.com';
Pass := '';
BoxRewards := ['XP','xp','lamp'];
LampSkill := 'hitpoints';
Active := True;

Name := '4@gmail.com';
Pass := '';
BoxRewards := ['XP','xp','lamp'];
LampSkill := 'hitpoints';
Active := True;
end;
end;

Flight
09-15-2011, 07:49 AM
Yeah it doesn't have multiplayer support, as I'm not really good with that. :p You'll have to add that in there yourself or ask someone else who to do that.

V1.2 released.

-Better in-combat detection
-(Beta) Junk-dropping upon death.

There's a list of items that the script will drop when you character dies and spawns in Lumbridge. Because these items are automatically kept when dieing, they stay with you if you die, this can cause you to lose room for your equipment to re-spawn in your inventory. So, I whipped this up quick to handle that. It's still 'Beta' because I've not tested it that much, but I was pushed on releasing a fixed version of the script, so might as well include that. :) The full list of 'junk items' can be found at line 1123 in the script.

ry0240
09-16-2011, 03:08 AM
Hey, I've been testing out your script, and that Fighting patch you did, is pretty flawless right now. I don't think your junk dropping is working, I havnt seen it drop anything. I think it should drop the items, right as it picks it up, The strongholder drops stuff right away if it accidentally picks something up. One time it accidentally grabbed a bow and equipped it instead of the scimitar, so that messed it up and it logged out. So dropping things right away would take away room for errors like that. Also you should cut down the failsafe time for everything when dieing instead of waiting 30 seconds before checking for that spawn screen, because it literally pops up each and every time I die, does it not pop up for you? so cutting that would get a little more xp each hour/save time.

Mr. Bottomtooth
09-17-2011, 01:36 AM
=-=-=-=-=-= Catacomber 1.2 by Flight =-=-=-=-=-=
Time Running: 4 Hours, 33 Minutes and 18 Seconds
Attack XP: 0
Strength XP: 15374
Defence XP: 1244
Constitution XP: 5388
Ranged XP: 0
Deaths: 9
Breaks: 2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-= Catacomber 1.2 by Flight =-=-=-=-=-=
Time Running: 3 Hours, 3 Minutes and 52 Seconds
Attack XP: 1064
Strength XP: 6343
Defence XP: 0
Constitution XP: 2397
Ranged XP: 0
Deaths: 19
Breaks: 1
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Leveling some new additions to my army. :p

_____________________________________

=-=-=-=-=-= Catacomber 1.2 by Flight =-=-=-=-=-=
Time Running: 5 Hours, 44 Minutes and 41 Seconds
Attack XP: 26558
Strength XP: 0
Defence XP: 0
Constitution XP: 8623
Ranged XP: 0
Deaths: 0
Breaks: 3
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-= Catacomber 1.2 by Flight =-=-=-=-=-=
Time Running: 6 Hours, 3 Minutes and 34 Seconds
Attack XP: 28124
Strength XP: 0
Defence XP: 0
Constitution XP: 9123
Ranged XP: 0
Deaths: 0
Breaks: 3
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Anajanatuinen
02-03-2012, 11:16 PM
Hay!

Is there ppl still using the script? I'm pretty sure it's out of date because I'm having such problems with starting it ?

{$define SMART}
{$i SRL/SRL.scar}
{$i SRL/SRL/skill/magic.scar}
{$i SRL/SRL/Misc/stats.simba}
{$i Reflection/Reflection.simba}
{$i SRL/SRL/misc/paintsmart.scar}

they all are kinda messed up ? when i try to change them to .simba it decides to wine about something else or the whole program shuts itself down..

Anyone ? :(

kevin33
02-03-2012, 11:19 PM
Its reflection... Reflection is broken.

Anajanatuinen
02-03-2012, 11:22 PM
Well I thought about it.. is there anything like this available atm ? any autofighter etc ?

Kyle Undefined
02-03-2012, 11:34 PM
Harry has one, so does Narcle.

obgano
02-05-2012, 03:15 PM
they says unable to find file SRL/SRL.scar PLease help!

Bebe
02-05-2012, 03:18 PM
Reflection is dead. This script is outdated.

obgano
02-05-2012, 03:26 PM
oh ok