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; } } } }
/// <summary> /// Used to process the current request. /// </summary> public override void ProcessRequest() { //Assemble page parts. RootElement.RemoveAll(); if (InputContext.ViewingUser.IsSuperUser == false && InputContext.ViewingUser.IsEditor == false) { SerialiseAndAppend(new Error { Type = "Access Denied", ErrorMessage = "Access denied" }, ""); return; } GetQueryParameters(); //get site stats DateTime startDate = DateTime.MinValue, endDate = DateTime.MinValue; GetDateRange(_days, ref startDate, ref endDate); //get moderator stats var moderatorInfo = ModeratorInfo.GetModeratorInfo(AppContext.ReaderCreator, _userId, InputContext.TheSiteList); var modStats = new ModStats(){Moderator = moderatorInfo}; SiteSummaryStats stats; if (_siteId != 0) { modStats = ModStats.FetchModStatsBySite(AppContext.ReaderCreator, _userId, _siteId, moderatorInfo, true, true); stats = SiteSummaryStats.GetStatsBySite(AppContext.ReaderCreator, _siteId, startDate, endDate); } else { modStats = ModStats.FetchModStatsBySiteType(AppContext.ReaderCreator, _userId, _type, moderatorInfo, true, true); var statsUserId = _userId; if (InputContext.ViewingUser.IsSuperUser && statsUserId == InputContext.ViewingUser.UserID) {//use default user statsUserId = 0; } stats = SiteSummaryStats.GetStatsByType(AppContext.ReaderCreator, _type, statsUserId, startDate, endDate); } SerialiseAndAppend(modStats, ""); SerialiseAndAppend(stats, ""); //check if only one site - then redirect note looking for 2 as all editors are editors of the moderation site for access... if (moderatorInfo.Sites.Count == 2 && _siteId == 0) { RedirectToSoleSite(moderatorInfo); return; } //get sitelist SiteXmlBuilder siteXml = new SiteXmlBuilder(InputContext); siteXml.CreateXmlSiteList(InputContext.TheSiteList); RootElement.AppendChild(ImportNode(siteXml.RootElement.FirstChild)); SerialiseAndAppend(SiteTypeEnumList.GetSiteTypes(), ""); }