private static bool Prefix(TournamentBehavior __instance) { var winners = (List <TournamentParticipant>)Traverse.Create(__instance.CurrentMatch).Method("GetWinners").GetValue(); if (winners.Where(x => x.Character.HeroObject == Hero.MainHero).Count() > 0) { if (__instance.CurrentRoundIndex > TournamentPrizePoolBehavior.TournamentReward.LastPayoutIndex) { TournamentPrizePoolBehavior.TournamentReward.LastPayoutIndex = __instance.CurrentRoundIndex; if (TournamentXPSettings.Instance.EnableRenownPerTroopTier) { var renownbonus = 0f; foreach (var team in __instance.CurrentMatch.Teams) { var teambonus = 0f; foreach (var p in team.Participants) { teambonus += TournamentPrizePoolBehavior.GetRenownValue(p.Character); if (p.Character.IsHero && p.Character.HeroObject == Hero.MainHero) { teambonus = 0; break; } } renownbonus += teambonus; } TournamentPrizePoolBehavior.TournamentReward.BonusRenown += renownbonus; } if (TournamentXPSettings.Instance.BonusTournamentMatchGold > 0) { if (TournamentXPSettings.Instance.BonusTournamentMatchGoldImmediate) { GiveGoldAction.ApplyBetweenCharacters(null, Hero.MainHero, TournamentXPSettings.Instance.BonusTournamentMatchGold, false); } else { typeof(TournamentBehavior).GetProperty("OverallExpectedDenars").SetValue(__instance, __instance.OverallExpectedDenars + TournamentXPSettings.Instance.BonusTournamentMatchGold); } } } } return(true); }