diff options
author | shennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-07-18 20:19:16 +0000 |
---|---|---|
committer | shennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-07-18 20:19:16 +0000 |
commit | 4328a8e9beba3b67008c3cae6ac91acf7bfa36c6 (patch) | |
tree | 391fb88e294826a3231bb50d453b9187494c9310 | |
parent | d049046dc121866bc7c2d62bf5773adf05335870 (diff) | |
download | hercules-4328a8e9beba3b67008c3cae6ac91acf7bfa36c6.tar.gz hercules-4328a8e9beba3b67008c3cae6ac91acf7bfa36c6.tar.bz2 hercules-4328a8e9beba3b67008c3cae6ac91acf7bfa36c6.tar.xz hercules-4328a8e9beba3b67008c3cae6ac91acf7bfa36c6.zip |
Follow up r16445 performance improvement.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16446 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r-- | src/map/battle.c | 43 |
1 files changed, 13 insertions, 30 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index 561f9ef53..79e7a00b0 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4801,38 +4801,21 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f if( (s_bl = battle_get_master(src)) == NULL ) s_bl = src; - // Disable PVM for specific groups. - if (src->type&BL_PC && target->type&BL_MOB && src->id && map_id2sd(src->id) != NULL) - { // Source => PC, Target => MOB - if (pc_has_permission(map_id2sd(src->id), PC_PERM_DISABLE_PVM)) - return 0; - } - else if (src->type&BL_HOM && target->type&BL_MOB) - { // Source => HOM, Target => MOB; check the master BL id of homun - struct homun_data *hd = (TBL_HOM*)src; - if (hd != NULL && hd->master->bl.id) - { - if (pc_has_permission(map_id2sd(hd->master->bl.id), PC_PERM_DISABLE_PVM)) - return 0; - } - } - - // Disable PVP - if (src->type&BL_PC && target->type&(BL_PC|BL_HOM) && src->id && map_id2sd(src->id) != NULL) - { // Source => PC, Target => PC - if (pc_has_permission(map_id2sd(src->id), PC_PERM_DISABLE_PVP)) - return 0; - } - else if (src->type&BL_HOM && target->type&(BL_HOM|BL_PC)) - { // Source => HOM, Target => MOB|PC; check the master BL id of homun - struct homun_data *hd = (TBL_HOM*)src; - if (hd != NULL && hd->master->bl.id) - { - if (pc_has_permission(map_id2sd(hd->master->bl.id), PC_PERM_DISABLE_PVP)) - return 0; + if ( s_bl->type == BL_PC ) { + switch( t_bl->type ) { + case BL_MOB: // Source => PC, Target => MOB + if ( pc_has_permission((TBL_PC*)s_bl, PC_PERM_DISABLE_PVM) ) + return 0; + break; + case BL_PC: + if (pc_has_permission((TBL_PC*)s_bl, PC_PERM_DISABLE_PVP)) + return 0; + break; + default:/* anything else goes */ + break; } } - + switch( target->type ) { // Checks on actual target case BL_PC: { struct status_change* sc = status_get_sc(src); |