public void AttackSlot(int index, Slots attackedSlots, int damage, Health targetHealth) { if (damage == 0) { return; } var damageText = GameObject.Instantiate <DamageText>(damageTextPrefab); damageText.SetNumber(damage); var slot = attackedSlots.slots[index]; GameObject card = slot.occupied ? slot.objectInSlot : null; if (card == null) // No defender, hit face { //WARN copypasta from line 288! damageText.owner = targetHealth.owner; var tag = (damageText.owner == Owner.Player ? "Player" : "Enemy") + index; damageText.transform.position = GameObject.Find(tag).transform.position; targetHealth.DealDamage(damage); } else // Make defender take damage { CardInLane defender = card.GetComponent <CardInLane>(); if (defender.cardType == Card.CardType.Monster) { damageText.owner = defender.owner; damageText.transform.position = defender.transform.position; int defenderHp = defender.TakeDamage(damage); if (defenderHp <= 0) { Remove(defender); } } else { damageText.owner = targetHealth.owner; var tag = (damageText.owner == Owner.Player ? "Player" : "Enemy") + index; damageText.transform.position = GameObject.Find(tag).transform.position; // Attack bypasses spells, take face dmg targetHealth.DealDamage(damage); } } }