Jump to content
  • 0

Dispel Cancels Bard and Dancer Songs


Question

Posted

Hi

I am having a hard time understanding this part.. I would like Dispel to be able to cancel a Bard/Dancers Songs ( Bragi, PDFM and so on)

for example : a Bard casted Poem of Bragi , If I cast dispel on him, Bragi of Poem will be canceled. Not only the effect but the song itself.

here is the code in Skill.cpp

Spoiler

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))
				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) {
					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_CRIFOOD:
					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_RECOGNIZEDSPELL:case SC_LEADERSHIP:		case SC_GLORYWOUNDS:
					case SC_SOULCOLD:		case SC_HAWKEYES:		case SC_REGENERATION:
					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_MOONSTAR:
					case SC_SUPER_STAR:		case SC_ALL_RIDING:		case SC_MTF_ASPD:
					case SC_MTF_RANGEATK:	case SC_MTF_MATK:		case SC_MTF_MLEATKED:
					case SC_MTF_CRIDAMAGE:	case SC_HEAT_BARREL:
					case SC_P_ALTER:		case SC_E_CHAIN:		case SC_C_MARKER:
					case SC_B_TRAP:			case SC_H_MINE:			case SC_STRANGELIGHTS:
					case SC_DECORATION_OF_MUSIC:	case SC_GN_CARTBOOST:		case SC_CHASEWALK2:
					case SC_ACTIVE_MONSTER_TRANSFORM:	case SC_DORAM_BUF_01:	case SC_DORAM_BUF_02:
#ifdef RENEWAL
					case SC_EXTREMITYFIST2:
#endif
					case SC_HIDING:			case SC_CLOAKING:		case SC_CHASEWALK:
					case SC_CLOAKINGEXCEED:		case SC__INVISIBILITY:	case SC_UTSUSEMI:
					case SC_MTF_ASPD2:		case SC_MTF_RANGEATK2:	case SC_MTF_MATK2:
					case SC_2011RWC_SCROLL:		case SC_JP_EVENT04:	case SC_MTF_MHP:
					case SC_MTF_MSP:		case SC_MTF_PUMPKIN:	case SC_MTF_HITFLEE:
					case SC_ATTHASTE_CASH:	case SC_ARMOR_ELEMENT_WATER:	case SC_REUSE_REFRESH:
					case SC_REUSE_LIMIT_A:	case SC_REUSE_LIMIT_B:	case SC_REUSE_LIMIT_C:
					case SC_REUSE_LIMIT_D:	case SC_REUSE_LIMIT_E:	case SC_REUSE_LIMIT_F:
					case SC_REUSE_LIMIT_G:	case SC_REUSE_LIMIT_H:	case SC_REUSE_LIMIT_MTF:
					case SC_REUSE_LIMIT_ASPD_POTION:	case SC_REUSE_MILLENNIUMSHIELD:	case SC_REUSE_CRUSHSTRIKE:
					case SC_REUSE_STORMBLAST:	case SC_ALL_RIDING_REUSE_LIMIT:
					case SC_SPRITEMABLE:		case SC_BITESCAR:	case SC_CRUSHSTRIKE:
					case SC_QUEST_BUFF1:	case SC_QUEST_BUFF2:	case SC_QUEST_BUFF3:
					case SC_ARMOR_ELEMENT_EARTH:	case SC_ARMOR_ELEMENT_FIRE:	case SC_ARMOR_ELEMENT_WIND:
					// Clans
					case SC_CLAN_INFO:
					case SC_SWORDCLAN:
					case SC_ARCWANDCLAN:
					case SC_GOLDENMACECLAN:
					case SC_CROSSBOWCLAN:
					case SC_JUMPINGCLAN:
					case SC_DAILYSENDMAILCNT:
					case SC_WEDDING:		case SC_XMAS:			case SC_SUMMER:
					case SC_DRESSUP:		case SC_HANBOK:			case SC_OKTOBERFEST:
					case SC_LHZ_DUN_N1:		case SC_LHZ_DUN_N2:			case SC_LHZ_DUN_N3:			case SC_LHZ_DUN_N4:
						continue;
					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 (!battle_config.dispel_song || tsc->data[i]->val4 == 0)
							continue; //If in song area don't end it, even if config enabled
						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;
		}

 

I would really appreciate if someone can help and explain it in a foolproof way.

Thanks !

2 answers to this question

Recommended Posts

  • 0
Posted

u can setup this in

conf/battle/skill.conf

search this

// Should Dispel work on songs when the target is not in the song area? (Note 1)
// On official servers, it's impossible to dispel songs.
// Hint: Also affects the Rebellion skill "Vanishing Buster".
dispel_song: yes
 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...