From 2b019f52da91cb37c00dfa34be6dd3e99e459d47 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 6 Mar 2016 02:55:41 +0300 Subject: Add support for two new equipment slots in hercules. --- src/enums/equipslot.h | 2 ++ src/net/ea/eaprotocol.h | 50 +++++++++++++++++++----------------- src/net/eathena/beinghandler.cpp | 2 ++ src/net/eathena/beingrecv.cpp | 10 ++++++++ src/net/eathena/inventoryhandler.cpp | 4 ++- src/net/eathena/sprite.h | 2 ++ 6 files changed, 45 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/enums/equipslot.h b/src/enums/equipslot.h index 52c8e2a4a..7f4b151d7 100644 --- a/src/enums/equipslot.h +++ b/src/enums/equipslot.h @@ -51,6 +51,8 @@ namespace EquipSlot SHADOW_SHOES_SLOT = 19, SHADOW_ACCESSORY1_SLOT = 20, SHADOW_ACCESSORY2_SLOT = 21, + EVOL_SLOT3 = 22, + EVOL_SLOT4 = 23, VECTOREND }; } // namespace EquipSlot diff --git a/src/net/ea/eaprotocol.h b/src/net/ea/eaprotocol.h index bf4262204..3f71cf7e4 100644 --- a/src/net/ea/eaprotocol.h +++ b/src/net/ea/eaprotocol.h @@ -75,30 +75,32 @@ namespace Ea enum { - EA_SPRITE_BASE = 0, - EA_SPRITE_HAIR, - EA_SPRITE_WEAPON, - EA_SPRITE_HEAD_BOTTOM, - EA_SPRITE_HEAD_TOP, - EA_SPRITE_HEAD_MID, - EA_SPRITE_HAIR_COLOR, - EA_SPRITE_CLOTHES_COLOR, - EA_SPRITE_SHIELD, - EA_SPRITE_SHOES, - EA_SPRITE_BODY, - EA_SPRITE_FLOOR, - EA_SPRITE_ROBE, - EA_SPRITE_EVOL2, - EA_SPRITE_EVOL3, - EA_SPRITE_EVOL4, - EA_SPRITE_EVOL5, - EA_SPRITE_EVOL6, - EA_SPRITE_EVOL7, - EA_SPRITE_EVOL8, - EA_SPRITE_EVOL9, - EA_SPRITE_EVOL10, - EA_SPRITE_EVOL11, - EA_SPRITE_EVOL12, + EA_SPRITE_BASE = 0, + EA_SPRITE_HAIR = 1, + EA_SPRITE_WEAPON = 2, + EA_SPRITE_HEAD_BOTTOM = 3, + EA_SPRITE_HEAD_TOP = 4, + EA_SPRITE_HEAD_MID = 5, + EA_SPRITE_HAIR_COLOR = 6, + EA_SPRITE_CLOTHES_COLOR = 7, + EA_SPRITE_SHIELD = 8, + EA_SPRITE_SHOES = 9, + EA_SPRITE_BODY = 10, + EA_SPRITE_FLOOR = 11, + EA_SPRITE_ROBE = 12, + EA_SPRITE_EVOL2 = 13, + EA_SPRITE_EVOL3 = 14, + EA_SPRITE_EVOL4 = 15, + EA_SPRITE_EVOL5 = 16, + EA_SPRITE_EVOL6 = 17, + EA_SPRITE_EVOL7 = 18, + EA_SPRITE_EVOL8 = 19, + EA_SPRITE_EVOL9 = 20, + EA_SPRITE_EVOL10 = 21, + EA_SPRITE_EVOL11 = 22, + EA_SPRITE_EVOL12 = 23, + EA_SPRITE_EVOL13 = 24, + EA_SPRITE_EVOL14 = 25, EA_SPRITE_VECTOREND }; diff --git a/src/net/eathena/beinghandler.cpp b/src/net/eathena/beinghandler.cpp index 9e29f850f..39a4460b6 100644 --- a/src/net/eathena/beinghandler.cpp +++ b/src/net/eathena/beinghandler.cpp @@ -61,6 +61,8 @@ void BeingHandler::undress(Being *const being) const being->setSprite(SPRITE_EVOL2, 0); being->setSprite(SPRITE_EVOL3, 0); being->setSprite(SPRITE_EVOL4, 0); + being->setSprite(SPRITE_EVOL5, 0); + being->setSprite(SPRITE_EVOL6, 0); being->setSprite(SPRITE_HAIR, 0); being->setSprite(SPRITE_SHOES, 0); // being->setSprite(SPRITE_BODY, 0, "", true); diff --git a/src/net/eathena/beingrecv.cpp b/src/net/eathena/beingrecv.cpp index d35b66168..2852438dc 100644 --- a/src/net/eathena/beingrecv.cpp +++ b/src/net/eathena/beingrecv.cpp @@ -244,6 +244,16 @@ void BeingRecv::processBeingChangeLookContinue(const Net::MessageIn &msg, if (localPlayer) localPlayer->imitateOutfit(dstBeing, SPRITE_EVOL4); break; + case 18: + dstBeing->setSprite(SPRITE_EVOL5, id, color, itemColor); + if (localPlayer) + localPlayer->imitateOutfit(dstBeing, SPRITE_EVOL5); + break; + case 19: + dstBeing->setSprite(SPRITE_EVOL6, id, color, itemColor); + if (localPlayer) + localPlayer->imitateOutfit(dstBeing, SPRITE_EVOL6); + break; default: UNIMPLIMENTEDPACKET; break; diff --git a/src/net/eathena/inventoryhandler.cpp b/src/net/eathena/inventoryhandler.cpp index ce87e5660..90608764f 100644 --- a/src/net/eathena/inventoryhandler.cpp +++ b/src/net/eathena/inventoryhandler.cpp @@ -56,6 +56,8 @@ const EquipSlot::Type EQUIP_CONVERT[] = EquipSlot::PROJECTILE_SLOT, // 13 SPRITE_EVOL2 EquipSlot::COSTUME_ROBE_SLOT, // 14 SPRITE_EVOL3 EquipSlot::RING1_SLOT, // 15 SPRITE_EVOL4 + EquipSlot::EVOL_SLOT3, // 16 SPRITE_EVOL5 + EquipSlot::EVOL_SLOT4, // 17 SPRITE_EVOL6 }; namespace EAthena @@ -207,7 +209,7 @@ void InventoryHandler::selectEgg(const Item *const item) const int InventoryHandler::convertFromServerSlot(const int serverSlot) const { - if (serverSlot < 0 || serverSlot > 15) + if (serverSlot < 0 || serverSlot > 17) return 0; return CAST_S32(EQUIP_CONVERT[serverSlot]); diff --git a/src/net/eathena/sprite.h b/src/net/eathena/sprite.h index 0ae286a00..7ad679197 100644 --- a/src/net/eathena/sprite.h +++ b/src/net/eathena/sprite.h @@ -41,6 +41,8 @@ enum SPRITE_EVOL2 = 13, // in new versions also BODY2 SPRITE_EVOL3 = 14, SPRITE_EVOL4 = 15, + SPRITE_EVOL5 = 16, + SPRITE_EVOL6 = 17, SPRITE_VECTOREND }; -- cgit v1.2.3-70-g09d2