Try this.
1. go to src/map/map.hpp and find MF_MAX
above add this MF_NOTOKEN,
2. go to src/map/script_constant.hpp and find export_constant(MF_SKILL_DURATION);
below add this export_constant(MF_NOTOKEN);
3. go to src/map/pc.cpp and find
bool pc_revive_item(struct map_session_data *sd) {
nullpo_retr(false, sd);
if (!pc_isdead(sd) || sd->respawn_tid != INVALID_TIMER)
return false;
if (sd->sc.data[SC_HELLPOWER]) // Cannot resurrect while under the effect of SC_HELLPOWER.
return false;
int16 item_position = itemdb_group_item_exists_pc(sd, IG_TOKEN_OF_SIEGFRIED);
uint8 hp = 100, sp = 100;
if (item_position < 0) {
if (sd->sc.data[SC_LIGHT_OF_REGENE]) {
hp = sd->sc.data[SC_LIGHT_OF_REGENE]->val2;
sp = 0;
}
else
return false;
}
if (!status_revive(&sd->bl, hp, sp))
return false;
if (item_position < 0)
status_change_end(&sd->bl, SC_LIGHT_OF_REGENE, INVALID_TIMER);
else
pc_delitem(sd, item_position, 1, 0, 1, LOG_TYPE_CONSUME);
clif_skill_nodamage(&sd->bl, &sd->bl, ALL_RESURRECTION, 4, 1);
return true;
}
and change to
bool pc_revive_item(struct map_session_data *sd) {
nullpo_retr(false, sd);
int16 m = 0;
struct map_data *mapdata = map_getmapdata(m);
if (!pc_isdead(sd) || sd->respawn_tid != INVALID_TIMER)
return false;
if (sd->sc.data[SC_HELLPOWER]) // Cannot resurrect while under the effect of SC_HELLPOWER.
return false;
if(map_getmapflag(sd->bl.m, MF_NOTOKEN))
return false;
int16 item_position = itemdb_group_item_exists_pc(sd, IG_TOKEN_OF_SIEGFRIED);
uint8 hp = 100, sp = 100;
if (item_position < 0) {
if (sd->sc.data[SC_LIGHT_OF_REGENE]) {
hp = sd->sc.data[SC_LIGHT_OF_REGENE]->val2;
sp = 0;
}
else
return false;
}
if (!status_revive(&sd->bl, hp, sp))
return false;
if (item_position < 0)
status_change_end(&sd->bl, SC_LIGHT_OF_REGENE, INVALID_TIMER);
else
pc_delitem(sd, item_position, 1, 0, 1, LOG_TYPE_CONSUME);
clif_skill_nodamage(&sd->bl, &sd->bl, ALL_RESURRECTION, 4, 1);
return true;
}
Not tested, let me know if it works.