This is a list of all effects that may be used in passives, actives, or as job bonuses
the modes for use as a job bonus are 'maximum' (the specified value is the value at max-level, the increase per level is evenly split over all levels), 'per-level' (total bonus is level times the specified value), 'static' (the specified value is a one-off bonus independent of level)
All effects are summed up for every instance of it in some job, so the same effect multiple times stacks unless specified otherwise

###############
special fields:
  'value' can be a float or int and will be used as applies to the effect
  'chance' as a float between 0.0 and 1.0 defines the percentage chance of the effect being triggered
  'tools' (list of material ids or material group names) specifies the tools with which the effect works if the tool is in hand
  'versus' (same as tools) specifies the tools or blocks onto which the effect works, either as a environmental block (for drop chances for example) or the opponents hand item (for combat-related effects)
  'level-based' (string list) can reference other (numerical) nodes of the effect to only use the percentage of the given value corresponding to currentlevel divided by maxlevel
  'inherited' (boolean, defaults to false) specifies if the effect is inheritable 
  'conditions' (string list, can have: attacking, defending, backstab-offensive, backstab-defensive, highground-offensive, highground-defensive)
  'as-attacker' (boolean, defaults to true) makes the effect available in combat as the attacker
  'as-defender' (boolean, defaults to false) makes the effect available in combat as the defender
  'self' (boolean, defaults vary) makes the effect act on the user
  'target' (boolean, defaults vary) makes the effect act on the target/opponent
###############

'boost'
  can be used for: passive, bonus
  required nodes: name (string), value
  optional nodes: tools, versus
  possible names: crit-chance, crit-multiplier, damage-modifier, evade-chance, evade-efficiency, parry, parry-efficiency, roll-chance, roll-manual-window, roll-damage-reduction, fall-damage-reduction, durability-recovery-chance, double-drop-chance, triple-drop-chance, extradrop-chance-[rarity]
  notes: names can be preceeded by 'anti-' to be inversely applied to the opponent if possible (for example anti-evasion to reduce an opponents chance of evasion), in case of extradrop-chance the rarity can be anything specified in the advanced configuration
  
'set-combat-state'
  can be used for: active, passive, bonus
  optional nodes: self (default true), target (default false), tools, versus, chance, crit (boolean), evaded (boolean), parried (boolean), canceled (boolean)
  
'trigger-active'
  can be used for: passive, bonus
  required nodes: action (string, refers to any active)
  optional nodes: chance, tools, versus

'apply-buff'
  notes: name can be anything specified in passives.yml
  can be used for: active
  required nodes: name (string), duration (int)
  optional nodes: self (boolean, defaults to true), opponent (boolean, defaults to false), tools, versus
  
'attack' # not yet implemented
  can be used for: passive, bonus
  required nodes: chance, min-damage (int)
  optional nodes: as-attacker, as-defender, max-damage (int), tools, versus, tool-damage (boolean, overrides min/max damage with the damage of the currently carried item), trigger (string, can refer to any chance-based effect)

'direct-damage'
  can be used for: passive (has only effect for buffs), active
  required nodes: value (int)
  optional nodes: self (boolean, default false), opponent (boolean, default true), chance, attribute (string, see attributes list above)

'damage-reduction' # not yet implemented
  can be used for: passive, bonus
  optional nodes: efficiency (float), causes (string list), tools, versus, chance

'change-blocks'
  can be used for: active
  required nodes: change-to (string, any material id or name, defaults to AIR / destroy block)
  optional nodes: delay (int), temporary (boolean), duration (int, only for temporary), revert-as (String, only for temporary, can be: lifo, lifo+, instant, random), protect (boolean, only for temporary), drop (boolean, only for change-to == AIR), event (boolean, break event for change-to == AIR, place event otherwise), whitelist (string list, see tools), blacklist (string list, see tools)
  shape nodes: shape (String, one of: line, cross2D, cross3D), length (int), cascade-parts (boolean), cascade-blocks (boolean), part-delay (int), block-delay (int), relative (boolean), direction (String, one of: up,down,forward,back,left,right,east,west,north,south)

'lightning'
  can be used for: active
  optional nodes: offset, damaging (boolean, default false)

'manipulate-item' # not yet implemented
  notes: when used on monsters, the hand location only works for skeletons (bow) and zombie pigmen (gold sword), and the inventory location corresponds to drops for that monster/animal
  can be used for: passive (triggered only), active
  required nodes: action (string, may be: drop, destroy, steal)
  optional nodes: self (boolean, defaults to false), opponent (boolean, defaults to true), chance, location (string list of: quickbar, hand (included in quickbar), inventory, armor), protected-for (integer, seconds in which nobody can pick up the item if action == drop), whitelist (string list, similar to tools in syntax), blacklist (see whitelist, whitelist has priority), all (boolean, defaults to false, acts on all items in the specified location), amount (integer, if specified act on the specified amount, else on the whole stack)

'transmute-item'
  notes: changes (part of) the held item stack to something else, list allows multiple types of items to be set, if hand item is part of the from list, the corresponding from-amount will be used up and transformed into ALL entries of the to/to-amounts list. for different results make another effect entry
  can be used for: active
  required nodes: from (integer list), from-amounts (integer list), to (integer list), to-amounts (integer list)
  optional nodes: consume-all (boolean, uses up all items in from list, not only the one held in hand or one chosen at random), random-result (boolean, creates only one of the results in the to list, not all of them)
  
'impulse'
  optional nodes: x (float), y (float), z (float), relative (boolean), self (boolean, defaults to false), opponent (boolean, defaults to true), use-y-p-f (boolean), yaw (float), pitch (float), force (float), add (boolean, add to current vector)
  
'teleport' # not yet implemented
  optional nodes: x (float), y (float), z (float), relative (boolean), self (boolean, defaults to false), opponent (boolean, defaults to true), max-range (float), max-range-horizontal (float), max-range-vertical (float), max-range-blocks (integer), trace-line (boolean), transparent (string list, see tools, by default only air is transparent, only has effect if trace-line is true), safety (boolean, default true, if false may land inside solid ground)