-- Climb down the ladder
-- And start the script right away.
-- You should have a pickaxe,
-- invisible

@Beginning:
OnItemLost(@ItemLost,%ItemID,%ItemPos)
--OnCoordsChanged(@CoordsChange,%oldX,%oldY)


--- Randomly choose clockwise or counterclockwise
SetVarRandom(%dir,1)


SetVarNum(%rockcount,15)
SetVarNum(%swinged,0)

GoToRandom(@SetRock1,@SetRock2,@SetRock3,@SetRock14,@SetRock15)
@SetRock1:
SetVarNum(%rock,1)
GoTo(@MineAtRock)
@SetRock2:
SetVarNum(%rock,2)
GoTo(@MineAtRock)
@SetRock3:
SetVarNum(%rock,3)
GoTo(@MineAtRock)
@SetRock14:
SetVarNum(%rock,14)
GoTo(@MineAtRock)
@SetRock15:
SetVarNum(%rock,15)
GoTo(@MineAtRock)

@ResetRock:
SetVarNum(%rock,1)
GoTo(@MineAtRock)
@ResetRock2:
SetVar(%rock,%rockcount)

@MineAtRock:
GoToIfBagFull(@EndMining)
ResetLastItemGained()
GoSub(@SwingPick)
AddVarNum(%swinged,1)
SetVarNum(%a,10)
--- If we try 10 times and still no coal then next rock
GoToIfVarAbove(@IncreaseVariable,%swinged,%a)
Wait(30)
GoToIfItemGained(@IncreaseVariable)
GoTo(@MineAtRock)
@IncreaseVariable:
GoToIfBagFull(@EndMining)
SetVarNum(%swinged,0)
SetVarNum(%a,0)
GoToIfVarEqual(@Decrease,%a,%dir)
AddVarNum(%rock,1)
GoToIfVarAbove(@ResetRock,%rock,%rockcount)
GoTo(@MineAtRock)
@Decrease:
AddVarNum(%rock,-1)
GoToIfVarEqual(@ResetRock2,%rock,%a)
GoTo(@MineAtRock)



@SwingPick:
SetVarNum(%a,1)
GoToIfVarEqual(@Rock1,%rock,%a)
SetVarNum(%a,2)
GoToIfVarEqual(@Rock2,%rock,%a)
SetVarNum(%a,3)
GoToIfVarEqual(@Rock3,%rock,%a)
SetVarNum(%a,4)
GoToIfVarEqual(@Rock4,%rock,%a)
SetVarNum(%a,5)
GoToIfVarEqual(@Rock5,%rock,%a)
SetVarNum(%a,6)
GoToIfVarEqual(@Rock6,%rock,%a)
SetVarNum(%a,7)
GoToIfVarEqual(@Rock7,%rock,%a)
SetVarNum(%a,8)
GoToIfVarEqual(@Rock8,%rock,%a)
SetVarNum(%a,9)
GoToIfVarEqual(@Rock9,%rock,%a)
SetVarNum(%a,10)
GoToIfVarEqual(@Rock10,%rock,%a)
SetVarNum(%a,11)
GoToIfVarEqual(@Rock11,%rock,%a)
SetVarNum(%a,12)
GoToIfVarEqual(@Rock12,%rock,%a)
SetVarNum(%a,13)
GoToIfVarEqual(@Rock13,%rock,%a)
SetVarNum(%a,14)
GoToIfVarEqual(@Rock14,%rock,%a)
SetVarNum(%a,15)
GoToIfVarEqual(@Rock15,%rock,%a)

