Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
897
Server/RylServerProject/RylGameLibrary/Item/Item.h
Normal file
897
Server/RylServerProject/RylGameLibrary/Item/Item.h
Normal file
@@ -0,0 +1,897 @@
|
||||
#ifndef _CITEM_CLASS_H_
|
||||
#define _CITEM_CLASS_H_
|
||||
|
||||
#include <limits>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <Network/Packet/PacketStruct/CharItemPacketStruct.h>
|
||||
|
||||
#include "ItemMgr.h"
|
||||
|
||||
#include "ItemStructure.h"
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
class CCharacter;
|
||||
|
||||
#define DELITEMLOG(x) (void*)0
|
||||
//#define DELITEMLOG(x) x
|
||||
|
||||
namespace Item
|
||||
{
|
||||
class CItem
|
||||
{
|
||||
public:
|
||||
|
||||
CItem();
|
||||
CItem(const ItemInfo& itemInfo);
|
||||
|
||||
// <20><>ũ<EFBFBD><C5A9>Ʈ<EFBFBD>κ<EFBFBD><CEBA><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>´<EFBFBD>.
|
||||
const ItemInfo& GetItemInfo() const { return m_ItemInfo; }
|
||||
|
||||
// Desc : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> char<61><72><EFBFBD>۷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
// In : <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
// Out : (Return)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, nBufferLength_InOut - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
virtual bool SerializeOut(char* lpSerializeItem_Out, size_t& nBufferLength_InOut);
|
||||
|
||||
// Desc : char<61><72><EFBFBD>۷κ<DBB7><CEBA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD> <20>´<EFBFBD>.
|
||||
// In : <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
// Out : (Return)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, nBufferLength_InOut - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
virtual bool SerializeIn(const char* lpSerializeItem_In, size_t& nBufferLength_InOut);
|
||||
|
||||
inline void MoveItem(ItemPos itemPos);
|
||||
|
||||
inline unsigned __int64 GetUID(void) const { return m_ItemData.m_dwUID; }
|
||||
inline ItemPos GetPos(void) const { return m_ItemData.m_ItemPos; }
|
||||
inline ItemPos GetRealPos(void) const { return m_itemPos_Real; }
|
||||
inline void SwapPos(void) { std::swap(m_ItemData.m_ItemPos, m_itemPos_Real); }
|
||||
|
||||
inline unsigned short GetPrototypeID(void) const { return m_ItemData.m_usProtoTypeID; }
|
||||
inline unsigned char GetNumOrDurability(void) const { return m_ItemData.m_cNumOrDurability; }
|
||||
inline unsigned char GetMaxNumOrDurability(void) const { return m_cMaxNumOrDurability; }
|
||||
inline void SetNumOrDurability(unsigned char cNumOrDurability) { m_ItemData.m_cNumOrDurability = cNumOrDurability; }
|
||||
inline void SetMaxNumOrDurability(unsigned char cNumOrDurability) { m_cMaxNumOrDurability = cNumOrDurability; }
|
||||
inline void SetStallPrice(unsigned long dwStallPrice) { m_dwStallPrice = dwStallPrice; }
|
||||
|
||||
inline unsigned long GetStallPrice(void) const { return m_dwStallPrice; }
|
||||
inline unsigned long GetBuyBlackPrice(void) const { return m_ItemInfo.m_DetailData.m_dwBlackPrice; }
|
||||
inline unsigned long GetBuyMedalPrice(void) const { return m_ItemInfo.m_DetailData.m_dwMedalPrice; }
|
||||
|
||||
virtual unsigned long GetBuyPrice(void) const;
|
||||
virtual unsigned long GetSellPrice(bool bStallOn = true) const;
|
||||
virtual unsigned long GetRepairPrice(void) const;
|
||||
virtual unsigned long GetUpgradePrice(void) const;
|
||||
virtual unsigned long GetGraftPrice(void) const;
|
||||
|
||||
inline const char* GetItemTypeName(void) const { return m_ItemInfo.m_StringData.m_szTypeName; }
|
||||
|
||||
inline bool IsSet(unsigned long dwDetailDataFlag) const { return dwDetailDataFlag == (m_ItemInfo.m_DetailData.m_dwFlags & dwDetailDataFlag); }
|
||||
|
||||
inline bool GetEnableRepair(void);
|
||||
inline bool GetEnableStack(void);
|
||||
inline bool GetSocketItem(void);
|
||||
inline bool GetRuneItem(void);
|
||||
inline bool GetTwohandItem(void);
|
||||
inline bool GetEnableEquip(void);
|
||||
|
||||
inline void SetItemPos(unsigned short wItemPos) { m_ItemData.m_ItemPos.m_cPos = wItemPos; }
|
||||
inline unsigned short GetItemPos(void) { return m_ItemData.m_ItemPos.m_cPos; }
|
||||
|
||||
inline void SetPos(unsigned char cXIndex, unsigned char cYIndex, unsigned char cZIndex) { m_ItemData.m_ItemPos.SetPos(cXIndex, cYIndex, cZIndex); }
|
||||
|
||||
inline void SetXIndex(unsigned char cXIndex) { m_ItemData.m_ItemPos.SetXIndex(cXIndex); }
|
||||
inline void SetYIndex(unsigned char cYIndex) { m_ItemData.m_ItemPos.SetYIndex(cYIndex); }
|
||||
inline void SetZIndex(unsigned char cZIndex) { m_ItemData.m_ItemPos.SetZIndex(cZIndex); }
|
||||
|
||||
inline void SetPos(unsigned short wIndex) { m_ItemData.m_ItemPos.SetPos(wIndex); }
|
||||
|
||||
// SetUID<49><44> <20>ƹ<EFBFBD><C6B9><EFBFBD><EFBFBD><EFBFBD> <20>Ժη<D4BA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD>!
|
||||
inline void SetUID(unsigned __int64 dwItemUID) { m_ItemData.m_dwUID = dwItemUID; }
|
||||
|
||||
// S <20><EFBFBD><D7B7>̵<EFBFBD> <20><><EFBFBD>Ѱ<EFBFBD> <20><><EFBFBD><EFBFBD>(S <20><EFBFBD><D7B7>̵<EFBFBD> <20>̿ܿ<CCBF><DCBF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ȯ<EFBFBD><C8AE><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>. - by hackermz)
|
||||
virtual void RevisionLimit() { }
|
||||
virtual void RevisionLimit(short* lpattrLimit) { }
|
||||
virtual void RevisionLimit(Item::Attribute::Type eAttributeType, short& attrLImit) { }
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
virtual ~CItem();
|
||||
|
||||
const ItemInfo& m_ItemInfo; // <20><>ũ<EFBFBD><C5A9>Ʈ<EFBFBD>κ<EFBFBD><CEBA><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ItemData m_ItemData; // DB<44><42> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
ItemPos m_itemPos_Real; // <20>ӽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ
|
||||
unsigned char m_cMaxNumOrDurability; // <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned long m_dwStallPrice; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F3BFA1BC><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long m_dwPrice; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>ɼǿ<C9BC> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>)
|
||||
|
||||
friend class CItemFactory;
|
||||
};
|
||||
|
||||
|
||||
class CEquipment : public CItem
|
||||
{
|
||||
public:
|
||||
|
||||
enum EQUIPMENT_ERROR
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20>ڱ<EFBFBD>
|
||||
S_SUCCESS = 0, // <20><><EFBFBD><EFBFBD>
|
||||
E_SERVER_ERROR = 1, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
E_GET_EQUIP_FAILED = 2, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
E_GET_GEM_FAILED = 3, // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
E_NOT_EQUIP = 4, // <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD>
|
||||
E_NOT_GEM = 5, // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD>
|
||||
E_REMOVE_GEM_FAILED = 6, // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
E_SOCKET_IS_FULL = 7, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD>
|
||||
E_OVER_MAX_SOCKET = 8, // <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD>
|
||||
E_SOCKET_NOT_MAX = 9, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 7<><37><EFBFBD><EFBFBD> <20>ƴϴ<C6B4>.
|
||||
E_SOCKET_NOT_INST = 10, // <20><><EFBFBD>Ͽ<EFBFBD> <20>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
// <20><> <20><>ġ/<2F><><EFBFBD><EFBFBD>
|
||||
R_SUCCESS = 0, // <20><> <20><>ġ/<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
E_GET_RUNE_FAILED = 9, // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
E_NOT_RUNE = 10, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
E_NOT_RUNE_SLOT = 11, // <20>鿡 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
E_NOT_RUNE_LEVEL_LIMIT = 12, // <20>鿡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
E_USED_RUNE_SKILL_POINT = 13, // <20>鿡 <20>߰<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>־ <20><><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
E_NOT_RUNE_SCRIPT_INFO = 14, // <20>鿡 <20><>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
// <20><>ȭ
|
||||
E_GET_MINERAL_FAILED = 3, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
E_NOT_MINERAL = 5, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD>
|
||||
E_NOT_MATCH_MINERAL_TYPE = 6, // <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> Ʋ<><C6B2>
|
||||
E_NOT_ENOUGH_MINERAL = 7, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
E_REMOVE_EQUIP_FAILED = 8, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
E_CREATE_SCRAP_FAILED = 9, // <20><>ö <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
E_SET_SCRAP_FAILED = 10, // <20><>ö <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
E_REMOVE_MINERAL_FAILED = 11, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
E_UPGRADE_LEVEL_IS_FULL = 12, // <20><> <20>̻<EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵带 <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
E_NOT_ENOUGH_MONEY = 13, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
S_BROKEN_EQUIP = 14, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>μ<EFBFBD><CEBC><EFBFBD> (Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.)
|
||||
|
||||
E_NOT_UPGRADE_LEVEL = 15, // <20>ɼ<EFBFBD> <20>̽<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD>.
|
||||
|
||||
E_NOT_UPGRADE_AS_OVER = 16, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>̿<EFBFBD> ȸ<><C8B8> <20>ʰ<EFBFBD>.
|
||||
E_NOT_UPGRADE_ENDURANCE = 17, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȸ<><C8B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD>.
|
||||
E_NOT_UPGRADE_MINENDURANCE = 18, // <20><><EFBFBD>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10<31><30> <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
|
||||
E_NOT_UPGRADE_AWAKEN = 19, // <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD>. (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ھ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
// <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
E_WRONG_ATTRIBUTE = 2, // <20>̽<EFBFBD> <20>Ұ<EFBFBD><D2B0><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD>
|
||||
E_NOT_EQUAL_KIND = 3, // <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
E_HIGH_GRADE_ORIGINAL = 4, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><D7B7>̵尡 <20><><EFBFBD><EFBFBD>
|
||||
E_GRAFE_FAILD = 5, // <20>ɼ<EFBFBD><C9BC>̽<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
E_WRONG_TYPE = 2, // <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD>
|
||||
E_NEW_SEASON_EQUIP = 3, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
E_LOW_STATUS_EQUIP = 4 // <20>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
enum PASSIVE_TYPE
|
||||
{
|
||||
PASSIVE_ALWAYS = 0, // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><EFBFBD><DFBB>ϴ<EFBFBD> <20>нú<D0BD>
|
||||
PASSIVE_THIS_WEAPON = 1, // <20>ش<EFBFBD> <20><><EFBFBD> <20><EFBFBD><DFBB>ϴ<EFBFBD> <20>нú<D0BD>
|
||||
NONE_PASSIVE_THIS_WEAPON = 2 // <20>ش<EFBFBD> <20><><EFBFBD> <20><EFBFBD><DFBB><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20>нú<D0BD>
|
||||
};
|
||||
|
||||
enum RuneApplyType
|
||||
{
|
||||
RUNE_NONE = 0,
|
||||
RUNE_INDEX = (1 << 0), // <20>ϳ<EFBFBD><CFB3><EFBFBD> <20>Ӽ<EFBFBD>.
|
||||
RUNE_ALL = (1 << 1), // <20><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD>.
|
||||
RUNE_APPLY = (1 << 2), // <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20>߰<EFBFBD>.
|
||||
RUNE_REMOVE = (1 << 3) // <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Downcast<73>Ѵ<EFBFBD>.
|
||||
inline static CEquipment* DowncastToEquipment(CItem* lpItem);
|
||||
|
||||
// Desc : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> char<61><72><EFBFBD>۷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
// In : <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
// Out : (Return)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, nBufferLength_InOut - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
virtual bool SerializeOut(char* lpSerializeItem_Out, size_t& nBufferLength_InOut);
|
||||
|
||||
// Desc : char<61><72><EFBFBD>۷κ<DBB7><CEBA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>о<EFBFBD> <20>´<EFBFBD>.
|
||||
// In : <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
// Out : (Return)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, nBufferLength_InOut - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
virtual bool SerializeIn(const char* lpSerializeItem_In, size_t& nBufferLength_InOut);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD> <20>߰<EFBFBD> (<28>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ŀ<EFBFBD><C4BF><EFBFBD> <20>ݵ<EFBFBD><DDB5><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><EFBFBD><D7B7>̵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD>ݽô<DDBD>.)
|
||||
inline void AddAttribute(Item::Attribute::Type eAttributeType, short nAttributeValue);
|
||||
inline void SetAttribute(Item::Attribute::Type eAttributeType, short nAttributeValue);
|
||||
|
||||
// 3<><33> <20>뷱<EFBFBD><EBB7B1> <20><>ġ(<28><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)0
|
||||
inline void RemoveUpgradeAttribute(Item::Attribute::Type eAttributeType);
|
||||
inline void RemoveGemAttribute(Item::Attribute::Type eAttributeType);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD> <20>´<EFBFBD>.
|
||||
inline short GetAttribute(Item::Attribute::Type eAttributeType);
|
||||
inline void GetAttribute(short* lpAttributeArray_Out, unsigned short nArraySize);
|
||||
|
||||
// <20>ɼǺ<C9BC> <20>Ѱ谪<D1B0><E8B0AA> <20><><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD> üũ<C3BC>Ѵ<EFBFBD>.
|
||||
bool CheckAttributeLimit(Item::Attribute::Type eAttributeType, unsigned char cType = 0);
|
||||
|
||||
inline bool AddSocket(unsigned char cSocket);
|
||||
inline void GetSocket(unsigned char* cSockets, unsigned char cArraySize);
|
||||
unsigned char GetSocket(unsigned char cIndex) { return m_cSocket[cIndex]; }
|
||||
|
||||
const Grade::GradeInfo& GetItemGrade(void) const { return m_GradeInfo; }
|
||||
|
||||
inline void InitializeAttribute(void); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
||||
BOOL AddRandomOption(Item::EquipType::Grade eGrade, unsigned char cBaseNum, int iMagicChance = 0);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
BOOL AddRandomSocket(int iMagicChance = -1);
|
||||
|
||||
// <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
EQUIPMENT_ERROR OptionGraft(CEquipment* lpSacrifice, bool bUpgradeLevelLimit, unsigned char cAttributeType,
|
||||
unsigned long dwCurrentGold, unsigned long& dwUsedGold);
|
||||
|
||||
bool CanOptionGraft(Item::CItemType::ArrayType eItemType, Item::Attribute::Type eAttributeType);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
EQUIPMENT_ERROR Compensation(unsigned char cClass, unsigned char cLevel,
|
||||
CharacterStatus status, CEquipment** lppResultEquip, long& lCompensationGold);
|
||||
|
||||
unsigned char GetUpgradeLevel(void) const { return m_cUpgradeLevel; }
|
||||
unsigned char GetCoreLevel(void) const { return m_cCoreLevel; }
|
||||
|
||||
unsigned char GetCurrentSocketNum(void) const { return m_cSocketNum; }
|
||||
unsigned char GetMaxSocketNum(void) const { return m_cMaxSocket; }
|
||||
|
||||
// <20><><EFBFBD>뷱<EFBFBD><EBB7B1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>.
|
||||
void SetNewEquip(char cStrong = 1)
|
||||
{
|
||||
if(m_cSeasonRecord != cStrong)
|
||||
m_cCoreLevel = 0;
|
||||
|
||||
m_cSeasonRecord = cStrong; // 1 <20>⺻, 2 <20><><EFBFBD><EFBFBD>, 3 <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
unsigned char GetSeasonRecord(void) { return m_cSeasonRecord; }
|
||||
|
||||
unsigned long GetBuyPrice(void) const;
|
||||
unsigned long GetSellPrice(bool bStallOn = true) const;
|
||||
unsigned long GetRepairPrice(void) const;
|
||||
unsigned long GetUpgradePrice(void) const;
|
||||
unsigned long GetGraftPrice(void) const;
|
||||
|
||||
unsigned char GetUpgradeCnt(void) { return m_cUpgradeCnt; }
|
||||
void SetUpgradeCnt(unsigned char cUpgradeCnt) { m_cUpgradeCnt = cUpgradeCnt; }
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
bool IsUpgradable(void) const;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> üũ
|
||||
inline unsigned char GetMaxRuneSocket();
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
|
||||
inline unsigned char GetRuneEquipable();
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>.
|
||||
inline unsigned short GetRuneEquipLimitLevel(void) const;
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
inline bool SubRuneAttribute(void);
|
||||
|
||||
// <20><>ġ <20>Ǿ<EFBFBD> <20>ִ<EFBFBD> <20><> <20><><EFBFBD>ϰ<EFBFBD><CFB0><EFBFBD> <20>Ѱ<EFBFBD><D1B0>ش<EFBFBD>.
|
||||
inline unsigned short GetRuneSocket(unsigned char cIndex)
|
||||
{
|
||||
if (cIndex >= EquipmentInfo::MAX_RUNE_SOCKET_NUM)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return m_usRuneSocket[cIndex];
|
||||
}
|
||||
|
||||
// <20><> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD> <20><><EFBFBD>纻<EFBFBD><E7BABB> <20>Ѱ<EFBFBD><D1B0>ش<EFBFBD>.
|
||||
inline void GetSubRuneAttribute(short* psAttribute);
|
||||
inline void GetSubRuneAttribute(Item::Attribute::Type eAttributeType, short& sAttribute);
|
||||
|
||||
// <20>ܺο<DCBA><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD>/<2F>߰<EFBFBD>
|
||||
inline void SetRuneAttribute(RuneApplyType enRuneApplyType, unsigned char ucIndex);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>.
|
||||
unsigned short GetAllRuneSkillPointCheck();
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ üũ
|
||||
bool GetRuneCheckSkill(CCharacter* lpCharacter, Item::ItemPos itemPos, bool bChk = true);
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------------
|
||||
// ConvertTool<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> - RebalanceOverItem.cpp <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
inline void Repair();
|
||||
inline void InitEquip();
|
||||
inline void SetEquip();
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> - ItemServerFunc.cpp <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
EQUIPMENT_ERROR InstallSocket(CItem& Gem);
|
||||
EQUIPMENT_ERROR UpgradeItem(CItem& Mineral_InOut, unsigned long dwCurrentGold_In, unsigned long& dwUsedGold_Out, unsigned char& cValue_Out);
|
||||
|
||||
EQUIPMENT_ERROR InstallRuneSocket(CItem& Rune, bool bEquip, unsigned char cLevel); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><>ġ.
|
||||
|
||||
EQUIPMENT_ERROR UnInstallRuneSocket(CItem& Rune, bool bEquip, unsigned char cLevel, unsigned short usSkillPoint); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------------
|
||||
// 3<><33> <20>뷱<EFBFBD><EBB7B1> <20><>ġ <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>
|
||||
|
||||
// S <20><EFBFBD><D7B7>̵<EFBFBD> <20><><EFBFBD>Ѱ<EFBFBD> <20><><EFBFBD>ϱ<EFBFBD>
|
||||
bool GetLimitValue(short* lpattrLimit);
|
||||
bool GetLimitValue(Item::Attribute::Type eAttributeType, short& attrLimit);
|
||||
|
||||
// S <20><EFBFBD><D7B7>̵<EFBFBD> <20><><EFBFBD>Ѱ<EFBFBD> <20><><EFBFBD><EFBFBD>(S <20><EFBFBD><D7B7>̵<EFBFBD> <20>̿ܿ<CCBF><DCBF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ȯ<EFBFBD><C8AE><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>. - by hackermz)
|
||||
void RevisionLimit();
|
||||
void RevisionLimit(short* lpattrLimit);
|
||||
void RevisionLimit(Item::Attribute::Type eAttributeType, short& attrLImit);
|
||||
|
||||
// <20><EFBFBD><D7B7>̵<EFBFBD> å<><C3A5>
|
||||
void CalculateItemGrade(void);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
enum ApplyType
|
||||
{
|
||||
APPLY = 1, // <20><> <20>ٲ<EFBFBD><D9B2><EFBFBD> <20><> <20><>
|
||||
REMOVE = -1 // <20><> <20>ٲ<EFBFBD><D9B2><EFBFBD> <20><> <20><>
|
||||
};
|
||||
|
||||
CEquipment(const ItemInfo& itemInfo);
|
||||
virtual ~CEquipment();
|
||||
|
||||
inline void InitializeGemAttribute(void); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
||||
inline void InitializeUpgradeAttribute(void); // <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20>ܰ<EFBFBD><DCB0><EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
||||
|
||||
inline void ApplyGemAttribute(ApplyType eApplyType); // <20><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
inline void ApplyUpgradeAttribute(ApplyType eApplyType); // <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
inline void ApplyRuneAttribute(ApplyType eApplyType); // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
void CalculateItemPrice(void); // <20><><EFBFBD><EFBFBD> å<><C3A5>
|
||||
|
||||
unsigned char m_cSocket[EquipmentInfo::MAX_SOCKET_NUM]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
ItemAttribute m_SocketAttribute[EquipmentInfo::MAX_SOCKET_ATTRIBUTE_NUM]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD>
|
||||
ItemAttribute m_UpgradeAttribute[EquipmentInfo::MAX_UPGRADE_ATTRIBUTE]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD><CCB5><EFBFBD> <20>ٴ<EFBFBD> <20>Ӽ<EFBFBD>
|
||||
unsigned short m_usRuneSocket[EquipmentInfo::MAX_RUNE_SOCKET_NUM]; // <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
short m_wAttribute[Attribute::MAX_ATTRIBUTE_NUM]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD> (<28><>ũ<EFBFBD><C5A9>Ʈ + DB + ...)
|
||||
|
||||
unsigned char m_cUpgradeLevel; // <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20>ܰ<EFBFBD>
|
||||
unsigned char m_cSocketNum; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cMaxSocket; // <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cMaxAttribute; // <20>ִ<EFBFBD> <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned char m_cSeasonRecord; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ñ<EFBFBD>
|
||||
|
||||
Grade::GradeInfo m_GradeInfo; // <20><EFBFBD><D7B7>̵<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned char m_cUpgradeCnt;
|
||||
|
||||
unsigned char m_cCoreLevel; // <20>ھ<DABE><EEB7B9>
|
||||
|
||||
friend class CItemFactory;
|
||||
friend class CItemType;
|
||||
};
|
||||
|
||||
class CUseItem : public CItem
|
||||
{
|
||||
public:
|
||||
|
||||
inline static CUseItem* DowncastToUseItem(CItem* lpItem);
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> - ItemServerFunc.cpp <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool UseCashItem(CCharacter* lpSender, CCharacter* lpRecver, Item::ItemPos itemPos, unsigned short& wError);
|
||||
|
||||
bool Use(CCharacter* lpSender, CCharacter* lpRecver, Item::ItemPos itemPos, unsigned short& wError);
|
||||
|
||||
protected:
|
||||
|
||||
CUseItem(const ItemInfo& itemInfo);
|
||||
virtual ~CUseItem();
|
||||
|
||||
bool UsePotion(CCharacter* lpSender, CCharacter* lpRecver);
|
||||
|
||||
friend class CItemFactory;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
inline void Item::CItem::MoveItem(ItemPos itemPos)
|
||||
{
|
||||
if (TakeType::TS_STALL == itemPos.m_cPos)
|
||||
{
|
||||
m_itemPos_Real = itemPos;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ItemData.m_ItemPos = itemPos;
|
||||
if (TakeType::TS_TEMP != itemPos.m_cPos)
|
||||
{
|
||||
m_itemPos_Real = itemPos;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline Item::CEquipment* Item::CEquipment::DowncastToEquipment(Item::CItem* lpItem)
|
||||
{
|
||||
if (NULL == lpItem) { return NULL; }
|
||||
return lpItem->IsSet(DetailData::EQUIP) ?
|
||||
static_cast<CEquipment*>(lpItem) : NULL;
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::AddAttribute(Item::Attribute::Type eAttributeType, short nAttributeValue)
|
||||
{
|
||||
/*
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20>Ӽ<EFBFBD> <20>߰<EFBFBD>
|
||||
if (eAttributeType == Attribute::RUNE && 0 != nAttributeValue)
|
||||
{
|
||||
unsigned short usRuneID = nAttributeValue + EtcItemID::RUNE_START_ID;
|
||||
|
||||
const ItemInfo* lpRuneInfo = CItemMgr::GetInstance().GetItemInfo(usRuneID);
|
||||
if (NULL != lpRuneInfo)
|
||||
{
|
||||
for (unsigned char cIndex = 0; cIndex < EquipmentInfo::MAX_RUNE_SOCKET_NUM; ++cIndex)
|
||||
{
|
||||
if (0 != m_usRuneSocket[cIndex])
|
||||
{
|
||||
m_usRuneSocket[cIndex] = usRuneID;
|
||||
|
||||
for (int nIndex = 0; nIndex < Item::Attribute::MAX_ATTRIBUTE_NUM; ++nIndex)
|
||||
{
|
||||
if (Item::EquipType::S_GRADE != GetItemGrade().m_aryAttributeGrade[nIndex])
|
||||
{
|
||||
m_wAttribute[nIndex] += lpRuneInfo->m_EquipAttribute.m_usAttributeValue[nIndex];
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
*/
|
||||
{
|
||||
if (Item::EquipType::S_GRADE != GetItemGrade().m_aryAttributeGrade[eAttributeType])
|
||||
{
|
||||
m_wAttribute[eAttributeType] += nAttributeValue;
|
||||
}
|
||||
|
||||
/*
|
||||
// edith 2009.03.15 min <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> max<61><78><EFBFBD><EFBFBD> <20><><EFBFBD>Ƶ<EFBFBD> <20>ɼ<EFBFBD><C9BC>̽<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>۾<EFBFBD><DBBE>Ȱ<EFBFBD>
|
||||
if(eAttributeType == Attribute::MIN_DAMAGE)
|
||||
{
|
||||
if(m_wAttribute[Attribute::MIN_DAMAGE] > m_wAttribute[Attribute::MAX_DAMAGE])
|
||||
{
|
||||
// <20>ΰ<EFBFBD> <20><>ȯ
|
||||
short t = m_wAttribute[Attribute::MIN_DAMAGE];
|
||||
m_wAttribute[Attribute::MIN_DAMAGE] = m_wAttribute[Attribute::MAX_DAMAGE];
|
||||
m_wAttribute[Attribute::MAX_DAMAGE] = t;
|
||||
}
|
||||
}
|
||||
//*/
|
||||
}
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::SetAttribute(Item::Attribute::Type eAttributeType, short nAttributeValue)
|
||||
{
|
||||
/*
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20>Ӽ<EFBFBD> <20>߰<EFBFBD>
|
||||
if (eAttributeType == Attribute::RUNE && 0 != nAttributeValue)
|
||||
{
|
||||
unsigned short usRuneID = nAttributeValue + EtcItemID::RUNE_START_ID;
|
||||
|
||||
const ItemInfo* lpRuneInfo = CItemMgr::GetInstance().GetItemInfo(usRuneID);
|
||||
if (NULL != lpRuneInfo)
|
||||
{
|
||||
for (unsigned char cIndex = 0; cIndex < EquipmentInfo::MAX_RUNE_SOCKET_NUM; ++cIndex)
|
||||
{
|
||||
if (0 != m_usRuneSocket[cIndex])
|
||||
{
|
||||
m_usRuneSocket[cIndex] = usRuneID;
|
||||
|
||||
for (int nIndex = 0; nIndex < Item::Attribute::MAX_ATTRIBUTE_NUM; ++nIndex)
|
||||
{
|
||||
m_wAttribute[nIndex] = lpRuneInfo->m_EquipAttribute.m_usAttributeValue[nIndex];
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
*/
|
||||
{
|
||||
m_wAttribute[eAttributeType] = nAttributeValue;
|
||||
}
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::RemoveUpgradeAttribute(Item::Attribute::Type eAttributeType)
|
||||
{
|
||||
ItemAttribute* first = m_UpgradeAttribute;
|
||||
ItemAttribute* last = m_UpgradeAttribute + EquipmentInfo::MAX_UPGRADE_ATTRIBUTE;
|
||||
|
||||
for (;first != last; ++first)
|
||||
{
|
||||
if(eAttributeType == static_cast<Item::Attribute::Type>(first->m_cType))
|
||||
{
|
||||
first->m_usValue = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::RemoveGemAttribute(Item::Attribute::Type eAttributeType)
|
||||
{
|
||||
ItemAttribute* first = m_SocketAttribute;
|
||||
ItemAttribute* last = m_SocketAttribute + EquipmentInfo::MAX_UPGRADE_ATTRIBUTE;
|
||||
|
||||
for (;first != last; ++first)
|
||||
{
|
||||
if(eAttributeType == static_cast<Item::Attribute::Type>(first->m_cType))
|
||||
{
|
||||
first->m_usValue = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline bool Item::CEquipment::SubRuneAttribute(void)
|
||||
{
|
||||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
for (unsigned char cRune = 0; cRune <= EquipmentInfo::MAX_RUNE_SOCKET_NUM; ++cRune)
|
||||
{
|
||||
if (m_usRuneSocket[cRune])
|
||||
{
|
||||
unsigned short usItemId = m_usRuneSocket[cRune];
|
||||
|
||||
const ItemInfo* itemInfo = CItemMgr::GetInstance().GetItemInfo(usItemId);
|
||||
|
||||
if (itemInfo)
|
||||
{
|
||||
for (unsigned char cIndex = 0; cIndex < Item::Attribute::MAX_ATTRIBUTE_NUM; ++cIndex)
|
||||
{
|
||||
m_wAttribute[cIndex] -= itemInfo->m_EquipAttribute.m_usAttributeValue[cIndex];
|
||||
}
|
||||
}
|
||||
|
||||
m_usRuneSocket[cRune] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
inline short Item::CEquipment::GetAttribute(Item::Attribute::Type eAttributeType)
|
||||
{
|
||||
return m_wAttribute[eAttributeType];
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::GetAttribute(short* lpAttributeArray_Out, unsigned short nArraySize)
|
||||
{
|
||||
unsigned short nCopyNum = nArraySize < Item::Attribute::MAX_ATTRIBUTE_NUM
|
||||
? nArraySize : Item::Attribute::MAX_ATTRIBUTE_NUM;
|
||||
|
||||
for (int nIndex = 0; nIndex < nCopyNum; ++nIndex)
|
||||
{
|
||||
*(lpAttributeArray_Out + nIndex) = GetAttribute(static_cast<Item::Attribute::Type>(nIndex));
|
||||
}
|
||||
}
|
||||
|
||||
inline bool Item::CEquipment::AddSocket(unsigned char cSocket)
|
||||
{
|
||||
if (m_cSocketNum < m_cMaxSocket && 0 == m_cSocket[m_cSocketNum])
|
||||
{
|
||||
m_cSocket[m_cSocketNum] = cSocket;
|
||||
++m_cSocketNum;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::GetSocket(unsigned char* cSockets, unsigned char cArraySize)
|
||||
{
|
||||
unsigned short nCopyNum = cArraySize < Item::EquipmentInfo::MAX_SOCKET_NUM
|
||||
? cArraySize : Item::EquipmentInfo::MAX_SOCKET_NUM;
|
||||
unsigned char* lpSocketPastEnd = m_cSocket + nCopyNum;
|
||||
std::copy(m_cSocket, lpSocketPastEnd , cSockets);
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::InitializeAttribute(void)
|
||||
{
|
||||
for (unsigned int nIndex = 0; nIndex < Item::Attribute::MAX_ATTRIBUTE_NUM; ++nIndex)
|
||||
{
|
||||
m_wAttribute[nIndex] = m_ItemInfo.m_EquipAttribute.m_usAttributeValue[nIndex];
|
||||
}
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::InitializeGemAttribute(void)
|
||||
{
|
||||
std::fill_n(m_SocketAttribute, int(EquipmentInfo::MAX_SOCKET_ATTRIBUTE_NUM), ItemAttribute());
|
||||
|
||||
// <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
CItemType::SetInstallGemAttribute(this);
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::InitializeUpgradeAttribute(void)
|
||||
{
|
||||
std::fill_n(m_UpgradeAttribute, int(EquipmentInfo::MAX_UPGRADE_ATTRIBUTE), ItemAttribute());
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20>ܰ谪<DCB0><E8B0AA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
CItemType::SetUpgradeItemAttribute(this);
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::ApplyGemAttribute(ApplyType eApplyType)
|
||||
{
|
||||
ItemAttribute* first = m_SocketAttribute;
|
||||
ItemAttribute* last = m_SocketAttribute + EquipmentInfo::MAX_SOCKET_ATTRIBUTE_NUM;
|
||||
|
||||
for (;first != last; ++first)
|
||||
{
|
||||
AddAttribute(static_cast<Item::Attribute::Type>(first->m_cType), first->m_usValue * eApplyType);
|
||||
}
|
||||
}
|
||||
|
||||
inline unsigned char Item::CEquipment::GetMaxRuneSocket()
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> üũ
|
||||
return Item::CItemMgr::GetInstance().GetMaxRuneSocket(static_cast<ItemType::Type>(GetItemInfo().m_DetailData.m_cItemType));
|
||||
}
|
||||
|
||||
inline unsigned char Item::CEquipment::GetRuneEquipable()
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
|
||||
unsigned char cRuneSocketCnt = Item::CItemMgr::GetInstance().GetMaxRuneSocket(static_cast<ItemType::Type>(GetItemInfo().m_DetailData.m_cItemType));
|
||||
|
||||
if (!cRuneSocketCnt)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!m_usRuneSocket[0])
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!m_usRuneSocket[1] && cRuneSocketCnt == EquipmentInfo::MAX_RUNE_SOCKET_NUM)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::ApplyUpgradeAttribute(ApplyType eApplyType)
|
||||
{
|
||||
ItemAttribute* first = m_UpgradeAttribute;
|
||||
ItemAttribute* last = m_UpgradeAttribute + EquipmentInfo::MAX_UPGRADE_ATTRIBUTE;
|
||||
|
||||
for (;first != last; ++first)
|
||||
{
|
||||
AddAttribute(static_cast<Item::Attribute::Type>(first->m_cType), first->m_usValue * eApplyType);
|
||||
}
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::ApplyRuneAttribute(ApplyType eApplyType)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20>Ӽ<EFBFBD> <20>߰<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||||
for (unsigned char cIndex = 0; cIndex < EquipmentInfo::MAX_RUNE_SOCKET_NUM; ++cIndex)
|
||||
{
|
||||
if (m_usRuneSocket[cIndex])
|
||||
{
|
||||
unsigned short usItemId = m_usRuneSocket[cIndex];
|
||||
|
||||
const ItemInfo* itemInfo = CItemMgr::GetInstance().GetItemInfo(usItemId);
|
||||
|
||||
if (itemInfo)
|
||||
{
|
||||
for (unsigned char cAttribute = 0; cAttribute < Item::Attribute::MAX_ATTRIBUTE_NUM; ++cAttribute)
|
||||
{
|
||||
m_wAttribute[cAttribute] += itemInfo->m_EquipAttribute.m_usAttributeValue[cAttribute]*eApplyType;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::GetSubRuneAttribute(short* psAttribute)
|
||||
{
|
||||
// <20><> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD> <20><><EFBFBD>纻<EFBFBD><E7BABB> <20>Ѱ<EFBFBD><D1B0>ش<EFBFBD>.
|
||||
memcpy(psAttribute, m_wAttribute, sizeof(m_wAttribute));
|
||||
|
||||
for (unsigned char cIndex = 0; cIndex < EquipmentInfo::MAX_RUNE_SOCKET_NUM; ++cIndex)
|
||||
{
|
||||
if (m_usRuneSocket[cIndex])
|
||||
{
|
||||
const ItemInfo* itemInfo = CItemMgr::GetInstance().GetItemInfo(m_usRuneSocket[cIndex]);
|
||||
|
||||
if (itemInfo)
|
||||
{
|
||||
for (unsigned char cAttribute = 0; cAttribute < Item::Attribute::MAX_ATTRIBUTE_NUM; ++cAttribute)
|
||||
{
|
||||
psAttribute[cAttribute] -= itemInfo->m_EquipAttribute.m_usAttributeValue[cAttribute];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::GetSubRuneAttribute(Item::Attribute::Type eAttributeType, short& sAttribute)
|
||||
{
|
||||
sAttribute = m_wAttribute[eAttributeType];
|
||||
|
||||
for (unsigned char cIndex = 0; cIndex < EquipmentInfo::MAX_RUNE_SOCKET_NUM; ++cIndex)
|
||||
{
|
||||
if (m_usRuneSocket[cIndex])
|
||||
{
|
||||
const ItemInfo* itemInfo = CItemMgr::GetInstance().GetItemInfo(m_usRuneSocket[cIndex]);
|
||||
|
||||
if (itemInfo)
|
||||
{
|
||||
sAttribute -= itemInfo->m_EquipAttribute.m_usAttributeValue[eAttributeType];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::SetRuneAttribute(RuneApplyType enRuneApplyType, unsigned char ucIndex)
|
||||
{
|
||||
// <20>ܺο<DCBA><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD>/<2F>߰<EFBFBD>.
|
||||
|
||||
if (enRuneApplyType & RUNE_INDEX && enRuneApplyType & RUNE_REMOVE)
|
||||
{
|
||||
for (unsigned char ucRuneIndex = 0; ucRuneIndex < EquipmentInfo::MAX_RUNE_SOCKET_NUM; ucRuneIndex++)
|
||||
{
|
||||
if (m_usRuneSocket[ucRuneIndex])
|
||||
{
|
||||
const ItemInfo* itemInfo = CItemMgr::GetInstance().GetItemInfo(m_usRuneSocket[ucRuneIndex]);
|
||||
|
||||
if (itemInfo)
|
||||
{
|
||||
m_wAttribute[ucIndex] -= itemInfo->m_EquipAttribute.m_usAttributeValue[ucIndex];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (enRuneApplyType & RUNE_ALL && enRuneApplyType & RUNE_REMOVE)
|
||||
{
|
||||
ApplyRuneAttribute(REMOVE);
|
||||
}
|
||||
else if (enRuneApplyType & RUNE_INDEX && enRuneApplyType & RUNE_APPLY)
|
||||
{
|
||||
for (unsigned char ucRuneIndex = 0; ucRuneIndex < EquipmentInfo::MAX_RUNE_SOCKET_NUM; ucRuneIndex++)
|
||||
{
|
||||
if (m_usRuneSocket[ucRuneIndex])
|
||||
{
|
||||
const ItemInfo* itemInfo = CItemMgr::GetInstance().GetItemInfo(m_usRuneSocket[ucRuneIndex]);
|
||||
|
||||
if (itemInfo)
|
||||
{
|
||||
m_wAttribute[ucIndex] += itemInfo->m_EquipAttribute.m_usAttributeValue[ucIndex];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (enRuneApplyType & RUNE_ALL && enRuneApplyType & RUNE_APPLY)
|
||||
{
|
||||
ApplyRuneAttribute(APPLY);
|
||||
}
|
||||
}
|
||||
|
||||
inline unsigned short Item::CEquipment::GetRuneEquipLimitLevel(void) const
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>.
|
||||
unsigned short usResult = 0;
|
||||
|
||||
for (unsigned char cIndex = 0; cIndex < EquipmentInfo::MAX_RUNE_SOCKET_NUM; ++cIndex)
|
||||
{
|
||||
if (m_usRuneSocket[cIndex])
|
||||
{
|
||||
unsigned short usItemId = m_usRuneSocket[cIndex];
|
||||
|
||||
const ItemInfo* itemInfo = CItemMgr::GetInstance().GetItemInfo(usItemId);
|
||||
|
||||
if (itemInfo)
|
||||
{
|
||||
if (itemInfo->m_UseLimit.m_cLimitStatus==Item::StatusLimit::LEVEL)
|
||||
{
|
||||
if (usResult<itemInfo->m_UseLimit.m_wLimitValue)
|
||||
{
|
||||
usResult = itemInfo->m_UseLimit.m_wLimitValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return usResult;
|
||||
}
|
||||
|
||||
inline Item::CUseItem* Item::CUseItem::DowncastToUseItem(CItem* lpItem)
|
||||
{
|
||||
if (NULL == lpItem) { return NULL; }
|
||||
return lpItem->IsSet(DetailData::USE_ITEM) ?
|
||||
static_cast<CUseItem*>(lpItem) : NULL;
|
||||
}
|
||||
|
||||
inline bool Item::CItem::GetEnableRepair(void)
|
||||
{
|
||||
unsigned long dwFlags = GetItemInfo().m_DetailData.m_dwFlags;
|
||||
return ((dwFlags & Item::DetailData::EQUIP) && !(dwFlags & Item::DetailData::STACKABLE));
|
||||
}
|
||||
|
||||
inline bool Item::CItem::GetEnableStack(void)
|
||||
{
|
||||
return (GetItemInfo().m_DetailData.m_dwFlags & Item::DetailData::STACKABLE) ? true : false;
|
||||
}
|
||||
|
||||
inline bool Item::CItem::GetEnableEquip(void)
|
||||
{
|
||||
return (GetItemInfo().m_DetailData.m_dwFlags & Item::DetailData::EQUIP);
|
||||
}
|
||||
|
||||
inline bool Item::CItem::GetSocketItem(void)
|
||||
{
|
||||
return (GetItemInfo().m_DetailData.m_cItemType == Item::ItemType::GEM);
|
||||
}
|
||||
|
||||
inline bool Item::CItem::GetRuneItem(void)
|
||||
{
|
||||
return (GetItemInfo().m_DetailData.m_cItemType == Item::ItemType::RUNE);
|
||||
}
|
||||
|
||||
inline bool Item::CItem::GetTwohandItem(void)
|
||||
{
|
||||
unsigned char cItemType = GetItemInfo().m_DetailData.m_cItemType;
|
||||
return (cItemType == Item::ItemType::BOW ||
|
||||
cItemType == Item::ItemType::CROSSBOW ||
|
||||
cItemType == Item::ItemType::STAFF ||
|
||||
cItemType == Item::ItemType::TWOHANDED_AXE ||
|
||||
cItemType == Item::ItemType::TWOHANDED_BLUNT ||
|
||||
cItemType == Item::ItemType::TWOHANDED_SWORD ||
|
||||
cItemType == Item::ItemType::OPP_SYTHE);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------------
|
||||
// ConvertTool<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> - RebalanceOverItem.cpp <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
inline void Item::CEquipment::Repair()
|
||||
{
|
||||
SetNumOrDurability(GetMaxNumOrDurability());
|
||||
CalculateItemPrice();
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::InitEquip()
|
||||
{
|
||||
// <20>ɼ<EFBFBD> <20>̽<EFBFBD><CCBD><EFBFBD> <20>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD> <20><> <20>߰<EFBFBD> <20>ɼ<EFBFBD><C9BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
RuneApplyType enRuneApplyType = static_cast<RuneApplyType>(RUNE_ALL | RUNE_REMOVE);
|
||||
|
||||
SetRuneAttribute(enRuneApplyType, 0);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>ܰ<EFBFBD><DCB0><EFBFBD> <20>ʱ<EFBFBD>ȭ<EFBFBD>ȴ<EFBFBD>. (<28>ɼ<EFBFBD><C9BC><EFBFBD> <20><><EFBFBD>´<EFBFBD>.)
|
||||
m_cUpgradeLevel = 0;
|
||||
m_cCoreLevel = 0;
|
||||
InitializeUpgradeAttribute();
|
||||
|
||||
// <20><><EFBFBD>ϵ<EFBFBD> <20>ʱ<EFBFBD>ȭ<EFBFBD>ȴ<EFBFBD>. (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD><C9BC><EFBFBD> <20><><EFBFBD>´<EFBFBD>.)
|
||||
m_cSocketNum = 0;
|
||||
std::fill_n(m_cSocket, unsigned char(Item::EquipmentInfo::MAX_SOCKET_NUM), 0);
|
||||
InitializeGemAttribute();
|
||||
m_cMaxSocket = m_ItemInfo.m_DetailData.m_cMaxSocketNum;
|
||||
}
|
||||
|
||||
inline void Item::CEquipment::SetEquip()
|
||||
{
|
||||
// <20><> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20>ٽ<EFBFBD> <20>߰<EFBFBD><DFB0>Ѵ<EFBFBD>.
|
||||
RuneApplyType enRuneApplyType = static_cast<RuneApplyType>(RUNE_ALL | RUNE_APPLY);
|
||||
|
||||
SetRuneAttribute(enRuneApplyType, 0);
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user