private static FinalBossBeam FinalBossBeamOnInit(On.Celeste.FinalBossBeam.orig_Init orig, FinalBossBeam self,
                                                  FinalBoss boss, Player target)
 {
     self.TrySetEntityId2(boss.HasEntityId2() ? boss.GetEntityId2().ToString() : "null", target.GetEntityId2());
     self.SetPlayerPosition(target);
     return(orig(self, boss, target));
 }
Пример #2
0
 void Start()
 {
     finalBossController = (FinalBoss)finalBoss.GetComponent("FinalBossController");
     gateOpener = (GateOpener)(gameObject.GetComponent("GateOpener"));
     gatlingWeapon = GameObject.Find("GatlingWeapon");
     doubleCannonballWeapon = GameObject.Find("DoubleCannonballWeapon");
 }
Пример #3
0
        private static void FinalBossOnTriggerFallingBlocks(On.Celeste.FinalBoss.orig_TriggerFallingBlocks orig,
                                                            FinalBoss self, float badelineX)
        {
            ReverseComponent reverseComponent = self.Get <ReverseComponent>();

            if (reverseComponent != null)
            {
                var fallingBlocks = reverseComponent.FinalBossReversed.fallingBlocks;
                while (fallingBlocks.Count > 0 && fallingBlocks[0].Scene == null)
                {
                    fallingBlocks.RemoveAt(0);
                }

                var num = 0;
                while (fallingBlocks.Count > 0 && fallingBlocks[0].X > badelineX)
                {
                    if (!(fallingBlocks[0] is FallingBlock fallingBlock))
                    {
                        continue;
                    }

                    fallingBlock.StartShaking();
                    fallingBlock.Triggered = true;
                    fallingBlock.FallDelay = 0.4f * num;
                    ++num;
                    fallingBlocks.RemoveAt(0);
                }
            }
            else
            {
                orig(self, badelineX);
            }
        }
Пример #4
0
 void Update()
 {
     if (Input.GetMouseButtonDown(0))
     {
         muzzleFlash.Play();
         mAudioSrc.Play();
         Vector3    point = new Vector3(_camera.pixelWidth / 2, _camera.pixelHeight / 2, 0);
         Ray        ray   = _camera.ScreenPointToRay(point);
         RaycastHit hit;
         if (Physics.Raycast(ray, out hit))
         {
             if (Physics.Raycast(ray, out hit))
             {
                 GameObject hitObjec = hit.transform.gameObject;
                 FinalBoss  targe    = hitObjec.GetComponent <FinalBoss>();
                 Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
                 if (targe != null)
                 {
                     targe.ReactToHit(damage);
                 }
             }
         }
         if (Physics.Raycast(ray, out hit))
         {
             GameObject     hitObject = hit.transform.gameObject;
             ReactiveTarget target    = hitObject.GetComponent <ReactiveTarget>();
             Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
             if (target != null)
             {
                 target.ReactToHit(damage);
             }
         }
     }
 }
        private static void ModHitbox(On.Monocle.Entity.orig_DebugRender orig, Entity self, Camera camera)
        {
            if (!CelesteTasModule.Settings.ShowHitboxes)
            {
                orig(self, camera);
                return;
            }

            orig(self, camera);

            if (self is FinalBossBeam finalBossBeam)
            {
                DynData <FinalBossBeam> dynData = finalBossBeam.GetDynDataInstance();
                if (dynData.Get <float>("chargeTimer") <= 0f && dynData.Get <float>("activeTimer") > 0f)
                {
                    FinalBoss boss    = dynData.Get <FinalBoss>("boss");
                    float     angle   = dynData.Get <float>("angle");
                    Vector2   vector  = boss.BeamOrigin + Calc.AngleToVector(angle, 12f);
                    Vector2   vector2 = boss.BeamOrigin + Calc.AngleToVector(angle, 2000f);
                    Vector2   value   = (vector2 - vector).Perpendicular().SafeNormalize(2f);
                    Player    player  = boss.Scene.CollideFirst <Player>(vector + value, vector2 + value);
                    Draw.Line(vector + value, vector2 + value, Color.Aqua);
                    Draw.Line(vector - value, vector2 - value, Color.Aqua);
                    Draw.Line(vector, vector2, Color.Aqua);
                }
            }
        }
