#pragma once #include #include #include // ITEMDROPINFO.txtÀÇ // b_index ÇʵåÀÇ »ó¼ö°ª enum eDROP_TYPE { DROP_NONE = 0, DROP_MONEY_1 = 1, DROP_MONEY_40 = 5, DROP_MONEY_400 = 7, DROP_ITEM_0 = 101, DROP_ITEM_1 = 102, DROP_ITEM_2 = 103, DROP_ITEM_3 = 104, DROP_ITEM_4 = 105, DROP_ITEM_5 = 106, DROP_ITEM_6 = 107, DROP_ITEM_7 = 108, DROP_ITEM_8 = 109, DROP_ITEM_9 = 110, DROP_ITEM_10 = 111, DROP_RARE_ITEM = 999, }; class SCItemSlot; class DropItemRatioCalc; class DropFormulaCore { public: DropFormulaCore(void); virtual ~DropFormulaCore(void); VOID Init( TCHAR * tszItemDropPerGradeFile, TCHAR * tszItemDropInfoFile, TCHAR * tszRareItemDropInfoFile ); VOID Reload(); // µå¶ø È®·ü °è»ê BOOL Drop( DWORD PlayerNum, eNPC_GRADE MonsterGrade, LEVELTYPE MonsterDisplayLV, FLOAT fBonusPercent, LEVELTYPE LVAverage, eDROP_TYPE & OUT DropTypeOut, MONEY & OUT rDroppedMoneyOut, SCItemSlot & OUT rDroppedItemSlotOut ); BOOL AdditionalItemDrop( BOOL IsItemDrop, INT MaxArrayNum, WORD * pDropItemRate, WORD * pDropItemCode, SCItemSlot & OUT rDroppedItemSlotOut ); // µ· BOOL DropMoneyFunc( FLOAT fBonusPercent, LEVELTYPE LVAverage, eDROP_TYPE DropType, eNPC_GRADE MonsterGrade, LEVELTYPE MonsterDisplayLV, MONEY & OUT rDropMoney ); // ÀÏ¹Ý ¾ÆÀÌÅÛ BOOL DropItemFunc( eDROP_TYPE DropType, LEVELTYPE MonsterDisplayLV, SCItemSlot & OUT rDropItemSlot ); // ·¹¾î ¾ÆÀÌÅÛ BOOL DropRareItemFunc( DWORD PlayerNum, eNPC_GRADE MonsterGrade, LEVELTYPE MonsterDisplayLV, SCItemSlot & OUT rDropItemSlot ); // »óÀ§ ¸ó½ºÅÍ ¾ÆÀÌÅÛ BOOL DropHigherMonsterItemFunc( INT MaxArrayNum, WORD * pDropItemRate, WORD * pDropItemCode, SCItemSlot & OUT rDropItemSlot ); protected: DropItemRatioCalc * m_pItemDropRatio; private: FLOAT m_fPlusScriptPercent; //< FormulaRatioParser::Instance()->GetFormulaRatio(RATIO_TYPE_DROP)->m_fRatio °ª enum { MAX_HIGHER_MONSTER_ITEM_DROP_UNIT = (10000-1), }; //------------------------------------------------------------------------------------------------------------------------------------------ // µå¶ø È®·ü °ü·Ã ¸É¹ö VOID _InitRatio(); // µå¶ø È®·ü ¼±Åñâ // +1 Àº ·¹¾î¾ÆÀÌÅÛ¶§¹®¿¡ ReliableRatioRandomizer m_DropRatioSelecter[eNPC_GRADE_MAX][MAX_PARTYMEMBER_NUM+1]; // ·¹¾î ¾ÆÀÌÅÛ È®·ü ¼±Åñâ // MAX_LEVEL_STEP_NUMÀº ·¹¾î¾ÆÀÌÅÛ ·¹º§Å¸ÀÔ ±¸°£ element°³¼ö°¡ MAX_LEVEL_STEP_NUMÀ» ³ÑÁö ¸øÇÑ´Ù. // 1~20 : 0 // 21~40 : 1 // 41~60 : 2 // 61~100 : 3 LEVELTYPE m_Section[MAX_LEVEL_STEP_NUM]; ReliableRatioRandomizer m_RareItemDropRatioSelecter[MAX_LEVEL_STEP_NUM][eNPC_GRADE_MAX][MAX_PARTYMEMBER_NUM+1]; //------------------------------------------------------------------------------------------------------------------------------------------ // ÆÄ¼­ °ü·Ã ItemDropParser m_ItemDropParser; RareItemDropParser m_RareItemDropParser; };