summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-03-06 02:55:41 +0300
committerAndrei Karas <akaras@inbox.ru>2016-03-06 02:55:41 +0300
commit2b019f52da91cb37c00dfa34be6dd3e99e459d47 (patch)
tree566694f2c0951e200cbba175836bc24204e335f0
parent3c6d3063170bb51c27bdb9dccc566e16027eb15f (diff)
downloadmv-2b019f52da91cb37c00dfa34be6dd3e99e459d47.tar.gz
mv-2b019f52da91cb37c00dfa34be6dd3e99e459d47.tar.bz2
mv-2b019f52da91cb37c00dfa34be6dd3e99e459d47.tar.xz
mv-2b019f52da91cb37c00dfa34be6dd3e99e459d47.zip
Add support for two new equipment slots in hercules.
-rw-r--r--src/enums/equipslot.h2
-rw-r--r--src/net/ea/eaprotocol.h50
-rw-r--r--src/net/eathena/beinghandler.cpp2
-rw-r--r--src/net/eathena/beingrecv.cpp10
-rw-r--r--src/net/eathena/inventoryhandler.cpp4
-rw-r--r--src/net/eathena/sprite.h2
6 files changed, 45 insertions, 25 deletions
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
};