Пример #6
0
 public FinalBossReversed(EntityData data, Vector2 offset)
 {
     finalBoss = new FinalBoss(data, offset)
     {
         new ReverseComponent(this)
     };
     finalBoss.Remove(finalBoss.Get <CameraLocker>());
 }
 public FinalBossMoveMissile(FinalBoss b, float move, GameObject fast, Transform p)
 {
     this.boss = b;
     moveSpeed = move;
     this.fastMissilePrefab = fast;
     playerTransform        = p;
     dir = new Vector3(-1.0f, 0f, 0f);
 }
Пример #8
0
 //TODO: start combat here.
 public override void OnEvent(FinalBoss evnt)
 {
     BoltConsole.Write("Final Boss battle (not yet implemented so everyone dies)");
     BoltConsole.Write("Final Boss battle (not yet implemented so everyone dies)");
     PanelHolder.instance.displayNotify("Final Boss Battle", "(not yet implemented so everyone dies)", "OK");
     playerSpellcaster = playerEntity.GetComponent <Player>().spellcaster;
     playerSpellcaster.TakeDamage((int)(playerSpellcaster.fCurrentHealth));
     SpellCaster.savePlayerData(playerSpellcaster);
 }
 void Start()
 {
     player = GameObject.FindGameObjectWithTag("Player");
     cannonStartingRotation = cannon.transform.rotation;
     armStartingRotation    = arm.transform.rotation;
     health    = maxHealth;
     finalBoss = this;
     SelectAttack();
 }
Пример #10
0
    public List <Enemy> getEnemies(int floor)
    {
        List <Enemy> enemies = new List <Enemy>();

        if (floor == 0)
        {
            enemies.Add(TutorialEnemy.Create());
        }
        else if (floor == 15)
        {
            enemies.Add(MiniBoss.Create(16));
            enemies.Add(MiniBoss.Create(25));
            enemies.Add(MiniBoss.Create(36));
        }
        else if (floor == 30)
        {
            enemies.Add(MiniBoss.Create(26));
            enemies.Add(MiniBoss.Create(27));
            enemies.Add(MiniBoss.Create(28));
        }
        else if (floor == 45)
        {
            enemies.Add(MiniBoss.Create(11));
            enemies.Add(MiniBoss.Create(13));
        }
        else if (floor == 46)
        {
            enemies.Add(MiniBoss.Create(17));
            enemies.Add(MiniBoss.Create(19));
        }
        else if (floor == 47)
        {
            enemies.Add(MiniBoss.Create(64));
            enemies.Add(MiniBoss.Create(81));
        }
        else if (floor == 48)
        {
            enemies.Add(MiniBoss.Create(89));
            enemies.Add(MiniBoss.Create(97));
        }
        else if (floor == 49)
        {
            enemies.Add(MiniBoss.Create(3));
            enemies.Add(MiniBoss.Create(6));
            enemies.Add(MiniBoss.Create(9));
        }
        else if (floor == 50)
        {
            enemies.Add(FinalBoss.Create());
        }
        else
        {
            addNormalEnemies(floor, ref enemies);
        }
        return(enemies);
    }
    private void Start()
    {
        player  = GameObject.FindWithTag("Player").transform;
        boss    = GameObject.FindWithTag("FinalBoss").transform;
        archer  = GameObject.FindWithTag("Archer").transform;
        soldier = GameObject.FindWithTag("Soldier").transform;

        finalBossScript = FindObjectOfType <FinalBoss>();
        archerScript    = FindObjectOfType <Archer>();
        soldierScript   = FindObjectOfType <Soldier>();
    }
