diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-08-07 18:42:59 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-08-07 18:42:59 +0000 |
commit | 05a5f1b6548be2871463e395686341d22d7c9372 (patch) | |
tree | 767e5932612f54bd64b8ff48706d931bf08e1e95 /src/map/pc.c | |
parent | d23055af211d86138480a277b7060d1d261d4f7f (diff) | |
download | hercules-05a5f1b6548be2871463e395686341d22d7c9372.tar.gz hercules-05a5f1b6548be2871463e395686341d22d7c9372.tar.bz2 hercules-05a5f1b6548be2871463e395686341d22d7c9372.tar.xz hercules-05a5f1b6548be2871463e395686341d22d7c9372.zip |
- Added in Lupus's suggestion of not making multi-slot headgears set all slot view-ids, which supposedly causes the client to re-draw the headgear multiple times on characters.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8168 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/pc.c')
-rw-r--r-- | src/map/pc.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/map/pc.c b/src/map/pc.c index a42911e56..92dc175cc 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -6251,7 +6251,7 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos) sd->status.inventory[n].equip=pos; - if(sd->status.inventory[n].equip & EQP_HAND_R) { + if(pos & EQP_HAND_R) { if(sd->inventory_data[n]) sd->weapontype1 = sd->inventory_data[n]->look; else @@ -6259,16 +6259,17 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos) pc_calcweapontype(sd); clif_changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon); } - if(sd->status.inventory[n].equip & EQP_HAND_L) { + if(pos & EQP_HAND_L) { if(sd->inventory_data[n]) { - if(sd->inventory_data[n]->type == 4) { + if(sd->inventory_data[n]->type == IT_WEAPON) { sd->status.shield = 0; if(sd->status.inventory[n].equip == EQP_HAND_L) sd->weapontype2 = sd->inventory_data[n]->look; else sd->weapontype2 = 0; } - else if(sd->inventory_data[n]->type == 5) { + else + if(sd->inventory_data[n]->type == IT_ARMOR) { sd->status.shield = sd->inventory_data[n]->look; sd->weapontype2 = 0; } @@ -6278,28 +6279,30 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos) pc_calcweapontype(sd); clif_changelook(&sd->bl,LOOK_SHIELD,sd->status.shield); } - if(sd->status.inventory[n].equip & EQP_HEAD_LOW) { - if(sd->inventory_data[n]) + //Added check to prevent sending the same look on multiple slots -> + //causes client to redraw item on top of itself. (suggested by Lupus) + if(pos & EQP_HEAD_LOW) { + if(sd->inventory_data[n] && !pos&(EQP_HEAD_TOP|EQP_HEAD_MID)) sd->status.head_bottom = sd->inventory_data[n]->look; else sd->status.head_bottom = 0; clif_changelook(&sd->bl,LOOK_HEAD_BOTTOM,sd->status.head_bottom); } - if(sd->status.inventory[n].equip & EQP_HEAD_TOP) { + if(pos & EQP_HEAD_TOP) { if(sd->inventory_data[n]) sd->status.head_top = sd->inventory_data[n]->look; else sd->status.head_top = 0; clif_changelook(&sd->bl,LOOK_HEAD_TOP,sd->status.head_top); } - if(sd->status.inventory[n].equip & EQP_HEAD_MID) { - if(sd->inventory_data[n]) + if(pos & EQP_HEAD_MID) { + if(sd->inventory_data[n] && !pos&EQP_HEAD_TOP) sd->status.head_mid = sd->inventory_data[n]->look; else sd->status.head_mid = 0; clif_changelook(&sd->bl,LOOK_HEAD_MID,sd->status.head_mid); } - if(sd->status.inventory[n].equip & EQP_SHOES) + if(pos & EQP_SHOES) clif_changelook(&sd->bl,LOOK_SHOES,0); pc_checkallowskill(sd); //Check if status changes should be halted. |