public void HunterRewardCalculate(E_RewardType type) //헌터 보상 정산만.
    {
        HunterIdea         hunter       = CharactorFrame.GetInstance().hunterIdea;
        Quest              writtenQuest = QuestManager.GetInstance().GetQuest(hunter.associatedQuestKey);
        List <QuestPerMob> huntedList   = hunter.HuntedList;
        int hunterExpireTerm            = hunter.GetHunterExpireGap();
        int hunterPayment = PayFormula.CalculateHuntLastPayment(writtenQuest, hunterExpireTerm, huntedList, type);

        GoldManager.GetInstance().AdjustGold(-1 * hunterPayment, GoldManager.E_PayType.TO_HUNTER);

        if (type != E_RewardType.PAYMENT_DENY)
        {
            Inventory.GetInstance().AddMobEviByList(CharactorFrame.GetInstance().hunterIdea.HuntedList);
        }
    }
示例#2
0
    /*
     * 플레이어가 작성했던 퀘스트
     * 헌터가 실제로 잡아온 것.
     * 헌터가 의뢰 완수 후 반납 하러 왔을 때 주는 돈(성공보수)
     */
    public static int CalculateHuntLastPayment(Quest writtenQuest, int expireTerm, List <QuestPerMob> huntedList, E_RewardType paymentWay)
    {
        int   payment        = 0;
        float hunterWholePay = ClientWholePayment(writtenQuest, expireTerm) * Constant.hunterRatio;
        float hunterLastPay  = hunterWholePay - (hunterWholePay * Constant.depositRatio);
        float completeness   = writtenQuest.GetCompleteness(huntedList);

        switch (paymentWay)
        {
        case E_RewardType.ALL_PAYMENT:
            payment = (int)hunterLastPay;
            break;

        case E_RewardType.PARTIAL_PAYMENT:
            payment = (int)(hunterLastPay * (completeness / 100));

            break;

        case E_RewardType.PAYMENT_DENY:
            payment = 0;
            break;
        }
        return(payment);
    }