Clone this wiki locally
This documentation is a part of the TCI reference.
Is there an error? Something missing? Funky grammar? Do not hesitate to leave a comment.
- death_knight, druid, mage, paladin, priest, shaman, hunter, rogue, warlock, warrior (scope:new character; default: "") can be used to manually create a new character of the corresponding class.
copy (scope: new character; default: "") can be used to copy a character to another one. The syntax is either
<new_char_name>[,<source_char_name>]. If you omit the source character, Simulationcraft will use the current character.
# This creates a copy of John, named John_evil_twin armory=us,illidan,john copy=john_evil_twin # This creates a copy of John, named John_evil_twin2 copy=john_evil_twin2,john
armory (scope: new character; default: "") can be used to import a character from the armory. The syntax is
<region>,<server>,<player1>[,<player2>,<player3>,...]. Inactive talent specs are imported with the spec=inactive option.
# This will import John armory=us,illidan,john # Same here but we're importing the inactive talents spec. armory=us,illidan,john,spec=inactive # This will import Bill and Roger armory=eu,archimonde,bill,roger # Once the character has been imported, we can override some of his settings. For example, we can change his name and the total amount of strength on his gear now. gear_strength=20000 name=john2
guild (scope: new characters; default: "") can be used to import many players of the same guild at once. The syntax is
<guild_name>[,options_list]. The available options are:
- region is the guild's region (eu, us, cn, tw, kr). If you omit this option, the application will rely on default_region (but it must have been set before).
- server is the guild's server name. If you omit this option, the application will rely on default_server (but it must have been set before).
- class can be used to force the application to only import players of this class. Acceptable values are "death_knight", "druid", etc.
- max_rank can be used to specify a rank limit for players: only players whose rank is strictly greater than this limit will be imported.
- ranks can be used to specify a list of ranks to import. The ranks must be separated by a "/".
- cache can be set to non-zero to allow the application to check the cache for any recently downloaded copy of the armory pages. See also http_clear_cache.
# Call with explicit region and server guild=willyoumaryme,region=us,server=illidan # Use " " if your guild name has spaces guild="will you mary me",region=us,server=illidan # Call with default region and server default_region=us default_server=illidan guild=willyoumaryme # Only import death knights with ranks 1, 3 or 4 guild=willyoumaryme,ranks=1/3/4,class=death_knight
- default_region (scope: global; default: "us") is the default region to use for armory importation when the guild and player commands are used without explicitly specifying the region to use. This setting has to be set before you use the guild or player commands.
- default_server (scope: global; default: "") is the default server to use for armory importation when the guild and player commands are used without explicitly specifying the server to use. This setting has to be set before you use the guild or player commands.
default_server=eitrigg default_region=eu guild=willyoumaryme
From local JSON file
- If you have your armory profile as a JSON file, you can directly import from it instead of connecting to the armory servers.
local_json (scope: new character; default: "") can be used to import a character from the armory. The syntax is
<file>,<charactername>. Inactive talent specs are imported with the spec=inactive option.
- local_json (scope: new character; default: "") can be used to import a character from the armory. The syntax is
# This will import John from the file john.json armory=john.json,john # Same here but we're importing the inactive talents spec. armory=john.json,john,spec=inactive
Importation: other sources
wowhead (scope: new character; default: "") allows you to import a character from wowhead. The syntax is either
wowhead=<region>,<server>,<playername1>[,<playername2>,...]. If the player id or the player name are prefixed with an exclamation mark, the application will import the inactive talents spec.
# This will import the character with ID 12359 wowhead=12359 # Same here but we're importing the inactive talents spec. wowhead=!12359 # This will import John wowhead=us,illidan,john # Once the character has been imported, we can override some of his settings. For example, we can change his level and give him a new trinket now. level=85 trinket2=darkmoon_card_hurricane,ilevel=359,quality=epic,stats=321str,equip=onattackhit_5000nature_1ppm
Importation: alternative method
player (scope: new characters; default: "") allows you to specify the name of a character to import, either from wowhead or the armory. Here are the available options:
- wowhead (default: "") allows you to specify the wowhead's id of the character to import. When empty, the character will be imported from the armory.
- region (default: the current value of default_region) allows you to specify the character's region to import a player from the armory. Wowhead importation is not affected.
- server (default: the current value the default_server) allows you to specify the character's server to import a player from the armory. Wowhead importation is not affected.
- talents (default: "active") allows you to specify, when importing a character from wowhead, whether to use the active talents spec (must be "active") or the inactive one (muse be different from "active"). Armory importation is not affected: we will always import the active spec.
- cache (default: 0), when different from zero, will force the application to first check the cache for any recently downloaded version of the page. Applies to both armory and wowhead importation. See also http_clear_cache.
# Those lines will import characters from wowhead player=john,wowhead=1745 player=bill,wowhead=4596,talents=inactive # This will import a character from the armory player=roger,region=us,server=illidan
By default, Simulationcraft will import a fresh copy of your character profile on every simulation run incurring delay due to network latency. This behavior is controllable, see Cache Control.
pet (scope: new character) allows you to create a pet that owned by the current character. The pet will then become the new current character, see active to switch back to the owner. The syntax is either:
pet=<type>. When the second syntax is used, the name will be the same as the type. Note that you do not have to specify talents for pets: if you don't, they will be automatically set with the relevant default template.
# Import John the warlock and give him a felguard armory=us,illidan,john pet=felguard # Import Bill the hunter and give him two pets with their talents. armory=us,illidan,bill pet=cat,cat talents=200000030300003010122000000000000000000000000000000000000000000 # Cat is now the current character, we have to switch back to Bill first before we can declare his devlisaur. active=owner pet=devilsaur,devilsaur talents=200000030300003010122000000000000000000000000000000000000000000
Here is the list of supported types:
- Death knight: army_of_the_dead_ghoul_8, bloodworms, dancing_rune_weapon, gargoyle, ghoul
- Druid: treants
- Mage: mirror_image_3, water_elemental
- Hunters: the list is too long, just use underscores instead of spaces. in doubt, search for the create_pet function's definition in the sc_hunter.cpp file
- Paladin: guardian_of_ancient_kings_ret
- Priest: shadow_fiend
- Shaman: spirit_wolf, fire_elemental
- Warlock: felguard, felhunter, imp, succubus, voidwalker, infernal, doomguard, ebon_imp
Changing the current character
- active (scope: global; default: last created or imported character or pet) allows you to change the current character. You can specify "owner" if the current character is a pet, a player's name, or "none" or "0" for selecting none. The current character is the character who is going to be affected by the next character-related settings. It does not affect the simulation, only the definition of the parameters of the simulation.
# Let's import John, a warlock and give him a felguard armory=us,illidan,john pet=felguard # At this point, the felguard is now the current character. If we use the "name" setting, it will change the pet's name, not John's name. So we have to make John the active character again before we can rename John into JohnJohn. active=owner name=JohnJohn # Let's import Bill and make John the active character again armory=us,illidan,john active=john
- race (scope: current character; default: "") is the player's race. It may be one of the following: none, beast, blood_elf, draenei, dragonkin, dwarf, giant, gnome, goblin, human, humanoid, night_elf, orc, tauren, troll, undead, worgen.
- level (scope: global; default: 85) is the player's level.
# Import a character and change his race armory=us,illidan,john level=85 race=orc
- glyphs (scope: current character; default: "") is a sequence of glyphs, separated by "/". The values are the glyph's name, minus "glyph of", where white spaces are replaced by underscores. In doubt, you can search for the "init_glyphs" function in your class source code (sc_warlock.cpp, etc). You can write glyphs in any order, regardless of their slots, and add as many glyphs as you want.
- talents (scope: current character; default: "") is the talents descriptor. It accepts two possible inputs: an armory talent calculator URLs or a numeric sequence. When importing your character from the armory, simc will automatically use the armory url format.
# A character imported from the armory may have a talent string like this: talents=http://us.battle.net/wow/en/tool/talent-calculator#bZ!0021011
If you want to specify talents individually (as in a custom .simc file), you can do so using a numeric sequence like
x represents the talent column selection for a given tier (the first digit is the level 15 talent, the second is level 30, and so on). A
1 would indicate the talent in the first column is selected,
2 would indicate the second column, and
3 would indicate the third column. If you want to leave that talent row empty (as in, no talent has been selected), use a
# We can define talents manually like this talents=3201231
- professions (scope: current character; default: "") is the case-insensitive sequence of primary professions your character have. The professions are separated by a "/" and you can add as many of them as you want. Valid keywords are: alchemy, blacksmithing, enchanting, engineering, herbalism, inscription, jewelcrafting, leatherworking, mining, skinning, tailoring.
- target (scope: current character; default: "") is the name of the player's target for attacks when the action list doesn't specify otherwise. Note that this is not true multi-target support -- there's no way to switch targets mid-fight, even when the original target dies! Leave blank for the fight's main target. Pets inherit their owner's target by default.
# Great news everyone! The duels are flowing again! alice.simc target=bob bob.simc target=alice
- name (scope: current character; default: "") is the character name to be displayed in reports and logs.
- origin (scope: current character; default: "") is a special comment for the profile's origin. It has no use, it is just a comment. However, it will be mentioned in the reports and, if you specified an url, it will be presented as a link in html reports.
- thumbnail (scope: current character; default: none) is the URL for an image to display for this character in reports.
- distance (scope: current character; default: 0) is the character's distance, in yard, from the boss. When left to zero, Simulationcraft will dynamically assign it depending on your class: 3 (enh shaman), 30 (druid, elem shaman), 40 (mage, priest, warlock). Zero for others. Pets will be at the same distance with a few exceptions (shaman's fire elemental will move to melee). This setting will be used for computing spells flight time and for distance conditions on raid events (see raid_event).
# Let's put the players 20 yards away from the target. distance=20
- position (scope: current character; default: back/ranged_back, tanks are front) is the character's position in relation to the boss. When not defined, players will automatically be assigned back, hunters ranged_back, and tanks front. Being in front of the target causes the mob to be able to block and parry your attacks.
# Available options: front, back, ranged_front, ranged_back # Simulate MajorDomo Scorpion Form position=front
comment (scope: current character; default: "") will be used when you export profiles. This setting's value will be displayed as a comment (using
#) at the beginning of the exported profiles. It has no other uses (not displayed in reports, etc).
comment=Generated by importmytoon.simc
- use_pre_potion (scope: churrent character; default: 1), when different from zero, will allow the player to use a potion just before he enters combat, so that he can use another one later during the fight. In order to effectively use the potion before the combat, the actions list must contain a compatible action (no restriction such as being in combat, or target's health percentage lesser than 100%, etc). This should be the case for all default actions lists for all classes and specs.
armory=us,illidan,john use_pre_potion=1 # This is a part of the default warrior's actions list: use a potion either before combat, or during the bloodlust. <beginning of the list> actions+=/golemblood_potion,if=!in_combat|buff.bloodlust.react <end of the list>
- id (scope: current character; default: "") can be used to specify the GUID to display in combat logs (see combat_log). When left empty, the application will generate a player GUID based on the characters declaration order.
# Give another GUID to John armory=us,illidan,john id=0x00000000012729FD
- tmi_window (scope: current character; default: 6.0) specifies the time window of the moving average used when calculating TMI. Shorter values will tend to exaggerate scores and make the metric more sensitive to shorter spikes. Can be any nonzero floating point, though it will be rounded based on bin size (currently fixed at 1 second). Only relevant to tanks.
# Change John-the-tank's TMI window to 4 seconds armory=us,illidan,john tmi_window=4
- tmi_output (scope: current character; default: "") can be used to specify a filename for the TMI calculation debugging output. This shows the damage, healing, and health change timelines from the last iteration as well as the other arrays used to calculate TMI. Only relevant to tanks.
# Dump TMI debug output to tmi_debug_file.csv armory=us,illidan,john tmi_output=tmi_debug_file.csv
timeofday (scope: current character; default: "nighttime") can be used to specify the InGame Time of Day, relevant for the WoD Night Elf racial. Available options are:
- night / nighttime
- day / daytime
# Set timeofday to 'daytime' timeofday=daytime
- sleeping (scope: current character; default: 0), when different from zero, will make the character inactive: he won't do anything. The purpose of this setting if to allow you to quickly remove a character from the simulation without removing everything about him in your .simc files.
- quiet (scope: current character; default: 0), when different from zero, will remove data about this character from the reports. The player will still take part into the simulation though, and he will perform his actions as usual.
# Let's say John is a shadowpriest and we want to study the effect of dark intent on him. armory=us,illidan,john # Now let's say Bill is a warlock and let's make him cast dark intent on John armory=us,illidan,bill quiet=1 actions=/dark_intent,target=john # Insert the rest of actions here
- skill (scope: character; default: the value of default_skill when the character was created) allows you to specify the player's skill. A 1.0 skill means a perfect player who never do any mistake. A 0.8 skill means a player who have a 20% chance anytime he should perform an action to think it's not actually ready and skip to the next action in list, or even the one after (20% chance on every level).
# John is such a bad player... armory=us,illidan,john skill=0.6
- default_skill (scope: ulterior characters; default: 1.0) is the default skill for ulterior characters.
# John will have the default skill (1.0) armory=us,illidan,john # Bill and Roger will have a 0.8 skill default_skill=0.8 armory=us,illidan,bill armory=us,illidan,roger
The character's role will affect different settings. Here are some examples, the list may not be exhaustive and, when using edge cases, we encourage you to carefully read the report in order to check it matches your expectations.:
- The default actions list will be changed: if you import a healer and set a dps role, Simulationcraft will make the default actions list damages-oriented.
- A tank player will be placed in front of the boss, rather than behind. He will also suffer damages from the target (100k - 120k on every 3s), that will result in rage for druids and warriors.
A healer player will report healing-related statistics, such as hps (although it will still be labeled "dps").
- role (scope: current character; default: "unknown") allows you to specify the character's role. Accepted values are "dps", "heal" and "tank". Other values will force Simulationcraft to pick a role based on your spec. Note that the actual character's role will depend on your spec: Simulationcraft does not know how to force every spec in every role and, as a result, may ignore the role you specified and pick one more appropriate for the character's spec.
- bugs (scope: current character; default: 1), when different from 0, forces the application to reproduce the bugs observed on the live servers and related to the character's class.
# Let's say that some major bug will be fixed soon(tm) by Blizzard, so we want to see what will be our performances after that. armory=us,illidan,john bugs=0
There are two types of scheduling a ready event for a player:
Poll based (default): The action priority list is checked every 100ms until a action is ready.
Event based: When no action is ready, the player isn't scheduled for another round of cycling through the action list. Instead he waits until a specific "trigger-event" brings the player back to life, at which point the action list is checked again.
Those events may be: Cooldown expiration, dot ticking "near" expiration, buff triggering, unique item triggering, etc.
To activate the event based system, use
ready_trigger (scope: current character; default: false )
Modifying the total stats
challenge_mode (scope: global; default: false) activates down scaling of the gear for challenge mode dungeons in Warlords of Draenor. Based on the difference in "power" of the current and the target item level (620) primary/secondary stats and weapon damage are scaled down. Scaling results in WoD should match perfectly in-game, but if you see a difference we would appreciate if you submit an issue providing details on it.
Disable Set Bonuses
- disable_set_bonuses (scope: global; default: false ) will deactivate all set bonuses in the simulation.
- Added in 610-02 Release - The following options will accept a tier number, and will either enable/disable all of that tiers set bonus.
- enable_2_set (scope: global; default: 0 )
- enable_4_set (scope: global; default: 0 )
- disable_2_set (scope: global; default: 0 )
- disable_4_set (scope: global; default: 0 )
Example: disable_2_set=17 enable_2_set=18 # This will enable all T18 2PC bonuses in the simulation, while also disabling all T17 2P bonuses.
Overriding the gear contribution
- gear_strength (scope: global; default: total gear contribution) is the total contribution of your gear to strength, including the gear itself along with its gems, enchants, reforging, etc. Note that gear_strength=0 cannot be used to disable strength contribution from gear. For now, you will have to use 1 to simulate almost the same effect.
# With this line, your character will have almost as much strength as a naked character would have. Other stats, strength-based procs, weapon damages and speed, etc, will remain unchanged. gear_strength=1
The available keywords are:
- Resources: gear_health, gear_mana, gear_rage, gear_energy, gear_focus, gear_runic
- Primary: gear_strength, gear_agility, gear_intellect, gear_stamina, gear_spirit
- Secondary: gear_mastery_rating, gear_haste_rating, gear_multistrike_rating, gear_versatility_rating, gear_crit_rating, gear_spell_power, gear_attack_power, gear_mp5
- Defensive: gear_armor
Bonuses and maluses
- enchant_strength (scope: current character; default: 0) is the bonus (or malus when negative) added to the current character's strength. See it as a fake enchant.
- default_enchant_strength (scope: global; default: 0) is the bonus (or malus when negative) added to all characters' strength. See it as a fake enchant. It won't apply to pets.
# Let's import John and Bill. John will be the new current character armory=us,illidan,bill armory=us,illidan,john # Let's subtract 150 strength to John enchant_strength=-150 # Let's now add 500 strength to John and Bill. John now has a total bonus of 350 strength. default_enchant_strength=350
- party (scope: global) can be used to group players in parties. Parties will be used for any effect that is restricted to party members rather than raid-wide. Each occurrence of the party option will create a new party containing the named players and their pets. Characters that do not appear in any party option are all grouped together in a default party that is not limited in size.
# John will be in the default party 0 armory=us,illidan,john # Bill and Roger will be in party 1 armory=us,illidan,bill armory=us,illidan,roger party=bill,roger # Lucy will be in party 2 armory=us,illidan,lucy party=lucy