Пример #12
0
        public override Enemy Create(BulletManager bulletManager, EnemyConfig enemy, GameData gameData, Vector2 origin)
        {
            this.bulletManager = bulletManager;

            FinalBoss newEnemy = new FinalBoss(bulletManager, gameData);

            //Load - sets position of enemy as well
            Load(newEnemy, enemy, origin);

            return(newEnemy);
        }
Пример #13
0
 private void OnCollisionEnter(Collision other)
 {
     if (other.gameObject.CompareTag("Player"))
     {
         audioSrc.PlayOneShot(iceCollide);
         playST = other.gameObject.GetComponent <PlayerStats>();
         playST.doDamage(5);
         Destroy(gameObject);
     }
     else if (other.gameObject.CompareTag("GhostBoss"))
     {
         if (Hit)
         {
             audioSrc.PlayOneShot(iceCollide);
             boss = other.gameObject.GetComponent <GhostBoss>();
             if (CrystalProjectile)
             {
                 boss.HitShieldCounter(1);
             }
             else
             {
                 boss.HitShieldCounter(2);
             }
             Destroy(gameObject);
         }
     }
     else if (other.gameObject.CompareTag("FinalBoss"))
     {
         if (Hit)
         {
             audioSrc.PlayOneShot(iceCollide);
             finalBoss = other.gameObject.GetComponent <FinalBoss>();
             finalBoss.DoHitPoints(5);
             Destroy(gameObject);
         }
     }
     else if (other.gameObject.CompareTag("Eye"))
     {
         if (Hit)
         {
             audioSrc.PlayOneShot(iceCollide);
             Eye = other.gameObject.GetComponent <EyeEnemy>();
             if (Eye != null)
             {
                 Eye.FreezeEnemy(true);
             }
             Destroy(gameObject);
         }
     }
     else
     {
         Destroy(gameObject, 5);
     }
 }
Пример #14
0
 public void Attacking(int num)
 {
     finBoss = ScriptObject.GetComponent <FinalBoss>();
     if (num == 1)
     {
         finBoss.Attacked(true);
     }
     else
     {
         finBoss.Attacked(false);
     }
 }
        public static FinalBossBeam Clone(this FinalBossBeam finalBossBeam)
        {
            FinalBoss boss = finalBossBeam.GetField("boss")?.TryFindOrCloneObject() as FinalBoss;

            if (boss == null)
            {
                return(null);
            }

            return(Engine.Pooler.Create <FinalBossBeam>().Init(boss,
                                                               new Player(finalBossBeam.GetPlayerPosition(), PlayerSpriteMode.Madeline)));
        }
Пример #16
0
 public void StartCharging(int num)
 {
     if (num == 1)
     {
         finBoss = ScriptObject.GetComponent <FinalBoss>();
         finBoss.Charging(true);
     }
     else
     {
         finBoss.Charging(false);
     }
 }
Пример #17
0
/// <summary>
/// Sent when another object enters a trigger collider attached to this
/// object (2D physics only).
/// </summary>
/// <param name="other">The other Collider2D involved in this collision.</param>
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.name == "HitBox" | other.tag == "Player" & this.name == "crank-down")
        {
            Debug.Log(other.name);

            FinalBoss finalBossSrc = finalBoss.GetComponent <FinalBoss>();

            finalBossSrc.enableCrackUp();
            finalBossSrc.disableCrackDown();
            finalBossSrc.isInCrack = true;
        }
    }
Пример #18
0
 public void Flash(int num)
 {
     if (num == 1)
     {
         finBoss = ScriptObject.GetComponent <FinalBoss>();
         finBoss.AttackFlash(1);
     }
     else
     {
         finBoss = ScriptObject.GetComponent <FinalBoss>();
         finBoss.AttackFlash(0);
     }
 }
