Пример #1
0
        /// <summary>
        /// Calculates and returns the expected real world seconds until the node despawns
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        public static NodeLifespan GetNodeLifespan(GatheringPointObject node)
        {
            var eorzeaMinutesTillDespawn = (int)byte.MaxValue;

            if (node.IsUnspoiled())
            {
                if (WorldManager.ZoneId > 350)
                {
                    eorzeaMinutesTillDespawn = 55 - WorldManager.EorzaTime.Minute;
                }
                else
                {
                    // We really don't know how much time is left on the node, but it does have at least the 5 more EM.
                    eorzeaMinutesTillDespawn = 60 - WorldManager.EorzaTime.Minute;
                }
            }

            if (node.IsEphemeral())
            {
                var hoursFromNow = WorldManager.EorzaTime.AddHours(4);
                var rounded      = new DateTime(
                    hoursFromNow.Year,
                    hoursFromNow.Month,
                    hoursFromNow.Day,
                    hoursFromNow.Hour - hoursFromNow.Hour % 4,
                    0,
                    0);

                eorzeaMinutesTillDespawn = (int)(rounded - WorldManager.EorzaTime).TotalMinutes;
            }

            return(new NodeLifespan(eorzeaMinutesTillDespawn * 35 / 12));
        }
Пример #2
0
 public override bool ShouldForceGather(GatheringPointObject node)
 {
     return(!node.IsEphemeral() && !node.IsUnspoiled());
 }