void RespawnObject(string sResRef, int iType, location lLoc) {
CreateObject(iType, sResRef, lLoc);
}
void main()
{
object oBoss=GetObjectByTag("mindflayerboss");
SetPlotFlag(oBoss,FALSE);
effect eDam = EffectDamage(100);
DelayCommand(1.0,ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oBoss));

string sResRef = GetResRef(OBJECT_SELF);
int iType = GetObjectType(OBJECT_SELF);
// For creatures, save the location at spawn-time as a local location and
// use it instead. Otherwise, the creature will respawn where it died.
// No changes are required for placeables as they do not move (usually ;-)
location lLoc =GetLocation(OBJECT_SELF);
float fDelay = 1200.0;  // 20 minute delay; adjust as desired
AssignCommand(GetModule(), DelayCommand(fDelay, RespawnObject(sResRef, iType, lLoc)));
}