- #pragma once
- #include "../GameLib/ItemData.h"
- struct SAffects
- {
- enum
- {
- AFFECT_MAX_NUM = 32,
- };
- SAffects() : dwAffects(0) {}
- SAffects(const DWORD & c_rAffects)
- {
- __SetAffects(c_rAffects);
- }
- int operator = (const DWORD & c_rAffects)
- {
- __SetAffects(c_rAffects);
- }
- BOOL IsAffect(BYTE byIndex)
- {
- return dwAffects & (1 << byIndex);
- }
- void __SetAffects(const DWORD & c_rAffects)
- {
- dwAffects = c_rAffects;
- }
- DWORD dwAffects;
- };
- extern std::string g_strGuildSymbolPathName;
- const DWORD c_Name_Max_Length = 64;
- const DWORD c_FileName_Max_Length = 128;
- const DWORD c_Short_Name_Max_Length = 32;
- const DWORD c_Inventory_Page_Size = 5*9; // x*y
- const DWORD c_Inventory_Page_Count = 5;
- const DWORD c_ItemSlot_Count = c_Inventory_Page_Size * c_Inventory_Page_Count;
- const DWORD c_Equipment_Count = 12;
- const DWORD c_Equipment_Start = c_ItemSlot_Count;
- const DWORD c_Equipment_Body = c_Equipment_Start + 0;
- const DWORD c_Equipment_Head = c_Equipment_Start + 1;
- const DWORD c_Equipment_Shoes = c_Equipment_Start + 2;
- const DWORD c_Equipment_Wrist = c_Equipment_Start + 3;
- const DWORD c_Equipment_Weapon = c_Equipment_Start + 4;
- const DWORD c_Equipment_Neck = c_Equipment_Start + 5;
- const DWORD c_Equipment_Ear = c_Equipment_Start + 6;
- const DWORD c_Equipment_Unique1 = c_Equipment_Start + 7;
- const DWORD c_Equipment_Unique2 = c_Equipment_Start + 8;
- const DWORD c_Equipment_Arrow = c_Equipment_Start + 9;
- const DWORD c_Equipment_Shield = c_Equipment_Start + 10;
- // »õ·Î Ãß°¡µÈ ½Å±Ô ¹İÁö & º§Æ®
- // ÀåÂøÇü ¾ÆÀÌÅÛ¿¡ ÇÒ´çÇÒ ¼ö ÀÖ´Â À§Ä¡°¡ ±âÁ¸ Àåºñ, ä±â¶ø Äù½ºÆ® º¸»ó, ÄÚ½ºÆ¬ ½Ã½ºÅÛ µîÀ¸·Î ÀÎÇØ¼ °ø°£ÀÌ Àß·ÁÀÖ´Ù.
- // ÀÌ°Ô ´Ù ä±â¶ø º¸»ó ¹öÇÁ¸¦ ÀåÂø¾ÆÀÌÅÛó·³ ±¸ÇöÇÑ ¤µ¤¢ ¶§¹®¿¡ ³¸®³µµû... ¤¶¤²
- //
- // Á¤¸®Çϸé, ±âÁ¸ ÀåºñâµéÀº ¼¹öDB»ó ¾ÆÀÌÅÛ Æ÷Áö¼ÇÀÌ 90 ~ 102 À̰í,
- // 2013³â ÃÊ¿¡ »õ·Î Ãß°¡µÇ´Â ½½·ÔµéÀº 111 ~ ºÎÅÍ ½ÃÀÛÇÑ´Ù. Âø¿ë Àåºñ¿¡¼ ÃÖ´ë·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °ªÀº 121 ±îÁöÀ̰í, 122ºÎÅÍ´Â ¿ëÈ¥¼®¿¡¼ »ç¿ëÇÑ´Ù.
- #ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
- #ifdef ENABLE_COSTUME_WEAPON_SYSTEM
- const DWORD c_New_Equipment_Start = c_Equipment_Start + 22 + 1;
- #else
- const DWORD c_New_Equipment_Start = c_Equipment_Start + 22;
- #endif
- const DWORD c_New_Equipment_Count = 3;
- const DWORD c_Equipment_Ring1 = c_New_Equipment_Start + 0;
- const DWORD c_Equipment_Ring2 = c_New_Equipment_Start + 1;
- const DWORD c_Equipment_Belt = c_New_Equipment_Start + 2;
- #ifdef WING_SYSTEM
- const DWORD c_Equipment_Wing = c_New_Equipment_Start + 3;;
- #endif
- #endif
- enum EDragonSoulDeckType
- {
- DS_DECK_1,
- DS_DECK_2,
- DS_DECK_MAX_NUM = 2,
- };
- enum EDragonSoulGradeTypes
- {
- DRAGON_SOUL_GRADE_NORMAL,
- DRAGON_SOUL_GRADE_BRILLIANT,
- DRAGON_SOUL_GRADE_RARE,
- DRAGON_SOUL_GRADE_ANCIENT,
- DRAGON_SOUL_GRADE_LEGENDARY,
- DRAGON_SOUL_GRADE_MAX,
- };
- enum EDragonSoulStepTypes
- {
- DRAGON_SOUL_STEP_LOWEST,
- DRAGON_SOUL_STEP_LOW,
- DRAGON_SOUL_STEP_MID,
- DRAGON_SOUL_STEP_HIGH,
- DRAGON_SOUL_STEP_HIGHEST,
- DRAGON_SOUL_STEP_MAX,
- };
- #ifdef ENABLE_COSTUME_SYSTEM
- const DWORD c_Costume_Slot_Start = c_Equipment_Start + 19; // [ÁÖÀÇ] ¼ıÀÚ(19) ÇϵåÄÚµù ÁÖÀÇ. ÇöÀç ¼¹ö¿¡¼ ÄÚ½ºÃõ ½½·ÔÀº 19ºÎÅÍÀÓ. ¼¹ö common/length.h ÆÄÀÏÀÇ EWearPositions ¿°ÅÇü Âü°í.
- const DWORD c_Costume_Slot_Body = c_Costume_Slot_Start + 0;
- const DWORD c_Costume_Slot_Hair = c_Costume_Slot_Start + 1;
- #ifdef ENABLE_COSTUME_WEAPON_SYSTEM
- const DWORD c_Costume_Slot_Weapon = c_Costume_Slot_Start + 2;
- #endif
- const DWORD c_Costume_Slot_Count = 3;
- const DWORD c_Costume_Slot_End = c_Costume_Slot_Start + c_Costume_Slot_Count;
- #endif
- // [ÁÖÀÇ] ¼ıÀÚ(32) ÇϵåÄÚµù ÁÖÀÇ. ÇöÀç ¼¹ö¿¡¼ ¿ëÈ¥¼® ½½·ÔÀº 32ºÎÅÍÀÓ.
- // ¼¹ö common/length.h ÆÄÀÏÀÇ EWearPositions ¿°ÅÇüÀÌ 32±îÁö È®ÀåµÉ °ÍÀ» ¿°µÎÇϰí(32 ÀÌ»óÀº È®Àå Çϱâ Èûµé°Ô µÇ¾îÀÖÀ½.),
- // ±× ÀÌÈĺÎÅ͸¦ ¿ëÈ¥¼® ÀåÂø ½½·ÔÀ¸·Î »ç¿ë.
- const DWORD c_Wear_Max = 32;
- const DWORD c_DragonSoul_Equip_Start = c_ItemSlot_Count + c_Wear_Max;
- const DWORD c_DragonSoul_Equip_Slot_Max = 6;
- const DWORD c_DragonSoul_Equip_End = c_DragonSoul_Equip_Start + c_DragonSoul_Equip_Slot_Max * DS_DECK_MAX_NUM;
- // NOTE: 2013³â 2¿ù 5ÀÏ ÇöÀç... ¿ëÈ¥¼® µ¥Å©´Â 2°³°¡ Á¸ÀçÇϴµ¥, ÇâÈÄ È®Àå °¡´É¼ºÀÌ ÀÖ¾î¼ 3°³ µ¥Å© ¿©À¯ºĞÀ» ÇÒ´ç ÇØ µÒ. ±× µÚ °ø°£Àº º§Æ® Àκ¥Å丮·Î »ç¿ë
- const DWORD c_DragonSoul_Equip_Reserved_Count = c_DragonSoul_Equip_Slot_Max * 3;
- #ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
- // º§Æ® ¾ÆÀÌÅÛÀÌ Á¦°øÇÏ´Â Àκ¥Å丮
- const DWORD c_Belt_Inventory_Slot_Start = c_DragonSoul_Equip_End + c_DragonSoul_Equip_Reserved_Count;
- const DWORD c_Belt_Inventory_Width = 4;
- const DWORD c_Belt_Inventory_Height= 4;
- const DWORD c_Belt_Inventory_Slot_Count = c_Belt_Inventory_Width * c_Belt_Inventory_Height;
- const DWORD c_Belt_Inventory_Slot_End = c_Belt_Inventory_Slot_Start + c_Belt_Inventory_Slot_Count;
- #endif
- #ifdef WJ_SPLIT_INVENTORY_SYSTEM
- const DWORD c_Skill_Book_Inventory_Slot_Start = c_Belt_Inventory_Slot_End;
- const DWORD c_Skill_Book_Inventory_Slot_Count = 135;
- const DWORD c_Skill_Book_Inventory_Slot_End = c_Skill_Book_Inventory_Slot_Start + c_Skill_Book_Inventory_Slot_Count;
- const DWORD c_Upgrade_Items_Inventory_Slot_Start = c_Skill_Book_Inventory_Slot_End;
- const DWORD c_Upgrade_Items_Inventory_Slot_Count = 135;
- const DWORD c_Upgrade_Items_Inventory_Slot_End = c_Upgrade_Items_Inventory_Slot_Start + c_Upgrade_Items_Inventory_Slot_Count;
- const DWORD c_Stone_Inventory_Slot_Start = c_Upgrade_Items_Inventory_Slot_End;
- const DWORD c_Stone_Inventory_Slot_Count = 135;
- const DWORD c_Stone_Inventory_Slot_End = c_Stone_Inventory_Slot_Start + c_Stone_Inventory_Slot_Count;
- const DWORD c_Box_Inventory_Slot_Start = c_Stone_Inventory_Slot_End;
- const DWORD c_Box_Inventory_Slot_Count = 135;
- const DWORD c_Box_Inventory_Slot_End = c_Box_Inventory_Slot_Start + c_Box_Inventory_Slot_Count;
- const DWORD c_Efsun_Inventory_Slot_Start = c_Box_Inventory_Slot_End;
- const DWORD c_Efsun_Inventory_Slot_Count = 135;
- const DWORD c_Efsun_Inventory_Slot_End = c_Efsun_Inventory_Slot_Start + c_Efsun_Inventory_Slot_Count;
- const DWORD c_Cicek_Inventory_Slot_Start = c_Efsun_Inventory_Slot_End;
- const DWORD c_Cicek_Inventory_Slot_Count = 135;
- const DWORD c_Cicek_Inventory_Slot_End = c_Cicek_Inventory_Slot_Start + c_Cicek_Inventory_Slot_Count;
- const DWORD c_Inventory_Count = c_Cicek_Inventory_Slot_End;
- #endif
- // ¿ëÈ¥¼® Àü¿ë Àκ¥Å丮
- const DWORD c_DragonSoul_Inventory_Start = 0;
- const DWORD c_DragonSoul_Inventory_Box_Size = 32;
- const DWORD c_DragonSoul_Inventory_Count = CItemData::DS_SLOT_NUM_TYPES * DRAGON_SOUL_GRADE_MAX * c_DragonSoul_Inventory_Box_Size;
- const DWORD c_DragonSoul_Inventory_End = c_DragonSoul_Inventory_Start + c_DragonSoul_Inventory_Count;
- enum ESlotType
- {
- SLOT_TYPE_NONE,
- SLOT_TYPE_INVENTORY,
- SLOT_TYPE_SKILL,
- SLOT_TYPE_EMOTION,
- SLOT_TYPE_SHOP,
- SLOT_TYPE_EXCHANGE_OWNER,
- SLOT_TYPE_EXCHANGE_TARGET,
- SLOT_TYPE_QUICK_SLOT,
- SLOT_TYPE_SAFEBOX,
- SLOT_TYPE_PRIVATE_SHOP,
- SLOT_TYPE_MALL,
- SLOT_TYPE_DRAGON_SOUL_INVENTORY,
- #ifdef WJ_SPLIT_INVENTORY_SYSTEM
- SLOT_TYPE_SKILL_BOOK_INVENTORY,
- SLOT_TYPE_UPGRADE_ITEMS_INVENTORY,
- SLOT_TYPE_STONE_INVENTORY,
- SLOT_TYPE_BOX_INVENTORY,
- SLOT_TYPE_EFSUN_INVENTORY,
- SLOT_TYPE_CICEK_INVENTORY,
- #endif
- SLOT_TYPE_MAX,
- };
- enum EWindows
- {
- RESERVED_WINDOW,
- INVENTORY, // ±âº» Àκ¥Å丮. (45Ä Â¥¸®°¡ 2ÆäÀÌÁö Á¸Àç = 90Ä)
- EQUIPMENT,
- SAFEBOX,
- MALL,
- DRAGON_SOUL_INVENTORY,
- GROUND, // NOTE: 2013³â 2¿ù5ÀÏ ÇöÀç±îÁö unused.. ¿Ö Àִ°ÅÁö???
- BELT_INVENTORY, // NOTE: W2.1 ¹öÀü¿¡ »õ·Î Ãß°¡µÇ´Â º§Æ® ½½·Ô ¾ÆÀÌÅÛÀÌ Á¦°øÇÏ´Â º§Æ® Àκ¥Å丮
- #ifdef WJ_SPLIT_INVENTORY_SYSTEM
- SKILL_BOOK_INVENTORY,
- UPGRADE_ITEMS_INVENTORY,
- STONE_INVENTORY,
- BOX_INVENTORY,
- EFSUN_INVENTORY,
- CICEK_INVENTORY,
- #endif
- WINDOW_TYPE_MAX,
- };
- enum EDSInventoryMaxNum
- {
- DS_INVENTORY_MAX_NUM = c_DragonSoul_Inventory_Count,
- DS_REFINE_WINDOW_MAX_NUM = 15,
- };
- #pragma pack (push, 1)
- #define WORD_MAX 0xffff
- typedef struct SItemPos
- {
- BYTE window_type;
- WORD cell;
- SItemPos ()
- {
- window_type = INVENTORY;
- cell = WORD_MAX;
- }
- SItemPos (BYTE _window_type, WORD _cell)
- {
- window_type = _window_type;
- cell = _cell;
- }
- // ±âÁ¸¿¡ cellÀÇ ÇüÀ» º¸¸é BYTE°¡ ´ëºÎºĞÀÌÁö¸¸, oi
- // ¾î¶² ºÎºĞÀº int, ¾î¶² ºÎºĞÀº WORD·Î µÇ¾îÀÖ¾î,
- // °¡Àå Å« ÀÚ·áÇüÀÎ int·Î ¹Ş´Â´Ù.
- // int operator=(const int _cell)
- // {
- //window_type = INVENTORY;
- // cell = _cell;
- // return cell;
- // }
- bool IsValidCell()
- {
- switch (window_type)
- {
- case INVENTORY:
- return cell < c_Inventory_Count;
- break;
- case EQUIPMENT:
- return cell < c_DragonSoul_Equip_End;
- break;
- case DRAGON_SOUL_INVENTORY:
- return cell < (DS_INVENTORY_MAX_NUM);
- break;
- default:
- return false;
- }
- }
- bool IsEquipCell()
- {
- switch (window_type)
- {
- case INVENTORY:
- case EQUIPMENT:
- return (c_Equipment_Start + c_Wear_Max > cell) && (c_Equipment_Start <= cell);
- break;
- case BELT_INVENTORY:
- case DRAGON_SOUL_INVENTORY:
- return false;
- break;
- default:
- return false;
- }
- }
- #ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
- bool IsBeltInventoryCell()
- {
- bool bResult = c_Belt_Inventory_Slot_Start <= cell && c_Belt_Inventory_Slot_End > cell;
- return bResult;
- }
- #endif
- #ifdef WJ_SPLIT_INVENTORY_SYSTEM
- bool IsSkillBookInventoryCell()
- {
- bool bResult = c_Skill_Book_Inventory_Slot_Start <= cell && c_Skill_Book_Inventory_Slot_End > cell;
- return bResult;
- }
- bool IsUpgradeItemsInventoryCell()
- {
- bool bResult = c_Upgrade_Items_Inventory_Slot_Start <= cell && c_Upgrade_Items_Inventory_Slot_End > cell;
- return bResult;
- }
- bool IsStoneInventoryCell()
- {
- bool bResult = c_Stone_Inventory_Slot_Start <= cell && c_Stone_Inventory_Slot_End > cell;
- return bResult;
- }
- bool IsBoxInventoryCell()
- {
- bool bResult = c_Box_Inventory_Slot_Start <= cell && c_Box_Inventory_Slot_End > cell;
- return bResult;
- }
- bool IsEfsunInventoryCell()
- {
- bool bResult = c_Efsun_Inventory_Slot_Start <= cell && c_Efsun_Inventory_Slot_End > cell;
- return bResult;
- }
- bool IsCicekInventoryCell()
- {
- bool bResult = c_Cicek_Inventory_Slot_Start <= cell && c_Cicek_Inventory_Slot_End > cell;
- return bResult;
- }
- #endif
- bool operator==(const struct SItemPos& rhs) const
- {
- return (window_type == rhs.window_type) && (cell == rhs.cell);
- }
- bool operator<(const struct SItemPos& rhs) const
- {
- return (window_type < rhs.window_type) || ((window_type == rhs.window_type) && (cell < rhs.cell));
- }
- } TItemPos;
- #pragma pack(pop)
- const DWORD c_QuickBar_Line_Count = 3;
- const DWORD c_QuickBar_Slot_Count = 12;
- const float c_Idle_WaitTime = 5.0f;
- const int c_Monster_Race_Start_Number = 6;
- const int c_Monster_Model_Start_Number = 20001;
- const float c_fAttack_Delay_Time = 0.2f;
- const float c_fHit_Delay_Time = 0.1f;
- const float c_fCrash_Wave_Time = 0.2f;
- const float c_fCrash_Wave_Distance = 3.0f;
- const float c_fHeight_Step_Distance = 50.0f;
- enum
- {
- DISTANCE_TYPE_FOUR_WAY,
- DISTANCE_TYPE_EIGHT_WAY,
- DISTANCE_TYPE_ONE_WAY,
- DISTANCE_TYPE_MAX_NUM,
- };
- const float c_fMagic_Script_Version = 1.0f;
- const float c_fSkill_Script_Version = 1.0f;
- const float c_fMagicSoundInformation_Version = 1.0f;
- const float c_fBattleCommand_Script_Version = 1.0f;
- const float c_fEmotionCommand_Script_Version = 1.0f;
- const float c_fActive_Script_Version = 1.0f;
- const float c_fPassive_Script_Version = 1.0f;
- // Used by PushMove
- const float c_fWalkDistance = 175.0f;
- const float c_fRunDistance = 310.0f;
- #define FILE_MAX_LEN 128
- enum
- {
- ITEM_SOCKET_SLOT_MAX_NUM = 3,
- ITEM_ATTRIBUTE_SLOT_MAX_NUM = 7,
- };
- #pragma pack(push)
- #pragma pack(1)
- typedef struct SQuickSlot
- {
- BYTE Type;
- BYTE Position;
- } TQuickSlot;
- typedef struct TPlayerItemAttribute
- {
- BYTE bType;
- short sValue;
- } TPlayerItemAttribute;
- typedef struct packet_item
- {
- DWORD vnum;
- BYTE count;
- DWORD flags;
- DWORD anti_flags;
- long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
- TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
- } TItemData;
- typedef struct packet_shop_item
- {
- DWORD vnum;
- long long price;
- BYTE count;
- BYTE display_pos;
- long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
- TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
- } TShopItemData;
- #pragma pack(pop)
- inline float GetSqrtDistance(int ix1, int iy1, int ix2, int iy2) // By sqrt
- {
- float dx, dy;
- dx = float(ix1 - ix2);
- dy = float(iy1 - iy2);
- return sqrtf(dx*dx + dy*dy);
- }
- // DEFAULT_FONT
- void DefaultFont_Startup();
- void DefaultFont_Cleanup();
- void DefaultFont_SetName(const char * c_szFontName);
- CResource* DefaultFont_GetResource();
- CResource* DefaultItalicFont_GetResource();
- // END_OF_DEFAULT_FONT
- void SetGuildSymbolPath(const char * c_szPathName);
- const char * GetGuildSymbolFileName(DWORD dwGuildID);
- BYTE SlotTypeToInvenType(BYTE bSlotType);