Follows its master, buffs party, loots stuff, rolls on stuff if set to 

PHP:
using System;
using System.Threading;
using System.Collections.Generic;
using ArcheBuddy.Bot.Classes;
namespace PartyBuffer
{
public class PartyBuffer : Core
{
public static string GetPluginAuthor()
{
return "Zagreb";
}
public static string GetPluginVersion()
{
return "1.0.0.0";
}
public static string GetPluginDescription()
{
return "Well, it buffs party! And loots stuff...";
}
Creature master = null; // Don't change this.
String mastersName = "nameHere"; // Here you type name of a char to follow to.
Double followRange = 5.0; // It will keep following master at this range.
bool doLoot = true; // Loot switch.
bool doResPpl = true; // Ressurect party members switch.
bool diceLoot = true; // Dice mode selection. It will roll if true and won't if false.
Random randomRollTime = new Random();
List<Creature> DeadPpl = new List<Creature>();
bool Loop;
public void PluginRun()
{
Loop = true;
if (!getCreatures().Exists(p => p.name == mastersName))
{
Log("Can't find my master. Stopping...");
}
else
{
Start();
}
}
public void Start()
{
onLootDice += on_RollDice;
while (Loop == true)
{
if (isAlive())
{
if (ourMaster() != null)
{
master = ourMaster();
if (me.dist(master) <= followRange)
{
doGoodStuff();
if (doLoot == true)
{
lootAround();
}
}
else
{
ComeTo(master, followRange);
doGoodStuff();
if (doLoot == true)
{
lootAround();
}
}
}
}
else
{
Log("I'm dead... :(");
Loop = false;
}
Thread.Sleep(100);
}
}
public void on_RollDice(Item item)
{
if (diceLoot == true)
{
Thread.Sleep(randomRollTime.Next(1000, 2500));
Log("Rolling on item: " + item.name);
item.Dice(true);
}
else
{
Thread.Sleep(randomRollTime.Next(1000, 2500));
item.Dice(false);
}
}
public void lootAround()
{
foreach (var corps in getCreatures())
{
if (corps.dropAvailable && me.dist(corps) <= 20)
{
if (me.dist(corps) <= 2)
{
PickupAllDrop(corps);
}
else
{
ComeTo(corps, 2);
PickupAllDrop(corps);
}
Thread.Sleep(100);
}
}
}
public Creature ourMaster()
{
Creature obj = null;
foreach (var player in getCreatures())
{
if (player.name == mastersName)
{
obj = player;
return obj;
}
}
return obj;
}
public void doGoodStuff()
{
if (isSkillLearned(10546) == true)
{
foreach (PartyMember member in getPartyMembers())
{
if (!isAlive(member.obj))
{
if (doResPpl == true)
{
if (me.dist(member.obj) > 25 && me.dist(member.obj) < 40)
{
SetTarget(member.obj);
ComeTo(member.obj, 20);
UseSkillAndWait(10546, false);
Log("Our fellow member " + member.nick + " has died." + "Resurrecting...");
}
else
{
SetTarget(member.obj);
UseSkillAndWait(10546, false);
Log("Our fellow member " + member.nick + " has died." + "Resurrecting...");
}
}
else
{
DeadPpl.Add(member.obj);
}
}
}
}
if (isSkillLearned(11991) == true)
{
if (skillCooldown(11991) == 0)
{
foreach (PartyMember member in getPartyMembers())
{
if (!DeadPpl.Contains(member.obj))
{
if (!member.obj.getBuffs().Exists(b => b.id == 841))
{
if (me.dist(member.obj) > 25 && me.dist(member.obj) < 30)
{
SetTarget(member.obj);
ComeTo(member.obj, 25);
UseSkillAndWait(11991, false);
}
if (me.dist(member.obj) <= 25)
{
SetTarget(member.obj);
UseSkillAndWait(11991, false);
}
Thread.Sleep(1650);
}
}
}
}
}
if (isSkillLearned(11377) == true)
{
if (skillCooldown(11377) == 0)
{
foreach (PartyMember member in getPartyMembers())
{
if (!DeadPpl.Contains(member.obj))
{
if (!member.obj.getBuffs().Exists(b => b.id == 462) &&
!member.obj.getBuffs().Exists(b => b.id == 463) &&
!member.obj.getBuffs().Exists(b => b.id == 464) &&
!member.obj.getBuffs().Exists(b => b.id == 465) &&
!member.obj.getBuffs().Exists(b => b.id == 466))
{
if (me.dist(member.obj) > 25 && me.dist(member.obj) < 30)
{
SetTarget(member.obj);
ComeTo(member.obj, 25);
UseSkillAndWait(11377, false);
}
if (me.dist(member.obj) <= 25)
{
SetTarget(member.obj);
UseSkillAndWait(11377, false);
}
Thread.Sleep(1650);
}
}
}
}
}
if (isSkillLearned(16004) == true)
{
if (skillCooldown(16004) == 0)
{
foreach (PartyMember member in getPartyMembers())
{
if (!DeadPpl.Contains(member.obj))
{
if (!member.obj.getBuffs().Exists(b => b.id == 2955) &&
!member.obj.getBuffs().Exists(b => b.id == 2956) &&
!member.obj.getBuffs().Exists(b => b.id == 7661))
{
if (me.dist(member.obj) > 25 && me.dist(member.obj) < 30)
{
SetTarget(member.obj);
ComeTo(member.obj, 25);
UseSkillAndWait(16004, false);
}
if (me.dist(member.obj) <= 25)
{
SetTarget(member.obj);
UseSkillAndWait(16004, false);
}
while (me.isCasting || me.isGlobalCooldown)
Thread.Sleep(50);
Thread.Sleep(2150);
}
}
}
}
}
SetTarget(master);
}
public void UseSkillAndWait(uint skillId, bool selfTarget = false)
{
while (me.isCasting || me.isGlobalCooldown)
Thread.Sleep(50);
if (!UseSkill(skillId, true, selfTarget))
{
if (me.target != null && GetLastError() == LastError.NoLineOfSight)
{
if (dist(me.target) <= 5)
ComeTo(me.target, 2);
else if (dist(me.target) <= 10)
ComeTo(me.target, 3);
else if (dist(me.target) < 20)
ComeTo(me.target, 8);
else
ComeTo(me.target, 8);
}
}
while (me.isCasting || me.isGlobalCooldown)
Thread.Sleep(50);
}
public void PluginStop()
{
onLootDice -= on_RollDice;
DeadPpl.Clear();
}
}
}
Last edited: