2023-04-20 21:39:08 -07:00
|
|
|
|
using System;
|
2024-03-29 00:19:36 -07:00
|
|
|
|
using System.Drawing;
|
2023-04-20 21:39:08 -07:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel.Design;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
2024-04-20 19:37:30 -07:00
|
|
|
|
using System.Text.RegularExpressions;
|
2023-04-20 21:39:08 -07:00
|
|
|
|
|
|
|
|
|
namespace app
|
|
|
|
|
{
|
|
|
|
|
public class BeltStruc
|
|
|
|
|
{
|
|
|
|
|
Form1 Form1_0;
|
|
|
|
|
|
|
|
|
|
public int[] BeltHaveItems = new int[16];
|
|
|
|
|
public int[] BeltItemsTypes = new int[16];
|
|
|
|
|
public bool MissingHPPot = false;
|
|
|
|
|
public bool MissingManaPot = false;
|
|
|
|
|
public bool MissingRVPot = false;
|
|
|
|
|
public bool IsItemHPPotion = false;
|
|
|
|
|
public bool IsItemManaPotion = false;
|
|
|
|
|
public bool IsItemRVPotion = false;
|
|
|
|
|
public bool IsItemFullRVPotion = false;
|
|
|
|
|
|
|
|
|
|
public int HPQuantity = 0;
|
|
|
|
|
public int ManyQuantity = 0;
|
|
|
|
|
|
|
|
|
|
public int ForceHPPotionQty = 0;
|
|
|
|
|
public int ForceMANAPotionQty = 0;
|
|
|
|
|
public bool HasPotInBadSpot = false;
|
|
|
|
|
|
|
|
|
|
public void SetForm1(Form1 form1_1)
|
|
|
|
|
{
|
|
|
|
|
Form1_0 = form1_1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool ItemGrabPotion()
|
|
|
|
|
{
|
2024-03-29 00:19:36 -07:00
|
|
|
|
if (CharConfig.RunItemGrabScriptOnly) return false; //item grab only
|
|
|
|
|
|
|
|
|
|
//####
|
|
|
|
|
if (Form1_0.InventoryStruc_0.HasInventoryItemName("Super Healing Potion"))
|
|
|
|
|
{
|
|
|
|
|
//Form1_0.method_1("FORCING HP POT QTY: " + Form1_0.BeltStruc_0.HPQuantity, Color.Red);
|
|
|
|
|
ForceHPPotionQty = HPQuantity; //reset qty in belt
|
|
|
|
|
MissingHPPot = false;
|
|
|
|
|
}
|
|
|
|
|
if (Form1_0.InventoryStruc_0.HasInventoryItemName("Super Mana Potion"))
|
|
|
|
|
{
|
|
|
|
|
ForceMANAPotionQty = ManyQuantity; //reset qty in belt
|
|
|
|
|
MissingManaPot = false;
|
|
|
|
|
}
|
|
|
|
|
//####
|
|
|
|
|
|
2024-04-20 19:37:30 -07:00
|
|
|
|
//Console.WriteLine("" + MissingHPPot + MissingManaPot + MissingRVPot);
|
|
|
|
|
|
2023-04-20 21:39:08 -07:00
|
|
|
|
if (MissingHPPot || MissingManaPot || MissingRVPot)
|
|
|
|
|
{
|
|
|
|
|
ItemIsPotion();
|
|
|
|
|
if (MissingHPPot && IsItemHPPotion) return true;
|
|
|
|
|
if (MissingManaPot && IsItemManaPotion) return true;
|
|
|
|
|
//if (MissingRVPot && IsItemRVPotion) return true;
|
|
|
|
|
if (MissingRVPot && IsItemFullRVPotion) return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void CheckForMissingPotions()
|
|
|
|
|
{
|
|
|
|
|
Form1_0.ItemsStruc_0.GetItems(false);
|
|
|
|
|
|
|
|
|
|
MissingHPPot = false;
|
|
|
|
|
MissingManaPot = false;
|
|
|
|
|
MissingRVPot = false;
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < 16; i++)
|
|
|
|
|
{
|
|
|
|
|
if (BeltHaveItems[i] == 0)
|
|
|
|
|
{
|
|
|
|
|
int BeltIndd = ConvertBeltIndexTo4Number(i);
|
|
|
|
|
if (BeltIndd != 5)
|
|
|
|
|
{
|
|
|
|
|
int PotToHave = CharConfig.BeltPotTypeToHave[BeltIndd];
|
|
|
|
|
if (PotToHave == 0)
|
|
|
|
|
{
|
|
|
|
|
MissingHPPot = true;
|
|
|
|
|
}
|
|
|
|
|
if (PotToHave == 1)
|
|
|
|
|
{
|
|
|
|
|
MissingManaPot = true;
|
|
|
|
|
}
|
|
|
|
|
if (PotToHave == 2 || PotToHave == 3)
|
|
|
|
|
{
|
|
|
|
|
MissingRVPot = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-29 00:19:36 -07:00
|
|
|
|
//Form1_0.method_1("HP POT QTY: " + HPQuantity, Color.Red);
|
|
|
|
|
|
2023-04-20 21:39:08 -07:00
|
|
|
|
if (MissingHPPot)
|
|
|
|
|
{
|
|
|
|
|
if (ForceHPPotionQty != 0)
|
|
|
|
|
{
|
|
|
|
|
if (ForceHPPotionQty == HPQuantity)
|
|
|
|
|
{
|
|
|
|
|
MissingHPPot = false; //not missing pot fix
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (MissingManaPot)
|
|
|
|
|
{
|
|
|
|
|
if (ForceMANAPotionQty != 0)
|
|
|
|
|
{
|
|
|
|
|
if (ForceMANAPotionQty == ManyQuantity)
|
|
|
|
|
{
|
|
|
|
|
MissingManaPot = false; //not missing pot fix
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Console.WriteLine("Missing pots:" + MissingHPPot + "," + MissingManaPot + "," + MissingRVPot);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int ConvertBeltIndexTo4Number(int BeltInd)
|
|
|
|
|
{
|
|
|
|
|
if (BeltInd == 0 || BeltInd == 4 || BeltInd == 8 || BeltInd == 12) return 0;
|
|
|
|
|
if (BeltInd == 1 || BeltInd == 5 || BeltInd == 9 || BeltInd == 13) return 1;
|
|
|
|
|
if (BeltInd == 2 || BeltInd == 6 || BeltInd == 10 || BeltInd == 14) return 2;
|
|
|
|
|
if (BeltInd == 3 || BeltInd == 7 || BeltInd == 11 || BeltInd == 15) return 3;
|
|
|
|
|
return 5;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void AddBeltItem(bool UsePotNotInSpot)
|
|
|
|
|
{
|
|
|
|
|
int BufferPotType = GetPotType();
|
2024-04-05 21:50:39 -07:00
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
BeltHaveItems[Form1_0.ItemsStruc_0.itemx] = 1;
|
|
|
|
|
BeltItemsTypes[Form1_0.ItemsStruc_0.itemx] = BufferPotType;
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
2023-04-20 21:39:08 -07:00
|
|
|
|
|
|
|
|
|
bool UsedPotion = false;
|
|
|
|
|
HasPotInBadSpot = false;
|
|
|
|
|
int BeltIndd = ConvertBeltIndexTo4Number(Form1_0.ItemsStruc_0.itemx);
|
|
|
|
|
if (BeltIndd != 5)
|
|
|
|
|
{
|
|
|
|
|
int PotToHave = CharConfig.BeltPotTypeToHave[BeltIndd];
|
|
|
|
|
if (PotToHave != BufferPotType)
|
|
|
|
|
{
|
|
|
|
|
if (UsePotNotInSpot)
|
|
|
|
|
{
|
|
|
|
|
Form1_0.Potions_0.PressPotionKey(BeltIndd, false); //use potion, not in right spot
|
|
|
|
|
UsedPotion = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
HasPotInBadSpot = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!UsedPotion)
|
|
|
|
|
{
|
|
|
|
|
if (BufferPotType == 0)
|
|
|
|
|
{
|
|
|
|
|
HPQuantity++;
|
|
|
|
|
}
|
|
|
|
|
if (BufferPotType == 1)
|
|
|
|
|
{
|
|
|
|
|
ManyQuantity++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//Form1_0.method_1("belt pointer" + Form1_0.ItemsStruc_0.itemx + ": 0x" + Form1_0.ItemsStruc_0.ItemPointerLocation.ToString("X") + " (diff from player: 0x" + (Form1_0.PlayerScan_0.PlayerPointer - Form1_0.ItemsStruc_0.ItemPointerLocation).ToString("X") + ")");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void ItemIsPotion()
|
|
|
|
|
{
|
|
|
|
|
IsItemHPPotion = false;
|
|
|
|
|
IsItemManaPotion = false;
|
|
|
|
|
IsItemRVPotion = false;
|
|
|
|
|
IsItemFullRVPotion = false;
|
2024-04-20 19:37:30 -07:00
|
|
|
|
|
|
|
|
|
foreach (var ThisDir in Form1_0.ItemsAlert_0.PickItemsPotions)
|
|
|
|
|
{
|
|
|
|
|
if (Form1_0.ItemsStruc_0.ItemNAAME.ToLower().Replace(" ", "") == Regex.Replace(ThisDir.Key.ToLower().Replace(" ", ""), @"[\d-]", string.Empty) && ThisDir.Value)
|
|
|
|
|
{
|
|
|
|
|
if (Form1_0.ItemsStruc_0.ItemNAAME.ToLower().Contains("healing")) IsItemHPPotion = true;
|
|
|
|
|
if (Form1_0.ItemsStruc_0.ItemNAAME.ToLower().Contains("mana")) IsItemManaPotion = true;
|
|
|
|
|
if (Form1_0.ItemsStruc_0.ItemNAAME.ToLower().Contains("rejuvenation")) IsItemRVPotion = true;
|
|
|
|
|
if (Form1_0.ItemsStruc_0.ItemNAAME.ToLower().Contains("full rejuvenation")) IsItemFullRVPotion = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*if (Form1_0.ItemsStruc_0.ItemNAAME == "Super Healing Potion") IsItemHPPotion = true;
|
2023-04-20 21:39:08 -07:00
|
|
|
|
if (Form1_0.ItemsStruc_0.ItemNAAME == "Super Mana Potion") IsItemManaPotion = true;
|
|
|
|
|
if (Form1_0.ItemsStruc_0.ItemNAAME == "Rejuvenation Potion") IsItemRVPotion = true;
|
2024-04-20 19:37:30 -07:00
|
|
|
|
if (Form1_0.ItemsStruc_0.ItemNAAME == "Full Rejuvenation Potion") IsItemFullRVPotion = true;*/
|
2023-04-20 21:39:08 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int GetPotType()
|
|
|
|
|
{
|
|
|
|
|
if (Form1_0.ItemsStruc_0.ItemNAAME.ToLower().Contains("healing") ||
|
|
|
|
|
Form1_0.ItemsStruc_0.ItemNAAME.ToLower() == "potion of life")
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
if (Form1_0.ItemsStruc_0.ItemNAAME.ToLower().Contains("mana"))
|
|
|
|
|
{
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
if (Form1_0.ItemsStruc_0.ItemNAAME == "Rejuvenation Potion")
|
|
|
|
|
{
|
|
|
|
|
return 2;
|
|
|
|
|
}
|
|
|
|
|
if (Form1_0.ItemsStruc_0.ItemNAAME == "Full Rejuvenation Potion")
|
|
|
|
|
{
|
|
|
|
|
return 3;
|
|
|
|
|
}
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|