public void Show() { if (CombatPlayer.isDead) { return; } if (PortalCooldown < 1) { return; } SoundsManager.PlayClip(PortalSound); TownPortalsUsed++; PauseManager.isPaused = true; PortalCooldown = 0; PortalCooldownTime += 10f;// + (Difficulty.DiffLevel * 5); combatQueue.LeaveDungeon(); GameObject.FindObjectOfType <LootArea>().ClearLoot(); itemNameTxt.text = ""; statGainTxt.text = ""; DoSale(); this.transform.SetAsLastSibling(); StatManager.Instance.HealPlayer(); // Slide In desiredPosition = new Vector2(0, 0); }
public void Hide() { PauseManager.isPaused = false; combatQueue.ReturnFromTown(); SoundsManager.PlayClip(WalkSound); // Slide Out desiredPosition = new Vector2(1280, 0); }
void DoAttack() { CombatEnemy enemy = combatQueue.FirstEnemy(); if (enemy == null) { return; } int hitSkill = (int)statManager.DerivedPrecision(); if (Random.Range(0, hitSkill) < Random.Range(0, enemy.Dodge())) { CombatBubbleSpawner.SpawnBubble( enemy.transform.position, "Missed!", CombatBubbleSpawner.BubbleTypes.Round, Color.gray ); SoundsManager.PlayClip(MissSounds[Random.Range(0, MissSounds.Length)]); return; } int maxDamage = (int)statManager.DerivedDamage(); int damage = Random.Range(maxDamage / 2, maxDamage); bool isCrit = Random.Range(0, 100) < statManager.GetValue(Stats.Critical); if (isCrit) { // TODO: Crit event damage *= 2; } CombatBubbleSpawner.SpawnBubble( enemy.transform.position, damage.ToString(), (isCrit ? CombatBubbleSpawner.BubbleTypes.Spiky : CombatBubbleSpawner.BubbleTypes.Round), (isCrit ? Color.red : Color.white) ); SoundsManager.PlayClip(AttackSounds[Random.Range(0, AttackSounds.Length)]); enemy.TakeDamage(damage); }
void Die() { isDead = true; GameOverText.SetActive(true); GameOverText.transform.SetAsLastSibling(); SoundsManager.PlayClip(DeathSounds[Random.Range(0, DeathSounds.Length)]); GetComponent <RectTransform>().rotation = Quaternion.Euler(0, 0, -90); GetComponent <RectTransform>().position = GetComponent <RectTransform>().position + new Vector3( GetComponent <RectTransform>().sizeDelta.x + 25, -25) * GetComponentInParent <Canvas>().scaleFactor; }
public void TakeDamage(int amount, DamageType dtype) { int mitigation = 0; switch (dtype) { case DamageType.Physical: mitigation = Random.Range(0, (int)statManager.GetValue(Stats.Armor)); break; case DamageType.Fire: mitigation = Random.Range(0, (int)statManager.DerivedResFire()); break; case DamageType.Electrical: mitigation = Random.Range(0, (int)statManager.DerivedResElec()); break; case DamageType.Cold: mitigation = Random.Range(0, (int)statManager.DerivedResCold()); break; default: break; } mitigation = Mathf.FloorToInt(Mathf.Min(amount * 0.75f, mitigation)); int actualDamage = amount - mitigation; statManager.ChangeValue(Stats.CurrentHP, -(actualDamage)); Color c = Color.white; switch (dtype) { case DamageType.Physical: c = Color.grey; break; case DamageType.Fire: c = Color.red; break; case DamageType.Electrical: c = Color.yellow; break; case DamageType.Cold: c = Color.blue; break; default: break; } if (actualDamage > 0) { SoundsManager.PlayClip(HurtSounds[Random.Range(0, HurtSounds.Length)]); } CombatBubbleSpawner.SpawnBubble( this.transform.position, "-" + actualDamage, CombatBubbleSpawner.BubbleTypes.Round, c ); }