Exemple #1
0
        public void Deactivate(bool deactivate = true)
        {
            if (deactivate)
            {
                Active = false;
            }

            if (Spawns != null)
            {
                foreach (SpawnEntry entry in Spawns)
                {
                    List <BaseCreature> list = new List <BaseCreature>();

                    foreach (BaseCreature bc in entry.Spawn)
                    {
                        list.Add(bc);
                    }

                    foreach (BaseCreature creature in list)
                    {
                        creature.Delete();
                    }

                    ColUtility.Free(list);
                }

                Spawns.Clear();
            }
        }
Exemple #2
0
        public void Initialise()
        {
            if (Initialised)
            {
                return;
            }

            List <SpawnlistContract> spawnsList = _serverService.GetAllSpawns();

            spawnsList.ForEach((spawn) =>
            {
                L2Spawn l2Spawn =
                    new L2Spawn(NpcTable.Instance.GetTemplate(spawn.TemplateId), _idFactory, this)
                {
                    Location = new SpawnLocation(spawn.LocX, spawn.LocY, spawn.LocZ, spawn.Heading, spawn.RespawnDelay)
                };
                l2Spawn.Spawn(false);
                Spawns.Add(l2Spawn);
            });

            Log.Info($"Spawned {spawnsList.Count} npcs.");

            if (_config.GameplayConfig.NpcConfig.Misc.AutoMobRespawn)
            {
                RespawnTimerTask          = new Timer();
                RespawnTimerTask.Elapsed += new ElapsedEventHandler(RespawnTimerTick);
                RespawnTimerTask.Interval = 2000;
                RespawnTimerTask.Start();

                Log.Info($"Started RespawnTimerTask.");
            }

            Initialised = true;
        }
Exemple #3
0
        private void loadSpawnButton_Click(object sender, EventArgs e)
        {
            var dialog = new OpenFileDialog();

            dialog.Filter = dialog.Filter = "Map files (*.map)|*.map";
            var result = dialog.ShowDialog();

            if (result == DialogResult.OK)
            {
                // Clear map
                if (Spawns.Count > 0)
                {
                    foreach (var spawn in Spawns)
                    {
                        RenderObjectsManager.RemoveSpawn(spawn);
                    }
                    Spawns.Clear();
                }

                var spawnReader = new SpawnReader();
                spawnReader.MapFileName = dialog.FileName;
                var spawns = spawnReader.LoadSpawns();

                Spawns = spawns;
                allSpawnsListBox.DataSource = Spawns;

                foreach (var spawn in spawns)
                {
                    RenderObjectsManager.AddSpawner(spawn);
                }

                RefreshUI();
            }
        }
Exemple #4
0
 protected override void sv_Despawn()
 {
     if (Spawns.Count > 0)
     {
         Spawns[0].sv_Despawn();
         Spawns.Clear();
     }
 }
Exemple #5
0
 protected override void sv_Despawn()
 {
     for (int i = 0; i < Spawns.Count; i++)
     {
         Spawns[i].sv_Despawn();
     }
     Spawns.Clear();
 }
Exemple #6
0
 protected override void sv_Despawn()
 {
     for (var i = 0; i < Spawns.Count; i++)
     {
         Spawns[i].sv_Despawn();
     }
     Spawns.Clear();
     SpawnAmount = 0;
 }
Exemple #7
0
 /// <summary>Clears all spawn information</summary>
 public void Clear()
 {
     Spawns.Clear();
     Target      = null;
     Player      = null;
     Selected    = null;
     Highlighted = null;
     Update();
 }
Exemple #8
0
        private void OnMapActorLeave(Map map, RolePlayActor actor)
        {
            var group = actor as MonsterGroup;

            if (group != null && (Spawns.Contains(group)))
            {
                OnGroupUnSpawned(group);
            }
        }
Exemple #9
0
    // Spawn with delay, add to list, set color
    public void Objects(Spawns o, Color color, Vector3 pos, int count, float delay, float corruption)
    {
        Column column = World.GetColumn(new World3(pos));

        if (column != null && column.spawns != null)
        {
            Objects(o, color, 0f, pos, count, delay, column.spawns, corruption);
        }
    }
