1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-28 08:48:48 +02:00

Merge remote-tracking branch 'origin/beta' into object_distribution

This commit is contained in:
Tomasz Zieliński 2023-04-04 05:52:57 +02:00
commit 1e18887c9c
49 changed files with 692 additions and 632 deletions

View File

@ -596,9 +596,18 @@ void CBattleAI::attemptCastingSpell()
size_t ourUnits = 0; size_t ourUnits = 0;
for(auto unit : all) std::set<uint32_t> unitIds;
state.battleGetUnitsIf([&](const battle::Unit * u)->bool
{
if(!u->isGhost() && !u->isTurret())
unitIds.insert(u->unitId());
return false;
});
for(auto unitId : unitIds)
{ {
auto unitId = unit->unitId();
auto localUnit = state.battleGetUnitByID(unitId); auto localUnit = state.battleGetUnitByID(unitId);
newHealthOfStack[unitId] = localUnit->getAvailableHealth(); newHealthOfStack[unitId] = localUnit->getAvailableHealth();
@ -620,9 +629,8 @@ void CBattleAI::attemptCastingSpell()
{ {
int64_t totalGain = 0; int64_t totalGain = 0;
for(auto unit : all) for(auto unitId : unitIds)
{ {
auto unitId = unit->unitId();
auto localUnit = state.battleGetUnitByID(unitId); auto localUnit = state.battleGetUnitByID(unitId);
auto newValue = getValOr(newValueOfStack, unitId, 0); auto newValue = getValOr(newValueOfStack, unitId, 0);

View File

@ -70,7 +70,7 @@ void DangerHitMapAnalyzer::updateHitMap()
auto turn = path.turn(); auto turn = path.turn();
auto & node = hitMap[pos.x][pos.y][pos.z]; auto & node = hitMap[pos.x][pos.y][pos.z];
if(tileDanger > node.maximumDanger.danger if(tileDanger / (turn / 3 + 1) > node.maximumDanger.danger / (node.maximumDanger.turn / 3 + 1)
|| (tileDanger == node.maximumDanger.danger && node.maximumDanger.turn > turn)) || (tileDanger == node.maximumDanger.danger && node.maximumDanger.turn > turn))
{ {
node.maximumDanger.danger = tileDanger; node.maximumDanger.danger = tileDanger;

View File

@ -30,7 +30,7 @@ namespace NKAI
extern boost::thread_specific_ptr<CCallback> cb; extern boost::thread_specific_ptr<CCallback> cb;
extern boost::thread_specific_ptr<AIGateway> ai; extern boost::thread_specific_ptr<AIGateway> ai;
const double TREAT_IGNORE_RATIO = 0.5; const float TREAT_IGNORE_RATIO = 2;
using namespace Goals; using namespace Goals;
@ -133,7 +133,7 @@ void DefenceBehavior::evaluateDefence(Goals::TGoalVec & tasks, const CGTownInsta
tasks.push_back(Goals::sptr(composition)); tasks.push_back(Goals::sptr(composition));
} }
bool treatIsWeak = path.getHeroStrength() / treat.danger > TREAT_IGNORE_RATIO; bool treatIsWeak = path.getHeroStrength() / (float)treat.danger > TREAT_IGNORE_RATIO;
bool needToSaveGrowth = treat.turn == 0 && dayOfWeek == 7; bool needToSaveGrowth = treat.turn == 0 && dayOfWeek == 7;
if(treatIsWeak && !needToSaveGrowth) if(treatIsWeak && !needToSaveGrowth)
@ -244,7 +244,7 @@ void DefenceBehavior::evaluateDefence(Goals::TGoalVec & tasks, const CGTownInsta
continue; continue;
} }
if(path.targetHero == town->visitingHero && path.exchangeCount == 1) if(path.targetHero == town->visitingHero.get() && path.exchangeCount == 1)
{ {
#if NKAI_TRACE_LEVEL >= 1 #if NKAI_TRACE_LEVEL >= 1
logAi->trace("Put %s to garrison of town %s", logAi->trace("Put %s to garrison of town %s",
@ -265,6 +265,24 @@ void DefenceBehavior::evaluateDefence(Goals::TGoalVec & tasks, const CGTownInsta
continue; continue;
} }
// main without army and visiting scout with army, very specific case
if(town->visitingHero && town->getUpperArmy()->stacksCount() == 0
&& path.targetHero != town->visitingHero.get() && path.exchangeCount == 1 && path.turn() == 0
&& ai->nullkiller->heroManager->evaluateHero(path.targetHero) > ai->nullkiller->heroManager->evaluateHero(town->visitingHero.get())
&& 10 * path.targetHero->getTotalStrength() < town->visitingHero->getTotalStrength())
{
path.heroArmy = town->visitingHero.get();
tasks.push_back(
Goals::sptr(Composition()
.addNext(DefendTown(town, treat, path))
.addNext(ExchangeSwapTownHeroes(town, town->visitingHero.get()))
.addNext(ExecuteHeroChain(path, town))
.addNext(ExchangeSwapTownHeroes(town, path.targetHero, HeroLockedReason::DEFENCE))));
continue;
}
if(treat.turn == 0 || (path.turn() <= treat.turn && path.getHeroStrength() * SAFE_ATTACK_CONSTANT >= treat.danger)) if(treat.turn == 0 || (path.turn() <= treat.turn && path.getHeroStrength() * SAFE_ATTACK_CONSTANT >= treat.danger))
{ {

View File

@ -65,6 +65,7 @@ Goals::TGoalVec GatherArmyBehavior::deliverArmyToHero(const CGHeroInstance * her
{ {
Goals::TGoalVec tasks; Goals::TGoalVec tasks;
const int3 pos = hero->visitablePos(); const int3 pos = hero->visitablePos();
auto targetHeroScore = ai->nullkiller->heroManager->evaluateHero(hero);
#if NKAI_TRACE_LEVEL >= 1 #if NKAI_TRACE_LEVEL >= 1
logAi->trace("Checking ways to gaher army for hero %s, %s", hero->getObjectName(), pos.toString()); logAi->trace("Checking ways to gaher army for hero %s, %s", hero->getObjectName(), pos.toString());
@ -113,7 +114,7 @@ Goals::TGoalVec GatherArmyBehavior::deliverArmyToHero(const CGHeroInstance * her
float armyValue = (float)heroExchange.getReinforcementArmyStrength() / hero->getArmyStrength(); float armyValue = (float)heroExchange.getReinforcementArmyStrength() / hero->getArmyStrength();
// avoid transferring very small amount of army // avoid transferring very small amount of army
if(armyValue < 0.1f) if(armyValue < 0.1f && armyValue < 20000)
{ {
#if NKAI_TRACE_LEVEL >= 2 #if NKAI_TRACE_LEVEL >= 2
logAi->trace("Army value is too small."); logAi->trace("Army value is too small.");
@ -122,31 +123,33 @@ Goals::TGoalVec GatherArmyBehavior::deliverArmyToHero(const CGHeroInstance * her
} }
// avoid trying to move bigger army to the weaker one. // avoid trying to move bigger army to the weaker one.
if(armyValue > 1) bool hasOtherMainInPath = false;
for(auto node : path.nodes)
{ {
bool hasOtherMainInPath = false; if(!node.targetHero) continue;
for(auto node : path.nodes) auto heroRole = ai->nullkiller->heroManager->getHeroRole(node.targetHero);
if(heroRole == HeroRole::MAIN)
{ {
if(!node.targetHero) continue; auto score = ai->nullkiller->heroManager->evaluateHero(node.targetHero);
auto heroRole = ai->nullkiller->heroManager->getHeroRole(node.targetHero); if(score >= targetHeroScore)
if(heroRole == HeroRole::MAIN)
{ {
hasOtherMainInPath = true; hasOtherMainInPath = true;
break; break;
} }
} }
}
if(hasOtherMainInPath) if(hasOtherMainInPath)
{ {
#if NKAI_TRACE_LEVEL >= 2 #if NKAI_TRACE_LEVEL >= 2
logAi->trace("Army value is too large."); logAi->trace("Army value is too large.");
#endif #endif
continue; continue;
}
} }
auto danger = path.getTotalDanger(); auto danger = path.getTotalDanger();
@ -180,7 +183,17 @@ Goals::TGoalVec GatherArmyBehavior::deliverArmyToHero(const CGHeroInstance * her
#if NKAI_TRACE_LEVEL >= 2 #if NKAI_TRACE_LEVEL >= 2
logAi->trace("Action is blocked. Considering decomposition."); logAi->trace("Action is blocked. Considering decomposition.");
#endif #endif
composition.addNext(blockedAction->decompose(path.targetHero)); auto subGoal = blockedAction->decompose(path.targetHero);
if(subGoal->invalid())
{
#if NKAI_TRACE_LEVEL >= 1
logAi->trace("Path is invalid. Skipping");
#endif
continue;
}
composition.addNext(subGoal);
} }
tasks.push_back(sptr(composition)); tasks.push_back(sptr(composition));
@ -261,7 +274,7 @@ Goals::TGoalVec GatherArmyBehavior::upgradeArmy(const CGTownInstance * upgrader)
auto armyValue = (float)upgrade.upgradeValue / path.getHeroStrength(); auto armyValue = (float)upgrade.upgradeValue / path.getHeroStrength();
if(armyValue < 0.25f || upgrade.upgradeValue < 300) // avoid small upgrades if((armyValue < 0.1f && armyValue < 20000) || upgrade.upgradeValue < 300) // avoid small upgrades
{ {
#if NKAI_TRACE_LEVEL >= 2 #if NKAI_TRACE_LEVEL >= 2
logAi->trace("Ignore path. Army value is too small (%f)", armyValue); logAi->trace("Ignore path. Army value is too small (%f)", armyValue);

View File

@ -130,8 +130,6 @@ ui64 FuzzyHelper::evaluateDanger(const CGObjectInstance * obj)
return danger; return danger;
} }
case Obj::PANDORAS_BOX:
return 10000; //Who knows what awaits us there
case Obj::ARTIFACT: case Obj::ARTIFACT:
case Obj::RESOURCE: case Obj::RESOURCE:
@ -148,6 +146,7 @@ ui64 FuzzyHelper::evaluateDanger(const CGObjectInstance * obj)
case Obj::CREATURE_GENERATOR4: case Obj::CREATURE_GENERATOR4:
case Obj::MINE: case Obj::MINE:
case Obj::ABANDONED_MINE: case Obj::ABANDONED_MINE:
case Obj::PANDORAS_BOX:
{ {
const CArmedInstance * a = dynamic_cast<const CArmedInstance *>(obj); const CArmedInstance * a = dynamic_cast<const CArmedInstance *>(obj);
return a->getArmyStrength(); return a->getArmyStrength();

View File

@ -299,6 +299,7 @@ void Nullkiller::makeTurn()
void Nullkiller::executeTask(Goals::TTask task) void Nullkiller::executeTask(Goals::TTask task)
{ {
auto start = std::chrono::high_resolution_clock::now();
std::string taskDescr = task->toString(); std::string taskDescr = task->toString();
boost::this_thread::interruption_point(); boost::this_thread::interruption_point();
@ -307,10 +308,11 @@ void Nullkiller::executeTask(Goals::TTask task)
try try
{ {
task->accept(ai.get()); task->accept(ai.get());
logAi->trace("Task %s completed in %lld", taskDescr, timeElapsed(start));
} }
catch(goalFulfilledException &) catch(goalFulfilledException &)
{ {
logAi->trace("Task %s completed", task->toString()); logAi->trace("Task %s completed in %lld", taskDescr, timeElapsed(start));
} }
catch(cannotFulfillGoalException & e) catch(cannotFulfillGoalException & e)
{ {

View File

@ -591,7 +591,7 @@ public:
uint64_t upgradeValue = armyUpgrade.getUpgradeValue(); uint64_t upgradeValue = armyUpgrade.getUpgradeValue();
evaluationContext.armyReward += upgradeValue; evaluationContext.armyReward += upgradeValue;
evaluationContext.strategicalValue += upgradeValue / armyUpgrade.hero->getTotalStrength(); evaluationContext.strategicalValue += upgradeValue / (float)armyUpgrade.hero->getArmyStrength();
} }
}; };
@ -627,7 +627,7 @@ private:
continue; continue;
auto creature = creatureInfo.second.back().toCreature(); auto creature = creatureInfo.second.back().toCreature();
result += creature->AIValue * town->getGrowthInfo(creature->level).totalGrowth(); result += creature->AIValue * town->getGrowthInfo(creature->getLevel() - 1).totalGrowth();
} }
return result; return result;
@ -648,6 +648,9 @@ public:
auto strategicalValue = std::sqrt(armyIncome / 20000.0f) + dailyIncome / 3000.0f; auto strategicalValue = std::sqrt(armyIncome / 20000.0f) + dailyIncome / 3000.0f;
if(evaluationContext.evaluator.ai->buildAnalyzer->getDevelopmentInfo().size() == 1)
strategicalValue = 1;
float multiplier = 1; float multiplier = 1;
if(treat.turn < defendTown.getTurn()) if(treat.turn < defendTown.getTurn())
@ -781,9 +784,11 @@ public:
if(garrisonHero && swapCommand.getLockingReason() == HeroLockedReason::DEFENCE) if(garrisonHero && swapCommand.getLockingReason() == HeroLockedReason::DEFENCE)
{ {
auto defenderRole = evaluationContext.evaluator.ai->heroManager->getHeroRole(garrisonHero); auto defenderRole = evaluationContext.evaluator.ai->heroManager->getHeroRole(garrisonHero);
auto mpLeft = garrisonHero->movement / (float)garrisonHero->maxMovePoints(true);
evaluationContext.movementCost += garrisonHero->movement; evaluationContext.movementCost += mpLeft;
evaluationContext.movementCostByRole[defenderRole] += garrisonHero->movement; evaluationContext.movementCostByRole[defenderRole] += mpLeft;
evaluationContext.heroRole = defenderRole;
} }
} }
}; };

View File

@ -53,13 +53,15 @@ namespace AIPathfinding
for(const CGTownInstance * t : cb->getTownsInfo()) for(const CGTownInstance * t : cb->getTownsInfo())
{ {
if(t->hasBuilt(BuildingID::SHIPYARD)) // do not allow ally shipyards because of bug
if(t->hasBuilt(BuildingID::SHIPYARD) && t->getOwner() == ai->playerID)
shipyards.push_back(t); shipyards.push_back(t);
} }
for(const CGObjectInstance * obj : ai->memory->visitableObjs) for(const CGObjectInstance * obj : ai->memory->visitableObjs)
{ {
if(obj->ID != Obj::TOWN) //towns were handled in the previous loop // do not allow ally shipyards because of bug
if(obj->ID != Obj::TOWN && obj->getOwner() == ai->playerID) //towns were handled in the previous loop
{ {
if(const IShipyard * shipyard = IShipyard::castFrom(obj)) if(const IShipyard * shipyard = IShipyard::castFrom(obj))
shipyards.push_back(shipyard); shipyards.push_back(shipyard);

View File

@ -863,7 +863,7 @@ void VCAI::mainLoop()
invalidPathHeroes.clear(); invalidPathHeroes.clear();
while (basicGoals.size()) for (int pass = 0; pass< 30 && basicGoals.size(); pass++)
{ {
vstd::removeDuplicates(basicGoals); //TODO: container which does this automagically without has would be nice vstd::removeDuplicates(basicGoals); //TODO: container which does this automagically without has would be nice
goalsToAdd.clear(); goalsToAdd.clear();

View File

@ -22,6 +22,7 @@
* Implemented cut/copy/paste operations * Implemented cut/copy/paste operations
* Implemented lasso brush for terrain editing * Implemented lasso brush for terrain editing
* Toolbar actions now have names * Toolbar actions now have names
* Added basic victory and lose conditions
### LAUNCHER: ### LAUNCHER:
* Added initial Welcome/Setup screen for new players * Added initial Welcome/Setup screen for new players
@ -31,6 +32,7 @@
* Mods tab layout has been adjusted based on feedback from players * Mods tab layout has been adjusted based on feedback from players
* Settings tab layout has been redesigned to support longer texts * Settings tab layout has been redesigned to support longer texts
* Added button to start map editor directly from Launcher * Added button to start map editor directly from Launcher
* Simplified game starting flow from online lobby
### AI PLAYER: ### AI PLAYER:
* AI should now be more active in destroying heroes causing treat on AI towns * AI should now be more active in destroying heroes causing treat on AI towns
@ -67,6 +69,7 @@
* It is now possible to use in-game console for vcmi commands * It is now possible to use in-game console for vcmi commands
* Stacks sized 1000-9999 units will not be displayed as "1k" * Stacks sized 1000-9999 units will not be displayed as "1k"
* It is now possible to select destination town for Town Portal via double-click * It is now possible to select destination town for Town Portal via double-click
* Implemented extended options for random map tab: generate G+U size, select RMG template, manage teams and roads
### HERO SCREEN ### HERO SCREEN
* Fixed cases of incorrect artifact slot highlighting * Fixed cases of incorrect artifact slot highlighting
@ -109,6 +112,7 @@
* Hovering over hero now correctly shows hero cursor * Hovering over hero now correctly shows hero cursor
* Creature currently making turn is now highlighted in the Battle Queue * Creature currently making turn is now highlighted in the Battle Queue
* Hovering over creature icon in Battle Queue will highlight this creature in the battlefield * Hovering over creature icon in Battle Queue will highlight this creature in the battlefield
* New battle UI extension allows control over creatures' special abilities
### SPELLS: ### SPELLS:
* Hero casting animation will play before spell effect * Hero casting animation will play before spell effect

View File

@ -144,8 +144,6 @@
"core.bonus.BLOCKS_RANGED_RETALIATION.description": "敌人无法对射击进行反击", "core.bonus.BLOCKS_RANGED_RETALIATION.description": "敌人无法对射击进行反击",
"core.bonus.CATAPULT.name": "攻城", "core.bonus.CATAPULT.name": "攻城",
"core.bonus.CATAPULT.description": "可以攻击城墙", "core.bonus.CATAPULT.description": "可以攻击城墙",
"core.bonus.CATAPULT_EXTRA_SHOTS.name": "额外攻击城墙",
"core.bonus.CATAPULT_EXTRA_SHOTS.description": "可以额外攻击城墙 ${val} 次",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name": "施法消耗 - (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name": "施法消耗 - (${val})",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description": "减少英雄的施法消耗", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description": "减少英雄的施法消耗",
"core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name": "对方施法消耗 + (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name": "对方施法消耗 + (${val})",

View File

@ -168,8 +168,6 @@
"core.bonus.BLOCKS_RANGED_RETALIATION.description": "Enemy cannot retaliate by using a ranged attack", "core.bonus.BLOCKS_RANGED_RETALIATION.description": "Enemy cannot retaliate by using a ranged attack",
"core.bonus.CATAPULT.name": "Catapult", "core.bonus.CATAPULT.name": "Catapult",
"core.bonus.CATAPULT.description": "Attacks siege walls", "core.bonus.CATAPULT.description": "Attacks siege walls",
"core.bonus.CATAPULT_EXTRA_SHOTS.name": "Additional siege attacks",
"core.bonus.CATAPULT_EXTRA_SHOTS.description": "Can hit siege walls ${val} extra times per attack",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name": "Reduce Casting Cost (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name": "Reduce Casting Cost (${val})",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description": "Reduces the spellcasting cost for the hero by ${val}", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description": "Reduces the spellcasting cost for the hero by ${val}",
"core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name": "Magic Damper (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name": "Magic Damper (${val})",

View File

@ -169,8 +169,6 @@
"core.bonus.BLOCKS_RANGED_RETALIATION.description": "Feind kann nicht durch Schießen vergelten", "core.bonus.BLOCKS_RANGED_RETALIATION.description": "Feind kann nicht durch Schießen vergelten",
"core.bonus.CATAPULT.name": "Katapult", "core.bonus.CATAPULT.name": "Katapult",
"core.bonus.CATAPULT.description": "Greift Belagerungsmauern an", "core.bonus.CATAPULT.description": "Greift Belagerungsmauern an",
"core.bonus.CATAPULT_EXTRA_SHOTS.name": "Zusätzliche Belagerungsangriffe",
"core.bonus.CATAPULT_EXTRA_SHOTS.description": "Kann Belagerungsmauern ${val} zusätzliche Male pro Angriff treffen",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name": "Reduziere Zauberkosten (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name": "Reduziere Zauberkosten (${val})",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description": "Reduziert die Zauberkosten für den Helden", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description": "Reduziert die Zauberkosten für den Helden",
"core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name": "Zauberdämpfer (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name": "Zauberdämpfer (${val})",

View File

@ -79,10 +79,10 @@
"vcmi.battleOptions.animationsSpeed1.help": "Ustawia szybkość animacji na bardzo wolną", "vcmi.battleOptions.animationsSpeed1.help": "Ustawia szybkość animacji na bardzo wolną",
"vcmi.battleOptions.animationsSpeed5.help": "Ustawia szybkość animacji na bardzo szybką", "vcmi.battleOptions.animationsSpeed5.help": "Ustawia szybkość animacji na bardzo szybką",
"vcmi.battleOptions.animationsSpeed6.help": "Ustawia szybkość animacji na błyskawiczną", "vcmi.battleOptions.animationsSpeed6.help": "Ustawia szybkość animacji na błyskawiczną",
"vcmi.battleOptions.skipBattleIntroMusic.hover": "Pomiń muzykę startową", "vcmi.battleOptions.skipBattleIntroMusic.hover": "Pomiń czekanie startowe",
"vcmi.battleOptions.skipBattleIntroMusic.help": "{Pomiń muzykę startową}\n\n Pomija krótką muzykę, która jest odtwarzana na początku każdej bitwy przed rozpoczęciem akcji. Może również być pominięta poprzez naciśnięcie ESC.", "vcmi.battleOptions.skipBattleIntroMusic.help": "{Pomiń czekanie startowe}\n\n Pomija konieczność czekania podczas muzyki startowej, która jest odtwarzana na początku każdej bitwy przed rozpoczęciem akcji.",
"vcmi.battleWindow.pressKeyToSkipIntro" : "Naciśnij dowolny klawisz by pominąć muzykę startową", "vcmi.battleWindow.pressKeyToSkipIntro" : "Naciśnij dowolny klawisz by rozpocząć bitwę natychmiastowo",
"vcmi.battleWindow.damageEstimation.melee" : "Atakuj %CREATURE (%DAMAGE).", "vcmi.battleWindow.damageEstimation.melee" : "Atakuj %CREATURE (%DAMAGE).",
"vcmi.battleWindow.damageEstimation.meleeKills" : "Atakuj %CREATURE (%DAMAGE, %KILLS).", "vcmi.battleWindow.damageEstimation.meleeKills" : "Atakuj %CREATURE (%DAMAGE, %KILLS).",
@ -92,8 +92,8 @@
"vcmi.battleWindow.damageEstimation.shots.1" : "pozostał %d strzał", "vcmi.battleWindow.damageEstimation.shots.1" : "pozostał %d strzał",
"vcmi.battleWindow.damageEstimation.damage" : "obrażenia: %d", "vcmi.battleWindow.damageEstimation.damage" : "obrażenia: %d",
"vcmi.battleWindow.damageEstimation.damage.1" : "obrażenia: %d", "vcmi.battleWindow.damageEstimation.damage.1" : "obrażenia: %d",
"vcmi.battleWindow.damageEstimation.kills" : "%d zginie", "vcmi.battleWindow.damageEstimation.kills" : "zginie: %d",
"vcmi.battleWindow.damageEstimation.kills.1" : "%d zginie", "vcmi.battleWindow.damageEstimation.kills.1" : "zginie: %d",
"vcmi.otherOptions.availableCreaturesAsDwellingLabel.hover" : "Pokaż dostępne stworzenia", "vcmi.otherOptions.availableCreaturesAsDwellingLabel.hover" : "Pokaż dostępne stworzenia",
"vcmi.otherOptions.availableCreaturesAsDwellingLabel.help" : "{Pokaż dostępne stworzenia}\n\n Pokazuje dostępne stworzenia zamiast tygodniowego przyrostu w podsumowaniu miasta (lewy dolny róg).", "vcmi.otherOptions.availableCreaturesAsDwellingLabel.help" : "{Pokaż dostępne stworzenia}\n\n Pokazuje dostępne stworzenia zamiast tygodniowego przyrostu w podsumowaniu miasta (lewy dolny róg).",
@ -141,6 +141,8 @@
"vcmi.randomMapTab.widgets.teamAlignmentsLabel" : "Sojusze", "vcmi.randomMapTab.widgets.teamAlignmentsLabel" : "Sojusze",
"vcmi.randomMapTab.widgets.roadTypesLabel" : "Typy dróg", "vcmi.randomMapTab.widgets.roadTypesLabel" : "Typy dróg",
//WoG strings translations missing here - should be taken from polish WoG translation
"core.bonus.ADDITIONAL_ATTACK.name": "Podwójne Uderzenie", "core.bonus.ADDITIONAL_ATTACK.name": "Podwójne Uderzenie",
"core.bonus.ADDITIONAL_ATTACK.description": "Atakuje podwójnie", "core.bonus.ADDITIONAL_ATTACK.description": "Atakuje podwójnie",
"core.bonus.ADDITIONAL_RETALIATION.name": "Dodatkowe kontrataki", "core.bonus.ADDITIONAL_RETALIATION.name": "Dodatkowe kontrataki",
@ -155,8 +157,6 @@
"core.bonus.BLOCKS_RANGED_RETALIATION.description": "Wróg nie może kontratakować poprzez strzelanie", "core.bonus.BLOCKS_RANGED_RETALIATION.description": "Wróg nie może kontratakować poprzez strzelanie",
"core.bonus.CATAPULT.name": "Katapulta", "core.bonus.CATAPULT.name": "Katapulta",
"core.bonus.CATAPULT.description": "Atakuje mury obronne", "core.bonus.CATAPULT.description": "Atakuje mury obronne",
"core.bonus.CATAPULT_EXTRA_SHOTS.name": "Dodatkowe ataki oblężnicze",
"core.bonus.CATAPULT_EXTRA_SHOTS.description": "Może uderzyć mury obronne ${val} dodatkowych razy na atak",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name": "Zmniejsz koszt czarów (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name": "Zmniejsz koszt czarów (${val})",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description": "Zmniejsza koszt czaru bohatera", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description": "Zmniejsza koszt czaru bohatera",
"core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name": "Tłumienie magii (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name": "Tłumienie magii (${val})",

View File

@ -171,8 +171,6 @@
"core.bonus.BLOCKS_RANGED_RETALIATION.description": "Враг не отвечает в дальнем бою", "core.bonus.BLOCKS_RANGED_RETALIATION.description": "Враг не отвечает в дальнем бою",
"core.bonus.CATAPULT.name": "Стенобитное орудие", "core.bonus.CATAPULT.name": "Стенобитное орудие",
"core.bonus.CATAPULT.description": "Может атаковать стены", "core.bonus.CATAPULT.description": "Может атаковать стены",
"core.bonus.CATAPULT_EXTRA_SHOTS.name": "Дополнительные атаки стен",
"core.bonus.CATAPULT_EXTRA_SHOTS.description": "Может дополнительно бить в стены ${val} раз за атаку",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name": "Снижение стоимости заклинаний (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name": "Снижение стоимости заклинаний (${val})",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description": "Снижаемость стоимость заклинаний для героя", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description": "Снижаемость стоимость заклинаний для героя",
"core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name": "Подавитель магии (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name": "Подавитель магии (${val})",

View File

@ -157,8 +157,6 @@
"core.bonus.BLOCKS_RANGED_RETALIATION.description": "El enemigo no puede contraatacar disparando", "core.bonus.BLOCKS_RANGED_RETALIATION.description": "El enemigo no puede contraatacar disparando",
"core.bonus.CATAPULT.name": "Catapulta", "core.bonus.CATAPULT.name": "Catapulta",
"core.bonus.CATAPULT.description": "Ataca a las paredes de asedio", "core.bonus.CATAPULT.description": "Ataca a las paredes de asedio",
"core.bonus.CATAPULT_EXTRA_SHOTS.name": "Ataques adicionales de asedio",
"core.bonus.CATAPULT_EXTRA_SHOTS.description": "Puede golpear las paredes de asedio ${val} veces adicionales por ataque",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name": "Reducir coste del conjuro (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name": "Reducir coste del conjuro (${val})",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description": "Reduce el coste del conjuro para el héroe", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description": "Reduce el coste del conjuro para el héroe",
"core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name": "Disminuir efecto mágico (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name": "Disminuir efecto mágico (${val})",

View File

@ -157,8 +157,6 @@
"core.bonus.BLOCKS_RANGED_RETALIATION.description" : "Ворог не може відповісти пострілом", "core.bonus.BLOCKS_RANGED_RETALIATION.description" : "Ворог не може відповісти пострілом",
"core.bonus.CATAPULT.name" : "Катапульта", "core.bonus.CATAPULT.name" : "Катапульта",
"core.bonus.CATAPULT.description" : "Атакує стіни фортеці", "core.bonus.CATAPULT.description" : "Атакує стіни фортеці",
"core.bonus.CATAPULT_EXTRA_SHOTS.name" : "Додаткові атаки стін",
"core.bonus.CATAPULT_EXTRA_SHOTS.description" : "Може вражати стіни фортеці ${val} додаткових разів за атаку",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name" : "Зменшує вартість закляття (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.name" : "Зменшує вартість закляття (${val})",
"core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description" : "Зменшує вартість закляття для героя", "core.bonus.CHANGES_SPELL_COST_FOR_ALLY.description" : "Зменшує вартість закляття для героя",
"core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name" : "Демпфер магії (${val})", "core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name" : "Демпфер магії (${val})",

View File

@ -49,6 +49,7 @@
#include "../../lib/mapping/CMap.h" #include "../../lib/mapping/CMap.h"
#include "../../lib/UnlockGuard.h" #include "../../lib/UnlockGuard.h"
#include "../../lib/TerrainHandler.h" #include "../../lib/TerrainHandler.h"
#include <SDL_keycode.h>
#define ADVOPT (conf.go()->ac) #define ADVOPT (conf.go()->ac)
@ -791,6 +792,13 @@ void CAdvMapInt::keyPressed(const SDL_Keycode & key)
} }
return; return;
} }
case SDLK_LALT:
case SDLK_RALT:
{
//fake mouse use to trigger onTileHovered()
GH.fakeMouseMove();
return;
}
default: default:
{ {
auto direction = keyToMoveDirection(key); auto direction = keyToMoveDirection(key);

View File

@ -113,6 +113,7 @@ static std::string formatRangedAttack(const DamageEstimation & estimation, const
BattleActionsController::BattleActionsController(BattleInterface & owner): BattleActionsController::BattleActionsController(BattleInterface & owner):
owner(owner), owner(owner),
selectedStack(nullptr),
heroSpellToCast(nullptr) heroSpellToCast(nullptr)
{} {}
@ -177,7 +178,7 @@ void BattleActionsController::enterCreatureCastingMode()
if (isCastingPossible) if (isCastingPossible)
{ {
owner.giveCommand(EActionType::MONSTER_SPELL, BattleHex::INVALID, spell->getId()); owner.giveCommand(EActionType::MONSTER_SPELL, BattleHex::INVALID, spell->getId());
owner.stacksController->setSelectedStack(nullptr); selectedStack = nullptr;
CCS->curh->set(Cursor::Combat::POINTER); CCS->curh->set(Cursor::Combat::POINTER);
} }
@ -568,7 +569,7 @@ bool BattleActionsController::actionIsLegal(PossiblePlayerBattleAction action, B
return isCastingPossibleHere(action.spell().toSpell(), owner.stacksController->getActiveStack(), targetStack, targetHex); return isCastingPossibleHere(action.spell().toSpell(), owner.stacksController->getActiveStack(), targetStack, targetHex);
case PossiblePlayerBattleAction::AIMED_SPELL_CREATURE: case PossiblePlayerBattleAction::AIMED_SPELL_CREATURE:
return targetStack && isCastingPossibleHere(action.spell().toSpell(), owner.stacksController->getActiveStack(), targetStack, targetHex); return !selectedStack && targetStack && isCastingPossibleHere(action.spell().toSpell(), owner.stacksController->getActiveStack(), targetStack, targetHex);
case PossiblePlayerBattleAction::RANDOM_GENIE_SPELL: case PossiblePlayerBattleAction::RANDOM_GENIE_SPELL:
if(targetStack && targetStackOwned && targetStack != owner.stacksController->getActiveStack() && targetStack->alive()) //only positive spells for other allied creatures if(targetStack && targetStackOwned && targetStack != owner.stacksController->getActiveStack() && targetStack->alive()) //only positive spells for other allied creatures
@ -581,11 +582,11 @@ bool BattleActionsController::actionIsLegal(PossiblePlayerBattleAction action, B
case PossiblePlayerBattleAction::TELEPORT: case PossiblePlayerBattleAction::TELEPORT:
{ {
ui8 skill = getCurrentSpellcaster()->getEffectLevel(SpellID(SpellID::TELEPORT).toSpell()); ui8 skill = getCurrentSpellcaster()->getEffectLevel(SpellID(SpellID::TELEPORT).toSpell());
return owner.curInt->cb->battleCanTeleportTo(owner.stacksController->getSelectedStack(), targetHex, skill); return owner.curInt->cb->battleCanTeleportTo(selectedStack, targetHex, skill);
} }
case PossiblePlayerBattleAction::SACRIFICE: //choose our living stack to sacrifice case PossiblePlayerBattleAction::SACRIFICE: //choose our living stack to sacrifice
return targetStack && targetStack != owner.stacksController->getSelectedStack() && targetStackOwned && targetStack->alive(); return targetStack && targetStack != selectedStack && targetStackOwned && targetStack->alive();
case PossiblePlayerBattleAction::OBSTACLE: case PossiblePlayerBattleAction::OBSTACLE:
case PossiblePlayerBattleAction::FREE_LOCATION: case PossiblePlayerBattleAction::FREE_LOCATION:
@ -697,14 +698,14 @@ void BattleActionsController::actionRealize(PossiblePlayerBattleAction action, B
{ {
heroSpellToCast->aimToHex(targetHex); heroSpellToCast->aimToHex(targetHex);
possibleActions.push_back({PossiblePlayerBattleAction::SACRIFICE, action.spell()}); possibleActions.push_back({PossiblePlayerBattleAction::SACRIFICE, action.spell()});
owner.stacksController->setSelectedStack(targetStack); selectedStack = targetStack;
return; return;
} }
if (action.spell() == SpellID::TELEPORT) if (action.spell() == SpellID::TELEPORT)
{ {
heroSpellToCast->aimToUnit(targetStack); heroSpellToCast->aimToUnit(targetStack);
possibleActions.push_back({PossiblePlayerBattleAction::TELEPORT, action.spell()}); possibleActions.push_back({PossiblePlayerBattleAction::TELEPORT, action.spell()});
owner.stacksController->setSelectedStack(targetStack); selectedStack = targetStack;
return; return;
} }
} }
@ -735,7 +736,7 @@ void BattleActionsController::actionRealize(PossiblePlayerBattleAction action, B
owner.curInt->cb->battleMakeAction(heroSpellToCast.get()); owner.curInt->cb->battleMakeAction(heroSpellToCast.get());
endCastingSpell(); endCastingSpell();
} }
owner.stacksController->setSelectedStack(nullptr); selectedStack = nullptr;
return; return;
} }
} }

View File

@ -47,6 +47,9 @@ class BattleActionsController
/// if true, active stack could possibly cast some target spell /// if true, active stack could possibly cast some target spell
std::vector<const CSpell *> creatureSpells; std::vector<const CSpell *> creatureSpells;
/// stack that has been selected as first target for multi-target spells (Teleport & Sacrifice)
const CStack * selectedStack;
bool isCastingPossibleHere (const CSpell * spell, const CStack *sactive, const CStack *shere, BattleHex myNumber); bool isCastingPossibleHere (const CSpell * spell, const CStack *sactive, const CStack *shere, BattleHex myNumber);
bool canStackMoveHere (const CStack *sactive, BattleHex MyNumber) const; //TODO: move to BattleState / callback bool canStackMoveHere (const CStack *sactive, BattleHex MyNumber) const; //TODO: move to BattleState / callback
std::vector<PossiblePlayerBattleAction> getPossibleActionsForStack (const CStack *stack) const; //called when stack gets its turn std::vector<PossiblePlayerBattleAction> getPossibleActionsForStack (const CStack *stack) const; //called when stack gets its turn

View File

@ -74,7 +74,6 @@ BattleStacksController::BattleStacksController(BattleInterface & owner):
owner(owner), owner(owner),
activeStack(nullptr), activeStack(nullptr),
stackToActivate(nullptr), stackToActivate(nullptr),
selectedStack(nullptr),
animIDhelper(0) animIDhelper(0)
{ {
//preparing graphics for displaying amounts of creatures //preparing graphics for displaying amounts of creatures
@ -734,16 +733,6 @@ void BattleStacksController::activateStack()
return; return;
} }
void BattleStacksController::setSelectedStack(const CStack *stack)
{
selectedStack = stack;
}
const CStack* BattleStacksController::getSelectedStack() const
{
return selectedStack;
}
const CStack* BattleStacksController::getActiveStack() const const CStack* BattleStacksController::getActiveStack() const
{ {
return activeStack; return activeStack;

View File

@ -79,9 +79,6 @@ class BattleStacksController
///when animation is playing, we should wait till the end to make the next stack active; nullptr of none ///when animation is playing, we should wait till the end to make the next stack active; nullptr of none
const CStack *stackToActivate; const CStack *stackToActivate;
/// stack that was selected for multi-target spells - Teleport / Sacrifice
const CStack *selectedStack;
/// for giving IDs for animations /// for giving IDs for animations
ui32 animIDhelper; ui32 animIDhelper;
@ -126,7 +123,6 @@ public:
void activateStack(); //copy stackToActivate to activeStack to enable controls of the stack void activateStack(); //copy stackToActivate to activeStack to enable controls of the stack
void setActiveStack(const CStack *stack); void setActiveStack(const CStack *stack);
void setSelectedStack(const CStack *stack);
void showAliveStack(Canvas & canvas, const CStack * stack); void showAliveStack(Canvas & canvas, const CStack * stack);
void showStack(Canvas & canvas, const CStack * stack); void showStack(Canvas & canvas, const CStack * stack);
@ -140,7 +136,6 @@ public:
void addNewAnim(BattleAnimation *anim); //adds new anim to pendingAnims void addNewAnim(BattleAnimation *anim); //adds new anim to pendingAnims
const CStack* getActiveStack() const; const CStack* getActiveStack() const;
const CStack* getSelectedStack() const;
const std::vector<uint32_t> getHoveredStacksUnitIds() const; const std::vector<uint32_t> getHoveredStacksUnitIds() const;
void update(); void update();

View File

@ -18,6 +18,7 @@
#include "../CPlayerInterface.h" #include "../CPlayerInterface.h"
#include "../adventureMap/CAdvMapInt.h" #include "../adventureMap/CAdvMapInt.h"
#include "../gui/CGuiHandler.h"
#include "../../lib/CConfigHandler.h" #include "../../lib/CConfigHandler.h"
#include "../../lib/CPathfinder.h" #include "../../lib/CPathfinder.h"
@ -206,6 +207,9 @@ bool MapViewController::isEventVisible(const CGObjectInstance * obj)
if(!LOCPLINT->makingTurn && settings["adventure"]["enemyMoveTime"].Float() < 0) if(!LOCPLINT->makingTurn && settings["adventure"]["enemyMoveTime"].Float() < 0)
return false; // enemy move speed set to "hidden/none" return false; // enemy move speed set to "hidden/none"
if(GH.topInt() != adventureInt)
return false;
if(obj->isVisitable()) if(obj->isVisitable())
return context->isVisible(obj->visitablePos()); return context->isVisible(obj->visitablePos());
else else
@ -220,6 +224,9 @@ bool MapViewController::isEventVisible(const CGHeroInstance * obj, const int3 &
if(!LOCPLINT->makingTurn && settings["adventure"]["enemyMoveTime"].Float() < 0) if(!LOCPLINT->makingTurn && settings["adventure"]["enemyMoveTime"].Float() < 0)
return false; // enemy move speed set to "hidden/none" return false; // enemy move speed set to "hidden/none"
if(GH.topInt() != adventureInt)
return false;
if(context->isVisible(obj->convertToVisitablePos(from))) if(context->isVisible(obj->convertToVisitablePos(from)))
return true; return true;

View File

@ -281,7 +281,6 @@ void CHeroArtPlace::select()
} }
} }
CCS->curh->dragAndDropCursor("artifact", ourArt->artType->getIconIndex());
ourOwner->commonInfo->src.setTo(this, false); ourOwner->commonInfo->src.setTo(this, false);
ourOwner->commonInfo->src.slotID = ArtifactPosition::TRANSITION_POS; ourOwner->commonInfo->src.slotID = ArtifactPosition::TRANSITION_POS;
@ -741,7 +740,9 @@ void CArtifactsOfHero::artifactMoved(const ArtifactLocation & src, const Artifac
} }
if(!curHero->artifactsTransitionPos.empty() && withUIUpdate) if(!curHero->artifactsTransitionPos.empty() && withUIUpdate)
{ {
markPossibleSlots(curHero->getArt(ArtifactPosition::TRANSITION_POS)); auto artInst = curHero->getArt(ArtifactPosition::TRANSITION_POS);
markPossibleSlots(artInst);
CCS->curh->dragAndDropCursor("artifact", artInst->artType->getIconIndex());
} }
} }

View File

@ -1259,6 +1259,7 @@ void CCastleInterface::addBuilding(BuildingID bid)
builds->addBuilding(bid); builds->addBuilding(bid);
recreateIcons(); recreateIcons();
activate(); activate();
redraw();
} }
void CCastleInterface::removeBuilding(BuildingID bid) void CCastleInterface::removeBuilding(BuildingID bid)
@ -1267,6 +1268,7 @@ void CCastleInterface::removeBuilding(BuildingID bid)
builds->removeBuilding(bid); builds->removeBuilding(bid);
recreateIcons(); recreateIcons();
activate(); activate();
redraw();
} }
void CCastleInterface::recreateIcons() void CCastleInterface::recreateIcons()

View File

@ -191,7 +191,10 @@ RuleBlock: gold reward
rule: if armyReward is LOW and heroRole is MAIN and danger is NONE and mainTurnDistance is LOWEST then Value is HIGH rule: if armyReward is LOW and heroRole is MAIN and danger is NONE and mainTurnDistance is LOWEST then Value is HIGH
rule: if skillReward is LOW and heroRole is MAIN and armyLoss is LOW then Value is BITHIGH rule: if skillReward is LOW and heroRole is MAIN and armyLoss is LOW then Value is BITHIGH
rule: if skillReward is MEDIUM and heroRole is MAIN and armyLoss is LOW and fear is not HIGH then Value is BITHIGH rule: if skillReward is MEDIUM and heroRole is MAIN and armyLoss is LOW and fear is not HIGH then Value is BITHIGH
rule: if skillReward is MEDIUM and heroRole is MAIN and rewardType is MIXED and armyLoss is LOW and fear is not HIGH then Value is HIGH with 0.5
rule: if skillReward is HIGH and heroRole is MAIN and armyLoss is LOW and fear is not HIGH then Value is HIGH rule: if skillReward is HIGH and heroRole is MAIN and armyLoss is LOW and fear is not HIGH then Value is HIGH
rule: if skillReward is MEDIUM and heroRole is SCOUT then Value is LOWEST
rule: if skillReward is HIGH and heroRole is SCOUT then Value is LOWEST
rule: if strategicalValue is LOW and heroRole is MAIN and armyLoss is LOW then Value is BITHIGH rule: if strategicalValue is LOW and heroRole is MAIN and armyLoss is LOW then Value is BITHIGH
rule: if strategicalValue is LOWEST and heroRole is MAIN and armyLoss is LOW then Value is LOW rule: if strategicalValue is LOWEST and heroRole is MAIN and armyLoss is LOW then Value is LOW
rule: if strategicalValue is LOW and heroRole is SCOUT and armyLoss is LOW and fear is not HIGH then Value is HIGH with 0.5 rule: if strategicalValue is LOW and heroRole is SCOUT and armyLoss is LOW and fear is not HIGH then Value is HIGH with 0.5

View File

@ -53,10 +53,7 @@
"CATAPULT_EXTRA_SHOTS": "CATAPULT_EXTRA_SHOTS":
{ {
"graphics": "hidden": true
{
"icon": "zvs/Lib1.res/Catapult"
}
}, },
"CHANGES_SPELL_COST_FOR_ALLY": "CHANGES_SPELL_COST_FOR_ALLY":

View File

@ -451,7 +451,7 @@
"repositoryURL" : { "repositoryURL" : {
"type" : "array", "type" : "array",
"default" : [ "default" : [
"https://raw.githubusercontent.com/vcmi/vcmi-mods-repository/develop/github.json" "https://raw.githubusercontent.com/vcmi/vcmi-mods-repository/develop/vcmi-1.2.json"
], ],
"items" : { "items" : {
"type" : "string" "type" : "string"

View File

@ -385,19 +385,16 @@
} }
}, },
"basic" : { "basic" : {
"description" : "{Basic Estates}\n\nYour hero contributes 125 gold per day to your cause.",
"effects" : { "effects" : {
"main" : { "val" : 125 } "main" : { "val" : 125 }
} }
}, },
"advanced" : { "advanced" : {
"description" : "{Advanced Estates}\n\nYour hero contributes 250 gold per day to your cause.",
"effects" : { "effects" : {
"main" : { "val" : 250 } "main" : { "val" : 250 }
} }
}, },
"expert" : { "expert" : {
"description" : "{Expert Estates}\n\nYour hero contributes 500 gold per day to your cause.",
"effects" : { "effects" : {
"main" : { "val" : 500 } "main" : { "val" : 500 }
} }

View File

@ -143,7 +143,7 @@
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>Choose your language</string> <string>Select your language</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -193,7 +193,7 @@
<item row="0" column="0" colspan="2"> <item row="0" column="0" colspan="2">
<widget class="QLabel" name="labelLanguageSocial"> <widget class="QLabel" name="labelLanguageSocial">
<property name="text"> <property name="text">
<string>Have a question? Found a bug? Want to help? Join us:</string> <string>Have a question? Found a bug? Want to help? Join us!</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -202,13 +202,13 @@
<item row="1" column="1" colspan="2"> <item row="1" column="1" colspan="2">
<widget class="QLabel" name="labelLanguageWelcome"> <widget class="QLabel" name="labelLanguageWelcome">
<property name="text"> <property name="text">
<string>Thanks for installing VCMI. <string>Thank you for installing VCMI!
There are a few more steps to be done before you can start playing. Before you can start playing, there are a few more steps that need to be completed.
Keep in mind that in order to use VCMI you need to own original data files, Heroes III: Complete Edition or Shadow of Death. Please keep in mind that in order to use VCMI you must own the original data files for Heroes® of Might and Magic® III: Complete or The Shadow of Death.
Heroes III: HD Edition is currently not supported</string> Heroes® of Might and Magic® III HD is currently not supported!</string>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>true</bool> <bool>true</bool>
@ -273,7 +273,7 @@ Heroes III: HD Edition is currently not supported</string>
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>Find Heroes III data files</string> <string>Locate Heroes III data files</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -362,7 +362,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="text"> <property name="text">
<string>If you don't have installed Heroes III copy, it is possible to use our automatic installation tool 'vcmibuilder' to extract data from GoG.com installer. Visit our wiki for detailed instructions.</string> <string>If you don't have a copy of Heroes III installed, you can use our automatic installation tool 'vcmibuilder', which only requires the GoG.com Heroes III installer. Please visit our wiki for detailed instructions.</string>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>true</bool> <bool>true</bool>
@ -378,7 +378,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="text"> <property name="text">
<string>VCMI requires Heroes III data files in one of the locations listed above. Please copy Heroes III data in one of these directories.</string> <string>To run VCMI, Heroes III data files need to be present in one of the specified locations. Please copy the Heroes III data to one of these directories.</string>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>true</bool> <bool>true</bool>
@ -413,7 +413,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="text"> <property name="text">
<string>Alternatively, you can select directory with installed Heroes III data and VCMI will copy exisiting data automatically.</string> <string>Alternatively, you can provide the directory where Heroes III data is installed and VCMI will copy the existing data automatically.</string>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>true</bool> <bool>true</bool>
@ -482,7 +482,7 @@ Heroes III: HD Edition is currently not supported</string>
<item row="2" column="0" colspan="2"> <item row="2" column="0" colspan="2">
<widget class="QLabel" name="labelDataFailure"> <widget class="QLabel" name="labelDataFailure">
<property name="text"> <property name="text">
<string>Automatic detection of language failed. Please select language of your Heroes III copy</string> <string>The automatic detection of the Heroes III language has failed. Please select the language of your Heroes III manually</string>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>true</bool> <bool>true</bool>
@ -756,7 +756,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="text"> <property name="text">
<string>Install translation of Heroes III to your language</string> <string>Install a translation of Heroes III in your preferred language</string>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>true</bool> <bool>true</bool>
@ -772,7 +772,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="text"> <property name="text">
<string>Optionally, you can install additional mods either now or at any point later:</string> <string>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</string>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>true</bool> <bool>true</bool>
@ -788,7 +788,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="text"> <property name="text">
<string>Install support for playing Heroes III in resolutions other than 800x600.</string> <string>Install support for playing Heroes III in resolutions higher than 800x600</string>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>true</bool> <bool>true</bool>
@ -804,7 +804,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="text"> <property name="text">
<string>Install compatible version of addon Horn of the Abyss: fan-made Heroes III expansion, ported by VCMI team</string> <string>Install compatible version of &quot;Horn of the Abyss&quot;, a fan-made Heroes III expansion ported by the VCMI team</string>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>true</bool> <bool>true</bool>
@ -820,7 +820,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="text"> <property name="text">
<string>Install compatible version of addon &quot;In The Wake of Gods&quot;: fan-made Heroes III expansion</string> <string>Install compatible version of &quot;In The Wake of Gods&quot;, a fan-made Heroes III expansion</string>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>true</bool> <bool>true</bool>

View File

@ -73,7 +73,7 @@
<item> <item>
<widget class="QLabel" name="label_2"> <widget class="QLabel" name="label_2">
<property name="text"> <property name="text">
<string>People in lobby</string> <string>Players in lobby</string>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -316,11 +316,11 @@ QString CModListView::genModInfoText(CModEntry & mod)
result += "<p></p>"; // to get some empty space result += "<p></p>"; // to get some empty space
QString unknownDeps = tr("This mod can not be installed or enabled because following dependencies are not present"); QString unknownDeps = tr("This mod can not be installed or enabled because the following dependencies are not present");
QString blockingMods = tr("This mod can not be enabled because following mods are incompatible with this mod"); QString blockingMods = tr("This mod can not be enabled because the following mods are incompatible with it");
QString hasActiveDependentMods = tr("This mod can not be disabled because it is required to run following mods"); QString hasActiveDependentMods = tr("This mod cannot be disabled because it is required by the following mods");
QString hasDependentMods = tr("This mod can not be uninstalled or updated because it is required to run following mods"); QString hasDependentMods = tr("This mod cannot be uninstalled or updated because it is required by the following mods");
QString thisIsSubmod = tr("This is submod and it can not be installed or uninstalled separately from parent mod"); QString thisIsSubmod = tr("This is a submod and it cannot be installed or uninstalled separately from its parent mod");
QString notes; QString notes;

View File

@ -279,27 +279,27 @@
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/> <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<source>This mod can not be installed or enabled because following dependencies are not present</source> <source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="320"/> <location filename="../modManager/cmodlistview_moc.cpp" line="320"/>
<source>This mod can not be enabled because following mods are incompatible with this mod</source> <source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/> <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>This mod can not be disabled because it is required to run following mods</source> <source>This mod cannot be disabled because it is required by the following mods</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/> <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<source>This mod can not be uninstalled or updated because it is required to run following mods</source> <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/> <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>This is submod and it can not be installed or uninstalled separately from parent mod</source> <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@ -541,29 +541,80 @@
<source>Mods Preset</source> <source>Mods Preset</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Select your language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="196"/>
<source>Have a question? Found a bug? Want to help? Join us!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="205"/>
<source>Thank you for installing VCMI!
Before you can start playing, there are a few more steps that need to be completed.
Please keep in mind that in order to use VCMI you must own the original data files for Heroes® of Might and Magic® III: Complete or The Shadow of Death.
Heroes® of Might and Magic® III HD is currently not supported!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Locate Heroes III data files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="365"/>
<source>If you don&apos;t have a copy of Heroes III installed, you can use our automatic installation tool &apos;vcmibuilder&apos;, which only requires the GoG.com Heroes III installer. Please visit our wiki for detailed instructions.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="381"/>
<source>To run VCMI, Heroes III data files need to be present in one of the specified locations. Please copy the Heroes III data to one of these directories.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="416"/>
<source>Alternatively, you can provide the directory where Heroes III data is installed and VCMI will copy the existing data automatically.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/>
<source>Your Heroes III data files have been successfully found.</source> <source>Your Heroes III data files have been successfully found.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="485"/>
<source>The automatic detection of the Heroes III language has failed. Please select the language of your Heroes III manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="759"/>
<source>Install a translation of Heroes III in your preferred language</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/>
<source>Optionally, you can install additional mods either now or at any point later:</source> <source>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/>
<source>Install support for playing Heroes III in resolutions other than 800x600.</source> <source>Install support for playing Heroes III in resolutions higher than 800x600</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="807"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="807"/>
<source>Install compatible version of addon Horn of the Abyss: fan-made Heroes III expansion, ported by VCMI team</source> <source>Install compatible version of &quot;Horn of the Abyss&quot;, a fan-made Heroes III expansion ported by the VCMI team</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="823"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="823"/>
<source>Install compatible version of addon &quot;In The Wake of Gods&quot;: fan-made Heroes III expansion</source> <source>Install compatible version of &quot;In The Wake of Gods&quot;, a fan-made Heroes III expansion</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@ -576,11 +627,6 @@
<source>Step %v out of %m</source> <source>Step %v out of %m</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Choose your language</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/>
<source>VCMI on Github</source> <source>VCMI on Github</source>
@ -596,33 +642,12 @@
<source>VCMI on Discord</source> <source>VCMI on Discord</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="196"/>
<source>Have a question? Found a bug? Want to help? Join us:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="205"/>
<source>Thanks for installing VCMI.
There are a few more steps to be done before you can start playing.
Keep in mind that in order to use VCMI you need to own original data files, Heroes III: Complete Edition or Shadow of Death.
Heroes III: HD Edition is currently not supported</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/>
<source>Next</source> <source>Next</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Find Heroes III data files</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/>
<source>Open help in browser</source> <source>Open help in browser</source>
@ -633,26 +658,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>Search again</source> <source>Search again</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="365"/>
<source>If you don&apos;t have installed Heroes III copy, it is possible to use our automatic installation tool &apos;vcmibuilder&apos; to extract data from GoG.com installer. Visit our wiki for detailed instructions.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="381"/>
<source>VCMI requires Heroes III data files in one of the locations listed above. Please copy Heroes III data in one of these directories.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/>
<source>Heroes III data files</source> <source>Heroes III data files</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="416"/>
<source>Alternatively, you can select directory with installed Heroes III data and VCMI will copy exisiting data automatically.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/>
<source>Copy existing data</source> <source>Copy existing data</source>
@ -663,11 +673,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Your Heroes III language has been successfully detected.</source> <source>Your Heroes III language has been successfully detected.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="485"/>
<source>Automatic detection of language failed. Please select language of your Heroes III copy</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
<source>Heroes III language</source> <source>Heroes III language</source>
@ -704,11 +709,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>In The Wake of Gods</source> <source>In The Wake of Gods</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="759"/>
<source>Install translation of Heroes III to your language</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ImageViewer</name> <name>ImageViewer</name>
@ -804,11 +804,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Server</source> <source>Server</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>People in lobby</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../lobby/lobby_moc.ui" line="114"/> <location filename="../lobby/lobby_moc.ui" line="114"/>
<source>Lobby chat</source> <source>Lobby chat</source>
@ -844,6 +839,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>New room</source> <source>New room</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>Players in lobby</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../lobby/lobby_moc.ui" line="159"/> <location filename="../lobby/lobby_moc.ui" line="159"/>
<source>Join room</source> <source>Join room</source>
@ -945,7 +945,7 @@ Heroes III: HD Edition is currently not supported</source>
<name>UpdateDialog</name> <name>UpdateDialog</name>
<message> <message>
<location filename="../updatedialog_moc.ui" line="71"/> <location filename="../updatedialog_moc.ui" line="71"/>
<source>You have latest version</source> <source>You have the latest version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@ -955,7 +955,7 @@ Heroes III: HD Edition is currently not supported</source>
</message> </message>
<message> <message>
<location filename="../updatedialog_moc.ui" line="101"/> <location filename="../updatedialog_moc.ui" line="101"/>
<source>Check updates on startup</source> <source>Check for updates on startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>

View File

@ -279,28 +279,28 @@
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/> <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<source>This mod can not be installed or enabled because following dependencies are not present</source> <source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Diese Mod kann nicht installiert oder aktiviert werden, da die folgenden Abhängigkeiten nicht vorhanden sind</translation> <translation type="unfinished">Diese Mod kann nicht installiert oder aktiviert werden, da die folgenden Abhängigkeiten nicht vorhanden sind</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="320"/> <location filename="../modManager/cmodlistview_moc.cpp" line="320"/>
<source>This mod can not be enabled because following mods are incompatible with this mod</source> <source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Diese Mod kann nicht aktiviert werden, da folgende Mods nicht mit dieser Mod kompatibel sind</translation> <translation type="unfinished">Diese Mod kann nicht aktiviert werden, da folgende Mods nicht mit dieser Mod kompatibel sind</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/> <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>This mod can not be disabled because it is required to run following mods</source> <source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Diese Mod kann nicht deaktiviert werden, da sie zum Ausführen der folgenden Mods erforderlich ist</translation> <translation type="unfinished">Diese Mod kann nicht deaktiviert werden, da sie zum Ausführen der folgenden Mods erforderlich ist</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/> <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<source>This mod can not be uninstalled or updated because it is required to run following mods</source> <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Diese Mod kann nicht deinstalliert oder aktualisiert werden, da sie für die folgenden Mods erforderlich ist</translation> <translation type="unfinished">Diese Mod kann nicht deinstalliert oder aktualisiert werden, da sie für die folgenden Mods erforderlich ist</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/> <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>This is submod and it can not be installed or uninstalled separately from parent mod</source> <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Dies ist eine Submod und kann nicht separat von der Hauptmod installiert oder deinstalliert werden</translation> <translation type="unfinished">Dies ist eine Submod und kann nicht separat von der Hauptmod installiert oder deinstalliert werden</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="338"/> <location filename="../modManager/cmodlistview_moc.cpp" line="338"/>
@ -541,30 +541,87 @@
<source>Mods Preset</source> <source>Mods Preset</source>
<translation>Mods Voreinstellung</translation> <translation>Mods Voreinstellung</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Select your language</source>
<translation type="unfinished">Wählen Sie Ihre Sprache</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="196"/>
<source>Have a question? Found a bug? Want to help? Join us!</source>
<translation type="unfinished">Haben Sie eine Frage? Einen Fehler gefunden? Möchten Sie helfen? Machen Sie mit:</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="205"/>
<source>Thank you for installing VCMI!
Before you can start playing, there are a few more steps that need to be completed.
Please keep in mind that in order to use VCMI you must own the original data files for Heroes® of Might and Magic® III: Complete or The Shadow of Death.
Heroes® of Might and Magic® III HD is currently not supported!</source>
<translation type="unfinished">Vielen Dank für die Installation von VCMI.
Es sind noch ein paar Schritte notwendig, bevor Sie mit dem Spielen beginnen können.
Denken Sie daran, dass Sie die Originaldateien, Heroes III: Complete Edition oder Shadow of Death besitzen müssen, um VCMI verwenden zu können.
Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Locate Heroes III data files</source>
<translation type="unfinished">Heroes III Daten suchen</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="365"/>
<source>If you don&apos;t have a copy of Heroes III installed, you can use our automatic installation tool &apos;vcmibuilder&apos;, which only requires the GoG.com Heroes III installer. Please visit our wiki for detailed instructions.</source>
<translation type="unfinished">Wenn Sie keine Kopie von Heroes III installiert haben, können Sie unser automatisches Installationstool &apos;vcmibuilder&apos; verwenden, um Daten aus dem GoG.com-Installationsprogramm zu extrahieren. Besuchen Sie unser Wiki für detaillierte Anweisungen.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="381"/>
<source>To run VCMI, Heroes III data files need to be present in one of the specified locations. Please copy the Heroes III data to one of these directories.</source>
<translation type="unfinished">VCMI benötigt Heroes III Daten in einem der oben aufgeführten Verzeichnisse. Bitte kopieren Sie die Heroes III-Daten in eines dieser Verzeichnisse.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="416"/>
<source>Alternatively, you can provide the directory where Heroes III data is installed and VCMI will copy the existing data automatically.</source>
<translation type="unfinished">Alternativ können Sie ein Verzeichnis mit installierten Heroes III-Daten auswählen, und VCMI wird die vorhandenen Daten automatisch kopieren.</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/>
<source>Your Heroes III data files have been successfully found.</source> <source>Your Heroes III data files have been successfully found.</source>
<translation>Ihre Heroes III-Datendateien wurden erfolgreich gefunden.</translation> <translation>Ihre Heroes III-Datendateien wurden erfolgreich gefunden.</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="485"/>
<source>The automatic detection of the Heroes III language has failed. Please select the language of your Heroes III manually</source>
<translation type="unfinished">Automatische Erkennung der Sprache fehlgeschlagen. Bitte wählen Sie die Sprache Ihrer Heroes III Kopie</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="759"/>
<source>Install a translation of Heroes III in your preferred language</source>
<translation type="unfinished">Übersetzung von Heroes III für Ihre Sprache installieren</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/>
<source>Optionally, you can install additional mods either now or at any point later:</source> <source>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</source>
<translation>Optional können Sie jetzt oder zu einem beliebigen späteren Zeitpunkt zusätzliche Mods installieren:</translation> <translation type="unfinished">Optional können Sie jetzt oder zu einem beliebigen späteren Zeitpunkt zusätzliche Mods installieren:</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/>
<source>Install support for playing Heroes III in resolutions other than 800x600.</source> <source>Install support for playing Heroes III in resolutions higher than 800x600</source>
<translation>Installieren Sie Unterstützung für das Spielen von Heroes III in anderen Auflösungen als 800x600.</translation> <translation type="unfinished">Installieren Sie Unterstützung für das Spielen von Heroes III in anderen Auflösungen als 800x600.</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="807"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="807"/>
<source>Install compatible version of addon Horn of the Abyss: fan-made Heroes III expansion, ported by VCMI team</source> <source>Install compatible version of &quot;Horn of the Abyss&quot;, a fan-made Heroes III expansion ported by the VCMI team</source>
<translation>Installieren Sie die kompatible Version des Addons Horn of the Abyss: eine von Fans entwickelte Heroes III-Erweiterung, portiert vom VCMI-Team</translation> <translation type="unfinished">Installieren Sie die kompatible Version des Addons Horn of the Abyss: eine von Fans entwickelte Heroes III-Erweiterung, portiert vom VCMI-Team</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="823"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="823"/>
<source>Install compatible version of addon &quot;In The Wake of Gods&quot;: fan-made Heroes III expansion</source> <source>Install compatible version of &quot;In The Wake of Gods&quot;, a fan-made Heroes III expansion</source>
<translation>Installieren Sie die kompatible Version des Addons &quot;In The Wake of Gods&quot;: von Fans entwickelte Heroes III-Erweiterung</translation> <translation type="unfinished">Installieren Sie die kompatible Version des Addons &quot;In The Wake of Gods&quot;: von Fans entwickelte Heroes III-Erweiterung</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="870"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="870"/>
@ -576,11 +633,6 @@
<source>Step %v out of %m</source> <source>Step %v out of %m</source>
<translation>Schritt %v von %m</translation> <translation>Schritt %v von %m</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Choose your language</source>
<translation>Wählen Sie Ihre Sprache</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/>
<source>VCMI on Github</source> <source>VCMI on Github</source>
@ -596,39 +648,12 @@
<source>VCMI on Discord</source> <source>VCMI on Discord</source>
<translation>VCMI auf Discord</translation> <translation>VCMI auf Discord</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="196"/>
<source>Have a question? Found a bug? Want to help? Join us:</source>
<translation>Haben Sie eine Frage? Einen Fehler gefunden? Möchten Sie helfen? Machen Sie mit:</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="205"/>
<source>Thanks for installing VCMI.
There are a few more steps to be done before you can start playing.
Keep in mind that in order to use VCMI you need to own original data files, Heroes III: Complete Edition or Shadow of Death.
Heroes III: HD Edition is currently not supported</source>
<translation>Vielen Dank für die Installation von VCMI.
Es sind noch ein paar Schritte notwendig, bevor Sie mit dem Spielen beginnen können.
Denken Sie daran, dass Sie die Originaldateien, Heroes III: Complete Edition oder Shadow of Death besitzen müssen, um VCMI verwenden zu können.
Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/>
<source>Next</source> <source>Next</source>
<translation>Weiter</translation> <translation>Weiter</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Find Heroes III data files</source>
<translation>Heroes III Daten suchen</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/>
<source>Open help in browser</source> <source>Open help in browser</source>
@ -639,26 +664,11 @@ Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
<source>Search again</source> <source>Search again</source>
<translation>Erneut suchen</translation> <translation>Erneut suchen</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="365"/>
<source>If you don&apos;t have installed Heroes III copy, it is possible to use our automatic installation tool &apos;vcmibuilder&apos; to extract data from GoG.com installer. Visit our wiki for detailed instructions.</source>
<translation>Wenn Sie keine Kopie von Heroes III installiert haben, können Sie unser automatisches Installationstool &apos;vcmibuilder&apos; verwenden, um Daten aus dem GoG.com-Installationsprogramm zu extrahieren. Besuchen Sie unser Wiki für detaillierte Anweisungen.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="381"/>
<source>VCMI requires Heroes III data files in one of the locations listed above. Please copy Heroes III data in one of these directories.</source>
<translation>VCMI benötigt Heroes III Daten in einem der oben aufgeführten Verzeichnisse. Bitte kopieren Sie die Heroes III-Daten in eines dieser Verzeichnisse.</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/>
<source>Heroes III data files</source> <source>Heroes III data files</source>
<translation>Heroes III Dateien</translation> <translation>Heroes III Dateien</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="416"/>
<source>Alternatively, you can select directory with installed Heroes III data and VCMI will copy exisiting data automatically.</source>
<translation>Alternativ können Sie ein Verzeichnis mit installierten Heroes III-Daten auswählen, und VCMI wird die vorhandenen Daten automatisch kopieren.</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/>
<source>Copy existing data</source> <source>Copy existing data</source>
@ -669,11 +679,6 @@ Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
<source>Your Heroes III language has been successfully detected.</source> <source>Your Heroes III language has been successfully detected.</source>
<translation>Ihre Heroes III-Sprache wurde erfolgreich erkannt.</translation> <translation>Ihre Heroes III-Sprache wurde erfolgreich erkannt.</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="485"/>
<source>Automatic detection of language failed. Please select language of your Heroes III copy</source>
<translation>Automatische Erkennung der Sprache fehlgeschlagen. Bitte wählen Sie die Sprache Ihrer Heroes III Kopie</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
<source>Heroes III language</source> <source>Heroes III language</source>
@ -710,11 +715,6 @@ Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
<source>In The Wake of Gods</source> <source>In The Wake of Gods</source>
<translation>In The Wake of Gods</translation> <translation>In The Wake of Gods</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="759"/>
<source>Install translation of Heroes III to your language</source>
<translation>Übersetzung von Heroes III für Ihre Sprache installieren</translation>
</message>
</context> </context>
<context> <context>
<name>ImageViewer</name> <name>ImageViewer</name>
@ -810,11 +810,6 @@ Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
<source>Server</source> <source>Server</source>
<translation>Server</translation> <translation>Server</translation>
</message> </message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>People in lobby</source>
<translation>Personen in der Lobby</translation>
</message>
<message> <message>
<location filename="../lobby/lobby_moc.ui" line="114"/> <location filename="../lobby/lobby_moc.ui" line="114"/>
<source>Lobby chat</source> <source>Lobby chat</source>
@ -850,6 +845,11 @@ Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
<source>New room</source> <source>New room</source>
<translation>Neuer Raum</translation> <translation>Neuer Raum</translation>
</message> </message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>Players in lobby</source>
<translation type="unfinished">Personen in der Lobby</translation>
</message>
<message> <message>
<location filename="../lobby/lobby_moc.ui" line="159"/> <location filename="../lobby/lobby_moc.ui" line="159"/>
<source>Join room</source> <source>Join room</source>
@ -951,8 +951,8 @@ Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
<name>UpdateDialog</name> <name>UpdateDialog</name>
<message> <message>
<location filename="../updatedialog_moc.ui" line="71"/> <location filename="../updatedialog_moc.ui" line="71"/>
<source>You have latest version</source> <source>You have the latest version</source>
<translation>Sie haben die neueste Version</translation> <translation type="unfinished">Sie haben die neueste Version</translation>
</message> </message>
<message> <message>
<location filename="../updatedialog_moc.ui" line="94"/> <location filename="../updatedialog_moc.ui" line="94"/>
@ -961,8 +961,8 @@ Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
</message> </message>
<message> <message>
<location filename="../updatedialog_moc.ui" line="101"/> <location filename="../updatedialog_moc.ui" line="101"/>
<source>Check updates on startup</source> <source>Check for updates on startup</source>
<translation>Nach Aktualisierungen beim Starten prüfen</translation> <translation type="unfinished">Nach Aktualisierungen beim Starten prüfen</translation>
</message> </message>
</context> </context>
</TS> </TS>

View File

@ -6,96 +6,96 @@
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="42"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="42"/>
<source>Translation</source> <source>Translation</source>
<translation type="unfinished"></translation> <translation>Tłumaczenie</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="43"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="43"/>
<source>Town</source> <source>Town</source>
<translation type="unfinished"></translation> <translation>Miasto</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="44"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="44"/>
<source>Test</source> <source>Test</source>
<translation type="unfinished"></translation> <translation>Test</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="45"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="45"/>
<source>Templates</source> <source>Templates</source>
<translation type="unfinished"></translation> <translation>Szablony</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="46"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="46"/>
<source>Spells</source> <source>Spells</source>
<translation type="unfinished"></translation> <translation>Zaklęcia</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="47"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="47"/>
<source>Music</source> <source>Music</source>
<translation type="unfinished"></translation> <translation>Muzyczny</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="48"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="48"/>
<source>Sounds</source> <source>Sounds</source>
<translation type="unfinished"></translation> <translation>Dźwięki</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="49"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="49"/>
<source>Skills</source> <source>Skills</source>
<translation type="unfinished"></translation> <translation>Umiejętności</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="50"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="50"/>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="67"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="67"/>
<source>Other</source> <source>Other</source>
<translation type="unfinished"></translation> <translation>Inne</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="51"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="51"/>
<source>Objects</source> <source>Objects</source>
<translation type="unfinished"></translation> <translation>Obiekty</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="52"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="52"/>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="53"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="53"/>
<source>Mechanics</source> <source>Mechanics</source>
<translation type="unfinished"></translation> <translation>Mechaniki</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="54"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="54"/>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="55"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="55"/>
<source>Interface</source> <source>Interface</source>
<translation type="unfinished"></translation> <translation>Interfejs</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="56"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="56"/>
<source>Heroes</source> <source>Heroes</source>
<translation type="unfinished"></translation> <translation>Bohaterowie</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="57"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="57"/>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="58"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="58"/>
<source>Graphical</source> <source>Graphical</source>
<translation type="unfinished"></translation> <translation>Graficzny</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="59"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="59"/>
<source>Expansion</source> <source>Expansion</source>
<translation type="unfinished"></translation> <translation>Dodatek</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="60"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="60"/>
<source>Creatures</source> <source>Creatures</source>
<translation type="unfinished"></translation> <translation>Stworzenia</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="61"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="61"/>
<source>Artifacts</source> <source>Artifacts</source>
<translation type="unfinished"></translation> <translation>Artefakty</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="62"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="62"/>
<source>AI</source> <source>AI</source>
<translation type="unfinished"></translation> <translation>AI</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="170"/> <location filename="../modManager/cmodlistmodel_moc.cpp" line="170"/>
@ -265,7 +265,7 @@
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/> <location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<source>Languages</source> <source>Languages</source>
<translation type="unfinished"></translation> <translation>Języki</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/> <location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
@ -279,28 +279,28 @@
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/> <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<source>This mod can not be installed or enabled because following dependencies are not present</source> <source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Ten mod nie może zostać zainstalowany lub włączony ponieważ następujące zależności nie zostały spełnione</translation> <translation type="unfinished">Ten mod nie może zostać zainstalowany lub włączony ponieważ następujące zależności nie zostały spełnione</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="320"/> <location filename="../modManager/cmodlistview_moc.cpp" line="320"/>
<source>This mod can not be enabled because following mods are incompatible with this mod</source> <source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Ten mod nie może zostać włączony ponieważ następujące mody z nim niekompatybilne</translation> <translation type="unfinished">Ten mod nie może zostać włączony ponieważ następujące mody z nim niekompatybilne</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/> <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>This mod can not be disabled because it is required to run following mods</source> <source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Ten mod nie może zostać wyłączony ponieważ jest wymagany by do uruchomienia następujących modów</translation> <translation type="unfinished">Ten mod nie może zostać wyłączony ponieważ jest wymagany by do uruchomienia następujących modów</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/> <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<source>This mod can not be uninstalled or updated because it is required to run following mods</source> <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Ten mod nie może zostać odinstalowany lub zaktualizowany ponieważ jest wymagany do uruchomienia następujących modów</translation> <translation type="unfinished">Ten mod nie może zostać odinstalowany lub zaktualizowany ponieważ jest wymagany do uruchomienia następujących modów</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/> <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>This is submod and it can not be installed or uninstalled separately from parent mod</source> <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>To jest moduł składowy innego moda i nie może być zainstalowany lub odinstalowany oddzielnie od moda nadrzędnego</translation> <translation type="unfinished">To jest moduł składowy innego moda i nie może być zainstalowany lub odinstalowany oddzielnie od moda nadrzędnego</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="338"/> <location filename="../modManager/cmodlistview_moc.cpp" line="338"/>
@ -541,30 +541,87 @@
<source>Mods Preset</source> <source>Mods Preset</source>
<translation>Zestaw modów</translation> <translation>Zestaw modów</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Select your language</source>
<translation type="unfinished">Wybierz język</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="196"/>
<source>Have a question? Found a bug? Want to help? Join us!</source>
<translation type="unfinished">Masz pytanie? Znalazłeś błąd? Chcesz pomóc? Dołącz do nas!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="205"/>
<source>Thank you for installing VCMI!
Before you can start playing, there are a few more steps that need to be completed.
Please keep in mind that in order to use VCMI you must own the original data files for Heroes® of Might and Magic® III: Complete or The Shadow of Death.
Heroes® of Might and Magic® III HD is currently not supported!</source>
<translation type="unfinished">Dziękujemy za zainstalowanie VCMI.
Jest jeszcze kilka kroków, które trzeba wykonać żeby móc zagrać.
Miej na uwadze, że aby używać VCMI potrzebne pliki oryginalnej gry zawierające przynajmniej dodatek The Shadow of Death (Złota Edycja / Complete też się kwalifikują)
Heroes III: HD Edition nie jest obecnie wspierane!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Locate Heroes III data files</source>
<translation type="unfinished">Znajdź pliki Heroes III</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="365"/>
<source>If you don&apos;t have a copy of Heroes III installed, you can use our automatic installation tool &apos;vcmibuilder&apos;, which only requires the GoG.com Heroes III installer. Please visit our wiki for detailed instructions.</source>
<translation type="unfinished">Jeśli nie masz zainstalowanej kopii Heroes III istnieje możliwość użycia naszego automatycznego narzędzia instalacyjnego &apos;vcmibuilder&apos; by wyodrębnić dane z instalatora GoG.com. Odwiedź nasze wiki po szczegółowe instrukcje.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="381"/>
<source>To run VCMI, Heroes III data files need to be present in one of the specified locations. Please copy the Heroes III data to one of these directories.</source>
<translation type="unfinished">VCMI wymaga plików Heroes III w jednej z wymienionych wyżej lokalizacji. Proszę, skopiuj pliki Heroes III do jednego z tych katalogów.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="416"/>
<source>Alternatively, you can provide the directory where Heroes III data is installed and VCMI will copy the existing data automatically.</source>
<translation type="unfinished">Możesz też wybrać folder z zainstalowanym Heroes III i VCMI automatycznie skopiuje istniejące dane.</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/>
<source>Your Heroes III data files have been successfully found.</source> <source>Your Heroes III data files have been successfully found.</source>
<translation>Twoje pliki Heroes III zostały pomyślnie znalezione.</translation> <translation>Twoje pliki Heroes III zostały pomyślnie znalezione.</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="485"/>
<source>The automatic detection of the Heroes III language has failed. Please select the language of your Heroes III manually</source>
<translation type="unfinished">Automatyczna detekcja języka nie powiodła się. Proszę wybrać język twojego Heroes III</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="759"/>
<source>Install a translation of Heroes III in your preferred language</source>
<translation type="unfinished">Zainstaluj tłumaczenie Heroes III dla twojego języka</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/>
<source>Optionally, you can install additional mods either now or at any point later:</source> <source>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</source>
<translation>Opcjonalnie możesz zainstalować dodatkowe modyfikacje teraz lub później:</translation> <translation type="unfinished">Opcjonalnie możesz zainstalować dodatkowe modyfikacje teraz lub później</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/>
<source>Install support for playing Heroes III in resolutions other than 800x600.</source> <source>Install support for playing Heroes III in resolutions higher than 800x600</source>
<translation>Zapinstaluj wsparcie dla grania w Heroes III w rozdzielczości innej niż 800x600.</translation> <translation type="unfinished">Zapinstaluj wsparcie dla grania w Heroes III w rozdzielczości innej niż 800x600</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="807"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="807"/>
<source>Install compatible version of addon Horn of the Abyss: fan-made Heroes III expansion, ported by VCMI team</source> <source>Install compatible version of &quot;Horn of the Abyss&quot;, a fan-made Heroes III expansion ported by the VCMI team</source>
<translation>Zainstaluj kompatybilną wersję fanowskiego dodatku Horn of the Abyss przeportowaną przez zespół VCMI</translation> <translation type="unfinished">Zainstaluj kompatybilną wersję fanowskiego dodatku Horn of the Abyss odtworzoprzez zespół VCMI</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="823"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="823"/>
<source>Install compatible version of addon &quot;In The Wake of Gods&quot;: fan-made Heroes III expansion</source> <source>Install compatible version of &quot;In The Wake of Gods&quot;, a fan-made Heroes III expansion</source>
<translation>Zainstaluj kompatybilną wersję fanowskiego dodatku &quot;In The Wake Of Gods&quot;</translation> <translation type="unfinished">Zainstaluj kompatybilną wersję fanowskiego dodatku &quot;In The Wake Of Gods&quot;</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="870"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="870"/>
@ -576,41 +633,20 @@
<source>Step %v out of %m</source> <source>Step %v out of %m</source>
<translation>Krok %v z %m</translation> <translation>Krok %v z %m</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Choose your language</source>
<translation>Wybierz język</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/>
<source>VCMI on Github</source> <source>VCMI on Github</source>
<translation type="unfinished"></translation> <translation>VCMI na Github</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="182"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="182"/>
<source>VCMI on Slack</source> <source>VCMI on Slack</source>
<translation type="unfinished"></translation> <translation>VCMI na Slacku</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="189"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="189"/>
<source>VCMI on Discord</source> <source>VCMI on Discord</source>
<translation type="unfinished"></translation> <translation>VCMI na Discordzie</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="196"/>
<source>Have a question? Found a bug? Want to help? Join us:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="205"/>
<source>Thanks for installing VCMI.
There are a few more steps to be done before you can start playing.
Keep in mind that in order to use VCMI you need to own original data files, Heroes III: Complete Edition or Shadow of Death.
Heroes III: HD Edition is currently not supported</source>
<translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/>
@ -618,11 +654,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Next</source> <source>Next</source>
<translation>Dalej</translation> <translation>Dalej</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Find Heroes III data files</source>
<translation>Znajdź pliki Heroes III</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/>
<source>Open help in browser</source> <source>Open help in browser</source>
@ -633,26 +664,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>Search again</source> <source>Search again</source>
<translation>Szukaj ponownie</translation> <translation>Szukaj ponownie</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="365"/>
<source>If you don&apos;t have installed Heroes III copy, it is possible to use our automatic installation tool &apos;vcmibuilder&apos; to extract data from GoG.com installer. Visit our wiki for detailed instructions.</source>
<translation>Jeśli nie masz zainstalowanej kopii Heroes III istnieje możliwość użycia naszego automatycznego narzędzia instalacyjnego &apos;vcmibuilder&apos; by wyodrębnić dane z instalatora GoG.com. Odwiedź nasze wiki po szczegółowe instrukcje.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="381"/>
<source>VCMI requires Heroes III data files in one of the locations listed above. Please copy Heroes III data in one of these directories.</source>
<translation>VCMI wymaga plików Heroes III w jednej z wymienionych wyżej lokalizacji. Proszę, skopiuj pliki Heroes III do jednego z tych katalogów.</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/>
<source>Heroes III data files</source> <source>Heroes III data files</source>
<translation>Pliki Heroes III</translation> <translation>Pliki Heroes III</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="416"/>
<source>Alternatively, you can select directory with installed Heroes III data and VCMI will copy exisiting data automatically.</source>
<translation>Możesz też wybrać folder z zainstalowanym Heroes III i VCMI automatycznie skopiuje istniejące dane.</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/>
<source>Copy existing data</source> <source>Copy existing data</source>
@ -663,11 +679,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Your Heroes III language has been successfully detected.</source> <source>Your Heroes III language has been successfully detected.</source>
<translation>Twój język Heroes III został pomyślnie wykryty.</translation> <translation>Twój język Heroes III został pomyślnie wykryty.</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="485"/>
<source>Automatic detection of language failed. Please select language of your Heroes III copy</source>
<translation>Automatyczna detekcja języka nie powiodła się. Proszę wybrać język twojego Heroes III</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
<source>Heroes III language</source> <source>Heroes III language</source>
@ -687,27 +698,22 @@ Heroes III: HD Edition is currently not supported</source>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="635"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="635"/>
<source>Horn of the Abyss</source> <source>Horn of the Abyss</source>
<translation type="unfinished"></translation> <translation>Horn of the Abyss</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="657"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="657"/>
<source>Heroes III Translation</source> <source>Heroes III Translation</source>
<translation type="unfinished">Tłumaczenie Heroes III</translation> <translation>Tłumaczenie Heroes III</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="721"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="721"/>
<source>High Definition Support</source> <source>High Definition Support</source>
<translation type="unfinished"></translation> <translation>Wsparcie High Definition</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="743"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="743"/>
<source>In The Wake of Gods</source> <source>In The Wake of Gods</source>
<translation type="unfinished"></translation> <translation>In The Wake of Gods</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="759"/>
<source>Install translation of Heroes III to your language</source>
<translation>Zainstaluj tłumaczenie Heroes III dla twojego języka</translation>
</message> </message>
</context> </context>
<context> <context>
@ -804,11 +810,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Server</source> <source>Server</source>
<translation>Serwer</translation> <translation>Serwer</translation>
</message> </message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>People in lobby</source>
<translation>Ludzie w lobby</translation>
</message>
<message> <message>
<location filename="../lobby/lobby_moc.ui" line="114"/> <location filename="../lobby/lobby_moc.ui" line="114"/>
<source>Lobby chat</source> <source>Lobby chat</source>
@ -844,6 +845,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>New room</source> <source>New room</source>
<translation>Nowy pokój</translation> <translation>Nowy pokój</translation>
</message> </message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>Players in lobby</source>
<translation type="unfinished">Ludzie w lobby</translation>
</message>
<message> <message>
<location filename="../lobby/lobby_moc.ui" line="159"/> <location filename="../lobby/lobby_moc.ui" line="159"/>
<source>Join room</source> <source>Join room</source>
@ -945,8 +951,8 @@ Heroes III: HD Edition is currently not supported</source>
<name>UpdateDialog</name> <name>UpdateDialog</name>
<message> <message>
<location filename="../updatedialog_moc.ui" line="71"/> <location filename="../updatedialog_moc.ui" line="71"/>
<source>You have latest version</source> <source>You have the latest version</source>
<translation>Posiadasz obecnie aktualną wersję</translation> <translation type="unfinished">Posiadasz obecnie aktualną wersję</translation>
</message> </message>
<message> <message>
<location filename="../updatedialog_moc.ui" line="94"/> <location filename="../updatedialog_moc.ui" line="94"/>
@ -955,8 +961,8 @@ Heroes III: HD Edition is currently not supported</source>
</message> </message>
<message> <message>
<location filename="../updatedialog_moc.ui" line="101"/> <location filename="../updatedialog_moc.ui" line="101"/>
<source>Check updates on startup</source> <source>Check for updates on startup</source>
<translation>Sprawdź aktualizacje przy uruchomieniu</translation> <translation type="unfinished">Sprawdź aktualizacje przy uruchomieniu</translation>
</message> </message>
</context> </context>
</TS> </TS>

View File

@ -279,28 +279,28 @@
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/> <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<source>This mod can not be installed or enabled because following dependencies are not present</source> <source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Этот мод не может быть установлен или активирован, так как отсутствуют следующие зависимости</translation> <translation type="unfinished">Этот мод не может быть установлен или активирован, так как отсутствуют следующие зависимости</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="320"/> <location filename="../modManager/cmodlistview_moc.cpp" line="320"/>
<source>This mod can not be enabled because following mods are incompatible with this mod</source> <source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Этот мод не может быть установлен или активирован, так как следующие моды несовместимы с этим</translation> <translation type="unfinished">Этот мод не может быть установлен или активирован, так как следующие моды несовместимы с этим</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/> <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>This mod can not be disabled because it is required to run following mods</source> <source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Этот мод не может быть выключен, так как он является зависимостью для следующих</translation> <translation type="unfinished">Этот мод не может быть выключен, так как он является зависимостью для следующих</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/> <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<source>This mod can not be uninstalled or updated because it is required to run following mods</source> <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Этот мод не может быть удален или обновлен, так как является зависимостью для следующих модов</translation> <translation type="unfinished">Этот мод не может быть удален или обновлен, так как является зависимостью для следующих модов</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/> <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>This is submod and it can not be installed or uninstalled separately from parent mod</source> <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Это вложенный мод, он не может быть установлен или удален отдельно от родительского</translation> <translation type="unfinished">Это вложенный мод, он не может быть установлен или удален отдельно от родительского</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="338"/> <location filename="../modManager/cmodlistview_moc.cpp" line="338"/>
@ -541,29 +541,80 @@
<source>Mods Preset</source> <source>Mods Preset</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Select your language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="196"/>
<source>Have a question? Found a bug? Want to help? Join us!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="205"/>
<source>Thank you for installing VCMI!
Before you can start playing, there are a few more steps that need to be completed.
Please keep in mind that in order to use VCMI you must own the original data files for Heroes® of Might and Magic® III: Complete or The Shadow of Death.
Heroes® of Might and Magic® III HD is currently not supported!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Locate Heroes III data files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="365"/>
<source>If you don&apos;t have a copy of Heroes III installed, you can use our automatic installation tool &apos;vcmibuilder&apos;, which only requires the GoG.com Heroes III installer. Please visit our wiki for detailed instructions.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="381"/>
<source>To run VCMI, Heroes III data files need to be present in one of the specified locations. Please copy the Heroes III data to one of these directories.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="416"/>
<source>Alternatively, you can provide the directory where Heroes III data is installed and VCMI will copy the existing data automatically.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/>
<source>Your Heroes III data files have been successfully found.</source> <source>Your Heroes III data files have been successfully found.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="485"/>
<source>The automatic detection of the Heroes III language has failed. Please select the language of your Heroes III manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="759"/>
<source>Install a translation of Heroes III in your preferred language</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/>
<source>Optionally, you can install additional mods either now or at any point later:</source> <source>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/>
<source>Install support for playing Heroes III in resolutions other than 800x600.</source> <source>Install support for playing Heroes III in resolutions higher than 800x600</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="807"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="807"/>
<source>Install compatible version of addon Horn of the Abyss: fan-made Heroes III expansion, ported by VCMI team</source> <source>Install compatible version of &quot;Horn of the Abyss&quot;, a fan-made Heroes III expansion ported by the VCMI team</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="823"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="823"/>
<source>Install compatible version of addon &quot;In The Wake of Gods&quot;: fan-made Heroes III expansion</source> <source>Install compatible version of &quot;In The Wake of Gods&quot;, a fan-made Heroes III expansion</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@ -576,11 +627,6 @@
<source>Step %v out of %m</source> <source>Step %v out of %m</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Choose your language</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/>
<source>VCMI on Github</source> <source>VCMI on Github</source>
@ -596,33 +642,12 @@
<source>VCMI on Discord</source> <source>VCMI on Discord</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="196"/>
<source>Have a question? Found a bug? Want to help? Join us:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="205"/>
<source>Thanks for installing VCMI.
There are a few more steps to be done before you can start playing.
Keep in mind that in order to use VCMI you need to own original data files, Heroes III: Complete Edition or Shadow of Death.
Heroes III: HD Edition is currently not supported</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/>
<source>Next</source> <source>Next</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Find Heroes III data files</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/>
<source>Open help in browser</source> <source>Open help in browser</source>
@ -633,26 +658,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>Search again</source> <source>Search again</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="365"/>
<source>If you don&apos;t have installed Heroes III copy, it is possible to use our automatic installation tool &apos;vcmibuilder&apos; to extract data from GoG.com installer. Visit our wiki for detailed instructions.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="381"/>
<source>VCMI requires Heroes III data files in one of the locations listed above. Please copy Heroes III data in one of these directories.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/>
<source>Heroes III data files</source> <source>Heroes III data files</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="416"/>
<source>Alternatively, you can select directory with installed Heroes III data and VCMI will copy exisiting data automatically.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/>
<source>Copy existing data</source> <source>Copy existing data</source>
@ -663,11 +673,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Your Heroes III language has been successfully detected.</source> <source>Your Heroes III language has been successfully detected.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="485"/>
<source>Automatic detection of language failed. Please select language of your Heroes III copy</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
<source>Heroes III language</source> <source>Heroes III language</source>
@ -704,11 +709,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>In The Wake of Gods</source> <source>In The Wake of Gods</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="759"/>
<source>Install translation of Heroes III to your language</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ImageViewer</name> <name>ImageViewer</name>
@ -804,11 +804,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Server</source> <source>Server</source>
<translation>Сервер</translation> <translation>Сервер</translation>
</message> </message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>People in lobby</source>
<translation>Люди в лобби</translation>
</message>
<message> <message>
<location filename="../lobby/lobby_moc.ui" line="114"/> <location filename="../lobby/lobby_moc.ui" line="114"/>
<source>Lobby chat</source> <source>Lobby chat</source>
@ -844,6 +839,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>New room</source> <source>New room</source>
<translation>Создать комнату</translation> <translation>Создать комнату</translation>
</message> </message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>Players in lobby</source>
<translation type="unfinished">Люди в лобби</translation>
</message>
<message> <message>
<location filename="../lobby/lobby_moc.ui" line="159"/> <location filename="../lobby/lobby_moc.ui" line="159"/>
<source>Join room</source> <source>Join room</source>
@ -945,8 +945,8 @@ Heroes III: HD Edition is currently not supported</source>
<name>UpdateDialog</name> <name>UpdateDialog</name>
<message> <message>
<location filename="../updatedialog_moc.ui" line="71"/> <location filename="../updatedialog_moc.ui" line="71"/>
<source>You have latest version</source> <source>You have the latest version</source>
<translation>У вас уже последняя версия</translation> <translation type="unfinished">У вас уже последняя версия</translation>
</message> </message>
<message> <message>
<location filename="../updatedialog_moc.ui" line="94"/> <location filename="../updatedialog_moc.ui" line="94"/>
@ -955,8 +955,8 @@ Heroes III: HD Edition is currently not supported</source>
</message> </message>
<message> <message>
<location filename="../updatedialog_moc.ui" line="101"/> <location filename="../updatedialog_moc.ui" line="101"/>
<source>Check updates on startup</source> <source>Check for updates on startup</source>
<translation>Проверять обновления при запуске</translation> <translation type="unfinished">Проверять обновления при запуске</translation>
</message> </message>
</context> </context>
</TS> </TS>

View File

@ -279,28 +279,28 @@
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/> <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<source>This mod can not be installed or enabled because following dependencies are not present</source> <source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Este mod no se puede instalar o habilitar porque no están presentes las siguientes dependencias</translation> <translation type="unfinished">Este mod no se puede instalar o habilitar porque no están presentes las siguientes dependencias</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="320"/> <location filename="../modManager/cmodlistview_moc.cpp" line="320"/>
<source>This mod can not be enabled because following mods are incompatible with this mod</source> <source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Este mod no se puede habilitar porque los siguientes mods son incompatibles con él</translation> <translation type="unfinished">Este mod no se puede habilitar porque los siguientes mods son incompatibles con él</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/> <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>This mod can not be disabled because it is required to run following mods</source> <source>This mod cannot be disabled because it is required by the following mods</source>
<translation>No se puede desactivar este mod porque es necesario para ejecutar los siguientes mods</translation> <translation type="unfinished">No se puede desactivar este mod porque es necesario para ejecutar los siguientes mods</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/> <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<source>This mod can not be uninstalled or updated because it is required to run following mods</source> <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>No se puede desinstalar o actualizar este mod porque es necesario para ejecutar los siguientes mods</translation> <translation type="unfinished">No se puede desinstalar o actualizar este mod porque es necesario para ejecutar los siguientes mods</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/> <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>This is submod and it can not be installed or uninstalled separately from parent mod</source> <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Este es un submod y no se puede instalar o desinstalar por separado del mod principal</translation> <translation type="unfinished">Este es un submod y no se puede instalar o desinstalar por separado del mod principal</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="338"/> <location filename="../modManager/cmodlistview_moc.cpp" line="338"/>
@ -546,11 +546,6 @@
<source>Step %v out of %m</source> <source>Step %v out of %m</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Choose your language</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/>
<source>VCMI on Github</source> <source>VCMI on Github</source>
@ -566,33 +561,12 @@
<source>VCMI on Discord</source> <source>VCMI on Discord</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="196"/>
<source>Have a question? Found a bug? Want to help? Join us:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="205"/>
<source>Thanks for installing VCMI.
There are a few more steps to be done before you can start playing.
Keep in mind that in order to use VCMI you need to own original data files, Heroes III: Complete Edition or Shadow of Death.
Heroes III: HD Edition is currently not supported</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/>
<source>Next</source> <source>Next</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Find Heroes III data files</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/>
<source>Open help in browser</source> <source>Open help in browser</source>
@ -603,26 +577,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>Search again</source> <source>Search again</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="365"/>
<source>If you don&apos;t have installed Heroes III copy, it is possible to use our automatic installation tool &apos;vcmibuilder&apos; to extract data from GoG.com installer. Visit our wiki for detailed instructions.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="381"/>
<source>VCMI requires Heroes III data files in one of the locations listed above. Please copy Heroes III data in one of these directories.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/>
<source>Heroes III data files</source> <source>Heroes III data files</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="416"/>
<source>Alternatively, you can select directory with installed Heroes III data and VCMI will copy exisiting data automatically.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/>
<source>Copy existing data</source> <source>Copy existing data</source>
@ -638,9 +597,50 @@ Heroes III: HD Edition is currently not supported</source>
<source>Your Heroes III language has been successfully detected.</source> <source>Your Heroes III language has been successfully detected.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Select your language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="196"/>
<source>Have a question? Found a bug? Want to help? Join us!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="205"/>
<source>Thank you for installing VCMI!
Before you can start playing, there are a few more steps that need to be completed.
Please keep in mind that in order to use VCMI you must own the original data files for Heroes® of Might and Magic® III: Complete or The Shadow of Death.
Heroes® of Might and Magic® III HD is currently not supported!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Locate Heroes III data files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="365"/>
<source>If you don&apos;t have a copy of Heroes III installed, you can use our automatic installation tool &apos;vcmibuilder&apos;, which only requires the GoG.com Heroes III installer. Please visit our wiki for detailed instructions.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="381"/>
<source>To run VCMI, Heroes III data files need to be present in one of the specified locations. Please copy the Heroes III data to one of these directories.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="416"/>
<source>Alternatively, you can provide the directory where Heroes III data is installed and VCMI will copy the existing data automatically.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="485"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="485"/>
<source>Automatic detection of language failed. Please select language of your Heroes III copy</source> <source>The automatic detection of the Heroes III language has failed. Please select the language of your Heroes III manually</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@ -681,27 +681,27 @@ Heroes III: HD Edition is currently not supported</source>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="759"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="759"/>
<source>Install translation of Heroes III to your language</source> <source>Install a translation of Heroes III in your preferred language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/>
<source>Optionally, you can install additional mods either now or at any point later:</source> <source>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/>
<source>Install support for playing Heroes III in resolutions other than 800x600.</source> <source>Install support for playing Heroes III in resolutions higher than 800x600</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="807"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="807"/>
<source>Install compatible version of addon Horn of the Abyss: fan-made Heroes III expansion, ported by VCMI team</source> <source>Install compatible version of &quot;Horn of the Abyss&quot;, a fan-made Heroes III expansion ported by the VCMI team</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="823"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="823"/>
<source>Install compatible version of addon &quot;In The Wake of Gods&quot;: fan-made Heroes III expansion</source> <source>Install compatible version of &quot;In The Wake of Gods&quot;, a fan-made Heroes III expansion</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@ -804,11 +804,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Server</source> <source>Server</source>
<translation>Servidor</translation> <translation>Servidor</translation>
</message> </message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>People in lobby</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../lobby/lobby_moc.ui" line="114"/> <location filename="../lobby/lobby_moc.ui" line="114"/>
<source>Lobby chat</source> <source>Lobby chat</source>
@ -844,6 +839,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>New room</source> <source>New room</source>
<translation>Nueva sala</translation> <translation>Nueva sala</translation>
</message> </message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>Players in lobby</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location filename="../lobby/lobby_moc.ui" line="159"/> <location filename="../lobby/lobby_moc.ui" line="159"/>
<source>Join room</source> <source>Join room</source>
@ -945,8 +945,8 @@ Heroes III: HD Edition is currently not supported</source>
<name>UpdateDialog</name> <name>UpdateDialog</name>
<message> <message>
<location filename="../updatedialog_moc.ui" line="71"/> <location filename="../updatedialog_moc.ui" line="71"/>
<source>You have latest version</source> <source>You have the latest version</source>
<translation>Tienes la última versión</translation> <translation type="unfinished">Tienes la última versión</translation>
</message> </message>
<message> <message>
<location filename="../updatedialog_moc.ui" line="94"/> <location filename="../updatedialog_moc.ui" line="94"/>
@ -955,8 +955,8 @@ Heroes III: HD Edition is currently not supported</source>
</message> </message>
<message> <message>
<location filename="../updatedialog_moc.ui" line="101"/> <location filename="../updatedialog_moc.ui" line="101"/>
<source>Check updates on startup</source> <source>Check for updates on startup</source>
<translation>Comprobar actualizaciones al iniciar</translation> <translation type="unfinished">Comprobar actualizaciones al iniciar</translation>
</message> </message>
</context> </context>
</TS> </TS>

View File

@ -279,27 +279,27 @@
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/> <location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<source>This mod can not be installed or enabled because following dependencies are not present</source> <source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Цю модифікацію не можна встановити чи активувати, оскільки відсутні наступні залежності</translation> <translation>Цю модифікацію не можна встановити чи активувати, оскільки відсутні наступні залежності</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="320"/> <location filename="../modManager/cmodlistview_moc.cpp" line="320"/>
<source>This mod can not be enabled because following mods are incompatible with this mod</source> <source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Цю модифікацію не можна ввімкнути, оскільки наступні модифікації несумісні з цією модифікацією</translation> <translation>Цю модифікацію не можна ввімкнути, оскільки наступні модифікації несумісні з цією модифікацією</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/> <location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>This mod can not be disabled because it is required to run following mods</source> <source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Цю модифікацію не можна відключити, оскільки вона необхідна для запуску наступних модифікацій</translation> <translation>Цю модифікацію не можна відключити, оскільки вона необхідна для запуску наступних модифікацій</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/> <location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<source>This mod can not be uninstalled or updated because it is required to run following mods</source> <source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Цю модифікацію не можна видалити або оновити, оскільки вона необхідна для запуску наступних модифікацій</translation> <translation>Цю модифікацію не можна видалити або оновити, оскільки вона необхідна для запуску наступних модифікацій</translation>
</message> </message>
<message> <message>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/> <location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>This is submod and it can not be installed or uninstalled separately from parent mod</source> <source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Це вкладена модифікація, і її не можна встановити або видалити окремо від батьківської модифікації</translation> <translation>Це вкладена модифікація, і її не можна встановити або видалити окремо від батьківської модифікації</translation>
</message> </message>
<message> <message>
@ -541,30 +541,87 @@
<source>Mods Preset</source> <source>Mods Preset</source>
<translation>Початкові модифікації</translation> <translation>Початкові модифікації</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Select your language</source>
<translation>Оберіть свою мову</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="196"/>
<source>Have a question? Found a bug? Want to help? Join us!</source>
<translation>Маєте питання? Виявили помилку? Хочете допомогти? Приєднуйтесь до нас!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="205"/>
<source>Thank you for installing VCMI!
Before you can start playing, there are a few more steps that need to be completed.
Please keep in mind that in order to use VCMI you must own the original data files for Heroes® of Might and Magic® III: Complete or The Shadow of Death.
Heroes® of Might and Magic® III HD is currently not supported!</source>
<translation>Дякуємо, що встановили VCMI.
Залишилося зробити ще кілька кроків, перш ніж ви зможете почати грати.
Майте на увазі, що для використання VCMI вам потрібно мати оригінальні файли гри Heroes® of Might and Magic® III: Complete або The Shadow of Death.
Heroes® of Might and Magic® III HD наразі не підтримується!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Locate Heroes III data files</source>
<translation>Пошук файлів даних Heroes III</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="365"/>
<source>If you don&apos;t have a copy of Heroes III installed, you can use our automatic installation tool &apos;vcmibuilder&apos;, which only requires the GoG.com Heroes III installer. Please visit our wiki for detailed instructions.</source>
<translation>Якщо у вас не встановлена копія Heroes III, ви можете скористатися нашим засобом встановлення &quot;vcmibuilder&quot;, яка вимагає лише інсталятора GoG.com. Докладні інструкції можна знайти у нашій вікі.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="381"/>
<source>To run VCMI, Heroes III data files need to be present in one of the specified locations. Please copy the Heroes III data to one of these directories.</source>
<translation>VCMI потребує файлів даних Heroes III в одному з перелічених вище розташувань. Будь ласка, скопіюйте дані Heroes III в одну з цих директорій.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="416"/>
<source>Alternatively, you can provide the directory where Heroes III data is installed and VCMI will copy the existing data automatically.</source>
<translation>Або ж ви можете вибрати директорію зі встановленими даними Heroes III, і VCMI автоматично скопіює ці дані.</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/>
<source>Your Heroes III data files have been successfully found.</source> <source>Your Heroes III data files have been successfully found.</source>
<translation>Файли даних вашої гри Heroes III успішно знайдено.</translation> <translation>Файли даних вашої гри Heroes III успішно знайдено.</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="485"/>
<source>The automatic detection of the Heroes III language has failed. Please select the language of your Heroes III manually</source>
<translation>Не вдалося визначити мову гри. Будь ласка, виберіть мову вашої копії Heroes III</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="759"/>
<source>Install a translation of Heroes III in your preferred language</source>
<translation>Встановити переклад Heroes III на вашу мову</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/>
<source>Optionally, you can install additional mods either now or at any point later:</source> <source>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</source>
<translation>За бажанням ви можете встановити додаткові модифікації зараз або пізніше:</translation> <translation>За бажанням ви можете встановити додаткові модифікації зараз або пізніше, використовуючи VCMI Launcher</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/>
<source>Install support for playing Heroes III in resolutions other than 800x600.</source> <source>Install support for playing Heroes III in resolutions higher than 800x600</source>
<translation>Встановити підтримку для гри в Heroes III у роздільних здатностях, більших за 800x600.</translation> <translation>Встановити підтримку для гри в Heroes III у роздільних здатностях, більших за 800x600</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="807"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="807"/>
<source>Install compatible version of addon Horn of the Abyss: fan-made Heroes III expansion, ported by VCMI team</source> <source>Install compatible version of &quot;Horn of the Abyss&quot;, a fan-made Heroes III expansion ported by the VCMI team</source>
<translation>Встановити сумісну версію доповнення Horn of the Abyss: фанатське доповнення Heroes III, портоване командою VCMI</translation> <translation>Встановити сумісну версію доповнення &quot;Horn of the Abyss&quot;, фанатське доповнення Heroes III, портоване командою VCMI</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="823"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="823"/>
<source>Install compatible version of addon &quot;In The Wake of Gods&quot;: fan-made Heroes III expansion</source> <source>Install compatible version of &quot;In The Wake of Gods&quot;, a fan-made Heroes III expansion</source>
<translation>Встановити сумісну версію доповнення &quot; In The Wake of Gods&quot;: фанатське доповнення до Heroes III</translation> <translation>Встановити сумісну версію доповнення &quot;In The Wake of Gods&quot;, фанатське доповнення до Heroes III</translation>
</message> </message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="870"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="870"/>
@ -576,11 +633,6 @@
<source>Step %v out of %m</source> <source>Step %v out of %m</source>
<translation>Крок %v з %m</translation> <translation>Крок %v з %m</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Choose your language</source>
<translation>Оберіть свою мову</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/>
<source>VCMI on Github</source> <source>VCMI on Github</source>
@ -596,39 +648,12 @@
<source>VCMI on Discord</source> <source>VCMI on Discord</source>
<translation>VCMI на Discord</translation> <translation>VCMI на Discord</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="196"/>
<source>Have a question? Found a bug? Want to help? Join us:</source>
<translation>Маєте питання? Виявили помилку? Хочете допомогти? Приєднуйтесь до нас:</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="205"/>
<source>Thanks for installing VCMI.
There are a few more steps to be done before you can start playing.
Keep in mind that in order to use VCMI you need to own original data files, Heroes III: Complete Edition or Shadow of Death.
Heroes III: HD Edition is currently not supported</source>
<translation>Дякуємо, що встановили VCMI.
Залишилося зробити ще кілька кроків, перш ніж ви зможете почати грати.
Майте на увазі, що для використання VCMI вам потрібно мати оригінальні файли гри Heroes III: Complete Edition або Shadow of Death.
Heroes III: HD Edition наразі не підтримується</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/>
<source>Next</source> <source>Next</source>
<translation>Далі</translation> <translation>Далі</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Find Heroes III data files</source>
<translation>Пошук файлів даних Heroes III</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/>
<source>Open help in browser</source> <source>Open help in browser</source>
@ -639,26 +664,11 @@ Heroes III: HD Edition наразі не підтримується</translation
<source>Search again</source> <source>Search again</source>
<translation>Повторити пошук</translation> <translation>Повторити пошук</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="365"/>
<source>If you don&apos;t have installed Heroes III copy, it is possible to use our automatic installation tool &apos;vcmibuilder&apos; to extract data from GoG.com installer. Visit our wiki for detailed instructions.</source>
<translation>Якщо у вас не встановлена копія Heroes III, ви можете скористатися нашим засобом встановлення &quot;vcmibuilder&quot;, щоб видобути дані з інсталятора GoG.com. Докладні інструкції можна знайти у нашій вікі.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="381"/>
<source>VCMI requires Heroes III data files in one of the locations listed above. Please copy Heroes III data in one of these directories.</source>
<translation>VCMI потребує файлів даних Heroes III в одному з перелічених вище розташувань. Будь ласка, скопіюйте дані Heroes III в одну з цих директорій.</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/>
<source>Heroes III data files</source> <source>Heroes III data files</source>
<translation>Файли даних Heroes III</translation> <translation>Файли даних Heroes III</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="416"/>
<source>Alternatively, you can select directory with installed Heroes III data and VCMI will copy exisiting data automatically.</source>
<translation>Або ж ви можете вибрати директорію зі встановленими даними Heroes III, і VCMI автоматично скопіює ці дані.</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/>
<source>Copy existing data</source> <source>Copy existing data</source>
@ -669,11 +679,6 @@ Heroes III: HD Edition наразі не підтримується</translation
<source>Your Heroes III language has been successfully detected.</source> <source>Your Heroes III language has been successfully detected.</source>
<translation>Мову вашої гри Heroes III успішно визначено.</translation> <translation>Мову вашої гри Heroes III успішно визначено.</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="485"/>
<source>Automatic detection of language failed. Please select language of your Heroes III copy</source>
<translation>Не вдалося визначити мову гри. Будь ласка, виберіть мову вашої копії Heroes III</translation>
</message>
<message> <message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/> <location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
<source>Heroes III language</source> <source>Heroes III language</source>
@ -710,11 +715,6 @@ Heroes III: HD Edition наразі не підтримується</translation
<source>In The Wake of Gods</source> <source>In The Wake of Gods</source>
<translation>In The Wake of Gods</translation> <translation>In The Wake of Gods</translation>
</message> </message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="759"/>
<source>Install translation of Heroes III to your language</source>
<translation>Встановити переклад Heroes III на вашу мову</translation>
</message>
</context> </context>
<context> <context>
<name>ImageViewer</name> <name>ImageViewer</name>
@ -810,11 +810,6 @@ Heroes III: HD Edition наразі не підтримується</translation
<source>Server</source> <source>Server</source>
<translation>Сервер</translation> <translation>Сервер</translation>
</message> </message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>People in lobby</source>
<translation>Гравці у лобі</translation>
</message>
<message> <message>
<location filename="../lobby/lobby_moc.ui" line="114"/> <location filename="../lobby/lobby_moc.ui" line="114"/>
<source>Lobby chat</source> <source>Lobby chat</source>
@ -850,6 +845,11 @@ Heroes III: HD Edition наразі не підтримується</translation
<source>New room</source> <source>New room</source>
<translation>Створити кімнату</translation> <translation>Створити кімнату</translation>
</message> </message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>Players in lobby</source>
<translation>Гравці у лобі</translation>
</message>
<message> <message>
<location filename="../lobby/lobby_moc.ui" line="159"/> <location filename="../lobby/lobby_moc.ui" line="159"/>
<source>Join room</source> <source>Join room</source>
@ -951,7 +951,7 @@ Heroes III: HD Edition наразі не підтримується</translation
<name>UpdateDialog</name> <name>UpdateDialog</name>
<message> <message>
<location filename="../updatedialog_moc.ui" line="71"/> <location filename="../updatedialog_moc.ui" line="71"/>
<source>You have latest version</source> <source>You have the latest version</source>
<translation>У вас встановлена остання версія</translation> <translation>У вас встановлена остання версія</translation>
</message> </message>
<message> <message>
@ -961,7 +961,7 @@ Heroes III: HD Edition наразі не підтримується</translation
</message> </message>
<message> <message>
<location filename="../updatedialog_moc.ui" line="101"/> <location filename="../updatedialog_moc.ui" line="101"/>
<source>Check updates on startup</source> <source>Check for updates on startup</source>
<translation>Перевіряти наявність оновлень при запуску</translation> <translation>Перевіряти наявність оновлень при запуску</translation>
</message> </message>
</context> </context>

View File

@ -68,7 +68,7 @@
<enum>QFrame::Raised</enum> <enum>QFrame::Raised</enum>
</property> </property>
<property name="text"> <property name="text">
<string>You have latest version</string> <string>You have the latest version</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -98,7 +98,7 @@
<item row="3" column="0" colspan="2"> <item row="3" column="0" colspan="2">
<widget class="QCheckBox" name="checkOnStartup"> <widget class="QCheckBox" name="checkOnStartup">
<property name="text"> <property name="text">
<string>Check updates on startup</string> <string>Check for updates on startup</string>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -327,12 +327,12 @@ bool CCreature::isItNativeTerrain(TerrainId terrain) const
TerrainId CCreature::getNativeTerrain() const TerrainId CCreature::getNativeTerrain() const
{ {
const std::string cachingStringNoTerrainPenalty = "type_NO_TERRAIN_PENALTY"; const std::string cachingStringNoTerrainPenalty = "type_NO_TERRAIN_PENALTY_sANY";
static const auto selectorNoTerrainPenalty = Selector::type()(Bonus::NO_TERRAIN_PENALTY); static const auto selectorNoTerrainPenalty = Selector::typeSubtype(Bonus::NO_TERRAIN_PENALTY, static_cast<int>(ETerrainId::ANY_TERRAIN));
//this code is used in the CreatureTerrainLimiter::limit to setup battle bonuses //this code is used in the CreatureTerrainLimiter::limit to setup battle bonuses
//and in the CGHeroInstance::getNativeTerrain() to setup movement bonuses or/and penalties. //and in the CGHeroInstance::getNativeTerrain() to setup movement bonuses or/and penalties.
return hasBonus(selectorNoTerrainPenalty, selectorNoTerrainPenalty) return hasBonus(selectorNoTerrainPenalty, cachingStringNoTerrainPenalty)
? TerrainId(ETerrainId::ANY_TERRAIN) ? TerrainId(ETerrainId::ANY_TERRAIN)
: (*VLC->townh)[faction]->nativeTerrain; : (*VLC->townh)[faction]->nativeTerrain;
} }

View File

@ -199,7 +199,7 @@ class DLL_LINKAGE CCreatureSet : public IArmyDescriptor //seven combined creatur
CCreatureSet &operator=(const CCreatureSet&); CCreatureSet &operator=(const CCreatureSet&);
public: public:
TSlots stacks; //slots[slot_id]->> pair(creature_id,creature_quantity) TSlots stacks; //slots[slot_id]->> pair(creature_id,creature_quantity)
ui8 formation; //0 - wide, 1 - tight ui8 formation = 0; //0 - wide, 1 - tight
CCreatureSet() = default; //Should be here to avoid compile errors CCreatureSet() = default; //Should be here to avoid compile errors
virtual ~CCreatureSet(); virtual ~CCreatureSet();

View File

@ -1761,33 +1761,37 @@ void CGameState::initTowns()
} }
} }
//#1444 - remove entries that don't have buildings defined (like some unused extra town hall buildings)
vstd::erase_if(vti->builtBuildings, [vti](const BuildingID & bid)
{
return !vti->town->buildings.count(bid) || !vti->town->buildings.at(bid);
});
if (vstd::contains(vti->builtBuildings, BuildingID::SHIPYARD) && vti->shipyardStatus()==IBoatGenerator::TILE_BLOCKED)
vti->builtBuildings.erase(BuildingID::SHIPYARD);//if we have harbor without water - erase it (this is H3 behaviour)
//init hordes //init hordes
for (int i = 0; i<GameConstants::CREATURES_PER_TOWN; i++) for (int i = 0; i < GameConstants::CREATURES_PER_TOWN; i++)
if (vstd::contains(vti->builtBuildings,(-31-i))) //if we have horde for this level {
if (vstd::contains(vti->builtBuildings, (BuildingID::HORDE_PLACEHOLDER1 - i))) //if we have horde for this level
{ {
vti->builtBuildings.erase(BuildingID(-31-i));//remove old ID vti->builtBuildings.erase(BuildingID(BuildingID::HORDE_PLACEHOLDER1 - i));//remove old ID
if (vti->town->hordeLvl.at(0) == i)//if town first horde is this one if (vti->town->hordeLvl.at(0) == i)//if town first horde is this one
{ {
vti->builtBuildings.insert(BuildingID::HORDE_1);//add it vti->builtBuildings.insert(BuildingID::HORDE_1);//add it
if (vstd::contains(vti->builtBuildings,(BuildingID::DWELL_UP_FIRST+i)))//if we have upgraded dwelling as well //if we have upgraded dwelling as well
if (vstd::contains(vti->builtBuildings, (BuildingID::DWELL_UP_FIRST + i)))
vti->builtBuildings.insert(BuildingID::HORDE_1_UPGR);//add it as well vti->builtBuildings.insert(BuildingID::HORDE_1_UPGR);//add it as well
} }
if (vti->town->hordeLvl.at(1) == i)//if town second horde is this one if (vti->town->hordeLvl.at(1) == i)//if town second horde is this one
{ {
vti->builtBuildings.insert(BuildingID::HORDE_2); vti->builtBuildings.insert(BuildingID::HORDE_2);
if (vstd::contains(vti->builtBuildings,(BuildingID::DWELL_UP_FIRST+i))) if (vstd::contains(vti->builtBuildings, (BuildingID::DWELL_UP_FIRST + i)))
vti->builtBuildings.insert(BuildingID::HORDE_2_UPGR); vti->builtBuildings.insert(BuildingID::HORDE_2_UPGR);
} }
} }
}
//#1444 - remove entries that don't have buildings defined (like some unused extra town hall buildings)
//But DO NOT remove horde placeholders before they are replaced
vstd::erase_if(vti->builtBuildings, [vti](const BuildingID & bid)
{
return !vti->town->buildings.count(bid) || !vti->town->buildings.at(bid);
});
if (vstd::contains(vti->builtBuildings, BuildingID::SHIPYARD) && vti->shipyardStatus()==IBoatGenerator::TILE_BLOCKED)
vti->builtBuildings.erase(BuildingID::SHIPYARD);//if we have harbor without water - erase it (this is H3 behaviour)
//Early check for #1444-like problems //Early check for #1444-like problems
for(const auto & building : vti->builtBuildings) for(const auto & building : vti->builtBuildings)

View File

@ -485,15 +485,6 @@ void CTownHandler::addBonusesForVanilaBuilding(CBuilding * building) const
{ {
b = createBonus(building, Bonus::MORALE, +1); b = createBonus(building, Bonus::MORALE, +1);
} }
else if(building->bid == BuildingID::GRAIL
&& building->town->faction != nullptr
&& boost::algorithm::ends_with(building->town->faction->getJsonKey(), ":cove"))
{
static TPropagatorPtr allCreaturesPropagator(new CPropagatorNodeType(CBonusSystemNode::ENodeTypes::ALL_CREATURES));
static auto factionLimiter = std::make_shared<CreatureFactionLimiter>(building->town->faction->getIndex());
b = createBonus(building, Bonus::NO_TERRAIN_PENALTY, 0, allCreaturesPropagator);
b->addLimiter(factionLimiter);
}
} }
else else
{ {

View File

@ -473,7 +473,16 @@ public:
enum EBuildingID enum EBuildingID
{ {
DEFAULT = -50, DEFAULT = -50,
HORDE_PLACEHOLDER7 = -36,
HORDE_PLACEHOLDER6 = -35,
HORDE_PLACEHOLDER5 = -34,
HORDE_PLACEHOLDER4 = -33,
HORDE_PLACEHOLDER3 = -32,
HORDE_PLACEHOLDER2 = -31,
HORDE_PLACEHOLDER1 = -30,
HORDE_BUILDING_CONVERTER = -29, //-1 => -30
NONE = -1, NONE = -1,
FIRST_REGULAR_ID = 0,
MAGES_GUILD_1 = 0, MAGES_GUILD_2, MAGES_GUILD_3, MAGES_GUILD_4, MAGES_GUILD_5, MAGES_GUILD_1 = 0, MAGES_GUILD_2, MAGES_GUILD_3, MAGES_GUILD_4, MAGES_GUILD_5,
TAVERN, SHIPYARD, FORT, CITADEL, CASTLE, TAVERN, SHIPYARD, FORT, CITADEL, CASTLE,
VILLAGE_HALL, TOWN_HALL, CITY_HALL, CAPITOL, MARKETPLACE, VILLAGE_HALL, TOWN_HALL, CITY_HALL, CAPITOL, MARKETPLACE,

View File

@ -2086,7 +2086,7 @@ CGTownInstance * CMapLoaderH3M::readTown(int castleID, const int3 & position)
std::set<BuildingID> CMapLoaderH3M::convertBuildings(const std::set<BuildingID> & h3m, int castleID, bool addAuxiliary) const std::set<BuildingID> CMapLoaderH3M::convertBuildings(const std::set<BuildingID> & h3m, int castleID, bool addAuxiliary) const
{ {
std::map<int, BuildingID> mapa; std::map<int, BuildingID> helperMap;
std::set<BuildingID> ret; std::set<BuildingID> ret;
// Note: this file is parsed many times. // Note: this file is parsed many times.
@ -2098,23 +2098,24 @@ std::set<BuildingID> CMapLoaderH3M::convertBuildings(const std::set<BuildingID>
if (town == castleID || town == -1) if (town == castleID || town == -1)
{ {
mapa[static_cast<int>(entry["h3"].Float())] = BuildingID(static_cast<si32>(entry["vcmi"].Float())); helperMap[static_cast<int>(entry["h3"].Float())] = BuildingID(static_cast<si32>(entry["vcmi"].Float()));
} }
} }
for(const auto & elem : h3m) for(const auto & elem : h3m)
{ {
if(mapa[elem] >= 0) if(helperMap[elem] >= BuildingID::FIRST_REGULAR_ID)
{ {
ret.insert(mapa[elem]); ret.insert(helperMap[elem]);
} }
// horde buildings // horde buildings use indexes from -1 to -5, where creature level is 1 to 5
else if(mapa[elem] >= (-GameConstants::CREATURES_PER_TOWN)) else if(helperMap[elem] >= (-GameConstants::CREATURES_PER_TOWN))
{ {
int level = (mapa[elem]); int level = (helperMap[elem]);
//(-30)..(-36) - horde buildings (for game loading only), don't see other way to handle hordes in random towns //(-30)..(-36) - horde buildings (for game loading only)
ret.insert(BuildingID(level - 30)); //They will be replaced in CGameState::initTowns()
ret.insert(BuildingID(level + BuildingID::HORDE_BUILDING_CONVERTER)); //-1 => -30
} }
else else
{ {

View File

@ -1085,7 +1085,7 @@ void CGameHandler::makeAttack(const CStack * attacker, const CStack * defender,
auto spell = bat.spellID.toSpell(); auto spell = bat.spellID.toSpell();
battle::Target target; battle::Target target;
target.emplace_back(defender); target.emplace_back(defender, targetHex);
spells::BattleCast event(gs->curB, attacker, spells::Mode::SPELL_LIKE_ATTACK, spell); spells::BattleCast event(gs->curB, attacker, spells::Mode::SPELL_LIKE_ATTACK, spell);
event.setSpellLevel(bonus->val); event.setSpellLevel(bonus->val);
@ -2418,6 +2418,9 @@ bool CGameHandler::moveHero(ObjectInstanceID hid, int3 dst, ui8 teleporting, boo
if (leavingTile == LEAVING_TILE) if (leavingTile == LEAVING_TILE)
leaveTile(); leaveTile();
if (isInTheMap(guardPos))
tmh.attackedFrom = boost::make_optional(guardPos);
tmh.result = result; tmh.result = result;
sendAndApply(&tmh); sendAndApply(&tmh);
@ -2425,10 +2428,8 @@ bool CGameHandler::moveHero(ObjectInstanceID hid, int3 dst, ui8 teleporting, boo
{ // Hero should be always able to visit any object he staying on even if there guards around { // Hero should be always able to visit any object he staying on even if there guards around
visitObjectOnTile(t, h); visitObjectOnTile(t, h);
} }
else if (lookForGuards == CHECK_FOR_GUARDS && this->isInTheMap(guardPos)) else if (lookForGuards == CHECK_FOR_GUARDS && isInTheMap(guardPos))
{ {
tmh.attackedFrom = boost::make_optional(guardPos);
const TerrainTile &guardTile = *gs->getTile(guardPos); const TerrainTile &guardTile = *gs->getTile(guardPos);
objectVisited(guardTile.visitableObjects.back(), h); objectVisited(guardTile.visitableObjects.back(), h);
@ -4968,8 +4969,12 @@ bool CGameHandler::makeBattleAction(BattleAction &ba)
void CGameHandler::playerMessage(PlayerColor player, const std::string &message, ObjectInstanceID currObj) void CGameHandler::playerMessage(PlayerColor player, const std::string &message, ObjectInstanceID currObj)
{ {
bool cheated = false; bool cheated = false;
PlayerMessageClient temp_message(player, message);
sendAndApply(&temp_message); if(!getPlayerSettings(player)->isControlledByAI())
{
PlayerMessageClient temp_message(player, message);
sendAndApply(&temp_message);
}
std::vector<std::string> words; std::vector<std::string> words;
boost::split(words, message, boost::is_any_of(" ")); boost::split(words, message, boost::is_any_of(" "));
@ -5023,7 +5028,7 @@ void CGameHandler::playerMessage(PlayerColor player, const std::string &message,
} }
int obj = 0; int obj = 0;
if (words.size() == 2 && words[0] != "vcmiexp") if (words.size() == 2 && words[0] != "vcmiexp" && words[0] != "vcmiolorin")
{ {
obj = std::atoi(words[1].c_str()); obj = std::atoi(words[1].c_str());
if (obj) if (obj)
@ -5035,7 +5040,7 @@ void CGameHandler::playerMessage(PlayerColor player, const std::string &message,
if (!town && hero) if (!town && hero)
town = hero->visitedTown; town = hero->visitedTown;
if((words[0] == "vcmiarmy" || words[0] == "vcmiexp") && words.size() > 1) if(words.size() > 1 && (words[0] == "vcmiarmy" || words[0] == "vcminissi" || words[0] == "vcmiexp" || words[0] == "vcmiolorin"))
{ {
std::string cheatCodeWithOneParameter = std::string(words[0]) + " " + words[1]; std::string cheatCodeWithOneParameter = std::string(words[0]) + " " + words[1];
handleCheatCode(cheatCodeWithOneParameter, player, hero, town, cheated); handleCheatCode(cheatCodeWithOneParameter, player, hero, town, cheated);
@ -5698,7 +5703,7 @@ void CGameHandler::objectVisitEnded(const CObjectVisitQuery & query)
ObjectVisitEnded::defaultExecute(serverEventBus.get(), endVisit, query.players.front(), query.visitingHero->id); ObjectVisitEnded::defaultExecute(serverEventBus.get(), endVisit, query.players.front(), query.visitingHero->id);
} }
bool CGameHandler::buildBoat(ObjectInstanceID objid) bool CGameHandler::buildBoat(ObjectInstanceID objid, PlayerColor playerID)
{ {
const IShipyard *obj = IShipyard::castFrom(getObj(objid)); const IShipyard *obj = IShipyard::castFrom(getObj(objid));
@ -5714,7 +5719,6 @@ bool CGameHandler::buildBoat(ObjectInstanceID objid)
return false; return false;
} }
const PlayerColor playerID = obj->o->tempOwner;
TResources boatCost; TResources boatCost;
obj->getBoatCost(boatCost); obj->getBoatCost(boatCost);
TResources aviable = getPlayerState(playerID)->resources; TResources aviable = getPlayerState(playerID)->resources;
@ -7004,7 +7008,7 @@ void CGameHandler::handleCheatCode(std::string & cheat, PlayerColor player, cons
if (!hero->hasStackAtSlot(SlotID(i))) if (!hero->hasStackAtSlot(SlotID(i)))
insertNewStack(StackLocation(hero, SlotID(i)), creature, creatures[cheat].second); insertNewStack(StackLocation(hero, SlotID(i)), creature, creatures[cheat].second);
} }
else if (boost::starts_with(cheat, "vcmiarmy")) else if (boost::starts_with(cheat, "vcmiarmy") || boost::starts_with(cheat, "vcminissi"))
{ {
cheated = true; cheated = true;
if (!hero) return; if (!hero) return;
@ -7055,7 +7059,7 @@ void CGameHandler::handleCheatCode(std::string & cheat, PlayerColor player, cons
///selected hero gains a new level ///selected hero gains a new level
changePrimSkill(hero, PrimarySkill::EXPERIENCE, VLC->heroh->reqExp(hero->level + 1) - VLC->heroh->reqExp(hero->level)); changePrimSkill(hero, PrimarySkill::EXPERIENCE, VLC->heroh->reqExp(hero->level + 1) - VLC->heroh->reqExp(hero->level));
} }
else if (boost::starts_with(cheat, "vcmiexp")) else if (boost::starts_with(cheat, "vcmiexp") || boost::starts_with(cheat, "vcmiolorin"))
{ {
cheated = true; cheated = true;
if (!hero) return; if (!hero) return;

View File

@ -238,7 +238,7 @@ public:
void removeObstacle(const CObstacleInstance &obstacle); void removeObstacle(const CObstacleInstance &obstacle);
bool queryReply( QueryID qid, const JsonNode & answer, PlayerColor player ); bool queryReply( QueryID qid, const JsonNode & answer, PlayerColor player );
bool hireHero( const CGObjectInstance *obj, ui8 hid, PlayerColor player ); bool hireHero( const CGObjectInstance *obj, ui8 hid, PlayerColor player );
bool buildBoat( ObjectInstanceID objid ); bool buildBoat( ObjectInstanceID objid, PlayerColor player );
bool setFormation( ObjectInstanceID hid, ui8 formation ); bool setFormation( ObjectInstanceID hid, ui8 formation );
bool tradeResources(const IMarket *market, ui32 val, PlayerColor player, ui32 id1, ui32 id2); bool tradeResources(const IMarket *market, ui32 val, PlayerColor player, ui32 id1, ui32 id2);
bool sacrificeCreatures(const IMarket * market, const CGHeroInstance * hero, const std::vector<SlotID> & slot, const std::vector<ui32> & count); bool sacrificeCreatures(const IMarket * market, const CGHeroInstance * hero, const std::vector<SlotID> & slot, const std::vector<ui32> & count);

View File

@ -253,7 +253,7 @@ void ApplyGhNetPackVisitor::visitBuildBoat(BuildBoat & pack)
if(gh.getPlayerRelations(gh.getOwner(pack.objid), gh.getPlayerAt(pack.c)) == PlayerRelations::ENEMIES) if(gh.getPlayerRelations(gh.getOwner(pack.objid), gh.getPlayerAt(pack.c)) == PlayerRelations::ENEMIES)
gh.throwAndComplain(&pack, "Can't build boat at enemy shipyard"); gh.throwAndComplain(&pack, "Can't build boat at enemy shipyard");
result = gh.buildBoat(pack.objid); result = gh.buildBoat(pack.objid, gh.getPlayerAt(pack.c));
} }
void ApplyGhNetPackVisitor::visitQueryReply(QueryReply & pack) void ApplyGhNetPackVisitor::visitQueryReply(QueryReply & pack)

View File

@ -156,7 +156,10 @@ fi
if [[ -z "$dest_dir" ]] if [[ -z "$dest_dir" ]]
then then
if [[ -z "$XDG_DATA_HOME" ]] if [[ "$(uname)" == Darwin ]]
then
dest_dir="$HOME/Library/Application Support/vcmi"
elif [[ -z "$XDG_DATA_HOME" ]]
then then
dest_dir="$HOME/.local/share/vcmi" dest_dir="$HOME/.local/share/vcmi"
else else