Bläddra i källkod

* fixed 576
* new cheat code: vcmiforgeofnoldorking - hero gets all artifacts except spell book, spell scrolls and war machines

mateuszb 15 år sedan
förälder
incheckning
a95bb9d916
3 ändrade filer med 29 tillägg och 0 borttagningar
  1. 5 0
      client/CBattleInterface.cpp
  2. 9 0
      lib/CGameState.cpp
  3. 15 0
      server/CGameHandler.cpp

+ 5 - 0
client/CBattleInterface.cpp

@@ -2867,6 +2867,11 @@ void CBattleInterface::castThisSpell(int spellID)
 		spellSelMode = 5;
 	}
 
+	if(spell.range[ castingHero->getSpellSchoolLevel(&spell) ].size() > 1) //spell has many-hex range
+	{
+		spellSelMode = 0;
+	}
+
 	if(spellSelMode == -1) //user does not have to select location
 	{
 		spellToCast->destinationTile = -1;

+ 9 - 0
lib/CGameState.cpp

@@ -3059,6 +3059,15 @@ std::set<CStack*> BattleInfo::getAttackedCreatures( const CSpell * s, int skillL
 			}
 		}
 	}
+	else if (s->range[skillLevel].size() > 1) //custom many-hex range
+	{
+		for(std::set<ui16>::iterator it = attackedHexes.begin(); it != attackedHexes.end(); ++it)
+		{
+			CStack * st = getStackT(*it, onlyAlive);
+			if(st)
+				attackedCres.insert(st);
+		}
+	}
 	else if(VLC->spellh->spells[s->id].attributes.find("CREATURE_TARGET_1") != std::string::npos
 		|| VLC->spellh->spells[s->id].attributes.find("CREATURE_TARGET_2") != std::string::npos) //spell to be cast on a specific creature but massive on expert
 	{

+ 15 - 0
server/CGameHandler.cpp

@@ -3928,6 +3928,21 @@ void CGameHandler::playerMessage( ui8 player, const std::string &message )
 		gs->getPlayer(player)->enteredLosingCheatCode = 1;
 		checkLossVictory(player);
 	}
+	else if (message == "vcmiforgeofnoldorking") //hero gets all artifacts except war machines, spell scrolls and spell book
+	{
+		CGHeroInstance *hero = gs->getHero(gs->getPlayer(player)->currentSelection);
+		if(!hero) return;
+		SetHeroArtifacts sha;
+		sha.hid = hero->id;
+		sha.artifacts = hero->artifacts;
+		sha.artifWorn = hero->artifWorn;
+		sha.artifacts.push_back(2); //grail
+		for (int g=7; g<=140; ++g)
+		{
+			sha.artifacts.push_back(g);
+		}
+		sendAndApply(&sha);
+	}
 	else
 		cheated = false;
 	if(cheated)