public static void Prefix(TurnDirector __instance, int round) { Mod.Log.Trace?.Write($"TD:BNR entered"); Mod.Log.Info?.Write($"=== Turn Director is beginning round: {round}"); // Update the current vision for all allied and friendly units foreach (AbstractActor actor in __instance.Combat.AllActors) { // If our sensors are offline, re-enable them if (actor.StatCollection.ContainsStatistic(ModStats.DisableSensors)) { Mod.Log.Info?.Write($"Actor: {CombatantUtils.Label(actor)} sensors are offline until: {actor.StatCollection.GetValue<int>(ModStats.DisableSensors)}"); if (round >= actor.StatCollection.GetValue <int>(ModStats.DisableSensors)) { Mod.Log.Info?.Write($"Re-enabling sensors for {CombatantUtils.Label(actor)}"); actor.StatCollection.RemoveStatistic(ModStats.DisableSensors); } } // Update our sensors check ActorHelper.UpdateSensorCheck(actor, true); if (actor.TeamId == __instance.Combat.LocalPlayerTeamGuid) { actor.VisibilityCache.RebuildCache(actor.Combat.GetAllImporantCombatants()); CombatHUDHelper.ForceNameRefresh(actor.Combat); } } }
public static void Prefix(AbstractActor __instance) { if (__instance.TeamId == __instance.Combat.LocalPlayerTeamGuid) { CombatHUDHelper.ForceNameRefresh(__instance.Combat); } // Refresh any CombatHUDMarkDisplays foreach (CombatHUDMarkDisplay chudMD in ModState.MarkContainerRefs.Keys) { chudMD.RefreshInfo(); } if (Mod.Config.Toggles.LogEffectsOnMove) { Mod.Log.Debug?.Write($" OnMoveComplete: Effects targeting actor: {CombatantUtils.Label(__instance)}"); List <Effect> list = __instance.Combat.EffectManager.GetAllEffectsTargeting(__instance); foreach (Effect effect in list) { if (effect.EffectData.statisticData != null) { Mod.Log.Debug?.Write($" -- EffectID: '{effect.EffectData.Description.Id}' Name: '{effect.EffectData.Description.Name}' " + $"StatName:'{effect.EffectData.statisticData.statName}' StatValue:{effect.EffectData.statisticData.modValue}"); } else { Mod.Log.Debug?.Write($" -- EffectID: {effect.EffectData.Description.Id} Name: {effect.EffectData.Description.Name}"); } } foreach (AbstractActor unit in __instance.team.units) { if (unit.GUID != __instance.GUID) { Mod.Log.Debug?.Write($" friendly actor effects: {CombatantUtils.Label(unit)}"); List <Effect> list2 = __instance.Combat.EffectManager.GetAllEffectsTargeting(unit); foreach (Effect effect in list2) { if (effect.EffectData.statisticData != null) { Mod.Log.Debug?.Write($" -- EffectID: '{effect.EffectData.Description.Id}' Name: '{effect.EffectData.Description.Name}' " + $"StatName:'{effect.EffectData.statisticData.statName}' StatValue:{effect.EffectData.statisticData.modValue}"); } else { Mod.Log.Debug?.Write($" -- EffectID: {effect.EffectData.Description.Id} Name: {effect.EffectData.Description.Name}"); } } } } } }
/* * RogueTech decided to add LV_PROBE_PING and LV_PROBE_CARRIER as effects that can be triggered. When this happens, VisiblityCache won't understand a state change * as the underlying VisibilityLevel stays the same, even if the SensorDetailsLevel changes. As such, force a refresh - which should trigger a recompute * of the various LowVis data across every actor on the board. */ public static void Postfix(Ability __instance, AbstractActor creator) { List <Effect> allEffectsWithID = __instance.Combat.EffectManager.GetAllEffectsWithID(__instance.Def.Id); for (int i = 0; i < allEffectsWithID.Count; i++) { if (allEffectsWithID[i].creatorID == creator.GUID && allEffectsWithID[i].EffectData.targetingData.forceVisRebuild && allEffectsWithID[i].EffectData.statisticData != null && (allEffectsWithID[i].EffectData.statisticData.statName.Equals(ModStats.ProbeCarrier) || allEffectsWithID[i].EffectData.statisticData.statName.Equals(ModStats.PingedByProbe)) ) { CombatHUDHelper.ForceNameRefresh(__instance.Combat); } } }