SimulationCraft
Overview
simc hosts a wiki on their github repo available [here](https://github.com/simulationcraft/simc/wiki/)
Guide to using the simc command-line client
// Program control opt_int( “iterations”, iterations ), opt_func( " - Pastebin.com
SpellQuery
All “clickable” class spells of type apply_aura
simc spell_query="class_spell.effect.type=6"
Identifiers
The expressions for spell query follow the normal simc expression input, however the spell query must be told where to get the initial list of identifiers.
- spell - The master spell list, containing all spell data in simc
- talent - The master talent list, containing all talent data (NOTE: not spells)
- talent_spell - All spell ids used by the master talent list for talent ranks
- class_spell - All spells belonging to a class and “clickable”, this includes pets
- race_spell - All racial spells
- mastery - All class masteries
- spec_spell - All specialization spells, passive or active
- glyph - All glyph spells
- set_bonus - All set bonus spells
- effect - All effects
- perk_spell - All perk spells (NOTE: WoD only)
- artifact - All artifact spells (Added in version 703-1, Removed in 8.0)
- azerite - All azerite power spells (Added in version 8.0)
- covenant_spell - All Covenant abilities (Added in version 9.0.1, release 1)
- soulbind_spell - All Soulbind abilities (Added in version 9.0.1, release 1)
- conduit_spell - All Soulbind conduit abilities (Added in version 9.0.1, release 1)
Data Source
A data source can be filtered by giving it a data field name, by suffixing the data source name with a period and the filtering data field name. Currently the system does not support deeper “paths” than 2, i.e. “spell.name” is the deepest it will go. The expression is then given an operand, e.g. == !=, <, > and so on, after which a string, numeric type or another spell identifier list (if the operands &, | or - are used).
- name, spell/talent, STRING
- id, spell/talent, NUMBER
- flags, spell/talent, NUMBER (not used for anything currently)
- speed, spell, NUMBER (projectile speed)
- school, spell, STRING (spell school name)
- class, spell/talent, STRING (class name)
- pet_class, talent, STRING (pet talent tree name)
- scaling, spell, NUMBER (spell scaling type, -1 for “generic scaling”, 0 for no scaling, otherwise class number)
- extra_coeff, spell, NUMBER (spell-wide coefficient, usually used for spells scaling with both SP and AP)
- level, spell, NUMBER (spell learned level)
- max_level, spell, NUMBER (spell “maximum” level in a scaling sense)
- min_range, spell, NUMBER (minimum range in yards)
- max_range, spell, NUMBER (maximum range in yards)
- cooldown, spell, NUMBER (spell cooldown, in milliseconds)
- gcd, spell, NUMBER (spell gcd duration, in milliseconds)
- category_cooldown, spell, NUMBER (shared cooldown duration, in milliseconds, New in version 710-03)
- charges, spell, NUMBER (number of charges for the spell)
- charge_cooldown, spell, NUMBER (charge cooldown in milliseconds)
- category, spell, NUMBER (spell cooldown category)
- duration, spell, NUMBER (spell duration in milliseconds)
- rune, spell, STRING, (b = blood, f = frost, u = unholy, will match minimum rune requirement, Removed in version 701-1)
- power_gain, spell, NUMBER (amount of runic power gained, Removed in version 701-1)
- max_stack, spell, NUMBER (maximum stack of spell)
- proc_chance, spell, NUMBER (spell proc chance in percent (0..100))
- icd, spell, NUMBER (internal cooldown of a spell in milliseconds)
- initial_stack, spell, NUMBER (initial amount of stacks)
- cast_min, spell, NUMBER (minimum cast time in milliseconds)
- cast_max, spell, NUMBER (maximum cast time in milliseconds)
- cast_div, spell, NUMBER (scaling divisor for cast time, always 20)
- m_scaling, spell, NUMBER (unknown scaling multiplier)
- flag, spell, NUMBER (spell family flag bit index, 0 indexed, Added in version 801-1)
- scaling_level, spell, NUMBER (level threshold for m_scaling)
- desc, spell, STRING (spell description)
- tooltip, spell, STRING (spell tooltip)
- stance_mask, spell, NUMBER (stance mask of the spell, Added in version 701-1)
- tab, talent, NUMBER (talent tab number, 0..2)
- dependence, talent, NUMBER (talent id this talent depends on)
- depend_rank, talent, NUMBER (talent rank of talent id this talent depends on)
- col, talent, NUMBER (talent column 0..3)
- row, talent, NUMBER (talent “tier” 0..6)
- power_id, spell/azerite, NUMBER (azerite armor trait id, Added in version 8.0)
- essence_id, spell, NUMBER (heart of azeroth essence id, Added in version 8.2)
- covenant, spell, STRING (covenant name in lowercase, Added in version 9.0.1 release 1)
- conduit_id, spell, NUMBER (conduit identifier, Added in version 9.0.1 release 1)
Examples
a) All activatable class spells of shaman
$ simc spell\_query=class\_spell.class=shaman
b) All cataclysm activatable spells
$ simc spell\_query="class\_spell.level>80"
c) All activatable class spells of shaman and priest
$ simc spell\_query="class\_spell.class=shaman|class\_spell.class=priest"
c) All mastery spells
$ simc spell\_query=mastery
d) All class (and pet) spells costing resources
$ simc spell\_query="class\_spell.cost>0"
e) All spells that contain “shadow damage” in their description or tooltip
$ simc spell\_query="spell.descshadow\_damage|spell.tooltipshadow\_damage"
f) All death knight spells that use at minimum a blood and an unholy rune
$ simc spell\_query="spell.class=death\_knight&spell.rune=bu"
g) All spells using the constant scaling
$ simc spell\_query=spell.scaling=-1
h) All spells that are fire or frost based (including derivations)
$ simc spell\_query="spell.school=fire|spell.school=frost"
Note that depending on your shell interpreter, you may need to escape some special characters used in the spell queries.