public void Init(StageData data) { this.stageData = data; this.level = data.level; bossSpawn = map.bossSpawn.GetComponent <BossSpawn> (); StartCoroutine(StartSpawningEnemies()); }
public void InitializeOnCreate(Transform sTarget, GameManager sGameManager, Health sPlayerHealth, BossSpawn sBossSpawn) { target = sTarget; gameManager = sGameManager; playerHealth = sPlayerHealth; bossSpawn = sBossSpawn; }
public void Start() { float intensity = 1; float intensityDelta = 1 / 5f; for (int i = 0; i < 60; i++) { var wave = new Wave(); if ((i + 1) % 5 == 0) { var spawner = GetRandomSpawner(); var spawn = new BossSpawn(); spawn.enemyPrefab = bossPrefab; spawn.hp = 200 * 2 * intensity; var waveSpawn = new Wave.WaveSpawn { spawn = spawn, spawner = spawner }; wave.waveSpawns.Add(waveSpawn); } else { int numSpawns = (int)Math.Min(5, intensity * 2); //this can be changed for (int j = 0; j < numSpawns; j++) { var spawner = GetRandomSpawner(); var spawn = new BasicSpawn(); int index = UnityEngine.Random.Range(0, basicEnemyPrefabs.Count); spawn.enemyPrefab = basicEnemyPrefabs [index]; spawn.size = (int)Mathf.Floor(intensity * defaultSpawnSizes [index]); spawn.hpMultiplyer = Mathf.Min(1, intensity / 2); spawn.interval = .333f; var waveSpawn = new Wave.WaveSpawn { spawn = spawn, spawner = spawner }; wave.waveSpawns.Add(waveSpawn); } } waves.Add(wave); intensity += intensityDelta; } StartCoroutine(IncreaseIntensity()); StartCoroutine(SpawnWaves()); }
void Awake() { if (!instance2) { instance2 = this; } bossHpBar.SetActive(false); bossImage.SetActive(false); bossAppear = false; }
private void Spawn(BossSpawn entry) { ushort facing = 2093; var X = Owner.WorldPosition.X; var Y = Owner.WorldPosition.Y; var Z = Owner.WorldPosition.Z; var spawn = new Creature_spawn { Guid = (uint)CreatureService.GenerateCreatureSpawnGUID() }; var proto = CreatureService.GetCreatureProto(entry.ProtoId); if (proto == null) { return; } spawn.BuildFromProto(proto); spawn.WorldO = facing; spawn.WorldX = X + StaticRandom.Instance.Next(500); spawn.WorldY = Y + StaticRandom.Instance.Next(500); spawn.WorldZ = Z; spawn.ZoneId = (ushort)Owner.ZoneId; var creature = Owner.Region.CreateCreature(spawn); creature.EvtInterface.AddEventNotify(EventName.OnDie, RemoveNPC); entry.Creature = creature; (Owner as Boss).SpawnDictionary.Add(entry); if (entry.Type == BrainType.AggressiveBrain) { creature.AiInterface.SetBrain(new AggressiveBrain(creature)); } if (entry.Type == BrainType.HealerBrain) { creature.AiInterface.SetBrain(new HealerBrain(creature)); } if (entry.Type == BrainType.PassiveBrain) { creature.AiInterface.SetBrain(new PassiveBrain(creature)); } }
public void InitializeOnCreate(GameManager sGameManager, Transform sTarget, Health sHealth, HordeSpawn hordeSpawn, BossSpawn bossSpawn) { gameManager = sGameManager; target = sTarget; playerHealth = sHealth; zombieHealth.bossSpawn = bossSpawn; zombieHealth.hordeSpawn = hordeSpawn; }
// Update is called once per frame void Update() { // sMoveSpeed is negative, so add a negative value. Once levelDistance <= 0, will either move to boss or end game levelDistance += StandardLevel.sMoveSpeed.x * StandardLevel.speedModifier * Time.deltaTime; if (levelDistance <= 0) { if ((boss == null) && (bossSpawner != null)) { boss = bossSpawner.Init(); bossSpawner = null; } StandardLevel.speedModifier -= (slowDownRate * Time.deltaTime); if (StandardLevel.speedModifier < 0) { StandardLevel.speedModifier = 0; slowDownRate = 0; endGame = true; } } swapCooldown -= Time.deltaTime; if (mana < maxMana) { manaRegenTimer -= Time.deltaTime; if (manaRegenTimer <= 0) { mana++; manaRegenTimer = maxManaRegenTimer; } } else { manaRegenTimer = maxManaRegenTimer; } // Check if switching players if (Input.GetKeyDown(KeyCode.Q)) { SwapPlayers((selectedPlayer + 1) % 2); } // If not reached the end of the level yet, keep spawning enemies and platforms if (levelDistance > 0) { // Level and platform generation spawnTimer -= Time.deltaTime; pSpawnTimer -= Time.deltaTime; if ((spawnTimer <= 0) && (levelEnemyTypes.Count > 0)) { GameObject newEnemy = new GameObject(); newEnemy.transform.position = transform.position + Vector3.right * 3; // Some sort of offset switch (levelEnemyTypes[Random.Range(0, levelEnemyTypes.Count)]) { case EnemyNames.GOBLIN: newEnemy.AddComponent <Enemy>(); break; case EnemyNames.GARGOYLE: newEnemy.AddComponent <EnemyGargoyle>(); newEnemy.transform.position = new Vector3(newEnemy.transform.position.x, Camera.main.transform.position.y + 0.5f * Random.Range(-Camera.main.orthographicSize, Camera.main.orthographicSize)); break; default: Destroy(newEnemy); break; } spawnTimer = 2f; } if (pSpawnTimer <= 0) { Instantiate(platform, new Vector3(transform.position.x, transform.position.y + Random.Range(0, 3), 0f), transform.rotation); pSpawnTimer = Random.Range(0.5f, 5f); } } }
public void SetBoss(BossSpawn setBoss) { bossSpawner = setBoss; }
/// <summary> /// Registers a BossSpawn. /// </summary> /// <param name="bs">The BossSpawn to register.</param> public static void RegisterBossSpawn(BossSpawn bs) { spawns.Add(bs); }