[Plugin] CCWatcher - Automated CC removal
Simple plugin that watches out for crowd control effect and keeps immunity buffs up:
- Courageous Action (from Witchcraft) is being recasted when it expires to provide Sleep immunity
- Shrug if Off (Auramancy) is being used when a stun is detected
- Liberation (Auramancy) is being used when a silence is detected
If you're interested in different behaviours or support for more CC breakers, post here and I might be able to implement them.
How-To:
1. Create a new plugin in AB's plugin editor
2. Copy the code below in the file and save it
3. Compile it, it's ready to run now!
Liked my plugins? Buy me a coffee (or more!) to help additional development 
Simple plugin that watches out for crowd control effect and keeps immunity buffs up:
- Courageous Action (from Witchcraft) is being recasted when it expires to provide Sleep immunity
- Shrug if Off (Auramancy) is being used when a stun is detected
- Liberation (Auramancy) is being used when a silence is detected
If you're interested in different behaviours or support for more CC breakers, post here and I might be able to implement them.
How-To:
1. Create a new plugin in AB's plugin editor
2. Copy the code below in the file and save it
3. Compile it, it's ready to run now!
Code:
using System;
using System.Threading;
using System.Threading.Tasks;
using ArcheBuddy.Bot.Classes;
using System.Collections.Generic;
using System.Linq;
namespace CCWatcher
{
public class CCWatcher : Core
{
public static string GetPluginAuthor()
{
return "Karls";
}
public static string GetPluginVersion()
{
return "1.0.1";
}
public static string GetPluginDescription()
{
return "CCWatcher";
}
public void PluginStop()
{
}
private bool UseSkillAndWait(uint skillId, bool selfTarget = true)
{
while (me.isCasting || me.isGlobalCooldown)
Thread.Sleep(10);
UseSkill(skillId, true, selfTarget);
while (me.isCasting || me.isGlobalCooldown)
Thread.Sleep(10);
return true;
}
const uint _COURAGEOUS_ACTION = 11424;
const uint _SHRUF_IT_OFF = 11429;
const uint _LIBERATION = 11380;
const uint _BF_AWAKENING = 499;
public void PluginRun()
{
ClearLogs();
List<Skill> skills = me.getSkills();
bool hasCourageousAction = skills.Any(s => s.id == _COURAGEOUS_ACTION);
bool hasShrugItOff = skills.Any(s => s.id == _SHRUF_IT_OFF);
bool hasLiberation = skills.Any(s => s.id == _LIBERATION);
while (true)
{
Territory zone = getCurrentTerritory();
// check that we're in a pvp zone and able to cast
if (!me.sitOnMount && !me.isClimb && me.isAlive()
&& (me.isInsideBattleField || (zone.state != TerritoryState.Peace && zone.state != TerritoryState.Truce))
)
{
if (hasCourageousAction && buffTime(_BF_AWAKENING) == 0 && skillCooldown(_COURAGEOUS_ACTION) == 0)
UseSkillAndWait(_COURAGEOUS_ACTION);
else if (hasShrugItOff && isStun() && skillCooldown(_SHRUF_IT_OFF) == 0)
UseSkillAndWait(_SHRUF_IT_OFF);
else if (hasLiberation && isSilense() && skillCooldown(_LIBERATION) == 0)
UseSkillAndWait(_LIBERATION);
}
Thread.Sleep(10);
}
}
}
}


Last edited: