Dynamite
2012-01-20 11:26:58
DemiseScythe gets full credit for the actual solving of the random.
All I did was make it more suitable for an include.
In some solvers I have added failsafes etc.
Not all of the solvers are finished but the functionality is there.
These solvers are not ready for the include yet, they need more testing. If you have an account in any of the randoms listed below, please PM me the info.
Mordaut
Mime
More will be coming soon :)
-Boom
All I did was make it more suitable for an include.
In some solvers I have added failsafes etc.
Not all of the solvers are finished but the functionality is there.
These solvers are not ready for the include yet, they need more testing. If you have an account in any of the randoms listed below, please PM me the info.
Mordaut
Program Mordaut;
(*
Mordaut
=======
Written by: DemiseScythe/Dynamite
Solves the Mordaut Exam random.
*)
{$DEFINE TEST} // Uncomment to test separately from the SRL include
{$i srl/srl.simba}
var
Scimitar, LongSword, BattleAxe, Mace, Necklace, Tiara, HolyS, Ring: Integer;
PlateB, Bar, Ore, Pick, Arrows, Bow, Crossbow, ArrowT, RangedT, ArcherT, i, dx, dy: Integer;
Beer, Tea, Drink, ThirstyT, ThirstT, DehydratedT, HolySB, NecklaceB, RingB: Integer;
ShinyT, JewelleryT, BanglesT, Fish, Harpoon, FishingT, FishT, Candle, LampM: Integer;
A, B, C: Boolean;
Item: String;
aFound: Extended;
procedure Mordaut_LoadDTMs;
Begin
Scimitar := DTMFromString('mFQEAAHicnczLCoJQAITh6QHCJ1FJBFGKMA4nXUhC0qpl0N2uG9++vzgELmvgW8xiZijpijOO2OOAHS5onTsezg0brLHCAhYNltji5D7e2yc6TLKxsiRVHMWaTXPVVa3SFh9ROFLoB5obK5Obb/fY/Wrwh15esUEUgw==');
LongSword := DTMFromString('m6wAAAHic42ZgYLgOxLeA+C4QPwTiR0D8FIivAvEFID4NxCeB+DgQxwFxFBCHAXEQEPsDsS8QJwFxBhDnAXEhEJeA+OUVcFzU3MKQVlbGUNDYxJBdXQNmJ+TlMSQWFIDlSQGMJGAkAABfnRwx');
BattleAxe := DTMFromString('m6wAAAHiclcoxCoNAAETRsbbwCEGIjRZpUnkJESKyLiSwJItRNCDen3yNhWUceEwxE0q6BNIVOTIkSHHeetlPiPHg/0IPiwo3GBQo0ej3887L3Z1MZdQ+W03DpM53Gt/jutnaav7Ma0f8/xUcsMsXiNsTeg==');
Mace := DTMFromString('mwQAAAHic42RgYJjCyMAwC4hnA3E9EHcC8XQgngfEC6D0P6A6JiD9H0h/BuKfQMwB5LMBMTMQ/wbyrW2tGGztbRgMjPQZ/AJ8GTx9PMDsoNBAhui4KAYLK3MGfqA6QpiRCAwHAC59Eeo=');
Necklace := DTMFromString('m1gAAAHicjctNC0BAGATgcXXxqyRSOGvThvWx2Rb5+PmGtlx36mkO7zshgIEUzdQ5xvVFlkbKKKGUcqqooJoE9W4zGY3tPqDtAqlatGMPIRus5464jL9+bxF/fQSe/jyIGRRI');
Tiara := DTMFromString('m6wAAAHiclcrLCoJgAEThad3CF1NQ1H4trxQoKJJP2EXEpQtfyFO4cFkD32Y4R0lvPDYvPLdvwIQRC2aUKHBFggoGDToEcNF/ulsuL/DkuLZ84yu6GGVlqlMcfp3TWO29Ud1Wsuh/dfjDbit92Bkb');
HolyS := DTMFromString('mVAEAAHicpczBCoJAEAbgf5/A3qFbIJF56hBIKmR1WDBK13UVpUPv/wD9TXPq6sDHzPwDswKwNcCOYvObN2qt2V7zlA50pIosXWngj44c3WminkZ60UxvCpp5zb69piRJUZRnnPIS1tYIw4zqcoPrguyPp5M9y3LJmtZL9/0ot4g/ljAL/dcHqBMZvg==');
Ring := DTMFromString('mAAEAAHiclctBC0BAEAXgt1EOxK/cEhYrHDZswsXfdVYeKa479TXTzJsIgKaKWmqopI5qKih99z0Z8gUQvMKfmDw6mTnwzb3WqPMcm7WYhwGZlNi39en3rVEK1pgns0wjEv64EI7+dQG8UxnJ');
PlateB := DTMFromString('mfgEAAHicrczbCoJAEIDh6QmCXs3ETDysbrotRpF0kQi9ev8uEwjdOvAxw5wOInLHFaOa8MZLuVV/xoIPLDoYtGjUGSmOOKHCRfmVcFsiQa5/hrDnnRR1JUmWRqa30rlehtHL7fmIdZj/elmRS23bqDRNzOFuz68t7DbyH184syQ3');
Bar := DTMFromString('mAAEAAHic42FgYDgHxKeB+DwQXwHiE0B8Fip2GIiPQ8VvAfFlIE4A4jggDgfiKCBOAeJ0IM4G4gwgjgXiUKhcKhDnl+RjxWU15XDsF+QPx/xAPaRgRhIxMgAAAKYd5g==');
Ore := DTMFromString('maQEAAHicrcw7CsJQEIXhkxWICxAsLBREsBBBQbBPISiEcInX+ERD0MQHksat+yfezlIHPmaYOUxdUs+Tuuh7n7mNlpsbaKKDAUYYY4ohJm634o+BxQ5HnHDGGhEWzhxLlz04GzyyTK+i0NZa7eNYURjqkiSyxqi43/S85jJBoDxNq2x5K7Nln/l+ta/x51feH3zVG3UnH50=');
Pick := DTMFromString('m6wAAAHic42ZgYDgPxDeA+CEQPwfi40C8D4p3A/EOID4IxCeA+A8Q/wdiJkYGBhYg/gFkfwfiT0D8G4gZgGJvgdRTINbT1WHQUFdjUFVRZlBSVADT5iYmDPY2NgyW5uYM4cHBDC6OjgyO9nYM/ED1xGJGEjASAACMmBfR');
Arrows := DTMFromString('mqAEAAHicE2FgYBBkgAAOIOYCYhkglgNiaShbCoiFgFgEiPmBWAKIeYGYFaoehAWAWBiKQeYpAbEslOaEqmWG2iMENRdkniQQ8wAxNxCLQc0WhprJAdWXn5aDgj3sPRnCvMMZ/F0DwPTly6fA2NzAAs6+e/MyHIP0FGfmM3TUtDC0VDQw6ALNpCZmpDLGBgD/jiaD');
Bow := DTMFromString('mqAEAAHicE2FgYOAHYgkgVgZieSCWgfJFgFgIyucAYjEg5gVidgYIYARiJiBmAWJWqBoeIBaGmiMHxLJQDDJDGslcUah53EDMBjWPBWo2SIwPiAWg9pcXFzFcvnyKwcrSgsHT3Y0hPDSYIToynCE+NpohKMAfLHf31hUw3d3eytDf1cFgamIMVguSr6+uYmipr2NoqqsFs3WBZlITM1IZYwMAGboimA==');
Crossbow := DTMFromString('m/AEAAHick2BgYOADYm4gZgdiZgYIYIJiFiBmg7I5gZgfiIWAmBeIOaBscSCWAWJZIJYHYmGoHpB6HiAWgGIhqJwI1BwuqF3iUPVSQCwHxJJALAbVzwtVxwO1D+ROBai4KNTNbfVNDF3NbQx1FVUMzTX1DBM6exl6WjsYGqtrGUICQ8F0Q2UNQ2dTK0NsZCxDdVkNw61r58E4Oz2HIT+7gMHF0QUsB6JBemDyMyZNZdAF2kFLzEhjjAsAAN5XK6I=');
ArrowT := DTMFromString('m/AEAAHick2BgYFjKyMCwDIhXMELYi4B4ARDPBeJZQDwTiOcA8SogXgPE66F4ExBvBuKtQLwNiHcCcSUQ34SacxKIO4A4A2hHNhCnAXEqFGcCcRYUpyGJgdjpUHGYvlQoH8T2AmI/KB0PxHFAfPHsKQYYALHxYWwAmzhMDETzA2laYkYaY1wAAK4PN7M=');
RangedT := DTMFromString('mzgIAAHiczc7NCcJAEIbh2QrswW4UPFlBUGP8wRpEAoKCIoJBQRAE9WYbEvCQjnwXvwURIR4TePhmJrOb1M1s5czW7p0bbGWJuSyQYoappMo9DshwwlF8fcYFN1yV/r4cD9xRYIeEfxmhJ6EfYoBYc9/3lRE66GKsedhJVMc6H85F2m+gjRaaej9B8czNlKH+7P9Rtm9f3/m1X2NWBa4iyp8XRL5k7w==');
ArcherT := DTMFromString('megIAAHicxc27CQJBEIDhuQrswH4MDA2UVQsQY+EqsABrEEXuEEEQ9FAQFAUDk6vn/pUZWBY13YGPYR472xaRZSayxkatUKLAFnvsNB8CR5xQ4YwLruqmHpgjx0L3atwx4O8+HMYB37PZECPle73ojQv2bdfqDqbIMcMEXbxfz484rGfzX+IdiW5+u+/rFjmFLJH/0QCjkk/h');
Beer := DTMFromString('mpAIAAHicxc47CsJAFAXQcSduwCVYiKjxA1HxA1qmiIUrEQKRJCoSg7+oKKIW7sFWK8HNeGe4hnSWGTi8NzPvDpMWQmhQpDIUWHMxeZKzFaiBTnXqQA/67NuclbkGdJkr8bwFWdjCCVawhAX4tIY9nOFKR7jBBQ6wgYB52e8g5N0MpqzyXZfuzMtZx7LEeDRSNW7uOsrEtiMDw1CqmhZp6royNM3I6/VQfM8TYRCojNx/3k/ldy/7DP6QpFTC/q0vOVtZZw==');
Tea := DTMFromString('m0gEAAHicE2NgYBBghGBhIOYBYnYgZoNibqi4GBBLAbEEEMsBsSgQcwExMxCzArE0EPMDsSwQ/4eauQRILwDiWUA8G0qD+MuAeBUQr2GAqAHx5wDxBjS8BoqnQfWC1GwB4ubaBjBuqW+C48aaOob6qlqGuspqhgD/IIbw0EiGyPBoMJ2dmceQmZ7D0N3WCVZ39+ZlhsuXT8FpGNYFmk0LzEgjjB0AAHyZOP0=');
Drink := DTMFromString('mkwEAAHicE2ZgYBBgZGDgB2JeIOYGYk5GiJg4EIsCsTAQC0LFRKDqWKHqmKBynFD1DEDMDMQcQMwIxL+BQr+A+CcQ/wdiFqgdILOEoPgHUPwrEL8D4i8MELNBajoaqxna6oG4rpKhvaGaobetgaG7pZYhLTGCISEqiCE2IoAhMsSXISs1hiEvI4EhITqEoTQ/m6G8IJfByc6S4e7Ny2B8+fIpBl2gudTCjFTEWAAA7QooYw==');
ThirstyT := DTMFromString('mpAIAAHicxc49CgIxEIbhyQm8gtfZwsYLLMr6t4KHECsLO1EEBUWRLRRELATBXhD1Rr7gtxACsuUGHmbyZRJSNbOtM9u5X91jLRussMRCZphKhiMOOOGMC66eG1644405xhhhiAm6/KGPFtpI0FGWKmuoT3XWVN/TvcR7I88GmqkhQl018vYxPs+HWVD/ZSF/Jpwr2udZpWSuZEXrC4RPWBk=');
ThirstT := DTMFromString('muQIAAHiczc7BCkFREMbxuU/gGTyN2FjLiri4N5YWshNbcYkikkh4Bg8gFlY8jj93bk0iS6Z+nTnfTKcTF5GJE5pijBEGaog+uujpOcMCcyyxwRpbtUMbgb61wgEn3HDFHk00VJl/FODDQxE5CXNfVeAir3NXM0+VzOyRZ5FEAimkkUENLXRUHVVczscnMb3Nolxedt/ln+5211a0E6P/NecPfK07Y79Rsw==');
DehydratedT := DTMFromString('mtQMAAHic1c7fBgJBFMfx2SfoSXqOJLrb2G239DRFERFFF5Uo6SIiJYr0h6WL3qjv8FvW2r3ocoePc+bMOTNTNsbMHWMWmInNp5hgLEOMFAfooYu+rLFRXGGLHfY4JOIZR5wUL7jihjseeOGNJyLV7OxS79v3Qv7dEQ8+Wspd5VZTtXZq70o8F6TO/cQddjZUrZHoCcVTPVCvVUcVNVSUfz+RMYrpPEveuUndldWXd5a1j1fWWyXqReMU0F/rBwWmf8M=');
HolySB := DTMFromString('m5wEAAHictczLCgFxFMfx85fFFDYST+ENlCSXhUuKNMa4NXkNWbgkkZRXsjQrC+9hg/Ad/inJck59Ouf86pyEiBSQRVr3IvLIoIQyqmigBhN9zUITNlqooI4UcrjjgQtuuCKgRILq3b3dm2MIIY4owjB0FtGZoW8Uztzt1htZzxeyXa4+pqOxLCczGfYdcboDGdg96Vodsc32Fy9z3f2P0/HwkuS/X5SP/tQTCjc5OA==');
NecklaceB := DTMFromString('mqAEAAHicrczNCgFxFMbh4x7chguipMnHMMYkKylXIBNhmpEoUcpeiBALCx+pKbfjZ/rPiuWceno7dd4TF5EDttjjiDM2yg5X+HjipPYHLrjjpbprrODAxQhd9FT20cESUwwxgYc5ZhhjgbbyvdcKWckbulRqlpSrpmRyWpDJdEpKliG23RLdLIrrDeTt336E/XqzEfQS/IxSLGL/5gP6DD6f');
RingB := DTMFromString('mvQEAAHicE2VgYBBkZGAQYYTQYkAsDsTCQMwLxBJALADE3EDMAcRcQMwHxEJQmhWIWYCYByoPM4MdqocXqo4Lag5IHRtUDwgzAPFfIPUHiP8zQMxgZoSwfwDxLygNko+OjWSws7dl8AvwYdDQ0gBjd083hnu3rzBcvXoaTGPDfb1dDF0drQy9PR0MrS2NYLqpsY7BycWRQRdoLrUxIw0wVgAAf2AwoA==');
ShinyT := DTMFromString('mpAIAAHicxc7BCgFRFMbxO0/gFbwOGYaRyYa1LLwAS2XvDWxtKGWKiJAwC+WB/Ifv1nRTlnPr1znn3nNOt2iM2Xlfe2yxQYy14goLxSWOOOCEC8644o4HEuUvSXdPMcQYE8wwxwgBf6gglBqqaKAMX3WQ6fEl1H2a1xWbiNBGF3300FJvSQbo4JncPuyxtb1za+PMZN/dnl873dkCMU9ezv6dN9iGVfA=');
JewelleryT := DTMFromString('megIAAHicxc3NCkFREMDxOU/gDbyPlYW3UIp7fV5rW3kGlMgtUaSIsruysPI6/sMsJt1s79SvM3POzJyyiCyCyAxTzMO3XmJlUqyxxQ4bHLDHESdccMUNZ4wxwQgDJLb7jhcyxPzdQhs900DT8thq7emga/daRzYXudkEfQxRRwU1O1XV9mk8H9mHuNqHf/8983Lfk5drlAoSCvI/3gyVRLs=');
BanglesT := DTMFromString('mNwMAAHiczc7BCgFRFMbxM0/gMTyLha0HsJU0GBMLC7ORhQUvQJSiiKKISDamLJQH8r/NUTcmzXJu/Trnnm/uabIisnJEllhjgy12OGCv1dxPOOKMK264aA0tc8ywwBRjjNQEgepiqPvueOmunuZt+PxfFS48ZfqaRFlLmb5sfVtHQ+e+3l0r83Tu6ZuK9baJAAP00UEJeeRQQFGi83yEPz7z7xqX/9uRNIvrM9S0clIs4XkDYnBtZQ==');
Fish := DTMFromString('mjwIAAHick2dgYOBhZGAQAGJOIGYBYlYgZgLivwwQNh8QCwKxMBCLA7EEEEsDsQKULQvEKlA2SB0XVO93BggNMl8IiH8C2TJAWhmIlaB2/QeK/QLiPwwQ+X8MELvZgZgDiJmhapihbvoBZH+Fmv0Pav5vIGaD2ssNxLxQs0FqPwPxJ6j576FsZqhfsjLSGQrychjKS4sZ6uuqGaoqyxmKCvLAdE5WJkNGWgoYW9tYMri6OTMYmxiBaS9vD4YrV05j4Hu3r4AxLj6yuC7QHQOFGQcQEwAApd1XDw==');
Harpoon := DTMFromString('mpAIAAHicxc7fZ8JRGMfxp/+kfyAtKpspopvEJnZTRj/sS/oTIiXZpG+aRSNt/8duoiRayaxvUVr2p/T+fj1NN9Nlh5fznPM8Pue4RWSGT4wxwkD1YeEL31ovsMEPtlqvsNQ5O2uiWUPNsM9zzbDn1pr/gV/EcIM7pHCPjAqra1wigCsE4YVf+bQXQhRxJDQvhyRu9a0IDGRxgRezJeZjXZpPDamVq9Kqm1IplmS3WUjeKDj7W6cr7689p7as6Z9c+kE6z23n/j/H8wfHPQ9/OCfXmZ1ae0Wabk0=');
FishingT := DTMFromString('mJgIAAHicvc1PCoJAFMfxNydo34VE8h8FLvMsBm4iKARrEYgGdY+2gYU36hs+cQjd+uDDb+bNzJuliNyNyMN0eUOJ2lpf1QWF5hknHHHAHjukyPDBG0/kqBDy1wYufASItLdWHlYy3I01Az33rRmOtU+w1Wybl4hmry+793829mZqxq8WMzEzma4vrtRAfQ==');
FishT := DTMFromString('m5wEAAHictcxBCsIwFIThlxO47JlE26gFt4Xeo/seoauuPEdVUARtq8UL+YMThIDLPviY5A1JYmYXZ3Z13zzhrDyiQ48bHhjxwhNvadGgklpvDtjwf441Vva77+GxRYYUS+1y8doFOxRSYhruZspwDhN3cR93cb+YkZvRn/kAV600Aw==');
Candle := DTMFromString('m/AEAAHick2BgYOAAYn4GCOCDsnmAmBUqxgzE3FB1LEDMCcTsQMwLxFxQMVaoOAcShpkhBeWDzJAEYhUg1oFiJai8OhBrALEaVF4R6hYGqHuYoPbA7BUFYhEojo6NZ3ANcMWLk1MzGDKz8xhqG5oZ0jNzGLJzCzDUhIZFgsVT07MYEpPTGIJDwhkKi8sYdIF20BIz0hjjAgDyuSAf');
LampM := DTMFromString('mvQEAAHictc1PCwFRFAXwMyIpsvJpZkohK0KpUSYxmBiSUljMRkpRJFG+piz8Kzlv5i4tefXr3Xfv6b4UgK0GrGmlBfVBHOksM2VBS7GRzE5mezpJXs1DFKMExUWU3vzvheAOy/tJN7qKC93pIX1VR5h1xwNYdgNm3UTTsVEoF6FndBhpA9l8Dv2Ri1K1gnavg8F4CG/hYerN0GK26zqYzCd+xrRqfl71ktz9a9offD0fiKYxMw==');
End;
procedure Mordaut_FreeDTMs;
Begin
FreeDTM(Scimitar);
FreeDTM(LongSword);
FreeDTM(BattleAxe);
FreeDTM(Mace);
FreeDTM(Necklace);
FreeDTM(Tiara);
FreeDTM(HolyS);
FreeDTM(Ring);
FreeDTM(PlateB);
FreeDTM(Bar);
FreeDTM(Ore);
FreeDTM(Pick);
FreeDTM(Arrows);
FreeDTM(Bow);
FreeDTM(Crossbow);
FreeDTM(ArrowT);
FreeDTM(RangedT);
FreeDTM(ArcherT);
FreeDTM(Beer);
FreeDTM(Tea);
FreeDTM(Drink);
FreeDTM(ThirstyT);
FreeDTM(ThirstT);
FreeDTM(DehydratedT);
FreeDTM(HolySB);
FreeDTM(NecklaceB);
FreeDTM(RingB);
FreeDTM(ShinyT);
FreeDTM(JewelleryT);
FreeDTM(BanglesT);
FreeDTM(Fish);
FreeDTM(Harpoon);
FreeDTM(FishingT);
FreeDTM(FishT);
FreeDTM(Candle);
FreeDTM(LampM);
End;
Procedure Mordaut_Initiate;
var
DialogueCount : Integer;
Begin
A := False;
B := False;
C := False;
Item := 'none';
Writeln('We started Mordaut Exam Random Event!');
MakeCompass('n');
SetAngle(SRL_Angle_Low);
DialogueCount := 0;
Repeat
ClickToContinue;
Wait(1200 + Random(50));
Inc(DialogueCount);
Until DialogueCount = 4;
End;
Function Mordaut_QuestionType : String;
Begin
if FindColorTolerance(dx, dy, 13226706, 245, 31, 309, 42, 15) then
begin
Repeat
Writeln('We are to solve a big puzzle');
if FindDTM(ArrowT, dx, dy, MSX1, MSY1, MSX2, MSY2) or FindDTM(RangedT, dx, dy, MSX1, MSY1, MSX2, MSY2)or FindDTM(ArcherT, dx, dy, MSX1, MSY1, MSX2, MSY2) then
begin
Item := 'ranged';
Writeln('We found item type ' + Item + '!');
end;
if FindDTM(ThirstyT, dx, dy, MSX1, MSY1, MSX2, MSY2) or FindDTM(ThirstT, dx, dy, MSX1, MSY1, MSX2, MSY2) or FindDTM(DehydratedT, dx, dy, MSX1, MSY1, MSX2, MSY2) then
begin
Item := 'drinks';
Writeln('We found item type ' + Item + '!');
end;
if FindDTM(ShinyT, dx, dy, MSX1, MSY1, MSX2, MSY2) or FindDTM(JewelleryT, dx, dy, MSX1, MSY1, MSX2, MSY2) or FindDTM(BanglesT, dx, dy, MSX1, MSY1, MSX2, MSY2) then
begin
Item := 'jewellery';
Writeln('We found item type ' + Item + '!');
end;
if FindDTM(FishingT, dx, dy, MSX1, MSY1, MSX2, MSY2) or FindDTM(FishT, dx, dy, MSX1, MSY1, MSX2, MSY2) then
begin
Item := 'fishing';
Writeln('We found item type ' + Item + '!');
end;
until (Item <> 'none') or (i >= 10000);
Result := 'Big';
end else
begin
Writeln('We are to solve a small puzzle');
repeat
if FindDTMRotated(Scimitar, dx, dy, 41, 28, 482, 164, -Pi, Pi, Pi/30, aFound) or FindDTMRotated(LongSword, dx, dy, 41, 28, 482, 164, -Pi, Pi, Pi/30, aFound) or FindDTMRotated(BattleAxe, dx, dy, 41, 28, 482, 164, -Pi, Pi, Pi/30, aFound) then
Item := 'mweapon';
if FindDTMRotated(Necklace, dx, dy, 41, 28, 482, 164, -Pi, Pi, Pi/30, aFound) or FindDTMRotated(Tiara, dx, dy, 41, 28, 482, 164, -Pi, Pi, Pi/30, aFound) or FindDTMRotated(HolyS, dx, dy, 41, 28, 482, 164, -Pi, Pi, Pi/30, aFound) then
Item := 'jewelry';
if FindDTMRotated(PlateB, dx, dy, 41, 28, 482, 164, -Pi, Pi, Pi/30, aFound) or FindDTMRotated(Bar, dx, dy, 41, 28, 482, 164, -Pi, Pi, Pi/30, aFound) or FindDTMRotated(Ore, dx, dy, 41, 28, 482, 164, -Pi, Pi, Pi/30, aFound) then
Item := 'smithing';
if FindDTMRotated(Candle, dx, dy, 41, 28, 482, 164, -Pi, Pi, Pi/30, aFound) then
Item := 'fire';
Inc(i);
until (Item <> 'none') or (i >= 10000);
Result := 'Small';
end;
End;
procedure Mordaut_BigPuzzle;
Begin
case Item of
'ranged':
begin
Writeln('We must choose three ranged items!');
repeat
if (A = False) then
begin
if FindDTMRotated(Arrows, dx, dy, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found some arrows!');
Mouse(dx, dy, 3, 3, True);
A := True;
i := 0;
end;
end;
if (B = False) then
begin
if FindDTMRotated(Bow, dx, dy, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a bow!');
Mouse(dx, dy, 3, 3, True);
B := True;
i := 0;
end;
end;
if (C = False) then
begin
if FindDTMRotated(Crossbow, dx, dy, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a crossbow!');
Mouse(dx, dy, 3, 3, True);
C := True;
i := 0;
end;
end;
Inc(i);
until ((A = True) and (B = True) and (C = True)) or (i >= 100000);
end;
'drinks':
begin
Writeln('We must choose three ranged items!');
repeat
if (A = False) then
begin
if FindDTMRotated(Beer, dx, dy, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a beer!');
Mouse(dx, dy, 3, 3, True);
A := True;
i := 0;
end;
end;
if (B = False) then
begin
if FindDTMRotated(Tea, dx, dy, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found some tea!');
Mouse(dx, dy, 3, 3, True);
B := True;
i := 0;
end;
end;
if (C = False) then
begin
if FindDTMRotated(Drink, dx, dy, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found alcohol!');
Mouse(dx, dy, 3, 3, True);
C := True;
i := 0;
end;
end;
Inc(i);
until ((A = True) and (B = True) and (C = True)) or (i >= 100000);
end;
'jewellery':
begin
Writeln('We must choose three jewellery items!');
repeat
if (A = False) then
begin
if FindDTMRotated(HolySB, dx, dy, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a holy symbol!');
Mouse(dx, dy, 3, 3, True);
A := True;
i := 0;
end;
end;
if (B = False) then
begin
if FindDTMRotated(NecklaceB, dx, dy, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a necklace!');
Mouse(dx, dy, 3, 3, True);
B := True;
i := 0;
end;
end;
if (C = False) then
begin
if FindDTMRotated(RingB, dx, dy, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a ring!');
Mouse(dx, dy, 3, 3, True);
C := True;
i := 0;
end;
end;
Inc(i);
until ((A = True) and (B = True) and (C = True)) or (i >= 100000);
end;
'fishing':
begin
Writeln('We must choose three fishing items!');
repeat
if (A = False) then
begin
if FindDTMRotated(Fish, dx, dy, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a fish!');
Mouse(dx, dy, 3, 3, True);
A := True;
i := 0;
end;
end;
if (B = False) then
begin
if FindDTMRotated(Fish, dx, dy, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a fish!');
Mouse(dx, dy, 3, 3, True);
B := True;
i := 0;
end;
end;
if (C = False) then
begin
if FindDTMRotated(Harpoon, dx, dy, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a harpoon!');
Mouse(dx, dy, 3, 3, True);
C := True;
i := 0;
end;
end;
Inc(i);
until ((A = True) and (B = True) and (C = True)) or (i >= 100000);
end;
end;
i := 0;
A := False;
B := False;
C := False;
Item := 'none';
Mouse(430, 272, 3, 3, True);
ClickToContinue;
Wait(1200 + Random(50));
ClickToContinue;
Wait(1200 + Random(50));
End;
procedure Mordaut_SmallPuzzle;
var
DialogueCount : Integer;
Begin
case Item of
'mweapon':
begin
Writeln('We must do choose a Melee Weapon!');
repeat
if FindDTMRotated(Mace, dx, dy, 41, 164, 482, 303, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a Mace!');
Mouse(dx, dy, 3, 3, Mouse_Left);
Item := 'none';
end;
Inc(i);
until (Item = 'none') or (i >= 10000);
end;
'jewellery':
begin
Writeln('We must do choose a piece of Jewellery!');
repeat
if FindDTMRotated(Ring, dx, dy, 41, 164, 482, 303, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a Ring!');
Mouse(dx, dy, 3, 3, Mouse_Left);
Item := 'none';
end;
Inc(i);
until (Item = 'none') or (i >= 10000);
end;
'smithing':
begin
Writeln('We must do choose a smithing-related item!');
repeat
if FindDTMRotated(Pick, dx, dy, 41, 164, 482, 303, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a Pick!');
Mouse(dx, dy, 3, 3, Mouse_Left);
Item := 'none';
end;
Inc(i);
until (Item = 'none') or (i >= 10000);
end;
'fire':
begin
Writeln('We must do choose a fire item!');
repeat
if FindDTMRotated(LampM, dx, dy, 41, 164, 482, 303, -Pi, Pi, Pi/30, aFound) then
begin
Writeln('We found a Lamp!');
Mouse(dx, dy, 3, 3, Mouse_Left);
Item := 'none';
end;
Inc(i);
until (Item = 'none') or (i >= 10000);
end;
end;
Repeat
ClickToContinue;
Wait(1200 + Random(50));
Inc(DialogueCount);
Until DialogueCount = 4;
End;
procedure Mordaut_Solve; //DExam V0.8 Missing 50-65% of solutions and it is a bit chaotic, feel free to try and go through this if you want
Begin
Mordaut_LoadDTMs;
Mordaut_Initiate;
Repeat
case Mordaut_QuestionType of
'Big' : Mordaut_BigPuzzle;
'Small' : Mordaut_SmallPuzzle;
end;
until (TabExists(tab_Magic));
Mordaut_FreeDTMs;
end;
{$IFDEF TEST}
begin
clearDebug();
activateClient();
setupSRL();
Mordaut_Solve();
end.
{$ENDIF}Mime
Program Mime;
(*
Mime
====
Written by: DemiseScythe/Dynamite
Stores all the routines to solve the Mime random.
*)
{$DEFINE TEST} // Uncomment to test separately from the SRL include
{$i srl/srl.simba}
var //Integers with T at the end are meant to read/detect Text.
LaughT, ThinkT, GlassBT, ClimbT, DanceT, CryT, GlassWT, LeanT, dx, dy: Integer; //If you can read the text otherwise, I'll be good, else these work.
Laugh, Think, GlassB, Climb, Dance, Cry, GlassW, Lean, Mark, i: Integer; //This group are frames of each emote, aimed to be the most unique frame.
Emote: String; //Holds value of current emote.
aFound: Extended;
procedure Mime_LoadDTMs;
Begin
LaughT := DTMFromString('mPwEAAHic42dgYMgE4jQozgLibCDOA+JCKC4G4gIgLkPCVVDcw8jA0MmIoPuBuBtJbAIQTwLiNiDuAuJeIO6Dqjm9ayZDW9t6OAYBZD4+zA9USy5mpACjAQAJRihw');
ThinkT := DTMFromString('mKgEAAHic42NgYNgNxDuBeBsUbwbiTVC8BohXQ/EKIF4HxEehuIeRgaEfiPuAuBuIu4C4HYh7kcQ6gLgNCYPEb58EmQTkt60nCfMD9YAwK4mYkUyMCgC56SkB');
GlassBT := DTMFromString('mIgMAAHiczc3fCgFREMfxc7SllOwDEBfIBcpLHn/W8hp75zk8g7eQiFK+m99hbsiVdurTb2bOqRk650b+aYC++jGmmGGi7KGDNromUzRNNlA3mcCjhrt7u+GCK844ykn7Nf+XkmOrPu7LeYOVzBG0s/v8wxxlJhfKzLzHe0EO+8KFsHsp69v8Ly3uVpGvqN/qASt6Y7Y=');
ClimbT := DTMFromString('maQEAAHicrcvLCYAwEATQSQViwyoq8RcV9WgRtmAPNuQE5hAinnTgsewOmwIoDJBRTiXVVJGlhnoaZKYpsNCmzu+t/joapROn/1XTRd117rD2gE84Y293L2H3lfnBIzd17CxD');
DanceT := DTMFromString('m0gEAAHicE2NgYMgG4lwonYGEU4E4CYpjoTgKiKuBOAwJRwJxCRAXAnEBEBdD1WxlZGDYAcSboBjG3w7FW6B4IxCvh7JB9GYg3oakDqZ2E5R9fOsMBhBoa1sPx+h8cjA/0AxaYEYaYewAAHufPNU=');
CryT := DTMFromString('maQEAAHicrctbCoAgEIVhXUG0affReySoXbH7EtpQv6QQ2GMDH3PgzJRCCI8BPSbM2HBix4oFFhp11MDAhV/5cDCwr91hhI853LWx11HI11EJpXQmTcpfN6krfiB/kM0NSHMwWQ==');
GlassWT := DTMFromString('mvQEAAHictcpPCkBAFIDx5wRWNgjFgohySAdxgZE/cQF3cByfGjVhYcGrX72Z7zkiElkiPjy4CBAi1hItRY4CGUpUhtowYcaIDj0UFt3O96D38/7aldG3tZWmUTfHPP2/6Tbta9YPHmcHorE03g==');
LeanT := DTMFromString('mEQIAAHicvcxNCoJQFIbh4woauzxBULCpkEGCDpwJBoGhi1Dyd9IeWpKvcK9chGbZgQe+88OxReRiiYRKhCtuiJEgRY4CdzwMJZ6ocUYAHx5cOMqADiNemDGhV/2o9jrrXWvkbpf1nZ593pVkWbNZy+x/4cTPo1l/8LUWrppJyA==');
Laugh := DTMFromString('mzgIAAHiczc7PSkJBFMfx4xP0Di4D4YIohhAtRPAlWqggLVpUtIk2IWgJLUQFcaELWwgiJGJI+S+Va4qCpNVCepe+Xs4NW7V14MOc3wxz5jhFZOIQmcLEAkt84kvrGYbo4gUt3Yeqhz46aOMZY7xp36n2mGk90b9MPdvsr7hnllskkMId4rjGJS5whnPNV7hBGnmUUUUDfYwxQAuPeEABGZziBDFEEcExwggd+mT9vpSnWk0qpaKUclkJHLgtQb/Hurdtss3OPsP1y+PaF7/b+JO339STMTHbHZmPRvK9+pBusylHXsOyxyy7wLEj/l8/f8hS7Q==');
Think := DTMFromString('mOwIAAHicvc3BSgJRFMbx4xP4AD5BojgwGKNCJEgQtA+ihbQQQcFa1LJNGyEI27h24RPYIsLAQSVnIGWcxkXREPQk/mc4uHQ5F358595zDycjIuuUiIOZWuJD3wJ84xd/+Feh9j4xxURnPfhYaW7wpffof5d9c9h4xRuGeMYTenjEA+5xhw5ucI02mrhCCw2t6+ocF+jj0spJxTTEMvJSzGfjjJweWXJSKYq3cGQ+Hsd1rWTuRP2zallKhYMdd3Arrm1LGGzkZ+3L+8sonjs+NOJMsy8pqQTtOVvHFkJ+');
GlassB := DTMFromString('mvQEAAHictcwxCwFxHMbx370Ck9dgU/+61OnKopQ3QiaTDJJ4BxYTNxlMBouNBYPOKXFOly6UDFZl803XlTLyq0/9nnp64iKy1UQc2FhihmmYN3DhYQ8fd5zwwBNHnHHFDQHa7HZgYYARJhhjiD66qKGBJlrhX0cF5VARBZRUQvIZQwyVjJi6+sg5MxXJpvW39Xwhru3IqleVy8GXYOdFnRi7v6b9wdd7AVVTNbI=');
Climb := DTMFromString('mEQIAAHicvc3PSkJhEIbx91xB664hPCCKopiCKOI/QiSoVbUQ6ibOQlsIBm5qIQiC23In5D4UhRAlDREFvROfY1/gxmUN/Bhm5oU5lfRlSZ8YYYgB+vgw+4n1k/nGDGMsTXZsdgussMYGW2OOKRz+VPCEF7Twii46aOMZj3jAvVHCLa5xgSySyOESd8ijgJuwrUwspFQkoETYr5DXVsA+U8Tv3XNn9+Zyc4fZ3z7oveut1VS97KhRqyofDSrq86iYONdVOq4T/vw16x8crR0M3TfR');
Dance := DTMFromString('mEQIAAHicvc09C0FxFMfx4xWYvQSLh7opuqWklPI2pEQpT0VY5CVYLG4m12wz6CLKIIpFiclE3oHvvf0HlJFTn+H3O6eOR0RWLpEZFlhijqmywwZbrD92lsoXHHHGAVfccMdD6fKnhwFGGGMCE0MYaKOl1FFGAVnUUEUJTXVjd0XkkEFaD4iuBSUc9L157VIxXZLRsCT0kET8XkenUZNKPut09i4e0eS0PzjZZmfT6MvassTNn19z/cHXeQKKJzq4');
Cry := DTMFromString('mUAIAAHicvc3PCgFRFAbwM0/gBbwAmahpMpOykvIKVsrCxizIvyKUhQWlxMbG0s7GVvInsrBgohiykAfx3XEoG8u59av73fN1j5uITIloAXNYwga2cIYjHKR3Zw8n2PF8zfc7PODJ9wv3b9wXf1hw5dzCzhXMYAIj6EIHBpzHMIUSFKECBchCGWqc85BjGZ6nwYAUiwd9FFICpAXkr1hYo4iuUDSk2lmVvT/vn5nIut9jE2/Napmsg0nDfo+MZILajbrdEURfdFzY6STJYf/OC33rP5A=');
GlassW := DTMFromString('mEQIAAHicvc3NCgFxFAXwM09g7REkk4mUaWKjlHcQC4qSCFE2kiVLjZXiBTwCiilZYHxENjYWNp7BmfFXUpbc+nXv6Xa7TgAbCZjSjBbSM1sOtKMlnelC8zcG3YUbXWlLe8G6PYnbDv8YNKIujcWsU5XKH71EecpQjopUEbsCZSlNSYpTihIhGZpfQVCREQsH7R6Q3Yiofju/WFn1uhDyeTDo6dB7fbTqNbSbDXtnWQ6rWEwmOJumnaNaAMfVGg7++TXpD77WA9kcPi4=');
Lean := DTMFromString('mUAIAAHicvc0/S0JRGMfxx1fQG2gT2pJABLuBEYQQNDo4CLroYOCfhrYLQYMKzoJuuuoiSJa6aAT9weGqQ2ii6BK4CL2BvvdwbqOjBz48v3P4HZ5DEflyiXQxwDN6Or9igm9YGOIDb5r9Zv9d4gcbbPGLBVaYY607c93Ps/MRLTTRQA1llFBEATk8wMQdskjpeYu0zhncIIkE4ggjgihihkf8J8fiOXKr6WRb8MynTK2R9J/a/3fHVcCvXJ56lXqtKoV7UwaVrLx0OjJ+/5TZaCyh4LlcXxiqe8DOfXLt2a7zB2AORbc=');
End;
procedure Mime_FreeDTMs;
Begin
FreeDTM(LaughT);
FreeDTM(ThinkT);
FreeDTM(GlassBT);
FreeDTM(ClimbT);
FreeDTM(DanceT);
FreeDTM(CryT);
FreeDTM(GlassWT);
FreeDTM(LeanT);
FreeDTM(Laugh);
FreeDTM(Think);
FreeDTM(GlassB);
FreeDTM(Climb);
FreeDTM(Dance);
FreeDTM(Cry);
FreeDTM(GlassW);
FreeDTM(Lean);
End;
Procedure Mime_Initiate;
Begin
Emote := 'none';
Writeln('We started Mime Random Event');
ClickToContinue;
MakeCompass('n');
SetAngle(SRL_Angle_Low);
MarkTime(Mark);
End;
procedure Mime_EmoteType;
Begin
repeat //Loops until it finds one of these emotes. It rotates throught he DTMs until it finds a match. If it doesnt find one it might
if FindDTMRotated(Laugh, dx, dy, 375, 34, 517, 220, -Pi/4, Pi/4, Pi/30, aFound) then //due to the mime doing emote in a different angle
Emote := 'laugh'; //or because it missed the frame due to this loop by
if FindDTMRotated(Think, dx, dy, 375, 34, 517, 220, -Pi/4, Pi/4, Pi/30, aFound) then //pure chance, this method is however effective and
Emote := 'think'; //if it doesnt find a emote, this loop will stall until
if FindDTMRotated(GlassB, dx, dy, 375, 34, 517, 220, -Pi/4, Pi/4, Pi/30, aFound) then //next emote giving it a chance to recognize the next one
Emote := 'glassb'; //not doing emotes is not a penalty in this random, only
if FindDTMRotated(Climb, dx, dy, 375, 34, 517, 220, -Pi/4, Pi/4, Pi/30, aFound) then //doing the wrong emote is.
Emote := 'climb';
if FindDTMRotated(Dance, dx, dy, 375, 34, 517, 220, -Pi/4, Pi/4, Pi/30, aFound) then
Emote := 'dance';
if FindDTMRotated(Cry, dx, dy, 375, 34, 517, 220, -Pi/4, Pi/4, Pi/30, aFound) then
Emote := 'cry';
if FindDTMRotated(GlassW, dx, dy, 375, 34, 517, 220, -Pi/4, Pi/4, Pi/30, aFound) then
Emote := 'glassw';
if FindDTMRotated(Lean, dx, dy, 375, 34, 517, 220, -Pi/4, Pi/4, Pi/30, aFound) then
Emote := 'lean';
until (Emote <> 'none') or (TimeFromMark(Mark) >= 600000);
Writeln('We found the ' + Emote + ' emote!');
End;
Procedure Mime_EmoteAction;
Begin
repeat //This loop clicks on the text matching the detected emote above and resets the value of the Emote string.
case Emote of
'laugh':
begin
Writeln('We must do laugh!');
Wait(6500 + Random(100)); //Waits for the text to appear
if FindDTM(LaughT, dx, dy, 7, 343, 513, 471) then //Finds DTM of the text and clicks on it
Mouse(dx, dy, 3, 3, True);
Emote := 'none'; //Resets the value of Emote, allows loop to break.
end;
'think':
begin
Writeln('We must do think!');
Wait(6500 + Random(100));
if FindDTM(ThinkT, dx, dy, 7, 343, 513, 471) then
Mouse(dx, dy, 3, 3, True);
Emote := 'none';
end;
'glassb':
begin
Writeln('We must do glass box!');
Wait(6500 + Random(100));
if FindDTM(GlassBT, dx, dy, 7, 343, 513, 471) then
Mouse(dx, dy, 3, 3, True);
Emote := 'none';
end;
'climb':
begin
Writeln('We must do climb rope!');
Wait(6500 + Random(100));
if FindDTM(ClimbT, dx, dy, 7, 343, 513, 471) then
Mouse(dx, dy, 3, 3, True);
Emote := 'none';
end;
'dance':
begin
Writeln('We must do dance!');
Wait(6500 + Random(100));
if FindDTM(DanceT, dx, dy, 7, 343, 513, 471) then
Mouse(dx, dy, 3, 3, True);
Emote := 'none';
end;
'cry':
begin
Writeln('We must do cry!');
Wait(6500 + Random(100));
if FindDTM(CryT, dx, dy, 7, 343, 513, 471) then
Mouse(dx, dy, 3, 3, True);
Emote := 'none';
end;
'glassw':
begin
Writeln('We must do glass wall!');
Wait(6500 + Random(100));
if FindDTM(GlassWT, dx, dy, 7, 343, 513, 471) then
Mouse(dx, dy, 3, 3, True);
Emote := 'none';
end;
'lean':
begin
Writeln('We must do lean on air!');
Wait(6500 + Random(100));
if FindDTM(LeanT, dx, dy, 7, 343, 513, 471) then
Mouse(dx, dy, 3, 3, True);
Emote := 'none';
end;
end;
Inc(i);
until (Emote = 'none') or (i >= 10) or (TabExists(tab_Inv));
i := 0;
End;
procedure Mime_Solve;
Begin
Mime_LoadDTMs;
Mime_Initiate;
Repeat
Mime_EmoteType;
Mime_EmoteAction;
until (TabExists(tab_Inv)) or (TimeFromMark(Mark) >= 600000);
if (TimeFromMark(Mark) >= 600000) then
begin //Logs out account if it takes 600000 ms and has not found Inv tab.
Writeln('We failed to solve the Mime random!');
Writeln('Logging out!');
Players[CurrentPlayer].Active := False;
Logout;
end;
Mime_FreeDTMs;
end;
{$IFDEF TEST}
begin
clearDebug();
activateClient();
setupSRL();
Mime_Solve();
end.
{$ENDIF}Program Mime;
(*
Bee Keeper
=======
Written by: DemiseScythe/Dynamite
Stores all the routines to solve the Bee Keeper random.
*)
{$DEFINE TEST} // Uncomment to test separately from the SRL include
{$i srl/srl.simba}
var //Integers with T at the end are meant to read/detect Text.
Top, Middle, DoorA, DoorB, Legs, x, y: Integer;
aFound: Extended;
Found: Boolean;
procedure Bee_LoadDTMs;
Begin
Top := DTMFromString('mzgIAAHiczc5bCwFBFAfw4zv4BF6VJ6UUL0rkBUlWLbFC7qwVbdu633OL7+t/pqO8eTX1a5qZ8z9zfESUgRwkIQpBCIBfzvxugAUlaEIHRvJeg6zkY5CAvGQ0qEIXQhCGCMQhBWVIQwHaMkdR7vmfIczE9Munpi69h0KHimR5PhNaMmNZzpb8VZP6idCk7/m0pcf9pLyeF7pdD7RaOjQ2e2TbE7U3Gwbpukb7/ZIWc5tcd0aOM1VZruGdc9xjs3bVG/fget4H/TbttgvVn3Ed5/iec8fjmryY5R94/sTv9QaeDU9G');
Middle := DTMFromString('mPwEAAHic42dgYPAHYj0g1gFiQyAuBeJCKJ0PxCFAbA3EBlA1rkAcDsSeQHwKii8C8VUoPg/Ex4F4LxDvQcJHgPgKFIPkAnx8GDKSkxmS4+MZgvz9GFwcHcHY3cWZIS8zk6G6rIyhvbGRoaetjaEgO5vBz8uLwdPNDSwuCdRPLmakAKMBANifInU=');
DoorA := DTMFromString('m6wAAAHic42ZgYPCHYh8gDoJiENsSiP2AOA2IrYA4CYgLgDgHiHOhuAiKC4E4FojzgTgRig2MDBhU1VQZtHW0GJSUlcB8CytzhuDwYIa65lqGxLREhsy8TIaK2goGfqB6YjEjCRgJAABdRxIt');
DoorB := DTMFromString('mFQEAAHic42VgYAiAYl8gDgbiSCD2AGJdIC6E4myoGiMg1gPiPCDOBOICKAaxM6Bqi4E4FYijoTgKiJOAOCI8msHM1JwhPTWLISoyliEvt4ghLDSSwdXZnSEzPYchNjqeoaykEiyenZnH4OcTwMAP1EcqZiQDowAAUgwYbQ==');
Legs := DTMFromString('mFQEAAHic42VgYAgAYnsg1gRifSDOhooVAHEylA/C5lB5EJ4ExJOhuBOIO6AYxF8BxXOR2POBOC0pkSE2KpIhMjSUoaywgGFyXy9DR3MTWDwxLpahoriIoSA7GywH4oPUSQL1kYoZycAoAABZQh0s');
End;
procedure Bee_FreeDTMs;
Begin
FreeDTM(Top);
FreeDTM(Middle);
FreeDTM(DoorA);
FreeDTM(DoorB);
FreeDTM(Legs);
End;
Procedure Bee_Initiate;
Begin
Writeln('We started Bee Keeper Random Event');
ClickContinue(true, true);
TypeSend('2');
Wait(700 + Random(100));
ClickContinue(true, true);
End;
procedure Bee_FindAndMove;
Begin
repeat // Will make this a lot more neat when I have time - Boom
if FindDTMRotated(Top, x, y, MSX1, MSY1, 180, MSY2, -Pi/4, Pi/4, Pi/30, aFound) then
begin
DragMouse(x, y, 3, 3, 260, 47, 3, 3);
Writeln('We found the Top!');
Found := true;
end;
until (Found = true);
Found := False;
repeat
if FindDTMRotated(Legs, x, y, MSX1, MSY1, 180, MSY2, -Pi/4, Pi/4, Pi/30, aFound) then
begin
DragMouse(x, y, 3, 3, 260, 205, 3, 3);
Writeln('We found the Legs!');
Found := true;
end;
until (Found = true);
Found := False;
repeat
if FindDTMRotated(DoorA, x, y, MSX1, MSY1, 180, MSY2, -Pi/4, Pi/4, Pi/30, aFound) then
begin
DragMouse(x, y, 3, 3, 260, 152, 3, 3);
Writeln('We found the Door!');
Found := true;
Break;
end;
if FindDTMRotated(DoorB, x, y, MSX1, MSY1, 180, MSY2, -Pi/4, Pi/4, Pi/30, aFound) then
begin
DragMouse(x, y, 3, 3, 260, 152, 3, 3);
Writeln('We found the Door!');
Found := true;
Break;
end;
until (Found = true);
Found := False;
repeat // Middle must be last
if FindDTMRotated(Middle, x, y, MSX1, MSY1, 180, MSY2, -Pi/4, Pi/4, Pi/30, aFound) then
begin
DragMouse(x, y, 3, 3, 259, 100, 2, 2);
Writeln('We found the Middle!');
Found := true;
end;
until (Found = true);
End;
procedure Bee_Build;
Begin
Wait(500 + Random(200));
Mouse(218, 277, 3, 3, Mouse_Left);
End;
procedure Bee_End;
var
DialogueCount : Integer;
Begin
Repeat
ClickToContinue;
Wait(1200 + Random(50));
Inc(DialogueCount);
Until DialogueCount = 5;
End;
procedure Bee_Solve;
Begin
Bee_LoadDTMs;
Bee_Initiate;
Bee_FindAndMove;
Bee_Build;
Bee_End;
Bee_FreeDTMs;
end;
{$IFDEF TEST}
begin
clearDebug();
activateClient();
setupSRL();
Bee_Solve();
end.
{$ENDIF}More will be coming soon :)
-Boom