public bool Heal() { Debug.Log("Start heal."); if (!healing) { Debug.Log("Not Healing."); int min = 0; for (int i = 0; i < enemies.Length; i++) { if (!alive[i]) { continue; } Debug.Log("Chose" + i); min = (int)enemyScripts[i].entity.CurrentHealth; target = enemies[i]; targetScript = enemyScripts[i]; break; } for (int i = 1; i < enemies.Length; i++) { if (!alive[i]) { continue; } int health = (int)enemyScripts[i].entity.CurrentHealth; if (health < min) { Debug.Log("Chose " + i); min = health; target = enemies[i]; targetScript = enemyScripts[i]; } } healing = true; } animator.SetBool("Fire", true); AnimatorStateInfo clip = animator.GetCurrentAnimatorStateInfo(0); if (clip.IsName("Fire") && clip.normalizedTime > 0.95f) { Vector3 healPos = new Vector3(target.transform.position.x, target.transform.position.y + 1f, target.transform.position.z); Instantiate(healParticleObject, healPos, transform.rotation); ds.PlaySoundScript("event:/Characters/Combat/Dragon/char_dragon_heal", 0, 0); targetScript.TakeDamage(-(int)(entity.Stats.Attack * healMult)); animator.SetBool("Fire", false); healing = false; healCooldown = 2; return(true); } return(false); }
public void SetEnemiesGameObjects(GameObject[] e) { enemiesGameObjects = e; enemiesIndicators = new GameObject[e.Length]; for (int i = 0; i < e.Length; i++) { EnemyBattleScript eScript = e[i].GetComponent <EnemyBattleScript>(); Canvas eCanvas = eScript.GetCanvas(); enemiesIndicators[i] = eCanvas.GetComponent <EnemyBattleIndicator>().GetIndicator(); enemiesIndicators[i].SetActive(false); } }
public void SetSkillAndTarget(int skill, int target) { Debug.Log(skill + " " + target); switch (skill) { case 0: if (currentFireAttackCooldown == 0) { action = Actions.FireAttack; } break; case 1: if (currentHealCooldown == 0) { action = Actions.Heal; } break; case 2: if (currentBlockAttackCooldown == 0) { action = Actions.Block; } break; case 3: if (currentTailAttackCooldown == 0) { action = Actions.TailAttack; } break; case 4: if (currentSlashAttackCooldown == 0) { action = Actions.Attack; } break; } if (skill != 1 && skill != 2) { targetedEnemy = enemies[target]; targetedEnemyBattleScript = targetedEnemy.GetComponent <EnemyBattleScript>(); targetedEnemyTransform = targetedEnemy.GetComponent <Transform>(); } }
// Use this for initialization void Start() { won = false; xpNotCounted = true; enemiesGameObjects.Clear(); enemiesScripts.Clear(); playerTurn = true; enemiesAmount = Enemies.Length; GameObject player = Instantiate(PlayerPrefab, PlayerTransform); playerObject = player; playerScript = player.GetComponent <PlayerBattleScript>(); switch (enemiesAmount) { case 1: case 3: enemyTransforms = EnemiesTransforms3; break; case 2: enemyTransforms = EnemiesTransforms2; break; default: throw new Exception("EnemiesAmount invalid"); } for (int i = 0; i < enemiesAmount; i++) { GameObject enemy; if (Enemies[i].MageType == MageType.Prince) { enemy = Instantiate(PrincePrefab, enemyTransforms[i]); } else { enemy = Instantiate(MagePrefab, enemyTransforms[i]); } EnemyBattleScript enemyScript = enemy.GetComponent <EnemyBattleScript>(); enemiesGameObjects.Add(enemy); enemiesScripts.Add(enemyScript); } for (int i = 0; i < enemiesAmount; i++) { GameObject enemy = enemiesGameObjects[i]; EnemyBattleScript enemyScript = enemy.GetComponent <EnemyBattleScript>(); Canvas canvas = enemyTransforms[i].gameObject.GetComponentInChildren <Canvas>(); SlidingBar slidingBar = enemyTransforms[i].gameObject.GetComponentInChildren <SlidingBar>(); enemyScript.Init(Enemies[i].Level, Enemies[i].MageType, enemiesGameObjects.ToArray(), slidingBar, canvas); } alive = new bool[enemiesAmount]; for (int i = 0; i < alive.Length; i++) { alive[i] = true; } playerScript.SetEnemiesGameObjects(enemiesGameObjects.ToArray()); battleUIScript = battleUIObject.GetComponent <BattleUIController> (); battleUIScript.SetBattleScript(playerScript); battleUIScript.SetEnemiesGameObjects(enemiesGameObjects.ToArray()); healthBar.SetMaxValue(playerEntity.Stats.MaxHealth); }
void Update() { healthBar.SetCurValue(playerEntity.CurrentHealth); bool allDead = true; foreach (bool var in alive) { if (var) { allDead = false; } } if (playerTurn) { if (playerScript.Turn()) { playerTurn = false; battleUIScript.UpdateUI(); } } else { bool done; if (alive[enemyIndex]) { GameObject enemy = enemiesGameObjects[enemyIndex]; EnemyBattleScript enemyScript = enemy.GetComponent <EnemyBattleScript>(); if (enemyScript.Ready()) { done = enemyScript.Turn(); battleUIScript.EnemiesTurn(); } else { done = false; } } else { done = true; } if (done) { enemyIndex++; if (enemyIndex >= enemiesGameObjects.Count) { battleUIScript.ResetTurn(); playerTurn = true; enemyIndex = 0; } } } if (playerDead) { float animTime = playerScript.Disable(); if (animTime > 0) { battleUIScript.BattleResults(false); playerDead = false; Invoke("MoveToForestScene", animTime); } } if (allDead) { if (xpNotCounted) { int sum = 0; foreach (GameObject enemy in enemiesGameObjects) { EnemyBattleScript enemyScript = enemy.GetComponent <EnemyBattleScript>(); sum += enemyScript.entity.Stats.Experience; } playerEntity.CurrentExperience += sum; while (playerEntity.CurrentExperience >= playerEntity.Stats.Experience) { int remainder = playerEntity.CurrentExperience - playerEntity.Stats.Experience; playerEntity.LevelUp(); playerEntity.CurrentExperience += remainder; } won = true; SaveLoadController.data.CurrHealth = playerEntity.CurrentHealth; SaveLoadController.data.CurrExp = playerEntity.CurrentExperience; SaveLoadController.data.CurrLevel = playerEntity.Stats.Level; battleUIScript.BattleResults(true); Invoke("MoveToForestScene", animTime); xpNotCounted = false; } } }