D2R-BMBot/Scripts/Town.cs

1510 lines
63 KiB
C#

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using static app.MapAreaStruc;
namespace app
{
public class Town
{
Form1 Form1_0;
public int TownAct = 0;
public bool Towning = true;
public bool ForcedTowning = false;
public bool FastTowning = false;
public bool IsInTown = false;
public bool TPSpawned = false;
public bool UseLastTP = false;
public int ScriptTownAct = 5; //default should be 0
public int TriedToStashCount = 0;
public int TriedToGambleCount = 0;
public int TriedToShopCount = 0;
public int TriedToMercCount = 0;
public int TriedToUseTPCount = 0;
public int CurrentScript = 0;
public int TriedToShopCount2 = 0;
public uint LastUsedTPID = 0;
public int LastUsedTPCount = 0;
public List<uint> IgnoredTPList = new List<uint>();
public List<uint> IgnoredWPList = new List<uint>();
public bool FirstTown = true;
public bool CainNotFoundAct1 = false;
public void SetForm1(Form1 form1_1)
{
Form1_0 = form1_1;
}
public void StopTowningReturn()
{
CurrentScript = 0;
TriedToStashCount = 0;
TriedToGambleCount = 0;
TriedToShopCount = 0;
TriedToShopCount2 = 0;
TriedToMercCount = 0;
TriedToUseTPCount = 0;
Towning = false;
//FastTowning = false;
ForcedTowning = false;
//UseLastTP = true;
if (Form1_0.PublicGame)
{
DateTime StartWaitingChangeArea = DateTime.Now;
while (GetInTown() && (DateTime.Now - StartWaitingChangeArea).TotalSeconds < 2)
{
Form1_0.PlayerScan_0.GetPositions();
Form1_0.overlayForm.UpdateOverlay();
Form1_0.GameStruc_0.CheckChickenGameTime();
Form1_0.ItemsStruc_0.GetItems(false);
}
if ((DateTime.Now - StartWaitingChangeArea).TotalSeconds < 2)
{
Form1_0.WaitDelay(300);
Form1_0.Town_0.SpawnTP();
}
}
}
public void RunTownScript()
{
if (!ShouldBeInTown())
{
return;
}
Form1_0.SetGameStatus("TOWN");
//dead leave game
if (Form1_0.PlayerScan_0.PlayerDead || Form1_0.Potions_0.ForceLeave)
{
Form1_0.Potions_0.ForceLeave = true;
Form1_0.BaalLeech_0.SearchSameGamesAsLastOne = false;
Form1_0.LeaveGame(false);
Form1_0.IncreaseDeadCount();
return;
}
Form1_0.GameStruc_0.CheckChickenGameTime();
//item grab only -> no town
if (Towning && CharConfig.RunItemGrabScriptOnly)
{
StopTowningReturn();
return;
}
if (!GetInTown())
{
Form1_0.SetGameStatus("TOWN-TP TO TOWN");
Form1_0.Potions_0.CheckIfWeUsePotion();
if (FastTowning) UseLastTP = true;
if (FastTowning && !Form1_0.Shop_0.ShouldShop())
{
StopTowningReturn();
return;
}
if (TriedToUseTPCount >= 5)
{
Form1_0.method_1("NO TP FOUND NEAR WHEN TRYING TO TOWN", Color.Red);
Form1_0.LeaveGame(false);
return;
}
if (TPSpawned)
{
//select the spawned TP
if (Form1_0.ObjectsStruc_0.GetObjects("TownPortal", true, IgnoredTPList, 999, CharConfig.PlayerCharName))
//if (Form1_0.ObjectsStruc_0.GetObjects("TownPortal", Form1_0.PlayerScan_0.unitId))
{
if (Form1_0.ObjectsStruc_0.itemx != 0 && Form1_0.ObjectsStruc_0.itemy != 0)
{
//if (Form1_0.Mover_0.MoveToLocation(Form1_0.ObjectsStruc_0.itemx, Form1_0.ObjectsStruc_0.itemy))
//{
Form1_0.method_1("Trying to use TP ID: " + Form1_0.ObjectsStruc_0.ObjectUnitID, Color.Red);
if (LastUsedTPID != Form1_0.ObjectsStruc_0.ObjectUnitID)
{
LastUsedTPID = Form1_0.ObjectsStruc_0.ObjectUnitID;
LastUsedTPCount = 0;
}
else
{
Form1_0.Mover_0.MoveToLocation(Form1_0.ObjectsStruc_0.itemx + (LastUsedTPCount * 2), Form1_0.ObjectsStruc_0.itemy + (LastUsedTPCount * 2));
LastUsedTPCount++;
if (LastUsedTPCount >= 4)
{
IgnoredTPList.Add(LastUsedTPID);
}
}
GetCorpse();
CurrentScript = 0;
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.ObjectsStruc_0.itemx, Form1_0.ObjectsStruc_0.itemy);
Form1_0.KeyMouse_0.PressKeyHold(System.Windows.Forms.Keys.E);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"] - 15);
Form1_0.KeyMouse_0.ReleaseKey(System.Windows.Forms.Keys.E);
Form1_0.WaitDelay(50);
Form1_0.Mover_0.FinishMoving();
//}
}
else
{
TPSpawned = false;
TriedToUseTPCount++;
if (TriedToUseTPCount >= 3) IgnoredTPList.Clear(); //try to clear again the ignored tp list!
}
}
else
{
if (TriedToUseTPCount == 3 || TriedToUseTPCount == 4)
{
Form1_0.method_1("Trying to use Unkown TP ID!", Color.Red);
CurrentScript = 0;
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.PlayerScan_0.xPosFinal - 2, Form1_0.PlayerScan_0.yPosFinal);
Form1_0.KeyMouse_0.PressKeyHold(System.Windows.Forms.Keys.E);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"] - 15);
Form1_0.KeyMouse_0.ReleaseKey(System.Windows.Forms.Keys.E);
Form1_0.WaitDelay(50);
Form1_0.Mover_0.FinishMoving();
TPSpawned = false;
TriedToUseTPCount++;
if (TriedToUseTPCount >= 3) IgnoredTPList.Clear(); //try to clear again the ignored tp list!
}
else
{
TPSpawned = false;
TriedToUseTPCount++;
if (TriedToUseTPCount >= 3) IgnoredTPList.Clear(); //try to clear again the ignored tp list!
}
}
}
else
{
SpawnTP(true);
Form1_0.WaitDelay(20);
}
}
else
{
Form1_0.Battle_0.DoingBattle = false;
Form1_0.Battle_0.ClearingArea = false;
Form1_0.Battle_0.MoveTryCount = 0;
//switch town
if (CurrentScript == 0)
{
if (IsInRightTown())
{
//Grab Corpse
if (Form1_0.ItemsStruc_0.ItemsEquiped <= 2 && FirstTown)
{
//int Tries = 0;
//while (Tries < 5)
//{
//Console.WriteLine("Corpse found method2");
Form1_0.method_1("Grab corpse #3", Color.Red);
Form1_0.WaitDelay(100);
//Clic corpse
FirstTown = false;
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"] - 45, itemScreenPos["y"] - 5);
//Form1_0.WaitDelay(100);
//Tries++;
//}
}
GetCorpse();
CurrentScript++;
}
if (CurrentScript == 0)
{
if (!IsInRightTown())
{
Form1_0.SetGameStatus("TOWN-SWITCH TOWN");
GoToWPArea();
}
}
}
bool AlreadyGoneToShop = false;
//ID Items
if (CurrentScript == 1)
{
if (!Form1_0.InventoryStruc_0.HasUnidItemInInventory() || FastTowning)
{
CurrentScript++;
}
if (CurrentScript == 1)
{
if (Form1_0.InventoryStruc_0.HasUnidItemInInventory() && !FastTowning)
{
if (!CharConfig.IDAtShop)
{
Form1_0.SetGameStatus("TOWN-CAIN");
MoveToCain();
}
else
{
AlreadyGoneToShop = true;
Form1_0.SetGameStatus("TOWN-SHOP (ID)");
MoveToStore();
}
}
}
}
//relive merc
if (CurrentScript == 2)
{
bool ShouldReliveMerc = false;
if (CharConfig.UsingMerc)
{
Form1_0.MercStruc_0.GetMercInfos();
ShouldReliveMerc = !Form1_0.MercStruc_0.MercAlive;
}
if (!ShouldReliveMerc || TriedToMercCount >= 3
|| (Form1_0.PlayerScan_0.PlayerGoldInventory + Form1_0.PlayerScan_0.PlayerGoldInStash) < 75000
|| FastTowning)
{
CurrentScript++;
}
if (CurrentScript == 2)
{
if (ShouldReliveMerc && TriedToMercCount < 3
&& (Form1_0.PlayerScan_0.PlayerGoldInventory + Form1_0.PlayerScan_0.PlayerGoldInStash) >= 75000
&& !FastTowning)
{
Form1_0.SetGameStatus("TOWN-MERC");
MoveToMerc();
TriedToMercCount++;
}
}
}
//stash items
if (CurrentScript == 3)
{
if (Form1_0.InventoryStruc_0.HasUnidItemInInventory() && !FastTowning)
{
//return to identify script, still contain unid item
CurrentScript = 1;
}
if ((!Form1_0.InventoryStruc_0.ContainStashItemInInventory() && (Form1_0.PlayerScan_0.PlayerGoldInventory < 35000))
|| TriedToStashCount >= 6 || FastTowning)
{
CurrentScript++;
}
if (CurrentScript == 3)
{
if ((Form1_0.InventoryStruc_0.ContainStashItemInInventory() || (Form1_0.PlayerScan_0.PlayerGoldInventory >= 35000))
&& TriedToStashCount < 6 && !FastTowning)
{
string DescTxt = "";
if (Form1_0.InventoryStruc_0.ContainStashItemInInventory()) DescTxt += " (ITEM)";
if ((Form1_0.PlayerScan_0.PlayerGoldInventory >= 35000)) DescTxt += " (GOLD)";
Form1_0.SetGameStatus("TOWN-STASH" + DescTxt + " (" + (TriedToStashCount + 1) + "/" + 6 + ")");
MoveToStash(true);
TriedToStashCount++;
}
}
}
//gamble
if (CurrentScript == 4)
{
if (!Form1_0.Gamble_0.CanGamble() || TriedToGambleCount >= 3 || FastTowning)
{
CurrentScript++;
}
if (CurrentScript == 4)
{
if (Form1_0.Gamble_0.CanGamble() && TriedToGambleCount < 3 && !FastTowning)
{
TriedToStashCount = 0;
Form1_0.SetGameStatus("TOWN-GAMBLE (" + (TriedToGambleCount + 1) + "/" + 3 + ")");
MoveToGamble();
TriedToGambleCount++;
}
}
}
//buy potions,tp,etc
if (CurrentScript == 5)
{
if (CharConfig.IDAtShop && AlreadyGoneToShop)
{
CurrentScript++;
return;
}
Form1_0.ItemsStruc_0.GetItems(false);
if ((Form1_0.InventoryStruc_0.ContainStashItemInInventory())
&& !FastTowning)
{
//return to stash script, still contain item
TriedToStashCount = 0;
CurrentScript = 3;
}
else
{
if (!Form1_0.Shop_0.ShouldShop() || TriedToShopCount >= 6)
{
//Console.WriteLine("town shop done");
CurrentScript++;
}
if (CurrentScript == 5)
{
if (Form1_0.Shop_0.ShouldShop() && TriedToShopCount < 6)
{
string DescTxt = "";
if (Form1_0.Shop_0.ShopForSellingitem) DescTxt += " (SELL)";
if (Form1_0.Shop_0.ShopForHP) DescTxt += " (HP)";
if (Form1_0.Shop_0.ShopForMana) DescTxt += " (MANA)";
if (Form1_0.Shop_0.ShopForTP) DescTxt += " (TP)";
if (Form1_0.Shop_0.ShopForKey) DescTxt += " (KEYS)";
if (Form1_0.Shop_0.ShopForRegainHP) DescTxt += " (REGEN HP)";
Form1_0.SetGameStatus("TOWN-SHOP" + DescTxt + " (" + (TriedToShopCount + 1) + "/" + 6 + ")");
//Console.WriteLine("town moving to shop");
MoveToStore();
TriedToShopCount++;
//if (FastTowning) TriedToShopCount = 6;
}
}
}
}
//check for repair
if (CurrentScript == 6)
{
if (!Form1_0.Repair_0.GetShouldRepair() || TriedToShopCount >= 12 || FastTowning)
{
CurrentScript++;
}
if (CurrentScript == 6)
{
if (Form1_0.Repair_0.GetShouldRepair() && TriedToShopCount < 12 && !FastTowning)
{
Form1_0.SetGameStatus("TOWN-REPAIR" + " (" + (TriedToShopCount + 1) + "/" + 12 + ")");
MoveToRepair();
TriedToShopCount++;
}
}
}
//end towning script
if (CurrentScript == 7)
{
Form1_0.SetGameStatus("TOWN-END");
if (FastTowning)
{
if (MoveToTPOrWPSpot())
{
GetCorpse();
Form1_0.Stash_0.RunningScriptCount = 0;
StopTowningReturn();
}
}
else
{
GetCorpse();
Form1_0.Stash_0.RunningScriptCount = 0;
StopTowningReturn();
}
}
}
}
public void LoadFirstTownAct()
{
GetInTown();
ScriptTownAct = TownAct;
}
public bool IsInRightTown()
{
if (ScriptTownAct == 0)
{
return true; //perform current town operation
}
if (TownAct != ScriptTownAct)
{
return false;
}
return true;
}
public void GoToWPArea(int SelectActWPIndex = -1, int SelectWPIndex = -1)
{
if (TownAct == 1)
{
Form1_0.PathFinding_0.MoveToObject("WaypointPortal");
Position ThisFinalPosition = Form1_0.MapAreaStruc_0.GetPositionOfObject("object", "WaypointPortal", (int)Enums.Area.RogueEncampment, new List<int>() { });
if (ThisFinalPosition.X != 0 && ThisFinalPosition.Y != 0)
{
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, ThisFinalPosition.X, ThisFinalPosition.Y);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"] - 100, itemScreenPos["y"] - 15);
//Form1_0.Mover_0.FinishMoving();
if (Form1_0.UIScan_0.WaitTilUIOpen("waypointMenu"))
{
if (SelectWPIndex == -1)
{
SelectTownWP();
}
else
{
SelectThisWPIndex(SelectActWPIndex, SelectWPIndex);
}
}
}
else
{
Form1_0.method_1("NO WP FOUND NEAR IN TOWN", Color.OrangeRed);
IgnoredWPList.Clear();
}
}
if (TownAct == 2)
{
Form1_0.PathFinding_0.MoveToObject("Act2Waypoint");
Position ThisFinalPosition = Form1_0.MapAreaStruc_0.GetPositionOfObject("object", "Act2Waypoint", (int)Enums.Area.LutGholein, new List<int>() { });
if (ThisFinalPosition.X != 0 && ThisFinalPosition.Y != 0)
{
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, ThisFinalPosition.X, ThisFinalPosition.Y);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"] - 100, itemScreenPos["y"] - 15);
//Form1_0.Mover_0.FinishMoving();
if (Form1_0.UIScan_0.WaitTilUIOpen("waypointMenu"))
{
if (SelectWPIndex == -1)
{
SelectTownWP();
}
else
{
SelectThisWPIndex(SelectActWPIndex, SelectWPIndex);
}
}
}
else
{
Form1_0.method_1("NO WP FOUND NEAR IN TOWN", Color.OrangeRed);
IgnoredWPList.Clear();
}
}
if (TownAct == 3)
{
Form1_0.PathFinding_0.MoveToObject("Act3TownWaypoint");
Position ThisFinalPosition = Form1_0.MapAreaStruc_0.GetPositionOfObject("object", "Act3TownWaypoint", (int)Enums.Area.KurastDocks, new List<int>() { });
if (ThisFinalPosition.X != 0 && ThisFinalPosition.Y != 0)
{
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, ThisFinalPosition.X, ThisFinalPosition.Y);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"] - 100, itemScreenPos["y"] - 15);
//Form1_0.Mover_0.FinishMoving();
if (Form1_0.UIScan_0.WaitTilUIOpen("waypointMenu"))
{
if (SelectWPIndex == -1)
{
SelectTownWP();
}
else
{
SelectThisWPIndex(SelectActWPIndex, SelectWPIndex);
}
}
}
else
{
Form1_0.method_1("NO WP FOUND NEAR IN TOWN", Color.OrangeRed);
IgnoredWPList.Clear();
}
}
if (TownAct == 4)
{
Form1_0.PathFinding_0.MoveToObject("PandamoniumFortressWaypoint");
Position ThisFinalPosition = Form1_0.MapAreaStruc_0.GetPositionOfObject("object", "PandamoniumFortressWaypoint", (int)Enums.Area.ThePandemoniumFortress, new List<int>() { });
if (ThisFinalPosition.X != 0 && ThisFinalPosition.Y != 0)
{
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, ThisFinalPosition.X, ThisFinalPosition.Y);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"] - 100, itemScreenPos["y"] - 15);
//Form1_0.Mover_0.FinishMoving();
if (Form1_0.UIScan_0.WaitTilUIOpen("waypointMenu"))
{
if (SelectWPIndex == -1)
{
SelectTownWP();
}
else
{
SelectThisWPIndex(SelectActWPIndex, SelectWPIndex);
}
}
}
else
{
Form1_0.method_1("NO WP FOUND NEAR IN TOWN", Color.OrangeRed);
IgnoredWPList.Clear();
}
}
if (TownAct == 5)
{
Form1_0.PathFinding_0.MoveToObject("ExpansionWaypoint");
Position ThisFinalPosition = Form1_0.MapAreaStruc_0.GetPositionOfObject("object", "ExpansionWaypoint", (int) Enums.Area.Harrogath, new List<int>() { });
if (ThisFinalPosition.X != 0 && ThisFinalPosition.Y != 0)
{
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, ThisFinalPosition.X, ThisFinalPosition.Y);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"] - 100, itemScreenPos["y"] - 15);
//Form1_0.Mover_0.FinishMoving();
if (Form1_0.UIScan_0.WaitTilUIOpen("waypointMenu"))
{
if (SelectWPIndex == -1)
{
SelectTownWP();
}
else
{
SelectThisWPIndex(SelectActWPIndex, SelectWPIndex);
}
}
}
else
{
Form1_0.method_1("NO WP FOUND NEAR IN TOWN", Color.OrangeRed);
IgnoredWPList.Clear();
}
}
}
public void SelectThisWPIndex(int ThisActIndexx, int ThisIndexx)
{
//select town
if (ThisActIndexx == 1) Form1_0.KeyMouse_0.MouseClicc(235, 220);
if (ThisActIndexx == 2) Form1_0.KeyMouse_0.MouseClicc(325, 220);
if (ThisActIndexx == 3) Form1_0.KeyMouse_0.MouseClicc(415, 220);
if (ThisActIndexx == 4) Form1_0.KeyMouse_0.MouseClicc(500, 220);
if (ThisActIndexx == 5) Form1_0.KeyMouse_0.MouseClicc(585, 220);
Form1_0.WaitDelay(50);
//select WP from index
Form1_0.KeyMouse_0.MouseClicc(285, 260 + (ThisIndexx * 60));
Form1_0.UIScan_0.WaitTilUIClose("waypointMenu");
Form1_0.UIScan_0.WaitTilUIClose("loading");
Form1_0.WaitDelay(350);
}
public void SelectTownWP()
{
//select town
if (ScriptTownAct == 1) Form1_0.KeyMouse_0.MouseClicc(235, 220);
if (ScriptTownAct == 2) Form1_0.KeyMouse_0.MouseClicc(325, 220);
if (ScriptTownAct == 3) Form1_0.KeyMouse_0.MouseClicc(415, 220);
if (ScriptTownAct == 4) Form1_0.KeyMouse_0.MouseClicc(500, 220);
if (ScriptTownAct == 5) Form1_0.KeyMouse_0.MouseClicc(585, 220);
Form1_0.WaitDelay(50);
Form1_0.KeyMouse_0.MouseClicc(285, 270); //select first wp
Form1_0.UIScan_0.WaitTilUIClose("waypointMenu");
Form1_0.UIScan_0.WaitTilUIClose("loading");
Form1_0.WaitDelay(350);
}
public bool ShouldBeInTown()
{
if (ForcedTowning) return true;
if (GetInTown() && Towning) return true;
bool ShouldBe = false;
if (Form1_0.InventoryStruc_0.HasUnidItemInInventory() && !FastTowning)
{
ShouldBe = true;
}
if (Form1_0.InventoryStruc_0.ContainStashItemInInventory() && !FastTowning)
{
ShouldBe = true;
}
if (Form1_0.Shop_0.ShouldShop())
{
ShouldBe = true;
}
if (Form1_0.Repair_0.GetShouldRepair())
{
ShouldBe = true;
}
if (Form1_0.Gamble_0.CanGamble() && !FastTowning)
{
ShouldBe = true;
}
bool ShouldReliveMerc = false;
if (CharConfig.UsingMerc)
{
Form1_0.MercStruc_0.GetMercInfos();
ShouldReliveMerc = !Form1_0.MercStruc_0.MercAlive;
}
if (ShouldReliveMerc && (Form1_0.PlayerScan_0.PlayerGoldInventory + Form1_0.PlayerScan_0.PlayerGoldInStash) >= 75000)
{
ShouldBe = true;
}
if ((Form1_0.PlayerScan_0.PlayerGoldInventory >= 35000))
{
ShouldBe = true;
}
if (Towning && !ShouldBe)
{
Towning = false;
}
return ShouldBe;
}
public void CheckForNPCValidPos(string ThisNPC)
{
if (Form1_0.NPCStruc_0.GetNPC(ThisNPC))
{
FixNPCPos(Form1_0.NPCStruc_0.xPosFinal, Form1_0.NPCStruc_0.yPosFinal);
}
else
{
Form1_0.method_1(ThisNPC.ToUpper() + " NOT FOUND NEAR", Color.OrangeRed);
if (ThisNPC == "DeckardCain" && TownAct == 1)
{
Form1_0.PathFinding_0.MoveToNPC("Akara");
}
if (ThisNPC == "DeckardCain" && TownAct == 4)
{
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = 5092, Y = 5044 });
}
if (ThisNPC == "Anya" && TownAct == 5)
{
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = 5114, Y = 5059 });
}
else
{
MoveToStash(false);
}
}
}
public void FixNPCPos(int NPCX, int NPCY)
{
//detected bad NPC world position, lets visit stash to fix their pos
if (NPCX == 0 && NPCY == 0)
{
MoveToStash(false);
}
}
public bool MoveToTPOrWPSpot()
{
bool MovedCorrectly = false;
if (TownAct == 1)
{
Position ThisFinalPosition = Form1_0.MapAreaStruc_0.GetPositionOfObject("object", "RogueBonfire", (int) Enums.Area.RogueEncampment, new List<int>() { });
if (ThisFinalPosition.X != 0 && ThisFinalPosition.Y != 0)
{
ThisFinalPosition.X = ThisFinalPosition.X + 5;
ThisFinalPosition.Y = ThisFinalPosition.Y - 5;
Form1_0.PathFinding_0.MoveToThisPos(ThisFinalPosition);
MovedCorrectly = true;
}
else
{
Form1_0.method_1("NO BONFIRE FOUND NEAR IN TOWN", Color.OrangeRed);
}
}
if (TownAct == 2)
{
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = 5150, Y = 5056 });
MovedCorrectly = true;
}
if (TownAct == 3)
{
Position ThisFinalPosition = Form1_0.MapAreaStruc_0.GetPositionOfObject("object", "Bank", (int)Enums.Area.KurastDocks, new List<int>() { });
if (ThisFinalPosition.X != 0 && ThisFinalPosition.Y != 0)
{
Form1_0.PathFinding_0.MoveToThisPos(ThisFinalPosition);
MovedCorrectly = true;
}
else
{
Form1_0.method_1("NO TP/WP SPOT (STASH) FOUND NEAR IN TOWN", Color.OrangeRed);
}
}
if (TownAct == 4)
{
Position ThisFinalPosition = Form1_0.MapAreaStruc_0.GetPositionOfObject("object", "Bank", (int)Enums.Area.ThePandemoniumFortress, new List<int>() { });
if (ThisFinalPosition.X != 0 && ThisFinalPosition.Y != 0)
{
Form1_0.PathFinding_0.MoveToThisPos(ThisFinalPosition);
MovedCorrectly = true;
}
else
{
Form1_0.method_1("NO TP/WP SPOT (STASH) FOUND NEAR IN TOWN", Color.OrangeRed);
}
}
if (TownAct == 5)
{
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = 5103, Y = 5029 });
MovedCorrectly = true;
}
if (MovedCorrectly)
{
if (UseLastTP)
{
if (TPSpawned)
{
//use tp
if (Form1_0.ObjectsStruc_0.GetObjects("TownPortal", true, new List<uint>(), 999, CharConfig.PlayerCharName))
{
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = Form1_0.ObjectsStruc_0.itemx, Y = Form1_0.ObjectsStruc_0.itemy });
Form1_0.WaitDelay(15);
int tries = 0;
while(tries < 5)
{
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.ObjectsStruc_0.itemx, Form1_0.ObjectsStruc_0.itemy);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"] - 15);
Form1_0.WaitDelay(10);
Form1_0.PlayerScan_0.GetPositions();
tries++;
}
Form1_0.WaitDelay(10);
}
else
{
Form1_0.method_1("NO TP FOUND NEAR IN TOWN", Color.OrangeRed);
}
}
/*else
{
//use wp
if (Form1_0.ObjectsStruc_0.GetObjects("PandamoniumFortressWaypoint"))
{
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.ObjectsStruc_0.itemx, Form1_0.ObjectsStruc_0.itemy);
Form1_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"] - 15);
}
else
{
Form1_0.method_1("NO TP FOUND NEAR IN TOWN");
}
}*/
}
}
return MovedCorrectly;
}
public bool IsPosCloseTo(int TX, int TY, int Offset)
{
Form1_0.PlayerScan_0.GetPositions();
if (Form1_0.PlayerScan_0.xPosFinal >= TX - Offset
&& Form1_0.PlayerScan_0.xPosFinal <= TX + Offset
&& Form1_0.PlayerScan_0.yPosFinal >= TY - Offset
&& Form1_0.PlayerScan_0.yPosFinal <= TY + Offset)
{
return true;
}
return false;
}
public void MoveToGamble()
{
bool MovedCorrectly = false;
//MISSING TOWN ACT HERE -> DONT GAMBLE IN OTHER TOWN ACT
if (TownAct != 5)
{
TriedToGambleCount = 15;
return;
}
if (TownAct == 5)
{
CheckForNPCValidPos("Anya");
//Form1_0.PathFinding_0.MoveToNPC("Anya"); //not found
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = 5103, Y = 5115 });
Form1_0.NPCStruc_0.GetNPC("Anya");
MovedCorrectly = true;
}
if (MovedCorrectly)
{
//Clic store
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.NPCStruc_0.xPosFinal, Form1_0.NPCStruc_0.yPosFinal);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"]);
Form1_0.Mover_0.FinishMoving();
if (Form1_0.UIScan_0.WaitTilUIOpen("npcInteract")) //npcShop
{
if (TownAct == 5)
{
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Down); //Anya press down
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Down); //Anya press down
}
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Enter);
Form1_0.WaitDelay(50);
Form1_0.Gamble_0.RunGambleScript();
Form1_0.UIScan_0.CloseUIMenu("npcInteract");
Form1_0.UIScan_0.CloseUIMenu("npcShop");
}
}
}
public void MoveToRepair()
{
bool MovedCorrectly = false;
if (TownAct == 1)
{
//4985,6108 stash
//4954,6095 charsi
Position ThisFinalPosition = Form1_0.MapAreaStruc_0.GetPositionOfObject("object", "Bank", (int) Form1_0.PlayerScan_0.levelNo, new List<int>() { });
CheckForNPCValidPos("Charsi");
//Form1_0.PathFinding_0.MoveToNPC("Charsi"); //not found
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = ThisFinalPosition.X - 31, Y = ThisFinalPosition.Y - 13 });
Form1_0.NPCStruc_0.GetNPC("Charsi");
MovedCorrectly = true;
}
if (TownAct == 2)
{
CheckForNPCValidPos("Fara");
//Form1_0.PathFinding_0.MoveToNPC("Fara"); //not found
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = 5115, Y = 5080 });
Form1_0.NPCStruc_0.GetNPC("Fara");
MovedCorrectly = true;
}
if (TownAct == 3)
{
CheckForNPCValidPos("Hratli");
//Form1_0.PathFinding_0.MoveToNPC("Hratli"); //not found
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = 5219, Y = 5035 });
Form1_0.NPCStruc_0.GetNPC("Hratli");
MovedCorrectly = true;
}
if (TownAct == 4)
{
CheckForNPCValidPos("Halbu");
//Form1_0.PathFinding_0.MoveToNPC("Halbu"); //not found
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = 5085, Y = 5022 });
Form1_0.NPCStruc_0.GetNPC("Halbu");
MovedCorrectly = true;
}
if (TownAct == 5)
{
CheckForNPCValidPos("Larzuk");
//Form1_0.PathFinding_0.MoveToNPC("Larzuk"); //not found
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = 5145, Y = 5041 });
Form1_0.NPCStruc_0.GetNPC("Larzuk");
MovedCorrectly = true;
}
if (MovedCorrectly)
{
//Clic store
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.NPCStruc_0.xPosFinal, Form1_0.NPCStruc_0.yPosFinal);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"]);
Form1_0.Mover_0.FinishMoving();
if (Form1_0.UIScan_0.WaitTilUIOpen("npcInteract")) //npcShop
{
if (TownAct != 4)
{
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Down); //Larzuk press down
}
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Enter);
Form1_0.WaitDelay(50);
Form1_0.Repair_0.RunRepairScript();
Form1_0.UIScan_0.CloseUIMenu("npcInteract");
Form1_0.UIScan_0.CloseUIMenu("npcShop");
}
}
}
public void MoveToStore()
{
bool MovedCorrectly = false;
if (TownAct == 1)
{
CheckForNPCValidPos("Akara");
Form1_0.PathFinding_0.MoveToNPC("Akara");
Form1_0.NPCStruc_0.GetNPC("Akara");
MovedCorrectly = true;
}
if (TownAct == 2)
{
if (!Form1_0.Shop_0.ShopForSellingitem
&& !Form1_0.Shop_0.ShopForHP
&& !Form1_0.Shop_0.ShopForMana
&& !Form1_0.Shop_0.ShopForTP
&& !Form1_0.Shop_0.ShopForKey
&& Form1_0.Shop_0.ShopForRegainHP)
{
//Act2 Drognan doesn't regen HP, if we are going to shop only for regen HP, then go see Atma in Act2
CheckForNPCValidPos("Atma");
Form1_0.PathFinding_0.MoveToNPC("Atma");
Form1_0.NPCStruc_0.GetNPC("Atma");
MovedCorrectly = true;
}
else
{
CheckForNPCValidPos("Drognan");
Form1_0.PathFinding_0.MoveToNPC("Drognan");
Form1_0.NPCStruc_0.GetNPC("Drognan");
MovedCorrectly = true;
}
}
if (TownAct == 3)
{
CheckForNPCValidPos("Ormus");
Form1_0.PathFinding_0.MoveToNPC("Ormus");
Form1_0.NPCStruc_0.GetNPC("Ormus");
MovedCorrectly = true;
}
if (TownAct == 4)
{
CheckForNPCValidPos("Jamella");
Form1_0.PathFinding_0.MoveToNPC("Jamella");
Form1_0.NPCStruc_0.GetNPC("Jamella");
MovedCorrectly = true;
}
if (TownAct == 5)
{
CheckForNPCValidPos("Malah");
Form1_0.PathFinding_0.MoveToNPC("Malah");
//Form1_0.NPCStruc_0.GetNPC("Malah");
MovedCorrectly = true;
}
if (MovedCorrectly)
{
//Clic store
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.NPCStruc_0.xPosFinal, Form1_0.NPCStruc_0.yPosFinal);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"]);
Form1_0.Mover_0.FinishMoving();
if (Form1_0.UIScan_0.WaitTilUIOpen("npcInteract")) //npcShop
{
if (TownAct != 4)
{
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Down); //press down if not in Act4
}
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Enter);
Form1_0.WaitDelay(50);
Form1_0.Shop_0.RunShopScript();
Form1_0.UIScan_0.CloseUIMenu("npcInteract");
Form1_0.UIScan_0.CloseUIMenu("npcShop");
Form1_0.Shop_0.PlaceItem(Form1_0.CenterX, Form1_0.CenterY);
}
}
}
public void MoveToStash(bool RunScript)
{
bool MovedCorrectly = false;
//MISSING TOWN ACT HERE
if (TownAct == 1)
{
Form1_0.PathFinding_0.MoveToObject("Bank");
MovedCorrectly = true;
}
if (TownAct == 2)
{
Form1_0.PathFinding_0.MoveToObject("Bank");
MovedCorrectly = true;
}
if (TownAct == 3)
{
Form1_0.PathFinding_0.MoveToObject("Bank");
MovedCorrectly = true;
}
if (TownAct == 4)
{
Form1_0.PathFinding_0.MoveToObject("Bank");
MovedCorrectly = true;
}
if (TownAct == 5)
{
Form1_0.PathFinding_0.MoveToObject("Bank");
MovedCorrectly = true;
}
if (MovedCorrectly)
{
//get stash location
Dictionary<string, int> itemScreenPos = new Dictionary<string, int>();
bool HasPosForStash = false;
if (TownAct == 5)
{
itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, 5124, 5057);
HasPosForStash = true;
}
else
{
if (Form1_0.ObjectsStruc_0.GetObjects("Bank", true))
{
Form1_0.method_1("CHANGE STASH POS TO: " + Form1_0.ObjectsStruc_0.itemx + ", " + Form1_0.ObjectsStruc_0.itemy, Color.BlueViolet);
itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.ObjectsStruc_0.itemx, Form1_0.ObjectsStruc_0.itemy);
HasPosForStash = true;
}
else
{
Form1_0.method_1("STASH NOT FOUND NEAR", Color.OrangeRed);
if (TownAct == 1)
{
Form1_0.PathFinding_0.MoveToNPC("Akara");
}
if (TownAct == 2)
{
Form1_0.PathFinding_0.MoveToNPC("Greiz");
}
if (TownAct == 3)
{
Form1_0.PathFinding_0.MoveToNPC("Asheara");
}
if (TownAct == 4)
{
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = 5092, Y = 5044 });
}
}
}
if (HasPosForStash)
{
//Clic stash
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"]);
Form1_0.Mover_0.FinishMoving();
if (Form1_0.UIScan_0.WaitTilUIOpen("stash"))
{
if (RunScript)
{
Form1_0.Stash_0.RunStashScript();
}
Form1_0.UIScan_0.CloseUIMenu("stash");
}
}
}
}
public void MoveToCain()
{
CheckForNPCValidPos("DeckardCain");
bool MovedCorrectly = false;
if (TownAct == 1)
{
if (!CainNotFoundAct1)
{
Form1_0.PathFinding_0.MoveToNPC("DeckardCain");
MovedCorrectly = true;
}
else
{
//go to town act5 for cain
ScriptTownAct = 5;
}
}
if (TownAct == 2)
{
Form1_0.PathFinding_0.MoveToNPC("DeckardCain");
MovedCorrectly = true;
}
if (TownAct == 3)
{
Form1_0.PathFinding_0.MoveToNPC("DeckardCain");
MovedCorrectly = true;
}
if (TownAct == 4)
{
Form1_0.PathFinding_0.MoveToNPC("DeckardCain");
MovedCorrectly = true;
}
if (TownAct == 5)
{
Form1_0.PathFinding_0.MoveToNPC("DeckardCain");
MovedCorrectly = true;
}
if (MovedCorrectly)
{
if (!Form1_0.NPCStruc_0.GetNPC("DeckardCain"))
{
if (TownAct == 1 && !CainNotFoundAct1)
{
CainNotFoundAct1 = true;
//go to town act5 for cain
ScriptTownAct = 5;
}
}
//Clic cain
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.NPCStruc_0.xPosFinal, Form1_0.NPCStruc_0.yPosFinal);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"]);
//Form1_0.Mover_0.FinishMoving();
if (Form1_0.UIScan_0.WaitTilUIOpen("npcInteract"))
{
//Clic Identify items (get cain pos again) - 227 offset y
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Down);
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Enter);
//wait til its done
if (!Form1_0.UIScan_0.WaitTilUIClose("npcInteract"))
{
//Form1_0.method_1("ITEMS DIDN'T IDENTIFIED, RETRYING...", Color.Black);
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Enter);
}
Form1_0.ItemsStruc_0.GetItems(false);
}
}
}
public void MoveToMerc()
{
bool MovedCorrectly = false;
if (TownAct == 1)
{
CheckForNPCValidPos("Kashya");
Form1_0.PathFinding_0.MoveToNPC("Kashya");
Form1_0.NPCStruc_0.GetNPC("Kashya");
MovedCorrectly = true;
}
if (TownAct == 2)
{
CheckForNPCValidPos("Greiz");
Form1_0.PathFinding_0.MoveToNPC("Greiz");
Form1_0.NPCStruc_0.GetNPC("Greiz");
MovedCorrectly = true;
}
if (TownAct == 3)
{
CheckForNPCValidPos("Asheara");
Form1_0.PathFinding_0.MoveToNPC("Asheara");
Form1_0.NPCStruc_0.GetNPC("Asheara");
MovedCorrectly = true;
}
if (TownAct == 4)
{
CheckForNPCValidPos("Tyrael");
Form1_0.PathFinding_0.MoveToNPC("Tyrael");
Form1_0.NPCStruc_0.GetNPC("Tyrael");
MovedCorrectly = true;
}
if (TownAct == 5)
{
CheckForNPCValidPos("Qual-Kehk");
Form1_0.PathFinding_0.MoveToNPC("Qual-Kehk");
Form1_0.NPCStruc_0.GetNPC("Qual-Kehk");
MovedCorrectly = true;
}
if (MovedCorrectly)
{
//Clic merc NPC
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.NPCStruc_0.xPosFinal, Form1_0.NPCStruc_0.yPosFinal);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"]);
Form1_0.Mover_0.FinishMoving();
if (Form1_0.UIScan_0.WaitTilUIOpen("npcInteract"))
{
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Down);
if (TownAct == 4)
{
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Down); //Tyrael press down
}
Form1_0.KeyMouse_0.PressKey(System.Windows.Forms.Keys.Enter);
//wait til its done
Form1_0.UIScan_0.WaitTilUIClose("npcInteract");
Form1_0.UIScan_0.CloseUIMenu("npcInteract");
}
}
}
public void FixBaalNearRedPortal()
{
//fix when close to RedPortal in Baal
if (Form1_0.PlayerScan_0.xPosFinal >= (15090 - 4)
&& Form1_0.PlayerScan_0.xPosFinal <= (15090 + 4)
&& Form1_0.PlayerScan_0.yPosFinal >= (5008 - 4)
&& Form1_0.PlayerScan_0.yPosFinal <= (5008 + 4)
&& Form1_0.PlayerScan_0.levelNo == 131)
{
Form1_0.PathFinding_0.MoveToThisPos(new Position { X = 15090 + 5, Y = 5008 + 15 });
}
}
public void SpawnTP(bool EnterTP = false)
{
FixBaalNearRedPortal();
//has tp
if (Form1_0.InventoryStruc_0.HUDItems_tpscrolls > 0)
{
// open inv
Form1_0.UIScan_0.OpenUIMenu("invMenu");
//use tp in inventory
Form1_0.InventoryStruc_0.UseTP();
TPSpawned = true;
//close inv
Form1_0.UIScan_0.CloseUIMenu("invMenu");
Form1_0.WaitDelay(50); //100 default
if (EnterTP)
{
Towning = true;
ForcedTowning = true;
}
}
}
public void GetCorpse()
{
if (Form1_0.ItemsStruc_0.ItemsEquiped > 2) return;
//method #1
if (Form1_0.NPCStruc_0.GetNPC("DeadCorpse"))
{
//Console.WriteLine("Corpse found method1");
Form1_0.method_1("Grab corpse #1", Color.Red);
//Clic corpse
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.NPCStruc_0.xPosFinal, Form1_0.NPCStruc_0.yPosFinal);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"]);
}
//method #2
int Tries = 0;
while (Form1_0.PlayerScan_0.ScanForOthersPlayers(0, CharConfig.PlayerCharName, true) && Tries < 5)
{
//Console.WriteLine("Corpse found method2");
Form1_0.method_1("Grab corpse #2", Color.Red);
//Clic corpse
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.PlayerScan_0.xPosFinalOtherP, Form1_0.PlayerScan_0.yPosFinalOtherP);
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"]);
Form1_0.WaitDelay(100);
Form1_0.PlayerScan_0.GetPositions();
Tries++;
}
}
public void GoToTown()
{
//script to spawn tp and move to town quickly (no potion and no hp)
if (!GetInTown())
{
SpawnTP(true);
}
}
public bool GetInTown()
{
TownAct = 0;
if (Form1_0.PlayerScan_0.levelNo >= 1 && Form1_0.PlayerScan_0.levelNo < 40) TownAct = 1;
if (Form1_0.PlayerScan_0.levelNo >= 40 && Form1_0.PlayerScan_0.levelNo < 75) TownAct = 2;
if (Form1_0.PlayerScan_0.levelNo >= 75 && Form1_0.PlayerScan_0.levelNo < 103) TownAct = 3;
if (Form1_0.PlayerScan_0.levelNo >= 103 && Form1_0.PlayerScan_0.levelNo < 109) TownAct = 4;
if (Form1_0.PlayerScan_0.levelNo >= 109) TownAct = 5;
IsInTown = false;
if (Form1_0.PlayerScan_0.levelNo == 1 //act1
|| Form1_0.PlayerScan_0.levelNo == 40 //act2
|| Form1_0.PlayerScan_0.levelNo == 75 //act3
|| Form1_0.PlayerScan_0.levelNo == 103 //act4
|| Form1_0.PlayerScan_0.levelNo == 109) //act5
{
IsInTown = true;
}
return IsInTown;
}
public string getAreaName(int areaNum)
{
switch (areaNum)
{
case 1: return "Rogue Encampment";
case 2: return "Blood Moor";
case 3: return "Cold Plains";
case 4: return "Stony Field";
case 5: return "Dark Wood";
case 6: return "Black Marsh";
case 7: return "Tamoe Highland";
case 8: return "Den of Evil";
case 9: return "Cave Level 1";
case 10: return "Underground Passage Level 1";
case 11: return "Hole Level 1";
case 12: return "Pit Level 1";
case 13: return "Cave Level 2";
case 14: return "Underground Passage Level 2";
case 15: return "Hole Level 2";
case 16: return "Pit Level 2";
case 17: return "Burial Grounds";
case 18: return "Crypt";
case 19: return "Mausoleum";
case 20: return "Forgotten Tower";
case 21: return "Tower Cellar Level 1";
case 22: return "Tower Cellar Level 2";
case 23: return "Tower Cellar Level 3";
case 24: return "Tower Cellar Level 4";
case 25: return "Tower Cellar Level 5";
case 26: return "Monastery Gate";
case 27: return "Outer Cloister";
case 28: return "Barracks";
case 29: return "Jail Level 1";
case 30: return "Jail Level 2";
case 31: return "Jail Level 3";
case 32: return "Inner Cloister";
case 33: return "Cathedral";
case 34: return "Catacombs Level 1";
case 35: return "Catacombs Level 2";
case 36: return "Catacombs Level 3";
case 37: return "Catacombs Level 4";
case 38: return "Tristram";
case 39: return "Moo Moo Farm";
case 40: return "Lut Gholein";
case 41: return "Rocky Waste";
case 42: return "Dry Hills";
case 43: return "Far Oasis";
case 44: return "Lost City";
case 45: return "Valley of Snakes";
case 46: return "Canyon of the Magi";
case 47: return "Sewers Level 1";
case 48: return "Sewers Level 2";
case 49: return "Sewers Level 3";
case 50: return "Harem Level 1";
case 51: return "Harem Level 2";
case 52: return "Palace Cellar Level 1";
case 53: return "Palace Cellar Level 2";
case 54: return "Palace Cellar Level 3";
case 55: return "Stony Tomb Level 1";
case 56: return "Halls of the Dead Level 1";
case 57: return "Halls of the Dead Level 2";
case 58: return "Claw Viper Temple Level 1";
case 59: return "Stony Tomb Level 2";
case 60: return "Halls of the Dead Level 3";
case 61: return "Claw Viper Temple Level 2";
case 62: return "Maggot Lair Level 1";
case 63: return "Maggot Lair Level 2";
case 64: return "Maggot Lair Level 3";
case 65: return "Ancient Tunnels";
case 66: return "Tal Rasha's Tomb #1";
case 67: return "Tal Rasha's Tomb #2";
case 68: return "Tal Rasha's Tomb #3";
case 69: return "Tal Rasha's Tomb #4";
case 70: return "Tal Rasha's Tomb #5";
case 71: return "Tal Rasha's Tomb #6";
case 72: return "Tal Rasha's Tomb #7";
case 73: return "Duriel's Lair";
case 74: return "Arcane Sanctuary";
case 75: return "Kurast Docktown";
case 76: return "Spider Forest";
case 77: return "Great Marsh";
case 78: return "Flayer Jungle";
case 79: return "Lower Kurast";
case 80: return "Kurast Bazaar";
case 81: return "Upper Kurast";
case 82: return "Kurast Causeway";
case 83: return "Travincal";
case 84: return "Arachnid Lair";
case 85: return "Spider Cavern";
case 86: return "Swampy Pit Level 1";
case 87: return "Swampy Pit Level 2";
case 88: return "Flayer Dungeon Level 1";
case 89: return "Flayer Dungeon Level 2";
case 90: return "Swampy Pit Level 3";
case 91: return "Flayer Dungeon Level 3";
case 92: return "Sewers Level 1";
case 93: return "Sewers Level 2";
case 94: return "Ruined Temple";
case 95: return "Disused Fane";
case 96: return "Forgotten Reliquary";
case 97: return "Forgotten Temple";
case 98: return "Ruined Fane";
case 99: return "Disused Reliquary";
case 100: return "Durance of Hate Level 1";
case 101: return "Durance of Hate Level 2";
case 102: return "Durance of Hate Level 3";
case 103: return "Pandemonium Fortress";
case 104: return "Outer Steppes";
case 105: return "Plains of Despair";
case 106: return "City of the Damned";
case 107: return "River of Flame";
case 108: return "Chaos Sanctuary";
case 109: return "Harrogath";
case 110: return "Bloody Foothills";
case 111: return "Frigid Highlands";
case 112: return "Arreat Plateau";
case 113: return "Crystalline Passage";
case 114: return "Frozen River";
case 115: return "Glacial Trail";
case 116: return "Drifter Cavern";
case 117: return "Frozen Tundra";
case 118: return "Ancients' Way";
case 119: return "Icy Cellar";
case 120: return "Arreat Summit";
case 121: return "Nihlathaks Temple";
case 122: return "Halls of Anguish";
case 123: return "Halls of Death's Calling";
case 124: return "Halls of Vaught";
case 125: return "Abaddon";
case 126: return "Pit of Acheron";
case 127: return "Infernal Pit";
case 128: return "Worldstone Keep Level 1";
case 129: return "Worldstone Keep Level 2";
case 130: return "Worldstone Keep Level 3";
case 131: return "Throne of Destruction";
case 132: return "Worldstone Chamber";
case 133: return "Pandemonium Run 1";
case 134: return "Pandemonium Run 2";
case 135: return "Pandemonium Run 3";
case 136: return "Tristram";
}
return "";
}
}
}