public void TakeDamage(int value) { entity.CurrentHealth -= value; if (value > 0) { if (!(mageType == MageType.Prince)) { ds.PlaySoundScript("event:/Characters/Combat/Mage/char_mage_damage", 0, 0); } else { ds.PlaySoundScript("event:/Characters/Combat/Prince/char_prince_damage", 0, 0); } animator.SetBool("Pain", true); } if (entity.CurrentHealth > entity.Stats.MaxHealth) { entity.CurrentHealth = entity.Stats.MaxHealth; } slidingBarScript.SetCurValue(entity.CurrentHealth); if (entity.CurrentHealth <= 0) { Battle.KillEnemy(gameObject); } }
public void Init(int level, MageType mageType, GameObject[] enemies, SlidingBar slidingBar, Canvas canvas) { entity.InitStats(TypeIdentifier, level); Debug.Log(entity.Stats.Attack); Debug.Log(entity.Stats.MaxHealth); playerScript = Battle.playerScript; player = Battle.playerObject; this.mageType = mageType; switch (mageType) { case MageType.Normal: GetComponentInChildren <Renderer>().material.mainTexture = texture3; break; case MageType.Stun: GetComponentInChildren <Renderer>().material.mainTexture = texture2; break; case MageType.Heal: GetComponentInChildren <Renderer>().material.mainTexture = texture1; break; case MageType.Prince: break; default: throw new ArgumentOutOfRangeException(); } this.enemies = enemies; enemyScripts = new EnemyBattleScript[enemies.Length]; for (int i = 0; i < enemies.Length; i++) { enemyScripts[i] = enemies[i].GetComponent <EnemyBattleScript>(); } alive = new bool[enemies.Length]; for (int i = 0; i < alive.Length; i++) { alive[i] = true; } slidingBarScript = slidingBar; slidingBar.SetMaxValue(entity.Stats.MaxHealth); slidingBar.SetCurValue(entity.CurrentHealth); this.canvas = canvas; this.canvas.enabled = true; }
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; } } }
void Awake() { SavedGame.gameObject.SetActive(false); if (!Battle.won) { SaveLoadController.Load(); } else if (Battle.worldObjName != "" && Battle.won) { SaveLoadController.EnemiesDefeatedList.Add(Battle.worldObjName); if (Battle.worldObjName == "Prince") { SceneManager.LoadScene("end_game"); } } SaveLoadController.SaveData data = SaveLoadController.data; if (SaveLoadController.data != null) { GameObject.FindGameObjectWithTag("Player").transform.position = new Vector3(data.PositionX, data.PositionY, data.PositionZ); Battle.playerEntity.InitStats("Dragon", data.CurrLevel); Battle.playerEntity.CurrentExperience = data.CurrExp; Battle.playerEntity.CurrentHealth = data.CurrHealth; StoryController.SetNumberScrollsFound(data.ScrollsCaughtCount); foreach (FountainController fountain in FindObjectsOfType <FountainController>()) { int i = Array.IndexOf(data.FountainsUsed, fountain.name); if (i > -1) { fountain.active = false; } } foreach (EnemyWorldScript enemy in FindObjectsOfType <EnemyWorldScript>()) { int i = Array.IndexOf(data.EnemiesDefeated, enemy.name); if (i > -1 || (enemy.name == Battle.worldObjName && Battle.won)) { Destroy(enemy.gameObject); } } foreach (ScrollController scrollSub in FindObjectsOfType <ScrollController>()) { GameObject scroll = scrollSub.transform.parent.gameObject; int i = Array.IndexOf(data.ScrollsCaught, scroll.name); if (i > -1) { Destroy(scroll.gameObject); } } } else { SaveLoadController.ResetValues(); SaveLoadController.Save(); } HealthBar.SetMaxValue(Battle.playerEntity.Stats.MaxHealth); HealthBar.SetCurValue(Battle.playerEntity.CurrentHealth); ExperienceBar.SetMaxValue(Battle.playerEntity.Stats.Experience); ExperienceBar.SetCurValue(Battle.playerEntity.CurrentExperience); LevelLabel.text = "Level " + Battle.playerEntity.Stats.Level; }