Ejemplo n.º 1
0
        public static void Postfix(AbstractActor __instance, Effect effect)
        {
            Mod.Log.Trace?.Write("AA:CancelEffect entered");

            if (effect.EffectData.effectType == EffectType.StatisticEffect)
            {
                Mod.Log.Debug?.Write($" Cancelling effectId: '{effect.EffectData.Description.Id}'  effectName: '{effect.EffectData.Description.Name}'  " +
                                     $"on actor: '{CombatantUtils.Label(__instance)}'  from creator: {effect.creatorID}");

                if (effect.EffectData.effectType == EffectType.StatisticEffect && ModStats.IsStealthStat(effect.EffectData.statisticData.statName))
                {
                    Mod.Log.Debug?.Write("  - Stealth effect found, rebuilding visibility.");
                    List <ICombatant> allLivingCombatants = __instance.Combat.GetAllLivingCombatants();
                    __instance.VisibilityCache.UpdateCacheReciprocal(allLivingCombatants);

                    // TODO: Set current stealth pips?
                }

                if (ModStats.IsStealthStat(effect.EffectData.statisticData.statName))
                {
                    Mod.Log.Debug?.Write("  - Stealth effect found, rebuilding visibility.");
                    List <ICombatant> allLivingCombatants = __instance.Combat.GetAllLivingCombatants();
                    __instance.VisibilityCache.UpdateCacheReciprocal(allLivingCombatants);

                    // TODO: Set current stealth pips?
                }
            }
        }
Ejemplo n.º 2
0
        public static void Postfix(AbstractActor __instance, EffectData effect, Team creator)
        {
            Mod.Log.Debug?.Write("AA:CreateEffect entered");

            Mod.Log.Debug?.Write($" Creating team effect on actor:{CombatantUtils.Label(__instance)} effectId:{effect.Description.Id} from team: {creator.GUID}");

            if (effect.effectType == EffectType.StatisticEffect)
            {
                if (ModStats.IsStealthStat(effect.statisticData.statName))
                {
                    Mod.Log.Debug?.Write("  - Stealth effect found, rebuilding visibility.");
                    List <ICombatant> allLivingCombatants = __instance.Combat.GetAllLivingCombatants();
                    __instance.VisibilityCache.UpdateCacheReciprocal(allLivingCombatants);
                }
            }
        }
Ejemplo n.º 3
0
        public static void Prefix(MechComponent __instance, ref bool __state)
        {
            Mod.Log.Trace?.Write("MC:CCE:pre entered.");

            // State indicates whether a stealth effect was found
            __state = false;

            Mod.Log.Debug?.Write($" Cancelling effects from component: ({__instance.Name}) on actor: ({CombatantUtils.Label(__instance.parent)})");
            for (int i = 0; i < __instance.createdEffectIDs.Count; i++)
            {
                List <Effect> allEffectsWithID = __instance.parent.Combat.EffectManager.GetAllEffectsWithID(__instance.createdEffectIDs[i]);
                foreach (Effect effect in allEffectsWithID)
                {
                    if (effect.EffectData.effectType == EffectType.StatisticEffect && ModStats.IsStealthStat(effect.EffectData.statisticData.statName))
                    {
                        Mod.Log.Debug?.Write($" -- Found stealth effect to cancel: ({effect.EffectData.Description.Id})");
                        __state = true;
                    }
                }
            }
        }