summaryrefslogtreecommitdiff
path: root/src/map/map.c
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-12-06 17:28:19 +0300
committerAndrei Karas <akaras@inbox.ru>2015-12-06 17:28:19 +0300
commit60497e4a95836f3a6989d1cac940fd962224172c (patch)
tree67cb2529c39c8a8ad2d062b8a1092fc70ba60b09 /src/map/map.c
parentcea55140cc2b5d1012813f8abc028ba04bd625c6 (diff)
parentd7d6e7214cc1af22dab0b28fdde218ea7d37f05f (diff)
downloadhercules-60497e4a95836f3a6989d1cac940fd962224172c.tar.gz
hercules-60497e4a95836f3a6989d1cac940fd962224172c.tar.bz2
hercules-60497e4a95836f3a6989d1cac940fd962224172c.tar.xz
hercules-60497e4a95836f3a6989d1cac940fd962224172c.zip
Merge pull request #905 from HerculesWS/races-fix
Races fix
Diffstat (limited to 'src/map/map.c')
-rw-r--r--src/map/map.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/map/map.c b/src/map/map.c
index fff1593a4..e1bf5232a 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -2040,6 +2040,39 @@ struct mob_data * map_id2boss(int id)
return (struct mob_data*)idb_get(map->bossid_db,id);
}
+/**
+ * Returns the equivalent bitmask to the given race ID.
+ *
+ * @param race A race identifier (@see enum Race)
+ *
+ * @return The equivalent race bitmask.
+ */
+uint32 map_race_id2mask(int race)
+{
+ if (race >= RC_FORMLESS && race < RC_MAX)
+ return 1 << race;
+
+ if (race == RC_ALL)
+ return RCMASK_ALL;
+
+ if (race == RC_NONPLAYER)
+ return RCMASK_NONPLAYER;
+
+ if (race == RC_NONDEMIHUMAN)
+ return RCMASK_NONDEMIHUMAN;
+
+ if (race == RC_DEMIPLAYER)
+ return RCMASK_DEMIPLAYER;
+
+ if (race == RC_NONDEMIPLAYER)
+ return RCMASK_NONDEMIPLAYER;
+
+ ShowWarning("map_race_id2mask: Invalid race: %d\n", race);
+ Assert_report((race >= RC_FORMLESS && race < RC_NONDEMIPLAYER) || race == RC_ALL);
+
+ return RCMASK_NONE;
+}
+
/// Applies func to all the players in the db.
/// Stops iterating if func returns -1.
void map_vforeachpc(int (*func)(struct map_session_data* sd, va_list args), va_list args) {
@@ -6127,6 +6160,7 @@ void map_defaults(void) {
map->nick2sd = map_nick2sd;
map->getmob_boss = map_getmob_boss;
map->id2boss = map_id2boss;
+ map->race_id2mask = map_race_id2mask;
// reload config file looking only for npcs
map->reloadnpc = map_reloadnpc;