Пример #19
0
        public override void Update(GameTime gameTime)
        {
            //_bg = waveHelper.ChangeBg(gameTime);


            //This is a local state timer, nothing to do with  gameTime!!!
            //min unit: 100 Millisecond(See property _min in State.cs)
            //invoke GetWave for each second
            #region StateTimer

            _mtemp += gameTime.ElapsedGameTime.TotalMilliseconds;

            if ((int)_mtimer / _min != (int)_mtemp / _min)
            {
                _mtimer = _mtemp;

                if ((int)_mtimer % 1000 == 0 && (int)_mtimer != 0)
                {
                    _stimer++;
                    _mtimer = 0;
                    _mtemp  = 0;
                }

                _background.SetTexture(waveHelper.ChangeBg(gameTime, (int)_stimer, (int)_mtimer));
                waveHelper.GetWave(_sprites, gameTime, (int)_stimer, (int)_mtimer);
                if (!waveHelper.CheckBossTime(gameTime))
                {
                    _game.ChangeState(new GameOver(_game, _content, 1));
                }
                if (FinalBoss.GetInstance().IsDead)
                {
                    _game.ChangeState(new GameOver(_game, _content, 2));
                }

                // Console.Out.Write(((int)_stimer).ToString());
                // Console.Out.Write("  ");
                // Console.Out.WriteLine(((int)_mtimer).ToString());
            }

            #endregion


            foreach (var sprite in _sprites.ToArray())
            {
                sprite.Update(gameTime, _sprites);
            }

            PostUpdate(gameTime);
        }
Пример #20
0
 public void StartWalking(int num)
 {
     if (num > 0)
     {
         shake   = false;
         finBoss = ScriptObject.GetComponent <FinalBoss>();
         finBoss.SwitchState(FinalBoss.EnemyState.isWalking);
     }
     else
     {
         shake   = false;
         finBoss = ScriptObject.GetComponent <FinalBoss>();
         finBoss.SwitchState(FinalBoss.EnemyState.notWalking);
     }
 }
Пример #21
0
        static void PlayerProjectilesCollisions()
        {
            foreach (Projectile projectile in ProjectilesManager.playerProjectiles)
            {
                if (RoomsManager.CurrentRoom == RoomsManager.Rooms.finalBoss)
                {
                    if (FinalBoss.BossHitByRectangle(projectile.Rectangle))
                    {
                        projectile.active = false;
                    }
                }
                else if (RoomsManager.CurrentRoom == RoomsManager.Rooms.midBoss)
                {
                    if (!MidBoss.Dead && MidBoss.BossHitByRect(projectile.Rectangle))
                    {
                        projectile.active = false;
                    }
                }
                else if (RoomsManager.CurrentRoom == RoomsManager.Rooms.churchAltarRoom)
                {
                    foreach (Torch t in TorchManager.torches)
                    {
                        if (t.TorchHitByRect(projectile.Rectangle))
                        {
                            projectile.active = false;
                        }
                    }
                }

                foreach (Enemy1 enemy in EnemyManager.enemyRoomManagers[(int)RoomsManager.CurrentRoom].enemiesType1)
                {
                    if (!enemy.Dead && enemy.Enemy1HitByRect(projectile.Rectangle))
                    {
                        projectile.active = false;
                    }
                }

                foreach (Enemy2 enemy in EnemyManager.enemyRoomManagers[(int)RoomsManager.CurrentRoom].enemiesType2)
                {
                    if (!enemy.Dead && enemy.Enemy2HitByRect(projectile.Rectangle))
                    {
                        projectile.active = false;
                    }
                }
            }
        }