@Rock1:
Action(225,4117)
AtObject(225,4116)
Ret()
@Rock2:
Action(226,4116)
AtObject(227,4116)
Ret()
@Rock3:
Action(226,4115)
AtObject(227,4115)
Ret()
@Rock4:
Action(225,4113)
AtObject(225,4114)
Ret()
@Rock5:
Action(224,4113)
AtObject(224,4114)
Ret()
@Rock6:
Action(223,4112)
AtObject(224,4112)
Ret()
@Rock7:
Action(223,4111)
AtObject(224,4111)
Ret()
@Rock8:
Action(222,4111)
AtObject(222,4110)
Ret()
@Rock9:
Action(221,4112)
AtObject(221,4111)
Ret()
@Rock10:
Action(219,4114)
AtObject(218,4114)
Ret()
@Rock11:
Action(219,4115)
AtObject(219,4116)
Ret()
@Rock12:
Action(221,4116)
AtObject(220,4116)
Ret()
@Rock13:
Action(221,4117)
AtObject(221,4118)
Ret()
@Rock14:
Action(223,4118)
AtObject(223,4117)
Ret()
@Rock15:
Action(225,4117)
AtObject(224,4117)
Ret()



@EndMining:

OnItemLost(-1,%ItemID,%ItemPos)


SetVarNum(%a,1)
GoToIfVarEqual(@JustClimb,%a,%rock)
SetVarNum(%a,2)
GoToIfVarEqual(@JustClimb,%a,%rock)
SetVarNum(%a,3)
GoToIfVarEqual(@JustClimb,%a,%rock)
SetVarNum(%a,14)
GoToIfVarEqual(@JustClimb,%a,%rock)
SetVarNum(%a,15)
GoToIfVarEqual(@JustClimb,%a,%rock)


MoveToRandomly(222,4117,222,4116,222,4115)
MoveToRandomly(222,4118,222,4119,222,4120)
Action(225,4118)
AtObject(226,4118)
GoTo(@OnEarth)

@JustClimb:
Action(226,4117)
AtObject(226,4118)

@OnEarth:
WaitForCoordChange()
SetVarMyY(%y)
SetVarNum(%a,4000)
GoToIfVarAbove(@OnEarth,%y,%a)

MoveToRandomly(226,563,226,564)
MoveToRandomly(226,562,226,561)
MoveToRandomly(239,563,239,562,239,561)
MoveToRandomly(239,571,239,572)
MoveToRandomly(238,572,238,571)
MoveToRandomly(235,567,234,567,234,568,235,568)



---- Banking
RepeatNextCommandUntilQuestMenu(100,8)
SetVarMyX(%x)
GoToIfVarAboveNum(@decrease,%x,234)
AddVarNum(%x,1)
GoTo(@DoAction)
@decrease:
AddVarNum(%x,-1)
@DoAction:
SetVarMyY(%y)
ActionVarVar(%x,%y)
TalkToNPC(749,750,751,752,753)
Answer(0)
WaitForBankWindow(50)
DepositEverything()
Wait(10)
CloseBank()
Wait(10)


-- Go back
MoveToRandomly(238,572,238,571)
MoveToRandomly(239,571,239,572)
MoveToRandomly(239,563,239,562,239,561)
MoveToRandomly(226,562,226,561)
MoveToRandomly(226,563,226,564)

MoveTo(226,565)
Action(226,565)
AtObject(226,566)

WaitForCoordChange()

--- And everything starts again
GoTo(@Beginning)


@ItemLost:
GoToIfVarEqualNum(@RunAndHide,%ItemID,-1)
Ret()

@CoordsChange:

OnCoordsChanged(-1,%oldX,%oldY)

SetVarMyX(%x)
SetVarMyY(%y)

SetVar(%diff,%oldX)
AddVarNum(%diff,40)
GoToIfVarAbove(@RunAndHide,%x,%diff)
SetVar(%diff,%oldX)
AddVarNum(%diff,-40)
GoToIfVarBelow(@RunAndHide,%x,%diff)

SetVar(%diff,%oldY)
AddVarNum(%diff,40)
GoToIfVarAbove(@RunAndHide,%y,%diff)
SetVar(%diff,%oldY)
AddVarNum(%diff,-40)
GoToIfVarBelow(@RunAndHide,%y,%diff)

OnCoordsChanged(@CoordsChange,%oldX,%oldY)

Ret()

@RunAndHide:
Debug("Ooops we just lost pickaxe! Must be an admin!!!")
StopAndLogOut()
Wait(1)


