maybe try with this
diff --git a/src/map/map.hpp b/src/map/map.hpp
index 98bdc69ec0..b6c8d291fe 100644
--- a/src/map/map.hpp
+++ b/src/map/map.hpp
@@ -581,6 +581,7 @@ enum e_mapflag : int16 {
MF_NOPENALTY,
MF_NOZENYPENALTY,
MF_PVP,
+ MF_MAPMVP,
MF_PVP_NOPARTY,
MF_PVP_NOGUILD,
MF_GVG,
diff --git a/src/map/mob.cpp b/src/map/mob.cpp
index 16edfb7a6b..69696f2efc 100644
--- a/src/map/mob.cpp
+++ b/src/map/mob.cpp
@@ -1035,6 +1035,14 @@ TIMER_FUNC(mob_delayspawn){
md->spawn_timer = INVALID_TIMER;
mob_spawn(md);
}
+ /* [cook1e]
+ Spawn MVP and enable MF_PVP and MF_MAPMVP
+ MF_MAPMVP - Disable going to savepoint once you die 2 times in a PVP map.
+ */
+ if(md->state.boss) {
+ map_setmapflag(bl->m, MF_PVP, true);
+ map_setmapflag(bl->m, MF_MAPMVP, true);
+ map_setmapflag(bl->m, MF_NOSAVE, true);
+ }
return 0;
}
@@ -1115,6 +1123,15 @@ int mob_spawn (struct mob_data *md)
md->bl.m = md->spawn->m;
md->bl.x = md->spawn->x;
md->bl.y = md->spawn->y;
+
+ /* [cook1e]
+ Spawn MVP and enable MF_PVP and MF_MAPMVP
+ MF_MAPMVP - Disable going to savepoint once you die 2 times in a PVP map.
+ */
+ if(md->spawn->state.boss) {
+ map_setmapflag(md->bl.m, MF_PVP, true);
+ map_setmapflag(md->bl.m, MF_MAPMVP, true);
+ map_setmapflag(md->bl.m, MF_NOSAVE, true);
+ }
if( (md->bl.x == 0 && md->bl.y == 0) || md->spawn->xs || md->spawn->ys )
{ //Monster can be spawned on an area.
@@ -3126,6 +3143,15 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
// MvP tomb [GreenBox]
if (battle_config.mvp_tomb_enabled && md->spawn->state.boss && map_getmapflag(md->bl.m, MF_NOTOMB) != 1)
mvptomb_create(md, mvp_sd ? mvp_sd->status.name : NULL, time(NULL));
+
+ /* [cook1e]
+ Dead MVP disable MF_PVP and MF_MAPMVP
+ MF_MAPMVP - Disable going to savepoint once you die 2 times in a PVP map.
+ */
+ if(md->spawn->state.boss) {
+ map_setmapflag(md->bl.m, MF_PVP, false);
+ map_setmapflag(md->bl.m, MF_MAPMVP, false);
+ map_setmapflag(md->bl.m, MF_NOSAVE, false);
+ }
if( !rebirth )
mob_setdelayspawn(md); //Set respawning.
diff --git a/src/map/pc.cpp b/src/map/pc.cpp
index 468f3d58b5..44948f8959 100755
--- a/src/map/pc.cpp
+++ b/src/map/pc.cpp
@@ -9412,7 +9412,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
ssd->pvp_point++;
ssd->pvp_won++;
}
- if( sd->pvp_point < 0 ) {
+ if( sd->pvp_point < 0 && !mapdata->flag[MF_MAPMVP] ) {
sd->respawn_tid = add_timer(tick+1000, pc_respawn_timer,sd->bl.id,0);
return 1|8;
}
diff --git a/src/map/script_constants.hpp b/src/map/script_constants.hpp
index 13e5ad06f5..24d4b6fcef 100644
--- a/src/map/script_constants.hpp
+++ b/src/map/script_constants.hpp
@@ -464,6 +464,7 @@
export_constant(MF_NOPENALTY);
export_constant(MF_NOZENYPENALTY);
export_constant(MF_PVP);
+ export_constant(MF_MAPMVP);
export_constant(MF_PVP_NOPARTY);
export_constant(MF_PVP_NOGUILD);
export_constant(MF_GVG);