diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-12-06 17:28:19 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-12-06 17:28:19 +0300 |
commit | 60497e4a95836f3a6989d1cac940fd962224172c (patch) | |
tree | 67cb2529c39c8a8ad2d062b8a1092fc70ba60b09 /src/map/map.c | |
parent | cea55140cc2b5d1012813f8abc028ba04bd625c6 (diff) | |
parent | d7d6e7214cc1af22dab0b28fdde218ea7d37f05f (diff) | |
download | hercules-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.c | 34 |
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; |