From 2404bb2a08f98713d872743c33811ee7e4c69c49 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 22 Nov 2014 21:21:28 +0300 Subject: map: show most slots on item equip/unequip. --- src/map/pc.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) (limited to 'src/map/pc.c') 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 +} -- cgit v1.2.3-60-g2f50