barbrady

core.prayer.simba

Apr 30th, 2014
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 15.14 KB | None | 0 0
  1. (*
  2.   File name: Prayer.simba
  3.   Description: Functions and procedure for prayers
  4.   Authors: Officer Barbrady
  5. *)
  6.  
  7. //{$I RSPS/misc/datatypes/integerarrays.Simba}
  8. {^^^^^ same as interarrays.simba in SRL6 ^^^^^^}
  9. //{$I srl-6/lib/utilities/types/integerarrays.Simba}
  10.  
  11.  
  12. type
  13.   TPrayer = record
  14.     name:string;
  15.     level:integer;
  16.     exceptions:TIntegerArray;
  17.   end;
  18.  
  19.   TPrayerArray = array of TPrayer;
  20.  
  21. var
  22.   normals, curses:TPrayerArray;
  23.    {
  24. procedure mouse(ytr, ss:integer);
  25. begin
  26.   // temp added so could be tested as standalone script
  27.   moveMouse(ytr, ss);
  28.   wait(20 + random(25));
  29.   clickMouse(0, 0, 1);
  30.  // writeln('(', ytr, ',',ss,')');
  31. end;  }
  32.  
  33. (*
  34.   Author: Officer Barbrady
  35.   Description: Starts up the prayer type
  36. *)
  37.  
  38. procedure TPrayerArray.Init(book:string);
  39. var
  40.   i:integer;
  41.   names:TStringArray;
  42.   levels:TIntegerArray;
  43.   Exceptions2:T2DIntegerArray;
  44.  
  45. begin
  46.   if (lowercase(book) = 'normal') then
  47.   begin
  48.     names := ['Thick skin', 'Burst of strength', 'Clarity of thought',
  49.     'Sharp eye', 'Mystic Will', 'Rock skin', 'Superhuman strength',
  50.     'Improved reflexes', 'Rapid restore','Rapid heal','Protect item',
  51.     'Hawk eye','Mystic lore','Steel skin','Ultimate strength',
  52.     'Incredible reflexes','Protect from summoning', 'Protect from magic',
  53.     'Protect from missles','Protect from melee','Eagle eye', 'Mystic might',
  54.     'Retribution','Redemption','Smite','Chivarly','Rapid renewal',
  55.     'Piety','Rigour','Augury'];
  56.     levels := [1, 4, 7, 8, 9, 10, 13, 16, 19, 22, 25, 26, 27, 28, 31,
  57.     34, 35, 37, 40, 43, 44, 45, 46, 49, 52, 60, 65, 70, 70, 70];
  58.     Exceptions2 := [
  59.     [5, 13, 25, 27, 28, 29],[3, 4, 6, 11, 12, 14, 20, 21, 25, 27, 28, 29],
  60.     [3, 4, 7, 11, 12, 15, 20, 21, 25, 27, 28, 29],[1, 2, 4, 6, 7, 11, 12, 14, 15, 20, 21, 25, 27, 28, 29],
  61.     [1, 2, 3, 6, 7, 11, 12, 14, 15, 20, 21, 25, 27, 28, 29],[0, 13, 25, 27, 28, 29],
  62.     [1, 3, 4, 11, 12, 14, 20, 21, 25, 27, 28, 29],[2, 3, 4, 11, 12, 15, 20, 21, 25, 27, 28, 29],
  63.     [26],[26],[],[1, 2, 3, 4, 6, 7, 12, 14, 15, 20, 21, 25, 27, 28, 29],
  64.     [1, 2, 3, 4, 6, 7, 11, 14, 15, 20, 21, 25, 27, 28, 29],[0, 5, 25, 27, 28, 29],
  65.     [1, 3, 4, 6, 11, 12, 20, 21, 25, 27, 28, 29],[2, 3, 4, 7, 11, 12, 20, 21, 25, 27, 28, 29],
  66.     [22, 24],[18, 19, 22, 24],[17, 19, 22, 24],[17, 18, 22, 24],[1, 2, 3, 4, 6, 7, 11, 12, 14, 15, 21, 25, 27, 28, 29],
  67.     [1, 2, 3, 4, 6, 7, 11, 12, 14, 15, 20, 25, 27, 28, 29],[17, 18, 19, 23, 24],
  68.     [17, 18, 19, 22, 24],[17, 18, 19, 22, 23],[0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 20, 21, 27, 28, 29],
  69.     [8, 9],[0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 20, 21, 25, 28, 29],
  70.     [0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 20, 21, 25, 27, 29],[0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 20, 21, 25, 27, 28]
  71.     ];
  72.     setLength(self, length(names));
  73.     for i := 0 to high(names) do
  74.     begin
  75.       self[i].name := names[i];
  76.       self[i].level := levels[i];
  77.       self[i].exceptions := Exceptions2[i];
  78.     end;
  79.   end;
  80. end;
  81.  
  82. (*
  83.   Author: Officer Barbrady
  84.   Description: Gets ID of the prayer (more like the index
  85.   in the type, but more easy to refer to it as an ID)
  86. *)
  87.  
  88. function TPrayerArray.getID(name:string):integer;
  89. var
  90.   i:integer;
  91. begin
  92.   for i := 1 to high(self) do
  93.     if (lowercase(self[i - 1].name) = lowercase(name)) then
  94.       exit(i);
  95. end;
  96.  
  97. (*
  98.   Author: Officer Barbrady
  99.   Description: Gets IDs of the prayers (more like the index
  100.   in the type, but more easy to refer to it as an ID)
  101. *)
  102.  
  103. function TPrayerArray.getIDs(names:tstringarray):TIntegerArray;
  104. var
  105.   i:integer;
  106. begin
  107.   setLength(result, length(names));
  108.   for i := 0 to high(names) do
  109.     result[i] := self.getID(names[i]);
  110. end;
  111.  
  112. (*
  113.   Author: Officer Barbrady
  114.   Description: Returns true if 1 prayer cannot be used with another
  115. *)
  116.  
  117. function TPrayerArray.prayerException(prayUse:TIntegerArray;prayerID:Integer):Boolean;
  118. var
  119.   i, l:Integer;
  120. begin
  121.   for i := 0 to high(PrayUse) do
  122.     for l := 0 to high(self[PrayUse[i]].Exceptions) do
  123.       if (prayerID = self[PrayUse[i]].Exceptions[l]) then
  124.         exit(true);
  125.        // writeln('You can not use ' + self[prayerID].name + ' and ' + self[PrayUse[i]].name + ' at the same time!');
  126. end;
  127.  
  128. (*
  129.   Author: Officer Barbrady
  130.   Description: Returns true if 1 prayer cannot be used with another
  131. *)
  132.  
  133. function TPrayerArray.prayerException(prayUse,prayerID:Integer):Boolean; overload;
  134. begin
  135.   result := self.prayerException([prayUse], prayerID);
  136. end;
  137.  
  138. (*
  139.   Author: Officer Barbrady
  140.   Description: Returns true if 1 prayer cannot be used with another
  141. *)
  142.  
  143. function TPrayerArray.prayerException(PrayerList:TStringArray;Prayer:string):Boolean; overload;
  144. begin
  145.   result := self.prayerException(self.getIDs(prayerList), self.getID(prayer));
  146. end;
  147.  
  148. (*
  149.   Author: Officer Barbrady
  150.   Description: Returns true if 1 prayer cannot be used with another
  151. *)
  152.  
  153. function TPrayerArray.prayerException(PrayerList,Prayer:string):Boolean; overload;
  154. begin
  155.   result := self.prayerException([self.getID(prayerList)], self.getID(prayer));
  156. end;
  157.  
  158. (*
  159.   Author: Officer Barbrady
  160.   Description: Gets all the activated prayers
  161. *)
  162.  
  163. function TPrayerArray.getActivatedPrayers():TIntegerarray;
  164. var
  165.   i, k, c, startx, starty, u, e:integer;
  166. begin
  167.   openTab(TAB_PRAYER);
  168.   startx := 568;
  169.   starty := 283;
  170.   for k := 0 to 5 do
  171.     for i := 0 to 4 do
  172.     begin
  173.       c := c + 1;
  174.       if findColorTolerance(u, e, 7185335,
  175.       startx + (i * 39) - 11,
  176.       starty + (k * 37)- 11,
  177.       startx + (i * 39) + 11,
  178.       starty + (k * 37)+ 11,
  179.       7) then
  180.         result.append(c);
  181.     end;
  182. end;
  183.  
  184. (*
  185.   Author: Officer Barbrady
  186.   Description: Gets all the prayers points on screen
  187. *)
  188.  
  189. function TPrayerArray.getPrayerPointArray():TPointarray;
  190. var
  191.   i, k, c, startx, starty:integer;
  192. begin
  193.   startx := 568;
  194.   starty := 283;
  195.   setLength(result, 30);
  196.   for k := 0 to 5 do
  197.     for i := 0 to 4 do
  198.     begin
  199.       result[c] := Point(startx + (i * 39), starty + (k * 37));
  200.       c := c + 1;
  201.     end;
  202. end;
  203.  
  204. (*
  205.   Author: Officer Barbrady
  206.   Description: Gets level required of the prayer
  207. *)
  208.  
  209. function TPrayerArray.getLevel(ID:integer):integer;
  210. begin
  211.   if (ID < length(self)) then
  212.     result := self[ID - 1].level;
  213. end;
  214.  
  215. (*
  216.   Author: Officer Barbrady
  217.   Description: Gets level required of the prayer
  218. *)
  219.  
  220. function TPrayerArray.getLevel(IDs:TIntegerArray):TIntegerArray; overload;
  221. var
  222.   i:integer;
  223. begin
  224.   setLength(result, length(IDs));
  225.   for i := 0 to high(IDs) do
  226.     result[i] := self.getLevel(i);
  227. end;
  228.  
  229. (*
  230.   Author: Officer Barbrady
  231.   Description: Gets level required of the prayer
  232. *)
  233.  
  234. function TPrayerArray.getLevel(name:string):integer; overload;
  235. begin
  236.   result := self.getLevel(self.getID(name));
  237. end;
  238.  
  239. (*
  240.   Author: Officer Barbrady
  241.   Description: Gets level required of the prayer
  242. *)
  243.  
  244. function TPrayerArray.getLevel(names:TStringArray):TIntegerArray; overload;
  245. var
  246.   i:integer;
  247. begin
  248.   setLength(result, length(names));
  249.   for i := 0 to high(names) do
  250.     result[i] := self.getLevel(self.getID(names[i]));
  251. end;
  252.  
  253. (*
  254.   Author: Officer Barbrady
  255.   Description: Gets name of the prayer in the type
  256. *)
  257.  
  258. function TPrayerArray.getName(ID:integer):string;
  259. begin
  260.   if (ID > length(self)) then
  261.     exit('');
  262.   result := self[ID].name;
  263. end;
  264.  
  265. (*
  266.   Author: Officer Barbrady
  267.   Description: Gets IDs of the prayers (more like the index
  268.   in the type, but more easy to refer to it as an ID)
  269. *)
  270.  
  271. function TPrayerArray.getNames(IDs:TIntegerArray):TStringArray;
  272. var
  273.   i:integer;
  274. begin
  275.   for i := 0 to high(IDs) do
  276.     result[i] := self.getName(IDs[i]);
  277. end;
  278.  
  279. (*
  280.   Author: Officer Barbrady
  281.   Description: Gets all a prayers point on screen
  282. *)
  283.  
  284. function TPrayerArray.getPrayerPoint(name:String):TPoint;
  285. var
  286.   i, ID:integer;
  287.   prayerArray:TPointArray;
  288. begin
  289.   prayerArray := self.getPrayerPointArray();
  290.   ID := self.getID(name);
  291.   if (ID <> 0) then
  292.     result := prayerArray[ID - 1];
  293. end;
  294.  
  295. (*
  296.   Author: Officer Barbrady
  297.   Description: Gets all a prayers point on screen
  298. *)
  299.  
  300. function TPrayerArray.getPrayerPoint(ID:integer):TPoint; overload;
  301. var
  302.   i:integer;
  303.   prayerArray:TPointArray;
  304. begin
  305.   prayerArray := self.getPrayerPointArray();
  306.   if (ID > length(prayerArray)) then
  307.     exit(Point(0, 0));
  308.   if (ID <> 0) then
  309.     result := prayerArray[ID - 1];
  310. end;
  311.  
  312. (*
  313.   Author: Officer Barbrady
  314.   Description: Checks if a prayer is on
  315. *)
  316.  
  317. function TPrayerArray.isPrayerOn(ID:integer):boolean;
  318. var
  319.   x, y:integer;
  320.   prayerSpot:TPoint;
  321. begin
  322.   openTab(TAB_PRAYER);
  323.   prayerSpot := self.getPrayerPoint(ID);
  324.   result := findColorTolerance(x, y, 7185335, prayerSpot.x - 11, prayerSpot.y - 11, prayerSpot.x + 11, prayerSpot.y + 11, 7);
  325. end;
  326.  
  327. (*
  328.   Author: Officer Barbrady
  329.   Description: Checks if prayers is on
  330. *)
  331.  
  332. function TPrayerArray.isPrayerOn(IDs:TIntegerArray):boolean; overload;
  333. var
  334.   i, c:integer;
  335. begin
  336.   for i := 0 to high(IDs) do
  337.     if self.isPrayerOn(IDs[i]) then
  338.       c := c + 1;
  339.   result := (c = length(IDs));
  340. end;
  341.  
  342. (*
  343.   Author: Officer Barbrady
  344.   Description: Checks if a prayer is on, accepts name as
  345.   a arguement
  346. *)
  347.  
  348. function TPrayerArray.isPrayerOn(name:string):boolean; overload;
  349. var
  350.   ID:integer;
  351. begin
  352.   ID := self.getID(name);
  353.   if (ID <> 0) then
  354.     result := self.isPrayerOn(ID - 1)
  355. end;
  356.  
  357. (*
  358.   Author: Officer Barbrady
  359.   Description: Checks if a prayer is on, accepts names as
  360.   a arguement
  361. *)
  362.  
  363. function TPrayerArray.isPrayerOn(names:TStringArray):boolean; overload;
  364. var
  365.   IDs:TIntegerArray;
  366. begin
  367.   IDs := self.getIDs(names);
  368.   result := self.isPrayerOn(IDs);
  369. end;
  370.  
  371. (*
  372.   Author: Officer Barbrady
  373.   Description: Activates the prayers, if ignoreOn is true then
  374.   it will click the prayer whether it is on or not otherwise
  375.   it will check if it's on before clicking.
  376. *)
  377.  
  378. procedure TPrayerArray.activatePrayer(IDs:TIntegerarray;ignoreOn:boolean);
  379. var
  380.   p:TPoint;
  381.   i:integer;
  382. begin
  383.   openTab(TAB_PRAYER);
  384.   for i := 0 to high(IDs) do
  385.   begin
  386.     p := getPrayerPoint(IDs[i]);
  387.     if (ignoreOn) then
  388.       mouse(p.x, p.y)
  389.     else
  390.       if (not isPrayerOn(IDs[i])) then
  391.       begin
  392.         mouse(p.x, p.y);
  393.         wait(150 + random(150));
  394.       end;
  395.   end;
  396. end;
  397.  
  398. (*
  399.   Author: Officer Barbrady
  400.   Description: Activates prayer IDs
  401. *)
  402.  
  403. procedure TPrayerArray.activatePrayer(IDs:TIntegerArray); overload;
  404. begin
  405.   self.activatePrayer(IDs, false);
  406. end;
  407.  
  408. (*
  409.   Author: Officer Barbrady
  410.   Description: Activates prayer names
  411. *)
  412.  
  413. procedure TPrayerArray.activatePrayer(names:TStringArray;ignoreOn:boolean); overload;
  414. begin
  415.   self.activatePrayer(self.getIDs(names), ignoreOn);
  416. end;
  417.  
  418. (*
  419.   Author: Officer Barbrady
  420.   Description: Activates prayer names
  421. *)
  422.  
  423. procedure TPrayerArray.activatePrayer(names:TStringArray); overload;
  424. begin
  425.   self.activatePrayer(self.getIDs(names), false);
  426. end;
  427.  
  428. (*
  429.   Author: Officer Barbrady
  430.   Description: Activates prayer ID
  431. *)
  432.  
  433. procedure TPrayerArray.activatePrayer(ID:integer;ignoreOn:boolean); overload;
  434. begin
  435.   self.activatePrayer([ID], ignoreOn);
  436. end;
  437.  
  438. (*
  439.   Author: Officer Barbrady
  440.   Description: Activates prayer ID
  441. *)
  442.  
  443. procedure TPrayerArray.activatePrayer(ID:integer);overload;
  444. begin
  445.   self.activatePrayer([ID], false);
  446. end;
  447.  
  448. (*
  449.   Author: Officer Barbrady
  450.   Description: Activates prayer name
  451. *)
  452.  
  453. procedure TPrayerArray.activatePrayer(name:string;ignoreOn:boolean);overload;
  454. begin
  455.   self.activatePrayer([name], ignoreOn);
  456. end;
  457.  
  458. (*
  459.   Author: Officer Barbrady
  460.   Description: Activates prayer name
  461. *)
  462.  
  463. procedure TPrayerArray.activatePrayer(name:string);overload;
  464. begin
  465.   self.activatePrayer([name], false);
  466. end;
  467.  
  468. (*
  469.   Author: Officer Barbrady
  470.   Description: deActivates the prayers, if ignoreOn is true then
  471.   it will click the prayer whether it is on or not otherwise
  472.   it will check if it's off before clicking.
  473. *)
  474.  
  475. procedure TPrayerArray.deActivatePrayer(IDs:TIntegerarray;ignoreOn:boolean);
  476. var
  477.   p:TPoint;
  478.   i:integer;
  479. begin
  480.   openTab(TAB_PRAYER);
  481.   for i := 0 to high(IDs) do
  482.   begin
  483.     p := getPrayerPoint(IDs[i]);
  484.     if (ignoreOn) then
  485.       mouse(p.x, p.y)
  486.     else
  487.       if (isPrayerOn(IDs[i])) then
  488.       begin
  489.         mouse(p.x, p.y);
  490.         wait(150 + random(150));
  491.       end;
  492.   end;
  493. end;
  494.  
  495. (*
  496.   Author: Officer Barbrady
  497.   Description: deactivates prayer IDs
  498. *)
  499.  
  500. procedure TPrayerArray.deActivatePrayer(IDs:TIntegerArray); overload;
  501. begin
  502.   self.deActivatePrayer(IDs, false);
  503. end;
  504.  
  505. (*
  506.   Author: Officer Barbrady
  507.   Description: deactivates prayer names
  508. *)
  509.  
  510. procedure TPrayerArray.deActivatePrayer(names:TStringArray;ignoreOn:boolean); overload;
  511. begin
  512.   self.deActivatePrayer(self.getIDs(names), ignoreOn);
  513. end;
  514.  
  515. (*
  516.   Author: Officer Barbrady
  517.   Description: deactivates prayer names
  518. *)
  519.  
  520. procedure TPrayerArray.deActivatePrayer(names:TStringArray); overload;
  521. begin
  522.   self.deActivatePrayer(self.getIDs(names), false);
  523. end;
  524.  
  525. (*
  526.   Author: Officer Barbrady
  527.   Description: deactivates prayer ID
  528. *)
  529.  
  530. procedure TPrayerArray.deActivatePrayer(ID:integer;ignoreOn:boolean); overload;
  531. begin
  532.   self.deActivatePrayer([ID], ignoreOn);
  533. end;
  534.  
  535. (*
  536.   Author: Officer Barbrady
  537.   Description: deactivates prayer ID
  538. *)
  539.  
  540. procedure TPrayerArray.deActivatePrayer(ID:integer);overload;
  541. begin
  542.   self.deActivatePrayer([ID], false);
  543. end;
  544.  
  545. (*
  546.   Author: Officer Barbrady
  547.   Description: deactivates prayer name
  548. *)
  549.  
  550. procedure TPrayerArray.deActivatePrayer(name:string;ignoreOn:boolean);overload;
  551. begin
  552.   self.deActivatePrayer([name], ignoreOn);
  553. end;
  554.  
  555. (*
  556.   Author: Officer Barbrady
  557.   Description: deactivates prayer name
  558. *)
  559.  
  560. procedure TPrayerArray.deActivatePrayer(name:string);overload;
  561. begin
  562.   self.deActivatePrayer([name], false);
  563. end;
  564.  
  565. procedure TPrayerArray.deActivateAll();
  566. var
  567.   activated:TIntegerArray;
  568. begin
  569.   openTab(TAB_PRAYER);
  570.   activated := self.getActivatedPrayers();
  571.   self.deActivatePrayer(activated);
  572. end;
  573.  
  574. (*
  575.   Author: Officer Barbrady
  576.   Description: Gets all the activated prayers in string form
  577. *)
  578.  
  579. function TPrayerArray.getActivatedPrayersString():TStringArray;
  580. var
  581.   activatedPrayers:TIntegerArray;
  582.   i:integer;
  583. begin
  584.   openTab(TAB_PRAYER);
  585.   activatedPrayers := self.getActivatedPrayers();
  586.   setLength(result, length(activatedPrayers));
  587.   for i := 0 to high(activatedPrayers) do
  588.     result[i] := self[activatedPrayers[i] - 1].name;
  589. end;
  590.  
  591. (*
  592.   Author: Officer Barbrady
  593.   Description: Returns true if you are able to activate a prayer without
  594.   turning another one off
  595. *)
  596.  
  597. function TPrayerArray.canUse(ID:integer):boolean;
  598. var
  599.   activatedPrayers:TIntegerArray;
  600. begin
  601.   openTab(TAB_PRAYER);
  602.   activatedPrayers := self.getActivatedPrayers();
  603.   result := not self.prayerException(activatedPrayers, ID);
  604. end;
  605.  
  606. (*
  607.   Author: Officer Barbrady
  608.   Description: Returns true if you are able to activate a prayer without
  609.   turning another one off (takes string as arguement)
  610. *)
  611.  
  612. function TPrayerArray.canUse(name:string):boolean overload;
  613. var
  614.   activatedPrayers:TIntegerArray;
  615.   i, ID:integer;
  616. begin
  617.    openTab(TAB_PRAYER);
  618.   activatedPrayers := self.getActivatedPrayers();
  619.   ID := self.getID(name);
  620.   if (ID <> 0) then
  621.     result := not self.prayerException(activatedPrayers, ID - 1);
  622. end;
  623.  
  624. function TPrayerArray.getActivatedCount():integer;
  625. begin
  626.   result := length(self.getPrayerPointArray());
  627. end;
Advertisement
Add Comment
Please, Sign In to add comment