Chyba trochę nie bardzo rozumiesz jak działa wartość zwracana funkcji.
Każda funkcja może przyjąć kilka argumentów, natomiast zwraca tylko jedną wartość (choć istnieje możliwość użycia czegoś w rodzaju std::pair lub std::tuple, by pod postacią jednego obiektu trzymać dwa lub więcej).
To, że zastosujesz instrukcję:
return y, z;
nie oznacza, że wartości argumentów odpowiadającym parametrom y i z ulegną zmianie.
Return działa na takiej zasadzie - pozwolę sobie zademonstrować przykład przy pomocy kodu.
int add(int a, int b)
{
return a + b;
}
int main()
{
int x, y;
std::cin >> x >> y;
int result = add(x, y);
std::cout << result;
}
W funkcji main wywołujemy zdefiniowaną wcześniej funkcję add. Wartość, która zostanie zwrócona przez funkcję (jak wspomniałem wcześniej, tylko jedna wartość) zostanie wstawiona w miejsce wywołania tej funkcji. Czyli jeżeli mamy taki kod:
int result = add(3, 5);
to wiedząc, że funkcja add zwróci 8, możemy wywołanie tej funkcji zastąpić (w głowie, niekoniecznie w kodzie) jej wynikiem:
int result = 8;
W Twoim przypadku wygodniejsza mogłaby być bezpośrednia zmiana wartości argumentów przekazywanych do funkcji (boss, dmg i tak dalej). Domyślnie, funkcja nie pracuje na oryginalnych zmiennych, lecz na ich kopiach - po zakończeniu wywołania tej funkcji kopie te "są niszczone" (znajdują się na stosie). Jeżeli chciałbyś pracować na oryginałach, powinieneś skorzystać ze wskaźników lub referencji - wybór zależy od Ciebie, chociaż użycie referencji będzie chyba nieco łatwiejsze. Wystarczy w nagłówku funkcji, po typie parametru dodać znak ampersand (&).
#include <iostream>
void func(int& value)
{
value += 10;
}
int main()
{
int number = 5;
for (unsigned i = 0; i < 3; ++i)
{
std::cout << number;
func(number);
}
}
W każdym razie, stosując referencje warto zauważyć, że jako argument takiej funkcji nie możesz przekazać rwartości, czyli na przykład zwykłej liczby.
//Tu wstaw: definicja funkcji func z poprzedniego przykładu
func(5); //Takie coś nie przejdzie
P.S.
Troszkę się rozpisałem, mam nadzieję, że dość późna pora nie odbiła się negatywnie na sensie i poprawności wypowiedzi. Pozdrawiam.