Code:
# Executed before combat begins. Accepts non-harmful actions only.
actions.precombat=flask,type=warm_sun
actions.precombat+=/food,type=mogu_fish_stew
actions.precombat+=/dark_intent,if=!aura.spell_power_multiplier.up
actions.precombat+=/summon_pet,if=!talent.grimoire_of_sacrifice.enabled|buff.grimoire_of_sacrifice.down
actions.precombat+=/snapshot_stats
actions.precombat+=/grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled
actions.precombat+=/service_pet,if=talent.grimoire_of_service.enabled
actions.precombat+=/jade_serpent_potion
# Executed every time the actor is available.
actions=curse_of_the_elements,if=debuff.magic_vulnerability.down
actions+=/jade_serpent_potion,if=buff.bloodlust.react|target.health.pct<=20
actions+=/dark_soul,if=time<5|!buff.dark_soul.up&(trinket.proc.intellect.react|(cooldown_react&target.time_to_die<30))
actions+=/service_pet,if=talent.grimoire_of_service.enabled
actions+=/run_action_list,name=aoe,if=active_enemies>3
actions+=/summon_doomguard
actions+=/rain_of_fire,if=!ticking&!in_flight&active_enemies>1
actions+=/havoc,target=2,if=active_enemies>1
actions+=/shadowburn,if=ember_react&(burning_ember>3.5|mana.pct<=20|buff.dark_soul.up|target.time_to_die<20|buff.havoc.stack>=1|(trinket.has_proc.intellect&trinket.proc.intellect.react))
actions+=/immolate,cycle_targets=1,if=buff.dark_soul.react&dot.immolate.crit_pct<(stat.crit+30)&ticks_remain<add_ticks%2&miss_react
actions+=/immolate,cycle_targets=1,if=stat.spell_power>spell_power&ticks_remain<add_ticks%2&miss_react&dot.immolate.crit_pct<(stat.crit+30)
actions+=/immolate,cycle_targets=1,if=ticks_remain<cast_time&target.time_to_die>=5&miss_react
actions+=/conflagrate,if=charges=2&buff.havoc.stack=0
actions+=/rain_of_fire,if=!ticking&!in_flight,moving=1
actions+=/chaos_bolt,if=ember_react&target.health.pct>20&(buff.backdraft.stack<3|level<86|(active_enemies>1&action.incinerate.cast_time<1))&(burning_ember>(4.5-active_enemies)|buff.dark_soul.remains>cast_time|buff.skull_banner.remains>cast_time|(trinket.proc.intellect.react&trinket.proc.intellect.remains>cast_time))
actions+=/chaos_bolt,if=ember_react&target.health.pct>20&(buff.havoc.stack=3&buff.havoc.remains>cast_time)
actions+=/conflagrate
actions+=/incinerate
actions.aoe=summon_infernal
actions.aoe+=/rain_of_fire,if=!ticking&!in_flight
actions.aoe+=/havoc,target=2,if=burning_ember>=3.5&ember_react&target.health.pct<=20
actions.aoe+=/shadowburn,if=burning_ember>=3.5&ember_react&buff.havoc.stack>=1
actions.aoe+=/fire_and_brimstone,if=ember_react&buff.fire_and_brimstone.down
actions.aoe+=/immolate,if=buff.fire_and_brimstone.up&!ticking
actions.aoe+=/conflagrate,if=buff.fire_and_brimstone.up
actions.aoe+=/incinerate,if=buff.fire_and_brimstone.up
actions.aoe+=/immolate,cycle_targets=1,if=!ticking
Note that it's not 100% set up for including any movement sims.