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); }