getline() will return including the integer value... so I think when we say in>>attack then it will try to read the next value which will be in the next line.. but we need int value which is already read from the file and is in the line...
so instead of taking from file better to take from line variable...

if( weaponDamage == line.substr(0, weaponDamage.length()))
//in >> attack;
/* to get the position of space.. or we can do pos = strlen(weaponDamage); */
int pos = line.find(" ");
/* as pos will point to starting position of " " increamenting that to get the next position so that we will get the number.. */
attack = atoi(line.substr(pos)); // converting string to integer

I think we can we try like this..