summaryrefslogtreecommitdiff
path: root/src/map/pc.c
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-11-22 21:21:28 +0300
committerAndrei Karas <akaras@inbox.ru>2014-11-22 21:21:28 +0300
commit2404bb2a08f98713d872743c33811ee7e4c69c49 (patch)
tree00bf18689025d1527380d0d1f576f27de4016830 /src/map/pc.c
parent044f5e1d72333c0530f911c4982868199097d35b (diff)
downloadevol-hercules-2404bb2a08f98713d872743c33811ee7e4c69c49.tar.gz
evol-hercules-2404bb2a08f98713d872743c33811ee7e4c69c49.tar.bz2
evol-hercules-2404bb2a08f98713d872743c33811ee7e4c69c49.tar.xz
evol-hercules-2404bb2a08f98713d872743c33811ee7e4c69c49.zip
map: show most slots on item equip/unequip.
Diffstat (limited to 'src/map/pc.c')
-rw-r--r--src/map/pc.c76
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
+}