Nice idea. I think you can make this project much simpler if you create a new bank data type (record) that will store the name/tile/UpText information. This was you can (1) have one function that will open ALL banks, (2) avoid copying and pasting the same code (with 1 or 2 changes) to open different banks, (3) add new banks with 1 line of code, (4) be much simpler/cleaner/easier to maintain.
If you haven't used records before, then it may take a while to get your head around them. Here is a nice tutorial: https://villavu.com/forum/showthread.php?t=113227
Basically you can do this:
Simba Code:
{The bank include}
// Create a record to store bank information
type TBank = record
Name: String;
Tile: TTile;
UpText: TStringArray;
end;
// Create some variables of this new TBank data type
var
Edgeville, Draynor: TBank;
// A method to assign information to a bank variable/instance
procedure TBank.Create(_Name: String; _Tile: TTile; _UpText: TStringArray);
begin
Self.Name := _Name;
Self.Tile := _Tile;
Self.UpText := _UpText;
end;
// A method to assign bank information (name/tile/text) to bank variables (Edgeville/Draynor) using the above method
procedure LoadBanks();
begin
Edgeville.Create('Edgeville', [1234, 1234], 'ank Booth');
Draynor.Create('Draynor Box', [4321, 4321], 'eposit Box');
// etc.
end;
// A type method to open whatever bank is passed to it
function TBank.Open(): Boolean;
var
Bank: TReflectObject;
begin
WriteLn('Walking to ', Self.Name)
Player.BlindWalkMM(Self.Tile, 2);
if Bank.Find(objGame, Self.UpText, 5) then
begin
//etc
end;
Result := Reflect.Bank.IsOpen();
end;
{Inside the users script}
procedure DoBanking();
begin
if Edgeville.Open() then
WriteLn('Opened Edgeville bank');
if Draynor.Open() then
WriteLn('Opened Edgeville bank');
//etc..
end;