Пример #22
0
 static void PlayerCollisions(float elapsedTime)
 {
     #region COLLISION PLAYER-HARMFUL TILES
     if (MapsManager.maps[(int)RoomsManager.CurrentRoom].HarmfulTileIntersectsRectangle(Player.CollisionRectangle))
     {
         Player.takeDamage();
         return;
     }
     #endregion
     #region COLLISIONS PLAYER-FIREBALLS
     if (FireBallsManager.FireballIntersectsRectangle(Player.CollisionRectangle))
     {
         Player.takeDamage();
         return;
     }
     #endregion
     #region COLLISION PLAYER-LAVA GEYSER
     if (LavaGeyserManager.LavaGeyserIntersectsRectangle(Player.CollisionRectangle))
     {
         Player.takeDamage();
         return;
     }
     #endregion
     #region COLLISION PLAYER-FINAL BOSS WINGS
     if (RoomsManager.CurrentRoom == RoomsManager.Rooms.finalBoss)
     {
         if (FinalBoss.WingHitByReactangle(Player.CollisionRectangle, Player.JumpSpeed.Y, elapsedTime))
         {
             Player.Rebound(2);
         }
     }
     #endregion
     #region COLLISION PLAYER-MIDBOSS
     //If the player is in the midboss room, and comes into contact with the midboss whilst it is moving
     //Player will take damage
     if (RoomsManager.CurrentRoom == RoomsManager.Rooms.midBoss)
     {
         if (MidBoss.bossState == MidBoss.BossState.move && Player.CollisionRectangle.Intersects(MidBoss.BossCollisionRect))
         {
             Player.takeDamage();
         }
     }
     #endregion
 }
    public override void Attack()
    {
        if (m_weaponDelay <= 0)
        {
            setDelayWeapon(Character.AXE_DELAY);

            Vector2 pos = transform.position;
            if (m_facing == FACING_LEFT)
            {
                pos.x -= 2;
            }
            else
            {
                pos.x += 2;
            }
            var colliders = Physics2D.OverlapCircleAll(pos, 1);
            var collider  = ShortestDistance(colliders);
            if (collider != null)
            {
                if (collider.tag == "tree")
                {
                    collider.GetComponent <Tree>().AttackTree();
                }
                else if (collider.tag == "stone")
                {
                    collider.GetComponent <Rock>().AttackRock();
                }
                else if (collider.tag == "redEnemy")
                {
                    collider.GetComponent <RedEnemy>().AttackByCharacter();
                }
                else if (collider.tag == "resourceEater")
                {
                    ResourcesEater t = collider.GetComponent <ResourcesEater>();
                    t.AttackByCharacter();
                }
                else if (collider.tag == "finalBoss")
                {
                    FinalBoss t = collider.GetComponent <FinalBoss>();
                    t.AttackByCharacter();
                }
            }
        }
    }
Пример #24
0
    IEnumerator CometDamage()
    {
        GameObject projectile;

        projectile = Instantiate(DamagingProjectile, transform.position + new Vector3(1, 0, 0), transform.rotation);
        if (gameObject.tag == "FinalBoss")
        {
            FinalBoss fb = transform.parent.GetComponent <FinalBoss>();
            yield return(new WaitForSeconds(0.75f));

            fb.DealDamage(25);
        }
        else
        {
            Enemy enemyScript = transform.parent.GetComponent <Enemy>();
            yield return(new WaitForSeconds(0.75f));

            enemyScript.takeDamage(25);
        }
    }
