summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCairoLee <cairoliyu@gmail.com>2013-06-25 10:58:04 +0800
committerCairoLee <cairoliyu@gmail.com>2013-06-25 10:58:04 +0800
commitee23711201ddbcd9d92712e8d2b9c1e3c05e7194 (patch)
tree1f47f5d5c214f61834fa7100947f4f7cbf1a50f9
parent5b40d0c2937c2fe4f8e133271d05602543d86277 (diff)
downloadhercules-ee23711201ddbcd9d92712e8d2b9c1e3c05e7194.tar.gz
hercules-ee23711201ddbcd9d92712e8d2b9c1e3c05e7194.tar.bz2
hercules-ee23711201ddbcd9d92712e8d2b9c1e3c05e7194.tar.xz
hercules-ee23711201ddbcd9d92712e8d2b9c1e3c05e7194.zip
Implemented notomb Mapflag
-rw-r--r--npc/mapflag/notomb.txt17
-rw-r--r--npc/scripts_mapflags.conf3
-rw-r--r--src/map/atcommand.c4
-rw-r--r--src/map/map.h1
-rw-r--r--src/map/mob.c2
-rw-r--r--src/map/npc.c2
-rw-r--r--src/map/script.c6
7 files changed, 31 insertions, 4 deletions
diff --git a/npc/mapflag/notomb.txt b/npc/mapflag/notomb.txt
new file mode 100644
index 000000000..282fddb65
--- /dev/null
+++ b/npc/mapflag/notomb.txt
@@ -0,0 +1,17 @@
+//===== Hercules Script ======================================
+//= Mapflag: Disable MVP Tomb.
+//===== By: ==================================================
+//= Hercules Dev Team
+//===== Current Version: =====================================
+//= 1.0
+//===== Description: =========================================
+//= Disables MVP tomb on some maps.
+//===== Additional Comments: =================================
+//= 1.0 - Added Bossnia maps. [CairoLee]
+//============================================================
+
+// Bossnia =====
+bossnia_01 mapflag notomb
+bossnia_02 mapflag notomb
+bossnia_03 mapflag notomb
+bossnia_04 mapflag notomb
diff --git a/npc/scripts_mapflags.conf b/npc/scripts_mapflags.conf
index c0d2787f8..2fe92eb0a 100644
--- a/npc/scripts_mapflags.conf
+++ b/npc/scripts_mapflags.conf
@@ -28,4 +28,5 @@ npc: npc/mapflag/novending.txt
npc: npc/mapflag/town.txt
npc: npc/mapflag/reset.txt
npc: npc/mapflag/skillmodifier.txt
-npc: npc/mapflag/skillduration.txt \ No newline at end of file
+npc: npc/mapflag/skillduration.txt
+npc: npc/mapflag/notomb.txt \ No newline at end of file
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index a1bc52924..b199a63dc 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -7568,6 +7568,7 @@ return true;\
checkflag(nojobexp); checkflag(nomobloot); checkflag(nomvploot); checkflag(nightenabled);
checkflag(nodrop); checkflag(novending); checkflag(loadevent);
checkflag(nochat); checkflag(partylock); checkflag(guildlock); checkflag(src4instance);
+ checkflag(notomb);
clif->message(sd->fd," ");
clif->message(sd->fd,msg_txt(1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
clif->message(sd->fd,msg_txt(1313)); // Type "@mapflag available" to list the available mapflags.
@@ -7604,6 +7605,7 @@ return true;\
setflag(nojobexp); setflag(nomobloot); setflag(nomvploot); setflag(nightenabled);
setflag(nodrop); setflag(novending); setflag(loadevent);
setflag(nochat); setflag(partylock); setflag(guildlock); setflag(src4instance);
+ setflag(notomb);
clif->message(sd->fd,msg_txt(1314)); // Invalid flag name or flag.
clif->message(sd->fd,msg_txt(1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
@@ -7615,7 +7617,7 @@ return true;\
clif->message(sd->fd,"nozenypenalty, notrade, noskill, nowarp, nowarpto, noicewall, snow, clouds, clouds2,");
clif->message(sd->fd,"fog, fireworks, sakura, leaves, nobaseexp, nojobexp, nomobloot,");
clif->message(sd->fd,"nomvploot, nightenabled, nodrop, novending, loadevent, nochat, partylock,");
- clif->message(sd->fd,"guildlock, src4instance");
+ clif->message(sd->fd,"guildlock, src4instance, notomb");
#undef checkflag
#undef setflag
diff --git a/src/map/map.h b/src/map/map.h
index 1b15b477d..3b53b71cc 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -605,6 +605,7 @@ struct map_data {
unsigned reset :1; // [Daegaladh]
unsigned chsysnolocalaj : 1;
unsigned noknockback : 1;
+ unsigned notomb : 1;
} flag;
struct point save;
struct npc_data *npc[MAX_NPC_PER_MAP];
diff --git a/src/map/mob.c b/src/map/mob.c
index 3f282bf7e..93ef81811 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -2629,7 +2629,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
return 5; // Note: Actually, it's 4. Oh well...
// MvP tomb [GreenBox]
- if (battle_config.mvp_tomb_enabled && md->spawn->state.boss)
+ if (battle_config.mvp_tomb_enabled && md->spawn->state.boss && map[md->bl.m].flag.notomb != 1)
mvptomb_create(md, mvp_sd ? mvp_sd->status.name : NULL, time(NULL));
if( !rebirth ) {
diff --git a/src/map/npc.c b/src/map/npc.c
index 8381ac409..94ad1667c 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -3372,6 +3372,8 @@ const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, const char
map[m].flag.guildlock=state;
else if (!strcmpi(w3,"reset"))
map[m].flag.reset=state;
+ else if (!strcmpi(w3,"notomb"))
+ map[m].flag.notomb=state;
else if (!strcmpi(w3,"adjust_unit_duration")) {
int skill_id, k;
char skill_name[MAP_ZONE_MAPFLAG_LENGTH], modifier[MAP_ZONE_MAPFLAG_LENGTH];
diff --git a/src/map/script.c b/src/map/script.c
index bbae42c6f..fdebcb452 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -238,7 +238,8 @@ enum {
MF_MONSTER_NOTELEPORT,
MF_PVP_NOCALCRANK, //50
MF_BATTLEGROUND,
- MF_RESET
+ MF_RESET,
+ MF_NOTOMB
};
const char* script_op2name(int op)
@@ -10344,6 +10345,7 @@ BUILDIN(getmapflag)
case MF_PVP_NOCALCRANK: script_pushint(st,map[m].flag.pvp_nocalcrank); break;
case MF_BATTLEGROUND: script_pushint(st,map[m].flag.battleground); break;
case MF_RESET: script_pushint(st,map[m].flag.reset); break;
+ case MF_NOTOMB: script_pushint(st,map[m].flag.notomb); break;
}
}
@@ -10460,6 +10462,7 @@ BUILDIN(setmapflag)
case MF_PVP_NOCALCRANK: map[m].flag.pvp_nocalcrank = 1; break;
case MF_BATTLEGROUND: map[m].flag.battleground = (val <= 0 || val > 2) ? 1 : val; break;
case MF_RESET: map[m].flag.reset = 1; break;
+ case MF_NOTOMB: map[m].flag.notomb = 1; break;
}
}
@@ -10548,6 +10551,7 @@ BUILDIN(removemapflag)
case MF_PVP_NOCALCRANK: map[m].flag.pvp_nocalcrank = 0; break;
case MF_BATTLEGROUND: map[m].flag.battleground = 0; break;
case MF_RESET: map[m].flag.reset = 0; break;
+ case MF_NOTOMB: map[m].flag.notomb = 0; break;
}
}