Try this one.
src/map/status.c
Under:
static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type)
Find This:
//Bonus by SC
if (sc) {
if(sc->data[SC_INCMHP])
bonus += sc->data[SC_INCMHP]->val1;
if(sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 2)
bonus += 500;
if(sc->data[SC_LERADSDEW])
bonus += sc->data[SC_LERADSDEW]->val3;
if(sc->data[SC_INSPIRATION])
bonus += (600 * sc->data[SC_INSPIRATION]->val1);
if(sc->data[SC_SOLID_SKIN_OPTION])
bonus += 2000;
if(sc->data[SC_MTF_MHP])
bonus += sc->data[SC_MTF_MHP]->val1;
if(sc->data[SC_MARIONETTE])
bonus -= 1000;
Add these lines:
if(sc->data[SC_SPIRIT] && (sc->data[SC_SPIRIT]->val2 == SL_WIZARD || sc->data[SC_SPIRIT]->val2 == SL_SAGE))
bonus += ((TBL_PC*)bl)->status.max_hp * 2;
PS: Haven't tested it yet. Just see if it works.