You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

42 lines
920 B

  1. module.exports = {
  2. events: {
  3. onGetText: function (item) {
  4. let rolls = item.effects.find(e => (e.type === 'healOnCrit')).rolls;
  5. let chance = rolls.chance || 100;
  6. let amount = rolls.amount;
  7. let percentage = rolls.percentage;
  8. let text = '';
  9. if (chance < 100)
  10. text = `${chance}% chance to heal on crit for `;
  11. else
  12. text = 'critical hits heal you for ';
  13. if (percentage)
  14. text += `${percentage}% of damage dealt`;
  15. else
  16. text += `${amount || '?'} health`;
  17. return text;
  18. },
  19. afterDealDamage: function (item, { damage, target }) {
  20. if (!damage.crit)
  21. return;
  22. let rolls = item.effects.find(e => (e.type === 'healOnCrit')).rolls;
  23. let chanceRoll = Math.random() * 100;
  24. if (chanceRoll >= (rolls.chance || 100))
  25. return;
  26. let amount = rolls.amount || ((damage.dealt / 100) * rolls.percentage);
  27. this.stats.getHp({
  28. amount: amount
  29. }, this);
  30. }
  31. }
  32. };