Exemple #10
0
        private void deleteSpawnButton_Click(object sender, EventArgs e)
        {
            if (SelectedSpawn == null)
            {
                MessageBox.Show("Please select a valid spawn.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            RenderObjectsManager.RemoveSpawn(SelectedSpawn);
            Spawns.Remove(SelectedSpawn);
        }
Exemple #11
0
 protected override void sv_Despawn()
 {
     for (int i = 0; i < Spawns.Count; i++)
     {
         if (Spawns[i] != null && !Spawns[i].IsDead() && !Spawns[i].IsDespawned())
         {
             Spawns[i].sv_Despawn();
         }
     }
     Spawns.Clear();
 }
Exemple #12
0
        protected virtual void OnGroupUnSpawned(MonsterGroup monster)
        {
            var monsterToDelete = Spawns.FirstOrDefault(x => x.Id == monster.Id);

            lock (Spawns)
                Spawns.Remove(monsterToDelete);

            if (!IsLimitReached() && State == SpawningPoolState.Paused)
            {
                ResumeAutoSpawn();
            }
        }
Exemple #13
0
        protected virtual void OnGroupSpawned(MonsterGroup group)
        {
            lock (Spawns)
                Spawns.Add(group);

            var handler = Spawned;

            if (handler != null)
            {
                handler(this, group);
            }
        }
Exemple #14
0
        protected override void sv_TriggeredSpawn(Actor aTriggerer)
        {
            //added TODO find out how to really spawn an npc
            if (NPCType == null)
            {
                return;
            }
            var instance = Spawn(GameResources.Instance.NPCPrefab, Location, Rotation, InitializeSpawnedNPC, Level.GameMap);

            instance.sv_OnSpawn(NPCType.FameLevel, NPCType.PePRank, NPCType.TaxonomyFaction);
            Spawns.Add(instance);
        }
        public override void Read(BinaryReaderExt r)
        {
            base.Read(r);

            r.Skip(0x2); //x01 01
            int spawnCount = r.ReadInt32();

            for (int i = 0; i < spawnCount; i++)
            {
                r.Skip(1);
                var shape = new LVDShape();
                shape.Read(r);
                Spawns.Add(shape);
            }

            r.Skip(0x2); //x01 01
            int zoneCount = r.ReadInt32();

            for (int i = 0; i < zoneCount; i++)
            {
                r.Skip(1);
                var shape = new LVDShape();
                shape.Read(r);
                Zones.Add(shape);
            }

            r.Skip(0x2);              //x01 01
            Unknown1 = r.ReadInt32(); //Only seen as 0

            r.Skip(1);                //x01
            ID = r.ReadInt32();

            r.Skip(1); //x01
            int spawnIdCount = r.ReadInt32();

            for (int i = 0; i < spawnIdCount; i++)
            {
                r.Skip(1);
                SpawnIDs.Add(r.ReadInt32());
            }

            r.Skip(1);                //x01
            Unknown2 = r.ReadInt32(); //Only seen as 0

            r.Skip(1);                //x01
            int zoneIdCount = r.ReadInt32();

            for (int i = 0; i < zoneIdCount; i++)
            {
                r.Skip(1);
                ZoneIDs.Add(r.ReadInt32());
            }
        }
Exemple #16
0
    private Spawns[,] GetSpawns(int gridsX, int gridsZ)
    {
        Spawns[,] gridSpawnArray = new Spawns[gridsZ, gridsX];

        bool magnetSpawned = false;

        for (int z = 0; z < gridSpawnArray.GetLength(0); z++)
        {
            int    chance = Random.Range(0, totalChance);
            Spawns spawn  = GetSpawnByChance(chance);

            for (int x = 0; x < gridSpawnArray.GetLength(1); x++)
            {
                if (coinSpawnType == CoinSpawn.Line && spawn == Spawns.Coin)
                {
                    gridSpawnArray[z, x] = spawn;
                }
                else if (coinSpawnType != CoinSpawn.Line && x > 0)
                {
                    chance = Random.Range(0, totalChance);
                    spawn  = GetSpawnByChance(chance);
                    if (spawn == Spawns.Magnet)
                    {
                        if (magnetSpawned)
                        {
                            spawn = Spawns.None;
                        }
                        else
                        {
                            magnetSpawned = true;
                        }
                    }
                    gridSpawnArray[z, x] = spawn;
                }
                else if (spawn == Spawns.Magnet)
                {
                    if (magnetSpawned)
                    {
                        spawn = Spawns.None;
                    }
                    else
                    {
                        gridSpawnArray[z, x] = spawn;
                        magnetSpawned        = true;
                    }
                }
            }
        }

        return(gridSpawnArray);
    }
Exemple #17
0
 /// <summary>
 /// Sets the player spawn by its ID
 /// </summary>
 /// <param name="ID">The ID of the spawn</param>
 /// <param name="batch">If true, the map will not automatically update</param>
 public void setPlayer(uint ID, bool batch)
 {
     if (Player != null && Player.ID == ID)
     {
         return;
     }
     if (Spawns.ContainsIndex(ID))
     {
         Player = Spawns[ID];
     }
     if (!batch && Updated != null)
     {
         Updated();
     }
 }
Exemple #18
0
    // Spawn with delay, add to list, set color, set mass
    public void Objects(Spawns o, Color color, float mass, Vector3 pos, int count, float delay, List <PooledObject> spawns, float corruption)
    {
        StartCoroutine(Wait(delay, () =>
        {
            StartCoroutine(Repeat(count, Config.SpawnDelay, () =>
            {
                PooledObject obj = Object(o, color, mass, pos, corruption);

                if (obj != null)
                {
                    spawns.Add(obj);
                }
            }));
        }));
    }
Exemple #19
0
 private bool AreThereEnemySpawns()
 {
     foreach (KeyValuePair <EnemyManager, int> entry in enemyManagerUnitCountDict)
     {
         Spawns spawns = entry.Key.GetComponentInChildren <Spawns>();
         if (spawns)
         {
             Spawn singleSpawn = spawns.GetComponentInChildren <Spawn>();
             if (singleSpawn)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Exemple #20
0
        public VMapTileLoader(string directory, int mapID, int tileX, int tileY)
        {
            X = tileX;
            Y = tileY;

            var refCounter = new Dictionary <int, int>();

            var filePath = Path.Combine(directory, "vmaps", $"{mapID:D3}_{tileX:D2}_{tileY:D2}.vmtile");

            if (!(FileExists = File.Exists(filePath)))
            {
                return;
            }

            using (var reader = new BinaryReader(File.OpenRead(filePath)))
            {
                reader.BaseStream.Position += 8; // Skip magic

                var numSpawns = reader.ReadInt32();
                for (var i = 0; i < numSpawns; ++i)
                {
                    var modelSpawn      = new ModelSpawn(directory, reader);
                    var referencedValue = reader.ReadInt32();

                    if (!Spawns.ContainsKey(modelSpawn.Name))
                    {
                        Spawns.Add(modelSpawn.Name, modelSpawn);
                    }
                    // else
                    //     // Instance already added in ModelSpawn constructor
                }
            }

            foreach (var modelInstance in Spawns.Values)
            {
                if (!modelInstance.Name.EndsWith(".m2"))
                {
                    continue;
                }

                foreach (var groupModel in modelInstance.Model.GroupModels)
                {
                    groupModel.InvertIndices();
                }
            }
        }
Exemple #21
0
    void Spawner()
    {
        //spawns = Spawns.Enemy;
        spawns    = (Spawns)Random.Range(0, 5);
        rarity    = (Spawns)Random.Range(1, 5);
        platSpawn = (Spawns)Random.Range(1, 4);

        var clone = (GameObject)Instantiate(map[spawns], transform.position, Quaternion.identity);

        powerSpawn++;
        platformSpawn++;

        if (clone.tag == "PowerUp" && powerSpawn >= 12)
        {
            powerSpawn = 0;
        }
        else if (clone.tag == "PowerUp" && powerSpawn <= 12)
        {
            Destroy(clone);
            Instantiate(map[rarity], transform.position, Quaternion.identity);
        }

        if (clone.tag == "GroundFloor" && platformSpawn >= 4)
        {
            Debug.Log("THOU CAN SPAWN THE PLATFORM " + platformSpawn);
            platformSpawn = 0;
        }
        else if (clone.tag == "GroundFloor" && platformSpawn <= 4)
        {
            Debug.Log("DONT SPAWN THAT SHIT " + platformSpawn);
            Destroy(clone);
            Instantiate(map[platSpawn], transform.position, Quaternion.identity);
        }

        switch (clone.tag)
        {
        case "BonusPoints":
            clone.transform.position = new Vector3(38f, Random.Range(-6.4f, 0f), 0f);
            break;

        case "PowerUp":
            clone.transform.position = new Vector3(38f, Random.Range(-6.4f, 0f), 0f);
            break;
        }
    }
Exemple #22
0
        public override string ToString()
        {
            var details = new StringBuilder();

            for (int i = 0; i < Spawns.Count(); i++)
            {
                details.Append(Spawns[i].Info);
                if (i < Spawns.Count() - 1)
                {
                    details.Append(", ");
                }
            }
            if (Sewer)
            {
                details.Append(" on All Sewers");
            }
            return(details.ToString());
        }
        public void LoadSpawns()
        {
            if (Spawns != null)
            {
                Spawns.Clear();
            }

            Spawns = new List <SpawnEntry>();
            Spawns.Add(new SpawnEntry(this, new Rectangle2D[] { new Rectangle2D(5564, 1888, 26, 31) }));
            Spawns.Add(new SpawnEntry(this, new Rectangle2D[] { new Rectangle2D(5554, 1888, 8, 28) }));
            Spawns.Add(new SpawnEntry(this, new Rectangle2D[] { new Rectangle2D(5596, 1888, 8, 28) }));
            Spawns.Add(new SpawnEntry(this, new Rectangle2D[] { new Rectangle2D(5536, 1876, 8, 8), new Rectangle2D(5552, 1840, 11, 42) }));
            Spawns.Add(new SpawnEntry(this, new Rectangle2D[] { new Rectangle2D(5600, 1860, 8, 8), new Rectangle2D(5596, 1872, 15, 12) }));
            Spawns.Add(new SpawnEntry(this, new Rectangle2D[] { new Rectangle2D(5608, 1832, 15, 15), new Rectangle2D(5616, 1848, 11, 34) }));
            Spawns.Add(new SpawnEntry(this, new Rectangle2D[] { new Rectangle2D(5568, 1852, 22, 14) }, 15));
            Spawns.Add(new SpawnEntry(this, new Rectangle2D[] { new Rectangle2D(5568, 1824, 22, 11) }));
            Spawns.Add(new SpawnEntry(this, new Rectangle2D[] { new Rectangle2D(5501, 1800, 42, 19) }, 15));
        }
Exemple #24
0
    void Spawner()
    {
        //spawns = Spawns.Enemy;
        spawns = (Spawns)Random.Range(0, 5);
        rarity = (Spawns)Random.Range(1, 5);
        platSpawn = (Spawns)Random.Range(1, 4);

        var clone = (GameObject)Instantiate(map[spawns], transform.position, Quaternion.identity);

        powerSpawn++;
        platformSpawn++;

        if(clone.tag == "PowerUp" && powerSpawn >= 12)
        {
            powerSpawn = 0;
        }else if(clone.tag == "PowerUp" && powerSpawn <= 12)
        {
            Destroy(clone);
            Instantiate(map[rarity], transform.position, Quaternion.identity);
        }

        if(clone.tag == "GroundFloor" && platformSpawn >= 4)
        {
            Debug.Log("THOU CAN SPAWN THE PLATFORM " + platformSpawn);
            platformSpawn = 0;
        }else if(clone.tag == "GroundFloor" && platformSpawn <= 4)
        {
            Debug.Log("DONT SPAWN THAT SHIT " + platformSpawn);
            Destroy(clone);
            Instantiate(map[platSpawn], transform.position, Quaternion.identity);
        }

        switch(clone.tag)
        {
            case "BonusPoints":
                clone.transform.position = new Vector3(38f, Random.Range(-6.4f, 0f), 0f);
                break;

            case "PowerUp":
                clone.transform.position = new Vector3(38f, Random.Range(-6.4f, 0f), 0f);
                break;
        }
    }
Exemple #25
0
        public Map(string mapName)
        {
            var tmxMap = new TmxMap(
                Paths.AssemblyDirectory + "/Content/Maps/" + mapName + ".tmx"
                );

            Width      = tmxMap.Width;
            Height     = tmxMap.Height;
            TileWidth  = tmxMap.TileWidth;
            TileHeight = tmxMap.TileHeight;

            for (var i = 0; i < tmxMap.TileLayers.Count; i++)
            {
                var tmxLayer = tmxMap.TileLayers[i];
                var layer    = new Layer();

                if (IsGameLayer(tmxLayer))
                {
                    layer.Init <Maps.Tiles.Game>(tmxLayer, tmxMap);
                    GameLayer = layer;
                }
            }

            for (var i = 0; i < tmxMap.ObjectGroups.Count; i++)
            {
                var tmxObjectGroup = tmxMap.ObjectGroups[i];
                switch (tmxObjectGroup.Name)
                {
                case "Spawns":
                    spawns = new Spawns(tmxObjectGroup);
                    break;

                case "Teleports":
                    teleports = new Teleports(tmxObjectGroup);
                    break;

                default:
                    System.Console.WriteLine("[WARN] Unknown object group");
                    break;
                }
            }
        }
Exemple #26
0
 public Row(int y, float speed, Spawns tipe = Spawns.CAR)
     : base(0, y)
 {
     objects = new List<Object>();
     allRows.Add(this);
     this.speed = speed;
     type = tipe;
     if (type <= Spawns.LOG)
     {
         //need to setup like
         //water tiles
     }
     //Here we set up the row so it is already populated
     //This one is optimized for cars
     for (int i = Form1.rand.Next() % 250; i < Form1.width; i += Form1.rand.Next() % 250 + 64 * 2)
     {
         objects.Add(new Object(i, y));
         setObjectSprite();
     }
 }
Exemple #27
0
        /// <summary>
        /// Sets the target spawn by its ID
        /// </summary>
        /// <param name="ID">The ID of the spawn</param>
        /// <param name="batch">If true, the map will not automatically update</param>
        public void setTarget(uint ID, bool batch)
        {
            if (Target != null && Target.ID == ID)
            {
                return;
            }

            if (ID == 0)
            {
                Target = null;
            }
            else if (Spawns.ContainsIndex(ID))
            {
                Target = Spawns[ID];
            }

            if (!batch && Updated != null)
            {
                Updated();
            }
        }
    private void OnEnable()
    {
        Enemy_Time = Time.time;
        Debug.Log("Starting");
        particle = GameObject.Find("Boss_Particle").GetComponent <ParticleSystem>();
        Debug.Log(particle);
        int phase = Random.Range(0, System.Enum.GetValues(typeof(Boss_Phases)).Length);

        spawn = new Spawns();
        tiles = GameObject.Find("Platforms");
        Debug.Log("Huh");
        tiles.SetActive(false);
        spawn.AddSpawn(GameObject.Find("Spawn1").GetComponent <SpriteRenderer>());
        spawn.AddSpawn(GameObject.Find("Spawn2").GetComponent <SpriteRenderer>());
        spawn.AddSpawn(GameObject.Find("Spawn3").GetComponent <SpriteRenderer>());
        spawn.AddSpawn(GameObject.Find("Spawn4").GetComponent <SpriteRenderer>());
        spawn.AddSpawn(GameObject.Find("Spawn5").GetComponent <SpriteRenderer>());
        abilitys    = new TextMeshPro[3];
        abilitys[0] = GameObject.Find("Lavas").GetComponent <TextMeshPro>();
        abilitys[1] = GameObject.Find("Spawn").GetComponent <TextMeshPro>();
        abilitys[2] = GameObject.Find("Projectiles").GetComponent <TextMeshPro>();

        switch (phase)
        {
        case 0:
            phases = Boss_Phases.Spawn;
            break;

        case 1:
            phases = Boss_Phases.Lava;
            break;

        case 2:
            phases = Boss_Phases.Projectiles;
            break;
        }
        DoAbility(phases);
    }
Exemple #29
0
 public Row(int y, float speed, Spawns tipe = Spawns.CAR)
     : base(new Vector2(0, y), "")
 {
     objects = new List <Object>();
     allRows.Add(this);
     this.speed = speed;
     type       = tipe;
     if (type <= Spawns.LOG)
     {
         //need to setup like
         //water tiles
     }
     //Here we set up the row so it is already populated
     //This one is optimized for cars
     //don't spawn any objects if its a safe row
     if (type != Spawns.FREESPACE)
     {
         for (int i = MainForm.rand.Next() % 250; i < MainForm.width; i += MainForm.rand.Next() % 250 + MainForm.TileSize * 2)
         {
             objects.Add(new Object(i, y, getSpriteName()));
         }
     }
 }
Exemple #30
0
    public static Unit PullUnit(bool isMyTeam)
    {
        Unit unit = Spawns.Pull(isMyTeam);

        if (unit == null)
        {
            // 부족한 유닛이 우리팀 유닛인 경우 : 우리팀 유닛, 상대팀 유닛순으로 유닛을 생성하고 우리팀 유닛 반환
            if (isMyTeam)
            {
                unit = Spawns.AddUnit(new Unit(Object.Instantiate(unitPrefab, Setting.BattleZone.transform), isMyTeam));
                Spawns.AddUnit(new Unit(Object.Instantiate(unitPrefab, Setting.BattleZone.transform), !isMyTeam));
                return(unit);
            }
            // 부족한 유닛이 상대팀 유닛인 경우 : 우리팀 유닛, 상대팀 유닛순으로 유닛을 생성하고 상대팀 유닛 반환
            if (!isMyTeam)
            {
                Spawns.AddUnit(new Unit(Object.Instantiate(unitPrefab, Setting.BattleZone.transform), !isMyTeam));
                return(Spawns.AddUnit(new Unit(Object.Instantiate(unitPrefab, Setting.BattleZone.transform), isMyTeam)));
            }
        }

        return(unit);
    }
        // addition pet logic can go here, such as TP back to player.
        public override void UpdateSpawns(TimeSpan elapsedTime)
        {
            KeepSpawnsNearSummoner();

            void KeepSpawnsNearSummoner()
            {
                lock (Spawns)
                {
                    foreach (var(_, spawn) in Spawns.ToArray())
                    {
                        var aisling = spawn.Summoner;

                        if (aisling == null)
                        {
                            Despawn();
                        }

                        if (aisling == null || aisling.WithinRangeOf(spawn, 9, true))
                        {
                            continue;
                        }

                        var sprite = GetObject(null, i => i.Serial == spawn.Serial, Get.All);

                        //warp to our summoner.
                        if (sprite != null)
                        {
                            sprite.X            = aisling.X;
                            sprite.Y            = aisling.Y;
                            sprite.CurrentMapId = aisling.CurrentMapId;
                            sprite.Direction    = aisling.Direction;
                            sprite.Update();
                        }
                    }
                }
            }
        }
Exemple #32
0
    public PooledObject Object(Spawns o, Color color, float mass, Vector3 pos, float corruption)
    {
        PooledObject  prefab;
        SpawnedObject spawnedObject = null;

        if (objects.TryGetValue(o, out prefab))
        {
            if (key == -1)
            {
                key = TerrainGenerator.GetNoise2D
                      (
                    pos,
                    Config.Instance.environment.key,
                    NoiseType.SimplexValue
                      );
            }

            if (o == Spawns.Pickup || o == Spawns.SilverPickup || o == Spawns.BlackPickup)
            {
                spawnedObject = SpawnPickup(prefab, color, key, corruption);
            }
            else
            {
                spawnedObject = SpawnBall(prefab, color, key, corruption);
            }
            if (spawnedObject == null)
            {
                return(null);
            }

            spawnedObject.transform.position = pos;
            spawnedObject.mass = mass;
            spawnedObject.StartSlowUpdate();
        }

        return(spawnedObject.GetComponent <PooledObject>());
    }