Пример #25
0
    //spawn boss after animation finished
    IEnumerator SpawnBoss()
    {
        yield return(new WaitForSeconds(0.5f));

        //GameObject _boss = Instantiate(boss, gameObject.transform.position, Quaternion.identity);
        boss.transform.localScale = new Vector3(0.1f, 0.1f, 1.0f);
        boss.transform.position   = gameObject.transform.position;

        finalBoss = boss.GetComponent <FinalBoss>();

        finalBoss.isActive = true;

        GameObject[] items = GameObject.FindGameObjectsWithTag("Item");

        foreach (var item in items)
        {
            Destroy(item);
        }

        Destroy(gameObject);
    }
        private void TrySwitchSprite(FinalBoss finalBoss)
        {
            if (patternIndex == 0)
            {
                PlayerSprite normalSprite = new PlayerSprite(PlayerSpriteMode.Badeline)
                {
                    Scale = { X = -1f }
                };
                normalSprite.Play("laugh");

                PlayerHair normalHair = new PlayerHair(normalSprite)
                {
                    Color = BadelineOldsite.HairColor, Border = Color.Black, Facing = Facings.Left
                };

                finalBoss.NormalSprite = normalSprite;
                NormalHairFieldInfo.SetValue(finalBoss, normalHair);

                finalBoss.Add(normalHair);
                finalBoss.Add(normalSprite);

                if (finalBoss.Sprite != null)
                {
                    normalSprite.Position = finalBoss.Sprite.Position;
                    finalBoss.Remove(finalBoss.Sprite);
                    if (finalBoss.Get <SpriteRemovedComponent>() == null)
                    {
                        finalBoss.Add(new SpriteRemovedComponent());
                    }
                    // 许多方法需要 Sprite 所以暂时设置为 null,等到 OnPlayer 之时才设置为 null
                    // finalBoss.Sprite = null;
                }
            }
            else if (finalBoss.NormalSprite != null)
            {
                CreateBossSpriteMethodInfo?.Invoke(finalBoss, null);
            }
        }
        public static FinalBossShot Clone(this FinalBossShot finalBossShot)
        {
            FinalBoss boss = finalBossShot.GetField("boss")?.TryFindOrCloneObject() as FinalBoss;

            if (boss == null)
            {
                return(null);
            }

            if (finalBossShot.GetField("target") == null)
            {
                return(Engine.Pooler.Create <FinalBossShot>()
                       .Init(boss, (Vector2)finalBossShot.GetField("targetPt")));
            }

            if (Engine.Scene.GetPlayer() is Player player)
            {
                return(Engine.Pooler.Create <FinalBossShot>()
                       .Init(boss, player, (float)finalBossShot.GetField("angleOffset")));
            }

            return(null);
        }
Пример #28
0
    public void _KillFinalBoss(FinalBoss _FinalBoss)
    {
        // Spawn reward
        Instantiate(_FinalBoss.reward, _FinalBoss.transform.position, Quaternion.identity);

        // Let's play some sound
        audioManager.PlaySound(_FinalBoss.deathSoundName);

        //Add experience and money
        _curExp += 40;
        Money += _FinalBoss.moneyDrop;

        // Add particles
        GameObject _clone = Instantiate(_FinalBoss.deathParticles, _FinalBoss.transform.position, Quaternion.identity) as GameObject;
        Destroy(_clone, 5f);

        // Go camerashake
        cameraShake.Shake(_FinalBoss.shakeAmt, _FinalBoss.shakeLength);
        Destroy(_FinalBoss.gameObject);
    }
 private void Awake()
 {
     boss = transform.parent.GetComponent <FinalBoss>();
 }
Пример #30
0
 // Start is called before the first frame update
 void Start()
 {
     firstBoss = firstBoss.GetComponent <FirstBoss>();
     finalBoss = finalBoss.GetComponent <FinalBoss>();
 }
