private static void Prefix(MechJumpSequence __instance)
            {
                Mod.ActivationLog.Debug?.Write($"MJS:OC entered for actor: {CombatantUtils.Label(__instance.OwningMech)}");

                // Check for visibility to any enemies
                if (!__instance.owningActor.Combat.TurnDirector.IsInterleaved)
                {
                    Mod.ActivationLog.Info?.Write("MJS:OC is not interleaved and no enemies - autobracing ");
                    __instance.owningActor.AutoBrace = true;
                }

                Mod.Log.Trace?.Write($"JUMP -- ABILITY_CONSUMES_FIRING: {__instance.AbilityConsumesFiring} / CONSUMES_FIRING: {__instance.ConsumesFiring}");

                if (__instance.OwningMech == null)
                {
                    return;                                // Nothing more to do
                }
                // Movement - check for damage after a jump, and if so force a piloting check
                if (__instance.OwningMech.ActuatorDamageMalus() != 0 || Mod.Config.Developer.ForceFallAfterJump)
                {
                    Mod.Log.Info?.Write($"Actor: {CombatantUtils.Label(__instance.OwningMech)} has actuator damage, forcing piloting check.");
                    float sourceSkillMulti = __instance.OwningMech.PilotCheckMod(Mod.Config.SkillChecks.ModPerPointOfPiloting);
                    float damagePenalty    = __instance.OwningMech.ActuatorDamageMalus() * Mod.Config.SkillChecks.ModPerPointOfPiloting;
                    float checkMod         = sourceSkillMulti + damagePenalty;
                    Mod.Log.Debug?.Write($"  moveSkillMulti:{sourceSkillMulti} - damagePenalty: {damagePenalty} = checkMod: {checkMod}");

                    bool sourcePassed = Mod.Config.Developer.ForceFallAfterJump ? false :
                                        CheckHelper.DidCheckPassThreshold(Mod.Config.Move.FallAfterJumpChance, __instance.OwningMech, checkMod, ModText.FT_Fall_After_Jump);
                    if (!sourcePassed)
                    {
                        Mod.Log.Info?.Write($"Source actor: {CombatantUtils.Label(__instance.OwningMech)} failed pilot check after jumping with actuator damage, forcing fall.");
                        MechHelper.AddFallingSequence(__instance.OwningMech, __instance, ModText.FT_Fall_After_Jump);
                    }
                }
            }
Exemplo n.º 2
0
 // Token: 0x060000F7 RID: 247 RVA: 0x000148B4 File Offset: 0x00012AB4
 private static void Postfix(MechJumpSequence __instance, ref bool __result)
 {
     if (!__instance.owningActor.Combat.TurnDirector.IsInterleaved)
     {
         __result = false;
     }
 }
 private static void Postfix(MechJumpSequence __instance, ref bool __result)
 {
     Mod.Log.Trace?.Write("AMS:CF:GET entered");
     if (!__instance.owningActor.Combat.TurnDirector.IsInterleaved)
     {
         // We want to auto-brace, and auto-brace requires that consumesFiring = false. So when no enemies are around, don't consume firing so
         //   that we can auto-brace
         __result = false;
     }
 }
Exemplo n.º 4
0
 // Token: 0x060000F8 RID: 248 RVA: 0x00014908 File Offset: 0x00012B08
 private static void Prefix(MechJumpSequence __instance)
 {
     if (!__instance.owningActor.Combat.TurnDirector.IsInterleaved)
     {
         __instance.owningActor.AutoBrace = true;
     }
     if (__instance.OwningMech == null)
     {
         return;
     }
 }
Exemplo n.º 5
0
 public static void Postfix(MechJumpSequence __instance)
 {
     /*if (__instance.OwningMech == null) { return;  }
      * switch (Core.Settings.auraUpdateFix) {
      * case AuraUpdateFix.Never:
      * case AuraUpdateFix.Position:
      * case AuraUpdateFix.Time:
      *  __instance.OwningMech.RemoveAuraUpdateData();
      *  AuraCache.UpdateAurasToActor(__instance.OwningMech.Combat.AllActors, __instance.OwningMech, __instance.owningActor.CurrentPosition, EffectTriggerType.Passive, false);
      *  break;
      * }*/
 }
            private static void Prefix(MechJumpSequence __instance)
            {
                Mod.Log.Trace("MJS:OC entered");
                // Check for visibility to any enemies
                if (!__instance.owningActor.Combat.TurnDirector.IsInterleaved &&
                    __instance.owningActor.Combat.LocalPlayerTeam.GetDetectedEnemyUnits().Count > 0)
                {
                    //Mod.Log.Info("MJS:OC TD is not interleaved but enemies are detected - disabling autobrace. ");
                    __instance.owningActor.AutoBrace = false;
                }

                // Movement - check for damage after a sprint, and if so force a piloting check
                if (__instance.OwningMech != null && __instance.OwningMech.ActuatorDamageMalus() != 0)
                {
                    Mod.Log.Debug($"Actor: {CombatantUtils.Label(__instance.OwningMech)} has actuator damage, forcing piloting check.");
                    float sourceSkillMulti = __instance.OwningMech.PilotCheckMod(Mod.Config.Move.SkillMulti);
                    bool  sourcePassed     = CheckHelper.DidCheckPassThreshold(Mod.Config.Move.FallAfterRunChance, __instance.OwningMech, sourceSkillMulti, ModConfig.FT_Fall_After_Jump);
                    if (!sourcePassed)
                    {
                        Mod.Log.Info($"Source actor: {CombatantUtils.Label(__instance.OwningMech)} failed pilot check after jumping with actuator damage, forcing fall.");
                        MechHelper.AddFallingSequence(__instance.OwningMech, __instance, ModConfig.FT_Fall_After_Jump);
                    }
                }
            }