Index: scripts/globals/server.lua =================================================================== --- scripts/globals/server.lua (revision 1568) +++ scripts/globals/server.lua (working copy) @@ -178,7 +178,77 @@ --SET TITLE player:setTitle(NEW_ADVENTURER); + + --EQUIP START GEAR + switch(player:getRace()) : caseof + { + -- HUME MALE + [1] = function (x) + player:equipArmor(0x3157,5); + player:equipArmor(0x31D2,6); + player:equipArmor(0x3253,7); + player:equipArmor(0x32CD,8); + end, + -- HUME FEMALE + [2] = function (x) + player:equipArmor(0x3158,5); + player:equipArmor(0x31D8,6); + player:equipArmor(0x3254,7); + player:equipArmor(0x32D2,8); + end, + + -- ELVAAN MALE + [3] = function (x) + player:equipArmor(0x3159,5); + player:equipArmor(0x31D3,6); + player:equipArmor(0x3255,7); + player:equipArmor(0x32CE,8); + end, + + -- ELVAAN FEMALE + [4] = function (x) + player:equipArmor(0x315A,5); + player:equipArmor(0x31D7,6); + player:equipArmor(0x3259,7); + player:equipArmor(0x32D3,8); + end, + + -- TARU MALE + [5] = function (x) + player:equipArmor(0x315B,5); + player:equipArmor(0x31D4,6); + player:equipArmor(0x3256,7); + player:equipArmor(0x32CF,8); + end, + + -- TARU FEMALE + [6] = function (x) + player:equipArmor(0x315B,5); + player:equipArmor(0x31D4,6); + player:equipArmor(0x3256,7); + player:equipArmor(0x32CF,8); + end, + + -- MITHRA + [7] = function (x) + player:equipArmor(0x315C,5); + player:equipArmor(0x31D5,6); + player:equipArmor(0x3257,7); + player:equipArmor(0x32D0,8); + end, + + -- GALKA + [8] = function (x) + player:equipArmor(0x315D,5); + player:equipArmor(0x31D6,6); + player:equipArmor(0x3258,7); + player:equipArmor(0x32D1,8); + end, + + default = function (x) end, + } + end; Index: src/map/lua/lua_baseentity.cpp =================================================================== --- src/map/lua/lua_baseentity.cpp (revision 1568) +++ src/map/lua/lua_baseentity.cpp (working copy) @@ -566,6 +566,31 @@ //==========================================================// +inline int32 CLuaBaseEntity::equipArmor(lua_State *L) +{ + DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); + DSP_DEBUG_BREAK_IF(lua_isnil(L,1)) + + CCharEntity* PChar = (CCharEntity*)m_PBaseEntity; + + uint16 itemID = (uint16)lua_tointeger(L,1); + uint8 locationID = LOC_INVENTORY; + locationID = (locationID < MAX_CONTAINER_ID ? locationID : LOC_INVENTORY); + + uint8 slotID = PChar->getStorage(locationID)->SearchItem(itemID); + + uint8 equipSlotID = (uint8)lua_tointeger(L,2); + + if( !slotID == NULL && !equipSlotID == NULL ) + { + charutils::EquipItem((CCharEntity*)m_PBaseEntity, slotID, equipSlotID); + } + + return 0; +} + +//==========================================================// + inline int32 CLuaBaseEntity::getFreeSlotsCount(lua_State *L) { DSP_DEBUG_BREAK_IF(m_PBaseEntity == NULL); @@ -4197,6 +4222,7 @@ LUNAR_DECLARE_METHOD(CLuaBaseEntity,addRankPoints), LUNAR_DECLARE_METHOD(CLuaBaseEntity,addKeyItem), LUNAR_DECLARE_METHOD(CLuaBaseEntity,hasKeyItem), + LUNAR_DECLARE_METHOD(CLuaBaseEntity,equipArmor), LUNAR_DECLARE_METHOD(CLuaBaseEntity,seenKeyItem), LUNAR_DECLARE_METHOD(CLuaBaseEntity,unseenKeyItem), LUNAR_DECLARE_METHOD(CLuaBaseEntity,delKeyItem), Index: src/map/lua/lua_baseentity.h =================================================================== --- src/map/lua/lua_baseentity.h (revision 1568) +++ src/map/lua/lua_baseentity.h (working copy) @@ -93,6 +93,7 @@ int32 addItem(lua_State*); // Add item to Entity inventory (additem(itemNumber,quantity)) int32 hasItem(lua_State*); // Check to see if Entity has item in inventory (hasItem(itemNumber)) + int32 equipArmor(lua_State*); // Equips item to Entity (equipArmor(itemID, equipSlotId)) int32 getFreeSlotsCount(lua_State*); // Gets value of free slots in Entity inventory int32 getRace(lua_State*); // Gets Race of Entity int32 getNation(lua_State*); // Gets Nation of Entity