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? } } }
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); } } }
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; } } } }