예제 #1
0
    }    //Disable

    public void WarriorsReturnAbility()
    {
        hero = GetComponentInParent <HeroManager>();
        Player allyPlayer      = hero.GetComponentInParent <Player>();
        int    deadHeroesCount = allyPlayer.deadHeroes.Count;

        if (hero.GetComponentInParent <Player>().isActive)
        {
            if (remainingCooldown == 0)
            {
                canUseAbility = true;

                if (deadHeroesCount > 0)
                {
                    GameObject revivedHero = allyPlayer.deadHeroes[Random.Range(0, deadHeroesCount)];
                    allyPlayer.deadHeroes.Remove(revivedHero);
                    HeroManager heroRevived = revivedHero.GetComponent <HeroManager>();

                    GameManager.Instance.ReviveHero(heroRevived);
                    heroRevived.maxHealth = 400;

                    GameManager.Instance.AddBuff("IncreaseAttack", 2, hero, heroRevived);

                    heroRevived.UpdateUI();

                    ResetCooldown();
                }
            }            //if cooldown = 0
        }
    }
예제 #2
0
    }    //AddBuff

    public void AddBuffComponentRandom(string buffName, int duration, HeroManager source, HeroManager target, int targetCount)
    {
        List <HeroManager> heroList = new List <HeroManager>();

        heroList.AddRange(target.GetComponentInParent <Player>().GetComponentsInChildren <HeroManager>());
        List <HeroManager> randomHeroList = RandomHeroList(heroList);

        int count       = 0;
        int heroCounter = 0;

        while (count < targetCount && heroCounter < randomHeroList.Count)
        {
            target = randomHeroList[heroCounter];

            if (target.hasAntiBuff)
            {
                Debug.Log("Target Hero has AntiBuff");
                //AddBuff(buffName, duration, source, target);
            }
            else if (source.hasSilence)
            {
                Debug.Log("Source Hero has Silence");
                //Crippled Strike Implementation
            }

            else if (IsChanceSuccess(source))              //check for Chance
            {
                AddBuff(buffName, duration, source, target);
                count++;
            }
            heroCounter++;
        }
    }
예제 #3
0
    }    //Disable Passives

    public IEnumerator KillHeroEvent(HeroManager hero)
    {
        hero.isDead = true;
        hero.GetComponentInParent <Player>().DeadHeroes(hero);
        hero.gameObject.SetActive(false);
        e_HeroKilled();
        yield return(null);
    }
예제 #4
0
    // void OnEnable(){

    //  GameManager.Instance.e_PlayerMainPhase += IncreaseDefense;
    //  //Debug.Log("Subscribed");
    // }



    public void IncreaseDefense()
    {
        hero = this.GetComponentInParent <HeroManager>();
        //Debug.Log("hero");

        if (hero.GetComponentInParent <Player>().isActive&& hero.isSelected)
        {
            GameManager.Instance.AddBuff("IncreaseDefense", 1, hero, hero);
        }
    }    //Increase Defense
예제 #5
0
    public void DreamyLeaderAbility()
    {
        hero   = gameObject.GetComponentInParent <HeroManager>();
        player = hero.GetComponentInParent <Player>();


        if (hero.isSelected && player.isActive)
        {
            List <HeroManager> enemies = GameManager.Instance.EnemyHeroList(hero);
            int targetCount            = enemies.Count;

            if (hero.GetComponentInParent <Player>().isActive)
            {
                foreach (HeroManager enemy in enemies)
                {
                    //Remove a buff
                    Buff[] buffs = enemy.GetComponents <Buff>();

                    if (buffs.Length > 0)
                    {
                        Buff buff = buffs[Random.Range(0, buffs.Length)];

                        //buff.OnDestroy();
                        Destroy(buff);
                        //Debug.Log("Buff Destroyeda " +buff +" from hero: " +enemy );

                        //addstun
                        if (enemy.hasImmunity || enemy.hasPermanentImmunity)
                        {
                            Debug.Log("Has Immunity");
                        }
                        else
                        {
                            GameManager.Instance.AddDebuff("Stun", 1, hero, enemy);
                        }
                    }
                }
            }    //if playerisActive

            //base.UseAbility(attacker);
        }
    }
예제 #6
0
    public void RandomAllyImmunity()
    {
        hero = this.GetComponentInParent <HeroManager>();

        if (hero.GetComponentInParent <Player>().isActive&& hero.isSelected)
        {
            //Debug.Log("hero");

            List <HeroManager> allies     = GameManager.Instance.AllyHeroList(hero);
            HeroManager        randomAlly = allies[Random.Range(0, allies.Count)];

            GameManager.Instance.AddBuff("Immunity", 1, hero, randomAlly);
        } //if hero is Active
    }     //RandomAllyImmunity