Пример #31
0
    // Update is called once per frame
    void Update()
    {
        if (SceneManager.GetActiveScene().name == "Main2" || SceneManager.GetActiveScene().name == "Main4")
        {
            if (bossDead)
            {
                GameObject[] gameObjects = GameObject.FindGameObjectsWithTag("EnemyBullets");

                for (var i = 0; i < gameObjects.Length; i++)
                {
                    Destroy(gameObjects[i]);
                }

                Player1 player1 = (Player1)FindObjectOfType(typeof(Player1));
                player1.savePlayer();
                canSwitch = true;
            }
            FinalBoss finalBoss = (FinalBoss)FindObjectOfType(typeof(FinalBoss));
            if (SceneManager.GetActiveScene().name == "Main4" && spawnedEnemies == 0 && finalBoss.Live > finalBoss.MaxLive / 2)
            {
                float spawnPlace; // = ((int)(Random.value * 10) % 2) == 0 ? -103 : 35;
                if (((int)(Random.value * 10) % 2) == 0)
                {
                    spawnPlace = -103;
                    if (spawnLeft > spawnRight + 1)
                    {
                        spawnPlace = 35;
                        spawnRight++;
                    }
                    else
                    {
                        spawnLeft++;
                    }
                }
                else
                {
                    spawnPlace = 35;
                    if (spawnRight > spawnLeft + 1)
                    {
                        spawnPlace = -103;
                        spawnLeft++;
                    }
                    else
                    {
                        spawnRight++;
                    }
                }

                Instantiate(enemies[(int)Mathf.Floor(Random.value * enemies.Length)], new Vector3(spawnPlace, transform.position.y - Random.value * 10 * Mathf.Pow(-1, (int)Random.value)), Quaternion.Euler(0, 0, -90));
                spawnedEnemies++;
            }
        }
        else if (SceneManager.GetActiveScene().name == "Main1" || SceneManager.GetActiveScene().name == "Main3")
        {
            for (int i = levels - 1; i >= 0; i--)
            {
                if (Time.time > levelStartTime[i] && spawnedEnemies <= 0)
                {
                    currentLevel = i;
                    break;
                }
            }
            if (spawnedEnemies < levelSpawn[currentLevel] && levelStartTime[levels - 1] + levelMinTime > Time.time)
            {
                // maximum each side spawn 2 enemies consecutively
                float spawnPlace; // = ((int)(Random.value * 10) % 2) == 0 ? -103 : 35;
                if (((int)(Random.value * 10) % 2) == 0)
                {
                    spawnPlace = -103;
                    if (spawnLeft > spawnRight + 1)
                    {
                        spawnPlace = 35;
                        spawnRight++;
                    }
                    else
                    {
                        spawnLeft++;
                    }
                }
                else
                {
                    spawnPlace = 35;
                    if (spawnRight > spawnLeft + 1)
                    {
                        spawnPlace = -103;
                        spawnLeft++;
                    }
                    else
                    {
                        spawnRight++;
                    }
                }

                Instantiate(enemies[(int)Mathf.Floor(Random.value * enemies.Length)], new Vector3(spawnPlace, transform.position.y - Random.value * 10 * Mathf.Pow(-1, (int)Random.value)), Quaternion.Euler(0, 0, -90));
                spawnedEnemies++;
            }
            else if (Time.time > levelStartTime[currentLevel] && Time.time > levelStartTime[Mathf.Clamp(currentLevel + 1, 0, levels - 1)] && spawnedEnemies > 0)
            {
                levelSpawn[currentLevel] = 0;
                levelStartTime[Mathf.Clamp(currentLevel + 1, 0, levels - 1)] = Time.time + 1;
                for (int i = currentLevel + 2; i < levels; i++)
                {
                    levelStartTime[i] = levelStartTime[i - 1] + levelMinTime;
                }
            }
            else if (spawnedEnemies == 0 && levelSpawn[levels - 1] == 0)
            {
                GameObject[] gameObjects = GameObject.FindGameObjectsWithTag("EnemyBullets");

                for (var i = 0; i < gameObjects.Length; i++)
                {
                    Destroy(gameObjects[i]);
                }

                Player1 player1 = (Player1)FindObjectOfType(typeof(Player1));
                player1.savePlayer();
                canSwitch = true; //switch scene
            }
        }
    }
Пример #32
0
 public static void KillFinalBoss(FinalBoss FinalBoss)
 {
     gm._KillFinalBoss(FinalBoss);
 }
