SimulationCraft
SimulationCraft is a tool to explore combat mechanics in the popular MMO RPG World of Warcraft (tm).
bfa_darkmoon_deck_cb_t< T > Struct Template Reference
Inheritance diagram for bfa_darkmoon_deck_cb_t< T >:
dbc_proc_callback_t action_callback_t noncopyable

Public Member Functions

 bfa_darkmoon_deck_cb_t (const special_effect_t &effect, std::vector< unsigned > cards)
 
void execute (action_t *, action_state_t *state) override
 Base rules for proc execution. More...
 
- Public Member Functions inherited from dbc_proc_callback_t
 dbc_proc_callback_t (const item_t &i, const special_effect_t &e)
 
 dbc_proc_callback_t (const item_t *i, const special_effect_t &e)
 
 dbc_proc_callback_t (player_t *p, const special_effect_t &e)
 
void initialize () override
 Initialize the proc callback. More...
 
cooldown_tget_cooldown (player_t *target)
 
void trigger (action_t *a, action_state_t *state) override
 
virtual player_ttarget (const action_state_t *state) const
 
rng::rng_trng () const
 
- Public Member Functions inherited from action_callback_t
 action_callback_t (player_t *l, bool ap=false, bool asp=false)
 
virtual void reset ()
 
virtual void activate ()
 
virtual void deactivate ()
 

Public Attributes

std::unique_ptr< darkmoon_action_deck_t< T > > deck
 
- Public Attributes inherited from dbc_proc_callback_t
const item_titem
 
const special_effect_teffect
 
cooldown_tcooldown
 
target_specific_cooldown_ttarget_specific_cooldown
 
real_ppm_trppm
 
double proc_chance
 
double ppm
 
buff_tproc_buff
 
action_tproc_action
 
weapon_tweapon
 
bool expire_on_max_stack
 Expires proc_buff on max stack, automatically set if proc_buff max_stack > 1.
 
trigger_fn_type trigger_type
 Trigger condition override type.
 
const trigger_fn_t * trigger_fn
 Override proc trigger condition with a separate callback function.
 
execute_fn_t * execute_fn
 Override execution behavior with a separate callback function.
 
bool can_only_proc_from_class_abilites
 
bool can_proc_from_procs
 
- Public Attributes inherited from action_callback_t
player_tlistener
 
bool active
 
bool allow_self_procs
 
bool allow_procs
 

Additional Inherited Members

- Public Types inherited from dbc_proc_callback_t
enum  trigger_fn_type { trigger_fn_type::NONE, trigger_fn_type::CONDITION, trigger_fn_type::TRIGGER }
 
using execute_fn_t = std::function< void(const dbc_proc_callback_t *, action_t *, action_state_t *)>
 
using trigger_fn_t = std::function< bool(const dbc_proc_callback_t *, action_t *, action_state_t *)>
 
- Static Public Member Functions inherited from action_callback_t
static void trigger (const std::vector< action_callback_t *> &v, action_t *a, action_state_t *state)
 
static void reset (const std::vector< action_callback_t *> &v)
 
- Static Public Attributes inherited from dbc_proc_callback_t
static const item_t default_item_ = item_t()
 

Member Function Documentation

◆ execute()

template<typename T >
void bfa_darkmoon_deck_cb_t< T >::execute ( action_t action,
action_state_t state 
)
inlineoverridevirtual

Base rules for proc execution.

1) If we proc a buff, trigger it 2a) If the buff triggered and is at max stack, and we have an action, execute the action on the target of the action that triggered this proc. 2b) If we have no buff, trigger the action on the target of the action that triggered this proc.

TODO: Ticking buffs, though that'd be better served by fusing tick_buff_t into buff_t. TODO: Proc delay TODO: Buff cooldown hackery for expressions. Is this really needed or can we do it in a smarter way (better expression support?)

Reimplemented from dbc_proc_callback_t.