Schmerz Posted January 7, 2020 Group: Members Topic Count: 6 Topics Per Day: 0.00 Content Count: 21 Reputation: 0 Joined: 12/02/19 Last Seen: January 18 Share Posted January 7, 2020 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 ! Quote Link to comment Share on other sites More sharing options...
0 Angeluz Posted January 12, 2020 Group: Members Topic Count: 10 Topics Per Day: 0.00 Content Count: 109 Reputation: 19 Joined: 07/28/12 Last Seen: Tuesday at 12:55 AM Share Posted January 12, 2020 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 Quote Link to comment Share on other sites More sharing options...
0 Schmerz Posted January 13, 2020 Group: Members Topic Count: 6 Topics Per Day: 0.00 Content Count: 21 Reputation: 0 Joined: 12/02/19 Last Seen: January 18 Author Share Posted January 13, 2020 I mean the clown casting the skill itself... Quote Link to comment Share on other sites More sharing options...
Question
Schmerz
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
I would really appreciate if someone can help and explain it in a foolproof way.
Thanks !
Link to comment
Share on other sites
2 answers 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.