Hey, I have no idea how to compile this, but in line 2648 of character.cpp, you do: ovr_type = OVER_PICTURE;
So your overlay will be of that type. In draw.cpp, in line 2215, you define the function draw_screen_overlay.
In this function, you will threat differently the overlay types OVER_COMPLETE and OVER_TEXTMSG, and you will draw they only later.
You can either set the ovr_type in character.cpp of the Sierra portrait to OVER_TEXTMSG or in draw.cpp, threat OVER_PICTURE the same adding:
// draw overlays, except text boxes
for (gg=0;gg<numscreenover;gg++) {
// complete overlay draw in non-transparent mode
if (screenover[gg].type == OVER_COMPLETE)
add_thing_to_draw(screenover[gg].bmp, screenover[gg].x, screenover[gg].y, TRANS_OPAQUE, false);
else if (screenover[gg].type != OVER_TEXTMSG && screenover[gg].type != OVER_PICTURE) {
int tdxp, tdyp;
get_overlay_position(gg, &tdxp, &tdyp);
add_thing_to_draw(screenover[gg].bmp, tdxp, tdyp, 0, screenover[gg].hasAlphaChannel);
}
}
And then the end of the function doing
// draw text boxes (so that they appear over GUIs)
for (gg=0;gg<numscreenover;gg++)
{
if (screenover[gg].type == OVER_TEXTMSG || screenover[gg].type == OVER_PICTURE )
{
int tdxp, tdyp;
get_overlay_position(gg, &tdxp, &tdyp);
add_thing_to_draw(screenover[gg].bmp, tdxp, tdyp, 0, false);
}
}
EDIT: Actually, I think doing that will maybe screw portrait alpha transparency?