Пример #1
0
    public void TakeDamage(int value)
    {
        entity.CurrentHealth -= value;
        if (value > 0)
        {
            if (!(mageType == MageType.Prince))
            {
                ds.PlaySoundScript("event:/Characters/Combat/Mage/char_mage_damage", 0, 0);
            }
            else
            {
                ds.PlaySoundScript("event:/Characters/Combat/Prince/char_prince_damage", 0, 0);
            }
            animator.SetBool("Pain", true);
        }

        if (entity.CurrentHealth > entity.Stats.MaxHealth)
        {
            entity.CurrentHealth = entity.Stats.MaxHealth;
        }

        slidingBarScript.SetCurValue(entity.CurrentHealth);

        if (entity.CurrentHealth <= 0)
        {
            Battle.KillEnemy(gameObject);
        }
    }
Пример #2
0
    public void Init(int level, MageType mageType, GameObject[] enemies, SlidingBar slidingBar, Canvas canvas)
    {
        entity.InitStats(TypeIdentifier, level);
        Debug.Log(entity.Stats.Attack);
        Debug.Log(entity.Stats.MaxHealth);
        playerScript = Battle.playerScript;
        player       = Battle.playerObject;

        this.mageType = mageType;
        switch (mageType)
        {
        case MageType.Normal:
            GetComponentInChildren <Renderer>().material.mainTexture = texture3;
            break;

        case MageType.Stun:
            GetComponentInChildren <Renderer>().material.mainTexture = texture2;
            break;

        case MageType.Heal:
            GetComponentInChildren <Renderer>().material.mainTexture = texture1;
            break;

        case MageType.Prince:
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }

        this.enemies = enemies;
        enemyScripts = new EnemyBattleScript[enemies.Length];
        for (int i = 0; i < enemies.Length; i++)
        {
            enemyScripts[i] = enemies[i].GetComponent <EnemyBattleScript>();
        }

        alive = new bool[enemies.Length];
        for (int i = 0; i < alive.Length; i++)
        {
            alive[i] = true;
        }

        slidingBarScript = slidingBar;
        slidingBar.SetMaxValue(entity.Stats.MaxHealth);
        slidingBar.SetCurValue(entity.CurrentHealth);

        this.canvas         = canvas;
        this.canvas.enabled = true;
    }
Пример #3
0
    void Update()
    {
        healthBar.SetCurValue(playerEntity.CurrentHealth);

        bool allDead = true;

        foreach (bool var in alive)
        {
            if (var)
            {
                allDead = false;
            }
        }

        if (playerTurn)
        {
            if (playerScript.Turn())
            {
                playerTurn = false;
                battleUIScript.UpdateUI();
            }
        }
        else
        {
            bool done;
            if (alive[enemyIndex])
            {
                GameObject        enemy       = enemiesGameObjects[enemyIndex];
                EnemyBattleScript enemyScript = enemy.GetComponent <EnemyBattleScript>();
                if (enemyScript.Ready())
                {
                    done = enemyScript.Turn();
                    battleUIScript.EnemiesTurn();
                }
                else
                {
                    done = false;
                }
            }
            else
            {
                done = true;
            }
            if (done)
            {
                enemyIndex++;
                if (enemyIndex >= enemiesGameObjects.Count)
                {
                    battleUIScript.ResetTurn();
                    playerTurn = true;
                    enemyIndex = 0;
                }
            }
        }

        if (playerDead)
        {
            float animTime = playerScript.Disable();
            if (animTime > 0)
            {
                battleUIScript.BattleResults(false);
                playerDead = false;
                Invoke("MoveToForestScene", animTime);
            }
        }

        if (allDead)
        {
            if (xpNotCounted)
            {
                int sum = 0;
                foreach (GameObject enemy in enemiesGameObjects)
                {
                    EnemyBattleScript enemyScript = enemy.GetComponent <EnemyBattleScript>();
                    sum += enemyScript.entity.Stats.Experience;
                }

                playerEntity.CurrentExperience += sum;
                while (playerEntity.CurrentExperience >= playerEntity.Stats.Experience)
                {
                    int remainder = playerEntity.CurrentExperience - playerEntity.Stats.Experience;
                    playerEntity.LevelUp();
                    playerEntity.CurrentExperience += remainder;
                }

                won = true;

                SaveLoadController.data.CurrHealth = playerEntity.CurrentHealth;
                SaveLoadController.data.CurrExp    = playerEntity.CurrentExperience;
                SaveLoadController.data.CurrLevel  = playerEntity.Stats.Level;
                battleUIScript.BattleResults(true);

                Invoke("MoveToForestScene", animTime);
                xpNotCounted = false;
            }
        }
    }
    void Awake()
    {
        SavedGame.gameObject.SetActive(false);

        if (!Battle.won)
        {
            SaveLoadController.Load();
        }
        else if (Battle.worldObjName != "" && Battle.won)
        {
            SaveLoadController.EnemiesDefeatedList.Add(Battle.worldObjName);
            if (Battle.worldObjName == "Prince")
            {
                SceneManager.LoadScene("end_game");
            }
        }

        SaveLoadController.SaveData data = SaveLoadController.data;

        if (SaveLoadController.data != null)
        {
            GameObject.FindGameObjectWithTag("Player").transform.position = new Vector3(data.PositionX, data.PositionY, data.PositionZ);
            Battle.playerEntity.InitStats("Dragon", data.CurrLevel);
            Battle.playerEntity.CurrentExperience = data.CurrExp;
            Battle.playerEntity.CurrentHealth     = data.CurrHealth;

            StoryController.SetNumberScrollsFound(data.ScrollsCaughtCount);

            foreach (FountainController fountain in FindObjectsOfType <FountainController>())
            {
                int i = Array.IndexOf(data.FountainsUsed, fountain.name);

                if (i > -1)
                {
                    fountain.active = false;
                }
            }

            foreach (EnemyWorldScript enemy in FindObjectsOfType <EnemyWorldScript>())
            {
                int i = Array.IndexOf(data.EnemiesDefeated, enemy.name);

                if (i > -1 || (enemy.name == Battle.worldObjName && Battle.won))
                {
                    Destroy(enemy.gameObject);
                }
            }

            foreach (ScrollController scrollSub in FindObjectsOfType <ScrollController>())
            {
                GameObject scroll = scrollSub.transform.parent.gameObject;

                int i = Array.IndexOf(data.ScrollsCaught, scroll.name);

                if (i > -1)
                {
                    Destroy(scroll.gameObject);
                }
            }
        }
        else
        {
            SaveLoadController.ResetValues();
            SaveLoadController.Save();
        }

        HealthBar.SetMaxValue(Battle.playerEntity.Stats.MaxHealth);
        HealthBar.SetCurValue(Battle.playerEntity.CurrentHealth);

        ExperienceBar.SetMaxValue(Battle.playerEntity.Stats.Experience);
        ExperienceBar.SetCurValue(Battle.playerEntity.CurrentExperience);

        LevelLabel.text = "Level " + Battle.playerEntity.Stats.Level;
    }