public enum RoutineStates { CombatPrep, //Speaks for itself Pulling, //Speaks for itself SingleTargetCombat, //Blow shit up DoubleTargetCombat, //CC one, kill other, then downgrade to single target. Optimized for mana efficiency due to extra mob. MultiTargetCombat //AoEgrinding } 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 CheckingPullMobCount, //Make sure I'm not getting into something I can't handle, jump to doublemob combat if just pulling two mobs anwyay, go straight to mutli if aoegrinding Casting //the actual pulling } public enum SingleTargetCombat { Nuking, //our good 'ole spec-optimized nukes. PreFlee, //Pop a mana shield, turn away from the mob, gtfo of town 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? Fleeing //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 Fleeing //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. }