public override void StatusSpecialAttack1(string name, baseStats attacker, baseStats target) { attacker.StartCoroutine(SA()); IEnumerator SA() { if (attacker.SP > 4) { float heal = attacker.b.battleTarget.GetComponent <baseStats>().ogHP * .1f; attacker.SP -= 5; attacker.b.battleText.text = attacker.gameObject.name + " uses " + name; target.slash = SAPrefab4; target.AttackSlash1(); yield return(new WaitForSeconds(1f)); heal = Mathf.Round(heal); target.HP += heal; target.damageText.GetComponent <Text>().text = heal.ToString(); target.damageText.GetComponent <DamageTextEffect>().HealStartFloating(); yield return(new WaitForSeconds(1f)); attacker.b.TurnOrder(); } else { int ran = Random.Range(0, attacker.b.charStats.Count); attacker.b.battleTarget = attacker.b.charStats[ran]; attacker.StartCoroutine(attacker.b.enemyAttack(attacker.b.battleTarget)); } } }
public override void SpecialAttack2(string name, baseStats attacker, baseStats target) { attacker.StartCoroutine(SA()); IEnumerator SA() { if (attacker.SP > 3) { foreach (GameObject button in attacker.b.lists.buttons) { button.GetComponent <Button>().interactable = false; } attacker.b.battleText.text = attacker.nameChar + " uses " + name; attacker.gameObject.GetComponent <Animator>().SetBool("attack", true); attacker.slash = SAPrefab2; attacker.SP -= 4; yield return(new WaitForSeconds(1.2f)); attacker.gameObject.GetComponent <Animator>().SetBool("attack", false); yield return(new WaitForSeconds(1.5f)); if (target.status == "") { target.status = "Sleep"; Color c = Color.gray; target.transform.GetChild(0).GetComponent <SpriteRenderer>().color = Color.gray; //Debug.Log(target.gameObject.GetComponentInChildren<SpriteRenderer>().color); target.statusDuration = 2; } float attackUp = attacker.attack * 2f; float damage = attackUp - target.GetComponent <baseStats>().def; if (damage < 1) { damage = 1; } target.GetComponent <baseStats>().HP -= damage; target.GetComponent <baseStats>().damageText.GetComponent <Text>().text = damage.ToString(); target.GetComponent <baseStats>().damageText.GetComponent <DamageTextEffect>().DamageStartFloating(); if (target.GetComponent <baseStats>().HP < 1) { attacker.StartCoroutine(attacker.b.Die(target.GetComponent <baseStats>())); } else { attacker.b.TurnOrder(); } } else { int ran = Random.Range(0, attacker.b.charStats.Count); attacker.b.battleTarget = attacker.b.charStats[ran]; attacker.StartCoroutine(attacker.b.enemyAttack(attacker.b.battleTarget)); } } }
public override void SpecialAttack2(string name, baseStats attacker, baseStats target) { attacker.StartCoroutine(SA()); IEnumerator SA() { if (attacker.SP > 1) { foreach (GameObject button in attacker.b.lists.buttons) { button.GetComponent <Button>().interactable = false; } attacker.b.battleTarget = target.gameObject; attacker.slash = SAPrefab1; attacker.SP -= 2; float upAttack = attacker.attack + 2; float damage = upAttack - target.def; if (damage < 1) { damage = 1; } attacker.b.battleText.text = attacker.gameObject.name + " uses " + name; attacker.gameObject.GetComponent <Animator>().SetBool("attack", true); yield return(new WaitForSeconds(1.2f)); if (target.status == "") { target.status = "Confused"; target.statusDuration = 4; } attacker.gameObject.GetComponent <Animator>().SetBool("attack", false); yield return(new WaitForSeconds(1.5f)); target.HP -= damage; target.damageText.GetComponent <Text>().text = damage.ToString(); target.damageText.GetComponent <DamageTextEffect>().DamageStartFloating(); if (target.GetComponent <baseStats>().HP < 1) { attacker.StartCoroutine(attacker.b.Die(target.GetComponent <baseStats>())); } else { attacker.b.TurnOrder(); } } else { int ran = Random.Range(0, attacker.b.charStats.Count); attacker.b.battleTarget = attacker.b.charStats[ran]; attacker.StartCoroutine(attacker.b.enemyAttack(attacker.b.battleTarget)); } } }
public override void SpecialAttack1(string name, baseStats attacker, baseStats target) { attacker.StartCoroutine(SA()); IEnumerator SA() { if (attacker.SP > 2) { attacker.SP -= 3; foreach (GameObject button in attacker.b.lists.buttons) { button.GetComponent <Button>().interactable = false; } attacker.b.battleText.text = attacker.nameChar + " uses " + name; attacker.gameObject.GetComponent <Animator>().SetBool("attack", true); attacker.slash = SAPrefab1; attacker.gameObject.GetComponent <enemyDeath>().multi = true; yield return(new WaitForSeconds(1.2f)); attacker.gameObject.GetComponent <Animator>().SetBool("attack", false); yield return(new WaitForSeconds(1.5f)); float attackUp = attacker.attack * 2f; foreach (GameObject hero in attacker.b.charStats) { float damage = attackUp - hero.GetComponent <baseStats>().def; if (damage < 1) { damage = 1; } hero.GetComponent <baseStats>().HP -= damage; hero.GetComponent <baseStats>().damageText.GetComponent <Text>().text = damage.ToString(); hero.GetComponent <baseStats>().damageText.GetComponent <DamageTextEffect>().DamageStartFloating(); } if (target.GetComponent <baseStats>().HP < 1) { attacker.StartCoroutine(attacker.b.Die(target.GetComponent <baseStats>())); } else { attacker.b.TurnOrder(); } } else { int ran = Random.Range(0, attacker.b.charStats.Count); attacker.b.battleTarget = attacker.b.charStats[ran]; attacker.StartCoroutine(attacker.b.enemyAttack(attacker.b.battleTarget)); } } }
public override void enemyAI(baseStats attacker) { List <GameObject> weakList = new List <GameObject>(); foreach (baseStats charac in attacker.b.stats) { if (charac.gameObject.tag == "Player") { weakList.Add(charac.gameObject); } } int ran = Random.Range(0, weakList.Count); attacker.b.battleTarget = weakList[ran]; float lessHalf = attacker.ogHP / 2; if (attacker.HP < lessHalf) { weakList = weakList.OrderBy(c => c.gameObject.GetComponent <baseStats>().HP).ToList(); attacker.b.battleTarget = weakList[0]; SpecialAttack1(attacker.character.spec.physicalName1, attacker, attacker.b.battleTarget.GetComponent <baseStats>()); } else { attacker.StartCoroutine(attacker.b.enemyAttack(attacker.b.battleTarget)); } }
public override void enemyAI(baseStats attacker) { int ran = Random.Range(0, attacker.b.charStats.Count); attacker.b.battleTarget = attacker.b.charStats[ran]; int attack = 0; List <GameObject> weakList = new List <GameObject>(); foreach (baseStats charac in attacker.b.stats) { if (charac.gameObject.tag == "enemy") { weakList.Add(charac.gameObject); } } for (int i = 0; i < weakList.Count; i++) { float lessHalf = weakList[i].GetComponent <baseStats>().ogHP / 2; if (weakList[i].GetComponent <baseStats>().HP < lessHalf && attacker.SP > 0) { attacker.b.battleTarget = attacker.b.lists.enemies[i]; StatusSpecialAttack1(attacker.character.spec.statusName1, attacker, attacker.b.lists.enemies[i].GetComponent <baseStats>()); } else { attack += 1; } } if (attack == weakList.Count) { attacker.StartCoroutine(attacker.b.enemyAttack(attacker.b.battleTarget)); } }
public override void StatusSpecialAttack1(string name, baseStats attacker, baseStats target) { attacker.StartCoroutine(SSA1()); IEnumerator SSA1() { if (attacker.SP > 2) { foreach (GameObject button in attacker.b.lists.buttons) { button.GetComponent <Button>().interactable = false; } attacker.b.battleTarget = target.gameObject; target.slash = SAPrefab4; attacker.SP -= 3; float heal = target.ogHP * .1f; heal = Mathf.Round(heal); target.HP += heal; if (target.HP > target.ogHP) { target.HP = target.ogHP; } attacker.b.battleText.text = attacker.name + " uses " + name; target.AttackSlash1(); yield return(new WaitForSeconds(1f)); target.damageText.GetComponent <Text>().text = heal.ToString(); target.damageText.GetComponent <DamageTextEffect>().HealStartFloating(); yield return(new WaitForSeconds(1f)); target.b.TurnOrder(); } else { if (attacker.SP > 0) { attacker.SP -= 1; attacker.StartCoroutine(attacker.b.Revive(target)); } else { attacker.skip = true; } } } }
public override void SpecialAttack1(string name, baseStats attacker, baseStats target) { attacker.StartCoroutine(SA1()); IEnumerator SA1() { if (attacker.SP > 3) { foreach (GameObject button in attacker.b.lists.buttons) { button.GetComponent <Button>().interactable = false; } attacker.b.battleTarget = target.gameObject; attacker.slash = SAPrefab1; attacker.SP -= 3; float upAttack = attacker.attack * 2; float damage = upAttack - target.def; attacker.b.battleText.text = attacker.name + " uses " + name; attacker.gameObject.GetComponent <Animator>().SetBool("attack", true); yield return(new WaitForSeconds(1.2f)); attacker.gameObject.GetComponent <Animator>().SetBool("attack", false); yield return(new WaitForSeconds(1f)); target.HP -= damage; if (damage < 1) { damage = 1; } target.damageText.GetComponent <Text>().text = damage.ToString(); target.damageText.GetComponent <DamageTextEffect>().DamageStartFloating(); if (target.GetComponent <baseStats>().HP < 1) { attacker.StartCoroutine(attacker.b.Die(target.GetComponent <baseStats>())); } else { attacker.b.TurnOrder(); } } else { attacker.skip = true; } } }
public override void enemyAI(baseStats attacker) { int ran = Random.Range(0, attacker.b.charStats.Count); attacker.b.battleTarget = attacker.b.charStats[ran]; if (attacker.SP > 1) { //int ran2 = Random.Range(1, 3); //if (ran2 == 1) //{ SpecialAttack1(attacker.character.spec.physicalName1, attacker, attacker.b.battleTarget.GetComponent <baseStats>()); //} else if (ran2 == 2) //{ //SpecialAttack2(attacker.character.spec.physicalName2, attacker, attacker.b.battleTarget.GetComponent<baseStats>()); //} } else { attacker.StartCoroutine(attacker.b.enemyAttack(attacker.b.battleTarget)); } }
public override void StatusSpecialAttack1(string name, baseStats attacker, baseStats target) { attacker.StartCoroutine(SA()); IEnumerator SA() { foreach (GameObject button in attacker.b.lists.buttons) { button.GetComponent <Button>().interactable = false; } if (target.buffedStat == "" && attacker.SP > 1) { attacker.b.battleText.text = attacker.name + " uses " + name; foreach (GameObject button in attacker.b.lists.buttons) { button.GetComponent <Button>().interactable = false; } attacker.b.battleTarget = target.gameObject; target.slash = SAPrefab4; target.AttackSlash1(); yield return(new WaitForSeconds(2f)); attacker.b.battleText.text = target.name + "'s attack goes up!"; attacker.SP -= 2; target.buff = 10; target.attack += target.buff; target.buffDuration = 3; target.buffedStat = "attack"; yield return(new WaitForSeconds(2f)); attacker.b.TurnOrder(); } else { attacker.skip = true; } } }
public static void Poison(baseStats target, battleSystem bat) { target.StartCoroutine(poison()); IEnumerator poison() { if (target.statusDuration > 0) { bat.battleText.text = target.nameChar + " is hurt by poison."; target.transform.GetChild(1).GetComponent <Animator>().SetBool("poisoned", true); yield return(new WaitForSeconds(.5f)); target.transform.GetChild(1).GetComponent <Animator>().SetBool("poisoned", false); float damage = Mathf.Round(target.ogHP * 0.03f); //yield return new WaitForSeconds(1f); target.HP -= damage; target.damageText.GetComponent <Text>().text = damage.ToString(); target.damageText.GetComponent <DamageTextEffect>().DamageStartFloating(); target.statusDuration -= 1; yield return(new WaitForSeconds(1f)); if (target.gameObject.tag == "enemy") { target.turn = true; int ran = Random.Range(0, bat.lists.chars.Count); bat.battleTarget = bat.lists.chars[ran]; bat.attacker = target; foreach (InventorySlot slot in bat.slots) { slot.attacker = bat.attacker; } bat.StartCoroutine(bat.enemyAttack(bat.battleTarget)); } else if (target.gameObject.tag == "Player") { target.turn = true; bat.attacker = target; foreach (InventorySlot slot in bat.slots) { slot.attacker = bat.attacker; } bat.playerTurn(); } } else { target.transform.GetChild(0).GetComponent <SpriteRenderer>().color = Color.white; bat.battleText.text = target.nameChar + " is cured of poison."; target.status = null; yield return(new WaitForSeconds(1f)); if (target.gameObject.tag == "enemy") { target.turn = true; int ran = Random.Range(0, bat.lists.chars.Count); bat.battleTarget = bat.lists.chars[ran]; bat.attacker = target; foreach (InventorySlot slot in bat.slots) { slot.attacker = bat.attacker; } bat.StartCoroutine(bat.enemyAttack(bat.battleTarget)); } else if (target.gameObject.tag == "Player") { target.turn = true; bat.attacker = target; foreach (InventorySlot slot in bat.slots) { slot.attacker = bat.attacker; } bat.playerTurn(); } } } }
public override void StatusSpecialAttack2(string name, baseStats attacker, baseStats target) { target.HP = target.ogHP; attacker.StartCoroutine(attacker.b.Revive(target)); }
public override void enemyAI(baseStats attacker) { Debug.Log(attacker.HP); bool phase2 = false; bool phase3 = false; float lessQuarter = 2 * (attacker.ogHP / 3); float lessQuarters = attacker.ogHP / 3; Debug.Log(lessQuarter); Debug.Log(lessQuarters); if (attacker.HP > lessQuarter) { phase2 = false; phase3 = false; } else if (attacker.HP < lessQuarter && attacker.HP > lessQuarters) { phase2 = true; phase3 = false; } else if (attacker.HP < lessQuarter && attacker.HP < lessQuarters) { phase2 = false; phase3 = true; } List <GameObject> weakList = new List <GameObject>(); foreach (baseStats charac in attacker.b.stats) { if (charac.gameObject.tag == "Player") { weakList.Add(charac.gameObject); } } int ran = Random.Range(0, weakList.Count); attacker.b.battleTarget = weakList[ran]; if (phase2 == false && phase3 == false) { int rano = Random.Range(1, 3); if (rano == 1) { attacker.StartCoroutine(attacker.b.enemyAttack(attacker.b.battleTarget)); } else if (rano == 2) { SpecialAttack3(attacker.character.spec.physicalName1, attacker, attacker.b.battleTarget.GetComponent <baseStats>()); } } else if (phase2 == true && phase3 == false) { int rano = Random.Range(1, 6); if (rano == 1 || rano == 2) { attacker.StartCoroutine(attacker.b.enemyAttack(attacker.b.battleTarget)); } else if (rano == 3) { SpecialAttack1(attacker.character.spec.physicalName1, attacker, attacker.b.battleTarget.GetComponent <baseStats>()); } else if (rano == 4) { weakList = weakList.OrderBy(c => c.gameObject.GetComponent <baseStats>().HP).ToList(); attacker.b.battleTarget = weakList[0]; SpecialAttack2(attacker.character.spec.physicalName2, attacker, attacker.b.battleTarget.GetComponent <baseStats>()); } else if (rano == 5) { SpecialAttack3(attacker.character.spec.physicalName1, attacker, attacker.b.battleTarget.GetComponent <baseStats>()); } } else if (phase2 == false && phase3 == true) { int rano = Random.Range(1, 8); if (rano == 1 || rano == 2) { attacker.StartCoroutine(attacker.b.enemyAttack(attacker.b.battleTarget)); } else if (rano == 3 || rano == 4) { attacker.b.battleTarget = attacker.gameObject; StatusSpecialAttack1(attacker.character.spec.statusName1, attacker, attacker.b.battleTarget.GetComponent <baseStats>()); } else if (rano == 5) { SpecialAttack1(attacker.character.spec.physicalName1, attacker, attacker.b.battleTarget.GetComponent <baseStats>()); } else if (rano == 6) { weakList = weakList.OrderBy(c => c.gameObject.GetComponent <baseStats>().HP).ToList(); attacker.b.battleTarget = weakList[0]; SpecialAttack2(attacker.character.spec.physicalName1, attacker, attacker.b.battleTarget.GetComponent <baseStats>()); } else if (rano == 7) { SpecialAttack3(attacker.character.spec.physicalName1, attacker, attacker.b.battleTarget.GetComponent <baseStats>()); } } }