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(); } }
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; }
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(); } }
protected override void sv_Despawn() { if (Spawns.Count > 0) { Spawns[0].sv_Despawn(); Spawns.Clear(); } }
protected override void sv_Despawn() { for (int i = 0; i < Spawns.Count; i++) { Spawns[i].sv_Despawn(); } Spawns.Clear(); }
protected override void sv_Despawn() { for (var i = 0; i < Spawns.Count; i++) { Spawns[i].sv_Despawn(); } Spawns.Clear(); SpawnAmount = 0; }
/// <summary>Clears all spawn information</summary> public void Clear() { Spawns.Clear(); Target = null; Player = null; Selected = null; Highlighted = null; Update(); }
private void OnMapActorLeave(Map map, RolePlayActor actor) { var group = actor as MonsterGroup; if (group != null && (Spawns.Contains(group))) { OnGroupUnSpawned(group); } }
// 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); } }
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); }
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(); }
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(); } }
protected virtual void OnGroupSpawned(MonsterGroup group) { lock (Spawns) Spawns.Add(group); var handler = Spawned; if (handler != null) { handler(this, group); } }
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()); } }
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); }
/// <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(); } }
// 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); } })); })); }
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); }
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(); } } }
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; } }
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)); }
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; } }
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; } } }
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(); } }
/// <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); }
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())); } } }
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(); } } } } }
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>()); }