public Talents Clone() { var c = new Talents(); // Affliction c.ImprovedCorruption = ImprovedCorruption; c.ImprovedLifeTap = ImprovedLifeTap; c.ImprovedAgony = ImprovedAgony; c.EmpoweredCorruption = EmpoweredCorruption; c.ShadowMastery = ShadowMastery; // Demonology c.ImprovedImp = ImprovedImp; c.DemonicAegis = DemonicAegis; c.UnholyPower = UnholyPower; c.MasterDemonologist = MasterDemonologist; c.SoulLink = SoulLink; c.DemonicKnowledge = DemonicKnowledge; c.DemonicTactics = DemonicTactics; // Destruction c.ImprovedShadowBolt = ImprovedShadowBolt; c.Bane = Bane; c.ImprovedFirebolt = ImprovedFirebolt; c.Devastation = Devastation; c.ImprovedImmolate = ImprovedImmolate; c.Ruin = Ruin; c.Emberstorm = Emberstorm; c.Backlash = Backlash; c.ShadowAndFlame = ShadowAndFlame; return(c); }
SimResult simulate(Scenario scenario) { //logActions = logEvents = logPet = true; this.scenario = scenario; warlock = scenario.Warlock; talents = warlock.Talents; timeline = new Timeline(); results = new SimResult(scenario.FightDurationSeconds); currentTick = 0; finalTick = scenario.FightDurationSeconds * 100; currentMana = warlock.Mana; playerAbleToAct = true; curseApplied = false; immolateApplied = false; corruptionApplied = false; siphonLifeApplied = false; unstableAfflictionApplied = false; if (warlock.Pet == Pet.Imp) { Schedule(Event.ImpFirebolt, FireboltCastTime()); } if (warlock.Pet == Pet.Felguard) { Schedule(Event.FelguardCleave, 0); Schedule(Event.FelguardMeleeAttack, 200); } while (currentTick < finalTick) { ProcessEvents(); if (playerAbleToAct) { DoAction(); } currentTick++; } results.Tabulate(); return(results); }
void Run() { var s = new Scenario(); s.RaidTemplate(); s.Warlock.UseImmolate = true; s.Warlock.UseCorruption = true; s.Warlock.Curse = Curse.Doom; s.Warlock.Talents = Talents.SM_DS_30_21_10(); s.Warlock.Pet = Pet.Imp; s.Warlock.PreRaid(); s.IsbUptimePercent = 60; s.Validate(); var metaResult = Simulation.MetaSim(s, 4000); metaResult.Summarize(); //var result = Simulation.Simulate(s); //result.Summarize(); //SimStatScaling(s,5000); }