소스 검색

Resolved #710.
Minor fixes.

DjWarmonger 14 년 전
부모
커밋
869214f44b
2개의 변경된 파일17개의 추가작업 그리고 17개의 파일을 삭제
  1. 3 1
      lib/CCreatureHandler.cpp
  2. 14 16
      lib/NetPacksLib.cpp

+ 3 - 1
lib/CCreatureHandler.cpp

@@ -839,7 +839,9 @@ void CCreatureHandler::loadStackExp(Bonus & b, BonusList & bl, std::string & src
 	case 'e':
 	case 'e':
 		b.type = Bonus::DOUBLE_DAMAGE_CHANCE; break;
 		b.type = Bonus::DOUBLE_DAMAGE_CHANCE; break;
 	case 'g':
 	case 'g':
-		b.type = Bonus::SPELL_DAMAGE_REDUCTION; break;
+		b.type = Bonus::SPELL_DAMAGE_REDUCTION;
+		b.subtype = -1; //all magic schools
+		break;
 	case 'R':
 	case 'R':
 		b.type = Bonus::ADDITIONAL_RETALIATION; break;
 		b.type = Bonus::ADDITIONAL_RETALIATION; break;
 
 

+ 14 - 16
lib/NetPacksLib.cpp

@@ -798,26 +798,24 @@ DLL_EXPORT void SetObjectProperty::applyGs( CGameState *gs )
 		return;
 		return;
 	}
 	}
 
 
-	if(what == ObjProperty::OWNER)
+	CArmedInstance *cai = dynamic_cast<CArmedInstance *>(obj);
+	if(what == ObjProperty::OWNER && cai)
 	{
 	{
-		if(CArmedInstance *cai = dynamic_cast<CArmedInstance *>(obj))
+		if(obj->ID == TOWNI_TYPE)
 		{
 		{
-			if(obj->ID == TOWNI_TYPE)
-			{
-				CGTownInstance *t = static_cast<CGTownInstance*>(obj);
-				if(t->tempOwner < PLAYER_LIMIT)
-					gs->getPlayer(t->tempOwner)->towns -= t;
-				if(val < PLAYER_LIMIT)
-					gs->getPlayer(val)->towns.push_back(t);
-			}
-
-			CBonusSystemNode *nodeToMove = cai->whatShouldBeAttached();
-			nodeToMove->detachFrom(cai->whereShouldBeAttached(gs));
-			obj->setProperty(what,val);
-			nodeToMove->attachTo(cai->whereShouldBeAttached(gs));
+			CGTownInstance *t = static_cast<CGTownInstance*>(obj);
+			if(t->tempOwner < PLAYER_LIMIT)
+				gs->getPlayer(t->tempOwner)->towns -= t;
+			if(val < PLAYER_LIMIT)
+				gs->getPlayer(val)->towns.push_back(t);
 		}
 		}
+
+		CBonusSystemNode *nodeToMove = cai->whatShouldBeAttached();
+		nodeToMove->detachFrom(cai->whereShouldBeAttached(gs));
+		obj->setProperty(what,val);
+		nodeToMove->attachTo(cai->whereShouldBeAttached(gs));
 	}
 	}
-	else
+	else //not an armed instance
 	{
 	{
 		obj->setProperty(what,val);
 		obj->setProperty(what,val);
 	}
 	}