Jump to content
  • 0
Sign in to follow this  
xHyaweh

Devotion Bug on eAmod

Question

Pa  tulong naman ako sa bug nang Devotion.. Eto po senario about sa devo Example ko Pag Devo nung pally Ung Sniper tapos Max HP nung Sniper is 10k Then ang pally is 60k Pag ka asura ko sa sniper is 999k so dapat patay ang pally ang nang yayare Bawas lang sa pally is kung ano buhay nung devo nya un lang ang bawas


 

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Hello :) mas mabuti pang mag submit ka ng report sa eamod ng matulungan ka nila pero alam ko tong bug na to baka eto pwede mo magamit save mo muna yung src mo :) incase.
 

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 )
+//
+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()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);
+//
+ 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;
+//
+ 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; 

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.