void giveMemberReward(PlayerCreature* pPC, uint type ) { Exp_t exp = ExpRewardTable[pPC->getRace()][pPC->getLevel()]; Gold_t gold = GoldRewardTable[pPC->getRace()][type]; pPC->increaseGoldEx(gold); GCModifyInformation gcMI; gcMI.addLongData(MODIFY_GOLD, pPC->getGold()); if (pPC->isSlayer() ) { Slayer* pSlayer = dynamic_cast<Slayer*>(pPC); increaseDomainExp(pSlayer, pSlayer->getHighestSkillDomain(), exp, gcMI); pSlayer->getPlayer()->sendPacket(&gcMI); } else if (pPC->isVampire() ) { Vampire* pVampire = dynamic_cast<Vampire*>(pPC); increaseVampExp(pVampire, exp, gcMI); pVampire->getPlayer()->sendPacket(&gcMI); } else if (pPC->isOusters() ) { GCModifyInformation gcMI; Ousters* pOusters = dynamic_cast<Ousters*>(pPC); increaseOustersExp(pOusters, exp, gcMI); } }
GQuestElement::ResultType GQuestGiveDomainExpElement::checkCondition(PlayerCreature* pPC ) const { if (!pPC->isSlayer() ) return FAIL; GCModifyInformation gcMI; Slayer* pSlayer = dynamic_cast<Slayer*>(pPC); increaseDomainExp(pSlayer, pSlayer->getHighestSkillDomain(), m_Amount, gcMI); pSlayer->getPlayer()->sendPacket(&gcMI); GCSystemMessage gcSM; gcSM.setMessage("도메인 경험치를 획득했습니다."); pSlayer->getPlayer()->sendPacket(&gcSM); return OK; }
GQuestElement::ResultType GQuestAdvanceClassElement::checkCondition(PlayerCreature* pPC ) const { if (pPC->getLevel() != 150 ) return FAIL; Exp_t advExp = 0; if (pPC->isSlayer() ) { Slayer* pSlayer = dynamic_cast<Slayer*>(pPC); SkillDomainType_t domain = pSlayer->getHighestSkillDomain(); DomainInfo* pDomainInfo = g_pSkillDomainInfoManager->getDomainInfo((SkillDomain)domain, pPC->getLevel()); if (pDomainInfo == NULL ) return FAIL; Exp_t goalExp = pDomainInfo->getGoalExp(); Exp_t currentExp = goalExp - pSlayer->getGoalExp(domain); advExp = (Exp_t)(currentExp * 0.0688933574); } else if (pPC->isVampire() ) { Vampire* pVampire = dynamic_cast<Vampire*>(pPC); VampEXPInfo* pExpInfo = g_pVampEXPInfoManager->getVampEXPInfo(pVampire->getLevel()); if (pExpInfo == NULL ) return FAIL; Exp_t goalExp = pExpInfo->getGoalExp(); Exp_t currentExp = goalExp - pVampire->getGoalExp(); advExp = currentExp / 100; } else if (pPC->isOusters() ) { Ousters* pOusters = dynamic_cast<Ousters*>(pPC); OustersEXPInfo* pExpInfo = g_pOustersEXPInfoManager->getOustersEXPInfo(pOusters->getLevel()); if (pExpInfo == NULL ) return FAIL; Exp_t goalExp = pExpInfo->getGoalExp(); Exp_t currentExp = goalExp - pOusters->getGoalExp(); advExp = currentExp / 100; } advExp = min((int)advExp, 18496191); // ÇϵåÄÚµù -_- pPC->increaseAdvancementClassExp(advExp, false); return OK; }