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;
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);
newHealthOfStack[unitId] = localUnit->getAvailableHealth();
@ -620,9 +629,8 @@ void CBattleAI::attemptCastingSpell()
{
int64_t totalGain = 0;
for(auto unit : all)
for(auto unitId : unitIds)
{
auto unitId = unit->unitId();
auto localUnit = state.battleGetUnitByID(unitId);
auto newValue = getValOr(newValueOfStack, unitId, 0);

View File

@ -70,7 +70,7 @@ void DangerHitMapAnalyzer::updateHitMap()
auto turn = path.turn();
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))
{
node.maximumDanger.danger = tileDanger;

View File

@ -30,7 +30,7 @@ namespace NKAI
extern boost::thread_specific_ptr<CCallback> cb;
extern boost::thread_specific_ptr<AIGateway> ai;
const double TREAT_IGNORE_RATIO = 0.5;
const float TREAT_IGNORE_RATIO = 2;
using namespace Goals;
@ -133,7 +133,7 @@ void DefenceBehavior::evaluateDefence(Goals::TGoalVec & tasks, const CGTownInsta
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;
if(treatIsWeak && !needToSaveGrowth)
@ -244,7 +244,7 @@ void DefenceBehavior::evaluateDefence(Goals::TGoalVec & tasks, const CGTownInsta
continue;
}
if(path.targetHero == town->visitingHero && path.exchangeCount == 1)
if(path.targetHero == town->visitingHero.get() && path.exchangeCount == 1)
{
#if NKAI_TRACE_LEVEL >= 1
logAi->trace("Put %s to garrison of town %s",
@ -265,6 +265,24 @@ void DefenceBehavior::evaluateDefence(Goals::TGoalVec & tasks, const CGTownInsta
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))
{

View File

@ -65,6 +65,7 @@ Goals::TGoalVec GatherArmyBehavior::deliverArmyToHero(const CGHeroInstance * her
{
Goals::TGoalVec tasks;
const int3 pos = hero->visitablePos();
auto targetHeroScore = ai->nullkiller->heroManager->evaluateHero(hero);
#if NKAI_TRACE_LEVEL >= 1
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();
// avoid transferring very small amount of army
if(armyValue < 0.1f)
if(armyValue < 0.1f && armyValue < 20000)
{
#if NKAI_TRACE_LEVEL >= 2
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.
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(heroRole == HeroRole::MAIN)
if(score >= targetHeroScore)
{
hasOtherMainInPath = true;
break;
}
}
}
if(hasOtherMainInPath)
{
if(hasOtherMainInPath)
{
#if NKAI_TRACE_LEVEL >= 2
logAi->trace("Army value is too large.");
logAi->trace("Army value is too large.");
#endif
continue;
}
continue;
}
auto danger = path.getTotalDanger();
@ -180,7 +183,17 @@ Goals::TGoalVec GatherArmyBehavior::deliverArmyToHero(const CGHeroInstance * her
#if NKAI_TRACE_LEVEL >= 2
logAi->trace("Action is blocked. Considering decomposition.");
#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));
@ -261,7 +274,7 @@ Goals::TGoalVec GatherArmyBehavior::upgradeArmy(const CGTownInstance * upgrader)
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
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;
}
case Obj::PANDORAS_BOX:
return 10000; //Who knows what awaits us there
case Obj::ARTIFACT:
case Obj::RESOURCE:
@ -148,6 +146,7 @@ ui64 FuzzyHelper::evaluateDanger(const CGObjectInstance * obj)
case Obj::CREATURE_GENERATOR4:
case Obj::MINE:
case Obj::ABANDONED_MINE:
case Obj::PANDORAS_BOX:
{
const CArmedInstance * a = dynamic_cast<const CArmedInstance *>(obj);
return a->getArmyStrength();

View File

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

View File

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

View File

@ -53,13 +53,15 @@ namespace AIPathfinding
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);
}
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))
shipyards.push_back(shipyard);

View File

@ -863,7 +863,7 @@ void VCAI::mainLoop()
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
goalsToAdd.clear();

View File

@ -22,6 +22,7 @@
* Implemented cut/copy/paste operations
* Implemented lasso brush for terrain editing
* Toolbar actions now have names
* Added basic victory and lose conditions
### LAUNCHER:
* Added initial Welcome/Setup screen for new players
@ -31,6 +32,7 @@
* Mods tab layout has been adjusted based on feedback from players
* Settings tab layout has been redesigned to support longer texts
* Added button to start map editor directly from Launcher
* Simplified game starting flow from online lobby
### AI PLAYER:
* 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
* 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
* Implemented extended options for random map tab: generate G+U size, select RMG template, manage teams and roads
### HERO SCREEN
* Fixed cases of incorrect artifact slot highlighting
@ -109,6 +112,7 @@
* Hovering over hero now correctly shows hero cursor
* 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
* New battle UI extension allows control over creatures' special abilities
### SPELLS:
* Hero casting animation will play before spell effect

View File

@ -144,8 +144,6 @@
"core.bonus.BLOCKS_RANGED_RETALIATION.description": "敌人无法对射击进行反击",
"core.bonus.CATAPULT.name": "攻城",
"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.description": "减少英雄的施法消耗",
"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.CATAPULT.name": "Catapult",
"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.description": "Reduces the spellcasting cost for the hero by ${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.CATAPULT.name": "Katapult",
"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.description": "Reduziert die Zauberkosten für den Helden",
"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.animationsSpeed5.help": "Ustawia szybkość animacji na bardzo szybką",
"vcmi.battleOptions.animationsSpeed6.help": "Ustawia szybkość animacji na błyskawiczną",
"vcmi.battleOptions.skipBattleIntroMusic.hover": "Pomiń muzykę startową",
"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.hover": "Pomiń czekanie startowe",
"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.meleeKills" : "Atakuj %CREATURE (%DAMAGE, %KILLS).",
@ -92,8 +92,8 @@
"vcmi.battleWindow.damageEstimation.shots.1" : "pozostał %d strzał",
"vcmi.battleWindow.damageEstimation.damage" : "obrażenia: %d",
"vcmi.battleWindow.damageEstimation.damage.1" : "obrażenia: %d",
"vcmi.battleWindow.damageEstimation.kills" : "%d zginie",
"vcmi.battleWindow.damageEstimation.kills.1" : "%d zginie",
"vcmi.battleWindow.damageEstimation.kills" : "zginie: %d",
"vcmi.battleWindow.damageEstimation.kills.1" : "zginie: %d",
"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).",
@ -141,6 +141,8 @@
"vcmi.randomMapTab.widgets.teamAlignmentsLabel" : "Sojusze",
"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.description": "Atakuje podwójnie",
"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.CATAPULT.name": "Katapulta",
"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.description": "Zmniejsza koszt czaru bohatera",
"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.CATAPULT.name": "Стенобитное орудие",
"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.description": "Снижаемость стоимость заклинаний для героя",
"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.CATAPULT.name": "Catapulta",
"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.description": "Reduce el coste del conjuro para el héroe",
"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.CATAPULT.name" : "Катапульта",
"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.description" : "Зменшує вартість закляття для героя",
"core.bonus.CHANGES_SPELL_COST_FOR_ENEMY.name" : "Демпфер магії (${val})",

View File

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

View File

@ -113,6 +113,7 @@ static std::string formatRangedAttack(const DamageEstimation & estimation, const
BattleActionsController::BattleActionsController(BattleInterface & owner):
owner(owner),
selectedStack(nullptr),
heroSpellToCast(nullptr)
{}
@ -177,7 +178,7 @@ void BattleActionsController::enterCreatureCastingMode()
if (isCastingPossible)
{
owner.giveCommand(EActionType::MONSTER_SPELL, BattleHex::INVALID, spell->getId());
owner.stacksController->setSelectedStack(nullptr);
selectedStack = nullptr;
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);
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:
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:
{
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
return targetStack && targetStack != owner.stacksController->getSelectedStack() && targetStackOwned && targetStack->alive();
return targetStack && targetStack != selectedStack && targetStackOwned && targetStack->alive();
case PossiblePlayerBattleAction::OBSTACLE:
case PossiblePlayerBattleAction::FREE_LOCATION:
@ -697,14 +698,14 @@ void BattleActionsController::actionRealize(PossiblePlayerBattleAction action, B
{
heroSpellToCast->aimToHex(targetHex);
possibleActions.push_back({PossiblePlayerBattleAction::SACRIFICE, action.spell()});
owner.stacksController->setSelectedStack(targetStack);
selectedStack = targetStack;
return;
}
if (action.spell() == SpellID::TELEPORT)
{
heroSpellToCast->aimToUnit(targetStack);
possibleActions.push_back({PossiblePlayerBattleAction::TELEPORT, action.spell()});
owner.stacksController->setSelectedStack(targetStack);
selectedStack = targetStack;
return;
}
}
@ -735,7 +736,7 @@ void BattleActionsController::actionRealize(PossiblePlayerBattleAction action, B
owner.curInt->cb->battleMakeAction(heroSpellToCast.get());
endCastingSpell();
}
owner.stacksController->setSelectedStack(nullptr);
selectedStack = nullptr;
return;
}
}

View File

@ -47,6 +47,9 @@ class BattleActionsController
/// if true, active stack could possibly cast some target spell
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 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

View File

@ -74,7 +74,6 @@ BattleStacksController::BattleStacksController(BattleInterface & owner):
owner(owner),
activeStack(nullptr),
stackToActivate(nullptr),
selectedStack(nullptr),
animIDhelper(0)
{
//preparing graphics for displaying amounts of creatures
@ -734,16 +733,6 @@ void BattleStacksController::activateStack()
return;
}
void BattleStacksController::setSelectedStack(const CStack *stack)
{
selectedStack = stack;
}
const CStack* BattleStacksController::getSelectedStack() const
{
return selectedStack;
}
const CStack* BattleStacksController::getActiveStack() const
{
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
const CStack *stackToActivate;
/// stack that was selected for multi-target spells - Teleport / Sacrifice
const CStack *selectedStack;
/// for giving IDs for animations
ui32 animIDhelper;
@ -126,7 +123,6 @@ public:
void activateStack(); //copy stackToActivate to activeStack to enable controls of the stack
void setActiveStack(const CStack *stack);
void setSelectedStack(const CStack *stack);
void showAliveStack(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
const CStack* getActiveStack() const;
const CStack* getSelectedStack() const;
const std::vector<uint32_t> getHoveredStacksUnitIds() const;
void update();

View File

@ -18,6 +18,7 @@
#include "../CPlayerInterface.h"
#include "../adventureMap/CAdvMapInt.h"
#include "../gui/CGuiHandler.h"
#include "../../lib/CConfigHandler.h"
#include "../../lib/CPathfinder.h"
@ -206,6 +207,9 @@ bool MapViewController::isEventVisible(const CGObjectInstance * obj)
if(!LOCPLINT->makingTurn && settings["adventure"]["enemyMoveTime"].Float() < 0)
return false; // enemy move speed set to "hidden/none"
if(GH.topInt() != adventureInt)
return false;
if(obj->isVisitable())
return context->isVisible(obj->visitablePos());
else
@ -220,6 +224,9 @@ bool MapViewController::isEventVisible(const CGHeroInstance * obj, const int3 &
if(!LOCPLINT->makingTurn && settings["adventure"]["enemyMoveTime"].Float() < 0)
return false; // enemy move speed set to "hidden/none"
if(GH.topInt() != adventureInt)
return false;
if(context->isVisible(obj->convertToVisitablePos(from)))
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.slotID = ArtifactPosition::TRANSITION_POS;
@ -741,7 +740,9 @@ void CArtifactsOfHero::artifactMoved(const ArtifactLocation & src, const Artifac
}
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);
recreateIcons();
activate();
redraw();
}
void CCastleInterface::removeBuilding(BuildingID bid)
@ -1267,6 +1268,7 @@ void CCastleInterface::removeBuilding(BuildingID bid)
builds->removeBuilding(bid);
recreateIcons();
activate();
redraw();
}
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 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 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 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 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

View File

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

View File

@ -451,7 +451,7 @@
"repositoryURL" : {
"type" : "array",
"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" : {
"type" : "string"

View File

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

View File

@ -143,7 +143,7 @@
</font>
</property>
<property name="text">
<string>Choose your language</string>
<string>Select your language</string>
</property>
</widget>
</item>
@ -193,7 +193,7 @@
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="labelLanguageSocial">
<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>
</widget>
</item>
@ -202,13 +202,13 @@
<item row="1" column="1" colspan="2">
<widget class="QLabel" name="labelLanguageWelcome">
<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 name="wordWrap">
<bool>true</bool>
@ -273,7 +273,7 @@ Heroes III: HD Edition is currently not supported</string>
</font>
</property>
<property name="text">
<string>Find Heroes III data files</string>
<string>Locate Heroes III data files</string>
</property>
</widget>
</item>
@ -362,7 +362,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy>
</property>
<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 name="wordWrap">
<bool>true</bool>
@ -378,7 +378,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy>
</property>
<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 name="wordWrap">
<bool>true</bool>
@ -413,7 +413,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy>
</property>
<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 name="wordWrap">
<bool>true</bool>
@ -482,7 +482,7 @@ Heroes III: HD Edition is currently not supported</string>
<item row="2" column="0" colspan="2">
<widget class="QLabel" name="labelDataFailure">
<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 name="wordWrap">
<bool>true</bool>
@ -756,7 +756,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy>
</property>
<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 name="wordWrap">
<bool>true</bool>
@ -772,7 +772,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy>
</property>
<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 name="wordWrap">
<bool>true</bool>
@ -788,7 +788,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy>
</property>
<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 name="wordWrap">
<bool>true</bool>
@ -804,7 +804,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy>
</property>
<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 name="wordWrap">
<bool>true</bool>
@ -820,7 +820,7 @@ Heroes III: HD Edition is currently not supported</string>
</sizepolicy>
</property>
<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 name="wordWrap">
<bool>true</bool>

View File

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

View File

@ -316,11 +316,11 @@ QString CModListView::genModInfoText(CModEntry & mod)
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 blockingMods = tr("This mod can not be enabled because following mods are incompatible with this mod");
QString hasActiveDependentMods = tr("This mod can not be disabled because it is required to run following mods");
QString hasDependentMods = tr("This mod can not be uninstalled or updated because it is required to run following mods");
QString thisIsSubmod = tr("This is submod and it can not be installed or uninstalled separately from parent mod");
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 the following mods are incompatible with it");
QString hasActiveDependentMods = tr("This mod cannot be disabled because it is required by the 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 a submod and it cannot be installed or uninstalled separately from its parent mod");
QString notes;

View File

@ -279,27 +279,27 @@
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
@ -541,29 +541,80 @@
<source>Mods Preset</source>
<translation type="unfinished"></translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/>
<source>Your Heroes III data files have been successfully found.</source>
<translation type="unfinished"></translation>
</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>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
@ -576,11 +627,6 @@
<source>Step %v out of %m</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Choose your language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/>
<source>VCMI on Github</source>
@ -596,33 +642,12 @@
<source>VCMI on Discord</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>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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/>
<source>Next</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Find Heroes III data files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/>
<source>Open help in browser</source>
@ -633,26 +658,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>Search again</source>
<translation type="unfinished"></translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/>
<source>Heroes III data files</source>
<translation type="unfinished"></translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/>
<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>
<translation type="unfinished"></translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
<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>
<translation type="unfinished"></translation>
</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>
<name>ImageViewer</name>
@ -804,11 +804,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>People in lobby</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="114"/>
<source>Lobby chat</source>
@ -844,6 +839,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>New room</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>Players in lobby</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="159"/>
<source>Join room</source>
@ -945,7 +945,7 @@ Heroes III: HD Edition is currently not supported</source>
<name>UpdateDialog</name>
<message>
<location filename="../updatedialog_moc.ui" line="71"/>
<source>You have latest version</source>
<source>You have the latest version</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -955,7 +955,7 @@ Heroes III: HD Edition is currently not supported</source>
</message>
<message>
<location filename="../updatedialog_moc.ui" line="101"/>
<source>Check updates on startup</source>
<source>Check for updates on startup</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@ -279,28 +279,28 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<source>This mod can not be installed or enabled because following dependencies are not present</source>
<translation>Diese Mod kann nicht installiert oder aktiviert werden, da die folgenden Abhängigkeiten nicht vorhanden sind</translation>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation type="unfinished">Diese Mod kann nicht installiert oder aktiviert werden, da die folgenden Abhängigkeiten nicht vorhanden sind</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="320"/>
<source>This mod can not be enabled because following mods are incompatible with this mod</source>
<translation>Diese Mod kann nicht aktiviert werden, da folgende Mods nicht mit dieser Mod kompatibel sind</translation>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation type="unfinished">Diese Mod kann nicht aktiviert werden, da folgende Mods nicht mit dieser Mod kompatibel sind</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>This mod can not be disabled because it is required to run following mods</source>
<translation>Diese Mod kann nicht deaktiviert werden, da sie zum Ausführen der folgenden Mods erforderlich ist</translation>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation type="unfinished">Diese Mod kann nicht deaktiviert werden, da sie zum Ausführen der folgenden Mods erforderlich ist</translation>
</message>
<message>
<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>
<translation>Diese Mod kann nicht deinstalliert oder aktualisiert werden, da sie für die folgenden Mods erforderlich ist</translation>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation type="unfinished">Diese Mod kann nicht deinstalliert oder aktualisiert werden, da sie für die folgenden Mods erforderlich ist</translation>
</message>
<message>
<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>
<translation>Dies ist eine Submod und kann nicht separat von der Hauptmod installiert oder deinstalliert werden</translation>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation type="unfinished">Dies ist eine Submod und kann nicht separat von der Hauptmod installiert oder deinstalliert werden</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="338"/>
@ -541,30 +541,87 @@
<source>Mods Preset</source>
<translation>Mods Voreinstellung</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/>
<source>Your Heroes III data files have been successfully found.</source>
<translation>Ihre Heroes III-Datendateien wurden erfolgreich gefunden.</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/>
<source>Optionally, you can install additional mods either now or at any point later:</source>
<translation>Optional können Sie jetzt oder zu einem beliebigen späteren Zeitpunkt zusätzliche Mods installieren:</translation>
<source>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</source>
<translation type="unfinished">Optional können Sie jetzt oder zu einem beliebigen späteren Zeitpunkt zusätzliche Mods installieren:</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/>
<source>Install support for playing Heroes III in resolutions other than 800x600.</source>
<translation>Installieren Sie Unterstützung für das Spielen von Heroes III in anderen Auflösungen als 800x600.</translation>
<source>Install support for playing Heroes III in resolutions higher than 800x600</source>
<translation type="unfinished">Installieren Sie Unterstützung für das Spielen von Heroes III in anderen Auflösungen als 800x600.</translation>
</message>
<message>
<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>
<translation>Installieren Sie die kompatible Version des Addons Horn of the Abyss: eine von Fans entwickelte Heroes III-Erweiterung, portiert vom VCMI-Team</translation>
<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">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>
<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>
<translation>Installieren Sie die kompatible Version des Addons &quot;In The Wake of Gods&quot;: von Fans entwickelte Heroes III-Erweiterung</translation>
<source>Install compatible version of &quot;In The Wake of Gods&quot;, a fan-made Heroes III expansion</source>
<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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="870"/>
@ -576,11 +633,6 @@
<source>Step %v out of %m</source>
<translation>Schritt %v von %m</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Choose your language</source>
<translation>Wählen Sie Ihre Sprache</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/>
<source>VCMI on Github</source>
@ -596,39 +648,12 @@
<source>VCMI on Discord</source>
<translation>VCMI auf Discord</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>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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/>
<source>Next</source>
<translation>Weiter</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/>
<source>Open help in browser</source>
@ -639,26 +664,11 @@ Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
<source>Search again</source>
<translation>Erneut suchen</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/>
<source>Heroes III data files</source>
<translation>Heroes III Dateien</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/>
<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>
<translation>Ihre Heroes III-Sprache wurde erfolgreich erkannt.</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
<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>
<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>Übersetzung von Heroes III für Ihre Sprache installieren</translation>
</message>
</context>
<context>
<name>ImageViewer</name>
@ -810,11 +810,6 @@ Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
<source>Server</source>
<translation>Server</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>People in lobby</source>
<translation>Personen in der Lobby</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="114"/>
<source>Lobby chat</source>
@ -850,6 +845,11 @@ Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
<source>New room</source>
<translation>Neuer Raum</translation>
</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>
<location filename="../lobby/lobby_moc.ui" line="159"/>
<source>Join room</source>
@ -951,8 +951,8 @@ Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
<name>UpdateDialog</name>
<message>
<location filename="../updatedialog_moc.ui" line="71"/>
<source>You have latest version</source>
<translation>Sie haben die neueste Version</translation>
<source>You have the latest version</source>
<translation type="unfinished">Sie haben die neueste Version</translation>
</message>
<message>
<location filename="../updatedialog_moc.ui" line="94"/>
@ -961,8 +961,8 @@ Heroes III: HD Edition wird derzeit nicht unterstützt</translation>
</message>
<message>
<location filename="../updatedialog_moc.ui" line="101"/>
<source>Check updates on startup</source>
<translation>Nach Aktualisierungen beim Starten prüfen</translation>
<source>Check for updates on startup</source>
<translation type="unfinished">Nach Aktualisierungen beim Starten prüfen</translation>
</message>
</context>
</TS>

View File

@ -6,96 +6,96 @@
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="42"/>
<source>Translation</source>
<translation type="unfinished"></translation>
<translation>Tłumaczenie</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="43"/>
<source>Town</source>
<translation type="unfinished"></translation>
<translation>Miasto</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="44"/>
<source>Test</source>
<translation type="unfinished"></translation>
<translation>Test</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="45"/>
<source>Templates</source>
<translation type="unfinished"></translation>
<translation>Szablony</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="46"/>
<source>Spells</source>
<translation type="unfinished"></translation>
<translation>Zaklęcia</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="47"/>
<source>Music</source>
<translation type="unfinished"></translation>
<translation>Muzyczny</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="48"/>
<source>Sounds</source>
<translation type="unfinished"></translation>
<translation>Dźwięki</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="49"/>
<source>Skills</source>
<translation type="unfinished"></translation>
<translation>Umiejętności</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="50"/>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="67"/>
<source>Other</source>
<translation type="unfinished"></translation>
<translation>Inne</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="51"/>
<source>Objects</source>
<translation type="unfinished"></translation>
<translation>Obiekty</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="52"/>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="53"/>
<source>Mechanics</source>
<translation type="unfinished"></translation>
<translation>Mechaniki</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="54"/>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="55"/>
<source>Interface</source>
<translation type="unfinished"></translation>
<translation>Interfejs</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="56"/>
<source>Heroes</source>
<translation type="unfinished"></translation>
<translation>Bohaterowie</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="57"/>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="58"/>
<source>Graphical</source>
<translation type="unfinished"></translation>
<translation>Graficzny</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="59"/>
<source>Expansion</source>
<translation type="unfinished"></translation>
<translation>Dodatek</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="60"/>
<source>Creatures</source>
<translation type="unfinished"></translation>
<translation>Stworzenia</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="61"/>
<source>Artifacts</source>
<translation type="unfinished"></translation>
<translation>Artefakty</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="62"/>
<source>AI</source>
<translation type="unfinished"></translation>
<translation>AI</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="170"/>
@ -265,7 +265,7 @@
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<source>Languages</source>
<translation type="unfinished"></translation>
<translation>Języki</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
@ -279,28 +279,28 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<source>This mod can not be installed or enabled because 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>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<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>
<location filename="../modManager/cmodlistview_moc.cpp" line="320"/>
<source>This mod can not be enabled because following mods are incompatible with this mod</source>
<translation>Ten mod nie może zostać włączony ponieważ następujące mody z nim niekompatybilne</translation>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation type="unfinished">Ten mod nie może zostać włączony ponieważ następujące mody z nim niekompatybilne</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>This mod can not be disabled because it is required to run following mods</source>
<translation>Ten mod nie może zostać wyłączony ponieważ jest wymagany by do uruchomienia następujących modów</translation>
<source>This mod cannot be disabled because it is required by the following mods</source>
<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>
<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>
<translation>Ten mod nie może zostać odinstalowany lub zaktualizowany ponieważ jest wymagany do uruchomienia następujących modów</translation>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<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>
<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>
<translation>To jest moduł składowy innego moda i nie może być zainstalowany lub odinstalowany oddzielnie od moda nadrzędnego</translation>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<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>
<location filename="../modManager/cmodlistview_moc.cpp" line="338"/>
@ -541,30 +541,87 @@
<source>Mods Preset</source>
<translation>Zestaw modów</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/>
<source>Your Heroes III data files have been successfully found.</source>
<translation>Twoje pliki Heroes III zostały pomyślnie znalezione.</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/>
<source>Optionally, you can install additional mods either now or at any point later:</source>
<translation>Opcjonalnie możesz zainstalować dodatkowe modyfikacje teraz lub później:</translation>
<source>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</source>
<translation type="unfinished">Opcjonalnie możesz zainstalować dodatkowe modyfikacje teraz lub później</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/>
<source>Install support for playing Heroes III in resolutions other than 800x600.</source>
<translation>Zapinstaluj wsparcie dla grania w Heroes III w rozdzielczości innej niż 800x600.</translation>
<source>Install support for playing Heroes III in resolutions higher than 800x600</source>
<translation type="unfinished">Zapinstaluj wsparcie dla grania w Heroes III w rozdzielczości innej niż 800x600</translation>
</message>
<message>
<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>
<translation>Zainstaluj kompatybilną wersję fanowskiego dodatku Horn of the Abyss przeportowaną przez zespół VCMI</translation>
<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">Zainstaluj kompatybilną wersję fanowskiego dodatku Horn of the Abyss odtworzoprzez zespół VCMI</translation>
</message>
<message>
<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>
<translation>Zainstaluj kompatybilną wersję fanowskiego dodatku &quot;In The Wake Of Gods&quot;</translation>
<source>Install compatible version of &quot;In The Wake of Gods&quot;, a fan-made Heroes III expansion</source>
<translation type="unfinished">Zainstaluj kompatybilną wersję fanowskiego dodatku &quot;In The Wake Of Gods&quot;</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="870"/>
@ -576,41 +633,20 @@
<source>Step %v out of %m</source>
<translation>Krok %v z %m</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Choose your language</source>
<translation>Wybierz język</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/>
<source>VCMI on Github</source>
<translation type="unfinished"></translation>
<translation>VCMI na Github</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="182"/>
<source>VCMI on Slack</source>
<translation type="unfinished"></translation>
<translation>VCMI na Slacku</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="189"/>
<source>VCMI on Discord</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>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>
<translation>VCMI na Discordzie</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/>
@ -618,11 +654,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Next</source>
<translation>Dalej</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/>
<source>Open help in browser</source>
@ -633,26 +664,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>Search again</source>
<translation>Szukaj ponownie</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/>
<source>Heroes III data files</source>
<translation>Pliki Heroes III</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/>
<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>
<translation>Twój język Heroes III został pomyślnie wykryty.</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
<source>Heroes III language</source>
@ -687,27 +698,22 @@ Heroes III: HD Edition is currently not supported</source>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="635"/>
<source>Horn of the Abyss</source>
<translation type="unfinished"></translation>
<translation>Horn of the Abyss</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="657"/>
<source>Heroes III Translation</source>
<translation type="unfinished">Tłumaczenie Heroes III</translation>
<translation>Tłumaczenie Heroes III</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="721"/>
<source>High Definition Support</source>
<translation type="unfinished"></translation>
<translation>Wsparcie High Definition</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="743"/>
<source>In The Wake of Gods</source>
<translation type="unfinished"></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>
<translation>In The Wake of Gods</translation>
</message>
</context>
<context>
@ -804,11 +810,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Server</source>
<translation>Serwer</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>People in lobby</source>
<translation>Ludzie w lobby</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="114"/>
<source>Lobby chat</source>
@ -844,6 +845,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>New room</source>
<translation>Nowy pokój</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>Players in lobby</source>
<translation type="unfinished">Ludzie w lobby</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="159"/>
<source>Join room</source>
@ -945,8 +951,8 @@ Heroes III: HD Edition is currently not supported</source>
<name>UpdateDialog</name>
<message>
<location filename="../updatedialog_moc.ui" line="71"/>
<source>You have latest version</source>
<translation>Posiadasz obecnie aktualną wersję</translation>
<source>You have the latest version</source>
<translation type="unfinished">Posiadasz obecnie aktualną wersję</translation>
</message>
<message>
<location filename="../updatedialog_moc.ui" line="94"/>
@ -955,8 +961,8 @@ Heroes III: HD Edition is currently not supported</source>
</message>
<message>
<location filename="../updatedialog_moc.ui" line="101"/>
<source>Check updates on startup</source>
<translation>Sprawdź aktualizacje przy uruchomieniu</translation>
<source>Check for updates on startup</source>
<translation type="unfinished">Sprawdź aktualizacje przy uruchomieniu</translation>
</message>
</context>
</TS>

View File

@ -279,28 +279,28 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<source>This mod can not be installed or enabled because following dependencies are not present</source>
<translation>Этот мод не может быть установлен или активирован, так как отсутствуют следующие зависимости</translation>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation type="unfinished">Этот мод не может быть установлен или активирован, так как отсутствуют следующие зависимости</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="320"/>
<source>This mod can not be enabled because following mods are incompatible with this mod</source>
<translation>Этот мод не может быть установлен или активирован, так как следующие моды несовместимы с этим</translation>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation type="unfinished">Этот мод не может быть установлен или активирован, так как следующие моды несовместимы с этим</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>This mod can not be disabled because it is required to run following mods</source>
<translation>Этот мод не может быть выключен, так как он является зависимостью для следующих</translation>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation type="unfinished">Этот мод не может быть выключен, так как он является зависимостью для следующих</translation>
</message>
<message>
<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>
<translation>Этот мод не может быть удален или обновлен, так как является зависимостью для следующих модов</translation>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation type="unfinished">Этот мод не может быть удален или обновлен, так как является зависимостью для следующих модов</translation>
</message>
<message>
<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>
<translation>Это вложенный мод, он не может быть установлен или удален отдельно от родительского</translation>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation type="unfinished">Это вложенный мод, он не может быть установлен или удален отдельно от родительского</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="338"/>
@ -541,29 +541,80 @@
<source>Mods Preset</source>
<translation type="unfinished"></translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/>
<source>Your Heroes III data files have been successfully found.</source>
<translation type="unfinished"></translation>
</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>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
@ -576,11 +627,6 @@
<source>Step %v out of %m</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Choose your language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/>
<source>VCMI on Github</source>
@ -596,33 +642,12 @@
<source>VCMI on Discord</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>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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/>
<source>Next</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Find Heroes III data files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/>
<source>Open help in browser</source>
@ -633,26 +658,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>Search again</source>
<translation type="unfinished"></translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/>
<source>Heroes III data files</source>
<translation type="unfinished"></translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/>
<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>
<translation type="unfinished"></translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
<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>
<translation type="unfinished"></translation>
</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>
<name>ImageViewer</name>
@ -804,11 +804,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Server</source>
<translation>Сервер</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>People in lobby</source>
<translation>Люди в лобби</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="114"/>
<source>Lobby chat</source>
@ -844,6 +839,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>New room</source>
<translation>Создать комнату</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>Players in lobby</source>
<translation type="unfinished">Люди в лобби</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="159"/>
<source>Join room</source>
@ -945,8 +945,8 @@ Heroes III: HD Edition is currently not supported</source>
<name>UpdateDialog</name>
<message>
<location filename="../updatedialog_moc.ui" line="71"/>
<source>You have latest version</source>
<translation>У вас уже последняя версия</translation>
<source>You have the latest version</source>
<translation type="unfinished">У вас уже последняя версия</translation>
</message>
<message>
<location filename="../updatedialog_moc.ui" line="94"/>
@ -955,8 +955,8 @@ Heroes III: HD Edition is currently not supported</source>
</message>
<message>
<location filename="../updatedialog_moc.ui" line="101"/>
<source>Check updates on startup</source>
<translation>Проверять обновления при запуске</translation>
<source>Check for updates on startup</source>
<translation type="unfinished">Проверять обновления при запуске</translation>
</message>
</context>
</TS>

View File

@ -279,28 +279,28 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<source>This mod can not be installed or enabled because following dependencies are not present</source>
<translation>Este mod no se puede instalar o habilitar porque no están presentes las siguientes dependencias</translation>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation type="unfinished">Este mod no se puede instalar o habilitar porque no están presentes las siguientes dependencias</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="320"/>
<source>This mod can not be enabled because following mods are incompatible with this mod</source>
<translation>Este mod no se puede habilitar porque los siguientes mods son incompatibles con él</translation>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation type="unfinished">Este mod no se puede habilitar porque los siguientes mods son incompatibles con él</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>This mod can not be disabled because it is required to run following mods</source>
<translation>No se puede desactivar este mod porque es necesario para ejecutar los siguientes mods</translation>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation type="unfinished">No se puede desactivar este mod porque es necesario para ejecutar los siguientes mods</translation>
</message>
<message>
<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>
<translation>No se puede desinstalar o actualizar este mod porque es necesario para ejecutar los siguientes mods</translation>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation type="unfinished">No se puede desinstalar o actualizar este mod porque es necesario para ejecutar los siguientes mods</translation>
</message>
<message>
<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>
<translation>Este es un submod y no se puede instalar o desinstalar por separado del mod principal</translation>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation type="unfinished">Este es un submod y no se puede instalar o desinstalar por separado del mod principal</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="338"/>
@ -546,11 +546,6 @@
<source>Step %v out of %m</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Choose your language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/>
<source>VCMI on Github</source>
@ -566,33 +561,12 @@
<source>VCMI on Discord</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>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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/>
<source>Next</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Find Heroes III data files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/>
<source>Open help in browser</source>
@ -603,26 +577,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>Search again</source>
<translation type="unfinished"></translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/>
<source>Heroes III data files</source>
<translation type="unfinished"></translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/>
<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>
<translation type="unfinished"></translation>
</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>
<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>
</message>
<message>
@ -681,27 +681,27 @@ Heroes III: HD Edition is currently not supported</source>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
@ -804,11 +804,6 @@ Heroes III: HD Edition is currently not supported</source>
<source>Server</source>
<translation>Servidor</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>People in lobby</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="114"/>
<source>Lobby chat</source>
@ -844,6 +839,11 @@ Heroes III: HD Edition is currently not supported</source>
<source>New room</source>
<translation>Nueva sala</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>Players in lobby</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="159"/>
<source>Join room</source>
@ -945,8 +945,8 @@ Heroes III: HD Edition is currently not supported</source>
<name>UpdateDialog</name>
<message>
<location filename="../updatedialog_moc.ui" line="71"/>
<source>You have latest version</source>
<translation>Tienes la última versión</translation>
<source>You have the latest version</source>
<translation type="unfinished">Tienes la última versión</translation>
</message>
<message>
<location filename="../updatedialog_moc.ui" line="94"/>
@ -955,8 +955,8 @@ Heroes III: HD Edition is currently not supported</source>
</message>
<message>
<location filename="../updatedialog_moc.ui" line="101"/>
<source>Check updates on startup</source>
<translation>Comprobar actualizaciones al iniciar</translation>
<source>Check for updates on startup</source>
<translation type="unfinished">Comprobar actualizaciones al iniciar</translation>
</message>
</context>
</TS>

View File

@ -279,27 +279,27 @@
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
<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>
</message>
<message>
@ -541,30 +541,87 @@
<source>Mods Preset</source>
<translation>Початкові модифікації</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="445"/>
<source>Your Heroes III data files have been successfully found.</source>
<translation>Файли даних вашої гри Heroes III успішно знайдено.</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="775"/>
<source>Optionally, you can install additional mods either now or at any point later:</source>
<translation>За бажанням ви можете встановити додаткові модифікації зараз або пізніше:</translation>
<source>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</source>
<translation>За бажанням ви можете встановити додаткові модифікації зараз або пізніше, використовуючи VCMI Launcher</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="791"/>
<source>Install support for playing Heroes III in resolutions other than 800x600.</source>
<translation>Встановити підтримку для гри в Heroes III у роздільних здатностях, більших за 800x600.</translation>
<source>Install support for playing Heroes III in resolutions higher than 800x600</source>
<translation>Встановити підтримку для гри в Heroes III у роздільних здатностях, більших за 800x600</translation>
</message>
<message>
<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>
<translation>Встановити сумісну версію доповнення Horn of the Abyss: фанатське доповнення Heroes III, портоване командою VCMI</translation>
<source>Install compatible version of &quot;Horn of the Abyss&quot;, a fan-made Heroes III expansion ported by the VCMI team</source>
<translation>Встановити сумісну версію доповнення &quot;Horn of the Abyss&quot;, фанатське доповнення Heroes III, портоване командою VCMI</translation>
</message>
<message>
<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>
<translation>Встановити сумісну версію доповнення &quot; In The Wake of Gods&quot;: фанатське доповнення до Heroes III</translation>
<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>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="870"/>
@ -576,11 +633,6 @@
<source>Step %v out of %m</source>
<translation>Крок %v з %m</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="146"/>
<source>Choose your language</source>
<translation>Оберіть свою мову</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="175"/>
<source>VCMI on Github</source>
@ -596,39 +648,12 @@
<source>VCMI on Discord</source>
<translation>VCMI на Discord</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>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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="239"/>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="554"/>
<source>Next</source>
<translation>Далі</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="276"/>
<source>Find Heroes III data files</source>
<translation>Пошук файлів даних Heroes III</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="307"/>
<source>Open help in browser</source>
@ -639,26 +664,11 @@ Heroes III: HD Edition наразі не підтримується</translation
<source>Search again</source>
<translation>Повторити пошук</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="403"/>
<source>Heroes III data files</source>
<translation>Файли даних Heroes III</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="432"/>
<source>Copy existing data</source>
@ -669,11 +679,6 @@ Heroes III: HD Edition наразі не підтримується</translation
<source>Your Heroes III language has been successfully detected.</source>
<translation>Мову вашої гри Heroes III успішно визначено.</translation>
</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>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
<source>Heroes III language</source>
@ -710,11 +715,6 @@ Heroes III: HD Edition наразі не підтримується</translation
<source>In The Wake of Gods</source>
<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>Встановити переклад Heroes III на вашу мову</translation>
</message>
</context>
<context>
<name>ImageViewer</name>
@ -810,11 +810,6 @@ Heroes III: HD Edition наразі не підтримується</translation
<source>Server</source>
<translation>Сервер</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>People in lobby</source>
<translation>Гравці у лобі</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="114"/>
<source>Lobby chat</source>
@ -850,6 +845,11 @@ Heroes III: HD Edition наразі не підтримується</translation
<source>New room</source>
<translation>Створити кімнату</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="76"/>
<source>Players in lobby</source>
<translation>Гравці у лобі</translation>
</message>
<message>
<location filename="../lobby/lobby_moc.ui" line="159"/>
<source>Join room</source>
@ -951,7 +951,7 @@ Heroes III: HD Edition наразі не підтримується</translation
<name>UpdateDialog</name>
<message>
<location filename="../updatedialog_moc.ui" line="71"/>
<source>You have latest version</source>
<source>You have the latest version</source>
<translation>У вас встановлена остання версія</translation>
</message>
<message>
@ -961,7 +961,7 @@ Heroes III: HD Edition наразі не підтримується</translation
</message>
<message>
<location filename="../updatedialog_moc.ui" line="101"/>
<source>Check updates on startup</source>
<source>Check for updates on startup</source>
<translation>Перевіряти наявність оновлень при запуску</translation>
</message>
</context>

View File

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

View File

@ -327,12 +327,12 @@ bool CCreature::isItNativeTerrain(TerrainId terrain) const
TerrainId CCreature::getNativeTerrain() const
{
const std::string cachingStringNoTerrainPenalty = "type_NO_TERRAIN_PENALTY";
static const auto selectorNoTerrainPenalty = Selector::type()(Bonus::NO_TERRAIN_PENALTY);
const std::string cachingStringNoTerrainPenalty = "type_NO_TERRAIN_PENALTY_sANY";
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
//and in the CGHeroInstance::getNativeTerrain() to setup movement bonuses or/and penalties.
return hasBonus(selectorNoTerrainPenalty, selectorNoTerrainPenalty)
return hasBonus(selectorNoTerrainPenalty, cachingStringNoTerrainPenalty)
? TerrainId(ETerrainId::ANY_TERRAIN)
: (*VLC->townh)[faction]->nativeTerrain;
}

View File

@ -199,7 +199,7 @@ class DLL_LINKAGE CCreatureSet : public IArmyDescriptor //seven combined creatur
CCreatureSet &operator=(const CCreatureSet&);
public:
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
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
for (int i = 0; i<GameConstants::CREATURES_PER_TOWN; i++)
if (vstd::contains(vti->builtBuildings,(-31-i))) //if we have horde for this level
for (int i = 0; i < GameConstants::CREATURES_PER_TOWN; i++)
{
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
{
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
}
if (vti->town->hordeLvl.at(1) == i)//if town second horde is this one
{
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);
}
}
}
//#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
for(const auto & building : vti->builtBuildings)

View File

@ -485,15 +485,6 @@ void CTownHandler::addBonusesForVanilaBuilding(CBuilding * building) const
{
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
{

View File

@ -473,7 +473,16 @@ public:
enum EBuildingID
{
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,
FIRST_REGULAR_ID = 0,
MAGES_GUILD_1 = 0, MAGES_GUILD_2, MAGES_GUILD_3, MAGES_GUILD_4, MAGES_GUILD_5,
TAVERN, SHIPYARD, FORT, CITADEL, CASTLE,
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::map<int, BuildingID> mapa;
std::map<int, BuildingID> helperMap;
std::set<BuildingID> ret;
// 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)
{
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)
{
if(mapa[elem] >= 0)
if(helperMap[elem] >= BuildingID::FIRST_REGULAR_ID)
{
ret.insert(mapa[elem]);
ret.insert(helperMap[elem]);
}
// horde buildings
else if(mapa[elem] >= (-GameConstants::CREATURES_PER_TOWN))
// horde buildings use indexes from -1 to -5, where creature level is 1 to 5
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
ret.insert(BuildingID(level - 30));
//(-30)..(-36) - horde buildings (for game loading only)
//They will be replaced in CGameState::initTowns()
ret.insert(BuildingID(level + BuildingID::HORDE_BUILDING_CONVERTER)); //-1 => -30
}
else
{

View File

@ -1085,7 +1085,7 @@ void CGameHandler::makeAttack(const CStack * attacker, const CStack * defender,
auto spell = bat.spellID.toSpell();
battle::Target target;
target.emplace_back(defender);
target.emplace_back(defender, targetHex);
spells::BattleCast event(gs->curB, attacker, spells::Mode::SPELL_LIKE_ATTACK, spell);
event.setSpellLevel(bonus->val);
@ -2418,6 +2418,9 @@ bool CGameHandler::moveHero(ObjectInstanceID hid, int3 dst, ui8 teleporting, boo
if (leavingTile == LEAVING_TILE)
leaveTile();
if (isInTheMap(guardPos))
tmh.attackedFrom = boost::make_optional(guardPos);
tmh.result = result;
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
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);
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)
{
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;
boost::split(words, message, boost::is_any_of(" "));
@ -5023,7 +5028,7 @@ void CGameHandler::playerMessage(PlayerColor player, const std::string &message,
}
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());
if (obj)
@ -5035,7 +5040,7 @@ void CGameHandler::playerMessage(PlayerColor player, const std::string &message,
if (!town && hero)
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];
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);
}
bool CGameHandler::buildBoat(ObjectInstanceID objid)
bool CGameHandler::buildBoat(ObjectInstanceID objid, PlayerColor playerID)
{
const IShipyard *obj = IShipyard::castFrom(getObj(objid));
@ -5714,7 +5719,6 @@ bool CGameHandler::buildBoat(ObjectInstanceID objid)
return false;
}
const PlayerColor playerID = obj->o->tempOwner;
TResources boatCost;
obj->getBoatCost(boatCost);
TResources aviable = getPlayerState(playerID)->resources;
@ -7004,7 +7008,7 @@ void CGameHandler::handleCheatCode(std::string & cheat, PlayerColor player, cons
if (!hero->hasStackAtSlot(SlotID(i)))
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;
if (!hero) return;
@ -7055,7 +7059,7 @@ void CGameHandler::handleCheatCode(std::string & cheat, PlayerColor player, cons
///selected hero gains a new 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;
if (!hero) return;

View File

@ -238,7 +238,7 @@ public:
void removeObstacle(const CObstacleInstance &obstacle);
bool queryReply( QueryID qid, const JsonNode & answer, 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 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);

View File

@ -253,7 +253,7 @@ void ApplyGhNetPackVisitor::visitBuildBoat(BuildBoat & pack)
if(gh.getPlayerRelations(gh.getOwner(pack.objid), gh.getPlayerAt(pack.c)) == PlayerRelations::ENEMIES)
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)

View File

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