/// <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)); }
public override bool ShouldForceGather(GatheringPointObject node) { return(!node.IsEphemeral() && !node.IsUnspoiled()); }