All pastes #585413 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-06-23 07:25 UTC
rendered paste body
        private void GameThread()
        {
            Chief.Game game = new Chief.Game();

            game.Attach(this.SelectedProcess);
            AppendText("Attached" + Environment.NewLine);

            System.Threading.Thread.Sleep(250);

            Chief.PacketConfirmation waitForGo = delegate(object packet)
                {
                    string msg = (packet as GameClient.SendMessage).Message;
                    if (msg.ToLower() == "go")
                        return true;
                    else
                        return false;
                };

            game.WaitForPacket(D2Packets.GameClientPacket.SendMessage, waitForGo, 60 * 60 * 1000);

            AppendText("Started" + Environment.NewLine);

            //AppendText("Hero UID: " + game.Hero.UID + Environment.NewLine);
            //AppendText("       X: " + game.Hero.X + Environment.NewLine);
            //AppendText("       Y: " + game.Hero.Y + Environment.NewLine);

            /* Switch weapons | CTA

            bool hasCTABeenFound = false;

            for(int tries=0;tries<10;tries++)
            {
                if(game.Hero.GetItemAt(EquipmentLocation.LeftHand) != null)
                    if(game.Hero.GetItemAt(EquipmentLocation.LeftHand).Runeword == BaseRuneword.GetByName("Call to Arms"))
                        hasCTABeenFound = true;

                if(game.Hero.GetItemAt(EquipmentLocation.RightHand) != null)
                    if(game.Hero.GetItemAt(EquipmentLocation.RightHand).Runeword == BaseRuneword.GetByName("Call to Arms"))
                        hasCTABeenFound = true;

                if(hasCTABeenFound)
                    break;

                if(tries == 9)
                    AppendText("Tried switching to CTA 10 times, failed!" + Environment.NewLine);

                game.SwitchWeaponSlotWait();
            }

            if (hasCTABeenFound)
            {
                game.SelectSkill(SkillHand.Right, SkillType.BattleCommand);
                game.CastRightSkill((int)game.Hero.X, (int)game.Hero.Y);

                System.Threading.Thread.Sleep(250);

                game.SelectSkill(SkillHand.Right, SkillType.BattleOrders);
                game.CastRightSkill((int)game.Hero.X, (int)game.Hero.Y);
            }
            */

            /* Move from: start of act 5, to: Red Portal
             */
            game.MoveWait(5103, 5043);
            game.MoveWait(5110, 5064);
            


            /* Eldritch
             */
            game.WaypointInteract(game.Objects.Find("ExpansionWaypoint"), D2Data.WaypointDestination.FrigidHighlands);

            game.TeleportWait(3760, 5097);
            game.TeleportWait(3750, 5078);

            List<NPC> eldritchAndMinions;

            while ((eldritchAndMinions = game.Units.FindAll("MinionExp")) == null)
                System.Threading.Thread.Sleep(10);

            AppendText("Found: " + eldritchAndMinions.Count + " MinionExp" + Environment.NewLine);

            for (int i = eldritchAndMinions.Count - 1; i > 0; i--)
            {
                AppendText("Targetting: " + eldritchAndMinions[i].UID + Environment.NewLine);

                while (eldritchAndMinions[i].State != GameServer.NPCMode.Dead && eldritchAndMinions[i].State != GameServer.NPCMode.Dying)
                {
                    AppendText("Attacking: " + eldritchAndMinions[i].UID + Environment.NewLine);

                    game.Attack(eldritchAndMinions[i], D2Data.SkillType.Lightning);
                    System.Threading.Thread.Sleep(250);
                }
            }

            // Back to WP
            game.TeleportWait(3760, 5097);
            game.TeleportWait(3784, 5111);

            game.WaypointInteract(game.Objects.Find("ExpansionWildernessWaypoint"), D2Data.WaypointDestination.Harrogath);
            //*/

            /* Pindle
             */
            game.MoveWait(5119, 5090);
            game.MoveWait(5131, 5108);
            game.MoveWait(5119, 5120);

            game.PortalInteract(game.Objects.Find("PermanentTownPortal"));

            game.TeleportWait(10064, 13293);
            game.TeleportWait(10063, 13268);
            game.TeleportWait(10058, 13238);

            List<NPC> pindleAndMinions;

            while ((pindleAndMinions = game.Units.FindAll("DefiledWarrior")) == null)
                System.Threading.Thread.Sleep(10);

            AppendText("Found: " + pindleAndMinions.Count + " DefiledWarriors" + Environment.NewLine);

            // Go backwards down the list of units, because pindle is the last one we get
            for (int i = pindleAndMinions.Count-1; i > 0; i--)
            {
                AppendText("Targetting: " + pindleAndMinions[i].UID + Environment.NewLine);

                while (pindleAndMinions[i].State != GameServer.NPCMode.Dead && pindleAndMinions[i].State != GameServer.NPCMode.Dying)
                {
                    AppendText("Attacking: " + pindleAndMinions[i].UID + Environment.NewLine);

                    game.Attack(pindleAndMinions[i], D2Data.SkillType.Lightning);
                    System.Threading.Thread.Sleep(250);
                }
            }
            //*/

            AppendText("All done, cleaning up!" + Environment.NewLine);

            // Clean up
            game.Clear();
        }