WT-Fakawi
2006-06-26 17:49:32
THIS SCRIPT IS INCOMPLETE!
I made this a while ago running one of our mains, but got paranoid and stopped (it was my wifes account so you see….)
I got stuck in the scripts logic :p , trying to figure out recusive breaks and ended up in failsafe frenzy. It will still work fairly well I suppose, just dont leave it unattended.
I am releasing it, so you can see my method of approach. The engine is build around ChatText, which is the key to the next event. I have tried to make the script as undetectable as I possibly can, as far as I know, there are no unrealistic mouse mevements.
Some features:
- - Works with a Global named ScriptSpeed. I divide Time through this Global: WWait(500/ScriptSpeed); or WWait(4000/ScriptSpeed); thus enabling you to set the speed to 1, 2 , 3 or 4!
- - Works with FindDeformed. Script only uses with deformed bitmaps! And this is my trick to succesful deformed bitmap recognition:
Ladder := BitmapFromString(10, 1, '000000000000785729664B23' +
'664B23664B23453217453217000000000000');
[/php]
or
[php]
RopeKnot:= BitmapFromString(1, 21, 'z78DA333235323030307436B42' +
'48E3402ABA78444060045F618DF');
[/php]
they are all small horizontal or vertical slices of objects!.
This causes some lag, but it works very accurate and very undetectable. I think this is the best approach to semi static object-detection on the mainscreen.
I made OpenBankQuiet just like that:
[php]FaladorWestCounter := BitmapFromString(1, 29, '98887381' +
'633B87683F7D6548836A4A7D65487D65487A63467A63467A63467' +
'76145776145755F43755F436B52316B52316E5533715735775C38' +
'A1835C9F815B8C6D428C6D428C6D428C6D427B643A7B643A74603' +
'68B866F');
DraynorCounter := BitmapFromString(34, 1, 'z78DA658E4B0' + // works too for al karid
'E80300844AF34FCB45DAA70FF2B89B40B12339997F0C980BA5C98' +
'06837A7AE828CE74551F77FF51CBCD1FC5D901369614282816E59' +
'683EF94207AF2BA55C9948672BFB2FB7D5A1F6E8A10D0C9274552' +
'39FD022AE92A73');
[/php]
slices of the counter.
I have attached the .bmps I used so maybe you get a better understanding of this method.
Anyway:
Barbarian Agility Course Runner 0.1
- Start this Script at the Barbarian Agility Course.
- Stand Next to the Rope.
- Face West.
- Camera Up.
// Barbarian Agility Course Runner By WT-Fakawi //
// First Draft //
//Start this Script at the Barbarian Agility Course.
//Stand Next to the Rope.
//Face West.
//Camera Up.
program New;
{.include SRL/SRL.scar}
//label LogFail;
var
MMRopeSwing, MMLogBalance, Rope, RopeKnot, Log, ObstacleNet, BalancingLedge,
Ladder, CrumblingWall, SlipLadder: Integer;
var XG,YG:integer;
var TMark:Longint;
var ScriptSpeed: Integer;
//----------------------------------------------------------------------------//
Procedure LoadBMPs;
begin
{ MMRopeSwing:= BitmapFromString(8, 3, 'z78DA73757535034224D2D' + // wont work, make bigger
'4C8C4D0D0191769403430353331317423553D008D4F1D15');
MMRopeSwing := BitmapFromString(4, 6, 'z78DA33353276367436C' +
'520DD8C5D9D5DCD3149031A0300A92C1D39');
RopeKnot := BitmapFromString(7, 6, 'z78DA9DCF4B0AC0300845D1' +
'2D3D5F0CD1619A76FF5BEA2F164B679D5C040F825CD900E6564A5' +
'48678941F99B7FF6485425C418BF9EA7657AD001EB2D8234D8D2D' +
'4917C578DF3C3D9669923F9EEA217792D733B7');
}
MMRopeSwing := BitmapFromString(15, 1, '00000000000000000070592769' +
'53256953256953257361297361297361297361297361291A4D022' +
'36008236008');
RopeKnot:= BitmapFromString(1, 21, 'z78DA333235323030307436B42' +
'48E3402ABA78444060045F618DF');
MMLogBalance := BitmapFromString(2, 6, 'z78DA3330000173670B3' + // wont work, make bigger
'7270B03BC6C5333131343375C6C0025C30EF5');
Rope := BitmapFromString(13, 1, 'z78DA337231323730303134C64' +
'A1A9B18B9E0268D4C8D0C5149006E090FAB');
Log := BitmapFromString(22, 1, 'z78DA95C4B90D00200C04B0952E' +
'7F68C3B3FF487408890A17F6AE84E1211379AFCEED4C6CC0BB14C' +
'BCF6C14809526ADFB0D1D2F1B71');
ObstacleNet := BitmapFromString(5, 2, '0907050B080709070508' +
'07064B36210806050807064B36214B36214B3621');
BalancingLedge := BitmapFromString(10, 7, 'z78DA958E510E83' +
'300C43AFE4C449C9EF10E2FE475AA594910A90583F5E23D74E0D9' +
'CC7829DADDFB27930F07114A5CCE9C4259B9ED3892D79280EB554' +
'A62C34663E75A8FF323444F275644BFFE1FF6DC3C8BA7255AFB49' +
'D8BF28646135ADF2F64EF8DF64776655399F8C6936C54D92BBF9E' +
'E155DE');
Ladder := BitmapFromString(10, 1, '000000000000785729664B23' +
'664B23664B23453217453217000000000000');
CrumblingWall := BitmapFromString(2, 12, '7E7575645D5C766E6' +
'D625B5A6D65656058586D6565686047625B5A58503D48402B3830' +
'2B78705F60584578705F70685078705F70685078705F78705F787' +
'05F78705F78705F78705F');
SlipLadder := BitmapFromString(1, 14, '82602D6348235E45215B' +
'421F563F1F4B32084B320882602D6348235E45215B421F5036085' +
'0360882602D');
end;
//----------------------------------------------------------------------------//
Procedure SetupScript;
begin
HowManyPlayers:=1;
NumberOfPlayers(HowManyPlayers);
Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Active:=True;
SetupSRL;
LoginPlayer;
BenMouse:=False;
MouseSpeed:=25;
LoadBMPs;
ScriptSpeed:=2;
end;
//----------------------------------------------------------------------------//
function InChat2(Text : String) : Boolean;
begin
TheLine := lowercase(trim(GetTextAtEx(20, 415, 45, SmallChars, False, False, 0, 2, 0, 40, True, tr_NormalChars)));
if (pos(Text, TheLine) <> 0) then
Result := True
Writeln(TheLine);
end;
//----------------------------------------------------------------------------//
Procedure Down;
begin
SendArrowSilentWait(2,1000+Random(500));
end;
//----------------------------------------------------------------------------//
Procedure Up;
begin
SendArrowSilentWait(0,1000+Random(500));
end;
//----------------------------------------------------------------------------//
Function HandleRopeFail: Boolean; forward;
Function HandleLogFail: Boolean; forward;
Function HandleLedgeFail:Boolean; forward;
//----------------------------------------------------------------------------//
Function FailSafe(Where:Integer):Boolean;
begin
if Where = 1 then ; // @ Couldnt Find First Starting Point in MM...
if Where = 2 then ; // @ Couldnt Find rope BitMap on MainScreen... + Handle MisClick (Return to startposition)
if Where = 3 then
HandleRopeFail; // @ Missed rope, fell in hole...
if Where = 4 then ; // @ Couldnt Find Log StartPoint in MM...
if Where = 5 then ; // @ Didnt Click Log in MainScreen...
if Where = 6 then
HandleLogFail; // @ Never made it across Log...
if Where = 7 then ; // @ Couldnt find Obstacle Net...
if Where = 8 then ; // @ Couldnt Find Balancing Ledge...
if Where = 9 then
HandleLedgeFail; // @ Never made it across Balancing Ledge...
if Where = 10 then ; // @ Never Found the Ladder...
if Where = 11 then ; // @ Never Found Crumbling Wall #1...
if Where = 12 then ; // @ Never Found Crumbling Wall #2...
if Where = 13 then ; // @ Never Found Crumbling Wall #3...
if Where = 14 then ; // @ Stuck @ Rope Fail...
if Where = 15 then ; // @ Stuck @ Log Fail...
if Where = 16 then ; // @ Stuck @ Ledge Fail...
Result:=True;
end;
//----------------------------------------------------------------------------//
Function WalkToRopeSwing: Boolean;
begin
MarkTime(TMark);
Repeat
FindTalk;
WWait(500/ScriptSpeed);
if (TimeFromMark(TMark)>20000) then Exit;
Until(FindDeformed(XG,YG,MMRopeSwing,MMCX-20,MMCY-20,MMX2,MMY2))
// Mouse(XG+24,YG+2,0,0,True);
Mouse(XG+2,YG+2,0,0,True);
FFlag(0);
WWait(4000/ScriptSpeed);
Result:=True;
end;
//----------------------------------------------------------------------------//
Function StartRopeSwing2: Boolean;
Begin
MakeCompass('N');
Down;
MarkTime(TMark);
Repeat
FindTalk;
WWait(500/ScriptSpeed);
if (TimeFromMark(TMark)>60000) then Exit;
if FindDeformed(XG,YG,Rope,MSX1,MSY1+150,MSX2,MSY2-50) then
MMouse(XG+6,YG,0,0);
until isUpText('ing');
WWait(1000/ScriptSpeed);
Mouse(XG,YG,0,0,True);
WWait(4000/ScriptSpeed);
Result:=True;
end;
//----------------------------------------------------------------------------//
Function StartRopeSwing: Boolean;
Begin
MarkTime(TMark);
Repeat
FindTalk;
WWait(500/ScriptSpeed);
if (TimeFromMark(TMark)>60000) then Exit;
if FindDeformed(XG,YG,RopeKnot,MSX1+20,MSY1+20,MSCX,MSY2-20) then
MMouse(XG+6,YG,0,0);
until isUpText('wi');
WWait(100/ScriptSpeed);
Mouse(XG,YG,0,0,True);
Result:=True;
WWait(2000/ScriptSpeed);
end;
//----------------------------------------------------------------------------//
Function HandleRopeFail: Boolean;
begin
MarkTime(TMark);
Repeat
// walk-to Laddercolor
MakeCompass('W');
Up;
FindTalk;
WWait(500/ScriptSpeed);
if (TimeFromMark(TMark)>20000) then Exit;
if FindDeformed(XG,YG,SlipLadder,MSX1,MSY1,MSX2,150) then
MMouse(XG+6,YG,0,0);
until isUpText('up');
WWait(500/ScriptSpeed);
Mouse(XG,YG,0,0,True);
FFlag(0);
WWait(4000/ScriptSpeed);
Mouse(120,250,5,5,True);
WWait(500/ScriptSpeed);
FFlag(0);
Result:=True;
end;
//----------------------------------------------------------------------------//
Function EndRopeSwing: Boolean;
begin
MarkTime(TMark);
Repeat
FindTalk;
WWait(500/ScriptSpeed);
if (TimeFromMark(TMark)>20000) then Exit;
if ( InChat2('lip') or InChat2('fall') ) then
begin
Result := False;
If not HandleRopeFail then FailSafe(15);
Exit;
End
WWait(1000/ScriptSpeed);
Until (InChat2('ull') or InChat2('wing')) ;
Result:=True;
WWait(2000/ScriptSpeed);
end;
//----------------------------------------------------------------------------//
Function WalkToLogBalance: Boolean;
begin
MakeCompass('W');
Up;
MarkTime(TMark);
Repeat
FindTalk;
WWait(500/ScriptSpeed);
if (TimeFromMark(TMark)>20000) then Exit;
Until(FindDeformed(XG,YG,MMLogBalance,MMCX-40,MMCY-20,MMX2,MMY2))
WWait(50/ScriptSpeed);
Mouse(XG+20,YG+8,0,0,True);
FFlag(0);
Result:=True;
WWait(2000/ScriptSpeed);
end;
//----------------------------------------------------------------------------//
Function StartLogBalance: Boolean;
begin
MarkTime(TMark);
Repeat
FindTalk;
WWait(500/ScriptSpeed);
if (TimeFromMark(TMark)>20000) then Exit;
if FindDeformed(XG,YG,Log,70,130,280,230) then
MMouse(XG+6,YG,0,0);
until isUpText('acro');
WWait(50/ScriptSpeed);
Mouse(XG+6,YG,0,0,True);
WWait(1000/ScriptSpeed);
Result:=True;
end;
//----------------------------------------------------------------------------//
Function EndLogBalance: Boolean;
begin
MarkTime(TMark);
Repeat
WWait(1000/ScriptSpeed);
if ( InChat2('omet') or InChat2('ite') ) then
begin
WWait(4000/ScriptSpeed);
Mouse(487,313,4,4,True);
FFlag(0);
if not HandleLogFail then FailSafe(16);
Exit;
end;
if (TimeFromMark(TMark)>20000) then Exit;
until InChat2('ake');
WWait(1000/ScriptSpeed);
Result:=True;
WWait(2000/ScriptSpeed);
end;
//----------------------------------------------------------------------------//
Function HandleLogFail: Boolean;
Begin
WWait(4000/ScriptSpeed);
// if not WalkToLogBalance then FailSafe(4);
// WWait(2000/ScriptSpeed);
if not StartLogBalance then FailSafe(5);
WWait(1000/ScriptSpeed);
if not EndLogBalance then FailSafe(6);
WWait(2000/ScriptSpeed);
Result:=True;
End;
//----------------------------------------------------------------------------//
Function DoObstacleNet: Boolean;
Begin
MarkTime(TMark);
Repeat
FindTalk;
WWait(500/ScriptSpeed);
if (TimeFromMark(TMark)>20000) then Exit;
if FindDeformed(XG,YG,ObstacleNet,120,60,300,160) then
MMouse(XG+6,YG,0,0);
until isUpText('limb');
WWait(50/ScriptSpeed);
Mouse(XG+6,YG,0,0,True);
FFlag(0);
Result:=True;
WWait(4000/ScriptSpeed);
end;
//----------------------------------------------------------------------------//
Function DoCrumbling(a,b,c,d:integer): Boolean;
Begin
MarkTime(TMark);
Repeat
FindTalk;
WWait(500/ScriptSpeed);
if (TimeFromMark(TMark)>20000) then Exit;
if FindDeformed(XG,YG,CrumblingWall,a,b,c,d) then
MMouse(XG+6,YG,0,0);
until isUpText('over');
WWait(50/ScriptSpeed);
Mouse(XG+4,YG,0,0,True);
FFlag(0);
WWait(6000/ScriptSpeed);
Result:=True;
end;
//----------------------------------------------------------------------------//
Function StartBalancingLedge: Boolean;
Begin
MarkTime(TMark);
Repeat
FindTalk;
WWait(500/ScriptSpeed);
if (TimeFromMark(TMark)>20000) then Exit;
if FindDeformed(XG,YG,BalancingLedge,240,90,370,150) then
MMouse(XG+6,YG,0,0);
until isUpText('acros');
WWait(50/ScriptSpeed);
Mouse(XG+6,YG,0,0,True);
FFlag(0);
Result:=True;
WWait(2000/ScriptSpeed);
end;
//----------------------------------------------------------------------------//
Function EndBalancingLedge: Boolean;
var TMark2:Integer;
begin
MarkTime(TMark2);
Repeat
WWait(1000/ScriptSpeed);
if (InChat2('lip') or InChat2('onto')) then
begin
HandleLedgeFail;
Exit;
end;
if (TimeFromMark(TMark2)>20000) then begin FailSafe(9); Exit; end;
until (InChat2('ully') or InChat2('gap'))
WWait(4000/ScriptSpeed);
Result:=True;
end;
//----------------------------------------------------------------------------//
Function HandleLedgeFail:Boolean;
begin
WWait(2000/ScriptSpeed);
Mouse(490,180,10,10,True);
FFlag(0);
WWait(2000/ScriptSpeed);
if not DoCrumbling(190,150,390,320) then FailSafe(16)
else
Result:=True;
end;
//----------------------------------------------------------------------------//
Function DoLadder: Boolean;
Begin
MarkTime(TMark);
Repeat
FindTalk;
WWait(500/ScriptSpeed);
if (TimeFromMark(TMark)>20000) then begin FailSafe(10); Exit; end;
if FindDeformed(XG,YG,Ladder,200,100,280,180) then
MMouse(XG+6,YG,0,0);
until (isUpText('im'))
WWait(50/ScriptSpeed);
Mouse(XG+4,YG,0,0,True);
FFlag(0);
WWait(2000/ScriptSpeed);
Mouse(490,220,10,10,True);
FFlag(0);
Result:=True;
WWait(4000/ScriptSpeed);
end;
//----------------------------------------------------------------------------//
begin
SetupScript;
WWait(4000/ScriptSpeed);
repeat
if not WalkToRopeSwing then FailSafe(1);
if not StartRopeSwing then FailSafe(2);
if not EndRopeSwing then FailSafe(3);
// if not WalkToLogBalance then FailSafe(4);
if not StartLogBalance then FailSafe(5);
if not EndLogBalance then FailSafe(6);
if not DoObstacleNet then FailSafe(7);
if not StartBalancingLedge then FailSafe(8);
if not EndBalancingLedge then FailSafe(9);
if not DoLadder then FailSafe(10);
if not DoCrumbling(190,150,450,MSX2) then FailSafe(11);
if not DoCrumbling(180,190,310,310) then FailSafe(12);
if not DoCrumbling(180,190,310,310) then FailSafe(13);
MakeCompass('W');
until(false);
end.
{
11:02:45 am you climb the ow wall...
11:02:46 am you climb the ow wall...
11:02:47 am you climb the ow wall...
11:02:48 am you climb the ow wall...
11:02:49 am you climb the ow wall...
11:02:50 am you skillfully swing across.
11:02:51 am you skillfully swing across.
11:02:52 am you skillfully swing across.
11:02:53 am you skillfully swing across.
11:02:55 am you walk ca full cross the slippery o
11:02:56 am you walk ca full cross the slippery o
11:02:57 am you walk ca full cross the slippery o
11:02:58 am you walk ca full cross the slippery o
11:02:59 am you walk ca full cross the slippery o
11:03:00 am ...you make t a y to the othe id
11:03:01 am ...you make t a y to the othe id
11:03:02 am ...you make t a y to the othe id
11:03:03 am you climb the ne ti g...
11:03:04 am you climb the ne ti g...
11:03:05 am you climb the ne ti g...
11:03:06 am you put your foot o the edge and try to
11:03:07 am you put your foot o the edge and try to
11:03:08 am you kill ully dge across th gap.
11:03:09 am you kill ully dge across th gap.
11:03:10 am you kill ully dge across th gap.
11:03:12 am you kill ully dge across th gap.
11:03:13 am you kill ully dge across th gap.
11:03:14 am you kill ully dge across th gap.
11:03:15 am you kill ully dge across th gap.
11:03:16 am you kill ully dge across th gap.
11:03:17 am you kill ully dge across th gap.
11:03:18 am you kill ully dge across th gap.
11:03:19 am you kill ully dge across th gap.
11:03:20 am you clim t lo wall...
11:03:21 am you clim t lo wall...
11:03:22 am you clim t lo wall...
11:03:23 am you clim t lo wall...
11:03:24 am you clim t lo wall...
11:03:25 am you clim t lo wall...
11:03:26 am you climb the ow wall...
11:03:28 am you climb the ow wall...
11:03:29 am you climb the ow wall...
11:03:30 am you climb the ow wall...
11:03:31 am you climb the ow wall...
11:03:32 am you climb the ow wall...
11:03:33 am you climb the ow wall...
11:03:34 am you climb the ow wall...
11:03:35 am you climb the ow wall...
11:03:36 am you climb the ow wall...
11:03:37 am you climb the ow wall...
11:03:38 am you slip and fall to the pit below.
11:03:39 am you slip and fall to the pit below.
11:03:40 am you slip and fall to the pit below.
11:03:41 am you slip and fall to the pit below.
11:03:42 am you slip and fall to the pit below.
11:03:43 am you slip and fall to the pit below.
11:03:45 am you slip and fall to the pit below.
11:03:46 am you slip and fall to the pit below.
11:03:47 am you slip and fall to the pit below.
11:03:48 am you slip and fall to the pit below.
11:03:49 am you slip and fall to the pit below.
11:03:50 am you slip and fall to the pit below.
11:03:51 am you slip and fall to the pit below.
11:03:52 am you sk llfully swing acr ss.
11:03:53 am you sk llfully swing acr ss.
11:03:54 am you sk llfully swing acr ss.
11:03:55 am you sk llfully swing acr ss.
11:03:56 am you walk ca full cross the slippery o
11:03:57 am you walk ca full cross the slippery o
11:03:58 am you walk ca full cross the slippery o
>>>11:03:59 am ...you ose yo r f oting and fall to
11:04:00 am something n th wate bite you.
11:04:02 am something n th wate bite you.
11:04:03 am something n th wate bite you.
11:04:04 am something n th wate bite you.
11:04:05 am something n th wate bite you.
11:04:06 am something n th wate bite you.
11:04:07 am something n th wate bite you.
11:04:08 am something n th wate bite you.
11:04:09 am it heals some health.
11:04:10 am it heals some health.
11:04:11 am it heals some health.
11:04:12 am it heals some health.
11:04:13 am you walk carefully across the slippery o
11:04:14 am you walk carefully across the slippery o
11:04:15 am you walk carefully across the slippery o
11:04:16 am you walk carefully across the slippery o
11:04:17 am you walk carefully across the slippery o
11:04:18 am ...you make t a y to the othe id
11:04:20 am ...you make t a y to the othe id
11:04:21 am ...you make t a y to the othe id
11:04:22 am ...you make t a y to the othe id
11:04:23 am ...you make t a y to the othe id
11:04:24 am you climb the ne ti g...
11:04:25 am you climb the ne ti g...
11:04:26 am you climb the ne ti g...
11:04:27 am you put your foot o the edge and try to
11:04:28 am you put your foot o the edge and try to
11:04:29 am you kill ully dge across th gap.
11:04:30 am you kill ully dge across th gap.
11:04:31 am you kill ully dge across th gap.
11:04:32 am you kill ully dge across th gap.
11:04:33 am you kill ully dge across th gap.
11:04:34 am you kill ully dge across th gap.
11:04:35 am you kill ully dge across th gap.
11:04:37 am you kill ully dge across th gap.
11:04:38 am you clim t lo wall...
11:04:39 am you clim t lo wall...
11:04:40 am you clim t lo wall...
11:04:41 am you clim t lo wall...
11:04:42 am you climb the ow wall...
11:04:43 am you climb the ow wall...
11:04:44 am you climb the ow wall...
11:04:45 am you climb the ow wall...
11:04:46 am you climb the ow wall...
11:04:47 am you climb the ow wall...
11:04:48 am you climb the ow wall...
11:04:49 am you climb the ow wall...
11:04:50 am you climb the ow wall...
11:04:51 am you climb the ow wall...
11:04:53 am you climb the ow wall...
11:04:54 am you climb the ow wall...
11:04:55 am you climb the ow wall...
11:04:56 am you skillfully swing across.
11:04:57 am you skillfully swing across.
11:04:58 am you skillfully swing across.
11:04:59 am you walk ca full cross the slippery o
11:05:00 am you walk ca full cross the slippery o
11:05:01 am you walk ca full cross the slippery o
11:05:02 am you walk ca full cross the slippery o
11:05:03 am you walk ca full cross the slippery o
11:05:04 am ...you make t a y to the othe id
11:05:05 am ...you make t a y to the othe id
11:05:06 am ...you make t a y to the othe id
11:05:07 am you climb the ne ti g...
11:05:08 am you climb the ne ti g...
11:05:10 am you put your foot o the edge and try to
11:05:11 am you put your foot o the edge and try to
11:05:12 am you kill ully dge across th gap.
11:05:13 am you kill ully dge across th gap.
11:05:14 am you kill ully dge across th gap.
11:05:15 am you kill ully dge across th gap.
11:05:16 am you kill ully dge across th gap.
11:05:17 am you kill ully dge across th gap.
11:05:18 am you kill ully dge across th gap.
11:05:19 am you kill ully dge across th gap.
11:05:20 am you kill ully dge across th gap.
11:05:21 am you clim t lo wall...
11:05:22 am you clim t lo wall...
11:05:23 am you clim t lo wall...
11:05:24 am you climb the ow wall...
11:05:26 am you climb the ow wall...
11:05:27 am you climb the ow wall...
11:05:28 am you climb the ow wall...
11:05:29 am you climb the ow wall...
11:05:30 am you climb the ow wall...
11:05:31 am you climb the ow wall...
11:05:32 am you climb the ow wall...
11:05:33 am you skillfully swing across.
11:05:34 am you skillfully swing across.
11:05:35 am you skillfully swing across.
11:05:36 am you walk ca full cross the slippery o
11:05:37 am you walk ca full cross the slippery o
11:05:38 am you walk ca full cross the slippery o
11:05:39 am you walk ca full cross the slippery o
11:05:40 am you walk ca full cross the slippery o
11:05:41 am ...you make t a y to the othe id
11:05:43 am ...you make t a y to the othe id
11:05:44 am ...you make t a y to the othe id
11:05:45 am you climb the ne ti g...
11:05:46 am you climb the ne ti g...
11:05:47 am you put your foot o the edge and try to
11:05:48 am you lip nd all onto the sp es belo .
11:05:49 am you lip nd all onto the sp es belo .
11:05:50 am you lip nd all onto the sp es belo .
11:05:51 am you lip nd all onto the sp es belo .
11:05:52 am you lip nd all onto the sp es belo .
11:05:53 am you lip nd all onto the sp es belo .
11:05:54 am you lip nd all onto the sp es belo .
11:05:55 am you lip nd all onto the sp es belo .
11:05:56 am you lip nd all onto the sp es belo .
11:05:57 am you lip nd all onto the sp es belo .
}