예제 #1
0
        public static void ChangeFactionRelation(Hero lord1, Hero lord2, int change, int offset = 0)
        {
            List <Hero> list = Support.FindFaction(lord2);

            for (int i = 0; i < list.Count; i++)
            {
                Support.ChangeRelation(lord1, list[i], Support.Random(change, change + offset));
            }
        }
예제 #2
0
        public static bool Prefix(int sacrificedMenCount)
        {
            bool flag = sacrificedMenCount >= 1;

            if (flag)
            {
                Support.LogMessage("The troops left behind march bravely to their fates.");
                bool player_trait_skill_gain_enabled = Support.settings.player_trait_skill_gain_enabled;
                if (player_trait_skill_gain_enabled)
                {
                    Campaign.Current.PlayerTraitDeveloper.AddTraitXp(DefaultTraits.Mercy, -(3 * sacrificedMenCount));
                    Campaign.Current.PlayerTraitDeveloper.AddTraitXp(DefaultTraits.Honor, -sacrificedMenCount);
                }
                List <Hero> heroesInMainParty = Support.GetHeroesInMainParty();
                int         num   = sacrificedMenCount / 5;
                bool        flag2 = num < 2;
                if (flag2)
                {
                    num = 2;
                }
                int num2 = num / 2;
                for (int i = 0; i < heroesInMainParty.Count; i++)
                {
                    bool flag3 = (Support.settings.battle_companions_bad_reputation_enabled && heroesInMainParty[i].IsPlayerCompanion) || (Support.settings.battle_family_bad_reputation_enabled && !heroesInMainParty[i].IsPlayerCompanion);
                    if (flag3)
                    {
                        CharacterTraits heroTraits = heroesInMainParty[i].GetHeroTraits();
                        int             num3       = Support.EvaluatePersonality(heroTraits);
                        int             num4       = num3;
                        if (num4 != 1)
                        {
                            if (num4 == 4)
                            {
                                Support.ChangeRelation(Hero.MainHero, heroesInMainParty[i], Support.Random(-num2, 0));
                            }
                        }
                        else
                        {
                            Support.ChangeRelation(Hero.MainHero, heroesInMainParty[i], Support.Random(-num, 0));
                        }
                    }
                }
            }
            return(false);
        }
        public static bool Prefix()
        {
            bool flag = MobileParty.MainParty != null;

            if (flag)
            {
                bool flag2 = MobileParty.MainParty.Party != null;
                if (flag2)
                {
                    bool flag3 = !CompanionBanter.CheckForConfrontation();
                    if (flag3)
                    {
                        bool flag4      = false;
                        bool flag5      = false;
                        bool isStarving = PartyBase.MainParty.IsStarving;
                        if (isStarving)
                        {
                            Support.LogMessage("Your soldiers are starving.");
                            flag4 = true;
                            bool player_trait_skill_gain_enabled = Support.settings.player_trait_skill_gain_enabled;
                            if (player_trait_skill_gain_enabled)
                            {
                                Campaign.Current.PlayerTraitDeveloper.AddTraitXp(DefaultTraits.Mercy, -MobileParty.MainParty.Party.NumberOfAllMembers);
                                Campaign.Current.PlayerTraitDeveloper.AddTraitXp(DefaultTraits.Generosity, -MobileParty.MainParty.Party.NumberOfAllMembers);
                                Campaign.Current.PlayerTraitDeveloper.AddTraitXp(DefaultTraits.Honor, -MobileParty.MainParty.Party.NumberOfAllMembers);
                            }
                        }
                        bool flag6 = (double)MobileParty.MainParty.HasUnpaidWages > 0.0;
                        if (flag6)
                        {
                            Support.LogMessage("With no pay in sight, the men speak of desertion.");
                            flag5 = true;
                            bool player_trait_skill_gain_enabled2 = Support.settings.player_trait_skill_gain_enabled;
                            if (player_trait_skill_gain_enabled2)
                            {
                                Campaign.Current.PlayerTraitDeveloper.AddTraitXp(DefaultTraits.Generosity, -(2 * MobileParty.MainParty.Party.NumberOfAllMembers));
                                Campaign.Current.PlayerTraitDeveloper.AddTraitXp(DefaultTraits.Honor, -MobileParty.MainParty.Party.NumberOfAllMembers);
                            }
                        }
                        bool flag7 = flag4 || flag5;
                        if (flag7)
                        {
                            List <Hero> heroesInMainParty = Support.GetHeroesInMainParty();
                            for (int i = 0; i < heroesInMainParty.Count; i++)
                            {
                                bool flag8 = (Support.settings.battle_companions_bad_reputation_enabled && heroesInMainParty[i].IsPlayerCompanion) || (Support.settings.battle_family_bad_reputation_enabled && !heroesInMainParty[i].IsPlayerCompanion);
                                if (flag8)
                                {
                                    CharacterTraits heroTraits = heroesInMainParty[i].GetHeroTraits();
                                    bool            flag9      = flag4;
                                    if (flag9)
                                    {
                                        switch (Support.EvaluatePersonality(heroTraits))
                                        {
                                        case 1:
                                            Support.ChangeRelation(Hero.MainHero, heroesInMainParty[i], Support.Random(-2, 0));
                                            break;

                                        case 2:
                                            Support.ChangeRelation(Hero.MainHero, heroesInMainParty[i], Support.Random(-4, -1));
                                            break;

                                        case 3:
                                            Support.ChangeRelation(Hero.MainHero, heroesInMainParty[i], Support.Random(-3, 0));
                                            break;

                                        default:
                                            Support.ChangeRelation(Hero.MainHero, heroesInMainParty[i], Support.Chance(-2, -1));
                                            break;
                                        }
                                    }
                                    bool flag10 = flag5;
                                    if (flag10)
                                    {
                                        switch (Support.EvaluatePersonality(heroTraits))
                                        {
                                        case 1:
                                            Support.ChangeRelation(Hero.MainHero, heroesInMainParty[i], Support.Chance(-1, 0));
                                            break;

                                        case 2:
                                            Support.ChangeRelation(Hero.MainHero, heroesInMainParty[i], Support.Random(-7, -3));
                                            break;

                                        case 3:
                                            Support.ChangeRelation(Hero.MainHero, heroesInMainParty[i], Support.Chance(-4, -1));
                                            break;

                                        default:
                                            Support.ChangeRelation(Hero.MainHero, heroesInMainParty[i], Support.Chance(-2, -1));
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(false);
        }
예제 #4
0
        public static void Postfix(CharacterObject winner, Town town)
        {
            bool flag = winner != null && town != null;

            if (flag)
            {
                bool flag2 = winner.IsHero && winner.HeroObject == Hero.MainHero && Support.settings.tournament_bonus_enabled;
                if (flag2)
                {
                    int  num   = 1;
                    int  num2  = 4;
                    bool flag3 = town.Owner != null;
                    if (flag3)
                    {
                        Hero hero  = Support.FindHero(town.Owner);
                        bool flag4 = hero != null;
                        if (flag4)
                        {
                            CharacterTraits heroTraits = hero.GetHeroTraits();
                            bool            flag5      = heroTraits.Honor > 0;
                            if (flag5)
                            {
                                num++;
                                num2++;
                            }
                            bool flag6 = heroTraits.Valor > 0;
                            if (flag6)
                            {
                                num++;
                                num2++;
                            }
                            bool flag7 = heroTraits.Generosity > 0;
                            if (flag7)
                            {
                                int  num3  = Support.Random(100, 1000);
                                bool flag8 = hero.Gold >= num3 * 3;
                                if (flag8)
                                {
                                    GiveGoldAction.ApplyBetweenCharacters(hero, Hero.MainHero, num3, false);
                                    Support.LogFriendlyMessage(hero.Name.ToString() + " has sent you a pouch of gold to congratulate you on your triumph.");
                                }
                            }
                            Support.ChangeRelation(Hero.MainHero, hero, Support.Random(num, num2));
                            Support.ChangeFamilyRelation(Hero.MainHero, hero, num2 / 3, 0);
                        }
                    }
                    bool flag9 = town.Settlement != null;
                    if (flag9)
                    {
                        bool flag10 = town.Settlement.Notables != null;
                        if (flag10)
                        {
                            bool flag11 = town.Settlement.Notables.Any <Hero>();
                            if (flag11)
                            {
                                for (int i = 0; i < 3; i++)
                                {
                                    Support.ChangeRelation(Hero.MainHero, town.Settlement.Notables.GetRandomElement <Hero>(), Support.Chance(1, 2));
                                }
                            }
                        }
                    }
                    List <Hero> heroesInMainParty = Support.GetHeroesInMainParty();
                    for (int j = 0; j < heroesInMainParty.Count; j++)
                    {
                        bool flag12 = (Support.settings.battle_companions_good_reputation_enabled && heroesInMainParty[j].IsPlayerCompanion) || (Support.settings.battle_leaders_good_reputation_enabled && !heroesInMainParty[j].IsPlayerCompanion);
                        if (flag12)
                        {
                            num  = 0;
                            num2 = 1;
                            bool flag13 = heroesInMainParty[j].GetHeroTraits().Valor > 0;
                            if (flag13)
                            {
                                num2++;
                            }
                            bool flag14 = heroesInMainParty[j].GetHeroTraits().Honor > 0;
                            if (flag14)
                            {
                                num2++;
                            }
                        }
                        Support.ChangeRelation(Hero.MainHero, heroesInMainParty[j], Support.Chance(num, num2));
                    }
                    Campaign.Current.PlayerTraitDeveloper.AddTraitXp(DefaultTraits.Valor, Support.Random(10, 40));
                    Hero.MainHero.AddSkillXp(DefaultSkills.Charm, (float)Support.Random(20, 100));
                    Support.LogMessage(Hero.MainHero.Name.ToString() + " has shown great valor in the tournament.");
                }
            }

            //InformationManager.DisplayMessage(new InformationMessage("Triggered EndPostFix", Color.ConvertStringToColor("#FF0042FF")));
        }