예제 #7
0
    }    //Extra Turn

    public void ExtraTurnCheck(HeroManager source)
    {
        List <HeroManager> extraTurnHeroes = AllyHeroList(source);

        if (!isTurnPaused)
        {
            //NORMAL ROUTE - NO EXTRA TURN

            //Resolve frozen heroes from an extra turn
            if (extraTurn)
            {
                foreach (HeroManager extraTurnhero in extraTurnHeroes)
                {
                    //reset hasExtraturn back to normal
                    extraTurnhero.hasExtraTurn = false;

                    //Disable access to skills/abilities
                    extraTurnhero.gameObject.GetComponent <HeroManager>().heroPanel.SetActive(true);
                    List <Button> skillsButton = extraTurnhero.gameObject.GetComponentInChildren <HeroPanel>().skillsBtn;
                    for (int i = 0; i < skillsButton.Count; i++)
                    {
                        skillsButton[i].interactable = true;
                        skillsButton[i].GetComponent <Ability>().skillType = extraTurnhero.abilityAssets[i].skillType;
                        //hero.transform.Find("HeroUI").gameObject.transform.Find("Image").GetComponent<Image>().color = GameManager.Instance.origColor;
                    }
                    extraTurnhero.gameObject.GetComponent <HeroManager>().heroPanel.SetActive(false);


                    //Restore Original Color (grayed-out from Extra Turn)

                    //hero.transform.Find("HeroUI").gameObject.transform.Find("Image").GetComponent<Image>().color = GameManager.Instance.origColor;
                    extraTurnhero.transform.Find("HeroUI").gameObject.transform.Find("Image").GetComponent <Image>().color = Color.white;
                }        //foreach
            }            //if

            //set Extra Turn to false and End the Turn
            extraTurn = false;

            source.GetComponentInParent <Player>().isEndTurn = true;

            EndTurn();
        }
        else
        {
            //EXTRA TURN

            //Unpause GameManager during Extra Turn
            isTurnPaused = false;
        }
    }    //Extra Turn Check
예제 #8
0
    }    //CriticalStrike

    public void CheckThreat(HeroManager attacker, HeroManager defender)
    {
        //For Defender
        //Check 3 states: 1) No Defender 2) Target has Defender 3) If you're target is an Ally
        if (NoThreat(defender.GetComponentInParent <Player>()) || defender.hasThreat || defender.GetComponentInParent <Player>().tag == attacker.GetComponentInParent <Player>().tag)
        {
            canTargetHero = true;
            checkDefender = true;
        }
        else
        {
            canTargetHero = false;
            checkDefender = false;
            Debug.Log("Invalid Target: Attack Defender Only");
        }
    }    //CheckDefender
예제 #9
0
    // void OnEnable(){
    //  GameManager.Instance.e_PlayerStartPhase += GainKnowledge;
    //  GetComponentInChildren<Text>().enabled = true;
    //  Debug.Log("Learn Knowledge Enabled");
    // }



    // void OnDisable(){
    //  GameManager.Instance.e_PlayerStartPhase -= GainKnowledge;
    //  GetComponentInChildren<Text>().enabled = false;
    //  Debug.Log("Learn Knowledge Disabled");
    // }


    public void GainKnowledge()
    {
        hero = this.GetComponentInParent <HeroManager>();

        List <HeroManager> allies  = GameManager.Instance.AllyHeroList(hero);
        List <HeroManager> enemies = GameManager.Instance.EnemyHeroList(hero);

        List <HeroManager> heroes = new List <HeroManager>();

        heroes.AddRange(allies);
        heroes.AddRange(enemies);

        //Get all buffs from each Player
        if (hero.GetComponentInParent <Player>().isActive&& hero.isSelected)
        {
            foreach (HeroManager hero1 in heroes)
            {
                Buff[] buffs1 = hero1.GetComponents <Buff>();
                foreach (Buff buff in buffs1)
                {
                    sumKnowledgePoints++;
                }        //foreach Buff in buffs
            }            //foreach Hero Manager

            if (sumKnowledgePoints == 0)
            {
                sumKnowledgePoints = 1;
            }

            knowledgePoints += sumKnowledgePoints;

            sumKnowledgePoints = 0;

            if (knowledgePoints < 1)
            {
                knowledgePoints = 1;
            }
            else if (knowledgePoints > 5)
            {
                knowledgePoints = 5;
            }

            GetComponentInChildren <Text>().text = knowledgePoints.ToString();

            //Debug.Log("Knowledge Points Total: " +knowledgePoints);
        } //if hero is Active
    }     //Gain Knowledge
