Okay. To mirror Endure to devoted party
status.c
look for this line:
case SC_IMPOSITIO:
case SC_KAAHI:
//These status changes always overwrite themselves even when a lower level is cast
status_change_end(bl, type, INVALID_TIMER);
break;
case SC_ENDURE:
if (sd && sd->special_state.no_walk_delay)
return 1;
break;
}
change it to
case SC_IMPOSITIO:
case SC_KAAHI:
//These status changes always overwrite themselves even when a lower level is cast
status_change_end(bl, type, INVALID_TIMER);
break;
case SC_ENDURE:
if (sd) {
struct map_session_data *tsd;
int i;
for (i = 0; i < MAX_DEVOTION; i++) { // See if there are devoted characters, and pass the status to them. [Skotlex]
if (sd->devotion[i] && (tsd = map_id2sd(sd->devotion[i])))
status_change_start(src,&tsd->bl,type,10000,val1,val2,val3,val4,tick,SCSTART_NOAVOID);
}
}
if (sd && sd->special_state.no_walk_delay)
return 1;
break;
}
For the reflect shield
status.c
look for this line:
case SC_PROVIDENCE:
val2 = val1*5; // Race/Ele resist
break;
case SC_REFLECTSHIELD:
val2 = 10+val1*3; // %Dmg reflected
// val4 used to mark if reflect shield is an inheritance bonus from Devotion
if( !(flag&SCSTART_NOAVOID) && (bl->type&(BL_PC|BL_MER)) ) {
struct map_session_data *tsd;
if( sd ) {
int i;
for( i = 0; i < MAX_DEVOTION; i++ ) {
if( sd->devotion[i] && (tsd = map_id2sd(sd->devotion[i])) )
status_change_start(src,&tsd->bl, type, 10000, val1, val2, 0, 1, tick, SCSTART_NOAVOID|SCSTART_NOICON);
}
}
else if( bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag && (tsd = ((TBL_MER*)bl)->master) )
status_change_start(src,&tsd->bl, type, 10000, val1, val2, 0, 1, tick, SCSTART_NOAVOID|SCSTART_NOICON);
}
change it to
case SC_PROVIDENCE:
val2 = val1*5; // Race/Ele resist
break;
case SC_REFLECTSHIELD:
val2 = 10+val1*3; // %Dmg reflected
// val4 used to mark if reflect shield is an inheritance bonus from Devotion
if( !(flag&SCSTART_NOAVOID) && (bl->type&(BL_PC|BL_MER)) ) {
struct map_session_data *tsd;
if( sd ) {
int i;
for( i = 0; i < MAX_DEVOTION; i++ ) {
if( sd->devotion[i] && (tsd = map_id2sd(sd->devotion[i])) )
status_change_start(src,&tsd->bl, type, 10000, val1, val2, 0, 1, tick, SCSTART_NOAVOID);
}
}
else if( bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag && (tsd = ((TBL_MER*)bl)->master) )
status_change_start(src,&tsd->bl, type, 10000, val1, val2, 0, 1, tick, SCSTART_NOAVOID|SCSTART_NOICON);
}
break;
To be honest im not sure about to reflect shield. I might delete some function. But it works upon testing it. Nevermind. I edit it. ?
Limitations i found:
The Devo caster should recast (Endure & Reflect Shield) buffs to appear the state icons to devoted party member.
P.S
I wonder why recasting is needed.