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;
                    }
                }
            }
        }
Ejemplo n.º 4
0
        /// <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(), "");


        }