Exemplo n.º 1
0
 public void Init(StageData data)
 {
     this.stageData = data;
     this.level     = data.level;
     bossSpawn      = map.bossSpawn.GetComponent <BossSpawn> ();
     StartCoroutine(StartSpawningEnemies());
 }
Exemplo n.º 2
0
    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());
    }
Exemplo n.º 4
0
    void Awake()
    {
        if (!instance2)
        {
            instance2 = this;
        }

        bossHpBar.SetActive(false);
        bossImage.SetActive(false);

        bossAppear = false;
    }
Exemplo n.º 5
0
        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));
            }
        }
Exemplo n.º 6
0
    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;
    }
Exemplo n.º 7
0
    // 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);
            }
        }
    }
Exemplo n.º 8
0
 public void SetBoss(BossSpawn setBoss)
 {
     bossSpawner = setBoss;
 }
Exemplo n.º 9
0
 /// <summary>
 /// Registers a BossSpawn.
 /// </summary>
 /// <param name="bs">The BossSpawn to register.</param>
 public static void RegisterBossSpawn(BossSpawn bs)
 {
     spawns.Add(bs);
 }