فهرست منبع

* Fixed #1096
* serializing icon index, otherwise creature portraits are gone after loading a game
* VCAI: fixed crash on attempting revisiting a boat (that is no longer present because it was boarded)
* Fixed strange crash with "neutral hero" (there should be no such thing... but somehow it appears, needs further investigation)

Michał W. Urbańczyk 13 سال پیش
والد
کامیت
2ba0427432
4فایلهای تغییر یافته به همراه14 افزوده شده و 3 حذف شده
  1. 4 0
      AI/VCAI/VCAI.cpp
  2. 6 0
      client/mapHandler.cpp
  3. 3 2
      lib/CCreatureHandler.h
  4. 1 1
      lib/NetPacksLib.cpp

+ 4 - 0
AI/VCAI/VCAI.cpp

@@ -3539,6 +3539,10 @@ bool shouldVisit(HeroPtr h, const CGObjectInstance * obj)
 		case Obj::MAGIC_WELL:
 			return h->mana < h->manaLimit();
 			break;
+
+		case Obj::BOAT:
+			return false;
+			//Boats are handled by pathfinder
 	}
 
 	if (obj->wasVisited(*h)) //it must pointer to hero instance, heroPtr calls function wasVisited(ui8 player);

+ 6 - 0
client/mapHandler.cpp

@@ -568,6 +568,12 @@ void CMapHandler::terrainRect( int3 top_tile, ui8 anim, const std::vector< std::
 
 					if(themp) //hero
 					{
+						if(themp->tempOwner >= GameConstants::PLAYER_LIMIT) //Neutral hero?
+						{
+							tlog1 << "A neutral hero (" << themp->name << ") at " << themp->pos << ". Should not happen!\n";
+							continue;
+						}
+
 						dir = themp->moveDir;
 
 						//pick graphics of hero (or boat if hero is sailing)

+ 3 - 2
lib/CCreatureHandler.h

@@ -105,9 +105,10 @@ public:
 			& cost & upgradeNames & upgrades 
 			& fightValue & AIValue & growth & hordeGrowth
 			& ammMin & ammMax & level
-			& abilityText & abilityRefs & animDefName & advMapDef
-			& idNumber & faction
+			& abilityText & abilityRefs & animDefName & advMapDef;
+		h & iconIndex;
 
+		h & idNumber & faction
 			& timeBetweenFidgets & walkAnimationTime & attackAnimationTime & flightAnimationDistance
 			& upperRightMissleOffsetX & rightMissleOffsetX & lowerRightMissleOffsetX & upperRightMissleOffsetY & rightMissleOffsetY & lowerRightMissleOffsetY
 			& missleFrameAngles & troopCountLocationOffset & attackClimaxFrame;

+ 1 - 1
lib/NetPacksLib.cpp

@@ -815,7 +815,7 @@ DLL_LINKAGE void AssembledArtifact::applyGs( CGameState *gs )
 		CArtifactInstance *constituentInstance = artSet->getArt(pos);
 
 		//move constituent from hero to be part of new, combined artifact
-		constituentInstance->removeFrom(al);
+		constituentInstance->removeFrom(ArtifactLocation(al.artHolder, pos));
 		combinedArt->addAsConstituent(constituentInstance, pos);
 		if(!vstd::contains(combinedArt->artType->possibleSlots[artSet->bearerType()], al.slot) && vstd::contains(combinedArt->artType->possibleSlots[artSet->bearerType()], pos))
 			al.slot = pos;