diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-11-22 21:21:28 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-11-22 21:21:28 +0300 |
commit | 2404bb2a08f98713d872743c33811ee7e4c69c49 (patch) | |
tree | 00bf18689025d1527380d0d1f576f27de4016830 /src/map/pc.c | |
parent | 044f5e1d72333c0530f911c4982868199097d35b (diff) | |
download | plugin-2404bb2a08f98713d872743c33811ee7e4c69c49.tar.gz plugin-2404bb2a08f98713d872743c33811ee7e4c69c49.tar.bz2 plugin-2404bb2a08f98713d872743c33811ee7e4c69c49.tar.xz plugin-2404bb2a08f98713d872743c33811ee7e4c69c49.zip |
map: show most slots on item equip/unequip.
Diffstat (limited to 'src/map/pc.c')
-rw-r--r-- | src/map/pc.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/map/pc.c b/src/map/pc.c index b07f187..e958751 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -10,6 +10,8 @@ #include "../../../common/mmo.h" #include "../../../common/socket.h" #include "../../../common/strlib.h" +#include "../../../map/itemdb.h" +#include "../../../map/pc.h" #include "map/pc.h" #include "map/session.h" @@ -43,3 +45,77 @@ int epc_setregistry(struct map_session_data *sd, int64 *reg, int *val) return 0; } + +#define equipPos(mask, field, lookf) \ + if (pos & mask) \ + { \ + hookStop(); \ + if (id) \ + sd->status.field = id->look; \ + else \ + sd->status.field = 0; \ + clif->changelook(&sd->bl, lookf, sd->status.field); \ + } + +#define equipPos2(mask, lookf) \ + if (pos & mask) \ + { \ + hookStop(); \ + if (id) \ + clif->changelook(&sd->bl, lookf, id->look); \ + else \ + clif->changelook(&sd->bl, lookf, 0); \ + } + +void epc_equipitem_pos(struct map_session_data *sd, struct item_data *id, int *posPtr) +{ + int pos = *posPtr; + + equipPos(EQP_HEAD_LOW, head_bottom, LOOK_HEAD_BOTTOM); + equipPos(EQP_HEAD_TOP, head_top, LOOK_HEAD_TOP); + equipPos(EQP_HEAD_MID, head_mid, LOOK_HEAD_MID); + equipPos(EQP_GARMENT, robe, LOOK_ROBE); + //skip EQP_ARMOR + equipPos2(EQP_SHOES, LOOK_SHOES); + equipPos2(EQP_COSTUME_HEAD_TOP, 13); + equipPos2(EQP_COSTUME_HEAD_MID, 14); + equipPos2(EQP_COSTUME_HEAD_LOW, 15); + equipPos2(EQP_COSTUME_GARMENT, 16); + //skipping SHADOW slots +} + +#undef equipPos +#undef equipPos2 + +#define unequipPos(mask, field, lookf) \ + if (pos & mask) \ + { \ + hookStop(); \ + sd->status.field = 0; \ + clif->changelook(&sd->bl, lookf, sd->status.field); \ + } + +#define unequipPos2(mask, lookf) \ + if (pos & mask) \ + { \ + hookStop(); \ + clif->changelook(&sd->bl, lookf, 0); \ + } + +void epc_unequipitem_pos(struct map_session_data *sd, int *nPtr, int *posPtr) +{ + int pos = *posPtr; + int n = *nPtr; + + unequipPos(EQP_HEAD_LOW, head_bottom, LOOK_HEAD_BOTTOM); + unequipPos(EQP_HEAD_TOP, head_top, LOOK_HEAD_TOP); + unequipPos(EQP_HEAD_MID, head_mid, LOOK_HEAD_MID); + unequipPos(EQP_GARMENT, robe, LOOK_ROBE); + //skip EQP_ARMOR + unequipPos2(EQP_SHOES, LOOK_SHOES); + unequipPos2(EQP_COSTUME_HEAD_TOP, 13); + unequipPos2(EQP_COSTUME_HEAD_MID, 14); + unequipPos2(EQP_COSTUME_HEAD_LOW, 15); + unequipPos2(EQP_COSTUME_GARMENT, 16); + //skipping SHADOW slots +} |