public void ClearArea(string areaTag, ActiveArea area, CLRScriptBase s) { if (area == null) { area = GetAreaByTag(areaTag); } if (InfestedAreas.Contains(area)) { InfestedAreas.Remove(area); } if (InfestedAreaLevels.ContainsKey(areaTag)) { InfestedAreaLevels.Remove(areaTag); } if (InfestedAreas.Count < 1) { QuestStore.LoadedInfestations.Remove(this); this.Delete(); } int count = 0; uint wp = s.GetLocalObject(area.Id, WayPointArrayName + count.ToString()); s.DeleteLocalString(area.Id, InfestNameVar); while (s.GetIsObjectValid(wp) != CLRScriptBase.FALSE) { int groupNum = 1; string oldGroup = s.GetLocalString(wp, InfestPrefix + GroupVarName + groupNum.ToString()); while (oldGroup != "") { s.SetLocalString(wp, GroupVarName + groupNum.ToString(), oldGroup); groupNum++; oldGroup = s.GetLocalString(wp, InfestPrefix + GroupVarName + groupNum.ToString()); } if (s.GetLocalInt(wp, "ACR_SPAWN_TYPE") != 0) { count++; wp = s.GetLocalObject(area.Id, WayPointArrayName + count.ToString()); continue; } int var = 1; string oldVar = s.GetLocalString(wp, InfestPrefix + SingleVarName + var.ToString()); while (oldVar != "") { s.SetLocalString(wp, SingleVarName + var.ToString(), oldVar); var++; oldVar = s.GetLocalString(wp, InfestPrefix + SingleVarName + var.ToString()); } var = 1; oldVar = s.GetLocalString(wp, InfestPrefix + RandomVarName + var.ToString()); while (oldVar != "") { s.SetLocalString(wp, RandomVarName + var.ToString(), oldVar); var++; oldVar = s.GetLocalString(wp, InfestPrefix + RandomVarName + var.ToString()); } count++; wp = s.GetLocalObject(area.Id, WayPointArrayName + count.ToString()); } }