Maybe I didn’t pay enough attention but when exactly do we implement the SetAttack method? I had to look it up in your code repository to see how it looks, and that one has 2 arguments - one for damage and one for knockback. You also implemented values for those things in the player attacks.
Here is the function.
public void SetAttack(int damage, float knockback)
{
this.damage = damage;
this.knockback = knockback;
}