private void TimersFileLines(string line) { var count = 0; try { Spawntimer st = new Spawntimer(line) { zone = mapName.ToLower() }; st.ZoneSpawnLoc = st.zone + st.SpawnLoc; count++; if (mobsTimer.ContainsKey(st.ZoneSpawnLoc)) { // We already know about this mob. Copy some of the information. GetKnownMobInfo(st); } else if (st.SpawnCount > 1) { SetNewMobTimeInfo(st); mobsTimer.Add(st.ZoneSpawnLoc, st); } } catch (Exception ex) { LogLib.WriteLine($"Error in LoadTimers(), processing line:\r\n{line}", ex); } LogLib.WriteLine($"Spawns read: {count}", LogLevel.Debug); }
// We're pretty positive that the mob has been processed before, here. // This updates KillTime and NextSpawn. public void Kill(Spawninfo mob) { if (Settings.Default.SaveSpawnLogs || (mapName.Length > 0)) { LogSpawns($"[KILL] Loc: {mob.SpawnLoc} Name: {mob.Name}"); } if (mobsTimer.ContainsKey(mob.ZoneSpawnLoc)) { Spawntimer stold = (Spawntimer)mobsTimer[mob.ZoneSpawnLoc]; var log = stold.Kill(DateTime.Now); // update mobsTimer2 also with kill info if (mobsTimer2.ContainsKey(stold.ZoneSpawnLoc)) { Spawntimer st2 = (Spawntimer)mobsTimer2[stold.ZoneSpawnLoc]; st2.KillTimeDT = stold.KillTimeDT; st2.KillTimeStr = stold.KillTimeStr; st2.NextSpawnDT = stold.NextSpawnDT; st2.NextSpawnStr = stold.NextSpawnStr; } if (log != string.Empty && Settings.Default.MaxLogLevel > 0) { SpawnTimerLog($"Updating Kill Time for Spawn: {mob.SpawnLoc} Name: {mob.Name} Killed: {log}"); } } MustSave = true; }
private void AddRespawned(Spawninfo si, Spawntimer st) { if (st.SpawnCount > 1 && st.SpawnTimer > 10) { // The mob was known to spawn once, and is now re-spawning for the first // time... so copy it to the other hash if (!mobsTimer2.ContainsKey(si.ZoneSpawnLoc)) { mobsTimer2.Add(si.ZoneSpawnLoc, st); } MustSave = true; } }
private void MnuStickyTimer_Click(object sender, EventArgs e) { // Set or unset the sticky flag for the timer selected ListView.SelectedIndexCollection sel = listView.SelectedIndices; // We only do this for the Spawn Timer List if (sel.Count > 0 && ListType == 1) { // This returns mobsTimer2 Spawntimer st = eq.FindListViewTimer(listView.Items[sel[0]]); if (st != null) { mnuStickyTimer.Checked = st.sticky; st.sticky = !st.sticky; } } }
private void StickyTimer(Spawntimer st) { mnuStickyTimer.Checked = st.sticky; foreach (var name in st.AllNames.Split(',')) { var bname = name.TrimName(); if (bname.RegexMatch()) { mobname = bname; mnuAddZoneFilter.Text = $"'{mobname}'"; f1.alertX = st.X; f1.alertY = st.Y; f1.alertZ = st.Z; break; } } }
private void GetKnownMobInfo(Spawntimer st) { Spawntimer oldTimer = (Spawntimer)mobsTimer[st.ZoneSpawnLoc]; // check if we add names in the merge. If so, make sure we save. var startlen = oldTimer.AllNames.Length; oldTimer.Merge(st); if (oldTimer.AllNames.Length > startlen) { MustSave = true; } if (oldTimer.SpawnCount > 1 && oldTimer.SpawnTimer > 10 && !mobsTimer2.ContainsKey(oldTimer.ZoneSpawnLoc)) { mobsTimer2.Add(oldTimer.ZoneSpawnLoc, oldTimer); } }
private void TrueRespawn(Spawninfo si) { LogSpawns($"[SPAWN] Loc: {si.SpawnLoc} Name: {si.Name}"); Spawntimer st = (Spawntimer)mobsTimer[si.ZoneSpawnLoc]; Spawntimer st2 = null; if (mobsTimer2.ContainsKey(si.ZoneSpawnLoc)) { st2 = (Spawntimer)mobsTimer2[si.ZoneSpawnLoc]; } string log; if (st2 != null) { log = st2.ReSpawn(si.Name); // since we updated from st2, update st values st.LastSpawnName = st2.LastSpawnName; st.SpawnCount = st2.SpawnCount; st.SpawnTimer = st2.SpawnTimer; st.NextSpawnDT = st2.NextSpawnDT; st.NextSpawnStr = st2.NextSpawnStr; st.SpawnTimeDT = st2.SpawnTimeDT; st.SpawnTimeStr = st2.SpawnTimeStr; st.AllNames = st2.AllNames; st.KillTimeDT = st2.KillTimeDT; st.KillTimeStr = st2.KillTimeStr; } else { log = st.ReSpawn(si.Name); } if (Settings.Default.MaxLogLevel > 0) { SpawnTimerLog($"Found Spawn: {si.SpawnLoc} Name: {si.Name} Timer {log} "); } AddRespawned(si, st); }
private void FirstSpawn(Spawninfo si) { Spawntimer st = new Spawntimer(si, DateTime.Now) { zone = mapName }; try { mobsTimer.Add(si.ZoneSpawnLoc, st); if (Settings.Default.MaxLogLevel > 0) { SpawnTimerLog($"Added Spawn: {si.SpawnLoc} Name: {si.Name}"); } } catch (Exception ex) { LogLib.WriteLine($"Error adding new SPAWNTIMER for {si.Name}: ", ex); throw; } }
private void SetNewMobTimeInfo(Spawntimer st) { if (st.SpawnTimer > 10) { TimeSpan Diff = new TimeSpan(0, 0, 0, st.SpawnTimer); if (DateTime.Now > st.KillTimeDT.Add(Diff)) { st.KillTimeDT = DateTime.MinValue; } if (DateTime.Now > st.NextSpawnDT) { st.NextSpawnDT = DateTime.MinValue; st.KillTimeDT = DateTime.MinValue; st.NextSpawnStr = ""; } mobsTimer2.Add(st.ZoneSpawnLoc, st); } }
private void MnuContext_Opened(object sender, EventArgs e) { mobname = ""; ListView.SelectedIndexCollection sel = listView.SelectedIndices; mnuStickyTimer.Visible = ListType == 1; if (sel.Count > 0) { if (ListType == 0) { ListType0(sel); } else if (ListType == 1) { ListType1(sel); } else { mobname = listView.Items[sel[0]].SubItems[0].Text; } } if ((sel.Count > 0) && (mobname.Length > 0)) { mnuAddGlobalFilter.Text = $"Add '{mobname}' &Global Alert Filter"; mnuAddZoneFilter.Text = $"'{mobname}'"; toolStriConcolor.Text = $"Base Concolor on '{mobname}' ({smoblevel})"; mnuAddZoneFilter.Visible = true; mnuSep3.Visible = true; mnuAddZoneFilter.Enabled = true; mnuAddGlobalFilter.Enabled = true; mnuAddZoneHuntFilter.Enabled = true; mnuAddZoneCautionFilter.Enabled = true; mnuAddZoneDangerFilter.Enabled = true; mnuAddZoneRareFilter.Enabled = true; // addZoneEmailAlertFilter.Enabled = ListType != 2; // Not for ground items mnuEditZoneFilters.Enabled = true; mnuEditGlobalFilters.Enabled = true; mnuReloadZoneFilters.Enabled = true; mnuSearchAllakhazam.Enabled = true; if (ListType == 0) { addMapLabelToolStripMenuItem.Enabled = true; f1.alertX = float.Parse(listView.Items[sel[0]].SubItems[13].Text); f1.alertY = float.Parse(listView.Items[sel[0]].SubItems[14].Text); f1.alertZ = float.Parse(listView.Items[sel[0]].SubItems[15].Text); } else if (ListType == 1) { // add what is in the menu showing addMapLabelToolStripMenuItem.Enabled = true; f1.alertX = float.Parse(listView.Items[sel[0]].SubItems[4].Text); f1.alertY = float.Parse(listView.Items[sel[0]].SubItems[5].Text); f1.alertZ = float.Parse(listView.Items[sel[0]].SubItems[6].Text); // search for a better name to use for this spawn point Spawntimer st = eq.FindListViewTimer(listView.Items[sel[0]]); if (st != null) { StickyTimer(st); } } } else { NoSelection(); } }