Vanquiser 3 Posted December 12, 2013 (edited) Original Post : HereAny One Can Convert This to Hercules ??Thx in advance 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.../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 @@}elsestatus_change_end(target, SC_DEVOTION, INVALID_TIMER);- }+ }if (sc && sc->data[sC_AUTOSPELL] && rnd()0 < 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.../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.../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 Mastertsd = ((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; Edited December 13, 2013 by Vanquiser Quote Share this post Link to post Share on other sites
0 kyeme 71 Posted December 19, 2013 This was implemented in https://github.com/HerculesWS/Hercules/commit/36d0c789633da074f7e1a6add901278af513ad4b please update Topic: http://herc.ws/board/topic/421-suggestion-d/#entry23212 Quote Share this post Link to post Share on other sites
0 Vanquiser 3 Posted December 13, 2013 bump ???? Quote Share this post Link to post Share on other sites
0 Vanquiser 3 Posted December 13, 2013 pleaseeeeeeeeeeeee ?? anyone ??? .. i need this now Quote Share this post Link to post Share on other sites
0 pan 87 Posted December 14, 2013 I don't think that rA's source code is that different than Hercules', just some functions have changed in those files as far as I'm aware of. Instead of using a diff patcher you could do those changes manually. Regards. 1 Triedge reacted to this Quote Share this post Link to post Share on other sites
0 Vanquiser 3 Posted December 17, 2013 i got error when compiled Quote Share this post Link to post Share on other sites
0 pan 87 Posted December 18, 2013 I did it, it's building with a warning but it's nothing serious c: src/map/battle.c | 3 ++- src/map/pc.c | 1 + src/map/status.c | 25 +++++++++++++++++++------ 3 files changed, 22 insertions(+), 7 deletions(-)diff --git a/src/map/battle.c b/src/map/battle.cindex b814321..5221b34 100644--- a/src/map/battle.c+++ b/src/map/battle.c@@ -252,7 +252,8 @@ int battle_delay_damage(int64 tick, int amotion, struct block_list *src, struct nullpo_ret(target); sc = status->get_sc(target);-+ //devotion patch by Cyrix (rathena) ([email protected])+ //https://www.facebook.../ragdb.ragnarok if( sc && sc->data[SC_DEVOTION] && damage > 0 && skill_id != PA_PRESSURE && skill_id != CR_REFLECTSHIELD ) damage = 0; diff --git a/src/map/pc.c b/src/map/pc.cindex 9a0760d..48538e3 100644--- a/src/map/pc.c+++ b/src/map/pc.c@@ -6762,6 +6762,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { for(j = 0; j < 5; j++) if (sd->devotion[j]){ struct map_session_data *devsd = map->id2sd(sd->devotion[j]);+ if (devsd) status_change_end(&devsd->bl, SC_DEVOTION, INVALID_TIMER); sd->devotion[j] = 0;diff --git a/src/map/status.c b/src/map/status.cindex 6cfd799..b1af54e 100644--- a/src/map/status.c+++ b/src/map/status.c@@ -1161,13 +1161,26 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp, // if (!target->prev && !(flag&2)) // return 0; //Cannot damage a bl not on a map, except when "charging" hp/sp + //devotion patch by Cyrix (rathena) ([email protected]) sc = status->get_sc(target);- if( hp && battle_config.invincible_nodamage && src && sc && sc->data[SC_INVINCIBLE] && !sc->data[SC_INVINCIBLEOFF] )- hp = 1; - if( hp && !(flag&1) ) {+ if( hp && !(flag&1|8) ) { if( sc ) { struct status_change_entry *sce;+ if( (sce = sc->data[SC_DEVOTION]) && src && battle->get_current_skill(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, timer->gettick(), 0, 0, hp, 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);@@ -1178,9 +1191,9 @@ int status_damage(struct block_list *src,struct block_list *target,int64 in_hp, 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_DEEP_SLEEP, INVALID_TIMER);+ //status_change_end(target, SC_CAMOUFLAGE, INVALID_TIMER);+ //status_change_end(target, SC__INVISIBILITY, INVALID_TIMER);+ //status_change_end(target, SC_DEEP_SLEEP, INVALID_TIMER); if ((sce=sc->data[SC_ENDURE]) && !sce->val4 && !sc->data[SC_LKCONCENTRATION]) { //Endure count is only reduced by non-players on non-gvg maps. //val4 signals infinite endure. [Skotlex] Quote Share this post Link to post Share on other sites
Original Post : Here
Any One Can Convert This to Hercules ??
Thx in advance
Share this post
Link to post
Share on other sites