D2R-BMBot/Strucs/ObjectsStruc.cs

1246 lines
60 KiB
C#

using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Diagnostics.DebuggableAttribute;
namespace app
{
public class ObjectsStruc
{
Form1 Form1_0;
public long ObjectPointerLocation = 0;
public byte[] objectdatastruc = new byte[144];
public uint txtFileNo = 0;
public uint ObjectUnitID = 0;
public long pPathPtr = 0;
public ushort itemx = 0;
public ushort itemy = 0;
public byte[] pPath = new byte[144];
public byte[] pUnitData = new byte[144];
public long pUnitDataPtr = 0;
public int LastDiffX = 999;
public int LastDiffY = 999;
public long NearestObjectPointer = 0;
public int MaxCheckDistance = 40;
public byte interactType = 0;
public string ObjectOwnerName = "";
public void SetForm1(Form1 form1_1)
{
Form1_0 = form1_1;
}
public void GetUnitData()
{
pUnitDataPtr = BitConverter.ToInt64(objectdatastruc, 0x10);
pUnitData = new byte[144];
Form1_0.Mem_0.ReadRawMemory(pUnitDataPtr, ref pUnitData, pUnitData.Length);
interactType = Form1_0.Mem_0.ReadByteRaw((IntPtr) (pUnitDataPtr + 0x08));
//########
byte[] pUnitNameData = new byte[16];
Form1_0.Mem_0.ReadRawMemory(pUnitDataPtr + 0x34, ref pUnitNameData, pUnitNameData.Length);
ObjectOwnerName = "";
for (int i2 = 0; i2 < 16; i2++)
{
if (pUnitNameData[i2] != 0x00)
{
ObjectOwnerName += (char)pUnitNameData[i2];
}
}
//########
}
public List<int[]> GetAllObjectsNearby(string ObjectType)
{
//"object", "GoodChest"
Form1_0.PatternsScan_0.scanForUnitsPointer("objects");
List<int[]> objectsPositions2 = new List<int[]>();
for (int i = 0; i < Form1_0.PatternsScan_0.AllObjectsPointers.Count; i++)
{
ObjectPointerLocation = Form1_0.PatternsScan_0.AllObjectsPointers[i];
if (ObjectPointerLocation > 0)
{
//objectdatastruc = new byte[144];
objectdatastruc = new byte[64];
Form1_0.Mem_0.ReadRawMemory(ObjectPointerLocation, ref objectdatastruc, objectdatastruc.Length);
txtFileNo = BitConverter.ToUInt32(objectdatastruc, 4);
//ObjectUnitID = BitConverter.ToUInt32(objectdatastruc, 0x08);
//GetUnitData();
GetUnitPathData();
//Form1_0.method_1("Object: " + getObjectName((int)txtFileNo) + " - " + itemx + ", " + itemy, Color.DarkOrchid);
if (itemx != 0 && itemy != 0)
{
if (getObjectName((int)txtFileNo) == ObjectType)
{
//objectsPositions2.Add(Tuple.Create((int)itemx, (int)itemy));
objectsPositions2.Add(new int[2] { (int)itemx, (int)itemy });
}
}
}
}
return objectsPositions2;
}
public void DebugObjects()
{
Form1_0.ClearDebugobjects();
DebuggingObjects = true;
GetObjects("", false);
DebuggingObjects = false;
}
public bool DebuggingObjects = false;
public bool GetObjects(string ObjectType, bool Nearest, List<uint> IgnoredIDList = null, int MaxDistance = 999, string PortalOwner = "", int PortalArea = 0)
{
txtFileNo = 0;
ObjectUnitID = 0;
NearestObjectPointer = 0;
LastDiffX = 999;
LastDiffY = 999;
long LastPointer = 0;
Form1_0.PatternsScan_0.scanForUnitsPointer("objects");
for (int i = 0; i < Form1_0.PatternsScan_0.AllObjectsPointers.Count; i++)
{
ObjectPointerLocation = Form1_0.PatternsScan_0.AllObjectsPointers[i];
if (ObjectPointerLocation > 0)
{
//objectdatastruc = new byte[144];
objectdatastruc = new byte[64];
Form1_0.Mem_0.ReadRawMemory(ObjectPointerLocation, ref objectdatastruc, objectdatastruc.Length);
txtFileNo = BitConverter.ToUInt32(objectdatastruc, 4);
ObjectUnitID = BitConverter.ToUInt32(objectdatastruc, 0x08);
GetUnitData();
GetUnitPathData();
//Form1_0.method_1("Object: " + getObjectName((int)txtFileNo) + " - " + itemx + ", " + itemy, Color.DarkOrchid);
if (DebuggingObjects)
{
Form1_0.AppendTextDebugObjects("ID:" + txtFileNo + "(" + getObjectName((int)txtFileNo) + ") at:" + itemx + ", " + itemy + Environment.NewLine);
}
if (ObjectType == "TownPortal")
{
if (isPortal((int)txtFileNo) == 1)
{
if (ObjectUnitID != 0 && ObjectUnitID != 4 && !IsIgnoredID(IgnoredIDList) && itemx != 0 && itemy != 0)
{
//Form1_0.method_1("PortalID: 0x" + ObjectUnitID.ToString("X") + " to Area: " + interactType + " (" + ((Enums.Area)interactType) + ")", System.Drawing.Color.DarkMagenta);
//Form1_0.method_1("Object: " + itemx + ", " + itemy + " - " + getObjectName((int)txtFileNo), Color.DarkOrchid);
//string SavePathh = Form1_0.ThisEndPath + "PortalStrucpPath";
//File.Create(SavePathh).Dispose();
//File.WriteAllBytes(SavePathh, pPath);
if ((PortalOwner != "" && ObjectOwnerName == PortalOwner)
|| PortalOwner == "")
{
if ((PortalArea != 0 && interactType == PortalArea)
|| PortalArea == 0)
{
LastPointer = ObjectPointerLocation;
SetNearestObject(Nearest);
//return true;
}
}
}
}
}
else if(ObjectType == "AllChests")
{
if (isChest((int)txtFileNo) == 1 && !IsIgnoredID(IgnoredIDList))
{
if (itemx != 0 && itemy != 0)
{
//Form1_0.method_1("Object: " + itemx + ", " + itemy + " - " + getObjectName((int)txtFileNo), Color.DarkOrchid);
SetNearestObject(Nearest);
if (!Nearest)
{
return true;
}
}
}
}
else
{
if (getObjectName((int)txtFileNo) == ObjectType && !IsIgnoredID(IgnoredIDList))
{
//Form1_0.method_1("Object: " + itemx + ", " + itemy + " - " + getObjectName((int)txtFileNo), Color.DarkOrchid);
if (itemx != 0 && itemy != 0)
{
//Form1_0.method_1("Object: " + itemx + ", " + itemy + " - " + getObjectName((int)txtFileNo), Color.DarkOrchid);
SetNearestObject(Nearest);
if (!Nearest)
{
return true;
}
}
}
}
}
}
//load nearest objects
if (Nearest && NearestObjectPointer != 0)
{
ObjectPointerLocation = NearestObjectPointer;
//objectdatastruc = new byte[144];
objectdatastruc = new byte[64];
Form1_0.Mem_0.ReadRawMemory(ObjectPointerLocation, ref objectdatastruc, objectdatastruc.Length);
txtFileNo = BitConverter.ToUInt32(objectdatastruc, 4);
ObjectUnitID = BitConverter.ToUInt32(objectdatastruc, 0x08);
GetUnitPathData();
if (MaxDistance != 999)
{
if (itemx != 0 && itemy != 0)
{
int DiffXPlayer = itemx - Form1_0.PlayerScan_0.xPosFinal;
int DiffYPlayer = itemy - Form1_0.PlayerScan_0.yPosFinal;
if (DiffXPlayer < 0) DiffXPlayer = -DiffXPlayer;
if (DiffYPlayer < 0) DiffYPlayer = -DiffYPlayer;
if (DiffXPlayer <= MaxDistance
&& DiffYPlayer <= MaxDistance)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
else
{
return true;
}
}
if (Nearest && NearestObjectPointer == 0)
{
return false;
}
if (ObjectType == "TownPortal" && LastPointer > 0)
{
//objectdatastruc = new byte[144];
objectdatastruc = new byte[64];
Form1_0.Mem_0.ReadRawMemory(LastPointer, ref objectdatastruc, objectdatastruc.Length);
txtFileNo = BitConverter.ToUInt32(objectdatastruc, 4);
ObjectUnitID = BitConverter.ToUInt32(objectdatastruc, 0x08);
GetUnitPathData();
return true;
}
return false;
}
public bool IsIgnoredID(List<uint> IgnoredIDList)
{
if (IgnoredIDList != null)
{
if (IgnoredIDList.Count > 0)
{
for (int i = 0; i < IgnoredIDList.Count; i++)
{
if (IgnoredIDList[i] == ObjectUnitID)
{
return true;
}
}
}
}
return false;
}
public void SetNearestObject(bool Nearest)
{
//get nearest object in all objects
if (Nearest)
{
//Console.WriteLine("found near mob" + txtFileNo + " at: " + itemx + ", " + itemy);
if (itemx != 0 && itemy != 0)
{
int DiffXPlayer = itemx - Form1_0.PlayerScan_0.xPosFinal;
int DiffYPlayer = itemy - Form1_0.PlayerScan_0.yPosFinal;
if (DiffXPlayer < 0) DiffXPlayer = -DiffXPlayer;
if (DiffYPlayer < 0) DiffYPlayer = -DiffYPlayer;
if (DiffXPlayer <= LastDiffX
&& DiffYPlayer <= LastDiffY
&& DiffXPlayer <= MaxCheckDistance
&& DiffYPlayer <= MaxCheckDistance)
{
NearestObjectPointer = ObjectPointerLocation;
LastDiffX = DiffXPlayer;
LastDiffY = DiffYPlayer;
}
}
}
}
public void GetUnitPathData()
{
pPathPtr = BitConverter.ToInt64(objectdatastruc, 0x38);
//pPath = new byte[0x32];
//Form1_0.Mem_0.ReadRawMemory(pPathPtr, ref pPath, pPath.Length);
//itemx = BitConverter.ToUInt16(pPath, 0x10);
//itemy = BitConverter.ToUInt16(pPath, 0x14);
itemx = Form1_0.Mem_0.ReadUInt16Raw((IntPtr)(pPathPtr + 0x10));
itemy = Form1_0.Mem_0.ReadUInt16Raw((IntPtr)(pPathPtr + 0x14));
//string SavePathh = Form1_0.ThisEndPath + "DumpObjectPathStruc";
//File.Create(SavePathh).Dispose();
//File.WriteAllBytes(SavePathh, pPath);
//Form1_0.method_1("Object: " + itemx + ", " + itemy + " - " + NormalType + " - " + getObjectName((int)txtFileNo));
}
public int isShrine(int txtFileNo)
{
switch (txtFileNo)
{
case 2: return 1; //DeerShrine
case 77: return 1; //ShrineAltar
case 81: return 1; //ForestAltar
case 83: return 1; //HornShrine
case 84: return 1; //HealingWell
case 85: return 1; //BullShrine
case 86: return 1; //SteleShrine
case 93: return 1; //InnerHellManaShrine1
case 96: return 1; //InnerHellHealthShrine1
case 97: return 1; //InnerHellMagicShrine1
case 109: return 1; //PalaceShrine
case 116: return 1; //SnakeWomanShrine
case 120: return 1; //ShrineHealthDungeon
case 123: return 1; //InnerHellMagicShrine2
case 124: return 1; //InnerHellMagicShrine3
case 133: return 1; //ShrineMagicArcaneSanctuary1
case 134: return 1; //DesertShrine00
case 135: return 1; //DesertShrine01
case 136: return 1; //DesertShrine02
case 149: return 1; //TaintedSunShrine
case 150: return 1; //DesertShrine03
case 151: return 1; //DesertShrine04
case 164: return 1; //ManaWell1
case 165: return 1; //ManaWell2
case 166: return 1; //ManaWell3
case 167: return 1; //ManaWell4
case 168: return 1; //ManaWell5
case 172: return 1; //ShrineHealth
case 173: return 1; //ShrineMana
case 184: return 1; //JungleShrine2
case 190: return 1; //JungleShrine3
case 191: return 1; //JungleShrine4
case 197: return 1; //JungleShrine5
case 199: return 1; //MephistoShrine1
case 200: return 1; //MephistoShrine2
case 201: return 1; //MephistoShrine3
case 202: return 1; //MephistoShrine4
case 206: return 1; //MephistoShrine5
case 226: return 1; //HellShrine1
case 231: return 1; //OuterShrineHell2
case 232: return 1; //OuterShrineHell3
case 249: return 1; //HellManaWell1
case 260: return 1; //HolyShrineAct1
case 262: return 1; //Act1CathedralShrine
case 263: return 1; //Act1JailShrine
case 264: return 1; //Act1JailHealthShrine
case 265: return 1; //Act1JailManaShrine
case 275: return 1; //HealthShrineCavesAct1
case 276: return 1; //ManaShrineCavesAct1
case 277: return 1; //MagicShrinesCavesAct1
case 278: return 1; //ShrineManaDungeon
case 279: return 1; //ShrineMagicSewer
case 280: return 1; //ShrineHealthSewer
case 281: return 1; //ShrineManaSewer
case 282: return 1; //ShrineMagicSewer2
case 299: return 1; //HaremShrine1
case 300: return 1; //HaremShrine2
case 301: return 1; //MaggotShrineHealth
case 302: return 1; //MaggotShrineMana
case 303: return 1; //ShrineMagicArcaneSanctuary2
case 319: return 1; //ShrineArcaneHealth
case 320: return 1; //ShrineArcaneMana
case 325: return 1; //ShrineMagicSewer3
case 343: return 1; //ShrineManaKurast
case 344: return 1; //ShrineHealthKurast
case 361: return 1; //DungeonShrineMagic
case 414: return 1; //ShrineWildernessExp1
case 415: return 1; //ShrineWildernessExp2
case 421: return 1; //ShrineAltarExp
case 422: return 1; //ShrineManaExp
case 423: return 1; //ShrineHealthExp
case 427: return 1; //ShrineWildernessExp3
case 428: return 1; //ShrineWildernessExp4
case 464: return 1; //ShrineHealthIceCave
case 465: return 1; //ShrineManaIceCave
case 472: return 1; //ShrineMagicIceCave
case 479: return 1; //ShrineMagicIceCave2
case 483: return 1; //ShrineBaal1
case 484: return 1; //ShrineBaal2
case 488: return 1; //ShrineBaalMagic
case 491: return 1; //ShrineBaalMana
case 492: return 1; //ShrineBaalHealth
case 495: return 1; //ShrineMagicSnow1
case 497: return 1; //ShrineMagicSnow2
case 499: return 1; //ShrineBallMagic2
case 503: return 1; //ShrineBaalMagic3
case 509: return 1; //ShrineTempleMagic1
case 512: return 1; //ShrineTempleMagic2
case 520: return 1; //ShrineTempleMagic3
case 521: return 1; //ShrineTempleHealth
case 522: return 1; //ShrineTempleMana
case 574: return 1; //DesertShrineArmor
case 575: return 1; //DesertShrineCombat
case 576: return 1; //DesertShrineResist
case 577: return 1; //DesertShrineSkill
case 578: return 1; //DesertShrineRecharge
case 579: return 1; //DesertShrineStamina
}
return 0;
}
public int isPortal(int txtFileNo)
{
switch (txtFileNo)
{
case 59: return 1; //townPortal
case 100: return 1; //DurielsLairPortal
case 563: return 1; //BaalsPortal
}
return 0;
}
public int isRedPortal(int txtFileNo)
{
switch (txtFileNo)
{
case 60: return 1; //PermanentTownPortal
case 565: return 1; //LastPortal
case 566: return 1; //LastLastPortal
case 569: return 1; //BaalsPortal2
case 298: return 1; //ArcaneSanctuaryPortal
case 377: return 1; //GuildPortal
}
return 0;
}
public string getObjectName(int txtFileNo)
{
switch (txtFileNo)
{
case 1: return "Casket5";
case 2: return "Shrine";
case 3: return "Casket6";
case 4: return "LargeUrn1";
case 5: return "LargeChestRight";
case 6: return "LargeChestLeft";
case 7: return "Barrel";
case 8: return "TowerTome";
case 9: return "Urn2";
case 10: return "Bench";
case 11: return "BarrelExploding";
case 12: return "RogueFountain";
case 13: return "DoorGateLeft";
case 14: return "DoorGateRight";
case 15: return "DoorWoodenLeft";
case 16: return "DoorWoodenRight";
case 17: return "CairnStoneAlpha";
case 18: return "CairnStoneBeta";
case 19: return "CairnStoneGamma";
case 20: return "CairnStoneDelta";
case 21: return "CairnStoneLambda";
case 22: return "CairnStoneTheta";
case 23: return "DoorCourtyardLeft";
case 24: return "DoorCourtyardRight";
case 25: return "DoorCathedralDouble";
case 26: return "CainGibbet";
case 27: return "DoorMonasteryDoubleRight";
case 28: return "HoleAnim";
case 29: return "Brazier";
case 30: return "InifussTree";
case 31: return "Fountain";
case 32: return "Crucifix";
case 33: return "Candles1";
case 34: return "Candles2";
case 35: return "Standard1";
case 36: return "Standard2";
case 37: return "Torch1Tiki";
case 38: return "Torch2Wall";
case 39: return "RogueBonfire";
case 40: return "River1";
case 41: return "River2";
case 42: return "River3";
case 43: return "River4";
case 44: return "River5";
case 45: return "AmbientSoundGenerator";
case 46: return "Crate";
case 47: return "AndarielDoor";
case 48: return "RogueTorch1";
case 49: return "RogueTorch2";
case 50: return "CasketR";
case 51: return "CasketL";
case 52: return "Urn3";
case 53: return "Casket";
case 54: return "RogueCorpse1";
case 55: return "RogueCorpse2";
case 56: return "RogueCorpseRolling";
case 57: return "CorpseOnStick1";
case 58: return "CorpseOnStick2";
case 59: return "TownPortal";
case 60: return "PermanentTownPortal";
case 61: return "InvisibleObject";
case 62: return "DoorCathedralLeft";
case 63: return "DoorCathedralRight";
case 64: return "DoorWoodenLeft2";
case 65: return "InvisibleRiverSound1";
case 66: return "InvisibleRiverSound2";
case 67: return "Ripple1";
case 68: return "Ripple2";
case 69: return "Ripple3";
case 70: return "Ripple4";
case 71: return "ForestNightSound1";
case 72: return "ForestNightSound2";
case 73: return "YetiDung";
case 74: return "TrappDoor";
case 75: return "DoorByAct2Dock";
case 76: return "SewerDrip";
case 77: return "HealthOrama";
case 78: return "InvisibleTownSound";
case 79: return "Casket3";
case 80: return "Obelisk";
case 81: return "ForestAltar";
case 82: return "BubblingPoolOfBlood";
case 83: return "HornShrine";
case 84: return "HealingWell";
case 85: return "BullHealthShrine";
case 86: return "SteleDesertMagicShrine";
case 87: return "TombLargeChestL";
case 88: return "TombLargeChestR";
case 89: return "Sarcophagus";
case 90: return "DesertObelisk";
case 91: return "TombDoorLeft";
case 92: return "TombDoorRight";
case 93: return "InnerHellManaShrine";
case 94: return "LargeUrn4";
case 95: return "LargeUrn5";
case 96: return "InnerHellHealthShrine";
case 97: return "InnerHellShrine";
case 98: return "TombDoorLeft2";
case 99: return "TombDoorRight2";
case 100: return "DurielsLairPortal";
case 101: return "Brazier3";
case 102: return "FloorBrazier";
case 103: return "Flies";
case 104: return "ArmorStandRight";
case 105: return "ArmorStandLeft";
case 106: return "WeaponRackRight";
case 107: return "WeaponRackLeft";
case 108: return "Malus";
case 109: return "PalaceHealthShrine";
case 110: return "Drinker";
case 111: return "Fountain1";
case 112: return "Gesturer";
case 113: return "DesertFountain";
case 114: return "Turner";
case 115: return "Fountain3";
case 116: return "SnakeWomanShrine";
case 117: return "JungleTorch";
case 118: return "Fountain4";
case 119: return "WaypointPortal";
case 120: return "DungeonHealthShrine";
case 121: return "JerhynPlaceHolder1";
case 122: return "JerhynPlaceHolder2";
case 123: return "InnerHellShrine2";
case 124: return "InnerHellShrine3";
case 125: return "InnerHellHiddenStash";
case 126: return "InnerHellSkullPile";
case 127: return "InnerHellHiddenStash2";
case 128: return "InnerHellHiddenStash3";
case 129: return "SecretDoor1";
case 130: return "Act1WildernessWell";
case 131: return "VileDogAfterglow";
case 132: return "CathedralWell";
case 133: return "ArcaneSanctuaryShrine";
case 134: return "DesertShrine2";
case 135: return "DesertShrine3";
case 136: return "DesertShrine1";
case 137: return "DesertWell";
case 138: return "CaveWell";
case 139: return "Act1LargeChestRight";
case 140: return "Act1TallChestRight";
case 141: return "Act1MediumChestRight";
case 142: return "DesertJug1";
case 143: return "DesertJug2";
case 144: return "Act1LargeChest1";
case 145: return "InnerHellWaypoint";
case 146: return "Act2MediumChestRight";
case 147: return "Act2LargeChestRight";
case 148: return "Act2LargeChestLeft";
case 149: return "TaintedSunAltar";
case 150: return "DesertShrine5";
case 151: return "DesertShrine4";
case 152: return "HoradricOrifice";
case 153: return "TyraelsDoor";
case 154: return "GuardCorpse";
case 155: return "HiddenStashRock";
case 156: return "Act2Waypoint";
case 157: return "Act1WildernessWaypoint";
case 158: return "SkeletonCorpseIsAnOxymoron";
case 159: return "HiddenStashRockB";
case 160: return "SmallFire";
case 161: return "MediumFire";
case 162: return "LargeFire";
case 163: return "Act1CliffHidingSpot";
case 164: return "ManaWell1";
case 165: return "ManaWell2";
case 166: return "ManaWell3";
case 167: return "ManaWell4";
case 168: return "ManaWell5";
case 169: return "HollowLog";
case 170: return "JungleHealWell";
case 171: return "SkeletonCorpseIsStillAnOxymoron";
case 172: return "DesertHealthShrine";
case 173: return "ManaWell7";
case 174: return "LooseRock";
case 175: return "LooseBoulder";
case 176: return "MediumChestLeft";
case 177: return "LargeChestLeft2";
case 178: return "GuardCorpseOnAStick";
case 179: return "Bookshelf1";
case 180: return "Bookshelf2";
case 181: return "JungleChest";
case 182: return "TombCoffin";
case 183: return "JungleMediumChestLeft";
case 184: return "JungleShrine2";
case 185: return "JungleStashObject1";
case 186: return "JungleStashObject2";
case 187: return "JungleStashObject3";
case 188: return "JungleStashObject4";
case 189: return "DummyCainPortal";
case 190: return "JungleShrine3";
case 191: return "JungleShrine4";
case 192: return "TeleportationPad1";
case 193: return "LamEsensTome";
case 194: return "StairsL";
case 195: return "StairsR";
case 196: return "FloorTrap";
case 197: return "JungleShrine5";
case 198: return "TallChestLeft";
case 199: return "MephistoShrine1";
case 200: return "MephistoShrine2";
case 201: return "MephistoShrine3";
case 202: return "MephistoManaShrine";
case 203: return "MephistoLair";
case 204: return "StashBox";
case 205: return "StashAltar";
case 206: return "MafistoHealthShrine";
case 207: return "Act3WaterRocks";
case 208: return "Basket1";
case 209: return "Basket2";
case 210: return "Act3WaterLogs";
case 211: return "Act3WaterRocksGirl";
case 212: return "Act3WaterBubbles";
case 213: return "Act3WaterLogsX";
case 214: return "Act3WaterRocksB";
case 215: return "Act3WaterRocksGirlC";
case 216: return "Act3WaterRocksY";
case 217: return "Act3WaterLogsZ";
case 218: return "WebCoveredTree1";
case 219: return "WebCoveredTree2";
case 220: return "WebCoveredTree3";
case 221: return "WebCoveredTree4";
case 222: return "Pillar";
case 223: return "Cocoon";
case 224: return "Cocoon2";
case 225: return "SkullPileH1";
case 226: return "OuterHellShrine";
case 227: return "Act3WaterRocksGirlW";
case 228: return "Act3BigLog";
case 229: return "SlimeDoor1";
case 230: return "SlimeDoor2";
case 231: return "OuterHellShrine2";
case 232: return "OuterHellShrine3";
case 233: return "PillarH2";
case 234: return "Act3BigLogC";
case 235: return "Act3BigLogD";
case 236: return "HellHealthShrine";
case 237: return "Act3TownWaypoint";
case 238: return "WaypointH";
case 239: return "BurningBodyTown";
case 240: return "Gchest1L";
case 241: return "Gchest2R";
case 242: return "Gchest3R";
case 243: return "GLchest3L";
case 244: return "SewersRatNest";
case 245: return "BurningBodyTown2";
case 246: return "SewersRatNest2";
case 247: return "Act1BedBed1";
case 248: return "Act1BedBed2";
case 249: return "HellManaShrine";
case 250: return "ExplodingCow";
case 251: return "GidbinnAltar";
case 252: return "GidbinnAltarDecoy";
case 253: return "DiabloRightLight";
case 254: return "DiabloLeftLight";
case 255: return "DiabloStartPoint";
case 256: return "Act1CabinStool";
case 257: return "Act1CabinWood";
case 258: return "Act1CabinWood2";
case 259: return "HellSkeletonSpawnNW";
case 260: return "Act1HolyShrine";
case 261: return "TombsFloorTrapSpikes";
case 262: return "Act1CathedralShrine";
case 263: return "Act1JailShrine1";
case 264: return "Act1JailShrine2";
case 265: return "Act1JailShrine3";
case 266: return "MaggotLairGooPile";
case 267: return "Bank";
case 268: return "WirtCorpse";
case 269: return "GoldPlaceHolder";
case 270: return "GuardCorpse2";
case 271: return "DeadVillager1";
case 272: return "DeadVillager2";
case 273: return "DummyFlameNoDamage";
case 274: return "TinyPixelShapedThingie";
case 275: return "CavesHealthShrine";
case 276: return "CavesManaShrine";
case 277: return "CaveMagicShrine";
case 278: return "Act3DungeonManaShrine";
case 279: return "Act3SewersMagicShrine1";
case 280: return "Act3SewersHealthWell";
case 281: return "Act3SewersManaWell";
case 282: return "Act3SewersMagicShrine2";
case 283: return "Act2BrazierCeller";
case 284: return "Act2TombAnubisCoffin";
case 285: return "Act2Brazier";
case 286: return "Act2BrazierTall";
case 287: return "Act2BrazierSmall";
case 288: return "Act2CellerWaypoint";
case 289: return "HarumBedBed";
case 290: return "IronGrateDoorLeft";
case 291: return "IronGrateDoorRight";
case 292: return "WoodenGrateDoorLeft";
case 293: return "WoodenGrateDoorRight";
case 294: return "WoodenDoorLeft";
case 295: return "WoodenDoorRight";
case 296: return "TombsWallTorchLeft";
case 297: return "TombsWallTorchRight";
case 298: return "ArcaneSanctuaryPortal";
case 299: return "Act2HaramMagicShrine1";
case 300: return "Act2HaramMagicShrine2";
case 301: return "MaggotHealthWell";
case 302: return "MaggotManaWell";
case 303: return "ArcaneSanctuaryMagicShrine";
case 304: return "TeleportationPad2";
case 305: return "TeleportationPad3";
case 306: return "TeleportationPad4";
case 307: return "DummyArcaneThing1";
case 308: return "DummyArcaneThing2";
case 309: return "DummyArcaneThing3";
case 310: return "DummyArcaneThing4";
case 311: return "DummyArcaneThing5";
case 312: return "DummyArcaneThing6";
case 313: return "DummyArcaneThing7";
case 314: return "HaremDeadGuard1";
case 315: return "HaremDeadGuard2";
case 316: return "HaremDeadGuard3";
case 317: return "HaremDeadGuard4";
case 318: return "HaremEunuchBlocker";
case 319: return "ArcaneHealthWell";
case 320: return "ArcaneManaWell";
case 321: return "TestData2";
case 322: return "Act2TombWell";
case 323: return "Act2SewerWaypoint";
case 324: return "Act3TravincalWaypoint";
case 325: return "Act3SewerMagicShrine";
case 326: return "Act3SewerDeadBody";
case 327: return "Act3SewerTorch";
case 328: return "Act3KurastTorch";
case 329: return "MafistoLargeChestLeft";
case 330: return "MafistoLargeChestRight";
case 331: return "MafistoMediumChestLeft";
case 332: return "MafistoMediumChestRight";
case 333: return "SpiderLairLargeChestLeft";
case 334: return "SpiderLairTallChestLeft";
case 335: return "SpiderLairMediumChestRight";
case 336: return "SpiderLairTallChestRight";
case 337: return "SteegStone";
case 338: return "GuildVault";
case 339: return "TrophyCase";
case 340: return "MessageBoard";
case 341: return "MephistoBridge";
case 342: return "HellGate";
case 343: return "Act3KurastManaWell";
case 344: return "Act3KurastHealthWell";
case 345: return "HellFire1";
case 346: return "HellFire2";
case 347: return "HellFire3";
case 348: return "HellLava1";
case 349: return "HellLava2";
case 350: return "HellLava3";
case 351: return "HellLightSource1";
case 352: return "HellLightSource2";
case 353: return "HellLightSource3";
case 354: return "HoradricCubeChest";
case 355: return "HoradricScrollChest";
case 356: return "StaffOfKingsChest";
case 357: return "YetAnotherTome";
case 358: return "HellBrazier1";
case 359: return "HellBrazier2";
case 360: return "DungeonRockPile";
case 361: return "Act3DungeonMagicShrine";
case 362: return "Act3DungeonBasket";
case 363: return "OuterHellHungSkeleton";
case 364: return "GuyForDungeon";
case 365: return "Act3DungeonCasket";
case 366: return "Act3SewerStairs";
case 367: return "Act3SewerStairsToLevel3";
case 368: return "DarkWandererStartPosition";
case 369: return "TrappedSoulPlaceHolder";
case 370: return "Act3TownTorch";
case 371: return "LargeChestR";
case 372: return "InnerHellBoneChest";
case 373: return "HellSkeletonSpawnNE";
case 374: return "Act3WaterFog";
case 375: return "DummyNotUsed";
case 376: return "HellForge";
case 377: return "GuildPortal";
case 378: return "HratliStartPosition";
case 379: return "HratliEndPosition";
case 380: return "BurningTrappedSoul1";
case 381: return "BurningTrappedSoul2";
case 382: return "NatalyaStartPosition";
case 383: return "StuckedTrappedSoul1";
case 384: return "StuckedTrappedSoul2";
case 385: return "CainStartPosition";
case 386: return "StairSR";
case 387: return "ArcaneLargeChestLeft";
case 388: return "ArcaneCasket";
case 389: return "ArcaneLargeChestRight";
case 390: return "ArcaneSmallChestLeft";
case 391: return "ArcaneSmallChestRight";
case 392: return "DiabloSeal1";
case 393: return "DiabloSeal2";
case 394: return "DiabloSeal3";
case 395: return "DiabloSeal4";
case 396: return "DiabloSeal5";
case 397: return "SparklyChest";
case 398: return "PandamoniumFortressWaypoint";
case 399: return "InnerHellFissure";
case 400: return "HellMesaBrazier";
case 401: return "Smoke";
case 402: return "ValleyWaypoint";
case 403: return "HellBrazier3";
case 404: return "CompellingOrb";
case 405: return "KhalimChest1";
case 406: return "KhalimChest2";
case 407: return "KhalimChest3";
case 408: return "SiegeMachineControl";
case 409: return "PotOTorch";
case 410: return "PyoxFirePit";
case 413: return "ExpansionChestRight";
case 414: return "ExpansionWildernessShrine1";
case 415: return "ExpansionWildernessShrine2";
case 416: return "ExpansionHiddenStash";
case 417: return "ExpansionWildernessFlag";
case 418: return "ExpansionWildernessBarrel";
case 419: return "ExpansionSiegeBarrel";
case 420: return "ExpansionWoodChestLeft";
case 421: return "ExpansionWildernessShrine3";
case 422: return "ExpansionManaShrine";
case 423: return "ExpansionHealthShrine";
case 424: return "BurialChestLeft";
case 425: return "BurialChestRight";
case 426: return "ExpansionWell";
case 427: return "ExpansionWildernessShrine4";
case 428: return "ExpansionWildernessShrine5";
case 429: return "ExpansionWaypoint";
case 430: return "ExpansionChestLeft";
case 431: return "ExpansionWoodChestRight";
case 432: return "ExpansionSmallChestLeft";
case 433: return "ExpansionSmallChestRight";
case 434: return "ExpansionTorch1";
case 435: return "ExpansionCampFire";
case 436: return "ExpansionTownTorch";
case 437: return "ExpansionTorch2";
case 438: return "ExpansionBurningBodies";
case 439: return "ExpansionBurningPit";
case 440: return "ExpansionTribalFlag";
case 441: return "ExpansionTownFlag";
case 442: return "ExpansionChandelier";
case 443: return "ExpansionJar1";
case 444: return "ExpansionJar2";
case 445: return "ExpansionJar3";
case 446: return "ExpansionSwingingHeads";
case 447: return "ExpansionWildernessPole";
case 448: return "AnimatedSkullAndRockPile";
case 449: return "ExpansionTownGate";
case 450: return "SkullAndRockPile";
case 451: return "SiegeHellGate";
case 452: return "EnemyCampBanner1";
case 453: return "EnemyCampBanner2";
case 454: return "ExpansionExplodingChest";
case 455: return "ExpansionSpecialChest";
case 456: return "ExpansionDeathPole";
case 457: return "ExpansionDeathPoleLeft";
case 458: return "TempleAltar";
case 459: return "DrehyaTownStartPosition";
case 460: return "DrehyaWildernessStartPosition";
case 461: return "NihlathakTownStartPosition";
case 462: return "NihlathakWildernessStartPosition";
case 463: return "IceCaveHiddenStash";
case 464: return "IceCaveHealthShrine";
case 465: return "IceCaveManaShrine";
case 466: return "IceCaveEvilUrn";
case 467: return "IceCaveJar1";
case 468: return "IceCaveJar2";
case 469: return "IceCaveJar3";
case 470: return "IceCaveJar4";
case 471: return "IceCaveJar5";
case 472: return "IceCaveMagicShrine";
case 473: return "CagedWussie";
case 474: return "AncientStatue3";
case 475: return "AncientStatue1";
case 476: return "AncientStatue2";
case 477: return "DeadBarbarian";
case 478: return "ClientSmoke";
case 479: return "IceCaveMagicShrine2";
case 480: return "IceCaveTorch1";
case 481: return "IceCaveTorch2";
case 482: return "ExpansionTikiTorch";
case 483: return "WorldstoneManaShrine";
case 484: return "WorldstoneHealthShrine";
case 485: return "WorldstoneTomb1";
case 486: return "WorldstoneTomb2";
case 487: return "WorldstoneTomb3";
case 488: return "WorldstoneMagicShrine";
case 489: return "WorldstoneTorch1";
case 490: return "WorldstoneTorch2";
case 491: return "ExpansionSnowyManaShrine1";
case 492: return "ExpansionSnowyHealthShrine";
case 493: return "ExpansionSnowyWell";
case 494: return "WorldstoneWaypoint";
case 495: return "ExpansionSnowyMagicShrine2";
case 496: return "ExpansionWildernessWaypoint";
case 497: return "ExpansionSnowyMagicShrine3";
case 498: return "WorldstoneWell";
case 499: return "WorldstoneMagicShrine2";
case 500: return "ExpansionSnowyObject1";
case 501: return "ExpansionSnowyWoodChestLeft";
case 502: return "ExpansionSnowyWoodChestRight";
case 503: return "WorldstoneMagicShrine3";
case 504: return "ExpansionSnowyWoodChest2Left";
case 505: return "ExpansionSnowyWoodChest2Right";
case 506: return "SnowySwingingHeads";
case 507: return "SnowyDebris";
case 508: return "PenBreakableDoor";
case 509: return "ExpansionTempleMagicShrine1";
case 510: return "ExpansionSnowyPoleMR";
case 511: return "IceCaveWaypoint";
case 512: return "ExpansionTempleMagicShrine2";
case 513: return "ExpansionTempleWell";
case 514: return "ExpansionTempleTorch1";
case 515: return "ExpansionTempleTorch2";
case 516: return "ExpansionTempleObject1";
case 517: return "ExpansionTempleObject2";
case 518: return "WorldstoneMrBox";
case 519: return "IceCaveWell";
case 520: return "ExpansionTempleMagicShrine";
case 521: return "ExpansionTempleHealthShrine";
case 522: return "ExpansionTempleManaShrine";
case 523: return "BlacksmithForge";
case 524: return "WorldstoneTomb1Left";
case 525: return "WorldstoneTomb2Left";
case 526: return "WorldstoneTomb3Left";
case 527: return "IceCaveBubblesU";
case 528: return "IceCaveBubblesS";
case 529: return "RedBaalsLairTomb1";
case 530: return "RedBaalsLairTomb1Left";
case 531: return "RedBaalsLairTomb2";
case 532: return "RedBaalsLairTomb2Left";
case 533: return "RedBaalsLairTomb3";
case 534: return "RedBaalsLairTomb3Left";
case 535: return "RedBaalsLairMrBox";
case 536: return "RedBaalsLairTorch1";
case 537: return "RedBaalsLairTorch2";
case 538: return "CandlesTemple";
case 539: return "TempleWaypoint";
case 540: return "ExpansionDeadPerson1";
case 541: return "TempleGroundTomb";
case 542: return "LarzukGreeting";
case 543: return "LarzukStandard";
case 544: return "TempleGroundTombLeft";
case 545: return "ExpansionDeadPerson2";
case 546: return "AncientsAltar";
case 547: return "ArreatSummitDoorToWorldstone";
case 548: return "ExpansionWeaponRackRight";
case 549: return "ExpansionWeaponRackLeft";
case 550: return "ExpansionArmorStandRight";
case 551: return "ExpansionArmorStandLeft";
case 552: return "ArreatsSummitTorch2";
case 553: return "ExpansionFuneralSpire";
case 554: return "ExpansionBurningLogs";
case 555: return "IceCaveSteam";
case 556: return "ExpansionDeadPerson3";
case 557: return "BaalsLair";
case 558: return "FrozenAnya";
case 559: return "BBQBunny";
case 560: return "BaalTorchBig";
case 561: return "InvisibleAncient";
case 562: return "InvisibleBase";
case 563: return "BaalsPortal";
case 564: return "ArreatSummitDoor";
case 565: return "LastPortal";
case 566: return "LastLastPortal";
case 567: return "ZooTestData";
case 568: return "KeeperTestData";
case 569: return "BaalsPortal2";
case 570: return "FirePlaceGuy";
case 571: return "DoorBlocker1";
case 572: return "DoorBlocker2";
case 580: return "GoodChest";
case 581: return "NotSoGoodChest";
}
return "";
}
public bool IsWaypoint(int txtFileNo)
{
switch (txtFileNo)
{
case 539: return true;
case 511: return true;
case 496: return true;
case 494: return true;
case 429: return true;
case 402: return true;
case 398: return true;
case 323: return true;
case 324: return true;
case 288: return true;
case 237: return true;
case 238: return true;
case 156: return true;
case 157: return true;
case 145: return true;
case 119: return true;
default: return false;
}
}
public int isChest(int txtFileNo)
{
switch (txtFileNo)
{
case 1: return 1; //";Casket5";
case 3: return 1; //";Casket6";
case 5: return 1; //";LargeChestRight";
case 6: return 1; //";LargeChestLeft";
case 50: return 1; //";CasketR";
case 51: return 1; //";CasketL";
case 53: return 1; //";Casket";
case 54: return 1; //";RogueCorpse1";
case 55: return 1; //";RogueCorpse2";
case 56: return 1; //";RogueCorpseRolling";
case 57: return 1; //";CorpseOnStick1";
case 58: return 1; //";CorpseOnStick2";
case 79: return 1; //";Casket3";
case 87: return 1; //";TombLargeChestL";
case 88: return 1; //";TombLargeChestR";
case 89: return 1; //";Sarcophagus";
case 125: return 1; //";InnerHellHiddenStash";
case 126: return 1; //";InnerHellSkullPile";
case 127: return 1; //";InnerHellHiddenStash2";
case 128: return 1; //";InnerHellHiddenStash3";
case 139: return 1; //";Act1LargeChestRight";
case 140: return 1; //";Act1TallChestRight";
case 141: return 1; //";Act1MediumChestRight";
case 144: return 1; //";Act1LargeChest1";
case 146: return 1; //";Act2MediumChestRight";
case 147: return 1; //";Act2LargeChestRight";
case 148: return 1; //";Act2LargeChestLeft";
case 154: return 1; //";GuardCorpse";
case 155: return 1; //";HiddenStashRock";
case 158: return 1; //";SkeletonCorpseIsAnOxymoron";
case 159: return 1; //";HiddenStashRockB";
case 169: return 1; //";HollowLog";
case 171: return 1; //";SkeletonCorpseIsStillAnOxymoron";
case 174: return 1; //";LooseRock";
case 175: return 1; //";LooseBoulder";
case 176: return 1; //";MediumChestLeft";
case 177: return 1; //";LargeChestLeft2";
case 178: return 1; //";GuardCorpseOnAStick";
case 181: return 1; //";JungleChest";
case 182: return 1; //";TombCoffin";
case 183: return 1; //";JungleMediumChestLeft";
case 185: return 1; //";JungleStashObject1";
case 186: return 1; //";JungleStashObject2";
case 187: return 1; //";JungleStashObject3";
case 188: return 1; //";JungleStashObject4";
case 198: return 1; //";TallChestLeft";
case 203: return 1; //";MephistoLair";
case 204: return 1; //";StashBox";
case 205: return 1; //";StashAltar";
case 223: return 1; //";Cocoon";
case 224: return 1; //";Cocoon2";
case 225: return 1; //";SkullPileH1";
case 240: return 1; //";Gchest1L";
case 241: return 1; //";Gchest2R";
case 242: return 1; //";Gchest3R";
case 243: return 1; //";GLchest3L";
case 244: return 1; //";SewersRatNest";
case 247: return 1; //";Act1BedBed1";
case 248: return 1; //";Act1BedBed2";
case 266: return 1; //";MaggotLairGooPile";
case 268: return 1; //";WirtCorpse";
case 270: return 1; //";GuardCorpse2";
case 271: return 1; //";DeadVillager1";
case 272: return 1; //";DeadVillager2";
case 274: return 1; //";TinyPixelShapedThingie";
case 284: return 1; //";Act2TombAnubisCoffin";
case 314: return 1; //";HaremDeadGuard1";
case 315: return 1; //";HaremDeadGuard2";
case 316: return 1; //";HaremDeadGuard3";
case 317: return 1; //";HaremDeadGuard4";
case 326: return 1; //";Act3SewerDeadBody";
case 329: return 1; //";MafistoLargeChestLeft";
case 330: return 1; //";MafistoLargeChestRight";
case 331: return 1; //";MafistoMediumChestLeft";
case 332: return 1; //";MafistoMediumChestRight";
case 333: return 1; //";SpiderLairLargeChestLeft";
case 334: return 1; //";SpiderLairTallChestLeft";
case 335: return 1; //";SpiderLairMediumChestRight";
case 336: return 1; //";SpiderLairTallChestRight";
case 354: return 1; //";HoradricCubeChest";
case 355: return 1; //";HoradricScrollChest";
case 356: return 1; //";StaffOfKingsChest";
case 360: return 1; //";DungeonRockPile";
case 371: return 1; //";LargeChestR";
case 372: return 1; //";InnerHellBoneChest";
case 380: return 1; //";BurningTrappedSoul1";
case 381: return 1; //";BurningTrappedSoul2";
case 383: return 1; //";StuckedTrappedSoul1";
case 384: return 1; //";StuckedTrappedSoul2";
case 387: return 1; //";ArcaneLargeChestLeft";
case 388: return 1; //";ArcaneCasket";
case 389: return 1; //";ArcaneLargeChestRight";
case 390: return 1; //";ArcaneSmallChestLeft";
case 391: return 1; //";ArcaneSmallChestRight";
case 397: return 1; //";SparklyChest";
case 405: return 1; //";KhalimChest1";
case 406: return 1; //";KhalimChest2";
case 407: return 1; //";KhalimChest3";
case 413: return 1; //";ExpansionChestRight";
case 416: return 1; //";ExpansionHiddenStash";
case 420: return 1; //";ExpansionWoodChestLeft";
case 424: return 1; //";BurialChestLeft";
case 425: return 1; //";BurialChestRight";
case 430: return 1; //";ExpansionChestLeft";
case 431: return 1; //";ExpansionWoodChestRight";
case 432: return 1; //";ExpansionSmallChestLeft";
case 433: return 1; //";ExpansionSmallChestRight";
case 454: return 1; //";ExpansionExplodingChest";
case 455: return 1; //";ExpansionSpecialChest";
case 463: return 1; //";IceCaveHiddenStash";
case 466: return 1; //";IceCaveEvilUrn";
case 485: return 1; //";WorldstoneTomb1";
case 486: return 1; //";WorldstoneTomb2";
case 487: return 1; //";WorldstoneTomb3";
case 501: return 1; //";ExpansionSnowyWoodChestLeft";
case 502: return 1; //";ExpansionSnowyWoodChestRight";
case 504: return 1; //";ExpansionSnowyWoodChest2Left";
case 505: return 1; //";ExpansionSnowyWoodChest2Right";
case 518: return 1; //";WorldstoneMrBox";
case 524: return 1; //";WorldstoneTomb1Left";
case 525: return 1; //";WorldstoneTomb2Left";
case 526: return 1; //";WorldstoneTomb3Left";
case 529: return 1; //";RedBaalsLairTomb1";
case 530: return 1; //";RedBaalsLairTomb1Left";
case 531: return 1; //";RedBaalsLairTomb2";
case 532: return 1; //";RedBaalsLairTomb2Left";
case 533: return 1; //";RedBaalsLairTomb3";
case 534: return 1; //";RedBaalsLairTomb3Left";
case 535: return 1; //";RedBaalsLairMrBox";
case 540: return 1; //";ExpansionDeadPerson1";
case 541: return 1; //";TempleGroundTomb";
case 544: return 1; //";TempleGroundTombLeft";
case 545: return 1; //";ExpansionDeadPerson2";
case 556: return 1; //";ExpansionDeadPerson3";
case 580: return 1; //";GoodChest";
case 581: return 1; //";NotSoGoodChest
default: return 0;
}
}
public string chestState(int interactType)
{
switch (interactType)
{
case 0:
return "";
case 4:
return "trap";
case 128:
return "locked";
}
return "";
}
/*public string shrineType(int interactType)
{
switch (interactType)
{
case 1: return localizedStrings["ShrId1"];
case 2: return localizedStrings["ShrId2"];
case 3: return localizedStrings["ShrId3"];
case 4: return localizedStrings["ShrId4"];
case 5: return localizedStrings["ShrId5"];
case 6: return localizedStrings["ShrId6"];
case 7: return localizedStrings["ShrId7"];
case 8: return localizedStrings["ShrId8"];
case 9: return localizedStrings["ShrId9"];
case 10: return localizedStrings["ShrId10"];
case 11: return localizedStrings["ShrId11"];
case 12: return localizedStrings["ShrId12"];
case 13: return localizedStrings["ShrId13"];
case 14: return localizedStrings["ShrId14"];
case 15: return localizedStrings["ShrId15"];
case 16: return localizedStrings["ShrId16"];
case 17: return localizedStrings["ShrId17"];
case 18: return localizedStrings["ShrId18"];
case 19: return localizedStrings["ShrId19"];
case 20: return localizedStrings["ShrId20"];
case 21: return localizedStrings["ShrId21"];
case 22: return localizedStrings["ShrId22"];
}
return "";
}*/
}
}