private void CombatHelper(CreatureCardVisual damageDealer, CreatureCardVisual damageTaker) { int tempAttackvalue = 0; if (damageDealer.attack < 0) { tempAttackvalue = 0; } else { tempAttackvalue = -damageDealer.attack; } //Debug.Log("the attacker's attack value at the time of damage dealt is: " + damageDealer.attack.ToString()); SpecialAbility.StatAdjustment adj = new SpecialAbility.StatAdjustment(Constants.CardStats.Health, tempAttackvalue, false, false, damageDealer); bool hasVFX = String.IsNullOrEmpty(damageDealer.attackEffect); if (damageDealer == attacker) { if (damageDealer.keywords.Contains(Keywords.Cleave)) { CardVisual rightOfTarget = damageTaker.owner.battleFieldManager.GetCardToTheRight(damageTaker); CardVisual leftOfTarget = damageTaker.owner.battleFieldManager.GetCardToTheLeft(damageTaker); if (rightOfTarget != null) { rightOfTarget.RPCApplyUntrackedStatAdjustment(PhotonTargets.All, adj, damageDealer, false); } if (leftOfTarget != null) { leftOfTarget.RPCApplyUntrackedStatAdjustment(PhotonTargets.All, adj, damageDealer, false); } } } damageTaker.RPCApplyUntrackedStatAdjustment(PhotonTargets.All, adj, damageDealer, !hasVFX); if (!hasVFX) { LaunchVFX(damageDealer, damageTaker); } }