示例#1
0
        private static void Postfix(
            DefaultTargetScoreCalculatingModel __instance,
            Settlement settlement,
            MobileParty mobileParty,
            ref float __result)
        {
            PartyOrder partyOrder;

            if (mobileParty == null)
            {
                partyOrder = (PartyOrder)null;
            }
            else
            {
                Hero leaderHero = mobileParty.LeaderHero;
                partyOrder = leaderHero != null?leaderHero.getOrder() : (PartyOrder)null;
            }
            if (partyOrder == null)
            {
                return;
            }
            PartyOrder order = mobileParty.LeaderHero.getOrder();

            if (settlement.OwnerClan == mobileParty.LeaderHero.Clan)
            {
                __result *= order.OwnClanVillagesScoreMultiplier;
            }
            else
            {
                __result *= order.FriendlyVillagesScoreMultiplier;
            }
        }
        private static void Postfix(
            DefaultTargetScoreCalculatingModel __instance,
            Settlement targetSettlement,
            Army.ArmyTypes missionType,
            MobileParty mobileParty,
            float ourStrength,
            ref float __result)
        {
            if (mobileParty.LeaderHero == null)
            {
                return;
            }
            switch (missionType)
            {
            case Army.ArmyTypes.Besieger:
                if (targetSettlement.OwnerClan != null)
                {
                    float num = Math.Max(Math.Min((float)targetSettlement.OwnerClan.Leader.GetRelation(mobileParty.LeaderHero) / 20f, 1f), -1f);
                    __result *= (float)(1.0 - (double)num * ((double)num > 0.0 ? 1.0 - (double)Config.Value.RelationSiegingPositiveMultMin : (double)Config.Value.RelationSiegingNegativeMultMax - 1.0));
                }
                if (targetSettlement.Culture != mobileParty.MapFaction.Culture)
                {
                    break;
                }
                __result *= Config.Value.SameCultureSiegingMult;
                break;

            case Army.ArmyTypes.Raider:
                if (targetSettlement.OwnerClan != null)
                {
                    float num = Math.Max(Math.Min((float)targetSettlement.OwnerClan.Leader.GetRelation(mobileParty.LeaderHero) / 20f, 1f), -1f);
                    __result *= (float)(1.0 - (double)num * ((double)num > 0.0 ? 1.0 - (double)Config.Value.RelationRaidingPositiveMultMin : (double)Config.Value.RelationRaidingNegativeMultMax - 1.0));
                }
                if (targetSettlement.Culture != mobileParty.LeaderHero.Culture && targetSettlement.Culture != mobileParty.MapFaction.Culture)
                {
                    break;
                }
                __result *= Config.Value.SameCultureRaidingMult;
                break;
            }
        }