Ejemplo n.º 1
0
        public void CompleteQuest(QuestInstance quest)
        {
            QuestStatus status     = GetQuestStatus(quest);
            bool        successful = status.HasCompletedSuccesfully();

            foreach (HeroInstance hero in status.AssignedHeroes.Values)
            {
                HeroStates targetHeroState = HeroStates.IDLE;
                if (successful)
                {
                    hero.Experience += quest.TotalExperience;
                }
                else
                {
                    if (MathUtilities.RollRandom(status.RiskInjuryRate))
                    {
                        targetHeroState = HeroStates.WOUNDED;
                    }
                    else if (MathUtilities.RollRandom(status.RiskInjuryRate))
                    {
                        targetHeroState = HeroStates.DEAD;
                    }
                }
                hero.HeroState = targetHeroState;
            }

            if (successful)
            {
                ServiceLocator.EconomyService.Gold += quest.GoldReward;
            }
            RemoveQuest(quest);
        }