Bringer Posted January 6, 2017 Group: Members Topic Count: 162 Topics Per Day: 0.04 Content Count: 748 Reputation: 47 Joined: 03/12/14 Last Seen: Wednesday at 03:29 PM Share Posted January 6, 2017 (edited) i want to modify The Blessing & Increase Agility Skill while under on Priest Spirit Link The Effect is Clementai & Canto Candidus @Cydh @Playtester @Emistry case AB_CLEMENTIA: case AB_CANTO: { int bless_lv = pc_checkskill(sd,AL_BLESSING); int agi_lv = pc_checkskill(sd,AL_INCAGI); if( sd == NULL || sd->status.party_id == 0 || flag&1 ) clif_skill_nodamage(bl, bl, skillid, skilllv, sc_start(bl,type,100, (skillid == AB_CLEMENTIA)? bless_lv : (skillid == AB_CANTO)? agi_lv : skilllv, skill_get_time(skillid,skilllv))); else if( sd ) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skillid, skilllv), src, skillid, skilllv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); } break; Edited January 6, 2017 by Bringer Quote Link to comment Share on other sites More sharing options...
0 Playtester Posted January 6, 2017 Group: Developer Topic Count: 37 Topics Per Day: 0.01 Content Count: 897 Reputation: 248 Joined: 01/30/13 Last Seen: Yesterday at 09:07 AM Share Posted January 6, 2017 How do you want to modify it? Quote Link to comment Share on other sites More sharing options...
0 Bringer Posted January 6, 2017 Group: Members Topic Count: 162 Topics Per Day: 0.04 Content Count: 748 Reputation: 47 Joined: 03/12/14 Last Seen: Wednesday at 03:29 PM Author Share Posted January 6, 2017 53 minutes ago, Playtester said: How do you want to modify it? Casts the skill 'Blessing' on the target and any party members within a radius of that target. Casts the skill 'Increase AGI' on the target and any party members within a radius of that target. When High Priest Got Priest Spirit Link Just Like the skill of Arch Bishop Canto Candidus and Clementia But Using Blessing & Increase Agility Quote Link to comment Share on other sites More sharing options...
0 Playtester Posted January 7, 2017 Group: Developer Topic Count: 37 Topics Per Day: 0.01 Content Count: 897 Reputation: 248 Joined: 01/30/13 Last Seen: Yesterday at 09:07 AM Share Posted January 7, 2017 Yeah is a bit more complex to do because Blessing and Agi have some special rules like you can offensively cast them too. Usually Blessing and Agi end up here: clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; But that is used for all other status change skills too, so you need to split them away from that. And do an implementation that looks a bit more like the code you quoted above. if( sd ) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); But this code should only be called when having link status, so something like: struct status_change* sc = status_get_sc(src); if(sd && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_PRIEST) With that info you should be able to code it together yourself. Quote Link to comment Share on other sites More sharing options...
0 Bringer Posted January 8, 2017 Group: Members Topic Count: 162 Topics Per Day: 0.04 Content Count: 748 Reputation: 47 Joined: 03/12/14 Last Seen: Wednesday at 03:29 PM Author Share Posted January 8, 2017 @Playtester 1st Code Where i can find it? and the 2nd & 3rd code where i can add ? clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; if( sd ) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); struct status_change* sc = status_get_sc(src); if(sd && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_PRIEST) or can you combine the code for me ? Quote Link to comment Share on other sites More sharing options...
0 Athan17 Posted January 9, 2017 Group: Members Topic Count: 1 Topics Per Day: 0.00 Content Count: 57 Reputation: 16 Joined: 09/26/16 Last Seen: August 16, 2020 Share Posted January 9, 2017 On 1/8/2017 at 11:46 AM, Bringer said: 1st Code Where i can find it? its in skill.c Text editing softwares has a powerful tool called "Search", and most of them are toggled by hitting CTRL+F. On 1/8/2017 at 11:46 AM, Bringer said: or can you combine the code for me ? On 1/7/2017 at 11:51 PM, Playtester said: With that info you should be able to code it together yourself. and also, why not just grant the skill Clementia and Canto Candidus when Soul Linked? It will be easier than modifying the source.. if you dont know what're doing (since you asked, seems like it) since Agi/Bless is a target skill while Clem/Canto is a self skill, you might not get the effect you'd wanted (being the agi/bless transforms from target skill to self skill when soul linked). perhaps separating them is a better approach. Quote Link to comment Share on other sites More sharing options...
0 Bringer Posted January 9, 2017 Group: Members Topic Count: 162 Topics Per Day: 0.04 Content Count: 748 Reputation: 47 Joined: 03/12/14 Last Seen: Wednesday at 03:29 PM Author Share Posted January 9, 2017 @Athan17 i did but i dont what # line @Playtester paste it https://github.com/rathena/rathena/blob/master/src/map/skill.c#L6546 Quote Link to comment Share on other sites More sharing options...
0 Bringer Posted January 11, 2017 Group: Members Topic Count: 162 Topics Per Day: 0.04 Content Count: 748 Reputation: 47 Joined: 03/12/14 Last Seen: Wednesday at 03:29 PM Author Share Posted January 11, 2017 On 07/01/2017 at 11:51 PM, Playtester said: Yeah is a bit more complex to do because Blessing and Agi have some special rules like you can offensively cast them too. Usually Blessing and Agi end up here: clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; But that is used for all other status change skills too, so you need to split them away from that. And do an implementation that looks a bit more like the code you quoted above. if( sd ) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); But this code should only be called when having link status, so something like: struct status_change* sc = status_get_sc(src); if(sd && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_PRIEST) With that info you should be able to code it together yourself. Bump do you mind combine the code for me thanks @Playtester Quote Link to comment Share on other sites More sharing options...
0 Playtester Posted January 11, 2017 Group: Developer Topic Count: 37 Topics Per Day: 0.01 Content Count: 897 Reputation: 248 Joined: 01/30/13 Last Seen: Yesterday at 09:07 AM Share Posted January 11, 2017 Sorry, as I said I can give you hints but if you want more complex code solutions you should probably learn to understand the code yourself or hire a coder. Quote Link to comment Share on other sites More sharing options...
0 Bringer Posted January 11, 2017 Group: Members Topic Count: 162 Topics Per Day: 0.04 Content Count: 748 Reputation: 47 Joined: 03/12/14 Last Seen: Wednesday at 03:29 PM Author Share Posted January 11, 2017 7 hours ago, Playtester said: Sorry, as I said I can give you hints but if you want more complex code solutions you should probably learn to understand the code yourself or hire a coder. Just where i can find this code? clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; Quote Link to comment Share on other sites More sharing options...
0 Playtester Posted January 11, 2017 Group: Developer Topic Count: 37 Topics Per Day: 0.01 Content Count: 897 Reputation: 248 Joined: 01/30/13 Last Seen: Yesterday at 09:07 AM Share Posted January 11, 2017 Is it so hard to press Ctrl+F and then enter that text to find it? Or just search for AL_BLESSING to see whereever it applies. As I said it's the block that is for all normal status changes without special rules. case AL_INCAGI: case AL_BLESSING: case MER_INCAGI: case MER_BLESSING: if (dstsd != NULL && tsc->data[SC_CHANGEUNDEAD]) { skill_attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag); break; } case PR_SLOWPOISON: case PR_IMPOSITIO: case PR_LEXAETERNA: case PR_SUFFRAGIUM: case PR_BENEDICTIO: case LK_BERSERK: case MS_BERSERK: case KN_TWOHANDQUICKEN: case KN_ONEHAND: case MER_QUICKEN: case CR_SPEARQUICKEN: case CR_REFLECTSHIELD: case MS_REFLECTSHIELD: case AS_POISONREACT: case MC_LOUD: case MG_ENERGYCOAT: case MO_EXPLOSIONSPIRITS: case MO_STEELBODY: case MO_BLADESTOP: case LK_AURABLADE: case LK_PARRYING: case MS_PARRYING: case LK_CONCENTRATION: case WS_CARTBOOST: case SN_SIGHT: case WS_MELTDOWN: case WS_OVERTHRUSTMAX: case ST_REJECTSWORD: case HW_MAGICPOWER: case PF_MEMORIZE: case PA_SACRIFICE: case ASC_EDP: case PF_DOUBLECASTING: case SG_SUN_COMFORT: case SG_MOON_COMFORT: case SG_STAR_COMFORT: case GS_MADNESSCANCEL: case GS_ADJUSTMENT: case GS_INCREASING: case NJ_KASUMIKIRI: case NJ_UTSUSEMI: case NJ_NEN: case NPC_DEFENDER: case NPC_MAGICMIRROR: case ST_PRESERVE: case NPC_INVINCIBLE: case NPC_INVINCIBLEOFF: case RK_DEATHBOUND: case AB_RENOVATIO: case AB_EXPIATIO: case AB_DUPLELIGHT: case AB_SECRAMENT: case AB_OFFERTORIUM: case NC_ACCELERATION: case NC_HOVERING: case NC_SHAPESHIFT: case WL_MARSHOFABYSS: case WL_RECOGNIZEDSPELL: case GC_VENOMIMPRESS: case SC_DEADLYINFECT: case LG_EXEEDBREAK: case LG_PRESTIGE: case SR_CRESCENTELBOW: case SR_LIGHTNINGWALK: case GN_CARTBOOST: case KO_MEIKYOUSISUI: case ALL_ODINS_POWER: case ALL_FULL_THROTTLE: case RA_UNLIMIT: case WL_TELEKINESIS_INTENSE: case RL_HEAT_BARREL: case RL_P_ALTER: case RL_E_CHAIN: case SU_FRESHSHRIMP: case SU_ARCLOUSEDASH: clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; Quote Link to comment Share on other sites More sharing options...
0 Bringer Posted January 25, 2017 Group: Members Topic Count: 162 Topics Per Day: 0.04 Content Count: 748 Reputation: 47 Joined: 03/12/14 Last Seen: Wednesday at 03:29 PM Author Share Posted January 25, 2017 (edited) On 12/01/2017 at 5:38 AM, Playtester said: Is it so hard to press Ctrl+F and then enter that text to find it? Or just search for AL_BLESSING to see whereever it applies. As I said it's the block that is for all normal status changes without special rules. case AL_INCAGI: case AL_BLESSING: case MER_INCAGI: case MER_BLESSING: if (dstsd != NULL && tsc->data[SC_CHANGEUNDEAD]) { skill_attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag); break; } case PR_SLOWPOISON: case PR_IMPOSITIO: case PR_LEXAETERNA: case PR_SUFFRAGIUM: case PR_BENEDICTIO: case LK_BERSERK: case MS_BERSERK: case KN_TWOHANDQUICKEN: case KN_ONEHAND: case MER_QUICKEN: case CR_SPEARQUICKEN: case CR_REFLECTSHIELD: case MS_REFLECTSHIELD: case AS_POISONREACT: case MC_LOUD: case MG_ENERGYCOAT: case MO_EXPLOSIONSPIRITS: case MO_STEELBODY: case MO_BLADESTOP: case LK_AURABLADE: case LK_PARRYING: case MS_PARRYING: case LK_CONCENTRATION: case WS_CARTBOOST: case SN_SIGHT: case WS_MELTDOWN: case WS_OVERTHRUSTMAX: case ST_REJECTSWORD: case HW_MAGICPOWER: case PF_MEMORIZE: case PA_SACRIFICE: case ASC_EDP: case PF_DOUBLECASTING: case SG_SUN_COMFORT: case SG_MOON_COMFORT: case SG_STAR_COMFORT: case GS_MADNESSCANCEL: case GS_ADJUSTMENT: case GS_INCREASING: case NJ_KASUMIKIRI: case NJ_UTSUSEMI: case NJ_NEN: case NPC_DEFENDER: case NPC_MAGICMIRROR: case ST_PRESERVE: case NPC_INVINCIBLE: case NPC_INVINCIBLEOFF: case RK_DEATHBOUND: case AB_RENOVATIO: case AB_EXPIATIO: case AB_DUPLELIGHT: case AB_SECRAMENT: case AB_OFFERTORIUM: case NC_ACCELERATION: case NC_HOVERING: case NC_SHAPESHIFT: case WL_MARSHOFABYSS: case WL_RECOGNIZEDSPELL: case GC_VENOMIMPRESS: case SC_DEADLYINFECT: case LG_EXEEDBREAK: case LG_PRESTIGE: case SR_CRESCENTELBOW: case SR_LIGHTNINGWALK: case GN_CARTBOOST: case KO_MEIKYOUSISUI: case ALL_ODINS_POWER: case ALL_FULL_THROTTLE: case RA_UNLIMIT: case WL_TELEKINESIS_INTENSE: case RL_HEAT_BARREL: case RL_P_ALTER: case RL_E_CHAIN: case SU_FRESHSHRIMP: case SU_ARCLOUSEDASH: clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; should be like this ? @Playtester case AL_INCAGI: case AL_BLESSING: if( sd ) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); struct status_change* sc = status_get_sc(src); if(sd && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_PRIEST) break; Edited January 25, 2017 by Bringer Quote Link to comment Share on other sites More sharing options...
Question
Bringer
i want to modify The Blessing & Increase Agility Skill while under on Priest Spirit Link The Effect is Clementai & Canto Candidus
@Cydh @Playtester @Emistry
case AB_CLEMENTIA: case AB_CANTO: { int bless_lv = pc_checkskill(sd,AL_BLESSING); int agi_lv = pc_checkskill(sd,AL_INCAGI); if( sd == NULL || sd->status.party_id == 0 || flag&1 ) clif_skill_nodamage(bl, bl, skillid, skilllv, sc_start(bl,type,100, (skillid == AB_CLEMENTIA)? bless_lv : (skillid == AB_CANTO)? agi_lv : skilllv, skill_get_time(skillid,skilllv))); else if( sd ) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skillid, skilllv), src, skillid, skilllv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); } break;
Link to comment
Share on other sites
11 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.