Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. -----------------------------------
  2. -- Ability: Fire Shot
  3. -- Consumes a Fire Card to enhance fire-based debuffs. Deals fire-based magic damage
  4. -- Burn effect: Enhanced DoT and INT-
  5. -----------------------------------
  6.  
  7. require("scripts/globals/settings");
  8. require("scripts/globals/status");
  9. require("scripts/globals/magic");
  10.  
  11. -----------------------------------
  12. -- onAbilityCheck
  13. -----------------------------------
  14.  
  15. function onAbilityCheck(player,target,ability)
  16. --ranged weapon/ammo: You do not have an appropriate ranged weapon equipped.
  17. --no card: <name> cannot perform that action.
  18. if (player:getWeaponSkillType(SLOT_RANGED) ~= SKILL_MRK or player:getWeaponSkillType(SLOT_AMMO) ~= SKILL_MRK) then
  19. return 216,0;
  20. end
  21. if (player:hasItem(2176, 0) or player:hasItem(2974, 0)) then
  22. return 0,0;
  23. else
  24. return 71, 0;
  25. end
  26. end;
  27.  
  28. -----------------------------------
  29. -- onUseAbility
  30. -----------------------------------
  31.  
  32. function onUseAbility(player,target,ability)
  33. local params = {};
  34. params.includemab = true;
  35. local dmg = 2 * player:getRangedDmg() + player:getAmmoDmg() + player:getMod(MOD_QUICK_DRAW_DMG);
  36. dmg = addBonusesAbility(player, ELE_FIRE, target, dmg, params);
  37. dmg = dmg * applyResistanceAbility(player,target,ELE_FIRE,SKILL_MRK, (player:getStat(MOD_AGI)/2) + player:getMerit(MERIT_QUICK_DRAW_ACCURACY));
  38. dmg = adjustForTarget(target,dmg,ELE_FIRE);
  39.  
  40. dmg = utils.stoneskin(target, dmg);
  41.  
  42. target:delHP(dmg);
  43. target:updateEnmityFromDamage(player,dmg);
  44.  
  45. player:addStatusEffect(EFFECT_FIRE_SHOT,10,0,35)
  46. player:addStatusEffect(EFFECT_STR_BOOST,5,0,35);
  47. player:addStatusEffect(EFFECT_BLAZE_SPIKES,15,0,60);
  48. target:addStatusEffect(EFFECT_ADDLE,25,0,60);
  49.  
  50. local effects = {};
  51. local counter = 1;
  52. local burn = target:getStatusEffect(EFFECT_BURN);
  53. if (burn ~= nil) then
  54. effects[counter] = burn;
  55. counter = counter + 1;
  56. end
  57. local threnody = target:getStatusEffect(EFFECT_THRENODY);
  58. if (threnody ~= nil and threnody:getSubPower() == MOD_ICERES) then
  59. effects[counter] = threnody;
  60. counter = counter + 1;
  61. end
  62.  
  63. if counter > 1 then
  64. local effect = effects[math.random(1, counter-1)];
  65. local duration = effect:getDuration();
  66. local startTime = effect:getStartTime();
  67. local tick = effect:getTick();
  68. local power = effect:getPower();
  69. local subpower = effect:getSubPower();
  70. local tier = effect:getTier();
  71. local effectId = effect:getType();
  72. local subId = effect:getSubType();
  73. power = power * 1.2;
  74. target:delStatusEffectSilent(effectId);
  75. target:addStatusEffect(effectId, power, tick, duration, subId, subpower, tier);
  76. local newEffect = target:getStatusEffect(effectId);
  77. newEffect:setStartTime(startTime);
  78. end
  79.  
  80. local del = player:delItem(2176, 1) or player:delItem(2974, 1)
  81.  
  82. target:updateClaim(player);
  83. return dmg;
  84. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement