public void add(WorldObject worldObject)
 {
     lock (objects)
     {
         objects.Add(worldObject);
     }
 }
 private void addObjectToList(ushort originalId, Location location)
 {
     WorldObject worldObject = new WorldObject(originalId, getSecondaryId(originalId), getFace(originalId, location), location, getRestore(originalId), getHealth(originalId));
     worldObject.setType(getType(worldObject));
     lock (objects)
     {
         objects.Add(worldObject);
     }
 }
 private void changeObject(WorldObject worldObject)
 {
     if (worldObject != null)
     {
         worldObject.setSecondForm(true);
         foreach (Player p in Server.getPlayerList())
         {
             if (p != null)
             {
                 if (p.getLocation().withinDistance(worldObject.getLocation(), 60))
                 {
                     if (!worldObject.isFire())
                     {
                         p.getPackets().removeObject(worldObject.getLocation(), worldObject.getFace(), worldObject.getType());
                         p.getPackets().createObject(worldObject.getSecondaryId(), worldObject.getLocation(), worldObject.getFace(), worldObject.getType());
                     }
                     else
                     {
                         p.getPackets().createObject(worldObject.getOriginalId(), worldObject.getLocation(), worldObject.getFace(), worldObject.getType());
                     }
                 }
             }
         }
         int delay = worldObject.isFire() ? (60000 + Misc.random(90000)) : worldObject.getRestoreDelay();
         Event restoreObjectEvent = new Event(delay);
         restoreObjectEvent.setAction(() =>
         {
             restoreObject(worldObject);
             restoreObjectEvent.stop();
         });
         Server.registerEvent(restoreObjectEvent);
     }
 }
 public void remove(WorldObject worldObject)
 {
     lock (objects)
     {
         objects.Remove(worldObject);
     }
 }
 public void restoreObject(WorldObject worldObject)
 {
     if (worldObject != null)
     {
         foreach (Player p in Server.getPlayerList())
         {
             if (p != null)
             {
                 if (p.getLocation().withinDistance(worldObject.getLocation(), 60))
                 {
                     if (!worldObject.isFire())
                     {
                         p.getPackets().createObject(worldObject.getOriginalId(), worldObject.getLocation(), worldObject.getFace(), worldObject.getType());
                     }
                     else
                     {
                         p.getPackets().removeObject(worldObject.getLocation(), worldObject.getFace(), worldObject.getType());
                     }
                 }
             }
         }
         if (worldObject.isFire())
         {
             GroundItem item = new GroundItem(592, 1, worldObject.getLocation(), worldObject.getOwner());
             Server.getGroundItems().newWorldItem(item);
         }
     }
     lock (objects)
     {
         objects.Remove(worldObject);
     }
 }
 public void newFire(Player p, ushort fireId, Location location)
 {
     WorldObject worldObject = new WorldObject(fireId, location, FIRE);
     lock (objects)
     {
         objects.Add(worldObject);
     }
     worldObject.setOwner(p);
     changeObject(worldObject);
 }
        public void loadSpawnedObjects()
        {
            string line = "";
            string token = "";
            string token2 = "";
            string token2_2 = "";
            string[] token3 = new string[10];

            if (!File.Exists(Misc.getServerPath() + @"\data\spawnedObjects.cfg"))
            {
                Misc.WriteError(@"Missing data\spawnedObjects.cfg");
                return;
            }
            try
            {
                StreamReader sr = File.OpenText(Misc.getServerPath() + @"\data\spawnedObjects.cfg");
                int amount = 0;
                while ((line = sr.ReadLine()) != null)
                {
                    line = line.Trim();
                    int spot = line.IndexOf("=");

                    if (spot > -1)
                    {
                        token = line.Substring(0, spot);
                        token = token.Trim();
                        token2 = line.Substring(spot + 1);
                        token2 = token2.Trim();
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token3 = token2_2.Split('\t');
                        if (token.Equals("object"))
                        {
                            amount++;
                            ushort id = ushort.Parse(token3[0]);
                            Location location = new Location(int.Parse(token3[1]), int.Parse(token3[2]), int.Parse(token3[3]));
                            int face = int.Parse(token3[4]);
                            int type = int.Parse(token3[5]);
                            WorldObject worldObject = new WorldObject(id, location, face, type, true);

                            // these 3 methods are to set variables for spawned rocks, trees etc.
                            worldObject.setRestore(getRestore(id));
                            worldObject.setObjectHealth(getHealth(id));
                            worldObject.setSecondaryId(getSecondaryId(id));

                            objects.Add(worldObject);
                            add(worldObject); // we KNOW this object is legit..since we spawned it.
                        }
                    }
                    else
                    {
                        if (line.Equals("[ENDOFLIST]"))
                        {
                            Console.WriteLine("Loaded " + amount + " custom objects.");
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error loading spawnedObjects.cfg msg=" + e.Message);
                Console.ReadLine();
            }
        }
        public void loadDeletedObjects()
        {
            string line = "";
            string token = "";
            string token2 = "";
            string token2_2 = "";
            string[] token3 = new string[10];

            if (!File.Exists(Misc.getServerPath() + @"\data\deletedObjects.cfg"))
            {
                Misc.WriteError(@"Missing data\deletedObjects.cfg");
                return;
            }
            try
            {
                StreamReader sr = File.OpenText(Misc.getServerPath() + @"\data\deletedObjects.cfg");
                int amount = 0;
                while ((line = sr.ReadLine()) != null)
                {
                    line = line.Trim();
                    int spot = line.IndexOf("=");

                    if (spot > -1)
                    {
                        token = line.Substring(0, spot);
                        token = token.Trim();
                        token2 = line.Substring(spot + 1);
                        token2 = token2.Trim();
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token3 = token2_2.Split('\t');
                        if (token.Equals("object"))
                        {
                            amount++;
                            Location loc = new Location(int.Parse(token3[0]), int.Parse(token3[1]), int.Parse(token3[2]));
                            int face = int.Parse(token3[3]);
                            int type = int.Parse(token3[4]);
                            WorldObject deletedObject = new WorldObject(loc, face, type, true);
                            objects.Add(deletedObject);
                        }
                    }
                    else
                    {
                        if (line.Equals("[ENDOFLIST]"))
                        {
                            Console.WriteLine("Loaded " + amount + " deleted objects.");
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error loading deletedObjects.cfg msg=" + e.Message);
                Console.ReadLine();
            }
        }
        private void loadObjects()
        {
            string line = "";
            string token = "";
            string token2 = "";
            string token2_2 = "";
            string[] token3 = new string[10];

            if (!File.Exists(Misc.getServerPath() + @"\data\objectLocations.cfg"))
            {
                Misc.WriteError(@"Missing data\objectLocations.cfg");
                return;
            }
            try
            {
                StreamReader sr = File.OpenText(Misc.getServerPath() + @"\data\objectLocations.cfg");

                while ((line = sr.ReadLine()) != null)
                {
                    line = line.Trim();
                    int spot = line.IndexOf("=");

                    if (spot > -1)
                    {
                        token = line.Substring(0, spot);
                        token = token.Trim();
                        token2 = line.Substring(spot + 1);
                        token2 = token2.Trim();
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token2_2 = token2.Replace("\t\t", "\t");
                        token3 = token2_2.Split('\t');
                        if (token.Equals("o"))
                        {
                            int x = int.Parse(token3[0]);
                            int y = int.Parse(token3[1]);
                            ushort id = ushort.Parse(token3[2]);
                            int face = int.Parse(token3[3]);
                            int type = 10;
                            WorldObject worldObject = new WorldObject(id, new Location(x, y, 0), face, type);
                            objects.Add(worldObject);
                        }
                    }
                    else
                    {
                        if (line.Equals("[ENDOFLIST]"))
                        {
                            Console.WriteLine("Loaded " + objects.Count + " object definitions.");
                            return;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error loading objectLocations.cfg msg=" + e.Message);
                Console.ReadLine();
            }
        }
 private int getType(WorldObject worldObject)
 {
     switch (worldObject.getOriginalId())
     {
         case 733: // Wilderness web
             if (worldObject.getOriginalId() == 733)
             {
                 Location web1Location = new Location(3092, 3957, 0); // Eastern mage bank web
                 Location web2Location = new Location(3095, 3957, 0); // Western mage bank web
                 if (worldObject.getLocation().Equals(web1Location) || worldObject.getLocation().Equals(web2Location))
                 {
                     return 0;
                 }
             }
             break;
     }
     return 10;
 }