private IEnumerator EnemyTurn() { foreach (GameObject e in enemy) { if (e.activeSelf) { EnemyBattleController ebc = e.GetComponent <EnemyBattleController>(); ebc.DoSomething(); while (ebc.result == EnemyBattleController.Action.NotDecided) { yield return(null); } ebc.result = EnemyBattleController.Action.NotDecided; } } partyAC.ResetDefenseStats(); if (AnyEnemyLeft()) { firstAttack.transform.parent.gameObject.SetActive(true); if (partyAC.IsDead(0)) { playerIndex = 1; } partyStats.SelectMemberDialog(playerIndex); turn++; btnPos = Position.Center; } else { GameWin(); } }
void CreateUnits(int num) { battleCamera = CreateCamera(); for (int i = 0; i < status.monsterNumbers[num].Length; i++) { int number = status.monsterNumbers[num][i]; GameObject enemy = Instantiate(status.monstersData[number].modle) as GameObject; if (number == 3) { BossBattleController auto = enemy.AddComponent <BossBattleController> (); enemyList.Add(auto); auto.InitBattle(this.gameObject, battleCamera, status.monsterPositions[i], Quaternion.identity, "Enemy", number, status.playersData[number].status); auto.SetEffects(status.playersData[number].attackEffect); auto.enabled = false; } else { EnemyBattleController auto = enemy.AddComponent <EnemyBattleController> (); enemyList.Add(auto); auto.InitBattle(this.gameObject, battleCamera, status.monsterPositions[i], Quaternion.identity, "Enemy", number, status.monstersData[number].status); auto.enabled = false; } } for (int i = 0; i < 4; i++) { if (status.partyMember[i] >= 0) { GameObject player = Instantiate(status.playersData[status.partyMember[i]].modle[1]) as GameObject; PlayerBattleController mb = player.AddComponent <PlayerBattleController> (); playerList.Add(mb); if (i == 0) { mb.isUser = true; } else { mb.isUser = false; } mb.InitBattle(this.gameObject, battleCamera, status.playerPositions[i], Quaternion.Euler(0.0f, 180.0f, 0.0f), "Player", status.partyMember[i], status.playersData[status.partyMember[i]].status); mb.SetEffects(status.playersData[status.partyMember[i]].attackEffect); mb.enabled = false; } } }
/* * Coroutine that attacks an enemy with a selected skill */ private IEnumerator Skill(int i) { partyStats.SetSelectedDialog(i); Skill skill = thing[i] as Skill; EnemyBattleController ebc = target[i].GetComponent <EnemyBattleController>(); // If the enemy is already dead choose another if (ebc.enemy.hp == 0) { EnemyBattleController[] others = FindObjectsOfType <EnemyBattleController>(); foreach (EnemyBattleController e in others) { if (e.gameObject.activeSelf) { ebc = e; break; } } } // Hit the enemy if lives if (ebc.enemy.hp != 0) { GameController.dialogController.ShowBattleText(GameManager.party[i].fullname + " uses " + skill.skillName); while (DialogController.isTextShown) { yield return(null); } GameManager.party[i].sp -= skill.cost; partyStats.SetPartyStats(); ebc.HitAnim(); yield return(new WaitForSeconds(1.5f)); int damage = GameController.CalculateDamage(GameManager.party[i], ebc.enemy, skill); ebc.enemy.TakeDamage(damage); StartCoroutine(ebc.ShowNumber(damage, Color.red)); yield return(new WaitForSeconds(1)); if (ebc.enemy.hp == 0) { xpGained += ebc.enemy.xpDrop; goldGained += ebc.enemy.gold; DropItem(ebc.enemy); ebc.Kill(); } } partyStats.SetDefaultDialog(i); finish = true; }
/* * Coroutine that attacks an enemy */ private IEnumerator Attack(int i) { partyStats.SetSelectedDialog(i); EnemyBattleController ebc = target[i].GetComponent <EnemyBattleController>(); // If the enemy is already dead choose another if (ebc.enemy.hp == 0) { EnemyBattleController[] others = FindObjectsOfType <EnemyBattleController>(); foreach (EnemyBattleController e in others) { if (e.gameObject.activeSelf) { ebc = e; break; } } } // Hit the enemy if lives if (ebc.enemy.hp != 0) { ebc.HitAnim(); yield return(new WaitForSeconds(1.5f)); int damage = GameController.CalculateDamage(GameManager.party[i], ebc.enemy); ebc.enemy.TakeDamage(damage); StartCoroutine(ebc.ShowNumber(damage, Color.red)); yield return(new WaitForSeconds(1)); if (ebc.enemy.hp == 0) { xpGained += ebc.enemy.xpDrop; goldGained += ebc.enemy.gold; DropItem(ebc.enemy); ebc.Kill(); } } partyStats.SetDefaultDialog(i); finish = true; }
private void InitAttackEvent() { GameObject battleCamera = Instantiate(Resources.Load("Prefabs/Cameras/BattleCamera", typeof(GameObject)) as GameObject, Vector3.zero, Quaternion.identity) as GameObject; battleCamera.GetComponent <Camera>().enabled = false; battleCamera.AddComponent <ShinBattleCamera> (); for (int i = 0; i < 2; i++) { GameObject player = Instantiate(status.playersData[i].modle[1]) as GameObject; PlayerBattleController mb = player.AddComponent <PlayerBattleController> (); mb.InitBattle(this.gameObject, battleCamera, status.playerPositions[i], Quaternion.Euler(0.0f, 180.0f, 0.0f), "Player", i, status.playersData[status.partyMember[i]].status); mb.AddAttackEvent(); Destroy(player); } for (int i = 0; i < 4; i++) { GameObject enemy = Instantiate(status.monstersData[i].modle) as GameObject; if (i == 3) { BossBattleController auto = enemy.AddComponent <BossBattleController> (); auto.InitBattle(this.gameObject, battleCamera, status.monsterPositions[i], Quaternion.identity, "Enemy", 0, status.playersData[i].status); auto.AddAttackEvent(); } else { EnemyBattleController auto = enemy.AddComponent <EnemyBattleController> (); auto.InitBattle(this.gameObject, battleCamera, status.monsterPositions[i], Quaternion.identity, "Enemy", 0, status.monstersData[i].status); auto.AddAttackEvent(); } Destroy(enemy); } Destroy(battleCamera); }