mawjustin Posted January 8, 2021 Share Posted January 8, 2021 (edited) Hi Team, How do we do this? bypass when in Soul Link? I understand that this enables Dispel on GTB. But can we add an additional script that it will only work if the player (Sage/Professor) is on Soul Link? if((status_isimmune(bl) &&!tsc->data[SC_HERMODE] && rnd()%100 > 30 )) break; I tried this, but no luck. if((status_isimmune(bl) &&!tsc->data[SC_HERMODE] && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_SAGE && rnd()%100 > 30 )) break; This is from src/map/skill.cpp case SA_DISPELL: if (flag&1 || (i = skill_get_splash(skill_id, skill_lv)) < 1) { if (sd && dstsd && !map_flag_vs(sd->bl.m) && (!sd->duel_group || sd->duel_group != dstsd->duel_group) && (!sd->status.party_id || sd->status.party_id != dstsd->status.party_id)) break; // Outside PvP it should only affect party members and no skill fail message clif_skill_nodamage(src,bl,skill_id,skill_lv,1); if((dstsd && (dstsd->class_&MAPID_UPPERMASK) == MAPID_SOUL_LINKER) || (tsc && tsc->data[SC_SPIRIT] && tsc->data[SC_SPIRIT]->val2 == SL_ROGUE) //Rogue's spirit defends againt dispel. || rnd()%100 >= 50+10*skill_lv) { if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); break; } if((status_isimmune(bl) &&!tsc->data[SC_HERMODE] && rnd()%100 > 30 )) break; //Remove bonus_script by Dispell if (dstsd) pc_bonus_script_clear(dstsd,BSF_REM_ON_DISPELL); if(!tsc || !tsc->count) break; for(i=0;i<SC_MAX;i++) { if (!tsc->data[i]) continue; switch (i) { Edit: Found a fix on this one: from Just change clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0); to clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); And fix the typo.. from sC to SC case SA_DISPELL: if (flag&1 || (i = skill_get_splash(skill_id, skill_lv)) < 1) { if (sd && dstsd && !map_flag_vs(sd->bl.m) && (!sd->duel_group || sd->duel_group != dstsd->duel_group) && (!sd->status.party_id || sd->status.party_id != dstsd->status.party_id)) break; // Outside PvP it should only affect party members and no skill fail message clif_skill_nodamage(src,bl,skill_id,skill_lv,1); if((dstsd && (dstsd->class_&MAPID_UPPERMASK) == MAPID_SOUL_LINKER) || (tsc && tsc->data[SC_SPIRIT] && tsc->data[SC_SPIRIT]->val2 == SL_ROGUE) //Rogue's spirit defends againt dispel. || rnd()%100 >= 50+10*skill_lv) { if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); break; } if(sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_SAGE && status_isimmune(bl) && !tsc->data[SC_HERMODE] && rnd()%100 < 70 || status_isimmune(bl) && !(sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_SAGE) ){ if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); break; } //Remove bonus_script by Dispell Edited January 8, 2021 by mawjustin found a fix. Quote Link to comment Share on other sites More sharing options...
0 Rook1es Posted February 23, 2021 Share Posted February 23, 2021 Hello! is chance percentage working? i tried this before when i change to low chances it keeps dispel, in short chance of percentage is not working Quote Link to comment Share on other sites More sharing options...
0 BeWan Posted February 24, 2021 Share Posted February 24, 2021 separate the condition to make it work. Quote Link to comment Share on other sites More sharing options...
0 Rook1es Posted February 25, 2021 Share Posted February 25, 2021 17 hours ago, BeWan said: separate the condition to make it work. Hello sir, how to separate it to make it work? Quote Link to comment Share on other sites More sharing options...
Hi Team,
How do we do this? bypass when in Soul Link?
I understand that this enables Dispel on GTB. But can we add an additional script that it will only work if the player (Sage/Professor) is on Soul Link?
I tried this, but no luck.
This is from src/map/skill.cpp
Edit:
Found a fix on this one: from
Just change
to
And fix the typo.. from sC to SC
Edited by mawjustinfound a fix.
Link to comment
Share on other sites