Beispiel #1
0
    public override void UseAbility(HeroManager attacker, HeroManager defender)
    {
        //Apply stun
        ApplyDebuff(attacker, defender);

        //Check if enemy is stunned
        if (defender.GetComponents <Debuff>() != null)
        {
            Debuff[] debuffs = defender.GetComponents <Debuff>();

            if (debuffs.Length > 0)
            {
                foreach (Debuff debuff in debuffs)
                {
                    if (debuff.debuff.name == "Stun")
                    {
                        //there can only be one Stun Debuff at a time
                        StunBonusDamage(attacker, defender);
                    } //if
                }     //foreach
            }
        }             //if

        GameManager.Instance.Attack(attacker, defender);

        base.UseAbility(attacker, defender);
    }
    void BuffSteal(HeroManager attacker, HeroManager defender)
    {
        Buff[] buffs = defender.GetComponents <Buff>();

        if (buffs.Length > 0)
        {
            //Debug.Log("Debuffs Count: " +buffs.Length);

            //Get Random Buff
            int  count        = buffs.Length;
            Buff transferBuff = buffs[Random.Range(0, count)];

            //Get details
            string transferBuffName = transferBuff.buff.buff.ToString();
            //Debug.Log("Buff to be transferred: " +transferBuffName);
            int buffDuration = transferBuff.duration;

            //Transfer Buff
            GameManager.Instance.AddBuff(transferBuffName, buffDuration, defender, attacker);

            transferBuff.OnDestroy();
        }
        else
        {
            Debug.Log("No Buffs to transfer");
        }
    }
    public override void UseAbility(HeroManager attacker, HeroManager defender)
    {
        //Remove a buff
        Buff[] buffs = defender.GetComponents <Buff>();

        if (buffs.Length > 0)
        {
            Debug.Log("Buffs: " + buffs[0]);
            Buff buff = buffs[Random.Range(0, buffs.Length)];
            //buff.OnDestroy();
            Destroy(buff);
        }

        //Reset defender abilities to MAX cooldown
        defender.heroPanel.SetActive(true);
        Ability[] abilities = defender.GetComponentsInChildren <Ability>();
        foreach (Ability ability in abilities)
        {
            //Debug.Log("Abiltiies: " +ability.name);
            ability.MaxCooldown();
        }

        defender.heroPanel.SetActive(false);

        //Critical Attack an Enemy
        GameManager.Instance.AttackCritical(attacker, defender);

        base.UseAbility(attacker);
    }
Beispiel #4
0
    public override void UseAbility(HeroManager attacker, HeroManager defender)
    {
        //attack
        GameManager.Instance.Attack(attacker, defender);

        //bouns Damage
        bonusDamage = attacker.defense;
        GameManager.Instance.DealDamage(bonusDamage, attacker, defender);

        //Remove Random Buff


        if (GameManager.Instance.IsChanceSuccess(attacker))
        {
            Buff[] buffs = defender.GetComponents <Buff>();

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

        base.UseAbility(attacker, defender);
    }    //Override UseAbility
Beispiel #5
0
    public override void UseAbility(HeroManager attacker, HeroManager defender)
    {
        //Destroy debuff of ally target
        Debuff[] debuffs = defender.GetComponents <Debuff>();
        if (debuffs.Length > 0)
        {
            foreach (Debuff debuff in debuffs)
            {
                Destroy(debuff);
            }
        }


        //Recover HP by 150 and grant immunity to all allies
        List <HeroManager> allies = GameManager.Instance.AllyHeroList(attacker);

        //inflict poison for 2 turns
        foreach (HeroManager ally in allies)
        {
            GameManager.Instance.Heal(ally, healValue);
            //Debug.Log("Target Poisoned: " +enemy);
            GameManager.Instance.AddBuff("Immunity", 1, attacker, ally);
        }

        //chance to Stun all
        base.UseAbility(attacker, defender);
    }
Beispiel #6
0
    }     //DestroyAllBuffs

    public void DestroyAllDebuffs(HeroManager target)
    {
        Debuff[] debuffs = target.GetComponents <Debuff>();
        foreach (Debuff debuff in debuffs)
        {
            Destroy(debuff);
            target.UpdateUI();
        } //foreachBuff
    }     //DestroyAllBuffs
