diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 061ee6bdd..65db9fdcd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ all boons can be added to private static List allBoons * source an enum on BoonSource indicating from which class the boon originates (MIXED in doubt) - * type: either "duration" ex: switness or "intensity" ex:might + * type: either BoonType.Duration ex: switness or BoonType.Intensity ex:might * capacity: both types have a max stacks. If unsure about duration go with 1 diff --git a/LuckParser/Controllers/Controller1.cs b/LuckParser/Controllers/Controller1.cs index 84577832a..5b67b2f85 100644 --- a/LuckParser/Controllers/Controller1.cs +++ b/LuckParser/Controllers/Controller1.cs @@ -11,6 +11,7 @@ using LuckParser.Models; using System.IO.Compression; using System.Windows.Forms; +using static LuckParser.Models.ParseModels.Boss; //recomend CTRL+M+O to collapse all namespace LuckParser.Controllers { @@ -117,7 +118,7 @@ private String getString(int length) } return "UNKNOWN"; } - private String FilterStringChars(string str) + private static String FilterStringChars(string str) { string filtered = ""; string filter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz "; @@ -139,6 +140,7 @@ private String FilterStringChars(string str) private CombatData combat_data = new CombatData(); private MechanicData mech_data = new MechanicData(); private List p_list = new List(); + private Boss boss; // Public Methods public LogData getLogData() @@ -672,6 +674,8 @@ private void fillMissingData() } } + AgentItem bossAgent = agent_data.GetAgent(boss_data.getAgent()); + boss = new Boss(bossAgent); // Sort p_list = p_list.OrderBy(a => int.Parse(a.getGroup())).ToList();//p_list.Sort((a, b)=>int.Parse(a.getGroup()) - int.Parse(b.getGroup())) setMechData(); @@ -1024,11 +1028,11 @@ private Dictionary getfinalboons(Player p) string rate = "0"; if (boon_distrib.ContainsKey(boon.getID())) { - if (boon.getType().Equals("duration")) + if (boon.getType() == Boon.BoonType.Duration) { rate = Math.Round(100.0 * boon_distrib.getUptime(boon.getID()) / fight_duration, 1) + "%"; } - else if (boon.getType().Equals("intensity")) + else if (boon.getType() == Boon.BoonType.Intensity) { rate = Math.Round((double)boon_distrib.getUptime(boon.getID()) / fight_duration, 1).ToString(); } @@ -1071,14 +1075,14 @@ private Dictionary getfinalboons(Player p, List trgetPlayer totaloverstack += total; if (total > 0) { - if (boon.getType().Equals("duration")) + if (boon.getType() == Boon.BoonType.Duration) { rate = "" + Math.Round(100.0 * total / fight_duration / trgetPlayers.Count, 1) + "%"; } - else if (boon.getType().Equals("intensity")) + else if (boon.getType() == Boon.BoonType.Intensity) { rate = "" @@ -1104,12 +1108,12 @@ private Dictionary getfinalcondis(Player p) if (boon_distrib.ContainsKey(boon.getID())) { string rate = "0"; - if (boon.getType().Equals("duration")) + if (boon.getType() == Boon.BoonType.Duration) { long fight_duration = b_data.getLastAware() - b_data.getFirstAware(); rate = Math.Round(100.0 * boon_distrib.getUptime(boon.getID()) / fight_duration, 1) + "%"; } - else if (boon.getType().Equals("intensity")) + else if (boon.getType() == Boon.BoonType.Intensity) { long fight_duration = b_data.getLastAware() - b_data.getFirstAware(); rate = Math.Round((double)boon_distrib.getUptime(boon.getID()) / fight_duration, 1).ToString(); @@ -1802,11 +1806,12 @@ private void PrintWeapons(StreamWriter sw, Player p) AgentData a_data = getAgentData(); //print weapon sets string[] wep = p.getWeaponsArray(s_data,c_data,b_data,a_data); + sw.Write("
"); if (wep[0] != null) { sw.Write("\"""); } - else + else if(wep[1] != null) { sw.Write("\"Unknown\""); } @@ -1826,16 +1831,16 @@ private void PrintWeapons(StreamWriter sw, Player p) } else { - sw.Write("/"); + sw.Write(" / "); } if (wep[2] != null) { sw.Write("\"""); } - else + else if(wep[3] != null) { - // sw.Write("\"Unknown\""); + sw.Write("\"Unknown\""); } if (wep[3] != null) { @@ -1849,6 +1854,7 @@ private void PrintWeapons(StreamWriter sw, Player p) //sw.Write("\"Unknown\""); } sw.Write("
"); + sw.Write("
"); } bool[] SnapSettings; @@ -1909,8 +1915,9 @@ private void CreateCompTable(StreamWriter sw) { sw.Write(""); { sw.Write("\"""); + sw.Write(build); PrintWeapons(sw,gPlay); - sw.Write(build + "
" + charName); + sw.Write(charName); } sw.Write(""); } @@ -2417,7 +2424,7 @@ private void CreateUptimeTable(StreamWriter sw, List list_to_use, string t } foreach (Boon boon in list_to_use) { - if (boon.getType() == "intensity") + if (boon.getType() == Boon.BoonType.Intensity) { intensityBoon.Add(count); } @@ -3464,10 +3471,10 @@ private void CreateDeathRecap(StreamWriter sw, Player p) List damageLogs = p.getDamageTakenLogs(b_data, c_data.getCombatList(), getAgentData(), getMechData()); SkillData s_data = getSkillData(); List s_list = s_data.getSkillList(); - List down = getCombatData().getStates(p.getInstid(), "CHANGE_DOWN"); + List down = getCombatData().getStates(p.getInstid(), "CHANGE_DOWN", b_data.getFirstAware(), b_data.getLastAware()); if (down.Count > 0) { - List ups = getCombatData().getStates(p.getInstid(), "CHANGE_UP"); + List ups = getCombatData().getStates(p.getInstid(), "CHANGE_UP", b_data.getFirstAware(), b_data.getLastAware()); down = down.GetRange(ups.Count(), down.Count()-ups.Count()); } List dead = getCombatData().getStates(p.getInstid(), "CHANGE_DEAD"); @@ -4588,8 +4595,6 @@ private void CreateCondiUptimeTable(StreamWriter sw,Player boss) private void CreateBossSummary(StreamWriter sw) { //generate Player list Graphs - AgentItem bossAgent = agent_data.GetAgent(boss_data.getAgent()); - Boss boss = new Boss(bossAgent); CombatData c_data = getCombatData(); BossData b_data = getBossData(); List casting = boss.getCastLogs(b_data, c_data.getCombatList(), getAgentData()); @@ -5066,6 +5071,7 @@ public void CreateHTML(StreamWriter sw, bool[] settingsSnap) } string bossname = FilterStringChars(b_data.getName()); setPresentBoons(settingsSnap); + List phases = boss.getPhases(getBossData(), getCombatData().getCombatList(), getAgentData()); string Html_playerDropdown = ""; foreach (Player p in p_list) { @@ -6062,7 +6068,6 @@ public string GetLink(string name) return "https://wiki.guildwars2.com/images/1/19/Crimson_Antique_Musket.png"; case "Staff": return "https://wiki.guildwars2.com/images/5/5f/Crimson_Antique_Spire.png"; - //dont use these as it only works for english case "Vale Guardian-icon": return "https://wiki.guildwars2.com/images/f/fb/Mini_Vale_Guardian.png"; case "Gorseval the Multifarious-icon": diff --git a/LuckParser/Models/ParseModels/Boons/Boon.cs b/LuckParser/Models/ParseModels/Boons/Boon.cs index 1b0ab3721..353e9130d 100644 --- a/LuckParser/Models/ParseModels/Boons/Boon.cs +++ b/LuckParser/Models/ParseModels/Boons/Boon.cs @@ -10,7 +10,8 @@ public class Boon // Boon public enum BoonEnum { Condition, Boon, OffensiveBuffTable, DefensiveBuffTable, GraphOnlyBuff, Food, Utility}; public enum BoonSource { Mixed, Necromancer, Elementalist, Mesmer, Warrior, Revenant, Guardian, Thief, Ranger, Engineer, Item }; - public enum RemoveType { Cleanse, Manual, None, All}; + public enum RemoveType { CleanseFoe, CleanseFriend, ManualFriend, None, All}; + public enum BoonType { Duration, Intensity}; private static BoonSource ProfToEnum(string prof) { @@ -62,12 +63,12 @@ private static BoonSource ProfToEnum(string prof) private BoonEnum nature; private BoonSource source; private RemoveType remove_type; - private string type; + private BoonType type; private int capacity; private string link; - private Boon(string name, BoonSource source, string type, int capacity, BoonEnum nature, RemoveType remove_type = RemoveType.None) + private Boon(string name, BoonSource source, BoonType type, int capacity, BoonEnum nature, RemoveType remove_type = RemoveType.None) { this.name = name; this.source = source; @@ -78,7 +79,7 @@ private Boon(string name, BoonSource source, string type, int capacity, BoonEnum this.link = ""; this.remove_type = remove_type; } - private Boon(string name, int id, BoonSource source, string type, int capacity, BoonEnum nature, RemoveType remove_type = RemoveType.None) + private Boon(string name, int id, BoonSource source, BoonType type, int capacity, BoonEnum nature, RemoveType remove_type = RemoveType.None) { this.name = name; this.id = id; @@ -90,7 +91,7 @@ private Boon(string name, int id, BoonSource source, string type, int capacity, this.remove_type = remove_type; } - private Boon(string name, int id, BoonSource source, string type, int capacity, BoonEnum nature, string link, RemoveType remove_type = RemoveType.None) + private Boon(string name, int id, BoonSource source, BoonType type, int capacity, BoonEnum nature, string link, RemoveType remove_type = RemoveType.None) { this.name = name; this.id = id; @@ -106,391 +107,391 @@ private Boon(string name, int id, BoonSource source, string type, int capacity, private static List allBoons = new List { //Base boons - new Boon("Might", 740, BoonSource.Mixed, "intensity", 25, BoonEnum.Boon, "https://wiki.guildwars2.com/images/7/7c/Might.png", RemoveType.Cleanse), - new Boon("Fury", 725, BoonSource.Mixed, "duration", 9, BoonEnum.Boon, "https://wiki.guildwars2.com/images/4/46/Fury.png", RemoveType.Cleanse),//or 3m and 30s - new Boon("Quickness", 1187, BoonSource.Mixed, "duration", 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/b/b4/Quickness.png", RemoveType.Cleanse), - new Boon("Alacrity", 30328, BoonSource.Mixed, "duration", 9, BoonEnum.Boon, "https://wiki.guildwars2.com/images/thumb/4/4c/Alacrity.png/20px-Alacrity.png", RemoveType.Cleanse), - new Boon("Protection", 717, BoonSource.Mixed, "duration", 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/6/6c/Protection.png", RemoveType.Cleanse), - new Boon("Regeneration", 718, BoonSource.Mixed, "duration", 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/5/53/Regeneration.png", RemoveType.Cleanse), - new Boon("Vigor", 726, BoonSource.Mixed, "duration", 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/f/f4/Vigor.png", RemoveType.Cleanse), - new Boon("Aegis", 743, BoonSource.Mixed, "duration", 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/e/e5/Aegis.png", RemoveType.All), - new Boon("Stability", 1122, BoonSource.Mixed, "intensity", 25, BoonEnum.Boon, "https://wiki.guildwars2.com/images/a/ae/Stability.png", RemoveType.All), - new Boon("Swiftness", 719, BoonSource.Mixed, "duration", 9, BoonEnum.Boon, "https://wiki.guildwars2.com/images/a/af/Swiftness.png", RemoveType.Cleanse), - new Boon("Retaliation", 873, BoonSource.Mixed, "duration", 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/5/53/Retaliation.png", RemoveType.Cleanse), - new Boon("Resistance", 26980, BoonSource.Mixed, "duration", 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/thumb/e/e9/Resistance_40px.png/20px-Resistance_40px.png", RemoveType.Cleanse), + new Boon("Might", 740, BoonSource.Mixed, BoonType.Intensity, 25, BoonEnum.Boon, "https://wiki.guildwars2.com/images/7/7c/Might.png", RemoveType.CleanseFoe), + new Boon("Fury", 725, BoonSource.Mixed, BoonType.Duration, 9, BoonEnum.Boon, "https://wiki.guildwars2.com/images/4/46/Fury.png", RemoveType.CleanseFoe),//or 3m and 30s + new Boon("Quickness", 1187, BoonSource.Mixed, BoonType.Duration, 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/b/b4/Quickness.png", RemoveType.CleanseFoe), + new Boon("Alacrity", 30328, BoonSource.Mixed, BoonType.Duration, 9, BoonEnum.Boon, "https://wiki.guildwars2.com/images/thumb/4/4c/Alacrity.png/20px-Alacrity.png", RemoveType.CleanseFoe), + new Boon("Protection", 717, BoonSource.Mixed, BoonType.Duration, 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/6/6c/Protection.png", RemoveType.CleanseFoe), + new Boon("Regeneration", 718, BoonSource.Mixed, BoonType.Duration, 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/5/53/Regeneration.png", RemoveType.CleanseFoe), + new Boon("Vigor", 726, BoonSource.Mixed, BoonType.Duration, 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/f/f4/Vigor.png", RemoveType.CleanseFoe), + new Boon("Aegis", 743, BoonSource.Mixed, BoonType.Duration, 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/e/e5/Aegis.png", RemoveType.All), + new Boon("Stability", 1122, BoonSource.Mixed, BoonType.Intensity, 25, BoonEnum.Boon, "https://wiki.guildwars2.com/images/a/ae/Stability.png", RemoveType.All), + new Boon("Swiftness", 719, BoonSource.Mixed, BoonType.Duration, 9, BoonEnum.Boon, "https://wiki.guildwars2.com/images/a/af/Swiftness.png", RemoveType.CleanseFoe), + new Boon("Retaliation", 873, BoonSource.Mixed, BoonType.Duration, 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/5/53/Retaliation.png", RemoveType.CleanseFoe), + new Boon("Resistance", 26980, BoonSource.Mixed, BoonType.Duration, 5, BoonEnum.Boon, "https://wiki.guildwars2.com/images/thumb/e/e9/Resistance_40px.png/20px-Resistance_40px.png", RemoveType.CleanseFoe), // Condis - new Boon("Bleeding", 736, BoonSource.Mixed, "intensity", 1500, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/3/33/Bleeding.png/20px-Bleeding.png", RemoveType.Cleanse), - new Boon("Burning", 737, BoonSource.Mixed, "intensity", 1500, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/4/45/Burning.png/20px-Burning.png", RemoveType.Cleanse), - new Boon("Confusion", 861, BoonSource.Mixed, "intensity", 1500, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/e/e6/Confusion.png/20px-Confusion.png", RemoveType.Cleanse), - new Boon("Poison", 723, BoonSource.Mixed, "intensity", 1500, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/0/05/Poison.png/20px-Poison.png", RemoveType.Cleanse), - new Boon("Torment", 19426, BoonSource.Mixed, "intensity", 1500, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/0/08/Torment.png/20px-Torment.png", RemoveType.Cleanse), - new Boon("Blind", 720, BoonSource.Mixed, "duration", 9, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/3/33/Blinded.png/20px-Blinded.png", RemoveType.Cleanse), - new Boon("Chilled", 722, BoonSource.Mixed, "duration", 5, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/a/a6/Chilled.png/20px-Chilled.png", RemoveType.Cleanse), - new Boon("Crippled", 721, BoonSource.Mixed, "duration", 9, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/f/fb/Crippled.png/20px-Crippled.png", RemoveType.Cleanse), - new Boon("Fear", 791, BoonSource.Mixed, "duration", 9, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/e/e6/Fear.png/20px-Fear.png", RemoveType.Cleanse), - new Boon("Immobile", 727, BoonSource.Mixed, "duration", 3, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/3/32/Immobile.png/20px-Immobile.png", RemoveType.Cleanse), - new Boon("Slow", 26766, BoonSource.Mixed, "duration", 9, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/f/fb/Slow_40px.png/20px-Slow_40px.png", RemoveType.Cleanse), - new Boon("Weakness", 742, BoonSource.Mixed, "duration", 5, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/f/f9/Weakness.png/20px-Weakness.png", RemoveType.Cleanse), - new Boon("Taunt", 27705, BoonSource.Mixed, "duration", 5, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/c/cc/Taunt.png/20px-Taunt.png", RemoveType.Cleanse), - new Boon("Vulnerability", 738, BoonSource.Mixed, "intensity", 25, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/a/af/Vulnerability.png/20px-Vulnerability.png", RemoveType.Cleanse), - new Boon("Retaliation", 873, BoonSource.Mixed, "duration", 5, BoonEnum.Condition, "https://wiki.guildwars2.com/images/5/53/Retaliation.png", RemoveType.Cleanse), + new Boon("Bleeding", 736, BoonSource.Mixed, BoonType.Intensity, 1500, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/3/33/Bleeding.png/20px-Bleeding.png", RemoveType.CleanseFriend), + new Boon("Burning", 737, BoonSource.Mixed, BoonType.Intensity, 1500, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/4/45/Burning.png/20px-Burning.png", RemoveType.CleanseFriend), + new Boon("Confusion", 861, BoonSource.Mixed, BoonType.Intensity, 1500, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/e/e6/Confusion.png/20px-Confusion.png", RemoveType.CleanseFriend), + new Boon("Poison", 723, BoonSource.Mixed, BoonType.Intensity, 1500, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/0/05/Poison.png/20px-Poison.png", RemoveType.CleanseFriend), + new Boon("Torment", 19426, BoonSource.Mixed, BoonType.Intensity, 1500, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/0/08/Torment.png/20px-Torment.png", RemoveType.CleanseFriend), + new Boon("Blind", 720, BoonSource.Mixed, BoonType.Duration, 9, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/3/33/Blinded.png/20px-Blinded.png", RemoveType.CleanseFriend), + new Boon("Chilled", 722, BoonSource.Mixed, BoonType.Duration, 5, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/a/a6/Chilled.png/20px-Chilled.png", RemoveType.CleanseFriend), + new Boon("Crippled", 721, BoonSource.Mixed, BoonType.Duration, 9, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/f/fb/Crippled.png/20px-Crippled.png", RemoveType.CleanseFriend), + new Boon("Fear", 791, BoonSource.Mixed, BoonType.Duration, 9, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/e/e6/Fear.png/20px-Fear.png", RemoveType.CleanseFriend), + new Boon("Immobile", 727, BoonSource.Mixed, BoonType.Duration, 3, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/3/32/Immobile.png/20px-Immobile.png", RemoveType.CleanseFriend), + new Boon("Slow", 26766, BoonSource.Mixed, BoonType.Duration, 9, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/f/fb/Slow_40px.png/20px-Slow_40px.png", RemoveType.CleanseFriend), + new Boon("Weakness", 742, BoonSource.Mixed, BoonType.Duration, 5, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/f/f9/Weakness.png/20px-Weakness.png", RemoveType.CleanseFriend), + new Boon("Taunt", 27705, BoonSource.Mixed, BoonType.Duration, 5, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/c/cc/Taunt.png/20px-Taunt.png", RemoveType.CleanseFriend), + new Boon("Vulnerability", 738, BoonSource.Mixed, BoonType.Intensity, 25, BoonEnum.Condition, "https://wiki.guildwars2.com/images/thumb/a/af/Vulnerability.png/20px-Vulnerability.png", RemoveType.CleanseFriend), + new Boon("Retaliation", 873, BoonSource.Mixed, BoonType.Duration, 5, BoonEnum.Condition, "https://wiki.guildwars2.com/images/5/53/Retaliation.png", RemoveType.CleanseFoe), // Generic - new Boon("Stealth", 13017, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Revealed", 890, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Superspeed", 5974, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/1/1a/Super_Speed.png"), - //new Boon("Invulnerability", 801, BoonSource.Mixed, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/e/eb/Determined.png"), - new Boon("Unblockable", BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff), + new Boon("Stealth", 13017, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Revealed", 890, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Superspeed", 5974, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/1/1a/Super_Speed.png"), + //new Boon("Invulnerability", 801, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/e/eb/Determined.png"), + new Boon("Unblockable", BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), //Auras - new Boon("Chaos Armor", 10332, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Fire Shield", 5677, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Frost Aura", 5579, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Light Aura", 25518, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Magnetic Aura", 5684, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Shocking Aura", 5577, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff), + new Boon("Chaos Armor", 10332, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Fire Shield", 5677, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Frost Aura", 5579, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Light Aura", 25518, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Magnetic Aura", 5684, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Shocking Aura", 5577, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), //race - new Boon("Take Root", 12459, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Become the Bear",12426, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Become the Raven",12405, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Become the Snow Leopard",12400, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Become the Wolf",12393, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Avatar of Melandru", 12368, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Power Suit",12326, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Reaper of Grenth", 12366, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Charrzooka",43503, BoonSource.Mixed, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Take Root", 12459, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Become the Bear",12426, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Become the Raven",12405, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Become the Snow Leopard",12400, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Become the Wolf",12393, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Avatar of Melandru", 12368, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Power Suit",12326, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Reaper of Grenth", 12366, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Charrzooka",43503, BoonSource.Mixed, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), ///REVENANT //skills - new Boon("Crystal Hibernation", 28262, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Vengeful Hammers", 27273, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Rite of the Great Dwarf", 26596, BoonSource.Revenant, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/6/69/Rite_of_the_Great_Dwarf.png"), - new Boon("Embrace the Darkness", 28001, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Enchanted Daggers", 28557, BoonSource.Revenant, "intensity", 6, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Impossible Odds", 27581, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Crystal Hibernation", 28262, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Vengeful Hammers", 27273, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Rite of the Great Dwarf", 26596, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/6/69/Rite_of_the_Great_Dwarf.png"), + new Boon("Embrace the Darkness", 28001, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Enchanted Daggers", 28557, BoonSource.Revenant, BoonType.Intensity, 6, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Impossible Odds", 27581, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //facets - new Boon("Facet of Light",27336, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Infuse Light",27737, BoonSource.Revenant, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/6/60/Infuse_Light.png", RemoveType.Manual), - new Boon("Facet of Darkness",28036, BoonSource.Revenant, "duration", 1, BoonEnum.OffensiveBuffTable, RemoveType.Manual), - new Boon("Facet of Elements",28243, BoonSource.Revenant, "duration", 1, BoonEnum.DefensiveBuffTable, RemoveType.Manual), - new Boon("Facet of Strength",27376, BoonSource.Revenant, "duration", 1, BoonEnum.OffensiveBuffTable, RemoveType.Manual), - new Boon("Facet of Chaos",27983, BoonSource.Revenant, "duration", 1, BoonEnum.DefensiveBuffTable, RemoveType.Manual), - new Boon("Facet of Nature",29275, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Naturalistic Resonance", 29379, BoonSource.Revenant, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/e/e9/Facet_of_Nature.png", RemoveType.Manual), + new Boon("Facet of Light",27336, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Infuse Light",27737, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/6/60/Infuse_Light.png", RemoveType.ManualFriend), + new Boon("Facet of Darkness",28036, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, RemoveType.ManualFriend), + new Boon("Facet of Elements",28243, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, RemoveType.ManualFriend), + new Boon("Facet of Strength",27376, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, RemoveType.ManualFriend), + new Boon("Facet of Chaos",27983, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, RemoveType.ManualFriend), + new Boon("Facet of Nature",29275, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Naturalistic Resonance", 29379, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/e/e9/Facet_of_Nature.png", RemoveType.ManualFriend), //legends - new Boon("Legendary Centaur Stance",27972, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Legendary Dragon Stance",27732, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Legendary Dwarf Stance",27205, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Legendary Demon Stance",27928, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Legendary Assassin Stance",27890, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Legendary Renegade Stance",44272, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Legendary Centaur Stance",27972, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Legendary Dragon Stance",27732, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Legendary Dwarf Stance",27205, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Legendary Demon Stance",27928, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Legendary Assassin Stance",27890, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Legendary Renegade Stance",44272, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //summons - new Boon("Breakrazor's Bastion",44682, BoonSource.Revenant, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/a/a7/Breakrazor%27s_Bastion.png"), - new Boon("Razorclaw's Rage",41016, BoonSource.Revenant, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/7/73/Razorclaw%27s_Rage.png"), - new Boon("Soulcleave's Summit",45026, BoonSource.Revenant, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/7/78/Soulcleave%27s_Summit.png"), + new Boon("Breakrazor's Bastion",44682, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/a/a7/Breakrazor%27s_Bastion.png"), + new Boon("Razorclaw's Rage",41016, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/7/73/Razorclaw%27s_Rage.png"), + new Boon("Soulcleave's Summit",45026, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/7/78/Soulcleave%27s_Summit.png"), //traits - new Boon("Vicious Lacerations",29395, BoonSource.Revenant, "intensity", 5, BoonEnum.GraphOnlyBuff), - new Boon("Assassin's Presence", 26854, BoonSource.Revenant, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/5/54/Assassin%27s_Presence.png"), - //new Boon("Expose Defenses", 48894, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Invoking Harmony",29025, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff), - //new Boon("Selfless Amplification",30509, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Hardening Persistence",28957, BoonSource.Revenant, "intensity", 10, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Soothing Bastion",34136, BoonSource.Revenant, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Kalla's Fervor",42883, BoonSource.Revenant, "intensity", 5, BoonEnum.GraphOnlyBuff), - new Boon("Improved Kalla's Fervor",45614, BoonSource.Revenant, "intensity", 5, BoonEnum.GraphOnlyBuff), + new Boon("Vicious Lacerations",29395, BoonSource.Revenant, BoonType.Intensity, 5, BoonEnum.GraphOnlyBuff), + new Boon("Assassin's Presence", 26854, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/5/54/Assassin%27s_Presence.png"), + //new Boon("Expose Defenses", 48894, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Invoking Harmony",29025, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + //new Boon("Selfless Amplification",30509, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Hardening Persistence",28957, BoonSource.Revenant, BoonType.Intensity, 10, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Soothing Bastion",34136, BoonSource.Revenant, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Kalla's Fervor",42883, BoonSource.Revenant, BoonType.Intensity, 5, BoonEnum.GraphOnlyBuff), + new Boon("Improved Kalla's Fervor",45614, BoonSource.Revenant, BoonType.Intensity, 5, BoonEnum.GraphOnlyBuff), ///WARRIOR //skills - new Boon("Riposte",14434, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Flames of War", 31708, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Blood Reckoning", 29466 , BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Rock Guard", 34256 , BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Sight beyond Sight",40616, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff), + new Boon("Riposte",14434, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Flames of War", 31708, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Blood Reckoning", 29466 , BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Rock Guard", 34256 , BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Sight beyond Sight",40616, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), //signets - new Boon("Healing Signet",786, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Dolyak Signet",14458, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Fury",14459, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Might",14444, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Stamina",14478, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Rage",14496, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Healing Signet",786, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Dolyak Signet",14458, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Fury",14459, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Might",14444, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Stamina",14478, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Rage",14496, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //banners - new Boon("Banner of Strength", 14417, BoonSource.Warrior, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/e/e1/Banner_of_Strength.png/33px-Banner_of_Strength.png"), - new Boon("Banner of Discipline", 14449, BoonSource.Warrior, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/5/5f/Banner_of_Discipline.png/33px-Banner_of_Discipline.png"), - new Boon("Banner of Tactics",14450, BoonSource.Warrior, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/3/3f/Banner_of_Tactics.png/33px-Banner_of_Tactics.png"), - new Boon("Banner of Defense",14543, BoonSource.Warrior, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/f/f1/Banner_of_Defense.png/33px-Banner_of_Defense.png"), + new Boon("Banner of Strength", 14417, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/e/e1/Banner_of_Strength.png/33px-Banner_of_Strength.png"), + new Boon("Banner of Discipline", 14449, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/5/5f/Banner_of_Discipline.png/33px-Banner_of_Discipline.png"), + new Boon("Banner of Tactics",14450, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/3/3f/Banner_of_Tactics.png/33px-Banner_of_Tactics.png"), + new Boon("Banner of Defense",14543, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/f/f1/Banner_of_Defense.png/33px-Banner_of_Defense.png"), //stances - new Boon("Shield Stance",756, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Berserker's Stance",14453, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Enduring Pain",787, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Balanced Stance",34778, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Defiant Stance",21816, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Rampage",14484, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Shield Stance",756, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Berserker's Stance",14453, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Enduring Pain",787, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Balanced Stance",34778, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Defiant Stance",21816, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Rampage",14484, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //traits - new Boon("Empower Allies", 14222, BoonSource.Warrior, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/4/4c/Empower_Allies.png/20px-Empower_Allies.png"), - new Boon("Peak Performance",46853, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Furious Surge", 30204, BoonSource.Warrior, "intensity", 25, BoonEnum.GraphOnlyBuff), - new Boon("Health Gain per Adrenaline bar Spent", BoonSource.Warrior, "intensity", 3, BoonEnum.GraphOnlyBuff), - new Boon("Rousing Resilience",24383, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Always Angry",34099, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Full Counter",43949, BoonSource.Warrior, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Attacker's Insight",41963, BoonSource.Warrior, "intensity", 5, BoonEnum.GraphOnlyBuff), + new Boon("Empower Allies", 14222, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/4/4c/Empower_Allies.png/20px-Empower_Allies.png"), + new Boon("Peak Performance",46853, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Furious Surge", 30204, BoonSource.Warrior, BoonType.Intensity, 25, BoonEnum.GraphOnlyBuff), + new Boon("Health Gain per Adrenaline bar Spent", BoonSource.Warrior, BoonType.Intensity, 3, BoonEnum.GraphOnlyBuff), + new Boon("Rousing Resilience",24383, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Always Angry",34099, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Full Counter",43949, BoonSource.Warrior, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Attacker's Insight",41963, BoonSource.Warrior, BoonType.Intensity, 5, BoonEnum.GraphOnlyBuff), /// GUARDIAN //skills - new Boon("Zealot's Flame", 9103, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Purging Flames",21672, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/2/28/Purging_Flames.png"), - new Boon("Litany of Wrath",21665, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Renewed Focus",9255, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Ashes of the Just",41957, BoonSource.Guardian, "intensity", 25, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/6/6d/Epilogue-_Ashes_of_the_Just.png", RemoveType.Manual), - new Boon("Eternal Oasis",44871, BoonSource.Guardian, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/5/5f/Epilogue-_Eternal_Oasis.png"), - new Boon("Unbroken Lines",43194, BoonSource.Guardian, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/d/d8/Epilogue-_Unbroken_Lines.png"), + new Boon("Zealot's Flame", 9103, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Purging Flames",21672, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/2/28/Purging_Flames.png"), + new Boon("Litany of Wrath",21665, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Renewed Focus",9255, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Ashes of the Just",41957, BoonSource.Guardian, BoonType.Intensity, 25, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/6/6d/Epilogue-_Ashes_of_the_Just.png", RemoveType.ManualFriend), + new Boon("Eternal Oasis",44871, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/5/5f/Epilogue-_Eternal_Oasis.png"), + new Boon("Unbroken Lines",43194, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/d/d8/Epilogue-_Unbroken_Lines.png"), //signets - new Boon("Signet of Resolve",9220, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Bane Signet",9092, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Judgment",9156, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Mercy",9162, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Wrath",9100, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Courage",29633, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Signet of Resolve",9220, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Bane Signet",9092, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Judgment",9156, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Mercy",9162, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Wrath",9100, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Courage",29633, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //virtues - new Boon("Virtue of Justice", 9114, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Spears of Justice", 29632, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Virtue of Courage", 9113, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Shield of Courage", 29523, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Virtue of Resolve", 9119, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Wings of Resolve", 30308, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Tome of Justice",40530, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Tome of Courage",43508,BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Tome of Resolve",46298, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Virtue of Justice", 9114, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Spears of Justice", 29632, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Virtue of Courage", 9113, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Shield of Courage", 29523, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Virtue of Resolve", 9119, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Wings of Resolve", 30308, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Tome of Justice",40530, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Tome of Courage",43508,BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Tome of Resolve",46298, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //traits - new Boon("Strength in Numbers",13796, BoonSource.Guardian, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/7/7b/Strength_in_Numbers.png"), - new Boon("Invigorated Bulwark",30207, BoonSource.Guardian, "intensity", 5, BoonEnum.GraphOnlyBuff), - new Boon("Battle Presence", 17046, BoonSource.Guardian, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/2/27/Battle_Presence.png"), - //new Boon("Force of Will",29485, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff),//not sure if intensity - new Boon("Quickfire",45123, BoonSource.Guardian, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Strength in Numbers",13796, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/7/7b/Strength_in_Numbers.png"), + new Boon("Invigorated Bulwark",30207, BoonSource.Guardian, BoonType.Intensity, 5, BoonEnum.GraphOnlyBuff), + new Boon("Battle Presence", 17046, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/2/27/Battle_Presence.png"), + //new Boon("Force of Will",29485, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff),//not sure if intensity + new Boon("Quickfire",45123, BoonSource.Guardian, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), ///ENGINEER //skills - new Boon("Static Shield",6055, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Absorb",6056, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("A.E.D.",21660, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Elixir S",5863, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Elixir X", BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Utility Goggles",5864, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Slick Shoes",5833, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Watchful Eye", BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Cooling Vapor",46444, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Photon Wall Deployed",46094, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Spectrum Shield",43066, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Gear Shield",5997, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff), + new Boon("Static Shield",6055, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Absorb",6056, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("A.E.D.",21660, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Elixir S",5863, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Elixir X", BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Utility Goggles",5864, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Slick Shoes",5833, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Watchful Eye", BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Cooling Vapor",46444, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Photon Wall Deployed",46094, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Spectrum Shield",43066, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Gear Shield",5997, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), //Transforms - new Boon("Rampage", BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Photon Forge",43708, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Rampage", BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Photon Forge",43708, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //Traits - new Boon("Laser's Edge",44414, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - //new Boon("Afterburner",42210, BoonSource.Engineer, "intensity", 5, BoonEnum.GraphOnlyBuff), What is this? - new Boon("Iron Blooded",49065, BoonSource.Engineer, "intensity", 25, BoonEnum.GraphOnlyBuff), - new Boon("Streamlined Kits",18687, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Kinetic Charge",45781, BoonSource.Engineer, "intensity", 5, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Pinpoint Distribution", 38333, BoonSource.Engineer, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/b/bf/Pinpoint_Distribution.png"), - new Boon("Heat Therapy",40694, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Overheat", 40397, BoonSource.Engineer, "duration", 1, BoonEnum.GraphOnlyBuff), + new Boon("Laser's Edge",44414, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Afterburner",42210, BoonSource.Engineer, BoonType.Intensity, 5, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Iron Blooded",49065, BoonSource.Engineer, BoonType.Intensity, 25, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Streamlined Kits",18687, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Kinetic Charge",45781, BoonSource.Engineer, BoonType.Intensity, 5, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Pinpoint Distribution", 38333, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/b/bf/Pinpoint_Distribution.png"), + new Boon("Heat Therapy",40694, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Overheat", 40397, BoonSource.Engineer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), ///RANGER - new Boon("Celestial Avatar", 31508, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Counterattack",14509, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Celestial Avatar", 31508, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Counterattack",14509, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //signets - new Boon("Signet of Renewal",41147, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Stone",12627, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of the Hunt",12626, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of the Wild",12636, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Signet of Renewal",41147, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Stone",12627, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of the Hunt",12626, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of the Wild",12636, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //spirits - // new Boon("Water Spirit", 50386, BoonSource.Ranger, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/0/06/Water_Spirit.png/33px-Water_Spirit.png"), - new Boon("Frost Spirit", 12544, BoonSource.Ranger, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/c/c6/Frost_Spirit.png/33px-Frost_Spirit.png"), - new Boon("Sun Spirit", 12540, BoonSource.Ranger, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/d/dd/Sun_Spirit.png/33px-Sun_Spirit.png"), - new Boon("Stone Spirit", 12547, BoonSource.Ranger, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/3/35/Stone_Spirit.png/20px-Stone_Spirit.png"), - //new Boon("Storm Spirit", 50381, BoonSource.Ranger, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/2/25/Storm_Spirit.png/30px-Storm_Spirit.png"), + // new Boon("Water Spirit", 50386, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/0/06/Water_Spirit.png/33px-Water_Spirit.png"), + new Boon("Frost Spirit", 12544, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/c/c6/Frost_Spirit.png/33px-Frost_Spirit.png"), + new Boon("Sun Spirit", 12540, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/d/dd/Sun_Spirit.png/33px-Sun_Spirit.png"), + new Boon("Stone Spirit", 12547, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/3/35/Stone_Spirit.png/20px-Stone_Spirit.png"), + //new Boon("Storm Spirit", 50381, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/2/25/Storm_Spirit.png/30px-Storm_Spirit.png"), //reworked - new Boon("Water Spirit", 50386, BoonSource.Ranger, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/0/06/Water_Spirit.png/33px-Water_Spirit.png"), - new Boon("Frost Spirit", 50421, BoonSource.Ranger, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/c/c6/Frost_Spirit.png/33px-Frost_Spirit.png"), - new Boon("Sun Spirit", 50413, BoonSource.Ranger, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/d/dd/Sun_Spirit.png/33px-Sun_Spirit.png"), - new Boon("Stone Spirit", 50415, BoonSource.Ranger, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/3/35/Stone_Spirit.png/20px-Stone_Spirit.png"), - new Boon("Storm Spirit", 50381, BoonSource.Ranger, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/2/25/Storm_Spirit.png/30px-Storm_Spirit.png"), + new Boon("Water Spirit", 50386, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/0/06/Water_Spirit.png/33px-Water_Spirit.png"), + new Boon("Frost Spirit", 50421, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/c/c6/Frost_Spirit.png/33px-Frost_Spirit.png"), + new Boon("Sun Spirit", 50413, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/d/dd/Sun_Spirit.png/33px-Sun_Spirit.png"), + new Boon("Stone Spirit", 50415, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/3/35/Stone_Spirit.png/20px-Stone_Spirit.png"), + new Boon("Storm Spirit", 50381, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/2/25/Storm_Spirit.png/30px-Storm_Spirit.png"), //skills - new Boon("Attack of Opportunity",12574, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Call of the Wild",36781, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Strength of the pack!",12554, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Sick 'Em!",33902, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Sharpening Stones",12536, BoonSource.Ranger, "intenstiy", 10, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Ancestral Grace", 31584, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Glyph of Empowerment", 31803, BoonSource.Ranger, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/f/f0/Glyph_of_Empowerment.png/33px-Glyph_of_Empowerment.png"), - new Boon("Dolyak Stance",41815, BoonSource.Ranger, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/7/71/Dolyak_Stance.png"), - new Boon("Griffon Stance",46280, BoonSource.Ranger, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/9/98/Griffon_Stance.png"), - new Boon("Moa Stance",45038, BoonSource.Ranger, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/6/66/Moa_Stance.png"), - new Boon("Vulture Stance",44651, BoonSource.Ranger, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/8/8f/Vulture_Stance.png"), - new Boon("Bear Stance",40045, BoonSource.Ranger, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/f/f0/Bear_Stance.png"), - new Boon("One Wolf Pack",44139, BoonSource.Ranger, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/3/3b/One_Wolf_Pack.png"), - new Boon("Sharpen Spines",43266, BoonSource.Ranger, "intensity", 5, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Attack of Opportunity",12574, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Call of the Wild",36781, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Strength of the pack!",12554, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Sick 'Em!",33902, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Sharpening Stones",12536, BoonSource.Ranger, BoonType.Intensity, 10, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Ancestral Grace", 31584, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Glyph of Empowerment", 31803, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/thumb/f/f0/Glyph_of_Empowerment.png/33px-Glyph_of_Empowerment.png"), + new Boon("Dolyak Stance",41815, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/7/71/Dolyak_Stance.png"), + new Boon("Griffon Stance",46280, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/9/98/Griffon_Stance.png"), + new Boon("Moa Stance",45038, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/6/66/Moa_Stance.png"), + new Boon("Vulture Stance",44651, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/8/8f/Vulture_Stance.png"), + new Boon("Bear Stance",40045, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/f/f0/Bear_Stance.png"), + new Boon("One Wolf Pack",44139, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/3/3b/One_Wolf_Pack.png"), + new Boon("Sharpen Spines",43266, BoonSource.Ranger, BoonType.Intensity, 5, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //traits - new Boon("Spotter", 14055, BoonSource.Ranger, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/b/b0/Spotter.png"), - new Boon("Opening Strike",13988, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Quick Draw",29703, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Light on your feet",30673, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Natural Mender",30449, BoonSource.Ranger, "intensity", 10, BoonEnum.GraphOnlyBuff), - new Boon("Lingering Light",32248, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Deadly",44932, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Ferocious",41720, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Supportive",40069, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Versatile",44693, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Stout",40272, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Unstoppable Union",44439, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Twice as Vicious",45600, BoonSource.Ranger, "duration", 1, BoonEnum.GraphOnlyBuff), + new Boon("Spotter", 14055, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/b/b0/Spotter.png"), + new Boon("Opening Strike",13988, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Quick Draw",29703, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Light on your feet",30673, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Natural Mender",30449, BoonSource.Ranger, BoonType.Intensity, 10, BoonEnum.GraphOnlyBuff), + new Boon("Lingering Light",32248, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Deadly",44932, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Ferocious",41720, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Supportive",40069, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Versatile",44693, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Stout",40272, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Unstoppable Union",44439, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Twice as Vicious",45600, BoonSource.Ranger, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), ///THIEF //signets - new Boon("Signet of Malice",13049, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Assassin's Signet (Passive)",13047, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Assassin's Signet (Active)",44597, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Infiltrator's Signet",13063, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Agility",13061, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Shadows",13059, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Signet of Malice",13049, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Assassin's Signet (Passive)",13047, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Assassin's Signet (Active)",44597, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Infiltrator's Signet",13063, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Agility",13061, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Shadows",13059, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //venoms - new Boon("Skelk Venom",-1, BoonSource.Thief, "intensity", 5, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/7/75/Skelk_Venom.png", RemoveType.Manual), - new Boon("Ice Drake Venom",13095, BoonSource.Thief, "intensity", 4, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/7/7b/Ice_Drake_Venom.png", RemoveType.Manual), - new Boon("Devourer Venom", 13094, BoonSource.Thief, "intensity", 2, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/4/4d/Devourer_Venom.png", RemoveType.Manual), - new Boon("Skale Venom", 13036, BoonSource.Thief, "intensity", 4, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/1/14/Skale_Venom.png", RemoveType.Manual), - new Boon("Spider Venom",13036, BoonSource.Thief, "intensity", 6, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/3/39/Spider_Venom.png", RemoveType.Manual), - new Boon("Basilisk Venom", 13133, BoonSource.Thief, "intensity", 1, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/3/3a/Basilisk_Venom.png", RemoveType.Manual), + new Boon("Skelk Venom",-1, BoonSource.Thief, BoonType.Intensity, 5, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/7/75/Skelk_Venom.png", RemoveType.ManualFriend), + new Boon("Ice Drake Venom",13095, BoonSource.Thief, BoonType.Intensity, 4, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/7/7b/Ice_Drake_Venom.png", RemoveType.ManualFriend), + new Boon("Devourer Venom", 13094, BoonSource.Thief, BoonType.Intensity, 2, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/4/4d/Devourer_Venom.png", RemoveType.ManualFriend), + new Boon("Skale Venom", 13036, BoonSource.Thief, BoonType.Intensity, 4, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/1/14/Skale_Venom.png", RemoveType.ManualFriend), + new Boon("Spider Venom",13036, BoonSource.Thief, BoonType.Intensity, 6, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/3/39/Spider_Venom.png", RemoveType.ManualFriend), + new Boon("Basilisk Venom", 13133, BoonSource.Thief, BoonType.Intensity, 1, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/3/3a/Basilisk_Venom.png", RemoveType.ManualFriend), //physical - new Boon("Palm Strike",30423, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Pulmonary Impact",30510, BoonSource.Thief, "intensity", 2, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Palm Strike",30423, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Pulmonary Impact",30510, BoonSource.Thief, BoonType.Intensity, 2, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //weapon - new Boon("Infiltration",13135, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Infiltration",13135, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //transforms - new Boon("Dagger Storm",13134, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Kneeling",42869, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Dagger Storm",13134, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Kneeling",42869, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //traits - //new Boon("Deadeyes's Gaze",46333, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff), - //new Boon("Maleficent Seven",43606, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Hidden Killer",42720, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Lead Attacks",34659, BoonSource.Thief, "intensity", 15, BoonEnum.GraphOnlyBuff), - new Boon("Instant Reflexes",34283, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Lotus Training", 32200, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Unhindered Combatant", 32931, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Bounding Dodger", 33162, BoonSource.Thief, "duration", 1, BoonEnum.GraphOnlyBuff), + //new Boon("Deadeyes's Gaze",46333, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + //new Boon("Maleficent Seven",43606, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Hidden Killer",42720, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Lead Attacks",34659, BoonSource.Thief, BoonType.Intensity, 15, BoonEnum.GraphOnlyBuff), + new Boon("Instant Reflexes",34283, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Lotus Training", 32200, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Unhindered Combatant", 32931, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Bounding Dodger", 33162, BoonSource.Thief, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), ///MESMER //signets - new Boon("Signet of the Ether", 21751, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Domination",10231, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Illusions",10246, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Inspiration",10235, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Midnight",10233, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Humility",30739, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Signet of the Ether", 21751, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Domination",10231, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Illusions",10246, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Inspiration",10235, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Midnight",10233, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Humility",30739, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //skills - new Boon("Distortion",10243, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Blur", 10335 , BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Mirror",10357, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Echo",29664, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Illusion of Life", BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - //new Boon("Time Block",30134, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff), What is this? - new Boon("Time Echo",29582, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Time Anchored",30136, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Distortion",10243, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Blur", 10335 , BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Mirror",10357, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Echo",29664, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Illusion of Life", BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + //new Boon("Time Block",30134, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), What is this? + new Boon("Time Echo",29582, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Time Anchored",30136, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //traits - new Boon("Fencer's Finesse", 30426 , BoonSource.Mesmer, "intensity", 10, BoonEnum.GraphOnlyBuff), - new Boon("Illusionary Defense",49099, BoonSource.Mesmer, "intensity", 5, BoonEnum.GraphOnlyBuff), - new Boon("Compunding Power",49058, BoonSource.Mesmer, "intensity", 5, BoonEnum.GraphOnlyBuff), - new Boon("Phantasmal Force", 44691 , BoonSource.Mesmer, "intensity", 25, BoonEnum.GraphOnlyBuff), - new Boon("Mirage Cloak",40408, BoonSource.Mesmer, "duration", 1, BoonEnum.GraphOnlyBuff), + new Boon("Fencer's Finesse", 30426 , BoonSource.Mesmer, BoonType.Intensity, 10, BoonEnum.GraphOnlyBuff), + new Boon("Illusionary Defense",49099, BoonSource.Mesmer, BoonType.Intensity, 5, BoonEnum.GraphOnlyBuff), + new Boon("Compunding Power",49058, BoonSource.Mesmer, BoonType.Intensity, 5, BoonEnum.GraphOnlyBuff), + new Boon("Phantasmal Force", 44691 , BoonSource.Mesmer, BoonType.Intensity, 25, BoonEnum.GraphOnlyBuff), + new Boon("Mirage Cloak",40408, BoonSource.Mesmer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), ///NECROMANCER //forms - new Boon("Lich Form",10631, BoonSource.Necromancer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Death Shroud", 790, BoonSource.Necromancer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Reaper's Shroud", 29446, BoonSource.Necromancer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Lich Form",10631, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Death Shroud", 790, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Reaper's Shroud", 29446, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //signets - new Boon("Signet of Vampirism",21761, BoonSource.Necromancer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Plague Signet",10630, BoonSource.Necromancer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Spite",10621, BoonSource.Necromancer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of the Locust",10614, BoonSource.Necromancer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Undeath",10610, BoonSource.Necromancer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Signet of Vampirism",21761, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Plague Signet",10630, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Spite",10621, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of the Locust",10614, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Undeath",10610, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //skills - new Boon("Spectral Walk",15083, BoonSource.Necromancer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Infusing Terror", 30129, BoonSource.Necromancer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Spectral Walk",15083, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Infusing Terror", 30129, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //traits - new Boon("Corrupter's Defense",30845, BoonSource.Necromancer, "intenstiy", 10, BoonEnum.GraphOnlyBuff), - new Boon("Vampiric Aura", 30285, BoonSource.Necromancer, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/d/da/Vampiric_Presence.png"), - new Boon("Last Rites",29726, BoonSource.Necromancer, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/1/1a/Last_Rites_%28effect%29.png"), - new Boon("Sadistic Searing",43626, BoonSource.Necromancer, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Corrupter's Defense",30845, BoonSource.Necromancer, BoonType.Intensity, 10, BoonEnum.GraphOnlyBuff), + new Boon("Vampiric Aura", 30285, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/d/da/Vampiric_Presence.png"), + new Boon("Last Rites",29726, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/1/1a/Last_Rites_%28effect%29.png"), + new Boon("Sadistic Searing",43626, BoonSource.Necromancer, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), ///ELEMENTALIST //signets - new Boon("Signet of Restoration",739, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Air",5590, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Earth",5592, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Fire",5544, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Signet of Water",5591, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Signet of Restoration",739, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Air",5590, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Earth",5592, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Fire",5544, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Signet of Water",5591, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //attunments - new Boon("Fire Attunement", 5585, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Water Attunement", 5586, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Air Attunement", 5575, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Earth Attunement", 5580, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Fire Attunement", 5585, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Water Attunement", 5586, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Air Attunement", 5575, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Earth Attunement", 5580, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //forms - new Boon("Mist Form",5543, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Ride the Lightning",5588, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Vapor Form",5620, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Tornado",5534, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Whirlpool", BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Mist Form",5543, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Ride the Lightning",5588, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Vapor Form",5620, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Tornado",5534, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Whirlpool", BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //conjures - new Boon("Conjure Earth Shield", 15788, BoonSource.Elementalist, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/7/7a/Conjure_Earth_Shield.png", RemoveType.Manual), - new Boon("Conjure Flame Axe", 15789, BoonSource.Elementalist, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/a/a1/Conjure_Flame_Axe.png", RemoveType.Manual), - new Boon("Conjure Frost Bow", 15790, BoonSource.Elementalist, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/c/c3/Conjure_Frost_Bow.png", RemoveType.Manual), - new Boon("Conjure Lightning Hammer", 15791, BoonSource.Elementalist, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/1/1f/Conjure_Lightning_Hammer.png", RemoveType.Manual), - new Boon("Conjure Fiery Greatsword", 15792, BoonSource.Elementalist, "duration", 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/e/e2/Conjure_Fiery_Greatsword.png", RemoveType.Manual), + new Boon("Conjure Earth Shield", 15788, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/7/7a/Conjure_Earth_Shield.png", RemoveType.ManualFriend), + new Boon("Conjure Flame Axe", 15789, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/a/a1/Conjure_Flame_Axe.png", RemoveType.ManualFriend), + new Boon("Conjure Frost Bow", 15790, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/c/c3/Conjure_Frost_Bow.png", RemoveType.ManualFriend), + new Boon("Conjure Lightning Hammer", 15791, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/1/1f/Conjure_Lightning_Hammer.png", RemoveType.ManualFriend), + new Boon("Conjure Fiery Greatsword", 15792, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.OffensiveBuffTable, "https://wiki.guildwars2.com/images/e/e2/Conjure_Fiery_Greatsword.png", RemoveType.ManualFriend), //skills - new Boon("Arcane Power",5582, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/7/72/Arcane_Power.png", RemoveType.Manual), - new Boon("Arcane Shield",5640, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Renewal of Fire",5764, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Glyph of Elemental Power (Fire)",5739, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Glyph of Elemental Power (Water)",5741, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Glyph of Elemental Power (Air)",5740, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Glyph of Elemental Power (Earth)",5742, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Rebound",31337, BoonSource.Elementalist, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/0/03/%22Rebound%21%22.png", RemoveType.Manual), - new Boon("Rock Barrier",34633, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual),//750? - new Boon("Magnetic Wave",15794, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Obsidian Flesh",5667, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), + new Boon("Arcane Power",5582, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, "https://wiki.guildwars2.com/images/7/72/Arcane_Power.png", RemoveType.ManualFriend), + new Boon("Arcane Shield",5640, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Renewal of Fire",5764, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Glyph of Elemental Power (Fire)",5739, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Glyph of Elemental Power (Water)",5741, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Glyph of Elemental Power (Air)",5740, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Glyph of Elemental Power (Earth)",5742, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Rebound",31337, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/0/03/%22Rebound%21%22.png", RemoveType.ManualFriend), + new Boon("Rock Barrier",34633, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend),//750? + new Boon("Magnetic Wave",15794, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Obsidian Flesh",5667, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), //traits - new Boon("Harmonious Conduit",31353, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Fresh Air",31353, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Soothing Mist", 5587, BoonSource.Elementalist, "duration", 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/f/f7/Soothing_Mist.png"), - new Boon("Lesser Arcane Shield",25579, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff, RemoveType.Manual), - new Boon("Weaver's Prowess",42061, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff), - new Boon("Elements of Rage",42416, BoonSource.Elementalist, "duration", 1, BoonEnum.GraphOnlyBuff), + new Boon("Harmonious Conduit",31353, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Fresh Air",31353, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Soothing Mist", 5587, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.DefensiveBuffTable, "https://wiki.guildwars2.com/images/f/f7/Soothing_Mist.png"), + new Boon("Lesser Arcane Shield",25579, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff, RemoveType.ManualFriend), + new Boon("Weaver's Prowess",42061, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), + new Boon("Elements of Rage",42416, BoonSource.Elementalist, BoonType.Duration, 1, BoonEnum.GraphOnlyBuff), /// FOODS - new Boon("Plate of Truffle Steak",9769, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/4/4c/Plate_of_Truffle_Steak.png"), - new Boon("Bowl of Sweet and Spicy Butternut Squash Soup",17825, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/d/df/Bowl_of_Sweet_and_Spicy_Butternut_Squash_Soup.png"), - new Boon("Red-Lentil Saobosa",46273, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/a/a8/Red-Lentil_Saobosa.png"), - new Boon("Super Veggie Pizza",10008, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/6/66/Super_Veggie_Pizza.png"), - new Boon("Rare Veggie Pizza",10009, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/a/a0/Rare_Veggie_Pizza.png"), - new Boon("Bowl of Garlic Kale Sautee",-1, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/0/04/Bowl_of_Garlic_Kale_Sautee.png"), - new Boon("Koi Cake",-1, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/1/14/Koi_Cake.png"), - new Boon("Prickly Pear Pie",24800, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/0/0a/Prickly_Pear_Pie.png"), - new Boon("Bowl of Nopalitos Sauté",-1, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/f/f1/Bowl_of_Nopalitos_Saut%C3%A9.png"), - new Boon("Delicious Rice Ball",26529, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/5/5d/Delicious_Rice_Ball.png"), - new Boon("Slice of Allspice Cake",33792, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/1/13/Slice_of_Allspice_Cake.png"), - new Boon("Fried Golden Dumpling",26530, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/1/14/Fried_Golden_Dumpling.png"), - new Boon("Bowl of Seaweed Salad",10080, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/1/1c/Bowl_of_Seaweed_Salad.png"), - new Boon("Bowl of Orrian Truffle and Meat Stew",10096, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/b/b8/Bowl_of_Orrian_Truffle_and_Meat_Stew.png"), - new Boon("Plate of Mussels Gnashblade",-1, BoonSource.Item, "duration", 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/7/7b/Plate_of_Mussels_Gnashblade.png"), + new Boon("Plate of Truffle Steak",9769, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/4/4c/Plate_of_Truffle_Steak.png"), + new Boon("Bowl of Sweet and Spicy Butternut Squash Soup",17825, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/d/df/Bowl_of_Sweet_and_Spicy_Butternut_Squash_Soup.png"), + new Boon("Red-Lentil Saobosa",46273, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/a/a8/Red-Lentil_Saobosa.png"), + new Boon("Super Veggie Pizza",10008, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/6/66/Super_Veggie_Pizza.png"), + new Boon("Rare Veggie Pizza",10009, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/a/a0/Rare_Veggie_Pizza.png"), + new Boon("Bowl of Garlic Kale Sautee",-1, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/0/04/Bowl_of_Garlic_Kale_Sautee.png"), + new Boon("Koi Cake",-1, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/1/14/Koi_Cake.png"), + new Boon("Prickly Pear Pie",24800, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/0/0a/Prickly_Pear_Pie.png"), + new Boon("Bowl of Nopalitos Sauté",-1, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/f/f1/Bowl_of_Nopalitos_Saut%C3%A9.png"), + new Boon("Delicious Rice Ball",26529, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/5/5d/Delicious_Rice_Ball.png"), + new Boon("Slice of Allspice Cake",33792, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/1/13/Slice_of_Allspice_Cake.png"), + new Boon("Fried Golden Dumpling",26530, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/1/14/Fried_Golden_Dumpling.png"), + new Boon("Bowl of Seaweed Salad",10080, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/1/1c/Bowl_of_Seaweed_Salad.png"), + new Boon("Bowl of Orrian Truffle and Meat Stew",10096, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/b/b8/Bowl_of_Orrian_Truffle_and_Meat_Stew.png"), + new Boon("Plate of Mussels Gnashblade",-1, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Food, "https://wiki.guildwars2.com/images/7/7b/Plate_of_Mussels_Gnashblade.png"), /// UTILITIES - new Boon("Superior Sharpening Stone",9963, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/7/78/Superior_Sharpening_Stone.png"), - new Boon("Master Maintenance Oil",-1, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/5b/Master_Maintenance_Oil.png"), - new Boon("Tuning Icicle",34206, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/7/75/Tuning_Icicle.png"), - new Boon("Master Tuning Crystal",9967, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/58/Master_Tuning_Crystal.png"), - new Boon("Toxic Sharpening Stone",-1, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/d/db/Toxic_Sharpening_Stone.png"), - new Boon("Potent Superior Sharpening Stone",-1, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/7/78/Superior_Sharpening_Stone.png"), - new Boon("Toxic Maintenance Oil",21827, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/a/a6/Toxic_Maintenance_Oil.png"), - new Boon("Magnanimous Maintenance Oil",38605, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/53/Magnanimous_Maintenance_Oil.png"), - new Boon("Peppermint Oil",34187, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/b/bc/Peppermint_Oil.png"), - new Boon("Potent Master Maintenance Oil",9968, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/5b/Master_Maintenance_Oil.png"), - new Boon("Furious Maintenance Oil",-1, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/5b/Master_Maintenance_Oil.png"), - new Boon("Furious Sharpening Stone",25882, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/7/78/Superior_Sharpening_Stone.png"), - new Boon("Bountiful Maintenance Oil",25879, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/5b/Master_Maintenance_Oil.png"), - new Boon("Toxic Focusing Crystal",21828, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/d/de/Toxic_Focusing_Crystal.png"), - new Boon("Tin of Fruitcake",34211, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/a/af/Tin_of_Fruitcake.png"), - // new Boon("Hylek Maintenance Oil",9968, BoonSource.Item, "duration", 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/5b/Master_Maintenance_Oil.png"), when wiki says "same stats" its litteraly the same buff + new Boon("Superior Sharpening Stone",9963, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/7/78/Superior_Sharpening_Stone.png"), + new Boon("Master Maintenance Oil",-1, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/5b/Master_Maintenance_Oil.png"), + new Boon("Tuning Icicle",34206, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/7/75/Tuning_Icicle.png"), + new Boon("Master Tuning Crystal",9967, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/58/Master_Tuning_Crystal.png"), + new Boon("Toxic Sharpening Stone",-1, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/d/db/Toxic_Sharpening_Stone.png"), + new Boon("Potent Superior Sharpening Stone",-1, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/7/78/Superior_Sharpening_Stone.png"), + new Boon("Toxic Maintenance Oil",21827, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/a/a6/Toxic_Maintenance_Oil.png"), + new Boon("Magnanimous Maintenance Oil",38605, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/53/Magnanimous_Maintenance_Oil.png"), + new Boon("Peppermint Oil",34187, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/b/bc/Peppermint_Oil.png"), + new Boon("Potent Master Maintenance Oil",9968, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/5b/Master_Maintenance_Oil.png"), + new Boon("Furious Maintenance Oil",-1, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/5b/Master_Maintenance_Oil.png"), + new Boon("Furious Sharpening Stone",25882, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/7/78/Superior_Sharpening_Stone.png"), + new Boon("Bountiful Maintenance Oil",25879, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/5b/Master_Maintenance_Oil.png"), + new Boon("Toxic Focusing Crystal",21828, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/d/de/Toxic_Focusing_Crystal.png"), + new Boon("Tin of Fruitcake",34211, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/a/af/Tin_of_Fruitcake.png"), + // new Boon("Hylek Maintenance Oil",9968, BoonSource.Item, BoonType.Duration, 1, BoonEnum.Utility, "https://wiki.guildwars2.com/images/5/5b/Master_Maintenance_Oil.png"), when wiki says "same stats" its litteraly the same buff }; - public static bool removePermission(int boonid, int buffremove) + public static bool removePermission(int boonid, int buffremove, int iff) { if (buffremove == 0) { @@ -501,10 +502,12 @@ public static bool removePermission(int boonid, int buffremove) { switch (toCheck.remove_type) { - case RemoveType.Cleanse: - return buffremove == 1 || buffremove == 2; - case RemoveType.Manual: - return buffremove == 3; + case RemoveType.CleanseFriend: + return iff != 1 && (buffremove == 1 || buffremove == 2); + case RemoveType.CleanseFoe: + return iff != 0 && (buffremove == 1 || buffremove == 2); + case RemoveType.ManualFriend: + return iff != 1 && (buffremove == 3 || buffremove == 1); case RemoveType.All: return buffremove == 1 || buffremove == 2 || buffremove == 3; default: @@ -619,7 +622,7 @@ public BoonSource getSource() return source; } - public string getType() + public BoonType getType() { return type; } @@ -636,7 +639,7 @@ public string getLink() public BoonSimulator getSimulator() { - if (type == "intensity") + if (type == BoonType.Intensity) { return new BoonSimulatorIntensity(capacity); } else diff --git a/LuckParser/Models/ParseModels/Boss.cs b/LuckParser/Models/ParseModels/Boss.cs index d977a5331..7b5025a33 100644 --- a/LuckParser/Models/ParseModels/Boss.cs +++ b/LuckParser/Models/ParseModels/Boss.cs @@ -7,15 +7,77 @@ namespace LuckParser.Models.ParseModels { public class Boss : Player { + + public struct PhaseData + { + public long start; + public long end; + public PhaseData(long start, long end) + { + this.start = start; + this.end = end; + } + } + // Constructors public Boss(AgentItem agent) : base(agent) { } - + + public List phases = new List(); + + public List getPhases(BossData bossData, List combatList, AgentData agentData) + { + if (phases.Count == 0) + { + setPhases(bossData, combatList, agentData); + } + return phases; + } + + public void forcePhase(List phases) + { + this.phases = phases; + } // Private Methods + private void setPhases(BossData bossData, List combatList, AgentData agentData) + { + long fight_dur = bossData.getLastAware() - bossData.getFirstAware(); + phases.Add(new PhaseData(0, fight_dur)); + string name = getCharacter(); + long start = 0; + long end = 0; + List cls; + switch (name) + { + case "Gorseval the Multifarious": + cls = getCastLogs(bossData, combatList, agentData).Where(x => x.getID() == 31759).ToList(); + foreach (CastLog cl in cls) + { + end = cl.getTime(); + phases.Add(new PhaseData(start, end)); + start = end + cl.getActDur(); + } + break; + case "Sabetha the Saboteur": + cls = getCastLogs(bossData, combatList, agentData).Where(x => x.getID() == 31372).ToList(); + foreach (CastLog cl in cls) + { + + } + break; + default: + return; + } + if (phases.Last().end != fight_dur) + { + phases.Add(new PhaseData(start, fight_dur)); + } + } + protected override void setDamageLogs(BossData bossData, List combatList, AgentData agentData) { long time_start = bossData.getFirstAware(); diff --git a/LuckParser/Models/ParseModels/CombatData.cs b/LuckParser/Models/ParseModels/CombatData.cs index b2241f3d0..2392dea27 100644 --- a/LuckParser/Models/ParseModels/CombatData.cs +++ b/LuckParser/Models/ParseModels/CombatData.cs @@ -23,10 +23,11 @@ public void addItem(CombatItem item) combat_list.Add(item); } - public List getStates(int src_instid, String change) + public List getStates(int src_instid, String change, long start = 0, long end = 0) { List states = new List(); - foreach (CombatItem c in combat_list) + List li = (end - start) > 0 ? combat_list.Where(x => x.getTime() >= 0 && x.getTime() < end).ToList() : combat_list; + foreach (CombatItem c in li) { if (c.getSrcInstid() == src_instid && c.isStateChange().getEnum() == change) { diff --git a/LuckParser/Models/ParseModels/Player.cs b/LuckParser/Models/ParseModels/Player.cs index 54b77021f..b931c291d 100644 --- a/LuckParser/Models/ParseModels/Player.cs +++ b/LuckParser/Models/ParseModels/Player.cs @@ -155,11 +155,11 @@ public Dictionary getBoonPresence(BossData bossData, SkillData skillD public int[] getCleanses(BossData bossData, List combatList, AgentData agentData) { long time_start = bossData.getFirstAware(); int[] cleanse = { 0, 0 }; - foreach (CombatItem c in combatList.Where(x=>x.isStateChange().getID() == 0)) + foreach (CombatItem c in combatList.Where(x=>x.isStateChange().getID() == 0 && x.isBuff() == 1)) { if (c.isActivation().getID() == 0) { - if (instid == c.getSrcInstid() && c.getIFF().getEnum() == "FRIEND" && c.isBuffremove().getID() == 1/*|| instid == c.getSrcMasterInstid()*/)//selecting player as remover could be wrong + if (instid == c.getDstInstid() && c.getIFF().getEnum() == "FRIEND" && (c.isBuffremove().getID() == 1)/*|| instid == c.getSrcMasterInstid()*/)//selecting player as remover could be wrong { long time = c.getTime() - time_start; if (time > 0) @@ -315,13 +315,13 @@ private void EstimateWeapons(SkillData s_data, CombatData c_data, BossData b_dat { if (apiskill.weapon_type == "Greatsword" || apiskill.weapon_type == "Staff" || apiskill.weapon_type == "Rifle" || apiskill.weapon_type == "Longbow" || apiskill.weapon_type == "Shortbow" || apiskill.weapon_type == "Hammer") { - if (swapped == 4) + if (swapped == 4 && (weapons[0] == null && weapons[1] == null)) { weapons[0] = apiskill.weapon_type; weapons[1] = "2Hand"; continue; } - else if (swapped == 5) + else if (swapped == 5 && (weapons[2] == null && weapons[3] == null)) { weapons[2] = apiskill.weapon_type; weapons[3] = "2Hand"; @@ -342,13 +342,13 @@ private void EstimateWeapons(SkillData s_data, CombatData c_data, BossData b_dat }//2 handed if (apiskill.weapon_type == "Focus" || apiskill.weapon_type == "Shield" || apiskill.weapon_type == "Torch" || apiskill.weapon_type == "Warhorn") { - if (swapped == 4) + if (swapped == 4 && (weapons[1] == null)) { weapons[1] = apiskill.weapon_type; continue; } - else if (swapped == 5) + else if (swapped == 5 && (weapons[3] == null)) { weapons[3] = apiskill.weapon_type; @@ -366,17 +366,17 @@ private void EstimateWeapons(SkillData s_data, CombatData c_data, BossData b_dat //} continue; }//OffHand - if (apiskill.weapon_type == "Axe" || apiskill.weapon_type == "Dagger" || apiskill.weapon_type == "Mace" || apiskill.weapon_type == "Pistol" || apiskill.weapon_type == "Sword" || apiskill.weapon_type == "Sceptor") + if (apiskill.weapon_type == "Axe" || apiskill.weapon_type == "Dagger" || apiskill.weapon_type == "Mace" || apiskill.weapon_type == "Pistol" || apiskill.weapon_type == "Sword" || apiskill.weapon_type == "Scepter") { if (apiskill.slot == "Weapon_1" || apiskill.slot == "Weapon_2" || apiskill.slot == "Weapon_3") { - if (swapped == 4) + if (swapped == 4 && (weapons[0] == null)) { weapons[0] = apiskill.weapon_type; continue; } - else if (swapped == 5) + else if (swapped == 5 && (weapons[2] == null)) { weapons[2] = apiskill.weapon_type; @@ -396,13 +396,13 @@ private void EstimateWeapons(SkillData s_data, CombatData c_data, BossData b_dat } if (apiskill.slot == "Weapon_4" || apiskill.slot == "Weapon_5") { - if (swapped == 4) + if (swapped == 4 && (weapons[1] == null)) { weapons[1] = apiskill.weapon_type; continue; } - else if (swapped == 5) + else if (swapped == 5 && (weapons[3] == null)) { weapons[3] = apiskill.weapon_type; @@ -681,15 +681,15 @@ private BoonMap getBoonMap(BossData bossData, SkillData skillData, List= 0 && time <= fight_duration) + ushort dst = c.isBuffremove().getID() == 0 ? c.getDstInstid() : c.getSrcInstid(); + if (instid == dst && time >= 0 && time <= fight_duration) { ushort src = c.getSrcMasterInstid() > 0 ? c.getSrcMasterInstid() : c.getSrcInstid(); if (c.isBuffremove().getID() == 0) { boon_map[c.getSkillID()].Add(new BoonLog(time, src, c.getValue(), 0)); } - else if (Boon.removePermission(c.getSkillID(), c.isBuffremove().getID())) + else if (Boon.removePermission(c.getSkillID(), c.isBuffremove().getID(), c.getIFF().getID())) { if (c.isBuffremove().getID() == 1)//All { diff --git a/LuckParser/Models/ParseModels/SkillData.cs b/LuckParser/Models/ParseModels/SkillData.cs index 57e7e8594..9a9ebea39 100644 --- a/LuckParser/Models/ParseModels/SkillData.cs +++ b/LuckParser/Models/ParseModels/SkillData.cs @@ -9,6 +9,18 @@ public class SkillData { // Fields private List skill_list; + private Dictionary apiMissingID = new Dictionary() + { + {1066, "Resurrect"}, + {1175, "Bandage" }, + {65001, "Dodge" }, + // Gorseval + {31834,"Ghastly Rampage" }, + {31759,"Protective Shadow" }, + {31466,"Ghastly Rampage (Begin)" }, + // Sabetha + {31372, "Shadow Step" } + }; // Constructors public SkillData() @@ -26,14 +38,9 @@ public String getName(int ID) { // Custom - if (ID == 1066 ) { - return "Resurrect"; - } - if ( ID == 1175 ) { - return "Bandage"; - } - if (ID == 65001) { - return "Dodge"; + if (apiMissingID.ContainsKey(ID)) + { + return apiMissingID[ID]; } // Normal