Ejemplo n.º 1
0
        public static bool Prefix(CharacterObject attackerTroop,
                                  CharacterObject attackedTroop,
                                  int damage,
                                  bool isFatal,
                                  CombatXpModel.MissionTypeEnum missionType,
                                  out int xpAmount)
        {
            int    val2 = 100;
            double num1;

            if (attackedTroop == null)
            {
                num1 = 0.400000005960464 * 2.0 * Math.Min(damage, val2);
            }
            else
            {
                val2 = attackedTroop.MaxHitPoints();
                num1 = 0.400000005960464 * (((double)attackedTroop.GetPower() + 0.5) * (double)(Math.Min(damage, val2) + (isFatal ? val2 : 0)));
            }
            double num2;

            switch (missionType)
            {
            case CombatXpModel.MissionTypeEnum.Battle:
                num2 = 1.0;
                break;

            case CombatXpModel.MissionTypeEnum.PracticeFight:
                num2 = 1.0 / 16.0;
                break;

            case CombatXpModel.MissionTypeEnum.Tournament:
                num2 = 0.330000013113022;
                break;

            case CombatXpModel.MissionTypeEnum.SimulationBattle:
                num2 = 0.899999976158142;
                break;

            case CombatXpModel.MissionTypeEnum.NoXp:
                num2 = 0.0;
                break;

            default:
                num2 = 1.0;
                break;
            }
            float f = (float)(num1 * num2 * SubModule.Settings.Battle_SendAllTroops_XPMultiplier);

            xpAmount = MathF.Round(f);

            return(false);
        }
Ejemplo n.º 2
0
 public static void GetXpFromHit(
     ref CharacterObject attackerTroop,
     ref CharacterObject captain,
     ref CharacterObject attackedTroop,
     ref PartyBase party,
     ref int damage,
     ref bool isFatal,
     ref CombatXpModel.MissionTypeEnum missionType,
     ref int xpAmount)
 {
     try
     {
         if (party.IsPlayerParty() &&
             !attackerTroop.IsPlayer() &&
             BannerlordCheatsSettings.Instance?.TroopExperienceMultiplier > 1f)
         {
             xpAmount = (int)Math.Round(xpAmount * BannerlordCheatsSettings.Instance.TroopExperienceMultiplier);
         }
     }
     catch (Exception e)
     {
         SubModule.LogError(e, typeof(TroopExperienceMultiplier));
     }
 }
Ejemplo n.º 3
0
        private static bool Prefix(CharacterObject attackerTroop, CharacterObject attackedTroop, int damage, bool isFatal, CombatXpModel.MissionTypeEnum missionType, out int xpAmount)
        {
#if VERSION111
            int num = attackedTroop.MaxHitPoints();
            xpAmount = MBMath.Round(0.4f * ((attackedTroop.GetPower() + 0.5f) * (float)(Math.Min(damage, num) + (isFatal ? num : 0))));

            if (missionType == CombatXpModel.MissionTypeEnum.SimulationBattle)
            {
#pragma warning disable CS1717 // Assignment made to same variable
                xpAmount = xpAmount;
#pragma warning restore CS1717 // Assignment made to same variable
            }
            if (missionType == CombatXpModel.MissionTypeEnum.PracticeFight)
            {
                xpAmount = MathF.Round((float)xpAmount * TournamentXPSettings.Instance.ArenaXPAdjustment);
            }
            if (missionType == CombatXpModel.MissionTypeEnum.Tournament)
            {
                xpAmount = MathF.Round((float)xpAmount * TournamentXPSettings.Instance.TournamentXPAdjustment);
            }
#endif
#if VERSION120
            float single;
            int   num   = attackedTroop.MaxHitPoints();
            float power = 0.4f * ((attackedTroop.GetPower() + 0.5f) * (Math.Min(damage, num) + (isFatal ? num : 0)));
            if (missionType == CombatXpModel.MissionTypeEnum.NoXp)
            {
                single = 0f;
            }
            else if (missionType == CombatXpModel.MissionTypeEnum.PracticeFight)
            {
                single = TournamentXPSettings.Instance.ArenaXPAdjustment;
            }
            else if (missionType == CombatXpModel.MissionTypeEnum.Tournament)
            {
                single = TournamentXPSettings.Instance.TournamentXPAdjustment;
            }
            else if (missionType == CombatXpModel.MissionTypeEnum.SimulationBattle)
            {
                single = 0.9f;
            }
            else
            {
                single = (missionType == CombatXpModel.MissionTypeEnum.Battle ? 1f : 1f);
            }
            xpAmount = MathF.Round(power * single);
#endif
            return(false);
        }
        static void Postfix(CharacterObject attackerTroop, CharacterObject attackedTroop, int damage, bool isFatal, CombatXpModel.MissionTypeEnum missionType, out int xpAmount)
        {
            int   num  = attackedTroop.MaxHitPoints();
            float num2 = 0.4f * ((attackedTroop.GetPower() + 0.5f) * (float)(Math.Min(damage, num) + (isFatal ? num : 0)));
            float num3;

            if (missionType == CombatXpModel.MissionTypeEnum.NoXp)
            {
                num3 = 0f;
            }
            else if (missionType == CombatXpModel.MissionTypeEnum.PracticeFight)
            {
                num3 = Settings.ArenaHitXP;
            }
            else if (missionType == CombatXpModel.MissionTypeEnum.Tournament)
            {
                num3 = Settings.TournamentHitXP;
            }
            else if (missionType == CombatXpModel.MissionTypeEnum.SimulationBattle)
            {
                num3 = 0.9f;
            }
            else
            {
                num3 = ((missionType == CombatXpModel.MissionTypeEnum.Battle) ? 1f : 1f);
            }
            xpAmount = MBMathF.Round(num2 * num3);
        }
