The reason is because the item delay database is for usable items rather than etc items.
You'll have to hard code a delay for the item. Adjust the the clif_parse_AutoRevive() function to be like this:
void clif_parse_AutoRevive(int fd, struct map_session_data *sd)
{
int item_position = pc_search_inventory(sd, 7621);
if (item_position < 0)
return;
if (sd->sc.data[sC_HELLPOWER]) //Cannot res while under the effect of SC_HELLPOWER.
return;
if (!status_revive(&sd->bl, 100, 100))
return;
if (DIFF_TICK(gettick(), pc_getglobalreg(sd,"TOKEN_OF_SIEGFRIED")) < 3600000)
return;
pc_setglobalreg(sd,"TOKEN_OF_SIEGFRIED",gettick());
clif_skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1);
pc_delitem(sd, item_position, 1, 0, 1);
}
That stores a normal variable to each player who uses the item. (Same as using "set TOKEN_OF_SIEGFRIED,<current time in milliseconds>;" if you used it as a NPC).