Coded_flags

Serge Camille edited this page Sep 16, 2015 · 4 revisions
Clone this wiki locally

Introduction

One of the sources of confusion in simc for someone who is newer to coding, or even to coding veterans, is that when adding flags to a proc/ability/action, there's not a lot of documentation about what the flag itself does.

This is not (currently) an exhaustive list, but with time we will try and make sure it includes every flag in code.

Eventually someone will organize this. =P

Work in Progress: Unify all this with in-code documentation and creating doxygen docs. See http://simulationcraft.org/doc/structaction__t.html#pub-attribs

Action Flags

These flags determine what an ability does during a simulation.

  • school - enum - default: SCHOOL_NONE - What type of damage this spell does.
   school = SCHOOL_PHYSICAL;
  • resource_current - enum - What resource does this ability use.
   resource_current = RESOURCE_RAGE;
  • aoe - int - The amount of targets that an ability impacts on. -1 will hit all targets.
   aoe = 2; // Ability deals damage to 2 targets.
  • may_multistrike - int - If the ability can proc multistrikes. 0 disables multistrikes, 1 enables, and -1 enables/disables multistrikes based on if the ability can crit or not.
   may_multistrike = 1;
  • dual - bool - If set to true, this action will not be counted toward total amount of executes in reporting. Useful for abilities with parent/children attacks.

  • callbacks - bool - enables/disables proc callback system on the action.

  • special - bool - Whether or not the spell uses the yellow attack hit table.

  • channeled - bool - Tells the sim to not perform any other actions, as the ability is channeled.

  • background - bool - Enables/Disables direct execution of the ability in an action list. Abilities with background = true can still be called upon by other actions, example being deep wounds and how it is activated by devastate.

  • use_off_gcd - bool - Only useful for warrior/tanks at the moment, forces the sim to check conditions every 0.1 seconds to see if these abilities should be performed. Slows simulation down significantly.

  • quiet - bool - Disables/enables reporting of this action.

  • direct_tick, direct_tick_callbacks Not used in WoD (?)

  • periodic_hit - bool -

  • repeating - bool - Used for abilities that repeat themselves without user interaction, only used on autoattacks.

  • harmful - bool - Simplified: Will the ability pull the boss if used. Also determines whether ability can be used precombat without counting towards the 1 harmful spell limit

  • proc - bool - Whether or not this ability is a proc.

  • initialized - bool -

  • may_hit, may_miss, may_dodge, may_parry, may_glance, may_block, may_crush, may_crit, tick_may_crit - bool - Self explanatory.

  • tick_zero - bool - Whether or not the ability/dot ticks immediately on usage.

  • hasted_ticks - bool - Whether or not ticks scale with haste, generally only used for bleeds that do not scale with haste, or with ability drivers that deal damage every x number of seconds.

  • split_aoe_damage - bool - Splits damage evenly on aoe.

  • base_add_multiplier - double - Used with abilities that decay in damage with each target. Example: Revenge, main target takes 100% damage, 2nd target takes 66%, 3rd target 33%.

  • dot_behavior - Behavior of dot. Acceptable inputs are DOT_CLIP, DOT_REFRESH, and DOT_EXTEND.

  • ability_lag, ability_lag_stddev - timespan_t - Not used anymore. (??)

  • rp_gain - double - Deathknight specific, how much runic power is gained.

  • min_gcd - timespan_t - The minimum gcd triggered no matter the haste.

  • trigger_gcd - timespan_t - Length of gcd triggered when used.

  • range - double - Distance that the ability may be used from.

  • attack_power_mod.direct, attack_power_mod.tick - double - Attack power scaling of the ability.

  • spell_power_mod.direct, spell_power_mod.tick - double - Spell power scaling of the ability.

  • base_execute_time - timespan_t - Amount of time the ability uses to execute before modifiers.

  • base_tick_time - timespan_t - Amount of time the ability uses between ticks.

  • dot_duration - timespan_t - Default duration of dot.

  • base_costs - double - Cost of using the ability

   base_costs[RESOURCE_RAGE] = 20; // Uses 20 rage on execute.
  • costs_per_second - double - Cost of using ability per second
   costs_per_second[RESOURCE_RUNIC_POWER] = 10; // Uses 10 runic power per second.
  • weapon_multiplier - double - Weapon damage for the ability.

  • cooldown - Used to manipulate cooldown duration and charges.

   cooldown -> duration = timespan_t::from_seconds( 20 ); //Ability has a cooldown of 20 seconds.
   cooldown -> charges = 3; // Ability has 3 charges.
  • movement_directionality
   movement_directionality = MOVEMENT_OMNI; // Can move in any direction, ex: Heroic Leap, Blink. Generally set movement skills to this.
   movement_directionality = MOVEMENT_TOWARDS; // Can only be used towards enemy target. ex: Charge
   movement_directionality = MOVEMENT_AWAY; // Can only be used away from target. Ex: ????
  • base_teleport_distance - double - Maximum distance that the ability can travel. Used on abilities that instantly move you, or nearly instantly move you to a location.
   base_teleport_distance = 40;