예제 #10
0
    public override void UseAbility(HeroManager attacker, HeroManager defender)
    {
        List <HeroManager> enemies = GameManager.Instance.EnemyHeroList(attacker);

        //attack all enemies
        GameManager.Instance.AttackAll(attacker, defender);

        if (attacker.GetComponentInParent <Player>().isActive)
        {
            foreach (HeroManager enemy in enemies)
            {
                //Remove a buff
                Buff[] buffs = enemy.GetComponents <Buff>();

                if (buffs.Length > 0)
                {
                    foreach (Buff buff in buffs)
                    {
                        //buff.OnDestroy();
                        Destroy(buff);
                        //Debug.Log("Buff Destroyeda " +buff +" from hero: " +enemy );
                    }



                    //addstun
                    if (enemy.hasImmunity || enemy.hasPermanentImmunity)
                    {
                        Debug.Log("Has Immunity");
                    }
                    else
                    {
                        if (GameManager.Instance.IsChanceSuccess(attacker))
                        {
                            GameManager.Instance.AddDebuff("Stun", 1, attacker, enemy);
                        }
                    }
                }
            }
        }        //if playerisActive


        base.UseAbility(attacker);
    }
예제 #11
0
    }     //RandomAllyImmunity

    void AmeliaUnicorn(HeroManager oldHero)
    {
        //Unsubscribe passive ability
        GameManager.Instance.e_PlayerMainPhase -= RandomAllyImmunity;
        //DisableAbilityActive();

        //Create New Hero

        //Get AmeliaHiman
        heroAsset  = Resources.Load <HeroAsset>("SO Assets/Hero/Final/AmeliaUnicorn");
        heroPrefab = Resources.Load <HeroManager>("Prefabs/Hero");

        //Init Heroes Routine
        Transform heroLocation = oldHero.gameObject.transform;

        newHero = Instantiate(heroPrefab, heroLocation.position, heroLocation.rotation, transform);
        HeroManager heroManager = newHero.GetComponent <HeroManager>();

        heroManager.heroName  = heroAsset.heroName;
        heroManager.image     = heroAsset.image;
        heroManager.maxHealth = heroAsset.maxHealth;
        heroManager.attack    = heroAsset.attack;
        heroManager.defense   = heroAsset.defense;
        heroManager.chance    = heroAsset.chance;
        heroManager.rarity    = heroAsset.rarity;

        heroManager.player = this.GetComponentInParent <Player>();
        heroManager.tag    = this.GetComponentInParent <Player>().tag;

        newHero.GetComponentInChildren <Image>().sprite = heroAsset.image;
        newHero.name = heroManager.heroName;
        newHero.GetComponentInChildren <OverheadText>().FloatingText(newHero.name.ToString());

        for (int j = 0; j < heroAsset.abilityAsset2.Count; j++)
        {
            string spellScriptName = heroAsset.abilityAsset2[j].abilityEffect;
            if (spellScriptName != null)
            {
                heroManager.abilityAssets.Add(heroAsset.abilityAsset2[j]);
            }
        }
        heroManager.origHealth  = heroManager.maxHealth;
        heroManager.origAttack  = heroManager.attack;
        heroManager.origDefense = heroManager.defense;
        heroManager.origChance  = heroManager.chance;
        heroManager.origShield  = heroManager.shield;
        //END OF INITHEROES Routine

        //Init Hero UI
        heroManager.transform.Find("HeroUI").gameObject.transform.Find("Health").gameObject.SetActive(true);
        heroManager.transform.Find("HeroUI").gameObject.transform.Find("Attack").gameObject.SetActive(true);
        heroManager.transform.Find("HeroUI").gameObject.transform.Find("Defense").gameObject.SetActive(true);
        heroManager.UpdateUI();

        //CreateHero Panel
        heroManager.CreateHeroPanel();

        //Set Glow
        var image = heroManager.glow.GetComponent <Image>().color;

        image.a = 1f;
        heroManager.glow.GetComponent <Image>().color = image;


        //Trigger Automatic Effects or Passive/Active effects
        newHero.gameObject.transform.Find("HeroPanel(Clone)").gameObject.SetActive(true);

        Ability[] abilities = newHero.GetComponentsInChildren <Ability>();
        foreach (Ability ability in abilities)
        {
            //ability.remainingCooldown = 0;
            ability.remainingCooldown = ability.abilityCooldown;

            ability.GetComponentInChildren <Text>().text = ability.remainingCooldown.ToString();

            if (ability.skillType == Type.Passive)
            {
                ability.UseAbilityPassive();
            }

            //For active skills with Passive
            if (ability.skillType == Type.Active)
            {
                ability.UseAbilityActive();
            }
        }

        newHero.gameObject.transform.Find("HeroPanel(Clone)").gameObject.SetActive(false);

        //Fix UI
        newHero.gameObject.transform.SetParent(oldHero.GetComponentInParent <Player>().gameObject.transform);
        newHero.gameObject.transform.localScale = oldHero.gameObject.transform.localScale;
        newHero.gameObject.transform.Find("HeroPanel(Clone)").transform.localScale = oldHero.gameObject.transform.Find("HeroPanel(Clone)").transform.localScale;
        newHero.gameObject.transform.Find("HeroPanel(Clone)").transform.position   = oldHero.gameObject.transform.Find("HeroPanel(Clone)").transform.position;

        //need to revisit if there will be HP effects
        newHero.maxHealth = oldHero.maxHealth;
        newHero.UpdateUI();


        //Transfer All existing buffs and debuffs
        Buff[] buffs = oldHero.GetComponents <Buff>();
        foreach (Buff buff in buffs)
        {
            GameManager.Instance.AddBuff(buff.buff.buff.ToString(), buff.duration, oldHero, newHero);
            Destroy(buff);
        }

        Debuff[] debuffs = oldHero.GetComponents <Debuff>();
        foreach (Debuff debuff in debuffs)
        {
            GameManager.Instance.AddDebuff(debuff.debuff.debuff.ToString(), debuff.duration, oldHero, newHero);
            Destroy(debuff);
        }



        heroManager.SelectHero();

        int x = heroManager.GetComponentInParent <Player>().teamHeroes.Count;

        for (int y = 0; y < x; y++)
        {
            if (heroManager.GetComponentInParent <Player>().teamHeroes[y] == oldHero.gameObject)
            {
                heroManager.GetComponentInParent <Player>().teamHeroes[y] = newHero.gameObject;
            }
        }



        Destroy(oldHero.gameObject.transform.Find("HeroPanel(Clone)").gameObject);
        Destroy(oldHero.gameObject);


        //oldHero.enabled = false;
    }    //Create Hero
