246 lines
9.0 KiB
C#
246 lines
9.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using static app.MapAreaStruc;
|
|
|
|
namespace app
|
|
{
|
|
public class Cows
|
|
{
|
|
Form1 Form1_0;
|
|
|
|
public int CurrentStep = 0;
|
|
public bool ScriptDone = false;
|
|
public Position TristramPos = new Position { X = 0, Y = 0 };
|
|
|
|
public bool HasWirtsLeg = false;
|
|
|
|
|
|
public void SetForm1(Form1 form1_1)
|
|
{
|
|
Form1_0 = form1_1;
|
|
}
|
|
|
|
public void ResetVars()
|
|
{
|
|
CurrentStep = 0;
|
|
ScriptDone = false;
|
|
HasWirtsLeg = false;
|
|
}
|
|
|
|
public void DetectCurrentStep()
|
|
{
|
|
if ((Enums.Area)Form1_0.PlayerScan_0.levelNo == Enums.Area.MooMooFarm) CurrentStep = 1;
|
|
|
|
if ((Enums.Area)Form1_0.PlayerScan_0.levelNo == Enums.Area.StonyField) CurrentStep = 1;
|
|
if ((Enums.Area)Form1_0.PlayerScan_0.levelNo == Enums.Area.Tristram) CurrentStep = 3;
|
|
}
|
|
|
|
public void RunScriptTristam()
|
|
{
|
|
if (Form1_0.Town_0.GetInTown())
|
|
{
|
|
Form1_0.SetGameStatus("GO TO WP");
|
|
CurrentStep = 0;
|
|
|
|
Form1_0.Town_0.GoToWPArea(1, 2);
|
|
}
|
|
else
|
|
{
|
|
if (CurrentStep == 0)
|
|
{
|
|
Form1_0.SetGameStatus("DOING TRISTRAM");
|
|
Form1_0.Battle_0.CastDefense();
|
|
Form1_0.WaitDelay(15);
|
|
|
|
if ((Enums.Area)Form1_0.PlayerScan_0.levelNo == Enums.Area.StonyField)
|
|
{
|
|
CurrentStep++;
|
|
}
|
|
else
|
|
{
|
|
DetectCurrentStep();
|
|
if (CurrentStep == 0) Form1_0.Town_0.GoToTown();
|
|
}
|
|
}
|
|
|
|
if (CurrentStep == 1)
|
|
{
|
|
TristramPos = Form1_0.MapAreaStruc_0.GetPositionOfObject("object", "CairnStoneAlpha", (int)Enums.Area.StonyField, new List<int>());
|
|
if (TristramPos.X != 0 && TristramPos.Y != 0)
|
|
{
|
|
Form1_0.PathFinding_0.MoveToThisPos(TristramPos);
|
|
|
|
CurrentStep++;
|
|
}
|
|
else
|
|
{
|
|
Form1_0.method_1("Tristram location not detected!", Color.Red);
|
|
Form1_0.Town_0.UseLastTP = false;
|
|
ScriptDone = true;
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (CurrentStep == 2)
|
|
{
|
|
Form1_0.SetGameStatus("Tristram waiting for Tristram portal");
|
|
|
|
if (Form1_0.ObjectsStruc_0.GetObjects("PermanentTownPortal", true, new List<uint>(), 60))
|
|
{
|
|
Form1_0.Mover_0.MoveToLocation(Form1_0.ObjectsStruc_0.itemx, Form1_0.ObjectsStruc_0.itemy);
|
|
|
|
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);
|
|
itemScreenPos = Form1_0.Mover_0.FixMouseYPosition(itemScreenPos);
|
|
Form1_0.KeyMouse_0.MouseClicc_RealPos(itemScreenPos["x"], itemScreenPos["y"] - 15);
|
|
Form1_0.WaitDelay(100);
|
|
}
|
|
|
|
if (Form1_0.PlayerScan_0.levelNo == (int)Enums.Area.Tristram)
|
|
{
|
|
CurrentStep++;
|
|
}
|
|
}
|
|
|
|
if (CurrentStep == 3)
|
|
{
|
|
if ((Enums.Area)Form1_0.PlayerScan_0.levelNo == Enums.Area.StonyField)
|
|
{
|
|
CurrentStep--;
|
|
return;
|
|
}
|
|
|
|
Form1_0.SetGameStatus("Doing Tristram");
|
|
|
|
Form1_0.PathFinding_0.MoveToObject("WirtCorpse");
|
|
|
|
if (Form1_0.ObjectsStruc_0.GetObjects("WirtCorpse", true, new List<uint>()))
|
|
{
|
|
if (Form1_0.Mover_0.MoveToLocation(Form1_0.ObjectsStruc_0.itemx, Form1_0.ObjectsStruc_0.itemy))
|
|
{
|
|
//repeat clic on WirtCorpse
|
|
int tryyy = 0;
|
|
while (tryyy <= 15)
|
|
{
|
|
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);
|
|
itemScreenPos = Form1_0.Mover_0.FixMouseYPosition(itemScreenPos);
|
|
Form1_0.KeyMouse_0.MouseClicc_RealPos(itemScreenPos["x"], itemScreenPos["y"] - 15);
|
|
Form1_0.WaitDelay(4);
|
|
tryyy++;
|
|
}
|
|
|
|
CurrentStep++;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (CurrentStep == 4)
|
|
{
|
|
//take leg
|
|
HasWirtsLeg = Form1_0.InventoryStruc_0.HasInventoryItemName("Wirt's Leg");
|
|
DateTime TimeSinceTakingLeg = DateTime.Now;
|
|
while (!HasWirtsLeg && (DateTime.Now - TimeSinceTakingLeg).TotalSeconds < 2)
|
|
{
|
|
Form1_0.ItemsStruc_0.PickThisItem("Wirt's Leg");
|
|
Form1_0.ItemsStruc_0.GetItems(false); //get inventory
|
|
HasWirtsLeg = Form1_0.InventoryStruc_0.HasInventoryItemName("Wirt's Leg");
|
|
}
|
|
|
|
if (HasWirtsLeg)
|
|
{
|
|
CurrentStep = 0; //go to next script for cow
|
|
Form1_0.Town_0.GoToTown();
|
|
}
|
|
else
|
|
{
|
|
CurrentStep--; //return clicking on corpse
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void RunScriptCow()
|
|
{
|
|
if (Form1_0.Town_0.GetInTown())
|
|
{
|
|
Form1_0.SetGameStatus("GO TO SHOP");
|
|
CurrentStep = 0;
|
|
|
|
bool HasTownPortal = Form1_0.InventoryStruc_0.HasInventoryItemName("Tome of Town Portal");
|
|
if (!HasTownPortal)
|
|
{
|
|
//buy tome of portal in store
|
|
Form1_0.Shop_0.ShopForTomeOfPortal = true;
|
|
Form1_0.Town_0.MoveToStore();
|
|
}
|
|
else
|
|
{
|
|
if (Form1_0.ObjectsStruc_0.GetObjects("PermanentTownPortal", true, new List<uint>()))
|
|
{
|
|
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);
|
|
itemScreenPos = Form1_0.Mover_0.FixMouseYPosition(itemScreenPos);
|
|
Form1_0.KeyMouse_0.MouseClicc_RealPos(itemScreenPos["x"], itemScreenPos["y"] - 15);
|
|
Form1_0.WaitDelay(100);
|
|
}
|
|
else
|
|
{
|
|
//move to stash to create portal by cubing it
|
|
Form1_0.Town_0.MoveToStash(true);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (CurrentStep == 0)
|
|
{
|
|
Form1_0.SetGameStatus("DOING COWS");
|
|
Form1_0.Battle_0.CastDefense();
|
|
Form1_0.WaitDelay(15);
|
|
|
|
if ((Enums.Area)Form1_0.PlayerScan_0.levelNo == Enums.Area.MooMooFarm)
|
|
{
|
|
CurrentStep++;
|
|
}
|
|
else
|
|
{
|
|
DetectCurrentStep();
|
|
if (CurrentStep == 0) Form1_0.Town_0.GoToTown();
|
|
}
|
|
}
|
|
|
|
if (CurrentStep == 1)
|
|
{
|
|
Form1_0.Battle_0.ClearFullAreaOfMobs();
|
|
|
|
if (!Form1_0.Battle_0.ClearingArea)
|
|
{
|
|
Form1_0.Town_0.UseLastTP = false;
|
|
ScriptDone = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void RunScript()
|
|
{
|
|
Form1_0.Town_0.ScriptTownAct = 1; //set to town act 5 when running this script
|
|
|
|
Form1_0.ItemsStruc_0.GetItems(false); //get inventory
|
|
HasWirtsLeg = Form1_0.InventoryStruc_0.HasInventoryItemName("Wirt's Leg");
|
|
if ((Enums.Area)Form1_0.PlayerScan_0.levelNo == Enums.Area.MooMooFarm) HasWirtsLeg = true;
|
|
|
|
if (HasWirtsLeg)
|
|
{
|
|
RunScriptCow();
|
|
}
|
|
else
|
|
{
|
|
RunScriptTristam();
|
|
}
|
|
}
|
|
}
|
|
}
|