Advertisement
ksaefz

Untitled

Aug 10th, 2022 (edited)
838
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 KB | None | 0 0
  1.     case SA_SPELLBREAKER:
  2.         {
  3.             int sp;
  4.             if(tsc && tsc->data[SC_MAGICROD]) {
  5.                 sp = skill_get_sp(skill_id,skill_lv);
  6.                 sp = sp * tsc->data[SC_MAGICROD]->val2 / 100;
  7.                 if(sp < 1) sp = 1;
  8.                 status_heal(bl,0,sp,2);
  9.                 status_percent_damage(bl, src, 0, -20, false); //20% max SP damage.
  10.             } else {
  11.                 struct unit_data *ud = unit_bl2ud(bl);
  12.                 int bl_skill_id=0,bl_skill_lv=0,hp = 0;
  13.                 if (!ud || ud->skilltimer == INVALID_TIMER)
  14.                     break; //Nothing to cancel.
  15.                 bl_skill_id = ud->skill_id;
  16.                 bl_skill_lv = ud->skill_lv;
  17.                 if (status_has_mode(tstatus,MD_STATUSIMMUNE)) { //Only 10% success chance against status immune. [Skotlex]
  18.                     if (rnd()%100 < 90)
  19.                     {
  20.                         if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
  21.                         break;
  22.                     }
  23.                 }
  24.                 if (!dstsd || map_flag_vs(bl->m)) //HP damage only on pvp-maps when against players.
  25.                     hp = tstatus->max_hp/50; //Recover 2% HP [Skotlex]
  26.  
  27.                 clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
  28.                 unit_skillcastcancel(bl,0);
  29.                 sp = skill_get_sp(bl_skill_id,bl_skill_lv);
  30.                 status_zap(bl, hp, sp);
  31.  
  32.                 if (hp && skill_lv >= 5) {
  33.                     clif_damage(src, bl, gettick(), 0, 0, hp, 0, DMG_ENDURE, 0, false);
  34.                     hp >>= 1;   //Recover half damaged HP at level 5 [Skotlex]
  35.                 }
  36.                 else
  37.                     hp = 0;
  38.  
  39.                 if (sp) //Recover some of the SP used
  40.                     sp = sp*(25*(skill_lv-1))/100;
  41.  
  42.                 if(hp || sp)
  43.                     status_heal(src, hp, sp, 2);
  44.             }
  45.         }
  46.         break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement