Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- case SA_SPELLBREAKER:
- {
- int sp;
- if(tsc && tsc->data[SC_MAGICROD]) {
- sp = skill_get_sp(skill_id,skill_lv);
- sp = sp * tsc->data[SC_MAGICROD]->val2 / 100;
- if(sp < 1) sp = 1;
- status_heal(bl,0,sp,2);
- status_percent_damage(bl, src, 0, -20, false); //20% max SP damage.
- } else {
- struct unit_data *ud = unit_bl2ud(bl);
- int bl_skill_id=0,bl_skill_lv=0,hp = 0;
- if (!ud || ud->skilltimer == INVALID_TIMER)
- break; //Nothing to cancel.
- bl_skill_id = ud->skill_id;
- bl_skill_lv = ud->skill_lv;
- if (status_has_mode(tstatus,MD_STATUSIMMUNE)) { //Only 10% success chance against status immune. [Skotlex]
- if (rnd()%100 < 90)
- {
- if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
- break;
- }
- }
- if (!dstsd || map_flag_vs(bl->m)) //HP damage only on pvp-maps when against players.
- hp = tstatus->max_hp/50; //Recover 2% HP [Skotlex]
- clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
- unit_skillcastcancel(bl,0);
- sp = skill_get_sp(bl_skill_id,bl_skill_lv);
- status_zap(bl, hp, sp);
- if (hp && skill_lv >= 5) {
- clif_damage(src, bl, gettick(), 0, 0, hp, 0, DMG_ENDURE, 0, false);
- hp >>= 1; //Recover half damaged HP at level 5 [Skotlex]
- }
- else
- hp = 0;
- if (sp) //Recover some of the SP used
- sp = sp*(25*(skill_lv-1))/100;
- if(hp || sp)
- status_heal(src, hp, sp, 2);
- }
- }
- break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement