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); }
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
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); }
} //DestroyAllBuffs public void DestroyAllDebuffs(HeroManager target) { Debuff[] debuffs = target.GetComponents <Debuff>(); foreach (Debuff debuff in debuffs) { Destroy(debuff); target.UpdateUI(); } //foreachBuff } //DestroyAllBuffs
} //ReviveHero public void DestroyAllBuffs(HeroManager target) { Buff[] buffs = target.GetComponents <Buff>(); foreach (Buff buff in buffs) { Destroy(buff); target.UpdateUI(); } //foreachBuff } //DestroyAllBuffs
//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); }
} //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
//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
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"); } }
} //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