Prechádzať zdrojové kódy

Further loss improvements.

Michał W. Urbańczyk 15 rokov pred
rodič
commit
172b3b0158
3 zmenil súbory, kde vykonal 16 pridanie a 3 odobranie
  1. 1 1
      hch/CGeneralTextHandler.cpp
  2. 1 1
      lib/CGameState.cpp
  3. 14 1
      server/CGameHandler.cpp

+ 1 - 1
hch/CGeneralTextHandler.cpp

@@ -367,7 +367,7 @@ void CGeneralTextHandler::load()
 	{
 		loadToIt(tmp, strc, itr, 3);
 		colors.push_back(tmp);
-		toupper(tmp[0]);
+		tmp[0] = toupper(tmp[0]);
 		capColors.push_back(tmp);
 	}
 

+ 1 - 1
lib/CGameState.cpp

@@ -3193,7 +3193,7 @@ void CGameState::obtainPlayersStats(SThievesGuildInfo & tgi, int level)
 int CGameState::lossCheck( ui8 player ) const
 {
 	const PlayerState *p = getPlayer(player);
-	if(map->lossCondition.typeOfLossCon == lossStandard)
+	//if(map->lossCondition.typeOfLossCon == lossStandard)
 		if(checkForStandardLoss(player))
 			return -1;
 

+ 14 - 1
server/CGameHandler.cpp

@@ -2877,7 +2877,8 @@ bool CGameHandler::makeBattleAction( BattleAction &ba )
 			break;
 		}
 	}
-	battleMadeAction.setn(true);
+	if(ba.stackNumber == gs->curB->activeStack)
+		battleMadeAction.setn(true);
 	return ok;
 }
 
@@ -3510,6 +3511,10 @@ void CGameHandler::winLoseHandle(ui8 players )
 
 void CGameHandler::checkLossVictory( ui8 player )
 {
+	const PlayerState *p = gs->getPlayer(player);
+	if(p->status) //player already won / lost
+		return;
+
 	int loss = gs->lossCheck(player);
 	int vic = gs->victoryCheck(player);
 
@@ -3542,6 +3547,14 @@ void CGameHandler::checkLossVictory( ui8 player )
 			}
 		}
 	}
+	else //player lost -> all his objects become unflagged (neutral)
+	{
+		for (std::vector<CGObjectInstance*>::const_iterator i = gs->map->objects.begin(); i != gs->map->objects.end(); i++)
+		{
+			if(*i  &&  (*i)->tempOwner == player)
+				setOwner((**i).id,NEUTRAL_PLAYER);
+		}
+	}
 
 	if(vic)
 		end2 = true;