private void GetSubLookup(Spawninfo sp, string search, bool filter, string rank) { if (search.Length > 1) { SubLookup(sp, search, filter, rank); } }
// 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 static void FilterHidden(Spawninfo sp, bool filter) { if (filter) { sp.hidden = true; } }
// Add a new spawn, or do a re-spawn public void Spawn(Spawninfo si) { try { // ignore players boats boxes corpses and invis man races of level 1 // ignore ldon objects, mounts, pets, mercs, and familiars // ignore any mobs where name starts with "_" var various = si.IsPlayer || (si.Race == 141) || (si.Race == 533) || si.Race == 376 || si.Type == 2 || si.Type == 3; var oddtypes = si.isLDONObject || si.isEventController || si.isPet || si.isMerc || si.isFamiliar || si.isMount; if (various || oddtypes || si.Name.IndexOf("_") == 0) { return; } // If made it this far, then it is a mob that can perform alerts for proximity checks. si.alertMob = true; si.SpawnLoc = $"{si.Y:f3},{si.X:f3}"; si.ZoneSpawnLoc = $"{mapName.ToLower()}{si.Y:f3},{si.X:f3}"; if (mobsTimer.ContainsKey(si.ZoneSpawnLoc)) { // Process a true re-spawn TrueRespawn(si); } else { // First spawn ever FirstSpawn(si); } } catch (Exception ex) { LogLib.WriteLine($"Error creating new SPAWNTIMER for {si.Name}: ", ex); } }
public Spawntimer(Spawninfo si, DateTime dt) { SpawnLoc = si.SpawnLoc; ZoneSpawnLoc = si.ZoneSpawnLoc; zone = ""; X = si.X; Y = si.Y; Z = si.Z; SpawnTimeDT = dt; SpawnTimeStr = $"{dt.ToLongTimeString()} {dt.ToShortDateString()}"; SpawnCount = 1; LastSpawnName = si.Name; AllNames = si.Name.TrimName(); }
private static bool LevelCheck(Spawninfo sp, bool levelCheck, int searchLevel) { if (searchLevel != 0 && (sp.Level == searchLevel)) { levelCheck = true; } return(levelCheck); }
public static void MakeVisOnWhite(this Spawninfo si) { if (Settings.Default.ListBackColor == Color.White) { if (si.listitem.ForeColor == Color.White) { si.listitem.ForeColor = Color.Black; } else if (si.listitem.ForeColor == Color.Yellow) { si.listitem.ForeColor = Color.Goldenrod; } } }
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 SubLookup(Spawninfo sp, string search, bool filter, string ln) { var levelCheck = false; if (search.Length > 2 && string.Equals(search.Substring(0, 2), "L:", StringComparison.OrdinalIgnoreCase)) { int.TryParse(search.Substring(2), out var searchLevel); levelCheck = LevelCheck(sp, levelCheck, searchLevel); } if (levelCheck || search.GetRegex().Match(sp.Name).Success) { sp.isLookup = true; sp.lookupNumber = ln; sp.hidden = false; FilterHidden(sp, filter); } }
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; } }
public MobTrailPoint(Spawninfo sp) { X = (int)sp.X; Y = (int)sp.Y; }