Hi, first of all this is NOT rathena issue, on rAthena anything is OK!
Around 3 month ago, after wrong merge and resolving conflicts in git i did made some changes in sources (or in battle.c or in skill.c or somewhere else in sources)
And now, my problem in next:
Player A at for example Prontera can use Dispel with Shift (/ns) to another player in Prontera.
This is wrong. Because Prontera have no pvp or other mapflags.
I did tryied that on different other maps with no mapflags and i have the same bug.
With other spells anything is good.
My native SA_DISPELL in skill.c is clear, and the same like in rAthena.
What i need from people with knowladge:
1.) How can i check each "statement" in SA_dispel to debug what is happened while i'm using dispell and what is wrong?
2.) Can anyone guide me for logic in SA_DISPELL in skill.c (code below)
3.) Can anyone help me to debug SA_DISPELL to get more information about that and find where i did mistake while i'm was merge wrong commits?
case SA_DISPELL:
if (flag&1 || (i = skill_get_splash(skill_id, skill_lv)) < 1)
{
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
|| ( tsc && tsc->option&OPTION_MADOGEAR ) )//Mado Gear is immune to dispell according to bug report 49 [Ind]
{
if (sd)
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
break;
}
if(status_isimmune(bl))
break;
//Remove bonus_script by Dispell
if (dstsd)
pc_bonus_script_clear(dstsd,BSF_REM_ON_DISPELL);
if(!tsc || !tsc->count)
break;
if( sd && dstsd && !map_flag_vs(sd->bl.m) && sd->status.guild_id == dstsd->status.guild_id ) {
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
break;
}
for(i=0;i<SC_MAX;i++) {
if (!tsc->data[i])
continue;
switch (i) {
case SC_WEIGHT50: case SC_WEIGHT90: case SC_HALLUCINATION:
case SC_STRIPWEAPON: case SC_STRIPSHIELD: case SC_STRIPARMOR:
case SC_STRIPHELM: case SC_CP_WEAPON: case SC_CP_SHIELD:
case SC_CP_ARMOR: case SC_CP_HELM: case SC_COMBO:
case SC_STRFOOD: case SC_AGIFOOD: case SC_VITFOOD:
case SC_INTFOOD: case SC_DEXFOOD: case SC_LUKFOOD:
case SC_HITFOOD: case SC_FLEEFOOD: case SC_BATKFOOD:
case SC_WATKFOOD: case SC_MATKFOOD: case SC_DANCING:
case SC_EDP: case SC_AUTOBERSERK:
case SC_CARTBOOST: case SC_MELTDOWN: case SC_SAFETYWALL:
case SC_SMA: case SC_SPEEDUP0: case SC_NOCHAT:
case SC_ANKLE: case SC_SPIDERWEB: case SC_JAILED:
case SC_ITEMBOOST: case SC_EXPBOOST: case SC_LIFEINSURANCE:
case SC_BOSSMAPINFO: case SC_PNEUMA: case SC_AUTOSPELL:
case SC_INCHITRATE: case SC_INCATKRATE: case SC_NEN:
case SC_READYSTORM: case SC_READYDOWN: case SC_READYTURN:
case SC_READYCOUNTER: case SC_DODGE: case SC_WARM:
case SC_SPEEDUP1: case SC_AUTOTRADE: case SC_CRITICALWOUND:
case SC_JEXPBOOST: case SC_INVINCIBLE: case SC_INVINCIBLEOFF:
case SC_HELLPOWER: case SC_MANU_ATK: case SC_MANU_DEF:
case SC_SPL_ATK: case SC_SPL_DEF: case SC_MANU_MATK:
case SC_SPL_MATK: case SC_RICHMANKIM: case SC_ETERNALCHAOS:
case SC_DRUMBATTLE: case SC_NIBELUNGEN: case SC_ROKISWEIL:
case SC_INTOABYSS: case SC_SIEGFRIED: case SC_FOOD_STR_CASH:
case SC_FOOD_AGI_CASH: case SC_FOOD_VIT_CASH: case SC_FOOD_DEX_CASH:
case SC_FOOD_INT_CASH: case SC_FOOD_LUK_CASH: case SC_SEVENWIND:
case SC_MIRACLE: case SC_S_LIFEPOTION: case SC_L_LIFEPOTION:
case SC_INCHEALRATE: case SC_ELECTRICSHOCKER: case SC__STRIPACCESSORY:
//case SC_SAVAGE_STEAK: case SC_COCKTAIL_WARG_BLOOD: case SC_MINOR_BBQ:
//case SC_SIROMA_ICE_TEA: case SC_DROCERA_HERB_STEAMED: case SC_PUTTI_TAILS_NOODLES:
case SC_NEUTRALBARRIER_MASTER: case SC_NEUTRALBARRIER: case SC_STEALTHFIELD_MASTER:
case SC_STEALTHFIELD: case SC_GIANTGROWTH: case SC_MILLENNIUMSHIELD:
case SC_REFRESH: case SC_STONEHARDSKIN: case SC_VITALITYACTIVATION:
case SC_FIGHTINGSPIRIT: case SC_ABUNDANCE: case SC__SHADOWFORM:
case SC_LEADERSHIP: case SC_GLORYWOUNDS: case SC_SOULCOLD:
case SC_HAWKEYES: case SC_PUSH_CART:
case SC_RAISINGDRAGON: case SC_GT_ENERGYGAIN: case SC_GT_CHANGE:
case SC_GT_REVITALIZE: case SC_REFLECTDAMAGE: case SC_INSPIRATION:
case SC_EXEEDBREAK: case SC_FORCEOFVANGUARD: case SC_BANDING:
case SC_DUPLELIGHT: case SC_EXPIATIO: case SC_LAUDAAGNUS:
case SC_LAUDARAMUS: case SC_GATLINGFEVER: case SC_INCREASING:
case SC_ADJUSTMENT: case SC_MADNESSCANCEL:
case SC_ANGEL_PROTECT: case SC_MONSTER_TRANSFORM: case SC_FULL_THROTTLE:
case SC_REBOUND: case SC_TELEKINESIS_INTENSE:
case SC_HEAT_BARREL: case SC_HEAT_BARREL_AFTER: case SC_P_ALTER:
case SC_E_CHAIN: case SC_C_MARKER: case SC_B_TRAP:
case SC_H_MINE: case SC_RECOGNIZEDSPELL:
case SC_MTF_ASPD: case SC_MTF_RANGEATK: case SC_MTF_MATK:
case SC_MTF_MLEATKED: case SC_MTF_CRIDAMAGE: case SC_GN_CARTBOOST:
case SC_AUTOREFRESH:
#ifdef RENEWAL
case SC_EXTREMITYFIST2:
#endif
continue;
/**
* bugreport:4888 these songs may only be dispelled if you're not in their song area anymore
**/
case SC_WHISTLE:
case SC_ASSNCROS:
case SC_POEMBRAGI:
case SC_APPLEIDUN:
case SC_HUMMING:
case SC_DONTFORGETME:
case SC_FORTUNE:
case SC_SERVICE4U:
if(tsc->data[i]->val4==0)
continue; //if in song-area don't end it
break;
case SC_ASSUMPTIO:
if( bl->type == BL_MOB )
continue;
break;
}
if(i == SC_BERSERK) tsc->data[i]->val2=0; //Mark a dispelled berserk to avoid setting hp to 100 by setting hp penalty to 0.
status_change_end(bl, (sc_type)i, INVALID_TIMER);
}
break;
}
//Affect all targets on splash area.
map_foreachinrange(skill_area_sub, bl, i, BL_CHAR,
src, skill_id, skill_lv, tick, flag|1,
skill_castend_damage_id);
break;
Question
anacondaq
Hi, first of all this is NOT rathena issue, on rAthena anything is OK!
Around 3 month ago, after wrong merge and resolving conflicts in git i did made some changes in sources (or in battle.c or in skill.c or somewhere else in sources)
And now, my problem in next:
Player A at for example Prontera can use Dispel with Shift (/ns) to another player in Prontera.
This is wrong. Because Prontera have no pvp or other mapflags.
I did tryied that on different other maps with no mapflags and i have the same bug.
With other spells anything is good.
My native SA_DISPELL in skill.c is clear, and the same like in rAthena.
What i need from people with knowladge:
1.) How can i check each "statement" in SA_dispel to debug what is happened while i'm using dispell and what is wrong?
2.) Can anyone guide me for logic in SA_DISPELL in skill.c (code below)
3.) Can anyone help me to debug SA_DISPELL to get more information about that and find where i did mistake while i'm was merge wrong commits?
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.