#pragma once //C_NA_0_20100520_ACSYSTEM_CHANGED #include #include class AchievementManager : public AchievementNotify { private: enum {OBJECT_TYPE_NONE = 0, OBJECT_TYPE_CODE, //¾ÆÀÌÅÛ NPC µîÀÇ Äڵ带 »ç¿ë OBJECT_TYPE_KEY,}; //¾÷Àû ½ºÅ©¸³Æ®¿¡ ۸¦ »ç¿ë public: AchievementManager(void); virtual ~AchievementManager(void); virtual void Init( Player * player ); virtual void Release(); BOOL IncMissionValue( WORD object_code); //¾÷Àû ¼öÄ¡¸¦ 1 Áõ°¡ ½ÃŲ´Ù. (¹Ì¼Ç ¿Ï·á Àü¿ë) BOOL IncCurseTowerValue( WORD object_key); //¾÷Àû ¼öÄ¡¸¦ 1 Áõ°¡ ½ÃŲ´Ù. (ÀúÁÖÀÇ Å¾ Àü¿ë) BOOL IncConditionValue( BYTE type ,WORD object_key, WORD object_code); //¾÷Àû ¼öÄ¡¸¦ 1 Áõ°¡ ½ÃŲ´Ù. BOOL AddConditionValue( BYTE type ,WORD object_key ,WORD object_value); //¾÷Àû ¼öÄ¡¸¦ ÀԷ°ª¸¸Å­ Áõ°¡½ÃŲ´Ù. (GM ¸í·É¾î·Î¸¸ »ç¿ë) BOOL SetConditionValue( WORD location ,WORD index ,BYTE object_index, WORD value); //¾÷Àû ¼öÄ¡¸¦ ÀԷ°ª À¸·Î ¼³Á¤ÇÑ´Ù. (GM ¸í·É¾î·Î¸¸ »ç¿ë) void RewardAchievement(WORD index_number); //º¸»ó ¹Þ±â¸¦ ÇÑ´Ù. BOOL ClearAC( WORD location_code ); //ÀÔ·ÂµÈ Áö¿ªÀÇ °ªÀ» ÃʱâÈ­ ÇÑ´Ù. (GM ¸í·É¾î·Î¸¸ »ç¿ë) BOOL CanCollectTreasureBox(const int location_code);//º¸¹°»óÀÚ¸¦ Ç¥½ÃÇØµµ µÇ´ÂÁö üũ ÇÑ´Ù. void Serialize( Character_Achievements& achievement_info, ACHIEVEMENT_SERIALIZE eType ); public: void OnCanCollectTreasureBox(); //º¸¹°»óÀÚ Ã¤Áý °¡´É »óŰ¡ µÇ¾ú´Ù. void OnValueChanged(WORD index, WORD location_code, BYTE object_index, WORD previous_value, WORD current_value); //¾÷Àû °ªÀÌ º¯°æµÇ¾úÀ»¶§ È£ÃâµÈ´Ù. (À̺¥Æ® ¸Þ¼Òµå) void Onreward(WORD index, WORD location_code, Achievement_ParserInfo_Reward rewards_[MAX_ACHIEVEMENT_REWARD], bool is_reward, RC::eAC_RESULT rc); //º¸»ó ¿©ºÎ°¡ º¯°æµÇ¾úÀ»¶§ È£ÃâµÈ´Ù. (À̺¥Æ® ¸Þ¼Òµå) //_NA_001990_ACSYSTEM_ADD BOOL ProcessItemUse(SLOTCODE Code, WORD ACCode, BYTE ACReferenceID); BOOL ProcessItemObtain(SLOTCODE Code, WORD ACCode, BYTE ACReferenceID, WORD count = 1); BOOL ProcessItemEquip(SLOTCODE Code, WORD ACCode, BYTE ACReferenceID); BOOL ProcessPerkLevel(WORD id, WORD level); BOOL ProcessSkillStepUp(WORD line); BOOL ProcessMissionClearTime(WORD missioncode, WORD time); BOOL ProcessLevelUp(WORD level); // ·¹º§¾÷°úÁ¦ BOOL ProcessACClear(WORD index); // AC¿Ï·á°úÁ¦ BOOL ProcessQuest(QCODE Code, WORD ACCode, BYTE ACReferenceID); #ifdef _NA_003027_20111013_HONOR_SYSTEM BOOL ProcessFameRepute(BYTE type, WORD code); BOOL ProcessFameReputeCount(BYTE type, WORD grade); BOOL ProcessQuestCount(WORD normalQ_count, WORD dailyQ_count); BOOL ProcessLotto(int lotto_rank); BOOL ProcessDailyQuest(BOOL success); #endif //_NA_003027_20111013_HONOR_SYSTEM //_NA_002935_20110704_ITEM_SCORE BOOL ProcessItemScore(const int item_score); // ¾ÆÀÌÅÛ Æò°¡ Á¡¼ö ´Þ¼º °úÁ¦ bool ProcessEnchant(const SLOTCODE item_code, const uint8_t enchant); // ÀÎþƮ ´Þ¼º void SetValueZero_if(ACHIEVEMENT_OBJECT_TYPE type, WORD mapcode); void SetValueMax_if(ACHIEVEMENT_OBJECT_TYPE type, WORD mapcode, DWORD value, WORD scale = 1); void SetValue_if(ACHIEVEMENT_OBJECT_TYPE type, /*WORD keycode,*/ WORD value); // for 2 argument void ProcessBattleEnter(WORD mapcode); void ProcessBattleResult(WORD mapcode, DWORD heal, WORD maxDamage, DWORD damageToMonster, DWORD damageByMonster, WORD countKill, WORD countDead); // ÀüÅõÁ¤º¸Ã¢ BOOL IncConditionValue(ACHIEVEMENT_OBJECT_TYPE actype, WORD data, WORD count = 1); // ¾÷Àû¿¡ ÇØ´çÇÏ´Â Ç׸ñÀÎÁö È®ÀÎÈÄ 1 Áõ°¡ ½ÃŲ´Ù. BOOL GetAchievement(Achievement_SearchInfo* achievement_parserInfo, OUT AchievementObjectInfo& object_info); BOOL SetAchievementValue(Achievement_SearchInfo* achievement_parserInfo, WORD value, ACHIEVEMENT_VALUE_CHANGE_TYPE type); #ifdef _NA_008166_20150330_MODIFY_AC_LEVELUP //ACHIEVEMENT_OBJECT_LEVELUP, ·¹º§¾÷ACÀÇ ¼öÄ¡Áõ°¡Ã³¸®´Â ¿©±â¼­ BOOL IncConditionValue_LevelUpAC(WORD data, WORD count = 1); BOOL GetFlag_InitializeLevelUpAC() { return is_initialize_levelup_ac_;} #endif //_NA_008166_20150330_MODIFY_AC_LEVELUP private: void Reward(WORD index, WORD location_code, WORD reward_type, WORD reward_code); //½ÇÁ¦ º¸»ó ¹Þ±â 󸮸¦ ÇÑ´Ù. void SendRewardFail(RC::eAC_RESULT rc); //º¸»ó ½ÇÆÐ ¸Þ½ÃÁö¸¦ Àü¼ÛÇÑ´Ù. #ifdef _NA_008166_20150330_MODIFY_AC_LEVELUP VOID _SetFlag_InitializeLevelUpAC() {is_initialize_levelup_ac_ = TRUE; } #endif //_NA_008166_20150330_MODIFY_AC_LEVELUP private: AchievementSearch* achievement_search_; //Key(¾ÆÀÌÅÛÄÚµå, ¸ó½ºÅÍÄÚµå µîµî) ·Î ¾÷ÀûÀ» ãÀ»¼ö ÀÖ´Ù. Achievement achievement_; //¾÷ÀûÀ» °ü¸®ÇÑ´Ù. Player *player_; //Ç÷¹ÀÌ¾î °´Ã¼ #ifdef _NA_008166_20150330_MODIFY_AC_LEVELUP BOOL is_initialize_levelup_ac_; #endif //_NA_008166_20150330_MODIFY_AC_LEVELUP };