예제 #12
0
    }    //CheckDefender

    public void CheckTaunt(HeroManager attacker, HeroManager defender)
    {
        if (attacker.GetComponent <Taunt>() != null)
        {
            if (attacker.GetComponent <Taunt>().source.GetComponent <HeroManager>() == defender || defender.GetComponentInParent <Player>().tag == attacker.GetComponentInParent <Player>().tag)
            {
                canTargetHero = true;
                Debug.Log("attacker.GetComponent<Taunt>() != null");
            }
            else
            {
                canTargetHero = false;
            }
        }
        else
        {
            CheckThreat(attacker, defender);
        }
    }
예제 #13
0
    //Checks and resolves resolution of Reflect, Echo, and Revenge
    public void AttackStatusChecks(HeroManager attacker, HeroManager defender)
    {
        int attackersDefense = attacker.defense;
        int defendersDefense = defender.defense;

        attackersAttack = attacker.attack;
        defendersAttack = defender.attack;

        if (attackersDefense < 0)
        {
            attackersDefense = 0;
        }

        if (defendersDefense < 0)
        {
            defendersDefense = 0;
        }

        if (attackersAttack < 0)
        {
            attackersAttack = 0;
        }

        if (defendersAttack < 0)
        {
            defendersAttack = 0;
        }

        CriticalStrikeCheck(attacker, defender);

        if (defender.hasReflect)
        {
            if (!defender.GetComponentInParent <Player>().isActive)
            {
                atk_damage = attackersAttack - attackersDefense;
                //attacker.TakeDamage (atk_damage, defender);
                DealDamage(atk_damage, defender, attacker);
                Debug.Log("Damage Reflected");
                attacker.DisplayDamageText(atk_damage);
            }
        }
        else
        {
            if (defender.hasDefend)
            {
                HeroManager defenderHero         = defender.GetComponent <Defend>().source.GetComponent <HeroManager>();
                int         defenderHerosDefense = defenderHero.defense;

                atk_damage = attackersAttack - defenderHerosDefense;
                DealDamage(atk_damage, attacker, defenderHero);
                defenderHero.DisplayDamageText(atk_damage);
                Debug.Log("Defend!");
            }
            else
            {
                //Normal Damage	route
                atk_damage = attackersAttack - defendersDefense;

                DealDamage(atk_damage, attacker, defender);
                defender.DisplayDamageText(atk_damage);
            }
        }

        //Revenge
        if (defender.hasRevenge)
        {
            if (!defender.GetComponentInParent <Player>().isActive)
            {
                Attack(defender, attacker);
                Debug.Log("Revenge!");
            }


            // atk_damage = defendersAttack-attackersDefense;
            // //attacker.TakeDamage (atk_damage, defender);
            // DealDamage(atk_damage, defender, attacker);
            // Debug.Log("Revenge!");
            // attacker.DisplayDamageText(atk_damage);
        }
    }    //Attack Status Checks