コード例 #1
0
    public bool Heal()
    {
        Debug.Log("Start heal.");
        if (!healing)
        {
            Debug.Log("Not Healing.");
            int min = 0;
            for (int i = 0; i < enemies.Length; i++)
            {
                if (!alive[i])
                {
                    continue;
                }
                Debug.Log("Chose" + i);
                min          = (int)enemyScripts[i].entity.CurrentHealth;
                target       = enemies[i];
                targetScript = enemyScripts[i];
                break;
            }
            for (int i = 1; i < enemies.Length; i++)
            {
                if (!alive[i])
                {
                    continue;
                }
                int health = (int)enemyScripts[i].entity.CurrentHealth;
                if (health < min)
                {
                    Debug.Log("Chose " + i);
                    min          = health;
                    target       = enemies[i];
                    targetScript = enemyScripts[i];
                }
            }

            healing = true;
        }

        animator.SetBool("Fire", true);

        AnimatorStateInfo clip = animator.GetCurrentAnimatorStateInfo(0);

        if (clip.IsName("Fire") && clip.normalizedTime > 0.95f)
        {
            Vector3 healPos = new Vector3(target.transform.position.x, target.transform.position.y + 1f, target.transform.position.z);
            Instantiate(healParticleObject, healPos, transform.rotation);
            ds.PlaySoundScript("event:/Characters/Combat/Dragon/char_dragon_heal", 0, 0);
            targetScript.TakeDamage(-(int)(entity.Stats.Attack * healMult));
            animator.SetBool("Fire", false);
            healing      = false;
            healCooldown = 2;
            return(true);
        }

        return(false);
    }
コード例 #2
0
    public void SetEnemiesGameObjects(GameObject[] e)
    {
        enemiesGameObjects = e;
        enemiesIndicators  = new GameObject[e.Length];

        for (int i = 0; i < e.Length; i++)
        {
            EnemyBattleScript eScript = e[i].GetComponent <EnemyBattleScript>();
            Canvas            eCanvas = eScript.GetCanvas();
            enemiesIndicators[i] = eCanvas.GetComponent <EnemyBattleIndicator>().GetIndicator();

            enemiesIndicators[i].SetActive(false);
        }
    }
コード例 #3
0
    public void SetSkillAndTarget(int skill, int target)
    {
        Debug.Log(skill + " " + target);
        switch (skill)
        {
        case 0:
            if (currentFireAttackCooldown == 0)
            {
                action = Actions.FireAttack;
            }
            break;

        case 1:
            if (currentHealCooldown == 0)
            {
                action = Actions.Heal;
            }
            break;

        case 2:
            if (currentBlockAttackCooldown == 0)
            {
                action = Actions.Block;
            }
            break;

        case 3:
            if (currentTailAttackCooldown == 0)
            {
                action = Actions.TailAttack;
            }
            break;

        case 4:
            if (currentSlashAttackCooldown == 0)
            {
                action = Actions.Attack;
            }
            break;
        }

        if (skill != 1 && skill != 2)
        {
            targetedEnemy             = enemies[target];
            targetedEnemyBattleScript = targetedEnemy.GetComponent <EnemyBattleScript>();
            targetedEnemyTransform    = targetedEnemy.GetComponent <Transform>();
        }
    }
コード例 #4
0
    // Use this for initialization
    void Start()
    {
        won          = false;
        xpNotCounted = true;
        enemiesGameObjects.Clear();
        enemiesScripts.Clear();
        playerTurn = true;

        enemiesAmount = Enemies.Length;
        GameObject player = Instantiate(PlayerPrefab, PlayerTransform);

        playerObject = player;
        playerScript = player.GetComponent <PlayerBattleScript>();
        switch (enemiesAmount)
        {
        case 1:
        case 3:
            enemyTransforms = EnemiesTransforms3;
            break;

        case 2:
            enemyTransforms = EnemiesTransforms2;
            break;

        default:
            throw new Exception("EnemiesAmount invalid");
        }

        for (int i = 0; i < enemiesAmount; i++)
        {
            GameObject enemy;
            if (Enemies[i].MageType == MageType.Prince)
            {
                enemy = Instantiate(PrincePrefab, enemyTransforms[i]);
            }
            else
            {
                enemy = Instantiate(MagePrefab, enemyTransforms[i]);
            }
            EnemyBattleScript enemyScript = enemy.GetComponent <EnemyBattleScript>();
            enemiesGameObjects.Add(enemy);
            enemiesScripts.Add(enemyScript);
        }

        for (int i = 0; i < enemiesAmount; i++)
        {
            GameObject        enemy       = enemiesGameObjects[i];
            EnemyBattleScript enemyScript = enemy.GetComponent <EnemyBattleScript>();
            Canvas            canvas      = enemyTransforms[i].gameObject.GetComponentInChildren <Canvas>();
            SlidingBar        slidingBar  = enemyTransforms[i].gameObject.GetComponentInChildren <SlidingBar>();
            enemyScript.Init(Enemies[i].Level, Enemies[i].MageType, enemiesGameObjects.ToArray(), slidingBar, canvas);
        }

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

        playerScript.SetEnemiesGameObjects(enemiesGameObjects.ToArray());

        battleUIScript = battleUIObject.GetComponent <BattleUIController> ();
        battleUIScript.SetBattleScript(playerScript);

        battleUIScript.SetEnemiesGameObjects(enemiesGameObjects.ToArray());

        healthBar.SetMaxValue(playerEntity.Stats.MaxHealth);
    }
コード例 #5
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;
            }
        }
    }