Ejemplo n.º 1
0
    //=====================================================

    public void OnBossDeadEvent()
    {
        _isPlayerDead = false;

        if (BossManager.Instance == null || BossManager.Instance.CutsceneBossLoses == null)
        {
            return;
        }

        _isLeavingBossRoom = true;

        SetNextLocation(eLocation.MAIN_HALL);

        // Play cutscene
        if (BossLosesEvent != null)
        {
            BossLosesEvent(BossManager.Instance.CutsceneBossLoses);
        }

        // Apply wild magic bonus
        if (PlayerPrefsWrapper.HasKey("FirstBossKill") == false || PlayerPrefsWrapper.GetInt("FirstBossKill") != 1)
        {
            PlayerPrefsWrapper.SetInt("FirstBossKill", 1);

            GameDataManager.Instance.AddWildMagicAndPopulation(
                WildMagicItemsManager.GetWildMagicItem("WM_RATE_BOSS_FIGHT_WIN_FIRST"));
        }
        else
        {
            GameDataManager.Instance.AddWildMagicAndPopulation(
                WildMagicItemsManager.GetWildMagicItem("WM_RATE_BOSS_FIGHT_WIN_DEFAULT"));
        }

        // Increment boss level
        if (GameDataManager.Instance.PlayerBossLevel < GameDataManager.Instance.PlayerMaxFairyLevel)
        {
            GameDataManager.Instance.PlayerBossLevel += 1;
        }

        // If boss is at level 3 then start timer intervals between boss appearances
        // Note: time-interval-start checked by boss door on entering MainHall scene
        if (GameDataManager.Instance.PlayerBossLevel >= GameDataManager.Instance.PlayerMaxFairyLevel)
        {
            PlayerPrefsWrapper.SetDouble("BossRoomTimedIntervalStarted", PreHelpers.UnixUtcNow());
        }
    }
Ejemplo n.º 2
0
    //=====================================================

    void Start()
    {
        if (Application.isPlaying == false)
        {
            return;
        }

        // Boss Doors - enable boss torches - all torches enabled unlocks boss door
        if (_type != eDoorType.BOSS || _targetScene != eLocation.BOSS_ROOM || _bossTorches == null)
        {
            return;
        }

        // Max level for fairies and boss
        var maxLevel = GameDataManager.Instance.PlayerMaxFairyLevel;

        // Get current boss level
        var bossLevel = GameDataManager.Instance.PlayerBossLevel;

        // Get current min fairy level for boss fight
        var minFairyLevel = GameDataManager.Instance.PlayerFairyMinLevel();

        // Are we at the max-level boss? If so, check time interval else check current fairy levels
        // Note: time-interval-start set after killing level 3 boss: GameManager->OnBossDeadEvent()
        if (bossLevel >= maxLevel && minFairyLevel >= maxLevel)
        {
            // Get time in seconds since last boss appearance
            var    timeNow    = PreHelpers.UnixUtcNow();
            double timePassed = 0;
            if (PlayerPrefsWrapper.HasKey("BossRoomTimedIntervalStarted"))
            {
                timePassed = timeNow - PlayerPrefsWrapper.GetDouble("BossRoomTimedIntervalStarted");
            }
            var intervalInDays    = Convert.ToSingle(SettingsManager.GetSettingsItem("BOSS_RESPAWN_TIME", -1));
            var intervalInSeconds = intervalInDays * 24 * 60 * 60;

            // ToDo: check time since boss last appeared
            if (timePassed > intervalInSeconds)
            {
                // Enable torches
                foreach (var torch in _bossTorches)
                {
                    torch.EnableTorch();
                }

                return;
            }
        }

        // Check current fairy levels
        var fairyLevels = GameDataManager.Instance.PlayerFairyLevels();

        if (fairyLevels.Length > _bossTorches.Length)
        {
            return;
        }

        // Enable torches for fairies at high enough level
        for (var i = 0; i < fairyLevels.Length; i++)
        {
            if (fairyLevels[i] >= bossLevel)
            {
                _bossTorches[i].EnableTorch();
            }
        }
    }