Ejemplo n.º 5
0
        private static void Postfix(CharacterObject attackerTroop, CharacterObject attackedTroop, int damage, bool isFatal, CombatXpModel.MissionTypeEnum missionType, out int xpAmount)
        {
            int num = attackedTroop.MaxHitPoints();

            xpAmount = MBMath.Round(0.4f * ((attackedTroop.GetPower() + 0.5f) * (float)(Math.Min(damage, num) + (isFatal ? num : 0))));

            if (missionType == CombatXpModel.MissionTypeEnum.SimulationBattle)
            {
#pragma warning disable CS1717 // Assignment made to same variable
                xpAmount = xpAmount;
#pragma warning restore CS1717 // Assignment made to same variable
            }
            if (missionType == CombatXpModel.MissionTypeEnum.PracticeFight)
            {
                xpAmount = MathF.Round((float)xpAmount * TournamentXPSettings.Instance.ArenaXPAdjustment);
            }
            if (missionType == CombatXpModel.MissionTypeEnum.Tournament)
            {
                xpAmount = MathF.Round((float)xpAmount * TournamentXPSettings.Instance.TournamentXPAdjustment);
            }
        }
Ejemplo n.º 6
0
        private static bool Prefix(CharacterObject attackerTroop, CharacterObject attackedTroop, int damage, bool isFatal, CombatXpModel.MissionTypeEnum missionType, out int xpAmount)
        {
            float single;
            int   num   = attackedTroop.MaxHitPoints();
            float power = 0.4f * ((attackedTroop.GetPower() + 0.5f) * (Math.Min(damage, num) + (isFatal ? num : 0)));

            if (missionType == CombatXpModel.MissionTypeEnum.NoXp)
            {
                single = 0f;
            }
            else if (missionType == CombatXpModel.MissionTypeEnum.PracticeFight)
            {
                single = TournamentXPSettings.Instance.ArenaXPAdjustment;
            }
            else if (missionType == CombatXpModel.MissionTypeEnum.Tournament)
            {
                single = TournamentXPSettings.Instance.TournamentXPAdjustment;
            }
            else if (missionType == CombatXpModel.MissionTypeEnum.SimulationBattle)
            {
                single = 0.9f;
            }
            else
            {
                single = (missionType == CombatXpModel.MissionTypeEnum.Battle ? 1f : 1f);
            }
            xpAmount = MathF.Round(power * single);

            return(false);
        }