Пример #33
0
    // Update is called once per frame
    void Update()
    {
        checkPower();
        if (!isPausedCheck.GetIsPaused())
        {
            cooldown = cooldown - Time.deltaTime;
            if (cooldown <= 0)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    //Melee Attack
                    StartCoroutine("animCode");
                    GameObject.FindGameObjectWithTag("MusicHandler").GetComponent <AudioController>().PlaySoundEffect(7); //Case 7 is Melee Attack.
                    cooldown = duplicateCD;
                    if (Physics.Raycast(transform.parent.position, transform.forward, out hit, SWORD_ATTACK_DISTANCE))
                    {
                        Debug.Log("RNG rolled!");
                        if (hit.collider.gameObject.CompareTag("ProjectileEnemy") || hit.collider.gameObject.CompareTag("SwordEnemy") || hit.collider.gameObject.CompareTag("FinalBoss"))
                        {
                            GameObject     obj         = hit.collider.gameObject;
                            Enemy          enemyScript = hit.collider.gameObject.GetComponent <Enemy>();
                            PowerBehaviour powers      = GameObject.FindWithTag("PowerHandler").GetComponent <PowerBehaviour>();
                            var            rand        = new System.Random();
                            Player         player      = GameObject.FindWithTag("MainCamera").GetComponent <Player>();
                            int            RNGRoll     = rand.Next(0, 9999);
                            if (RNGRoll > RAIN_POWER_CHANCE && RNGRoll < RAIN_POWER_CHANCE * 2 && player.GetRainAvailable())
                            {
                                if (powers.powerHandler[11].GetPowerActive() == true)
                                {
                                    RNGRoll = 1;
                                }
                            }
                            if (RNGRoll < RAIN_POWER_CHANCE)
                            {
                                if (powers.powerHandler[12].GetPowerActive() == true)
                                {
                                    isPausedCheck.ShowPowerActivatedMessage(1);
                                    powers.DisableAllFires();
                                    player.SetRainAvailable(false);
                                }
                            }
                            RNGRoll = rand.Next(0, 9999); //Roll another number between 0 and 999.
                            if (RNGRoll > JUSTICE_POWER_CHANCE && RNGRoll < JUSTICE_POWER_CHANCE * 2 && player.GetJusticeAvailable())
                            {
                                if (powers.powerHandler[11].GetPowerActive() == true)
                                {
                                    RNGRoll = 1;
                                }
                            }
                            if (RNGRoll < JUSTICE_POWER_CHANCE && player.GetJusticeAvailable())
                            {
                                //Justice rains from above. 2.5% chance of occuring when damage is dealt.

                                if (powers.powerHandler[13].GetPowerActive() == true)
                                {
                                    GameObject[] projectileEnemies = GameObject.FindGameObjectsWithTag("ProjectileEnemy");
                                    GameObject[] swordEnemies      = GameObject.FindGameObjectsWithTag("SwordEnemy");
                                    foreach (GameObject obj1 in projectileEnemies)
                                    {
                                        JusticeSpawn projectiles = obj1.GetComponentInChildren <JusticeSpawn>();
                                        if (projectiles != null)
                                        {
                                            isPausedCheck.ShowPowerActivatedMessage(2);
                                            projectiles.FirePowerEffect();
                                            player.SetJusticeAvailable(false);
                                        }
                                    }
                                    foreach (GameObject obj1 in swordEnemies)
                                    {
                                        JusticeSpawn projectiles = obj1.GetComponentInChildren <JusticeSpawn>();
                                        if (projectiles != null)
                                        {
                                            projectiles.FirePowerEffect();
                                            player.SetJusticeAvailable(false);
                                        }
                                    }
                                }
                            }
                            double damageCalc;
                            double bonusDamagePower;
                            if (power.powerHandler[8].GetPowerAvailable() == true)
                            {
                                bonusDamagePower = 1.5f;
                            }
                            else
                            {
                                bonusDamagePower = 1f;
                            }
                            damageCalc = damageDealt * bonusDamagePower; //Additional calculation here if in Expert difficulty, to reduce damage.
                            if (hit.collider.gameObject.CompareTag("FinalBoss"))
                            {
                                FinalBoss fbScript = hit.collider.gameObject.GetComponent <FinalBoss>();
                                fbScript.DealDamage((float)damageCalc);
                            }
                            if (enemyScript != null)
                            {
                                enemyScript.takeDamage(damageCalc);
                            }
                        }
                    }
                }
            }
        }
        else
        {
        }
    }