mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-13 19:54:17 +02:00
Some conflicts resolved, minor changes.
This commit is contained in:
@@ -858,7 +858,57 @@ SDL_Surface * CMapHandler::getVisBitmap(int x, int y, const std::vector< std::ve
|
|||||||
d1 = (x>0 && y<size) ? visibilityMap[x-1][y+1][lvl] : 0,
|
d1 = (x>0 && y<size) ? visibilityMap[x-1][y+1][lvl] : 0,
|
||||||
d2 = (y<size) ? visibilityMap[x][y+1][lvl] : 0,
|
d2 = (y<size) ? visibilityMap[x][y+1][lvl] : 0,
|
||||||
d3 = (x<size && y<size) ? visibilityMap[x+1][y+1][lvl] : 0;
|
d3 = (x<size && y<size) ? visibilityMap[x+1][y+1][lvl] : 0;
|
||||||
|
/*
|
||||||
|
g0_0, g0_1, g0_2, g1_0, g1_1, g2_0, g2_1, g3_0,
|
||||||
|
05;
|
||||||
|
|
||||||
|
|
||||||
|
//decomposition and minimalization, do not touch
|
||||||
|
if ((d7 && d1 && d0) || (d7 && d6 && !d1) || (!d6 && d1 && !d0) || (!d7 && !d6 && !d1 && d0))
|
||||||
|
g0_0 = true;
|
||||||
|
else
|
||||||
|
g0_0 = false;
|
||||||
|
|
||||||
|
if ((!d6 && d1) || (!d6 && !d7))
|
||||||
|
g0_1 = true;
|
||||||
|
else
|
||||||
|
g0_1 = false;
|
||||||
|
|
||||||
|
if ((!d7 && d6 && d0) || (!d6 && !d1 && d0) || (!d7 && d1 && !d0))
|
||||||
|
g0_2 = true;
|
||||||
|
else
|
||||||
|
g0_2 = false;
|
||||||
|
|
||||||
|
if ((d5 && g0_0 && g0_2) || (d5 && d2 && !g0_0) || (!d5 && g0_0 && !g0_2) && (!d5 && !d2 && !g0_0 && g0_2))
|
||||||
|
g1_0 = true;
|
||||||
|
else
|
||||||
|
g1_0 = false;
|
||||||
|
|
||||||
|
if ((!d5 && !g0_0) || (d5 && !d2 && g0_0 && g0_2)
|
||||||
|
g1_1 = true;
|
||||||
|
else
|
||||||
|
g1_1 = false;
|
||||||
|
|
||||||
|
if ((!g0_1 && g1_0) || (g1_0 && !g1_1) || (d3 && !g0_1 && g1_1)
|
||||||
|
g2_0 = true;
|
||||||
|
else
|
||||||
|
g2_0 = false;
|
||||||
|
|
||||||
|
if ((d3 && g0_1 && g1_0) || (g0_1 && g1_0 && !g1_1) || (!d3 && !g0_1 && !g1_0) || (!g0_1 && !g1_0 && !g1_1)
|
||||||
|
g2_1 = true;
|
||||||
|
else
|
||||||
|
g2_1 = false;
|
||||||
|
|
||||||
|
if ((d5 && !g2_0 && g2_1) || (d5 && !d4 && !g2_0) || (!d5 & d4 && g2_0 && g2_1) || (!d5 && !d4 && g2_0 && !g2_1) || (!d5 && d4 && !g2_0 && !g2_1))
|
||||||
|
g3_0 = true;
|
||||||
|
else
|
||||||
|
g3_0 = false;
|
||||||
|
|
||||||
|
if ((!g2_1 && g3_0) || (!g1_1 && g2_1 && !g3_0))
|
||||||
|
o5 = true;
|
||||||
|
else
|
||||||
|
o5 = false;
|
||||||
|
*/
|
||||||
if(!d2 && !d6 && !d4 && !d8 && !d7 && !d3 && !d9 && !d1)
|
if(!d2 && !d6 && !d4 && !d8 && !d7 && !d3 && !d9 && !d1)
|
||||||
{
|
{
|
||||||
return fullHide->ourImages[hideBitmap[x][y][lvl]].bitmap; //fully hidden
|
return fullHide->ourImages[hideBitmap[x][y][lvl]].bitmap; //fully hidden
|
||||||
|
@@ -3145,7 +3145,7 @@ void CGSeerHut::initObj()
|
|||||||
seerName = VLC->generaltexth->seerNames[ran()%VLC->generaltexth->seerNames.size()];
|
seerName = VLC->generaltexth->seerNames[ran()%VLC->generaltexth->seerNames.size()];
|
||||||
textOption = ran()%3;
|
textOption = ran()%3;
|
||||||
progress = 0;
|
progress = 0;
|
||||||
if (missionType)
|
if (missionType && !isCustom)
|
||||||
{
|
{
|
||||||
firstVisitText = VLC->generaltexth->quests[missionType-1][0][textOption];
|
firstVisitText = VLC->generaltexth->quests[missionType-1][0][textOption];
|
||||||
nextVisitText = VLC->generaltexth->quests[missionType-1][1][textOption];
|
nextVisitText = VLC->generaltexth->quests[missionType-1][1][textOption];
|
||||||
@@ -3217,7 +3217,31 @@ const std::string & CGSeerHut::getHoverText() const
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MISSION_ARMY:
|
case MISSION_ARMY:
|
||||||
|
{
|
||||||
|
MetaString loot;
|
||||||
|
for (TSlots::const_iterator it = m6creatures.begin(); it != m6creatures.end(); ++it)
|
||||||
|
{
|
||||||
|
loot << "%s";
|
||||||
|
loot.addReplacement(it->second);
|
||||||
|
}
|
||||||
|
ms.addReplacement (loot.buildList());
|
||||||
|
}
|
||||||
|
break;
|
||||||
case MISSION_RESOURCES:
|
case MISSION_RESOURCES:
|
||||||
|
{
|
||||||
|
MetaString loot;
|
||||||
|
for (int i = 0; i < 7; ++i)
|
||||||
|
{
|
||||||
|
if (m7resources[i])
|
||||||
|
{
|
||||||
|
loot << "%d %s";
|
||||||
|
loot.addReplacement (m7resources[i]);
|
||||||
|
loot.addReplacement (MetaString::RES_NAMES, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ms.addReplacement (loot.buildList());
|
||||||
|
}
|
||||||
|
break;
|
||||||
case MISSION_PLAYER:
|
case MISSION_PLAYER:
|
||||||
ms.addReplacement (VLC->generaltexth->colors[m13489val]);
|
ms.addReplacement (VLC->generaltexth->colors[m13489val]);
|
||||||
break;
|
break;
|
||||||
@@ -3264,6 +3288,7 @@ void CGSeerHut::onHeroVisit( const CGHeroInstance * h ) const
|
|||||||
{
|
{
|
||||||
case MISSION_LEVEL:
|
case MISSION_LEVEL:
|
||||||
iw.components.push_back (Component (Component::EXPERIENCE, 1, m13489val, 0));
|
iw.components.push_back (Component (Component::EXPERIENCE, 1, m13489val, 0));
|
||||||
|
if (!isCustom)
|
||||||
iw.text.addReplacement(m13489val);
|
iw.text.addReplacement(m13489val);
|
||||||
break;
|
break;
|
||||||
case MISSION_PRIMARY_STAT:
|
case MISSION_PRIMARY_STAT:
|
||||||
@@ -3279,28 +3304,34 @@ void CGSeerHut::onHeroVisit( const CGHeroInstance * h ) const
|
|||||||
loot.addReplacement (VLC->generaltexth->primarySkillNames[i]);
|
loot.addReplacement (VLC->generaltexth->primarySkillNames[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!isCustom)
|
||||||
iw.text.addReplacement (loot.buildList());
|
iw.text.addReplacement (loot.buildList());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MISSION_KILL_HERO:
|
case MISSION_KILL_HERO:
|
||||||
iw.components.push_back (Component (Component::HERO,
|
iw.components.push_back (Component (Component::HERO,
|
||||||
cb->gameState()->map->heroesToBeat[m13489val]->type->ID, 0, 0));
|
cb->gameState()->map->heroesToBeat[m13489val]->type->ID, 0, 0));
|
||||||
|
if (!isCustom)
|
||||||
iw.text.addReplacement(cb->gameState()->map->heroesToBeat[m13489val]->name);
|
iw.text.addReplacement(cb->gameState()->map->heroesToBeat[m13489val]->name);
|
||||||
break;
|
break;
|
||||||
case MISSION_HERO:
|
case MISSION_HERO:
|
||||||
iw.components.push_back (Component (Component::HERO, m13489val, 0, 0));
|
iw.components.push_back (Component (Component::HERO, m13489val, 0, 0));
|
||||||
|
if (!isCustom)
|
||||||
iw.text.addReplacement(VLC->heroh->heroes[m13489val]->name);
|
iw.text.addReplacement(VLC->heroh->heroes[m13489val]->name);
|
||||||
break;
|
break;
|
||||||
case MISSION_KILL_CREATURE:
|
case MISSION_KILL_CREATURE:
|
||||||
{
|
{
|
||||||
CStackInstance stack = cb->gameState()->map->monsters[m13489val]->getStack(0);
|
CStackInstance stack = cb->gameState()->map->monsters[m13489val]->getStack(0);
|
||||||
iw.components.push_back (Component(stack));
|
iw.components.push_back (Component(stack));
|
||||||
|
if (!isCustom)
|
||||||
|
{
|
||||||
iw.text.addReplacement(stack);
|
iw.text.addReplacement(stack);
|
||||||
if (std::count(firstVisitText.begin(), firstVisitText.end(), '%') == 2) //say where is placed monster
|
if (std::count(firstVisitText.begin(), firstVisitText.end(), '%') == 2) //say where is placed monster
|
||||||
{
|
{
|
||||||
iw.text.addReplacement (VLC->generaltexth->arraytxt[147+checkDirection()]);
|
iw.text.addReplacement (VLC->generaltexth->arraytxt[147+checkDirection()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case MISSION_ART:
|
case MISSION_ART:
|
||||||
{
|
{
|
||||||
@@ -3311,6 +3342,7 @@ void CGSeerHut::onHeroVisit( const CGHeroInstance * h ) const
|
|||||||
loot << "%s";
|
loot << "%s";
|
||||||
loot.addReplacement (MetaString::ART_NAMES, *it);
|
loot.addReplacement (MetaString::ART_NAMES, *it);
|
||||||
}
|
}
|
||||||
|
if (!isCustom)
|
||||||
iw.text.addReplacement (loot.buildList());
|
iw.text.addReplacement (loot.buildList());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3323,6 +3355,7 @@ void CGSeerHut::onHeroVisit( const CGHeroInstance * h ) const
|
|||||||
loot << "%s";
|
loot << "%s";
|
||||||
loot.addReplacement(it->second);
|
loot.addReplacement(it->second);
|
||||||
}
|
}
|
||||||
|
if (!isCustom)
|
||||||
iw.text.addReplacement (loot.buildList());
|
iw.text.addReplacement (loot.buildList());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3335,15 +3368,17 @@ void CGSeerHut::onHeroVisit( const CGHeroInstance * h ) const
|
|||||||
{
|
{
|
||||||
iw.components.push_back (Component (Component::RESOURCE, i, m7resources[i], 0));
|
iw.components.push_back (Component (Component::RESOURCE, i, m7resources[i], 0));
|
||||||
loot << "%d %s";
|
loot << "%d %s";
|
||||||
loot.addReplacement (iw.components.back().val);
|
loot.addReplacement (m7resources[i]);
|
||||||
loot.addReplacement (MetaString::RES_NAMES, iw.components.back().subtype);
|
loot.addReplacement (MetaString::RES_NAMES, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!isCustom)
|
||||||
iw.text.addReplacement (loot.buildList());
|
iw.text.addReplacement (loot.buildList());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MISSION_PLAYER:
|
case MISSION_PLAYER:
|
||||||
iw.components.push_back (Component (Component::FLAG, m13489val, 0, 0));
|
iw.components.push_back (Component (Component::FLAG, m13489val, 0, 0));
|
||||||
|
if (!isCustom)
|
||||||
iw.text.addReplacement (VLC->generaltexth->colors[m13489val]);
|
iw.text.addReplacement (VLC->generaltexth->colors[m13489val]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -3364,6 +3399,7 @@ void CGSeerHut::onHeroVisit( const CGHeroInstance * h ) const
|
|||||||
switch (missionType)
|
switch (missionType)
|
||||||
{
|
{
|
||||||
case CQuest::MISSION_LEVEL:
|
case CQuest::MISSION_LEVEL:
|
||||||
|
if (!isCustom)
|
||||||
bd.text.addReplacement(m13489val);
|
bd.text.addReplacement(m13489val);
|
||||||
break;
|
break;
|
||||||
case CQuest::MISSION_PRIMARY_STAT:
|
case CQuest::MISSION_PRIMARY_STAT:
|
||||||
@@ -3379,6 +3415,7 @@ void CGSeerHut::onHeroVisit( const CGHeroInstance * h ) const
|
|||||||
loot.addReplacement (VLC->generaltexth->primarySkillNames[i]);
|
loot.addReplacement (VLC->generaltexth->primarySkillNames[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!isCustom)
|
||||||
bd.text.addReplacement (loot.buildList());
|
bd.text.addReplacement (loot.buildList());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3391,6 +3428,7 @@ void CGSeerHut::onHeroVisit( const CGHeroInstance * h ) const
|
|||||||
loot << "%s";
|
loot << "%s";
|
||||||
loot.addReplacement (MetaString::ART_NAMES, *it);
|
loot.addReplacement (MetaString::ART_NAMES, *it);
|
||||||
}
|
}
|
||||||
|
if (!isCustom)
|
||||||
bd.text.addReplacement (loot.buildList());
|
bd.text.addReplacement (loot.buildList());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3403,6 +3441,7 @@ void CGSeerHut::onHeroVisit( const CGHeroInstance * h ) const
|
|||||||
loot << "%s";
|
loot << "%s";
|
||||||
loot.addReplacement(it->second);
|
loot.addReplacement(it->second);
|
||||||
}
|
}
|
||||||
|
if (!isCustom)
|
||||||
bd.text.addReplacement (loot.buildList());
|
bd.text.addReplacement (loot.buildList());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3415,29 +3454,35 @@ void CGSeerHut::onHeroVisit( const CGHeroInstance * h ) const
|
|||||||
{
|
{
|
||||||
bd.components.push_back (Component (Component::RESOURCE, i, m7resources[i], 0));
|
bd.components.push_back (Component (Component::RESOURCE, i, m7resources[i], 0));
|
||||||
loot << "%d %s";
|
loot << "%d %s";
|
||||||
loot.addReplacement (iw.components.back().val);
|
loot.addReplacement (m7resources[i]);
|
||||||
loot.addReplacement (MetaString::RES_NAMES, iw.components.back().subtype);
|
loot.addReplacement (MetaString::RES_NAMES, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!isCustom)
|
||||||
bd.text.addReplacement (loot.buildList());
|
bd.text.addReplacement (loot.buildList());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MISSION_KILL_HERO:
|
case MISSION_KILL_HERO:
|
||||||
|
if (!isCustom)
|
||||||
bd.text.addReplacement(cb->gameState()->map->heroesToBeat[m13489val]->name);
|
bd.text.addReplacement(cb->gameState()->map->heroesToBeat[m13489val]->name);
|
||||||
break;
|
break;
|
||||||
case MISSION_HERO:
|
case MISSION_HERO:
|
||||||
|
if (!isCustom)
|
||||||
bd.text.addReplacement(VLC->heroh->heroes[m13489val]->name);
|
bd.text.addReplacement(VLC->heroh->heroes[m13489val]->name);
|
||||||
break;
|
break;
|
||||||
case MISSION_KILL_CREATURE:
|
case MISSION_KILL_CREATURE:
|
||||||
{
|
{
|
||||||
bd.text.addReplacement(cb->gameState()->map->monsters[m13489val]->getStack(0));
|
{
|
||||||
|
bd.text.addReplacement(cb->gameState()->map->monsters[m13489val]->getArmy()[0]);
|
||||||
if (std::count(firstVisitText.begin(), firstVisitText.end(), '%') == 2) //say where is placed monster
|
if (std::count(firstVisitText.begin(), firstVisitText.end(), '%') == 2) //say where is placed monster
|
||||||
{
|
{
|
||||||
bd.text.addReplacement (VLC->generaltexth->arraytxt[147+checkDirection()]);
|
bd.text.addReplacement (VLC->generaltexth->arraytxt[147+checkDirection()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
case MISSION_PLAYER:
|
case MISSION_PLAYER:
|
||||||
bd.components.push_back (Component (Component::FLAG, m13489val, 0, 0));
|
bd.components.push_back (Component (Component::FLAG, m13489val, 0, 0));
|
||||||
|
if (!isCustom)
|
||||||
bd.text.addReplacement (VLC->generaltexth->colors[m13489val]);
|
bd.text.addReplacement (VLC->generaltexth->colors[m13489val]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -3582,7 +3627,7 @@ void CGQuestGuard::initObj()
|
|||||||
blockVisit = true;
|
blockVisit = true;
|
||||||
progress = 0;
|
progress = 0;
|
||||||
textOption = ran()%3 + 3; //3-5
|
textOption = ran()%3 + 3; //3-5
|
||||||
if (missionType)
|
if (missionType && !isCustom)
|
||||||
{
|
{
|
||||||
firstVisitText = VLC->generaltexth->quests[missionType-1][0][textOption];
|
firstVisitText = VLC->generaltexth->quests[missionType-1][0][textOption];
|
||||||
nextVisitText = VLC->generaltexth->quests[missionType-1][1][textOption];
|
nextVisitText = VLC->generaltexth->quests[missionType-1][1][textOption];
|
||||||
|
@@ -89,6 +89,7 @@ public:
|
|||||||
std::vector<ui32> m7resources;
|
std::vector<ui32> m7resources;
|
||||||
|
|
||||||
std::string firstVisitText, nextVisitText, completedText;
|
std::string firstVisitText, nextVisitText, completedText;
|
||||||
|
bool isCustom;
|
||||||
|
|
||||||
bool checkQuest (const CGHeroInstance * h) const; //determines whether the quest is complete or not
|
bool checkQuest (const CGHeroInstance * h) const; //determines whether the quest is complete or not
|
||||||
virtual void completeQuest (const CGHeroInstance * h) const {};
|
virtual void completeQuest (const CGHeroInstance * h) const {};
|
||||||
@@ -96,7 +97,7 @@ public:
|
|||||||
template <typename Handler> void serialize(Handler &h, const int version)
|
template <typename Handler> void serialize(Handler &h, const int version)
|
||||||
{
|
{
|
||||||
h & missionType & progress & lastDay & m13489val & m2stats & m5arts & m6creatures & m7resources
|
h & missionType & progress & lastDay & m13489val & m2stats & m5arts & m6creatures & m7resources
|
||||||
& firstVisitText & nextVisitText & completedText;
|
& firstVisitText & nextVisitText & completedText & isCustom;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -2006,7 +2006,7 @@ bool Mapa::isInTheMap(const int3 &pos) const
|
|||||||
void Mapa::loadQuest(CQuest * guard, const unsigned char * bufor, int & i)
|
void Mapa::loadQuest(CQuest * guard, const unsigned char * bufor, int & i)
|
||||||
{
|
{
|
||||||
guard->missionType = bufor[i]; ++i;
|
guard->missionType = bufor[i]; ++i;
|
||||||
int len1, len2, len3;
|
//int len1, len2, len3;
|
||||||
switch(guard->missionType)
|
switch(guard->missionType)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@@ -2075,10 +2075,13 @@ void Mapa::loadQuest(CQuest * guard, const unsigned char * bufor, int & i)
|
|||||||
{
|
{
|
||||||
guard->lastDay = limit;
|
guard->lastDay = limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
guard->firstVisitText = readString(bufor,i);
|
guard->firstVisitText = readString(bufor,i);
|
||||||
guard->nextVisitText = readString(bufor,i);
|
guard->nextVisitText = readString(bufor,i);
|
||||||
guard->completedText = readString(bufor,i);
|
guard->completedText = readString(bufor,i);
|
||||||
|
if (guard->firstVisitText.size() && guard->nextVisitText.size() && guard->completedText.size())
|
||||||
|
guard->isCustom = false; //randomize all if any text is missing
|
||||||
|
else
|
||||||
|
guard->isCustom = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
TerrainTile & Mapa::getTile( int3 tile )
|
TerrainTile & Mapa::getTile( int3 tile )
|
||||||
|
1423
mapHandler.cpp
Normal file
1423
mapHandler.cpp
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user