diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/chat.c | 2 | ||||
-rw-r--r-- | src/map/pc.c | 40 |
2 files changed, 15 insertions, 27 deletions
diff --git a/src/map/chat.c b/src/map/chat.c index a01356205..19f265b27 100644 --- a/src/map/chat.c +++ b/src/map/chat.c @@ -273,7 +273,7 @@ int chat_kickchat(struct map_session_data* sd, const char* kickusername) cd = (struct chat_data *)map_id2bl(sd->chatID); - if( !cd ) + if( cd==NULL || (struct block_list *)sd != cd->owner ) return -1; ARR_FIND( 0, cd->users, i, strncmp(cd->usersd[i]->status.name, kickusername, NAME_LENGTH) == 0 ); diff --git a/src/map/pc.c b/src/map/pc.c index 1a88acf02..b0d6cf5b2 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -6564,37 +6564,25 @@ int pc_checkitem(struct map_session_data *sd) if(sd->status.inventory[i].nameid==0) continue; - if(sd->status.inventory[i].equip & ~pc_equippoint(sd,i)) { + + if(!sd->status.inventory[i].equip) + continue; + + if (sd->status.inventory[i].equip&~pc_equippoint(sd,i)) { sd->status.inventory[i].equip=0; calc_flag = 1; + continue; } - //?備制限チェック - if(sd->status.inventory[i].equip && it) { - if (map[sd->bl.m].flag.pvp && it->flag.no_equip&1) - { //PVP check for forbiden items. optimized by [Lupus] - sd->status.inventory[i].equip=0; - calc_flag = 1; - } else - if (map_flag_gvg(sd->bl.m) && it->flag.no_equip&2) - { //GvG optimized by [Lupus] - sd->status.inventory[i].equip=0; - calc_flag = 1; - } else - if(map[sd->bl.m].flag.restricted && it->flag.no_equip&map[sd->bl.m].zone) - { // Restricted zone by [Komurka] - sd->status.inventory[i].equip=0; - calc_flag = 1; - } - if (!calc_flag) { //Check cards - int flag; - flag = (map[sd->bl.m].flag.restricted?map[sd->bl.m].zone:0) + if(it) { + //check for forbiden items. + int flag = + (map[sd->bl.m].flag.restricted?map[sd->bl.m].zone:0) | (map[sd->bl.m].flag.pvp?1:0) | (map_flag_gvg(sd->bl.m)?2:0); - if (flag && !pc_isAllowedCardOn(sd,it->slot,i,flag)) - { - sd->status.inventory[i].equip=0; - calc_flag = 1; - } + if (flag && (it->flag.no_equip&flag || !pc_isAllowedCardOn(sd,it->slot,i,flag))) + { + sd->status.inventory[i].equip=0; + calc_flag = 1; } } } |