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()
{
}
}