With my Horde Remake Release - ive decided to relase Every single piece of code ive ever written, discovered, edited, messed with etc.
I put... MANY .. MANY Manyyy hours into this list. Because i have a disibility with my memory @elitecasaj00 Reccomended that i "write it all down". Using VS to create the code for the specific quest and adding to my cheatsheet.
Youll notice i have specific names for the // commands -- like // Gather, harvest, xgather - runcode - so i can CTRL-F stuff easier.
Not all credit was given proper to the authers of some of this code, however the ones i do know off the top of my head are @Droidz, @Matenia, @Smokie @reapler
and on some i tried copying the exact url of where i found it.
@Droidz Can you Pin this topic - I think it is sup sup helpfull !
So this is my new updated version.
Add everything in this code box to a Notepad++ ffile or in Visual Studio. and done! Hope you guys benefit from it all.
I used // Comments to add important information so, be sure to check it out.
I hope this helps!
With the release of my new HORDE REMAKE
I have decided to release ALL of my codes i have made over time, all the codes i have found by other users, modified, edited, you name it.
With this any new profile creator should have all the tools necessary to begin writing a script!!
// TBC USe Item On Dead Mob ( Make Interact Quest Helper (dead mobs checked)
wManager.Events.InteractEvents.OnInteractPulse += (target, cancelable) =>
{
var t = wManager.Wow.ObjectManager.ObjectManager.GetObjectByGuid(target);
if (!t.IsValid)
return;
var e = t.Entry;
if (e == 21859 || e == 21846)
{
System.Threading.Tasks.Task.Run(delegate {
System.Threading.Thread.Sleep(wManager.Wow.Helpers.Usefuls.Latency + 100);
wManager.Wow.Helpers.ClickOnTerrain.Item(31769, t.Position);
});
}
};
_____________________________________________________________________________________________________________________________________
// RunCode - Interact with ObjectID - Gather Object RunCode FNV
var pos = new Vector3(199.9151f, 3472.976f, 63.24443f);
int objectId = 184115 ;
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(pos, objectId);
Thread.Sleep(Usefuls.Latency + 10000);
if(ItemsManager.GetItemCountById(23339) < 1)
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(pos, objectId);
Thread.Sleep(Usefuls.Latency + 10000);
}
_____________________________________________________________________________________________________________________________________
// Interact with game object RunCode (Not by me) - https://wrobot.eu/forums/topic/11371-game-object/?tab=comments#comment-54611
var Object = ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(1234));
// or var Object = ObjectManager.GetObjectWoWGameObject().Where(o => o.IsValid && o.Entry == 1234).OrderBy(o => o.GetDistance).FirstOrDefault();
if (GoToTask.ToPosition(new Vector3(1, 2, 3, "None"))) // replace "flying" with "None" to ground move
{
if (Object != null)
{
Interact.InteractGameObject(Object.GetBaseAddress);
Usefuls.WaitIsCasting();
}
}
_____________________________________________________________________________________________________________________________________
// Droidz Code from "Code Snipets - Use Item on Hostile or Weakend Mob"
// Add step type "PickUp" (put quest name in parameter)
// Add step type "RunCode", in parameter put this code:
Thread t = new Thread(() =>
{
uint itemId = 62899;
int questId = 28000;
while (robotManager.Products.Products.IsStarted)
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (!Quest.HasQuest(questId))
break;
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 25)
{
ItemsManager.UseItem(itemId);
}
}
Thread.Sleep(500);
}
});
t.Start();
//(you need to have quest in your questlog, you can replace "62899" but the item id, "28000" by the quest id and "25" by the max target health)
//Add step type "Pulse" (put quest name in parameter) (use quest type kill or interact)
//Add step type "TurnIn" (put quest name in parameter)
_____________________________________________________________________________________________________________________________________
// Use item on Hostile or Weakend Mob -- VERSIOn 2.0 (Channeling Version)
// Use item on Weakend Mob - Have quest + item ID) (Use Kill and Loot, or Interact with NPC..) - Channeling Version - if you need to channel the Item on the
// mob This is a crazy fucking code but it worked great.
// RunCode - Andoido.
Thread t = new Thread(() =>
{
uint itemId = 6436;
int questId = 1435;
while (robotManager.Products.Products.IsStarted)
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (!Quest.HasQuest(questId))
break;
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 35 )
{
Fight.StopFight();
System.Threading.Thread.Sleep(100);
ItemsManager.UseItem(itemId);
Usefuls.WaitIsCasting();
}
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 35 )
{
ItemsManager.UseItem(itemId);
Usefuls.WaitIsCastingAndLooting();
ItemsManager.UseItem(itemId);
}
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 35 )
{
ItemsManager.UseItem(itemId);
Usefuls.WaitIsCastingAndLooting();
ItemsManager.UseItem(itemId);
ItemsManager.UseItem(itemId);
}
}
Thread.Sleep(200);
}
});
t.Start();
_____________________________________________________________________________________________________________________________________
// has quest, and has item go gather, harvest, useitem
Thread t = new Thread(() =>
{
uint itemId = 62899;
int questId = 28000;
while (robotManager.Products.Products.IsStarted)
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (!Quest.HasQuest(questId))
break;
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 25)
{
ItemsManager.UseItem(itemId);
wManager.wManagerSetting.CurrentSetting.ListHarvest.Add(183933);
}
}
Thread.Sleep(500);
}
});
t.Start();
_____________________________________________________________________________________________________________________________________
// Has Quest go Harvest
Thread t = new Thread(() =>
{
int questId = 28000;
while (robotManager.Products.Products.IsStarted)
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (!Quest.HasQuest(questId))
break;
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 25)
{
wManager.wManagerSetting.CurrentSetting.ListHarvest.Add(183933);
}
}
Thread.Sleep(500);
}
});
t.Start();
_____________________________________________________________________________________________________________________________________
// BOP Pickup BOP Items non loop, loot bop, no loop - RunCode - me
Thread t = new Thread(() =>
{
uint itemId = 16305;
int questId = 2;
while (robotManager.Products.Products.IsStarted && ItemsManager.GetItemCountById(16305) == 0)
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsDead)
{
Lua.LuaDoString("StaticPopup1Button1:Click();");
}
}
Thread.Sleep(100);
}
});
t.Start();
// Part 2 - 2ndary Version - BOP Pickup Items -itemId + questID - Doesnt Have Quest and Item ID == 0 - RuNCode - ME
Thread t = new Thread(() =>
{
uint itemId = 16305;
int questId = 2;
while (robotManager.Products.Products.IsStarted && (itemId == 0) && !Quest.HasQuest(questId))
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsDead)
{
Lua.LuaDoString("StaticPopup1Button1:Click();");
}
}
Thread.Sleep(100);
}
});
t.Start();
_____________________________________________________________________________________________________________________________________
// Auto Delete items from inventory as you farm (requires delete Custom Script in this post..) - Add any item! Every 10 Seconds, it will Auto Delete - When farming, delte thoes pesky, non
// valuable items that piss you off. Best combined with opening Clams (delete the zesty meat!)
// Auto use Scrolls once looted - RunCode
// Mass throw away, mass delete
Thread t = new Thread(() =>
{
uint itemId = 7974;
while (robotManager.Products.Products.IsStarted && (itemId >= 0))
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive)
{
throwAway.DeleteItems("Zesty Clam Meat", 0);
throwAway.DeleteItems("Zesty", 0);
throwAway.DeleteItems("Raw Spinefin Halibut", 0);
throwAway.DeleteItems("Halibut", 0)
throwAway.DeleteItems("Halibut", 0);
throwAway.DeleteItems("Morning Glory Dew", 0);
}
}
Thread.Sleep(10000);
}
});
t.Start();
// Mass Delete Version 2 - Multiple Items, Mass throw away - RunCode - Andoido
Thread t = new Thread(() =>
{
uint itemId = 7974;
uint itemId1 = 4602;
uint itemId2 = 3927;
uint itemId3 = 4601;
uint itemId4 = 4599;
uint itemId5 = 4608;
uint itemId6 = 1645;
uint itemId7 = 8167;
while (robotManager.Products.Products.IsStarted && Quest.HasQuest(2980) && (itemId >= 0 || itemId2 >= 0 || itemId3 >= 0 || itemId4 >= 0 || itemId5 >= 0 || itemId6 >= 0 || itemId7 >= 0))
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive)
{
throwAway.DeleteItems("Zesty Clam Meat", 0);
throwAway.DeleteItems("Zesty", 0);
throwAway.DeleteItems("Raw Spinefin Halibut", 0);
throwAway.DeleteItems("Halibut", 0);
throwAway.DeleteItems("Moon Harvest Pumpkin", 0);
throwAway.DeleteItems("Morning Glory Dew", 0);
throwAway.DeleteItems("Fine Aged Cheddar", 0);
throwAway.DeleteItems("Soft Banana Bread", 0);
throwAway.DeleteItems("Cured Ham Steak", 0);
throwAway.DeleteItems("Raw Black Truffle", 0);
throwAway.DeleteItems("Moonberry Juice", 0);
throwAway.DeleteItems("Turtle Scale", 0);
}
}
Thread.Sleep(10000);
}
});
t.Start();
_____________________________________________________________________________________________________________________________________
// Use item thread (Continuous) - Use Scrolls - Set a timmmer (60 minutes, and it will cast an elixir, etc etc.) make an IF statment, then RUNCODE, then pulse your grind, then ENDIF - RUNCODE - Andoido
Thread t = new Thread(() =>
{
uint itemId = 4425;
uint itemId2 = 4419;
uint itemId3 = 4421;
uint itemId4 = 4424;
uint itemId5 = 4422;
uint itemId6 = 4426;
while (robotManager.Products.Products.IsStarted && (itemId >= 0 || itemId2 >= 0 || itemId3 >= 0 || itemId4 >= 0 || itemId5 >= 0))
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive)
{
ItemsManager.UseItem(itemId);
ItemsManager.UseItem(itemId2);
ItemsManager.UseItem(itemId3);
ItemsManager.UseItem(itemId4);
ItemsManager.UseItem(itemId5);
}
}
Thread.Sleep(5000);
}
});
t.Start();
_____________________________________________________________________________________________________________________________________
// Go to specific location, and Useitem on Object and Harvest + Quest required (RunCode) - me
var pos = new Vector3(-2496.714f, -1632.943f, 91.73521f);
uint itemId = 15710;
int objectId = 177644;
int questId = 6002;
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(pos, objectId);
Thread.Sleep(Usefuls.Latency + 10000);
if (Quest.HasQuest(questId))
{
ItemsManager.UseItem(itemId);
wManager.wManagerSetting.CurrentSetting.ListHarvest.Add(177644);
}
var pos = new Vector3(-2496.714f, -1632.943f, 91.73521f);
uint itemId = 15710;
int objectId = 177644;
int questId = 6002;
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(pos, objectId);
Thread.Sleep(Usefuls.Latency + 5000);
if (Quest.HasQuest(questId))
{
ItemsManager.UseItem(itemId);
}
_____________________________________________________________________________________________________________________________________
// RunCode - If has item, use item - Helboar Quest TBC
int questId = 9361;
if (wManager.Wow.Helpers.Quest.HasQuest(questId))
{
wManager.Events.LootingEvents.OnLootSuccessful += unit =>
{
if (wManager.Wow.Helpers.Quest.HasQuest(questId))
{
if (wManager.Wow.Helpers.Conditions.InGameAndConnectedAndAliveAndProductStarted &&
!wManager.Wow.Helpers.Conditions.IsAttackedAndCannotIgnore)
{
if (wManager.Wow.Helpers.ItemsManager.GetItemCountById(23248) > 0) // Purified Helboar Meat
{
wManager.Wow.Helpers.ItemsManager.UseItem(23268); // Purification Mixture
wManager.Wow.Helpers.Usefuls.WaitIsCasting();
}
}
}
};
}
_____________________________________________________________________________________________________________________________________
// Go to Specific Position and Target NPC - UseItem at/on the location - Runcode - Andoido
var position = new Vector3(7848.3f, -2216.35f, 470.8041f);
int npcEntryId = 11832;
uint itemId = 15877;
{
if (!Quest.IsObjectiveComplete(1, 28))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId);
wManager.Wow.Helpers.ItemsManager.UseItem(15877);
wManager.Wow.Helpers.Usefuls.WaitIsCasting();
}
}
_____________________________________________________________________________________________________________________________________
// Go to Location, Target NPC , Turn Quest In. RunCode --- Manually Complete Quest - force complete, forcecomplete, Runcode
if (Quest.GetQuestCompleted(3561))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(3777.06f, -4619.17f, 227.3226f));
}
var u = ObjectManager.GetNearestWoWUnit(ObjectManager.GetWoWUnitByEntry(8399));
if (u.IsValid)
{
Interact.InteractGameObject(u.GetBaseAddress);
Lua.LuaDoString("QuestFrameCompleteQuestButton:Click();");
}
_____________________________________________________________________________________________________________________________________
// Cast spell on target
Thread t = new Thread(() =>
{
uint itemId = 62899;
uint spellId = 62899;
int questId = 28000;
while (robotManager.Products.Products.IsStarted)
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (!Quest.HasQuest(questId))
break;
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive)
{
if (itemId > 0)
ItemsManager.UseItem(itemId); // if it is item
if (spellId > 0)
SpellManager.CastSpellByIdLUA(spellId); // if it is spell
ClickOnTerrain.Pulse(new Vector3(ObjectManager.Target.Position)); // for AOE spell/item
}
}
Thread.Sleep(500);
}
});
t.Start();
_____________________________________________________________________________________________________________________________________
// Stop fight at specific perceent, StopFight - make "Interact with npc" Quest Profile, and run this code before it!
Thread t = new Thread(() =>
{
int questId = 9889;
while (robotManager.Products.Products.IsStarted)
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (!Quest.HasQuest(questId))
break;
if (ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 30)
{
wManager.Wow.Helpers.Fight.StopFight();
}
}
Thread.Sleep(500);
}
});
t.Start();
_____________________________________________________________________________________________________________________________________
// UseItem - DOESNT have Quest, and DOESNT have Buff - Use item if we dont have buff (RunCode) - before you "pulse"
Thread t = new Thread(() =>
{
uint itemId = 62899;
int questId = 93351;
uint buffId = 135855;
while (robotManager.Products.Products.IsStarted)
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (!Quest.HasQuest(questId))
break;
if (!ObjectManager.Me.HaveBuff(buffId))
{
ItemsManager.UseItem(itemId);
}
}
Thread.Sleep(500);
}
});
t.Start();
_____________________________________________________________________________________________________________________________________
// Check objective, go to location. If Objective NOT complete go to goto location
if (!Quest.IsObjectiveComplete(2, 9999))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(9999.262f, -9999.587f, 999.8167f));
}
_____________________________________________________________________________________________________________________________________
// Click BOP Item - BOP Continuous Loop - RuNCode
Thread t = new Thread(() =>
{
uint itemId = 9618;
int questId = 25336;
while (robotManager.Products.Products.IsStarted)
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsDead)
{
Lua.LuaDoString("StaticPopup1Button1:Click();");
}
}
Thread.Sleep(100);
}
});
t.Start();
_____________________________________________________________________________________________________________________________________
// Force character to MOVE strafe if you get a debuff or buff - runcode
wManager.Events.FightEvents.OnFightLoop += (unit, cancelable) =>
{
var me = wManager.Wow.ObjectManager.ObjectManager.Me;
var target = wManager.Wow.ObjectManager.ObjectManager.Target;
if (me.IsAlive && target.IsAlive && !me.IsCast && me.HaveBuff("Buff name"))
{
wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.STRAFELEFT, 1000 * 3); // strage left during 3 secondes
}
};
// You can force the bot to move to a new position , by replacing presskey
wManager.Wow.Helpers.MovementManager.MoveTo(1, 2, 3);
_____________________________________________________________________________________________________________________________________
// use as overridepulse with complete condition.
// Force check iscomplete for quests.
// Force turn in, force turnin , force pickup, force accept queest, acceptquest.
if (!Quest.HasQuest(Quest ID) && !(ObjectManager.Me.Position.DistanceTo2D(new Vector3(x, y, z)) < 20))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(x, y, z));
wManager.Wow.Helpers.Interact.InteractGameObject(ObjectManager.GetWoWGameObjectByEntry(Object ID).FirstOrDefault().GetBaseAddress);
Thread.sleep(100);
wManager.Wow.Helpers.Lua.RunMacroText("/script AcceptQuest();");
}
return;
// complete condition :
return (Quest.HasQuest(Quest ID) && !Quest.GetQuestCompleted(Quest ID));
// turn in code
wManager.Wow.Helpers.Lua.RunMacroText("/click QuestFrameCompleteQuestButton");
_____________________________________________________________________________________________________________________________________
// Force pickup of quest - Runcode
int npcEntryId = 4961;
var position = new Vector3(-8681.93f, 432.901f, 99.0906f);
if(!Quest.HasQuest(1247) && !Quest.GetQuestCompleted(1247))
{
while(!Quest.HasQuest(1247))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(position, npcEntryId);
Thread.Sleep(Usefuls.Latency * 5);
Lua.LuaDoString("AcceptQuest()");
Thread.Sleep(Usefuls.Latency * 5);
}
}
_____________________________________________________________________________________________________________________________________
// RunCode - Used to check an items cooldown remaining time - by droidz - https://wrobot.eu/bugtracker/useitemon-doesnt-work-because-of-item-cooldown-r594/
robotManager.Events.FiniteStateMachineEvents.OnRunState += (engine, state, cancelable) =>
{
int itemId = 18904;
int questId = 7003;
if (!wManager.Wow.Helpers.Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
return;
if (wManager.Wow.Helpers.Conditions.IsAttackedAndCannotIgnore)
return;
if (state.DisplayName == "Quester")
{
if (wManager.Wow.Helpers.Quest.HasQuest(questId) &&
wManager.Wow.Helpers.Lua.LuaDoString<bool>("local start, duration, enable = GetItemCooldown("+ itemId + "); return enable;"))
{
cancelable.Cancel = true;
}
}
};
_____________________________________________________________________________________________________________________________________
// How to let this code run once and how to let it move to a position xyz? - by imod
// Position we want to move to
Vector3 position = new Vector3(1, 1, 1);
// Move to the given position
MovementManager.Go(PathFinder.FindPath(position), false);
// Wait
while (MovementManager.InMovement && Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && ObjectManager.Me.HaveBuff(new Spell("NameOfTheSpell").Ids)
{
// Wait follow path
Thread.Sleep(100);
}
// Another example of moving your character to a new position during fight or getting debuff
wManager.Events.FightEvents.OnFightLoop += (unit, cancelable) =>
{
var pos = 1;
var me = wManager.Wow.ObjectManager.ObjectManager.Me;
var target = wManager.Wow.ObjectManager.ObjectManager.Target;
if (me.IsAlive && target.IsAlive && pos == 1)
{
Vector3 position = new Vector3(3073.848f, -3116.693f, 294.0692f);
// Move to the given position
MovementManager.Go(PathFinder.FindPath(position), false);
// Wait
while (MovementManager.InMovement && Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
// Wait follow path
Thread.Sleep(3000);
pos = 0;
}
}
};
_____________________________________________________________________________________________________________________________________
// Keep from Drowning - Swimming, Drowning, JUMP, Breath, - Runcode -- Change "while" statment to whatever the quest demands (objective wise)
Thread t = new Thread(() =>
{
while (robotManager.Products.Products.IsStarted && ItemsManager.GetItemCountById(15874) != 10)
{
if (ObjectManager.Me.BreathTimerLeft < 10000)
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP);
wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP);
wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP);
wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP);
wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP);
wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP);
wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP);
wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP);
}
wManager.Wow.Helpers.Fight.StopFight();
}
Thread.Sleep(10000);
}
});
t.Start();
_____________________________________________________________________________________________________________________________________
// Under Water Holding Breath - Swimming - fatigue - make into runcode
if (isneedActionbecausebreath())
{
robotManager.Helpful.Keyboard.PressKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle," ");
}
internal bool isneedActionbecausebreath()
{
if (ObjectManager.Me.BreathActive)
{
Logging.WriteFight("isneedActionbecausebreath: "+ObjectManager.Me.BreathTimerLeft);
if (ObjectManager.Me.BreathTimerLeft < 10000)
{
return true;
}
}
return false;
}
// force bot to click Space button
robotManager.Helpful.Keyboard.PressKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, System.Windows.Forms.Keys.F1);
_____________________________________________________________________________________________________________________________________
// Swimming code
wManager.Events.MovementEvents.OnMoveToLoop += () =>
{
if (wManager.Wow.ObjectManager.ObjectManager.Me.IsSwimming)
wManager.wManagerSetting.CurrentSetting.UseCTM = true;
else
wManager.wManagerSetting.CurrentSetting.UseCTM = false;
};
// Hunter Tame Pet FNV - OverridePulseCSharpCode
// is complete -- (not required in quest log)
return ObjectManager.Pet.IsValid;
var pos = new Vector3(-5421f, -581f, 396f);
int npc = 1126;
if(!ObjectManager.Pet.IsValid)
{
wManager.Wow.Bot.Tasks.GoToTask.ToPosition(pos);
wManager.wManagerSetting.CurrentSetting.MaxUnitsNear = 100;
var target = ObjectManager.GetObjectWoWUnit().FirstOrDefault(o => o.Entry == npc && o.Position.DistanceTo(ObjectManager.Me.Position) < 50 && o.IsAlive);
if(target != null && target.IsAlive)
{
ObjectManager.Me.Target = target.Guid;
if(ObjectManager.Me.Position.DistanceTo(target.Position) >= 30)
MovementManager.MoveTo(target.Position);
Thread.Sleep(Usefuls.Latency + 250);
SpellManager.CastSpellByNameLUA("Tame Beast");
}
if(ObjectManager.Pet.IsValid)
return true;
}
else
{
return true;
}
return false;
_____________________________________________________________________________________________________________________________________
// Schakas Use Script On - TBC Gathering items (New Life Q example)
ItemsManager.UseItem(22955);
Thread.Sleep(1000);
Interact.InteractGameObject(ObjectManager.GetWoWGameObjectByEntry(181433).First().GetBaseAddress);
Usefuls.WaitIsCastingAndLooting();
// Schakas Use Script On - For NPC's (didnt work for me)
ItemsManager.UseItem(22955);
Thread.Sleep(1000);
Interact.InteractGameObject(ObjectManager.GetWoWUnitByEntry(123, true).First().GetBaseAddress);
Usefuls.WaitIsCastingAndLooting();
_____________________________________________________________________________________________________________________________________
// Use inventory Solot Items
UseInventoryItem( 13 );
UseInventoryItem( 14 );
____________________________________________________________________________________________________________________________________
// Set chat text in game
DEFAULT_CHAT_FRAME:AddMessage("|cFFFFCE2ETramBot|r Zangermarsh Elevator - Go TO and wait")
_____________________________________________________________________________________________________________________________________
// Abandon Remove Quests (RuNCode)
QuestHelper.AbandonQuest("Terokk's Legacy");
_____________________________________________________________________________________________________________________________________
// Has key / Have Key / Key Custom Script - RuNCode
int keyId = 4882;
Logging.Write("Have Key ID (" + keyId + "): " + Key.haveKey(keyId));
_____________________________________________________________________________________________________________________________________
// Is Complete Condition for Items xIsCompletex iscomplete - RunCode
return ItemsManager.GetItemCountById(28513) >= 1;
//is complete - quest compolete or less than x ft - FNV IsComplete
return (Quest.GetQuestCompleted(187) || new Vector3(-11327.88f, -204.1989f, 75.34803f).DistanceTo(ObjectManager.Me.Position) < 10);
// Is Complete Distance to Object, iscomplete, distance - is complete quester code
return ObjectManager.Me.Position.DistanceTo2D(new Vector3(1822.23f, 1416.56f, -7.84571f)) <8;
// If you want complete quest when you don't have item in bag (1234 is item id):
return wManager.Wow.Helpers.ItemsManager.GetItemCountByIdLUA(1234) <= 0;e
// Or if you want complete quest when you have item in bag (1234 is item id):
// (replace 3 by minimun item count)
return wManager.Wow.Helpers.ItemsManager.GetItemCountByIdLUA(1234) >= 3;
// Is Complete Continent Code - iscomplete check continent
return (wManager.Wow.Helpers.Usefuls.ContinentId == (int)wManager.Wow.Enums.ContinentId.Azeroth);
// Is Complete - iscomplete - Dungeon Check - ContinentID
return (wManager.Wow.Helpers.Usefuls.ContinentId == (int)wManager.Wow.Enums.ContinentId.MonasteryInstances);
// Is Complete - Quest Completed, has quest.
return (Quest.HasQuest(1234) && !Quest.GetQuestCompleted(1234));
// Log Writing - Write to the wrobot Log - RunCode
Logging.Write("TEXT HERE");
// Cast spell by name - Cast Spell ID RunLuaCode
CastSpellByName("Renew","target")
// Has item More or Less Than RunCode
ItemsManager.GetItemCountById(11188) < 7
// Does Bot Know Spell - RunCode
!wManager.Wow.Helpers.SpellManager.KnowSpell(688)
// Class Code - ClassCheck - RunCode
ObjectManager.Me.WowClass == WoWClass.Warlock
(ObjectManager.Me.WowClass == WoWClass.Warlock || ObjectManager.Me.WowClass == WoWClass.Paladin || ObjectManager.Me.WowClass == WoWClass.Warrior || ObjectManager.Me.WowClass == WoWClass.Rogue
|| ObjectManager.Me.WowClass == WoWClass.Hunter || ObjectManager.Me.WowClass == WoWClass.Druid || ObjectManager.Me.WowClass == WoWClass.Priest)
// If Has Item xhasitemx- RuNCode
ItemsManager.HasItemById(29912)
// If Statment - hasitem less than , and objective complete, and has quest, and doesnt have quest complete
// RunCode
((Quest.HasQuest(2980)
&&
!Quest.GetQuestCompleted(2980))
&&
(!Quest.IsObjectiveComplete(3, 2980))
&&
(ItemsManager.GetItemCountById(9590) < 7))
-- OR --
// Difference bewteen these two, is this checks for a SPECIFIC item if we have or dont have. Where as the one above, checks for a set Number of items.
// Has Quest, Doesnt Have Quest Completed, Doesnt have Objective for quest completed, Doesnt have ITEM (involved with quest)
// Reccomended to only use this code for quests that use single items (Kill mob for skull, if it was 10 skulls, use the code above!
// RunCode
((Quest.HasQuest(2980)
&&
!Quest.GetQuestCompleted(2980))
&&
(!Quest.IsObjectiveComplete(3, 2980))
&&
(!ItemsManager.HasItemById(29912))
// Use Item (RunCode) -- Used to Use Items in Game.
ItemsManager.UseItem(6948);
wManager.Wow.Helpers.ItemsManager.UseItem(123);
// UseScriptOn - C# - UseItem - Use Item Thread Sleep, Use Item Quester Profile, or RuNCode
ItemsManager.UseItem(1234);
Usefuls.WaitIsCasting();
Thread.Sleep(1000 * 10);
// Has Buff or Doesnt havebuff
ObjectManager.Me.TargetObject.HaveBuff(22807);
// Equip Item By name (runcode)
wManager.Wow.Helpers.ItemsManager.EquipItemByName("Spectrecles");
// Check Player Faction or Race (RunCode)
(ObjectManager.Me.PlayerRace == PlayerFactions.Tauren)
// Check if has item Equiped - weapon Equiped
EquippedItems.GetEquippedItems().Where(x => x.Entry == 2495 || x.Entry == 2488 || x.Entry == 2492 || x.Entry == 2490 || x.Entry == 2509 || x.Entry == 5441 || x.Entry == 2516).Count() == 0
// Check equiped item's rarity (Add to code above)
x.GetItemInfo.ItemRarity <= 1
// Pet is alive and valid - has pet summoned
ObjectManager.Pet.IsAlive && ObjectManager.Pet.IsValid
// Check pet by name (RunCode)
if (ObjectManager.Pet.Name == "Wolf")
return true;
else
return false;
// Is Complete check pet name - not tested
return ObjectManager.Pet.Name == "Wolf"
// Check how much Money we have in bags (RunCode)
ObjectManager.Me.GetMoneyCopper >= 800
// Skillline - Is Complete Condition
return wManager.Wow.Helpers.Skill.GetValue(wManager.Wow.Enums.SkillLine.Lockpicking) >= 75;
Skill.GetValue(SkillLIne.Engineering) < 50
// If Has Quest + If Has Quest Complete RunCode
Quest.HasQuest(10446) && !Quest.GetQuestCompleted(10446)
Quest.HasQuest(10446) && Quest.IsObjectiveComplete(1, 37853)
// CAN CONDITION - Check which continent we are on - Pulse true if we are ON this ContinentId
return Usefuls.ContinentId == (int) ContinentId.Azeroth;
// Check map Zone / Continent / Submap / Sub Continent / zone
/* */
Usefuls.ContinentId == (int) ContinentId.Azeroth
Usefuls.ContinentId == (int) ContinentId.Kalimdor
Usefuls.SubMapZoneName.Contains("theran Village")
(wManager.Wow.Helpers.Usefuls.MapZoneName == "" || wManager.Wow.Helpers.Usefuls.MapZoneName == "")
// Check player race and faction alliance and horde - runcode
ObjectManager.Me.IsAlliance
ObjectManager.Me.IsHorde
// Stop the bot from Moving - StopMoving - RuNCode
if(ObjectManager.Me.GetMove)
MovementManager.StopMoveTo(true, 500);
// Check number of enemies attacking you or attacking pet
ObjectManager.GetWoWUnitAttackables().Where(x => x.Target == ObjectManager.Me.GetBaseAddress || x.Target == ObjectManager.Pet.GetBaseAddress).Count() >= 2
// use spell cast spell on target - Cast spell by id - cast spell by lua RunCode
Hello,you can use lua code:
CastSpellByID(1234)
CastSpellByID(1234, 'target')
or c# code:
wManager.Wow.Helpers.SpellManager.CastSpellByIdLUA(1234);
wManager.Wow.Helpers.SpellManager.CastSpellByIdLUA(1234, "target");
// Target nearest enemy and use spell / use spell on nearest target RunLuaCode
local Sunfire = GetSpellInfo(93402);
if (not Sunfire) then return; end
TargetNearestEnemy();
CastSpellByName(Sunfire);
// cast spell
local spellid=123456 --[[change to the ID-nr of the spell)]]
local spellname=GetSpellInfo(spellid)
if (IsUsableSpell(spellname)) then
local start, duration, enable = GetSpellCooldown(spellname)
if (duration==0) then
CastSpellByName(spellname);
spell=spellname;
break;
end
end
// Target Reactions - Friendly Neutral honored. Checkes the Reaction of the Target in an IF statment.
wManager.Wow.ObjectManager.ObjectManager.Target.Reaction < wManager.Wow.Enums.Reaction.Friendly
// or
wManager.Wow.ObjectManager.ObjectManager.Me.TargetObject.Reaction > Reaction.Neutral
// Reactions IsComplete Statment
return wManager.Wow.ObjectManager.ObjectManager.Me.TargetObject.Reaction > Reaction.Friendly;
// Reactions ORDER
Hated,
Hostile,
Unfriendly,
Neutral,
Friendly,
Honored,
Revered,
Exalted,
_____________________________________________________________________________________________________________________________________
// Force bot to Sit, Force bot to Stand, runcode - Matenia
Lua.LuaDoString("SitOrStand()");
//newer wow versions
Lua.LuaDoString("SitStandOrDescendStart()");
//alternative approach
Lua.LuaDoString("DoEmote('SIT')");
//if you wanna stand up specifically
Lua.LuaDoString("DoEmote('STAND')");
_____________________________________________________________________________________________________________________________________
// Go to specific targets GUID - Spell on Target
var unit = new WoWUnit(ObjectManager.GetObjectByGuid (17379391364021616671).GetBaseAddress);
Fight.StopFight();
ObjectManager.Me.Target = unit.Guid;
Fight.StopFight();
// or
var unit = new WoWUnit(ObjectManager.GetObjectByGuid (17379391364021616671).GetBaseAddress);
wManager.Wow.Bot.Tasks.GoToTask.ToPosition(unit.Position);
_____________________________________________________________________________________________________________________________________
// if you have a quest with a item you need to use on the ground.
if (wManager.Wow.Helpers.ItemsManager.HasItemById(ID))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(z, y, z));
System.Threading.Thread.Sleep(6000);
ItemsManager.UseItem(ItemID);
ClickOnTerrain.Pulse(new Vector3(x, y, z));
System.Threading.Thread.Sleep(1000);
}
return true;
_____________________________________________________________________________________________________________________________________
// Hunter Pet Auto Train - Auto tame hunter pet runcode
if(ObjectManager.Pet.IsValid)
{
Lua.LuaDoString("CastSpellByName('Beast Training')");
Thread.Sleep(Usefuls.Latency + 500);
Lua.LuaDoString("BuyTrainerService(0)");
Thread.Sleep(Usefuls.Latency + 500);
Lua.LuaDoString("TogglePetAutocast(4)");
Thread.Sleep(Usefuls.Latency + 500);
Lua.LuaDoString("TogglePetAutocast(5)");
Thread.Sleep(Usefuls.Latency + 500);
}
_____________________________________________________________________________________________________________________________________
// is complete - Quest Complete condition, Quest log - bettersister
// Check if quest is completed
Quest.GetQuestCompleted(123456)
Quest.GetLogQuestIsComplete(245)
if you're using it as Is Complete condition put it like this:
return Quest.GetLogQuestIsComplete(245);
_____________________________________________________________________________________________________________________________________
// Search and Loot Chests - Find Chests - IMOD - RunCode
//You should not using the index because if there is no chest you will get a out of range exception.
// Search for a chest
List<WoWGameObject> chest = ObjectManager.GetWoWGameObjectByyId(123456).FirstOrDefault();
// Found?
if(chest != null)
{
// Open
Interact.InteractGameObject(chest.GetBaseAddress);
}
_____________________________________________________________________________________________________________________________________
// Click Quest Complete Button - Droidz
//In "Quest order editor" add action "RunCode" after "pulse" with param:
wManager.Wow.Helpers.Quest.CompleteQuest();
You can add wait time to wait then window appear:
Thread.Sleep(3500);
wManager.Wow.Helpers.Quest.CompleteQuest();
_____________________________________________________________________________________________________________________________________
_____________________________________________________________________________________________________________________________________
// Interact with game object and gather
WoWObject _t = ObjectManager.GetWoWGameObjectByName("put here name of herb").OrderBy(o => o.GetDistance).FirstOrDefault();
Interact.InteractGameObject(_t.GetBaseAddress, true, false);
Usefuls.WaitIsCasting();
Usefuls.WaitIsLooting();
// Part 2 - For gathering / mining with bad latency.
WoWObject _t = ObjectManager.GetWoWGameObjectByName("Peacebloom").OrderBy(o => o.GetDistance).FirstOrDefault();
Interact.InteractGameObject(_t.GetBaseAddress, true, false);
Usefuls.WaitIsCasting();
Usefuls.WaitIsLooting();
// wManager.DevelopmentTools.OutPutCSharp=
// Execute time: 703
// Part 3
WoWObject _t = ObjectManager.GetWoWGameObjectByName("Peacebloom").OrderBy(o => o.GetDistance).FirstOrDefault();
Interact.InteractGameObject(_t.GetBaseAddress, true, false);
// this code works like Usefuls.WaitIsCasting();
robotManager.Helpful.Timer timer = new robotManager.Helpful.Timer((double)(Usefuls.Latency + 200));
while (!timer.IsReady && !ObjectManager.Me.IsCast) {
Thread.Sleep(5);
}
Logging.Write("Me.IsCast="+ObjectManager.Me.IsCast);
while (ObjectManager.Me.IsCast) {
Thread.Sleep(30);
}
Usefuls.WaitIsLooting();
Move.JumpOrAscend();
// wManager.DevelopmentTools.OutPutCSharp=
// Execute time: 1438
_____________________________________________________________________________________________________________________________________
// Go to Position - Run to position - Run to spot
wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(-304.4424f, 2389.106f, 46.37655f));
// Interact with NPC (RuNCode)
// NORMAL - Interact with NPC
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(-1831.95f, 5298.3f, -12.42768f), 18940);
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(-2917.88f, 4021.48f, 0.4276921f), 19296, 1, false);
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(3373.69f, 994.351f, 5.278372f), 11901, 2, false);
// Interact with OBJECT in Game
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(new Vector3(2552.44, 856.9836, 51.49502), 148917);
// Interact With Game Object V2
wManager.Wow.Helpers.Interact.InteractGameObject(wManager.Wow.ObjectManager.ObjectManager.GetNearestWoWGameObject
(wManager.Wow.ObjectManager.ObjectManager.GetWoWGameObjectByEntry(254241)).GetBaseAddress);
// Interact with DEAD NPC (runcode)
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(-2917.88f, 4021.48f, 0.4276921f), 19296, 1);
// ]Distance - Distance from xdistance -
ObjectManager.Me.Position.DistanceTo2D(new Vector3(199.061f, 4238.42f, 121.7268f)) < 125
__________________________________________________________________________________________________________________________________
// level 5 priest quest - cast spell on target - run code
if (Quest.HasQuest(5648))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(170.596f, -4769.92f, 14.40446f), 12430);
wManager.Wow.Helpers.Lua.RunMacroText("/cast Lesser Heal");
Usefuls.WaitIsCastingAndLooting();
wManager.Wow.Helpers.Lua.RunMacroText("/cast Power Word: Fortitude");
Usefuls.WaitIsCastingAndLooting();
}
return true;
__________________________________________________________________________________________________________________________________
// Interact with Game Object V3 (use quest profile and overidepulse... quest type) https://wrobot.eu/forums/topic/9846-spam-click-specific-object/
while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore)
{
var o = wManager.Wow.ObjectManager.ObjectManager.GetNearestWoWGameObject(wManager.Wow.ObjectManager.ObjectManager.GetWoWGameObjectByEntry(218889));
if (!o.IsValid)
break;
wManager.Wow.Helpers.Interact.InteractGameObject(o.GetBaseAddress);
Thread.Sleep(100);
}
// Interact with NPC - Talk to NPC (RunCode) - use with GONG / Andoido (One after another) - by Nudl
WoWUnit toTalk =
wManager.Wow.ObjectManager.ObjectManager.GetObjectWoWUnit()
.SingleOrDefault(i => i.Entry == 75746);
if (toTalk != null)
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(toTalk.Position, toTalk.Entry, 1);
}
// Interact with Game Object (RunCode) https://wrobot.eu/forums/topic/8395-clicking-objects-in-dungeons/
WoWGameObject gong = wManager.Wow.ObjectManager.ObjectManager.GetObjectWoWGameObject().FirstOrDefault(i => i.Entry == 148917);
if (gong != null)
{
wManager.Wow.Helpers.Interact.InteractGameObject(gong.GetBaseAddress);
}
WoWGameObject andoido = wManager.Wow.ObjectManager.ObjectManager.GetObjectWoWGameObject().FirstOrDefault(i => i.Entry == 148917);
if (andoido != null)
{
wManager.Wow.Helpers.Interact.InteractGameObject(andoido.GetBaseAddress);
}
// Interact with Object -- Search for nearest Game Object and Interact
WoWGameObject gong = ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectById("1234")).GetBaseAddress
if (gong != null)
{
wManager.Wow.Helpers.Interact.InteractGameObject(gong.GetBaseAddress);
}
__________________________________________________________________________________________________________________________________
// Harvest Item - Used to "Pickup, Gather, or GET a Quest item, Herb, Ore anything really ( RunCode)
wManager.wManagerSetting.CurrentSetting.ListHarvest.Add();
__________________________________________________________________________________________________________________________________
// Move Backward (RunCode)
wManager.Wow.Helpers.Move.Backward(Move.MoveAction.PressKey,2000);
// Move Forward (RunCode)
wManager.Wow.Helpers.Move.Forward(Move.MoveAction.PressKey,2000);
__________________________________________________________________________________________________________________________________
// Display Code for my on screen display ( RunLuaCode )
MyFrame.text:SetText("TEXT HERE")
__________________________________________________________________________________________________________________________________
// Is Complete condition for KILLING a MOB
// with the id of the boss dont forget to select "true" in "not required in quest log"
return ObjectManager.GetWoWUnitByEntry(16151).Count == 0;
__________________________________________________________________________________________________________________________________
// Is Quest Objective Complete (If, While, Runcode)
Quest.IsObjectiveComplete(1, 37853)
Quest.IsObjectiveNotComplete(0, 245)
// Replace 1 with the objective number in correct list order
__________________________________________________________________________________________________________________________________
// Change Wrobots Current Settings (RuNCode)
wManager.Wow.Helpers.Conditions.ForceIgnoreIsAttacked = false;
wManager.Wow.Helpers.Conditions.ForceIgnoreIsAttacked = true;
wManager.wManagerSetting.CurrentSetting.AttackBeforeBeingAttacked = true;
wManager.wManagerSetting.CurrentSetting.CanAttackUnitsAlreadyInFight = true;
wManager.wManagerSetting.CurrentSetting.IgnoreCombatWithPet = false;
// Force bot to sell vendor - run to town (runcode) Force Sell, Sell Items Force to Town
wManager.Wow.Bot.States.ToTown.ForceToTown = true;
wManager.Wow.Bot.States.ToTown.ForceToTown = true;
wManager.wManagerSetting.CurrentSetting.Selling = true;
wManager.wManagerSetting.CurrentSetting.SellGray = true;
wManager.wManagerSetting.CurrentSetting.ForceSellList.Add("Item name at force to sell");
// Use only profile NPCs
wManager.Wow.Helpers.NpcDB.AcceptOnlyProfileNpc = true;
// Clear blacklist for session
wManager.wManagerSetting.ClearBlacklistOfCurrentProductSession();
// Force bot to sell at closest saved npc
if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWith(Npc npc, bool skipIfCannotMakePath = false, BooleanDelegate conditionExit = null, bool acceptNpcDead = false))
{
wManager.Wow.Helpers.Vendor.SellItems(List<String> itemSell, List<string> itemNoSell, List<Enums.WoWItemQuality> itemQuality);
}
// Force bot to SELL then go TRAIN
wManager.Wow.Bot.States.ToTown.ForceToTown = true; // run code - Forces bot to go sell.
new wManager.Wow.Bot.States.Trainers().NeedToRun // RunCode - Checks if the bot needs to train or not.
// Forces for to Sell AND Train.
robotManager.Events.FiniteStateMachineEvents.OnBeforeCheckIfNeedToRunState += (engine, state, cancelable) =>
{
if (state != null && state.GetType() == typeof(wManager.Wow.Bot.States.Trainers) && state.NeedToRun)
{
wManager.Wow.Bot.States.ToTown.ForceToTown = true;
}
};
// Clears the NPC Database.
wManager.Wow.Helpers.NpcDB.ListNpc.Clear();
// Check if Resting or Rested Exp
Lua.LuaDoString("return IsResting()");
Lua.LuaDoString("return GetRestState() == 1")
__________________________________________________________________________________________________________________________________
// To unblacklist vendor (add you own condition, check if you are in smart pull): - RunCode
robotManager.Events.LoggingEvents.OnAddLog += delegate(Logging.Log log)
{
if (!log.Text.Contains("[ToTown] Unable to reach the vendor, blacklist it 120 minutes (you can disable this NPC in NPC DB tab 'Tools')."))
return;
foreach (var n in NpcDB.ListNpc)
{
n.BlackList(-1);
}
};
__________________________________________________________________________________________________________________________________
// To add vendor with C# you can use this code:
var npcVendor = new wManager.Wow.Class.Npc
{
ContinentId = (wManager.Wow.Enums.ContinentId)wManager.Wow.Helpers.Usefuls.ContinentId,
Entry = 1234,
Faction = wManager.Wow.Class.Npc.FactionType.Neutral,
Name = "Npc name",
Position = new robotManager.Helpful.Vector3(1, 2, 3),
CanFlyTo = true,
Type = wManager.Wow.Class.Npc.NpcType.Repair, // wManager.Wow.Class.Npc.NpcType.Vendor
};
wManager.Wow.Helpers.NpcDB.AddNpc(npcVendor, false);
__________________________________________________________________________________________________________________________________
//(use step "RunCode" to run all code) - By Droidz
// RunCode (make IF statement, add this below it, then the following in a NEW runcode.)
wManager.Wow.Helpers.NpcDB.AcceptOnlyProfileNpc = true;
// It is not easy way, but add NPC with C# code like this (use this code when you change zone to select good npc for current level/zone):
// RunCode - Removes all NPC's in the NPCDB.
wManager.Wow.Helpers.NpcDB.ListNpc.RemoveAll(n => n.CurrentProfileNpc); // Remove in NPCDB all Npc added on current profile
// Setting a "Repair" npc - RunCode
var npcRepair = new wManager.Wow.Class.Npc // Npc repair info
{
Name = "Npc name",
Entry = 1234,
Faction = wManager.Wow.Class.Npc.FactionType.Neutral,
ContinentId = wManager.Wow.Enums.ContinentId.Azeroth,
Position = new robotManager.Helpful.Vector3(1, 2, 3),
CanFlyTo = true,
Type = wManager.Wow.Class.Npc.NpcType.Repair,
};
wManager.Wow.Helpers.NpcDB.AddNpc(npcRepair, false, true); // Add npc repair to npcdb
// Setting a "Vendor" npc.= (food)
var npcVendor = new wManager.Wow.Class.Npc // Npc vendor info
{
Name = "Npc name",
Entry = 1234,
Faction = wManager.Wow.Class.Npc.FactionType.Neutral,
ContinentId = wManager.Wow.Enums.ContinentId.Azeroth,
Position = new robotManager.Helpful.Vector3(1, 2, 3),
CanFlyTo = true,
Type = wManager.Wow.Class.Npc.NpcType.Vendor,
};
wManager.Wow.Helpers.NpcDB.AddNpc(npcVendor, false, true); // Add npc vendor to npcdb
// RunCode - Forces bot to go VENDOR -- If you want force WRobot to go to vendor/repair:
wManager.Wow.Bot.States.ToTown.ForceToTown = true;
__________________________________________________________________________________________________________________________________
// Do Not Sell List (TBC) + Vanilla? - runcode
if (!wManager.wManagerSetting.CurrentSetting.DoNotSellList.Contains(""))
{
wManager.wManagerSetting.CurrentSetting.DoNotSellList.Add("");
}
// Do Not Sell List Vanilla runcode
wManager.wManagerSetting.CurrentSetting.DoNotSellList.Add("Larval Acid");
__________________________________________________________________________________________________________________________________
// Opening Objects (Clams, Boxes, Etc) RunCode - https://wrobot.eu/forums/topic/5684-looting-inventory-item-containing-quest-items/
Thread t = new Thread(() =>
{
while (robotManager.Products.Products.IsStarted)
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive)
{
robotManager.Helpful.Keyboard.DownKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, System.Windows.Forms.Keys.ShiftKey);
Thread.Sleep(robotManager.Helpful.Others.Random(50, 150));
ItemsManager.UseItem(7973);
Thread.Sleep(robotManager.Helpful.Others.Random(50, 150));
robotManager.Helpful.Keyboard.UpKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, System.Windows.Forms.Keys.ShiftKey);
Thread.Sleep(robotManager.Helpful.Others.Random(50, 150));
}
}
Thread.Sleep(10000);
}
});
t.Start();
// open clam untill Item ammount obtained
Thread t = new Thread(() =>
{
while (robotManager.Products.Products.IsStarted && ItemsManager.GetItemCountById(15874) != 10)
{
if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
{
if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive)
{
robotManager.Helpful.Keyboard.DownKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, System.Windows.Forms.Keys.ShiftKey);
Thread.Sleep(robotManager.Helpful.Others.Random(50, 150));
ItemsManager.UseItem(15874);
Thread.Sleep(robotManager.Helpful.Others.Random(50, 150));
robotManager.Helpful.Keyboard.UpKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, System.Windows.Forms.Keys.ShiftKey);
Thread.Sleep(robotManager.Helpful.Others.Random(50, 150));
}
}
Thread.Sleep(1000);
}
});
t.Start();
__________________________________________________________________________________________________________________________________
// Check Bind Location (RunCode)
Lua.LuaDoString<string>("bindlocation = GetBindLocation(); return bindlocation;") == "Allerian Stronghold"
&& ObjectManager.Me.Level >= 65 && ObjectManager.Me.Level <= 67
&& (wManager.Wow.Helpers.Usefuls.MapZoneName == "Shattrath City")
&& Quest.HasQuest(9990)
// Check hearthstone timmer
Lua.LuaDoString<bool>("if GetItemCooldown(Heathstone) == 0 then return true end")
____________________________________________________________________________________________________________________________
// How to set your Hearthstone, te professional way.
// Step 1 - Set IF Statment.
IF > IF code in the quest order editor
Lua.LuaDoString<string>("bindlocation = GetBindLocation(); return bindlocation;") != "Orgrimmar"
// Step 2 - RUNCODE - Change the Location + NPC ID of your new innkeeper (using the helper tools)
var position = new Vector3(1633.99f, -4439.37f, 15.43382f);
int npcEntryId = 6929;
{
if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId))
System.Threading.Thread.Sleep(3000 * 2);
Lua.LuaDoString("GossipTitleButton1:Click();");
System.Threading.Thread.Sleep(2000 * 2);
Lua.LuaDoString("StaticPopup1Button1:Click();");
System.Threading.Thread.Sleep(3000 * 2);
Lua.LuaDoString("StaticPopup1Button1:Click();");
Lua.LuaDoString("CloseMerchant()");
System.Threading.Thread.Sleep(3000 * 2);
if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId))
System.Threading.Thread.Sleep(3000 * 2);
Lua.LuaDoString("GossipTitleButton2:Click();");
System.Threading.Thread.Sleep(3000 * 2);
Lua.LuaDoString("StaticPopup1Button1:Click();");
System.Threading.Thread.Sleep(3000 * 2);
Lua.LuaDoString("StaticPopup1Button1:Click();");
Lua.LuaDoString("CloseMerchant()");
}
// ENDIF -- Add an ENDIF Statment.
//This will force the bot to run to the npc location, it will do each step every 2 seconds (click the bind option) And a 2nd timeincase the bind is on button 2.
// Weaponsmaster Trainer - train Weapons Master - My Code - Andoido - RuNCode
// RunCode 1
if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new robotManager.Helpful.Vector3(2091.02f, -4826.49f, 24.11062f), 11868))
{
Logging.Write("Training level 10 Warlock Weaponsmaster in Orgrimmar - Please do not stop the bot");
{
Lua.LuaDoString("GossipTitleButton1:Click();");;
Lua.LuaDoString("StaticPopup1Button1:Click();");
System.Threading.Thread.Sleep(2000 * 2);
Lua.LuaDoString("StaticPopup1Button1:Click();");
System.Threading.Thread.Sleep(2000 * 2);
Lua.LuaDoString("StaticPopup1Button1:Click();");
Lua.LuaDoString("StaticPopup1Button1:Click();");
Lua.LuaDoString("StaticPopup1Button1:Click();");
Lua.LuaDoString("StaticPopup1Button1:Click();");
}
}
//RunCode 2 (Add both 1 and 2) to make sure 100% the bot trains)
if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new robotManager.Helpful.Vector3(2091.02f, -4826.49f, 24.11062f), 11868))
{
Logging.Write("Training level 10 Warlock Weaponsmaster in Orgrimmar - Please do not stop the bot - Training Sayoc");
{
wManager.Wow.Helpers.Usefuls.SelectGossipOption(wManager.Wow.Enums.GossipOptionsType.trainer);
wManager.Wow.Helpers.Trainer.TrainingSpell();
System.Threading.Thread.Sleep(1000 * 2);
wManager.Wow.Helpers.Trainer.TrainingSpell();
System.Threading.Thread.Sleep(1000 * 2);
wManager.Wow.Helpers.Trainer.TrainingSpell();
wManager.Wow.Helpers.Trainer.TrainingSpell();
wManager.Wow.Helpers.Trainer.TrainingSpell();
wManager.Wow.Helpers.Trainer.TrainingSpell();
}
}
____________________________________________________________________________________________________________________________
// Weaponsmaster Training - FNV
Vector3 posWeaponSkill = new Vector3(-5039.499, -1201.89, 508.9015);
int npcId = 13084;
if(ObjectManager.Me.GetMoneyCopper >= 5000)
{
Logging.Write("[FNV_Quester]: Going to Ironforge Weapon trainer");
if(!wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(posWeaponSkill, npcId))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(posWeaponSkill, npcId);
}
if(wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(posWeaponSkill, npcId))
{
Usefuls.SelectGossipOption(GossipOptionsType.trainer);
Thread.Sleep(Usefuls.Latency + 500);
Lua.LuaDoString("BuyTrainerService(0)");
Thread.Sleep(Usefuls.Latency + 500);
Lua.LuaDoString("BuyTrainerService(0)");
Thread.Sleep(Usefuls.Latency + 500);
Lua.LuaDoString("BuyTrainerService(0)");
Thread.Sleep(Usefuls.Latency + 500);
Lua.LuaDoString("BuyTrainerService(0)");
Thread.Sleep(Usefuls.Latency + 500);
Lua.LuaDoString("BuyTrainerService(0)");
}
Logging.Write("[FNV_Quester]: Weapon skills learned");
}
else
{
Logging.Write("[FNV_Quester]: Not enough money to buy Weapon skills, skip it");
}
____________________________________________________________________________________________________________________________
// Add ALL Items in BAG to Do Not Sell List - All Items in Bag
foreach (var woWItem in wManager.Wow.Helpers.Bag.GetBagItem())
{
if (!string.IsNullOrWhiteSpace(woWItem.Name) && !wManager.wManagerSetting.CurrentSetting.DoNotSellList.Contains(woWItem.Name))
wManager.wManagerSetting.CurrentSetting.DoNotSellList.Add(woWItem.Name);
}
// Abandon All Quests In Log
for i=1,GetNumQuestLogEntries() do
SelectQuestLogEntry(i);
SetAbandonQuest();
AbandonQuest();
end
// Abandon Quest by IDictionary
local questId = 12345;
for i=1,GetNumQuestLogEntries() do
local _, _, _, _, _, _, _, id = GetQuestLogTitle(i);
if id == questId then
SelectQuestLogEntry(i);
SetAbandonQuest();
AbandonQuest();
end
end
__________________________________________________________________________________________________________________________________
// CUSTOM SCRIPT - Goes into Custom Script Section.
// USAGE - RunCode
throwAway.DeleteItems("Phial of Scrying", 0);
throwAway.DeleteItems("Gyromast's Key", 0);
throwAway.DeleteItems("Barrel of Barleybrew Scalder", 0);
//Abandon Quests - Custom Script
public class abandonQuest
{
public static void abandon(string questName)
{
string name = questName;
wManager.Wow.Helpers.Lua.LuaDoString("local name = '" + name + "' for i=1,GetNumQuestLogEntries() do local questTitle, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete = GetQuestLogTitle(i) if string.find(questTitle, name) then SelectQuestLogEntry(i) SetAbandonQuest() AbandonQuest() end end");
}
}
//Throw away items - by Reapler - Custom Script
public class throwAway
{
public static int GetItemQuantity(string itemName)
{
var execute =
"local itemCount = 0; " +
"for b=0,4 do " +
"if GetBagName(b) then " +
"for s=1, GetContainerNumSlots(b) do " +
"local itemLink = GetContainerItemLink(b, s) " +
"if itemLink then " +
"local _, stackCount = GetContainerItemInfo(b, s)\t " +
"if string.find(itemLink, \"" + itemName + "\") then " +
"itemCount = itemCount + stackCount; " +
"end " +
"end " +
"end " +
"end " +
"end; " +
"return itemCount; ";
return Lua.LuaDoString<int>(execute);
}
/// <summary>
/// Used to delete all items by name.
/// </summary>
/// <param name="itemName">The item to delete.</param>
/// <param name="leaveAmount">The amount of items which remain in the bag.</param>
/// <remarks>Bug at links with "-"</remarks>
public static void DeleteItems(string itemName, int leaveAmount)
{
var itemQuantity = GetItemQuantity(itemName) - leaveAmount;
if(string.IsNullOrWhiteSpace(itemName) || itemQuantity <= 0)
return;
var execute =
"local itemCount = " + itemQuantity + "; " +
"local deleted = 0; " +
"for b=0,4 do " +
"if GetBagName(b) then " +
"for s=1, GetContainerNumSlots(b) do " +
"local itemLink = GetContainerItemLink(b, s) " +
"if itemLink then " +
"local _, stackCount = GetContainerItemInfo(b, s)\t " +
"local leftItems = itemCount - deleted; " +
"if string.find(itemLink, \"" + itemName + "\") and leftItems > 0 then " +
"if stackCount <= 1 then " +
"PickupContainerItem(b, s); " +
"DeleteCursorItem(); " +
"deleted = deleted + 1; " +
"else " +
"if (leftItems > stackCount) then " +
"SplitContainerItem(b, s, stackCount); " +
"DeleteCursorItem(); " +
"deleted = deleted + stackCount; " +
"else " +
"SplitContainerItem(b, s, leftItems); " +
"DeleteCursorItem(); " +
"deleted = deleted + leftItems; " +
"end " +
"end " +
"end " +
"end " +
"end " +
"end " +
"end; ";
Lua.LuaDoString(execute);
}
}
// Delete Item from Inventory - RunCode
/run for bag=0,4,1 do for slot=1,36,1 do local name=GetContainerItemLink(bag,slot);if (name and string.find(name,"Item1")) or (name and string.find(name,"Item2")) then PickupContainerItem(bag,slot);DeleteCursorItem();end;end;end
// Destroy / Delete Inventory items - RunLuaCode
-- Number= = 5, 3, 5, 21, 1, 5 etc of items in inventory to call.
number = 1;
i=1;
for bag = 0,4,1 do
for slot = 1, GetContainerNumSlots(bag), 1 do
local name = GetContainerItemLink(bag,slot);
if name and string.find(name,"An Old History Book") then
if i > number then PickupContainerItem(bag,slot);
DeleteCursorItem();
end;
end;
i=i+1;
end;
end;
__________________________________________________________________________________________________________________________________
// Time left on Trinket - By Reapler - https://wrobot.eu/forums/topic/7127-trinket-cooldown-time-left/
/// <summary>
/// Used to get the cooldown of an inventory item.
/// </summary>
/// <param name="slotId">The slot to get from.</param>
/// <returns>The left cooldown of the item.</returns>
public int GetInventoryCooldown(WoWInventorySlot slotId)
{
return Lua.LuaDoString<int>(
@"
local start, duration, enable = GetInventoryItemCooldown(""player"", "+(int)slotId+@")
local coolDown = duration-(GetTime()-start);
if (coolDown < 0) then
return 0;
end
return coolDown;
");
}
//Usage:
Logging.Write("Cooldown of Trinket1: "+GetInventoryCooldown(WoWInventorySlot.Trinket1));
__________________________________________________________________________________________________________________________________
// Desolace Kodo Quest Codes.
// [Is Complete Condition for Quest]
return wManager.Wow.ObjectManager.ObjectManager.Target.IsValid && wManager.Wow.ObjectManager.ObjectManager.Target.Reaction >= wManager.Wow.Enums.Reaction.Friendly;
// Target Unit by Name: RunCode
ObjectManager.Me.Target = ObjectManager.GetWoWUnitByName("Tamed Kodo").First().Guid;
// Face your Position ( do 180) RuNCode
MovementManager.Face(ObjectManager.Me.Position)
__________________________________________________________________________________________________________________________________
// Used to farm (Lockpicking Example - // OverridePulseCSharpCode
if (GoToTask.ToPosition(new Vector3(-1455.473f, -3968.029f, 7.562639f)))
{
while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && Skill.GetValue(SkillLine.Lockpicking) < 75)
{
var obj = ObjectManager.GetObjectWoWGameObject()
.FirstOrDefault(o => !wManager.wManagerSetting.IsBlackListed(o.Guid) && o.Entry == 123330 || o.Entry == 123333 || o.Entry == 123331);
if (obj != null)
{
Interact.InteractGameObject(obj.GetBaseAddress);
Usefuls.WaitIsCastingAndLooting();
Lua.LuaDoString("LootCloseButton:Click();");
wManager.wManagerSetting.AddBlackList(obj.Guid, 5000, true);
}
}
}
return true;
__________________________________________________________________________________________________________________________________
// Custom code to PickPocket - or used in other situations. - overridePulseCsharpCode
if (!ObjectManager.Me.HaveBuff("Stealth"))
{
Lua.LuaDoString("CastSpellByName('Stealth')");
}
if (GoToTask.ToPosition(new Vector3(-11104.44, 491.9153, 28.40324)))
{
Conditions.ForceIgnoreIsAttacked = true;
var target = ObjectManager.GetObjectWoWUnit().FirstOrDefault(o => o.Entry == 7051);
if (target != null)
{
ObjectManager.Me.Target = target.Guid;
if (!ObjectManager.Me.HaveBuff("Stealth"))
{
Lua.LuaDoString("CastSpellByName('Stealth')");
}
while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && target.GetDistance >= 5)
{
MovementManager.MoveTo(target.Position);
Thread.Sleep(100);
}
Lua.LuaDoString("CastSpellByName('Pick Pocket')");
Thread.Sleep(50);
string[] asm = {
"call " + (uint)0x4C1FA0,
wManager.Wow.Memory.WowMemory.RetnToHookCode
};
wManager.Wow.Memory.WowMemory.InjectAndExecute(asm);
Conditions.ForceIgnoreIsAttacked = false;
}
}
return true;
__________________________________________________________________________________________________________________________________
// Custom code to rup up and Sap a mob and then loot chest for Rogue Poisons Quest - OverridePulseCSharpCode
if (Quest.IsObjectiveComplete(1, 2359))
{
return true;
}
Conditions.ForceIgnoreIsAttacked = true;
wManager.wManagerSetting.CurrentSetting.MaxUnitsNear = 100;
var target = ObjectManager.GetObjectWoWUnit().FirstOrDefault(o => o.Entry == 7053);
if (target != null && target.IsAlive)
{
ObjectManager.Me.Target = target.Guid;
if (!ObjectManager.Me.HaveBuff("Stealth"))
{
Lua.LuaDoString("CastSpellByName('Stealth')");
}
while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && target.GetDistance >= 5)
{
Lua.LuaDoString("CastSpellByName('Sap')");
Fight.StopFight();
if (target.HaveBuff("Sap"))
{
Lua.LuaDoString("ClearTarget();");
}
MovementManager.MoveTo(target.Position);
Thread.Sleep(50);
}
while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !target.HaveBuff("Sap"))
{
Lua.LuaDoString("CastSpellByName('Sap');");
Fight.StopFight();
Thread.Sleep(10);
}
if (target.HaveBuff("Sap"))
{
wManager.wManagerSetting.ClearBlacklistOfCurrentProductSession();
var chest = ObjectManager.GetObjectWoWGameObject().FirstOrDefault(o => o.Entry == 123214);
if (chest != null)
{
while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && chest.GetDistance >= 5)
{
if (target.HaveBuff("Sap"))
{
Lua.LuaDoString("ClearTarget();");
Fight.StopFight();
}
MovementManager.MoveTo(chest.Position);
Thread.Sleep(100);
}
while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause
&& !Quest.IsObjectiveComplete(1, 2359)
&& !ObjectManager.Me.IsLooting()
&& !ObjectManager.Me.IsCast)
{
Lua.LuaDoString("CastSpellByName('Pick Lock');");
Interact.InteractGameObject(chest.GetBaseAddress, true);
Usefuls.WaitIsCastingAndLooting();
string[] asm =
{
"call " + (uint) 0x4C1FA0,
wManager.Wow.Memory.WowMemory.RetnToHookCode
};
wManager.Wow.Memory.WowMemory.InjectAndExecute(asm);
}
}
}
}
else
{
var chest = ObjectManager.GetObjectWoWGameObject().FirstOrDefault(o => o.Entry == 123214);
if (chest != null)
{
while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && chest.GetDistance >= 5)
{
MovementManager.MoveTo(chest.Position);
Thread.Sleep(100);
}
while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause
&& !Quest.IsObjectiveComplete(1, 2359)
&& !ObjectManager.Me.IsLooting()
&& !ObjectManager.Me.IsCast)
{
Lua.LuaDoString("CastSpellByName('Pick Lock');");
Interact.InteractGameObject(chest.GetBaseAddress, true);
Usefuls.WaitIsCastingAndLooting();
string[] asm =
{
"call " + (uint) 0x4C1FA0,
wManager.Wow.Memory.WowMemory.RetnToHookCode
};
wManager.Wow.Memory.WowMemory.InjectAndExecute(asm);
}
}
}
if (ObjectManager.Me.IsDead)
{
Quest.QuesterCurrentContext.CurrentStep = 1;
}
__________________________________________________________________________________________________________________________________
// Buy From Vendor - RunCode
Lua.LuaDoString("BuyMerchantItem(1,1)"); // version 1
wManager.Wow.Helpers.Vendor.BuyItem("Walking Stick",1); // Version 2 - RunCode
// buy specific item from vendor -- OverridePulseCSharpCode
var npc = new Npc
{
Entry = 1247,
Position = new Vector3(-5601.6, -531.203, 399.6539),
Type = Npc.NpcType.Vendor
};
int itemId = 2894;
if (GoToTask.ToPositionAndIntecractWith(npc))
{
Vendor.BuyItem(ItemsManager.GetNameById(itemId), 1);
}
return true;
// Buy item From Vendor + Use that item + Is Specific Class - RunCode -- https://wrobot.eu/forums/topic/11076-quests-and-buy-equip/
if (ObjectManager.Me.WowClass == WoWClass.class && ObjectManager.Me.Level <= 0) // change "Class" to what class you are. set level to level you want to get item at.
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(x, y, z), NpcID, 1, false);
System.Threading.Thread.Sleep(5000);
wManager.Wow.Helpers.Vendor.BuyItem("Skinning Knife",1); // change Skinning Knife to what item you want. do not remove ""
System.Threading.Thread.Sleep(5000);
}
// if has item useitem, hasitem
if (ItemsManager.HasItemById(3108)) // change 3108 to the item id
{
ItemsManager.UseItem(3108); // change 3108 to the item id
}
// Buy ONLY Item + Has Quest - RunCode
if (Quest.HasQuest(375))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(2259.73f, 275.571f, 34.83753f), 2118, 1, false);
System.Threading.Thread.Sleep(5000);
wManager.Wow.Helpers.Vendor.BuyItem("Coarse Thread",1); // change Skinning Knife to what item you want. do not remove ""
System.Threading.Thread.Sleep(5000);
}
// Buy from Vendor - Professional way - RunCode
int npcEntryId = 1464;
var position = new Vector3(-3827.93f, -831.901f, 10.0906f);
while(!Quest.IsObjectiveComplete(1, 288))
{
while(!wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId);
}
if(wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId))
{
Usefuls.SelectGossipOption(GossipOptionsType.vendor);
Thread.Sleep(Usefuls.Latency + 500);
if(ItemsManager.GetItemCountById(2594) <= 0)
{
Lua.LuaDoString("BuyMerchantItem(8,1)"); //Or use wManager.Wow.Helpers.Vendor.BuyItem("Coarse Thread",1);
Thread.Sleep(Usefuls.Latency + 500);
return;
}
}
}
__________________________________________________________________________________________________________________________________
// Buy mount , riding trainer, train riding, buy riding mount - runcode
!wManager.Wow.Helpers.Skill.Has(wManager.Wow.Enums.SkillLine.Riding) && Lua.LuaDoString<int>("return GetMoney()") >= 1000000
// buy mount from vendor - runcode
int npcEntryId = 4772;
var pos = new Vector3(-5521.5f, -1347.8f, 398.8f);
if(!wManager.Wow.Helpers.Skill.Has(wManager.Wow.Enums.SkillLine.Riding))
{
while(!wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(pos, npcEntryId))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(pos, npcEntryId);
Thread.Sleep(Usefuls.Latency + 500);
}
Usefuls.SelectGossipOption(GossipOptionsType.trainer);
Thread.Sleep(Usefuls.Latency + 500);
Lua.LuaDoString("BuyTrainerService(0)");
Thread.Sleep(Usefuls.Latency + 500);
Lua.LuaDoString("CloseTrainer()");
}
__________________________________________________________________________________________________________________________________
// FLY - Custom Fly Code ---- FLYING CODE RunCode
var position = new Vector3(-1770.37f, 3262.19f, 5.10852f);
int npcEntryId = 6726;
if (!ObjectManager.Me.IsOnTaxi)
{
if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId))
{
int node;
Usefuls.SelectGossipOption(GossipOptionsType.taxi);
node = wManager.Wow.Helpers.Lua.LuaDoString<int>("for i=0,30 do if string.find(TaxiNodeName(i),'Orgrimmar') then return i end end");
wManager.Wow.Helpers.Lua.LuaDoString("TakeTaxiNode(" + node + ")");
}
}
__________________________________________________________________________________________________________________________________
// Zangermarsh -- Elevator Code
If
if (ObjectManager.GetWoWGameObjectByyId(183177).FirstOrDefault().GetDistance <= 10) {
Logging.Write("Elevator already here.Lets wait - waiting for elevator");
}
while (ObjectManager.GetWoWGameObjectByyId(183177).FirstOrDefault().GetDistance <= 10) {Thread.Sleep(500);};
Logging.Write("Waiting for the Tram");
while (ObjectManager.GetWoWGameObjectByyId(183177).FirstOrDefault().GetDistance > 10) {Thread.Sleep(500);};
// step inside the tram
wManager.Wow.Helpers.Move.Forward(Move.MoveAction.PressKey,1000);
wait 1500
while (ObjectManager.Me.Position.DistanceTo2D( new Vector3(283.8558f, 5945.312f, 149. 8242f, "None")) >10) {Thread.Sleep(100);};
wait 100
wManager.Wow.Helpers.Move.Backward(Move.MoveAction.PressKey,5500);
// Custom Follow Path to run away from Elevator
EndIf
__________________________________________________________________________________________________________________________________
// Click Loot Window - Item # 1 ( RunCode )
robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 18);
robotManager.Helpful.Mouse.ClickLeft();
// Click Loot Window - Item # 2 ( RunCode )
robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 22);
robotManager.Helpful.Mouse.ClickLeft();
// Mouse Click - Loot window Item # 3 ( RunCode )
robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 26);
robotManager.Helpful.Mouse.ClickLeft();
// Click Loot Window - Item # 4 ( RunCode )
robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 29);
robotManager.Helpful.Mouse.ClickLeft();
if (wManager.Wow.Helpers.ItemsManager.GetItemCountById(19035) > 0)
{
wManager.Wow.Helpers.ItemsManager.UseItem(19035);
System.Threading.Thread.Sleep(2000);
robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 18);
robotManager.Helpful.Mouse.ClickLeft();
System.Threading.Thread.Sleep(2000);
robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 22);
robotManager.Helpful.Mouse.ClickLeft();
System.Threading.Thread.Sleep(2000);
robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 26);
robotManager.Helpful.Mouse.ClickLeft();
System.Threading.Thread.Sleep(2000);
robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 29);
robotManager.Helpful.Mouse.ClickLeft();
}
__________________________________________________________________________________________________________________________________
// Go to location and Gather - Specific Location and gather / interact - RuNCode
var pos = new Vector3(-4679.763f, -1785.955f, -41.34184f);
int objectId = 19861;
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(pos, objectId);
Thread.Sleep(Usefuls.Latency + 10000);
if(ItemsManager.GetItemCountById(5791) < 1 && ItemsManager.GetItemCountById(5790) < 1)
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(pos, objectId);
Thread.Sleep(Usefuls.Latency + 10000);
}
__________________________________________________________________________________________________________________________________
// Use Hearthstone version 2.
if (wManager.Wow.Helpers.Usefuls.ContinentId != (int) wManager.Wow.Enums.ContinentId.Azeroth ||
wManager.Wow.ObjectManager.ObjectManager.Me.Position.DistanceTo2D(new robotManager.Helpful.Vector3(1, 2, 3)) > 1000)
{
wManager.wManagerSetting.CurrentSetting.CloseIfPlayerTeleported = false;
wManager.Wow.Helpers.ItemsManager.UseItem(6948); // http://www.wowhead.com/item=6948/hearthstone
System.Threading.Thread.Sleep(1000 * 20); // 20 secondes
wManager.wManagerSetting.CurrentSetting.CloseIfPlayerTeleported = true;
}
// Check timmer on HS
Lua.LuaDoString<bool>("if GetItemCooldown(Heathstone) == 0 then return true end")
__________________________________________________________________________________________________________________________________
// Add target to Blacklist -- For professional Profile creators.. this can cause you some drama!
WoWUnit unit = new WoWUnit(0);
if (unit.IsValid && !wManager.Wow.ObjectManager.ObjectManager.BlackListObjectManagerGuid.Contains(unit.Guid))
wManager.Wow.ObjectManager.ObjectManager.BlackListObjectManagerGuid.Add(unit.Guid);
__________________________________________________________________________________________________________________________________
// For dungeons mostly ---- Blacklist looting ALL MOBS, except for the boss (rename 12345, by boss id.)
var _units = new List<wManager.Wow.ObjectManager.WoWUnit>();
var tUnit = wManager.Wow.ObjectManager.ObjectManager.GetWoWUnitLootable();
foreach (var woWUnit in tUnit)
{
if (!wManager.wManagerSetting.IsBlackListedAllConditions(woWUnit) && woWUnit.Entry == 12345)
_units.Add(woWUnit);
}
if (_units.Count > 0)
wManager.Wow.Bot.Tasks.LootingTask.Pulse(_units);
__________________________________________________________________________________________________________________________________
// Select gossip option 1 and click all the text after that
var position = new Vector3(-6679.93f, -1194.36f, 240.2135f);
int npcEntryId = 8479;
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId);
System.Threading.Thread.Sleep(1000 * 2);
System.Threading.Thread.Sleep(1000 * 2);
Usefuls.SelectGossipOption(1);
System.Threading.Thread.Sleep(1000 * 2);
Usefuls.SelectGossipOption(1);
System.Threading.Thread.Sleep(1000 * 2);
Usefuls.SelectGossipOption(1);
System.Threading.Thread.Sleep(1000 * 2);
Usefuls.SelectGossipOption(1);
System.Threading.Thread.Sleep(1000 * 2);
wManager.Wow.Helpers.Move.Forward(Move.MoveAction.PressKey, 3000);
__________________________________________________________________________________________________________________________________
// if in Regeneration State - force bot to sitdown - Runcode -- credit - https://wrobot.eu/forums/topic/9777-sitting-during-regeneration/
if (robotManager.Helpful.Logging.Status == "Regeneration")
{
if (!wManager.Wow.ObjectManager.ObjectManager.Me.IsSitting)
{
wManager.Wow.Helpers.Move.SitStandOrDescend();
Thread.Sleep(1000);
}
}
// Force bot to SIT DOWN
if (!wManager.Wow.ObjectManager.ObjectManager.Me.IsSitting)
{
wManager.Wow.Helpers.Move.SitStandOrDescend();
Thread.Sleep(1000);
}
__________________________________________________________________________________________________________________________________
// Check Reputation Faction level - IF STATEMENT - Rep Faction level
Lua.LuaDoString<bool>(@"
for factionIndex = 1, GetNumFactions() do
local name, description, standingId, bottomValue, topValue, earnedValue, atWarWith, canToggleAtWar,
isHeader, isCollapsed, hasRep, isWatched, isChild, factionID = GetFactionInfo(factionIndex)
if name == ""The Mag'har"" and standingId < 4 then
return true
end
end
")
__________________________________________________________________________________________________________________________________
__________________________________________________________________________________________________________________________________
if (!(Quest.HasQuest(12733)) && !(Quest.GetQuestCompleted(12733)) && !(ObjectManager.Me.Position.DistanceTo2D(new Vector3(-3095.85f, -2890.54f, 34.583f)) < 50))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(-3095.85f, -2890.54f, 34.583f), 13476, 1, false);
System.Threading.Thread.Sleep(2000);
wManager.Wow.Helpers.Vendor.BuyItem("Healing Potion",4);
System.Threading.Thread.Sleep(2000);
wManager.Wow.Helpers.Vendor.BuyItem("Scroll of Intellect II",2);
wManager.Wow.Helpers.Vendor.BuyItem("Scroll of Agility",2);
System.Threading.Thread.Sleep(2000);
wManager.Wow.Helpers.ItemsManager.UseItem(2290);
System.Threading.Thread.Sleep(2000);
wManager.Wow.Helpers.ItemsManager.UseItem(3012);
}
// Script to accept quest and turn in - manual turn in, manual accept quest
if (!(Quest.HasQuest(12733)) && !(Quest.GetQuestCompleted(12733)) && !(ObjectManager.Me.Position.DistanceTo2D(new Vector3(2368.922f, -5776.345f, 151.3674f)) < 20))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(2368.922f, -5776.345f, 151.3674f));
}
var u = ObjectManager.GetNearestWoWUnit(ObjectManager.GetWoWUnitByEntry(29047));
if (u.IsValid)
{
Interact.InteractGameObject(u.GetBaseAddress);
wManager.Wow.Helpers.Lua.RunMacroText("/script AcceptQuest();");
}
if ((Quest.HasQuest(12733)) && !(Quest.IsObjectiveComplete(1, 12733)) && !(ObjectManager.Me.InCombat));
{
wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(2336.52f, -5699.58f, 153.9225f), 28406, 1, false);
System.Threading.Thread.Sleep(000);
wManager.Wow.Helpers.SpellManager.CastSpellByIdLUA(45477);
}
if (Quest.HasQuest(12733) && !(Quest.GetQuestCompleted(12733)) && !(ObjectManager.Me.Position.DistanceTo2D(new Vector3(2368.922f, -5776.345f, 151.3674f)) < 20))
{
wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(2368.922f, -5776.345f, 151.3674f));
}
if (u.IsValid)
{
Interact.InteractGameObject(u.GetBaseAddress);
wManager.Wow.Helpers.Lua.RunMacroText("/click QuestFrameCompleteQuestButton");
}
return true;
__________________________________________________________________________________________________________________________________
// Play sound in game - sound file
// Run Lua Code
Lua.LuaDoString("PlaySoundFile("Interface\\AddOns\\MyAddOn\\MySound.ogg")");
// Run Lua Macro
Lua.RunMacroText("/console Sound_EnableSFX 1");
// Play sound in wrobot C#
var myPlayer = new System.Media.SoundPlayer
{
SoundLocation = Application.StartupPath + "\\Data\\newWhisper.wav"
};
var tPlay = new robotManager.Helpful.Timer(1000 * 5); // 5 sec = 5000 ms
while (!tPlay.IsReady)
{
myPlayer.PlaySync();
}
myPlayer.Stop();
__________________________________________________________________________________________________________________________________
// Fishing test - Fishing rotation OverridePulseCSharpCode
Vector3 pos1 = new Vector3(-1475.103, -226.9858, 4.822745, "Flying");
float fishRotation = 5.77f;
uint itemId = 211160;
if (!FishingTask.IsLaunched)
{
if (GoToTask.ToPosition(pos1, 1.5f))
{
ObjectManager.Me.Rotation = fishRotation;
ItemsManager.UseItem(itemId);
FishingTask.LoopFish();
}
}
return true;
__________________________________________________________________________________________________________________________________
// Mail Items *custom script* - By Reapler
public static int InteractItems(List<string> itemNames, int interactions = int.MaxValue)
{
if (!itemNames.Any())
return -1;
var execute =
"local counter = 0; " +
"local leftStacks = 0; " +
"for b=0,4 do " +
"if GetBagName(b) then " +
"for s=1, GetContainerNumSlots(b) do " +
"local itemLink = GetContainerItemLink(b, s) " +
"if itemLink then " +
"local _, stackCount = GetContainerItemInfo(b, s)\t" +
"if string.find(itemLink, \""+ itemNames.FirstOrDefault() + "\") ";
if (itemNames.Count > 1)
{
execute = itemNames.Where(obj => itemNames.FirstOrDefault() != obj).Aggregate(execute, (current, obj) => current + "or string.find(itemLink, \"" + obj + "\") ");
}
execute = execute +
"then " +
"if (counter < "+interactions+") then " +
"UseContainerItem(b, s); " +
"counter = counter + 1; " +
"else " +
"leftStacks = leftStacks + 1;" +
"end " +
"\tend\tend\tend end end return leftStacks;";
return Lua.LuaDoString<int>(execute);
}
/// <summary>
/// Sends a mail to a recipient.
/// </summary>
/// <param name="recipient">The recipient.</param>
/// <param name="subject">The subject.</param>
/// <param name="itemNames">The items to send as names.</param>
/// <returns>true if successful ; false if no mailbox available or stacks are left.</returns>
public bool SendItems(string recipient, string subject, List<string> itemNames)
{
var mailBox = ObjectManager.GetObjectWoWGameObject().FirstOrDefault(i => i.IsMailbox && i.GetDistance <= 5);
if (mailBox == null || string.IsNullOrWhiteSpace(recipient))
return false;
if (subject.Length == 0)
subject = "-";
if (mailBox)
{
const int delayMs = 800;
var timeOut = DateTime.Now.AddSeconds(40);
Interact.InteractGameObject(mailBox.GetBaseAddress);
Thread.Sleep(delayMs);
Lua.LuaDoString("RunMacroText('/click MailFrameTab2');");
Thread.Sleep(delayMs);
var leftStack = InteractItems(itemNames, 12);
Thread.Sleep(delayMs);
Lua.LuaDoString($"SendMail(\"{recipient}\",\"{subject}\",\" \");");
Thread.Sleep(delayMs*3);
while (leftStack != 0 && DateTime.Now < timeOut)
{
leftStack = InteractItems(itemNames, 12);
Thread.Sleep(delayMs);
Lua.LuaDoString($"SendMail(\"{recipient}\",\"{subject}\",\" \");");
Thread.Sleep(delayMs*3);
}
Lua.LuaDoString("CloseMail();");
if (leftStack != 0)
return false;
}
return true;
}
// Usage: runcode
SendItems("Reapler", "items for you",
new List<string>
{
"Super Healing Potion",
"Heavy Netherweave Bandage",
"Super Mana Potion",
});
__________________________________________________________________________________________________________________________________
//runluacode - equip ammo
var QuiverAmmoBagsId = new List<int>
{
29143,
29144,
29118,
18714,
44447,
44448,
34105,
34106,
34099,
34100,
19319,
19320,
2662,
2663,
8217,
8218,
7371,
7372,
3604,
3605,
3573,
3574,
11362,
11363,
5439,
5441,
7278,
7279,
2101,
2102,
};
var freeSlots = 0;
var bags = wManager.Wow.ObjectManager.ObjectManager.GetObjectWoWContainer();
foreach (var b in bags)
{
if (b.IsValid &&
QuiverAmmoBagsId.Contains(b.Entry) &&
b.Owner == wManager.Wow.ObjectManager.ObjectManager.Me.Guid &&
(b.ContainedIn == 0 || b.ContainedIn == wManager.Wow.ObjectManager.ObjectManager.Me.Guid) &&
!string.IsNullOrWhiteSpace(b.Name))
{
freeSlots += Lua.LuaDoString<int>($@"
local freeSlots = 0;
for bagID = 1, 4 do
if GetBagName(bagID) ~= nil and GetBagName(bagID) == '{b.Name.Replace("'", "\'")}' then
for s=1,GetContainerNumSlots(bagID) do
local i = GetContainerItemInfo(bagID,s);
if not i then
freeSlots = freeSlots + 1
end
end
end
end
return freeSlots;");
}
}
__________________________________________________________________________________________________________________________________
// Polymorph on multiple attackers - Mars -https://wrobot.eu/forums/topic/7541-switch-target-polymorph-switch-to-original-target/?tab=comments#comment-34382
List<WoWUnit> attackers = ObjectManager.GetUnitAttackPlayer();
FightEvents.OnFightLoop += (unit, cancelable) =>
{
if (attackers.Count > 1 && Polymorph.KnownSpell && Polymorph.IsSpellUsable && ObjectManager.Target.GetDistance <= 25 && presence.KnownSpell && presence.IsSpellUsable)
{
WoWUnit mainTarget = attackers.Where(u => u.HealthPercent == attackers.Min(x => x.HealthPercent)).FirstOrDefault();
WoWUnit polyTarget = attackers.Where(u => u.HealthPercent == attackers.Max(x => x.HealthPercent)).FirstOrDefault();
if (!polyTarget.HaveBuff("Polymorph") && polyTarget != mainTarget)
{
SpellManager.CastSpellByNameOn("Polymorph", polyTarget.Name);
Usefuls.WaitIsCasting();
return;
}
}
};
// secondary - Semiko
List<WoWUnit> attackers = ObjectManager.GetUnitAttackPlayer();
if (attackers.Count > 1)
{
WoWUnit mainTarget = attackers.Where(u => u.HealthPercent == attackers.Min(x => x.HealthPercent)).FirstOrDefault();
WoWUnit polyTarget = attackers.Where(u => u.HealthPercent == attackers.Max(x => x.HealthPercent)).FirstOrDefault();
if (!polyTarget.HaveBuff("Polymorph") && polyTarget != mainTarget)
{
Interact.InteractGameObject(polyTarget.GetBaseAddress);
SpellManager.CastSpellByNameLUA("Polymorph");
Thread.Sleep(500);
Interact.InteractGameObject(mainTarget.GetBaseAddress);
}
}
__________________________________________________________________________________________________________________________________
// the missing diplomat
CAN CONDITION
return Quests.hasFailed("The Missing Diplomat");
// IS COMPLETE
return Quests.isComplete("The Missing Diplomat") || Quests.hasFailed("The Missing Diplomat");
// isfailed custom script code - timmer quests - run code
if(!Quest.GetQuestCompleted(1447))
{
bool missingDiplomatFailed = false;
if(Quests.isFailed("The Missing Diplomat"))
{
Logging.Write("Quest failed. Going to abandon and restart, hold on...");
missingDiplomatFailed = true;
Thread.Sleep(Usefuls.Latency + 2000);
Quests.abandon("The Missing Diplomat");
Thread.Sleep(Usefuls.Latency + 10000);
}
if(wManager.Wow.Helpers.FinishedQuestsSettings.CurrentSetting.FinishedQuest.Contains(1447) && missingDiplomatFailed)
{
Logging.Write("[FNV_Quester]: Going to remove The Missing Diplomat from the list of finished quest ids...");
Thread.Sleep(Usefuls.Latency + 500);
wManager.Wow.Helpers.FinishedQuestsSettings.CurrentSetting.FinishedQuest.Remove(1447);
Thread.Sleep(Usefuls.Latency + 500);
Logging.Write("[FNV_Quester]: Success? A: " + !wManager.Wow.Helpers.FinishedQuestsSettings.CurrentSetting.FinishedQuest.Contains(1447));
}
}
__________________________________________________________________________________________________________________________________
// Next RunCode for IsFailed
wManager.wManagerSetting.ClearBlacklistOfCurrentProductSession();
wManager.Wow.Helpers.Conditions.ForceIgnoreIsAttacked = false;
Thread d = new Thread(() =>
{
while(!Quest.HasQuest(1447) && !Quest.GetQuestCompleted(1447))
{
Thread.Sleep(100);
}
if(Quest.HasQuest(1447))
{
while(ObjectManager.Me.WowClass == WoWClass.Druid && !ObjectManager.Me.HaveBuff("Bear Form") && !ObjectManager.Me.HaveBuff("Cat Form"))
{
Thread.Sleep(25);
Logging.Write("[FNV_Quester]: Forcing Bear Form");
Lua.LuaDoString("CastSpellByName('Bear Form')");
Thread.Sleep(500);
break;
}
}
});
if(ObjectManager.Me.WowClass == WoWClass.Druid)
d.Start();
---------------
// Pickup Quest
// Pulse Quest
// RunCode
if(!Quest.GetQuestCompleted(1447))
{
if(!Quests.hasFailed("The Missing Diplomat") && !Quests.isComplete("The Missing Diplomat"))
{
int npcId = 4961;
Vector3 pos = new Vector3(-8681.17, 433.618, 99.8117);
var unit = ObjectManager.GetWoWUnitByEntry(npcId).FirstOrDefault();
wManager.wManagerSetting.ClearBlacklistOfCurrentProductSession();
ObjectManager.Me.Target = unit.Guid;
Fight.StartFight();
}
}
// if quest
Quests.isComplete("The Missing Diplomat")
//turn in quest