public void OnDeath(BaseCreature bc) { if (bc == null || bc.Controlled || bc.Summoned) { return; } if (Spawn.ContainsKey(bc)) { Spawn.Remove(bc); bool wavecomplete = true; foreach (KeyValuePair <BaseCreature, List <BaseCreature> > kvp in Spawn) { if (kvp.Key != null && kvp.Key.Alive) { wavecomplete = false; break; } } if (wavecomplete) { CompleteWave(); } } else { foreach (KeyValuePair <BaseCreature, List <BaseCreature> > kvp in Spawn) { if (kvp.Value.Contains(bc)) { kvp.Value.Remove(bc); } int count = kvp.Value.Where(b => b != null && b.Alive).Count(); if (count == 0 && kvp.Key.Alive) { kvp.Key.Blessed = false; kvp.Key.Delta(MobileDelta.Noto); } } } }