Esempio n. 1
0
        private static void AfterDefDeploy_BoostDef(GeoHavenDefenseMission __instance, ref int __result, GeoHaven haven)
        {
            try {
                if (haven == null)
                {
                    return;
                }
                GeoFaction attacker = __instance.GetEnemyFaction() is GeoSubFaction sub
               ? attacker = sub.BaseFaction : __instance.GetEnemyFaction() as GeoFaction;
                var defender = haven.Site.Owner;
                Info("{0} of {1} under attack by {2}, defense strength {3}. Alert level {4}.", haven.Site.Name, defender, attacker.GetPPName(), __result, haven.AlertLevel);

                var   conf     = Config.Defense_Multiplier;
                float multiply = conf.Default;
                switch (haven?.AlertLevel)
                {
                case GeoHaven.HavenAlertLevel.Alert: multiply *= conf.Alert; break;

                case GeoHaven.HavenAlertLevel.HighAlert: multiply *= conf.High_Alert; break;
                }

                var geoLevel = haven.Site.GeoLevel;
                if (IsAlien(attacker))
                {
                    multiply *= conf.Attacker_Pandora;
                }
                else if (attacker == geoLevel.AnuFaction)
                {
                    multiply *= conf.Attacker_Anu;
                }
                else if (attacker == geoLevel.SynedrionFaction)
                {
                    multiply *= conf.Attacker_Synedrion;
                }
                else if (attacker == geoLevel.NewJerichoFaction)
                {
                    multiply *= conf.Attacker_NewJericho;
                }

                if (IsAlien(defender))
                {
                    multiply *= conf.Defender_Pandora;
                }
                else if (defender == geoLevel.AnuFaction)
                {
                    multiply *= conf.Defender_Anu;
                }
                else if (defender == geoLevel.SynedrionFaction)
                {
                    multiply *= conf.Defender_Synedrion;
                }
                else if (defender == geoLevel.NewJerichoFaction)
                {
                    multiply *= conf.Defender_NewJericho;
                }

                if (multiply != 1)
                {
                    __result = (int)Math.Round(__result * multiply);
                    Info("Multiplying defender strength by {0} to {1}", multiply, __result);
                }
            } catch (Exception ex) { Error(ex); }
        }