rans Posted June 4, 2013 Group: Members Topic Count: 104 Topics Per Day: 0.02 Content Count: 429 Reputation: 60 Joined: 08/19/12 Last Seen: 3 hours ago Share Posted June 4, 2013 hi, ung devo, pag umatake ng physical or magic tapos nareflect dapat ung sasalo ung pally hindi ung mismong tumira kasi nakadevo.sino me alam? xDUsing Eathena Emulator... Quote Link to comment Share on other sites More sharing options...
Jaburak Posted June 4, 2013 Group: Members Topic Count: 48 Topics Per Day: 0.01 Content Count: 1125 Reputation: 236 Joined: 07/30/12 Last Seen: April 13 Share Posted June 4, 2013 You better contact Judas to fix your issue. Quote Link to comment Share on other sites More sharing options...
rans Posted June 4, 2013 Group: Members Topic Count: 104 Topics Per Day: 0.02 Content Count: 429 Reputation: 60 Joined: 08/19/12 Last Seen: 3 hours ago Author Share Posted June 4, 2013 yes , kinontak ko na kaso tagal mag reply :3 xD Quote Link to comment Share on other sites More sharing options...
Patskie Posted June 4, 2013 Group: Members Topic Count: 50 Topics Per Day: 0.01 Content Count: 1702 Reputation: 241 Joined: 09/05/12 Last Seen: 11 hours ago Share Posted June 4, 2013 Index: src/map/battle.c =================================================================== --- src/map/battle.c (revision 15817) +++ src/map/battle.c (working copy) @@ -233,10 +233,8 @@ nullpo_ret(target); sc = status_get_sc(target); - - if( sc && sc->data[SC_DEVOTION] && damage > 0 && skill_id != PA_PRESSURE && skill_id != CR_REFLECTSHIELD ) + //devotion patch by Cyrix (rathena) ([email protected]) +//https://www.facebook.com/ragdb.ragnarok +if( sc && sc->data[SC_DEVOTION] && damage > 0 && skill_id != PA_PRESSURE && skill_id != CR_REFLECTSHIELD ) damage = 0; - if ( !battle_config.delay_battle_damage || amotion <= 1 ) { map_freeblock_lock(); status_fix_damage(src, target, damage, ddelay); // We have to seperate here between reflect damage and others [icescope] @@ -4186,7 +4184,7 @@ } else status_change_end(target, SC_DEVOTION, INVALID_TIMER); - } + } if (sc && sc->data[SC_AUTOSPELL] && rnd()%100 < sc->data[SC_AUTOSPELL]->val4) { int sp = 0; Index: src/map/pc.c =================================================================== --- src/map/pc.c (revision 15817) +++ src/map/pc.c (working copy) @@ -6078,8 +6078,7 @@ for(k = 0; k < 5; k++) if (sd->devotion[k]){ struct map_session_data *devsd = map_id2sd(sd->devotion[k]); - if (devsd) - status_change_end(&devsd->bl, SC_DEVOTION, INVALID_TIMER); + //devotion patch by Cyrix (rathena) ([email protected]) +//https://www.facebook.com/ragdb.ragnarok + if (devsd) status_change_end(&devsd->bl,SC_DEVOTION,-1); sd->devotion[k] = 0; } Index: src/map/status.c =================================================================== --- src/map/status.c (revision 15817) +++ src/map/status.c (working copy) @@ -1015,31 +1015,43 @@ // if (!target->prev && !(flag&2)) // return 0; //Cannot damage a bl not on a map, except when "charging" hp/sp - sc = status_get_sc(target); - if( hp && battle_config.invincible_nodamage && src && sc && sc->data[SC_INVINCIBLE] && !sc->data[SC_INVINCIBLEOFF] ) - hp = 1; + //devotion patch by Cyrix (rathena) ([email protected]) +//https://www.facebook.com/ragdb.ragnarok + sc = status_get_sc(target); + - if( hp && !(flag&1) ) { + if( hp && !(flag&(1|8)) ) { if( sc ) { struct status_change_entry *sce; + if( (sce = sc->data[SC_DEVOTION]) && src && battle_getcurrentskill(src) != PA_PRESSURE ) + { // Devotion prevents any of the other ailments from ending. + struct block_list *d_bl = map_id2bl(sce->val1); + + if( d_bl && ( + (d_bl->type == BL_MER && ((TBL_MER*)d_bl)->master && ((TBL_MER*)d_bl)->master->bl.id == target->id) || + (d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce->val2] == target->id) + ) && check_distance_bl(target, d_bl, sce->val3) ) + { + clif_damage(d_bl, d_bl, gettick(), 0, 0, hp, 0, 0, 0); + status_fix_damage(NULL, d_bl, hp, 0); + return 0; + } + + status_change_end(target, SC_DEVOTION, -1); + } if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE) - status_change_end(target, SC_STONE, INVALID_TIMER); - status_change_end(target, SC_FREEZE, INVALID_TIMER); - status_change_end(target, SC_SLEEP, INVALID_TIMER); - status_change_end(target, SC_WINKCHARM, INVALID_TIMER); - status_change_end(target, SC_CONFUSION, INVALID_TIMER); - status_change_end(target, SC_TRICKDEAD, INVALID_TIMER); - status_change_end(target, SC_HIDING, INVALID_TIMER); - status_change_end(target, SC_CLOAKING, INVALID_TIMER); - status_change_end(target, SC_CHASEWALK, INVALID_TIMER); - status_change_end(target, SC_CAMOUFLAGE, INVALID_TIMER); - status_change_end(target, SC__INVISIBILITY, INVALID_TIMER); - status_change_end(target, SC_DEEPSLEEP, INVALID_TIMER); + status_change_end(target,SC_STONE,-1); + status_change_end(target,SC_FREEZE,-1); + status_change_end(target,SC_SLEEP,-1); + status_change_end(target,SC_WINKCHARM,-1); + status_change_end(target,SC_CONFUSION,-1); + status_change_end(target,SC_TRICKDEAD,-1); + status_change_end(target,SC_HIDING,-1); + status_change_end(target,SC_CLOAKING,-1); + status_change_end(target,SC_CHASEWALK,-1); if ((sce=sc->data[SC_ENDURE]) && !sce->val4) { //Endure count is only reduced by non-players on non-gvg maps. //val4 signals infinite endure. [Skotlex] if (src && src->type != BL_PC && !map_flag_gvg(target->m) && !map[target->m].flag.battleground && --(sce->val2) < 0) - status_change_end(target, SC_ENDURE, INVALID_TIMER); + status_change_end(target, SC_ENDURE, -1); } if ((sce=sc->data[SC_GRAVITATION]) && sce->val3 == BCT_SELF) { struct skill_unit_group* sg = skill_id2group(sce->val4); @@ -8235,14 +8247,14 @@ for( i = 0; i < 5; i++ ) { if( sd->devotion && (tsd = map_id2sd(sd->devotion)) && tsd->sc.data[type] ) - status_change_end(&tsd->bl, type, INVALID_TIMER); + status_change_end(&tsd->bl, type, -1); } } else if( bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag ) { // Clear Status from Master tsd = ((TBL_MER*)bl)->master; if( tsd && tsd->sc.data[type] ) - status_change_end(&tsd->bl, type, INVALID_TIMER); + status_change_end(&tsd->bl, type, -1); } } break; @@ -8258,10 +8270,10 @@ clif_devotion(d_bl, NULL); } - status_change_end(bl, SC_AUTOGUARD, INVALID_TIMER); - status_change_end(bl, SC_DEFENDER, INVALID_TIMER); - status_change_end(bl, SC_REFLECTSHIELD, INVALID_TIMER); - status_change_end(bl, SC_ENDURE, INVALID_TIMER); + status_change_end(bl,SC_AUTOGUARD,-1); + status_change_end(bl,SC_DEFENDER,-1); + status_change_end(bl,SC_REFLECTSHIELD,-1); + status_change_end(bl,SC_ENDURE,-1); } break; Quote Link to comment Share on other sites More sharing options...
rans Posted June 4, 2013 Group: Members Topic Count: 104 Topics Per Day: 0.02 Content Count: 429 Reputation: 60 Joined: 08/19/12 Last Seen: 3 hours ago Author Share Posted June 4, 2013 Im using Eathena Quote Link to comment Share on other sites More sharing options...
Sir Posted June 7, 2013 Group: Members Topic Count: 1 Topics Per Day: 0.00 Content Count: 2 Reputation: 0 Joined: 04/29/13 Last Seen: June 10, 2013 Share Posted June 7, 2013 (edited) Index: src/map/battle.c =================================================================== --- src/map/battle.c (revision 15817) +++ src/map/battle.c (working copy) @@ -233,10 +233,8 @@ nullpo_ret(target); sc = status_get_sc(target); - - if( sc && sc->data[SC_DEVOTION] && damage > 0 && skill_id != PA_PRESSURE && skill_id != CR_REFLECTSHIELD ) + //devotion patch by Cyrix (rathena) ([email protected]) +//https://www.facebook.com/ragdb.ragnarok +if( sc && sc->data[SC_DEVOTION] && damage > 0 && skill_id != PA_PRESSURE && skill_id != CR_REFLECTSHIELD ) damage = 0; - if ( !battle_config.delay_battle_damage || amotion <= 1 ) { map_freeblock_lock(); status_fix_damage(src, target, damage, ddelay); // We have to seperate here between reflect damage and others [icescope] @@ -4186,7 +4184,7 @@ } else status_change_end(target, SC_DEVOTION, INVALID_TIMER); - } + } if (sc && sc->data[SC_AUTOSPELL] && rnd()%100 < sc->data[SC_AUTOSPELL]->val4) { int sp = 0; Index: src/map/pc.c =================================================================== --- src/map/pc.c (revision 15817) +++ src/map/pc.c (working copy) @@ -6078,8 +6078,7 @@ for(k = 0; k < 5; k++) if (sd->devotion[k]){ struct map_session_data *devsd = map_id2sd(sd->devotion[k]); - if (devsd) - status_change_end(&devsd->bl, SC_DEVOTION, INVALID_TIMER); + //devotion patch by Cyrix (rathena) ([email protected]) +//https://www.facebook.com/ragdb.ragnarok + if (devsd) status_change_end(&devsd->bl,SC_DEVOTION,-1); sd->devotion[k] = 0; } Index: src/map/status.c =================================================================== --- src/map/status.c (revision 15817) +++ src/map/status.c (working copy) @@ -1015,31 +1015,43 @@ // if (!target->prev && !(flag&2)) // return 0; //Cannot damage a bl not on a map, except when "charging" hp/sp - sc = status_get_sc(target); - if( hp && battle_config.invincible_nodamage && src && sc && sc->data[SC_INVINCIBLE] && !sc->data[SC_INVINCIBLEOFF] ) - hp = 1; + //devotion patch by Cyrix (rathena) ([email protected]) +//https://www.facebook.com/ragdb.ragnarok + sc = status_get_sc(target); + - if( hp && !(flag&1) ) { + if( hp && !(flag&(1|8)) ) { if( sc ) { struct status_change_entry *sce; + if( (sce = sc->data[SC_DEVOTION]) && src && battle_getcurrentskill(src) != PA_PRESSURE ) + { // Devotion prevents any of the other ailments from ending. + struct block_list *d_bl = map_id2bl(sce->val1); + + if( d_bl && ( + (d_bl->type == BL_MER && ((TBL_MER*)d_bl)->master && ((TBL_MER*)d_bl)->master->bl.id == target->id) || + (d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce->val2] == target->id) + ) && check_distance_bl(target, d_bl, sce->val3) ) + { + clif_damage(d_bl, d_bl, gettick(), 0, 0, hp, 0, 0, 0); + status_fix_damage(NULL, d_bl, hp, 0); + return 0; + } + + status_change_end(target, SC_DEVOTION, -1); + } if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE) - status_change_end(target, SC_STONE, INVALID_TIMER); - status_change_end(target, SC_FREEZE, INVALID_TIMER); - status_change_end(target, SC_SLEEP, INVALID_TIMER); - status_change_end(target, SC_WINKCHARM, INVALID_TIMER); - status_change_end(target, SC_CONFUSION, INVALID_TIMER); - status_change_end(target, SC_TRICKDEAD, INVALID_TIMER); - status_change_end(target, SC_HIDING, INVALID_TIMER); - status_change_end(target, SC_CLOAKING, INVALID_TIMER); - status_change_end(target, SC_CHASEWALK, INVALID_TIMER); - status_change_end(target, SC_CAMOUFLAGE, INVALID_TIMER); - status_change_end(target, SC__INVISIBILITY, INVALID_TIMER); - status_change_end(target, SC_DEEPSLEEP, INVALID_TIMER); + status_change_end(target,SC_STONE,-1); + status_change_end(target,SC_FREEZE,-1); + status_change_end(target,SC_SLEEP,-1); + status_change_end(target,SC_WINKCHARM,-1); + status_change_end(target,SC_CONFUSION,-1); + status_change_end(target,SC_TRICKDEAD,-1); + status_change_end(target,SC_HIDING,-1); + status_change_end(target,SC_CLOAKING,-1); + status_change_end(target,SC_CHASEWALK,-1); if ((sce=sc->data[SC_ENDURE]) && !sce->val4) { //Endure count is only reduced by non-players on non-gvg maps. //val4 signals infinite endure. [Skotlex] if (src && src->type != BL_PC && !map_flag_gvg(target->m) && !map[target->m].flag.battleground && --(sce->val2) < 0) - status_change_end(target, SC_ENDURE, INVALID_TIMER); + status_change_end(target, SC_ENDURE, -1); } if ((sce=sc->data[SC_GRAVITATION]) && sce->val3 == BCT_SELF) { struct skill_unit_group* sg = skill_id2group(sce->val4); @@ -8235,14 +8247,14 @@ for( i = 0; i < 5; i++ ) { if( sd->devotion[i] && (tsd = map_id2sd(sd->devotion[i])) && tsd->sc.data[type] ) - status_change_end(&tsd->bl, type, INVALID_TIMER); + status_change_end(&tsd->bl, type, -1); } } else if( bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag ) { // Clear Status from Master tsd = ((TBL_MER*)bl)->master; if( tsd && tsd->sc.data[type] ) - status_change_end(&tsd->bl, type, INVALID_TIMER); + status_change_end(&tsd->bl, type, -1); } } break; @@ -8258,10 +8270,10 @@ clif_devotion(d_bl, NULL); } - status_change_end(bl, SC_AUTOGUARD, INVALID_TIMER); - status_change_end(bl, SC_DEFENDER, INVALID_TIMER); - status_change_end(bl, SC_REFLECTSHIELD, INVALID_TIMER); - status_change_end(bl, SC_ENDURE, INVALID_TIMER); + status_change_end(bl,SC_AUTOGUARD,-1); + status_change_end(bl,SC_DEFENDER,-1); + status_change_end(bl,SC_REFLECTSHIELD,-1); + status_change_end(bl,SC_ENDURE,-1); } break; Could you please elaborate on what is happening in this script? I don't know how to read /src/ files. I'm trying to make it so that Instead of immunity to reflect damage, the Paladin will take the damage from reflect. Edited June 7, 2013 by Sir Quote Link to comment Share on other sites More sharing options...
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.