public partial class PRModule : IPlugin // will obviously change { //my delcares bool NeedArcInt; bool NeedArmorSpell; bool NeedDampen; string WhichArmorSpell; string WhichManaGem; bool UseFireWard; bool UseFrostWard; public enum RoutineStates { CombatPrep, //Speaks for itself Pulling, //Speaks for itself Combat //The actual killing } public enum CombatPrepStates //apparently checking health is not needed { CheckingBuffs, //I'm going to have this here anyway because of waltz's current buff implementation Buffing, //May just make this part of the CheckingBuffs. CheckingManaGem, //Speaks for itself PreCombatWards //I'll implement it if I have to. Do any pre-combat fire/frost wards on fire/frost damage dealers } public enum PullingStates { Advancing, //Get close if the mob wandered out of range for some reason. If it did, your pull range is probably too high Casting //the actual pulling } public enum SingleTargetCombat { Nuking, //our good 'ole spec-optimized nukes. PreFlee, //Mana-shield, snares, etc, while running from mobs SwapToDoubleTargetCombat //Escalate to doubletarget combat if a mob aggros, essentially just start the CC } public enum DoubleTargetCombat { Nuking, //Will be same as singletarget nuking, because it's really the same CrowdControl, //Snare mobs if possible, get away, sheep lower priority mob SwapToMultiTargetCobmat, //Switch to multi target combat if needed, not sure how well it'd work mostly because there's a good chance you'll be lowhp with adds. Flee? PreFlee //same as above } public enum MultiTargetCombat { AoENuking, //Fancy blizzarding, blast waving, etc. should really be a frostie for this... EmergencyCrowdControl, //snares and flares to get away if needed, probably be merged with preflee PreFlee //same as above } public enum BuffStates //kinda like sub-substates for buffing. It'll do my own downtime if I need to. { CheckMana, //..... CheckBuffs, //I repeat, ..... CastBuffs //Spec-optimized buffing. } private RoutineStates CombatPrep() { if (!Requiem.Character.IsInCombat && Requiem.Character.ManaPercent <= 75) { ManaUp(); } } private CombatPrepStates CheckingBuffs() { if (!Requiem.Character.Buff("Arcane Intellect")) { NeedArcInt = true; } if (!Requiem.Character.Buff("Ice Armor") && !Requiem.Character.Buff("Frost Armor") && !Requiem.Character.Buff("Molten Armor")) { NeedArmorSpell = true; // //Here would be where we decide what armor I should use //unfortunately Requiem seems to be missing something for "do I have spell X" // } //here's where I'd check for whether or not we need dampen magic //problem is, I don't know how to check if target has a mana bar. //I'll have to eventually learn how to get the wowevents and filter through for "hits you for X fire damage" // and so on } private CombatPrepStates Buffing() { if (NeedArcInt) { Requiem.Character.Cast("Arcane Intellect", Requiem.Character.GUID); } if (NeedArmorSpell) { //Again, this is dependant on being able to decide which armor, which needs an "if spell exists" } if (NeedDampen) { Requiem.Character.Cast("Dampen Magaic", Requiem.Character.GUID); } } private CombatPrepStates CheckingManaGem() { if (WhichManaGem == null) //I'm seriously gonna have to grab the ISXWoW dll and use it { WhichManaGem = x; //this really needs isxwow.dll } } private CombatPrepStates PreCombatWards() { if (UseFireWard) { Requiem.Character.Cast("Fire Ward", Requiem.Character.GUID); } if (UseFrostWard) { Requiem.Character.Cast("Frost Ward", Requiem.Character.GUID); } } private RoutineStates Pulling() { } private RoutineStates Combat() { } private void ManaUp() { if (!Requiem.Inventory.ItemCount(Requiem.Inventory.BestDrink) < 6) { Requiem.Character.Cast("Conjure Water"); return; } Requiem.Inventory.Use(Requiem.Inventory.BestDrink); } // This function is called every frame. public void Pulse() { } // This function is executed when the plugin is loaded. public void OnLoad() { } // This function is executed when the plugin is unloaded. public void OnUnload() { } }