Beispiel #7
0
    }    //ReviveHero

    public void DestroyAllBuffs(HeroManager target)
    {
        Buff[] buffs = target.GetComponents <Buff>();
        foreach (Buff buff in buffs)
        {
            Destroy(buff);
            target.UpdateUI();
        } //foreachBuff
    }     //DestroyAllBuffs
Beispiel #8
0
    //used for revive skills
    public void ReinitializeHero(HeroManager hero)
    {
        //Destroy all buffs
        Buff[] buffs = hero.GetComponents <Buff>();

        foreach (Buff buff in buffs)
        {
            Destroy(buff);
        }

        //Destroy all debuffs
        Debuff[] debuffs = hero.GetComponents <Debuff>();

        foreach (Debuff debuff in debuffs)
        {
            Destroy(debuff);
        }
        //reinitialize stats
        hero.maxHealth = hero.origHealth;
        hero.attack    = hero.origAttack;
        hero.defense   = hero.origDefense;
        hero.chance    = hero.origChance;
        hero.shield    = hero.origShield;

        //Trigger Passives
        hero.transform.Find("HeroPanel(Clone)").gameObject.SetActive(true);

        Ability[] abilities = hero.GetComponentsInChildren <Ability>();
        foreach (Ability ability in abilities)
        {
            if (ability.skillType == Type.Passive)
            {
                ability.UseAbilityPassive();
            }

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

        hero.transform.Find("HeroPanel(Clone)").gameObject.SetActive(false);
    }
Beispiel #9
0
    }    //killhero

    public IEnumerator DestroyBuffsDebuffs(HeroManager hero)
    {
        Buff[] buffs = hero.GetComponents <Buff>();

        foreach (Buff buff in buffs)
        {
            Destroy(buff);
        }

        //Destroy all debuffs
        Debuff[] debuffs = hero.GetComponents <Debuff>();

        foreach (Debuff debuff in debuffs)
        {
            Destroy(debuff);
        }

        yield return(null);
    }    //DestroyBuffsDebuffs
Beispiel #10
0
    //OnDestroy, check Critical buff first before setting hasCritical = false;
    void DestroyThreeBuffs(HeroManager target)
    {
        buffs = target.GetComponents <Buff>();

        if (buffs.Length <= 3)
        {
            foreach (Buff buff in buffs)
            {
                Destroy(buff);
            }
        }         //if buffs less than or equal to 3
        else
        {
            Shuffle(buffs);
            for (int i = 0; i < 3; i++)
            {
                //need to randomize
                //buffs[i].OnDestroy();
                Destroy(buffs[i]);
            }
        } //if buffs is greater than 3
    }     //Destroy three buffs
Beispiel #11
0
    void DebuffTransfer(HeroManager attacker, HeroManager defender)
    {
        Debuff[] debuffs = attacker.GetComponents <Debuff>();

        if (debuffs.Length > 0)
        {
            Debug.Log("Debuffs Count: " + debuffs.Length);

            //Get Random Debuff

            int    count          = debuffs.Length;
            Debuff transferDebuff = debuffs[Random.Range(0, count)];

            //Get details
            string transferDebuffName = transferDebuff.debuff.debuff.ToString();
            Debug.Log("Debuff to be transferred: " + transferDebuffName);
            int debuffDuration = transferDebuff.duration;

            //Transfer Debuff
            if (defender.hasImmunity || defender.hasPermanentImmunity)
            {
                Debug.Log("Target Hero has immunity");
            }
            else
            {
                GameManager.Instance.AddDebuff(transferDebuffName, debuffDuration, attacker, defender);
                // //Destroy Debuff
            }

            transferDebuff.OnDestroy();
        }
        else
        {
            Debug.Log("No Debuffs to transfer");
        }
    }
Beispiel #12
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