mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-24 22:14:36 +02:00
Fixing spelling mistakes. Patch from josch, fixes #1759
This commit is contained in:
parent
9dda194ed3
commit
9c0df68cb8
@ -540,7 +540,7 @@ std::vector<BattleHex> CBattleAI::getTargetsToConsider( const CSpell *spell ) co
|
||||
}
|
||||
else
|
||||
{
|
||||
//TODO when massive effect -> doesnt matter where cast
|
||||
//TODO when massive effect -> doesn't matter where cast
|
||||
return cbc->battleGetPossibleTargets(playerID, spell);
|
||||
}
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ public:
|
||||
void battleEnd(const BattleResult *br) override;
|
||||
//void battleResultsApplied() override; //called when all effects of last battle are applied
|
||||
void battleNewRoundFirst(int round) override; //called at the beginning of each turn before changes are applied;
|
||||
void battleNewRound(int round) override; //called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn
|
||||
void battleNewRound(int round) override; //called at the beginning of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn
|
||||
void battleStackMoved(const CStack * stack, std::vector<BattleHex> dest, int distance) override;
|
||||
void battleSpellCast(const BattleSpellCast *sc) override;
|
||||
void battleStacksEffectsSet(const SetStackEffect & sse) override;//called when a specific effect is set to stacks
|
||||
|
@ -22,7 +22,7 @@ public:
|
||||
void battleEnd(const BattleResult *br) override;
|
||||
//void battleResultsApplied() override; //called when all effects of last battle are applied
|
||||
void battleNewRoundFirst(int round) override; //called at the beginning of each turn before changes are applied;
|
||||
void battleNewRound(int round) override; //called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn
|
||||
void battleNewRound(int round) override; //called at the beginning of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn
|
||||
void battleStackMoved(const CStack * stack, std::vector<BattleHex> dest, int distance) override;
|
||||
void battleSpellCast(const BattleSpellCast *sc) override;
|
||||
void battleStacksEffectsSet(const SetStackEffect & sse) override;//called when a specific effect is set to stacks
|
||||
|
@ -202,7 +202,7 @@ ui64 evaluateDanger(crint3 tile, const CGHeroInstance *visitor)
|
||||
objectDanger = evaluateDanger(dangerousObject); //unguarded objects can also be dangerous or unhandled
|
||||
if (objectDanger)
|
||||
{
|
||||
//TODO: don't downcast objects AI shouldnt know about!
|
||||
//TODO: don't downcast objects AI shouldn't know about!
|
||||
auto armedObj = dynamic_cast<const CArmedInstance*>(dangerousObject);
|
||||
if(armedObj)
|
||||
objectDanger *= fh->getTacticalAdvantage(visitor, armedObj); //this line tends to go infinite for allied towns (?)
|
||||
@ -404,7 +404,7 @@ bool boundaryBetweenTwoPoints (int3 pos1, int3 pos2) //determines if two points
|
||||
int3 tile = int3(x, y, pos1.z); //use only on same level, ofc
|
||||
if (abs(pos1.dist2d(tile) - pos2.dist2d(tile)) < 1.5)
|
||||
{
|
||||
if (!(cb->isVisible(tile) && cb->getTile(tile)->blocked)) //if there's invisible or unblocked tile inbetween, it's good
|
||||
if (!(cb->isVisible(tile) && cb->getTile(tile)->blocked)) //if there's invisible or unblocked tile between, it's good
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -466,7 +466,7 @@ float FuzzyHelper::evaluate (Goals::VisitTile & g)
|
||||
}
|
||||
float FuzzyHelper::evaluate (Goals::VisitHero & g)
|
||||
{
|
||||
auto obj = cb->getObj(ObjectInstanceID(g.objid)); //we assume for now that these goals are similiar
|
||||
auto obj = cb->getObj(ObjectInstanceID(g.objid)); //we assume for now that these goals are similar
|
||||
if (!obj)
|
||||
return -100; //hero died in the meantime
|
||||
//TODO: consider direct copy (constructor?)
|
||||
|
@ -265,7 +265,7 @@ TSubgoal Win::whatToDoToAchieve()
|
||||
}
|
||||
double ratio = 0;
|
||||
// maybe make this check a bit more complex? For example:
|
||||
// 0.75 -> dig randomly withing 3 tiles radius
|
||||
// 0.75 -> dig randomly within 3 tiles radius
|
||||
// 0.85 -> radius now 2 tiles
|
||||
// 0.95 -> 1 tile radius, position is fully known
|
||||
// AFAIK H3 AI does something like this
|
||||
|
@ -2070,7 +2070,7 @@ void VCAI::striveToQuest (const QuestInfo &q)
|
||||
{
|
||||
for (auto hero : heroes)
|
||||
{
|
||||
if (q.quest->checkQuest(hero)) //veyr bad info - stacks can be split between multiple heroes :(
|
||||
if (q.quest->checkQuest(hero)) //very bad info - stacks can be split between multiple heroes :(
|
||||
{
|
||||
striveToGoal (sptr(Goals::GetObj(q.obj->id.getNum()).sethero(hero)));
|
||||
return;
|
||||
|
18
ChangeLog
18
ChangeLog
@ -37,7 +37,7 @@ More info at http://wiki.vcmi.eu/index.php?title=Adventure_AI
|
||||
* Fixed (common) issue when AI found neutral stacks infinitely strong.
|
||||
* Improvements for army exchange criteria.
|
||||
* GatherArmy may include building dwellings in town (experimental).
|
||||
* AI should now conquer map more agressively and much faster
|
||||
* AI should now conquer map more aggressively and much faster
|
||||
* Fuzzy rules will be printed out at map launch (if AI log is enabled)
|
||||
|
||||
CAMPAIGNS:
|
||||
@ -160,7 +160,7 @@ MODS:
|
||||
* Extended usefulness of ONLY_DISTANCE_FIGHT, ONLY_MELEE_FIGHT ranges
|
||||
* Double growth creatures are configurable now
|
||||
* Drain Life now has % effect depending on bonus value
|
||||
* Stack can use more than 2 attacks. Additional attacks can now be seperated as "ONLY_MELEE_FIGHT and "ONLY_DISTANCE_FIGHT".
|
||||
* Stack can use more than 2 attacks. Additional attacks can now be separated as "ONLY_MELEE_FIGHT and "ONLY_DISTANCE_FIGHT".
|
||||
* Moat damage configurable
|
||||
* More config options for spells:
|
||||
- mind immunity handled by config
|
||||
@ -627,7 +627,7 @@ BATTLES:
|
||||
* 'Q' pressing toggles the stack queue displaying (so it can be enabled/disabled it with single key press)
|
||||
* more creatures special abilities supported
|
||||
* battle settings will be stored
|
||||
* fixed crashes occuring on attacking two hex creatures from back
|
||||
* fixed crashes occurring on attacking two hex creatures from back
|
||||
* fixed crash when clicking on enemy stack without moving mouse just after receiving action
|
||||
* even large stack numbers will fit the boxes
|
||||
* when active stack is killed by spell, game behaves properly
|
||||
@ -660,7 +660,7 @@ TOWNS:
|
||||
* enemy castle can be taken over
|
||||
* only one capitol per player allowed (additional ones will be lost)
|
||||
* garrisoned hero can buy a spellbook
|
||||
* heroes available in tavern sould be always different
|
||||
* heroes available in tavern should be always different
|
||||
* ship bought in town will be correctly placed
|
||||
* new special town structures supported:
|
||||
- Lookout Tower
|
||||
@ -676,7 +676,7 @@ PREGAME:
|
||||
* advanced options tab: r-click popups for selected town, hero and bonus
|
||||
* starting scenario / game by double click
|
||||
* arrows in options tab are hidden when not available
|
||||
* subtitles for choosen hero/town/bonus in pregame
|
||||
* subtitles for chosen hero/town/bonus in pregame
|
||||
|
||||
OBJECTS:
|
||||
* fixed pairing Subterranean Gates
|
||||
@ -923,7 +923,7 @@ TOWN INTERFACE:
|
||||
* cannot build shipyard if town is not near water
|
||||
* Rampart's Treasury requires Miner's Guild
|
||||
* minor improvements in Recruitment Window
|
||||
* fixed crash occuring when clicking on hero portrait in Tavern Window, minor improvements for Tavern Window
|
||||
* fixed crash occurring when clicking on hero portrait in Tavern Window, minor improvements for Tavern Window
|
||||
* proper updating resdatabar after building structure in town or buying creatures (non 800x600 res)
|
||||
* fixed blinking resdatabar in town screen when buying (800x600)
|
||||
* fixed horde buildings displaying in town hall
|
||||
@ -965,7 +965,7 @@ GENERAL:
|
||||
* partial support for new screen resolutions
|
||||
* it's possible to set game resolution in pregame (type 'resolution' in the console)
|
||||
* /Data and /Sprites subfolders can be used for adding files not present in .lod archives
|
||||
* fixed crashbug occuring when hero levelled above 15 level
|
||||
* fixed crashbug occurring when hero levelled above 15 level
|
||||
* support for non-standard screen resolutions
|
||||
* F4 toggles between full-screen and windowed mode
|
||||
* minor improvements in creature card window
|
||||
@ -1204,7 +1204,7 @@ Bugfixes:
|
||||
* partially done attacking in battles
|
||||
* screen isn't now refreshed while blitting creature info window
|
||||
* r-click creature info windows in battles
|
||||
* no more divison by 0 in slider
|
||||
* no more division by 0 in slider
|
||||
* "plural" reference names for Conflux creatures (starting armies of Conflux heroes should now be working)
|
||||
* fixed estate problems
|
||||
* fixed blinking mana vortex
|
||||
@ -1247,7 +1247,7 @@ Battles:
|
||||
* starting battles
|
||||
* displaying terrain, animations of heroes, units, grid, range of units, battle menu with console, amounts of units in stacks
|
||||
* leaving battle by pressing flee button
|
||||
* moving units in battles and displaying thier ranges
|
||||
* moving units in battles and displaying their ranges
|
||||
* defend command for units
|
||||
General:
|
||||
* a number of minor fixes and improvements
|
||||
|
2
Global.h
2
Global.h
@ -25,7 +25,7 @@ static_assert(sizeof(bool) == 1, "Bool needs to be 1 byte in size.");
|
||||
#endif
|
||||
|
||||
#if !defined(__clang__) && defined(__GNUC__) && (GCC_VERSION < 460)
|
||||
# error VCMI requires at least gcc-4.6 for successfull compilation or clang-3.1. Please update your compiler
|
||||
# error VCMI requires at least gcc-4.6 for successful compilation or clang-3.1. Please update your compiler
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && (GCC_VERSION == 470 || GCC_VERSION == 471)
|
||||
|
@ -622,7 +622,7 @@ std::string CCreatureWindow::skillToFile (int skill)
|
||||
if (upgradeOptions.size() && upgradeOptions[selectedOption] == skill)//that one specific skill is selected
|
||||
sufix += "="; //level-up highlight
|
||||
else if (!vstd::contains(upgradeOptions, skill))
|
||||
sufix = "no"; //not avaliable - no number
|
||||
sufix = "no"; //not available - no number
|
||||
}
|
||||
file += sufix += ".bmp";
|
||||
|
||||
|
@ -200,7 +200,7 @@ int main(int argc, char** argv)
|
||||
#endif
|
||||
{
|
||||
#ifdef __APPLE__
|
||||
// Correct working dir executable folder (not bundle folder) so we can use executable relative pathes
|
||||
// Correct working dir executable folder (not bundle folder) so we can use executable relative paths
|
||||
std::string executablePath = argv[0];
|
||||
std::string workDir = executablePath.substr(0, executablePath.rfind('/'));
|
||||
chdir(workDir.c_str());
|
||||
@ -386,7 +386,7 @@ int main(int argc, char** argv)
|
||||
fileToStartFrom = vm["start"].as<std::string>();
|
||||
|
||||
if(fileToStartFrom.size() && boost::filesystem::exists(fileToStartFrom))
|
||||
startGameFromFile(fileToStartFrom); //ommit pregame and start the game using settings from fiel
|
||||
startGameFromFile(fileToStartFrom); //ommit pregame and start the game using settings from file
|
||||
else
|
||||
{
|
||||
if(fileToStartFrom.size())
|
||||
|
@ -239,7 +239,7 @@ void CPlayerInterface::heroMoved(const TryMoveHero & details)
|
||||
if(!hero)
|
||||
{
|
||||
//AI hero left the visible area (we can't obtain info)
|
||||
//TODO very evil workaround -> retreive pointer to hero so we could animate it
|
||||
//TODO very evil workaround -> retrieve pointer to hero so we could animate it
|
||||
// TODO -> we should not need full CGHeroInstance structure to display animation or it should not be handled by playerint (but by the client itself)
|
||||
const TerrainTile2 &tile = CGI->mh->ttiles[hp.x-1][hp.y][hp.z];
|
||||
for(auto & elem : tile.objects)
|
||||
|
@ -3561,7 +3561,7 @@ void CBonusSelection::updateBonusSelection()
|
||||
case CScenarioTravel::STravelBonus::HEROES_FROM_PREVIOUS_SCENARIO:
|
||||
{
|
||||
auto superhero = ourCampaign->camp->scenarios[bonDescs[i].info2].strongestHero(PlayerColor(bonDescs[i].info1));
|
||||
if (!superhero) logGlobal->warnStream() << "No superhero! How could it be transfered?";
|
||||
if (!superhero) logGlobal->warnStream() << "No superhero! How could it be transferred?";
|
||||
picNumber = superhero ? superhero->portrait : 0;
|
||||
desc = CGI->generaltexth->allTexts[719];
|
||||
|
||||
@ -4185,7 +4185,7 @@ void CPrologEpilogVideo::show( SDL_Surface * to )
|
||||
CSDL_Ext::fillRect(to, &pos, 0); // fill screen with black
|
||||
//BUG: some videos are 800x600 in size while some are 800x400
|
||||
//VCMI should center them in the middle of the screen. Possible but needs modification
|
||||
//of video player API which I'd like to avoid untill we'll get rid of Windows-specific player
|
||||
//of video player API which I'd like to avoid until we'll get rid of Windows-specific player
|
||||
CCS->videoh->update(pos.x, pos.y, to, true, false);
|
||||
|
||||
//move text every 5 calls/frames; seems to be good enough
|
||||
|
@ -47,7 +47,7 @@ public:
|
||||
class CQuestIcon : public CAnimImage
|
||||
{
|
||||
public:
|
||||
std::function<void()> callback; //TODO: merge with other similiar classes?
|
||||
std::function<void()> callback; //TODO: merge with other similar classes?
|
||||
|
||||
CQuestIcon (const std::string &defname, int index, int x=0, int y=0);
|
||||
|
||||
|
@ -2278,7 +2278,7 @@ void CBattleInterface::handleHex(BattleHex myNumber, int eventType)
|
||||
|
||||
if (vstd::contains(localActions, selectedAction)) //try to use last selected action by default
|
||||
currentAction = selectedAction;
|
||||
else if (localActions.size()) //if not possible, select first avaliable action 9they are sorted by suggested priority)
|
||||
else if (localActions.size()) //if not possible, select first available action 9they are sorted by suggested priority)
|
||||
currentAction = localActions.front();
|
||||
else //no legal action possible
|
||||
{
|
||||
@ -2388,7 +2388,7 @@ void CBattleInterface::handleHex(BattleHex myNumber, int eventType)
|
||||
consoleMsg = boost::str(boost::format(CGI->generaltexth->allTexts[26]) % sp->name); //Cast %s
|
||||
isCastingPossible = true;
|
||||
break;
|
||||
case RANDOM_GENIE_SPELL: //we assume that teleport / sacrifice will never be avaliable as random spell
|
||||
case RANDOM_GENIE_SPELL: //we assume that teleport / sacrifice will never be available as random spell
|
||||
sp = nullptr;
|
||||
consoleMsg = boost::str(boost::format(CGI->generaltexth->allTexts[301]) % shere->getName()); //Cast a spell on %
|
||||
creatureCasting = true;
|
||||
|
@ -7,7 +7,7 @@
|
||||
# FFMPEG_LIBRARIES - Link these to use the required ffmpeg components.
|
||||
# FFMPEG_DEFINITIONS - Compiler switches required for using the required ffmpeg components.
|
||||
#
|
||||
# For each of the components it will additionaly set.
|
||||
# For each of the components it will additionally set.
|
||||
# - AVCODEC
|
||||
# - AVDEVICE
|
||||
# - AVFORMAT
|
||||
|
@ -172,7 +172,7 @@
|
||||
},
|
||||
"absoluteImmunity":{
|
||||
"$ref" : "#/definitions/flags",
|
||||
"description": "flags structure of bonus names. Any one of these bonus grants immunity, cant be negated"
|
||||
"description": "flags structure of bonus names. Any one of these bonus grants immunity, can't be negated"
|
||||
},
|
||||
"limit":{
|
||||
"$ref" : "#/definitions/flags",
|
||||
|
@ -1242,7 +1242,7 @@ std::pair<const CStack *, BattleHex> CBattleInfoCallback::getNearestStack(const
|
||||
if(boost::logic::indeterminate(attackerOwned) || atG->attackerOwned == attackerOwned)
|
||||
{
|
||||
if (reachability.isReachable(g))
|
||||
//FIXME: hexes occupied by enemy stack are not accessible. Need to use BattleInfo::getPath or similiar
|
||||
//FIXME: hexes occupied by enemy stack are not accessible. Need to use BattleInfo::getPath or similar
|
||||
{
|
||||
DistStack hlp = {reachability.distances[reachability.predecessors[g]], atG};
|
||||
stackPairs.push_back(hlp);
|
||||
@ -1872,7 +1872,7 @@ ESpellCastProblem::ESpellCastProblem CBattleInfoCallback::battleCanCastThisSpell
|
||||
{
|
||||
switch (obstacle->obstacleType)
|
||||
{
|
||||
case CObstacleInstance::ABSOLUTE_OBSTACLE: //cliff-like obstacles cant be removed
|
||||
case CObstacleInstance::ABSOLUTE_OBSTACLE: //cliff-like obstacles can't be removed
|
||||
case CObstacleInstance::MOAT:
|
||||
return ESpellCastProblem::NO_APPROPRIATE_TARGET;
|
||||
case CObstacleInstance::USUAL:
|
||||
|
@ -111,7 +111,7 @@ namespace BattlePerspective
|
||||
};
|
||||
}
|
||||
|
||||
// Reachability info is result of BFS calculation. It's dependant on stack (it's owner, whether it's flying),
|
||||
// Reachability info is result of BFS calculation. It's dependent on stack (it's owner, whether it's flying),
|
||||
// startPosition and perpective.
|
||||
struct DLL_LINKAGE ReachabilityInfo
|
||||
{
|
||||
|
@ -3312,18 +3312,18 @@ DuelParameters DuelParameters::fromJSON(const std::string &fname)
|
||||
CusomCreature cc;
|
||||
cc.id = n["id"].Float();
|
||||
|
||||
#define retreive(name) \
|
||||
#define retrieve(name) \
|
||||
if(n[ #name ].getType() == JsonNode::DATA_FLOAT)\
|
||||
cc.name = n[ #name ].Float(); \
|
||||
else \
|
||||
cc.name = -1;
|
||||
|
||||
retreive(attack);
|
||||
retreive(defense);
|
||||
retreive(HP);
|
||||
retreive(dmg);
|
||||
retreive(shoots);
|
||||
retreive(speed);
|
||||
retrieve(attack);
|
||||
retrieve(defense);
|
||||
retrieve(HP);
|
||||
retrieve(dmg);
|
||||
retrieve(shoots);
|
||||
retrieve(speed);
|
||||
ret.creatures.push_back(cc);
|
||||
}
|
||||
|
||||
|
@ -112,7 +112,7 @@ class CContentHandler
|
||||
ContentTypeHandler(IHandlerBase * handler, std::string objectName);
|
||||
|
||||
/// local version of methods in ContentHandler
|
||||
/// returns true if loading was successfull
|
||||
/// returns true if loading was successful
|
||||
bool preloadModData(std::string modName, std::vector<std::string> fileList, bool validate);
|
||||
bool loadMod(std::string modName, bool validate);
|
||||
void afterLoadFinalization();
|
||||
|
@ -4714,7 +4714,7 @@ void CGSeerHut::setObjToKill()
|
||||
{
|
||||
if (quest->missionType == CQuest::MISSION_KILL_CREATURE)
|
||||
{
|
||||
quest->stackToKill = getCreatureToKill(false)->getStack(SlotID(0)); //FIXME: stacks tend to dissapear (desync?) on server :?
|
||||
quest->stackToKill = getCreatureToKill(false)->getStack(SlotID(0)); //FIXME: stacks tend to disappear (desync?) on server :?
|
||||
assert(quest->stackToKill.type);
|
||||
quest->stackToKill.count = 0; //no count in info window
|
||||
quest->stackDirection = checkDirection();
|
||||
@ -5353,7 +5353,7 @@ std::vector<int3> CGMagicSpring::getVisitableOffsets() const
|
||||
|
||||
int3 CGMagicSpring::getVisitableOffset() const
|
||||
{
|
||||
//FIXME: this also shoudl stop AI from passing through already visited spring, is that ok?
|
||||
//FIXME: this also should stop AI from passing through already visited spring, is that ok?
|
||||
auto visitableTiles = getVisitableOffsets();
|
||||
|
||||
if (visitableTiles.size() < 2)
|
||||
@ -5366,7 +5366,7 @@ int3 CGMagicSpring::getVisitableOffset() const
|
||||
else
|
||||
{
|
||||
if (visitedTile == RIGHT)
|
||||
return visitableTiles[0]; //visit teh other one now
|
||||
return visitableTiles[0]; //visit the other one now
|
||||
else if (visitedTile == LEFT)
|
||||
return visitableTiles[1];
|
||||
else
|
||||
|
@ -167,7 +167,7 @@ private:
|
||||
ETargetType targetType;
|
||||
|
||||
std::vector<Bonus::BonusType> immunities; //any of these grants immunity
|
||||
std::vector<Bonus::BonusType> absoluteImmunities; //any of these grants immunity, cant be negated
|
||||
std::vector<Bonus::BonusType> absoluteImmunities; //any of these grants immunity, can't be negated
|
||||
std::vector<Bonus::BonusType> limiters; //all of them are required to be affected
|
||||
|
||||
///graphics related stuff
|
||||
|
@ -1066,7 +1066,7 @@ public:
|
||||
bool saving;
|
||||
std::map<ui16,CBasicPointerLoader*> loaders; // typeID => CPointerSaver<serializer,type>
|
||||
si32 fileVersion;
|
||||
bool reverseEndianess; //if source has different endianess than us, we reverse bytes
|
||||
bool reverseEndianess; //if source has different endianness than us, we reverse bytes
|
||||
|
||||
std::map<ui32, void*> loadedPointers;
|
||||
std::map<ui32, const std::type_info*> loadedPointersTypes;
|
||||
@ -1574,7 +1574,7 @@ public:
|
||||
TSocket * socket;
|
||||
bool logging;
|
||||
bool connected;
|
||||
bool myEndianess, contactEndianess; //true if little endian, if endianess is different we'll have to revert received multi-byte vars
|
||||
bool myEndianess, contactEndianess; //true if little endian, if endianness is different we'll have to revert received multi-byte vars
|
||||
boost::asio::io_service *io_service;
|
||||
std::string name; //who uses this connection
|
||||
|
||||
|
@ -505,7 +505,7 @@ ui32 IBonusBearer::Speed( int turn /*= 0*/ , bool useBind /* = false*/) const
|
||||
bool IBonusBearer::isLiving() const //TODO: theoreticaly there exists "LIVING" bonus in stack experience documentation
|
||||
{
|
||||
std::stringstream cachingStr;
|
||||
cachingStr << "type_" << Bonus::UNDEAD << "s_-1Otype_" << Bonus::NON_LIVING << "s_-11type_" << Bonus::SIEGE_WEAPON; //I don't relaly get what string labels mean?
|
||||
cachingStr << "type_" << Bonus::UNDEAD << "s_-1Otype_" << Bonus::NON_LIVING << "s_-11type_" << Bonus::SIEGE_WEAPON; //I don't really get what string labels mean?
|
||||
return !hasBonus(Selector::type(Bonus::UNDEAD)
|
||||
.Or(Selector::type(Bonus::NON_LIVING))
|
||||
.Or(Selector::type(Bonus::SIEGE_WEAPON)), cachingStr.str());
|
||||
@ -1327,7 +1327,7 @@ Bonus * Bonus::addLimiter(TLimiterPtr Limiter)
|
||||
{
|
||||
if (limiter)
|
||||
{
|
||||
//If we already have limiter list, retreive it
|
||||
//If we already have limiter list, retrieve it
|
||||
auto limiterList = std::dynamic_pointer_cast<LimiterList>(limiter);
|
||||
if(!limiterList)
|
||||
{
|
||||
|
@ -133,6 +133,6 @@ public:
|
||||
virtual void playerStartsTurn(PlayerColor player){};
|
||||
virtual void showComp(const Component &comp, std::string message) {}; //display component in the advmapint infobox
|
||||
|
||||
//TODO shouldnt be moved down the tree?
|
||||
//TODO shouldn't be moved down the tree?
|
||||
virtual void heroExchangeStarted(ObjectInstanceID hero1, ObjectInstanceID hero2, QueryID queryID){};
|
||||
};
|
||||
|
@ -731,7 +731,7 @@ namespace
|
||||
std::string additionalItemsCheck(Validation::ValidationData & validator, const JsonNode & baseSchema, const JsonNode & schema, const JsonNode & data)
|
||||
{
|
||||
std::string errors;
|
||||
// "items" is struct or empty (defaults to empty struct) - validation always successfull
|
||||
// "items" is struct or empty (defaults to empty struct) - validation always successful
|
||||
const JsonNode & items = baseSchema["items"];
|
||||
if (items.getType() != JsonNode::DATA_VECTOR)
|
||||
return "";
|
||||
|
@ -89,7 +89,7 @@ public:
|
||||
/// do actual parsing. filename is name of file that will printed to console if any errors were found
|
||||
JsonNode parse(std::string fileName);
|
||||
|
||||
/// returns true if parsing was successfull
|
||||
/// returns true if parsing was successful
|
||||
bool isValid();
|
||||
};
|
||||
|
||||
|
@ -379,7 +379,7 @@ void JsonUtils::resolveIdentifier (si32 &var, const JsonNode &node, std::string
|
||||
});
|
||||
break;
|
||||
default:
|
||||
logGlobal->errorStream() << "Error! Wrong indentifier used for value of " << name;
|
||||
logGlobal->errorStream() << "Error! Wrong identifier used for value of " << name;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -398,7 +398,7 @@ void JsonUtils::resolveIdentifier (const JsonNode &node, si32 &var)
|
||||
});
|
||||
break;
|
||||
default:
|
||||
logGlobal->errorStream() << "Error! Wrong indentifier used for identifier!";
|
||||
logGlobal->errorStream() << "Error! Wrong identifier used for identifier!";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -196,7 +196,7 @@ namespace JsonUtils
|
||||
|
||||
namespace JsonDetail
|
||||
{
|
||||
// convertion helpers for JsonNode::convertTo (partial template function instantiation is illegal in c++)
|
||||
// conversion helpers for JsonNode::convertTo (partial template function instantiation is illegal in c++)
|
||||
|
||||
template <typename T, int arithm>
|
||||
struct JsonConvImpl;
|
||||
|
@ -868,7 +868,7 @@ DLL_LINKAGE void MoveArtifact::applyGs( CGameState *gs )
|
||||
|
||||
a->move(src, dst);
|
||||
|
||||
//TODO what'll happen if Titan's thunder is equiped by pickin git up or the start of game?
|
||||
//TODO what'll happen if Titan's thunder is equipped by pickin git up or the start of game?
|
||||
if (a->artType->id == 135 && dst.slot == ArtifactPosition::RIGHT_HAND) //Titan's Thunder creates new spellbook on equip
|
||||
{
|
||||
auto hPtr = boost::get<ConstTransitivePtr<CGHeroInstance> >(&dst.artHolder);
|
||||
|
@ -105,7 +105,7 @@ void CArchiveLoader::initVIDArchive(const std::string &mountPoint, CFileInputStr
|
||||
}
|
||||
offsets.insert(fileStream.getSize());
|
||||
|
||||
// now when we know postion of all files their sizes can be set correctly
|
||||
// now when we know position of all files their sizes can be set correctly
|
||||
for (auto & entry : entries)
|
||||
{
|
||||
auto it = offsets.find(entry.second.offset);
|
||||
|
@ -127,7 +127,7 @@ static bool extractCurrent(unzFile file, std::ostream & where)
|
||||
if (readSize == 0) // end-of-file. Also performs CRC check
|
||||
return unzCloseCurrentFile(file) == UNZ_OK;
|
||||
|
||||
if (readSize > 0) // successfull read
|
||||
if (readSize > 0) // successful read
|
||||
{
|
||||
where.write(buffer.data(), readSize);
|
||||
if (!where.good())
|
||||
|
@ -72,7 +72,7 @@ public:
|
||||
ResourceID();
|
||||
|
||||
/**
|
||||
* Ctor. Can be used to create indentifier for resource loading using one parameter
|
||||
* Ctor. Can be used to create identifier for resource loading using one parameter
|
||||
*
|
||||
* @param fullName The resource name including extension.
|
||||
*/
|
||||
|
@ -117,7 +117,7 @@
|
||||
<li>Extended usefulness of ONLY_DISTANCE_FIGHT, ONLY_MELEE_FIGHT ranges</li>
|
||||
<li>Double growth creatures are configurable now</li>
|
||||
<li>Drain Life now has % effect depending on bonus value</li>
|
||||
<li>Stack can use more than 2 attacks. Additional attacks can now be seperated as "ONLY_MELEE_FIGHT and "ONLY_DISTANCE_FIGHT".</li>
|
||||
<li>Stack can use more than 2 attacks. Additional attacks can now be separated as "ONLY_MELEE_FIGHT and "ONLY_DISTANCE_FIGHT".</li>
|
||||
<li>Moat damage configurable</li>
|
||||
<li>More config options for spells:
|
||||
<ul>
|
||||
|
@ -1594,7 +1594,7 @@ IexpValStr ERMInterpreter::getVar(std::string toFollow, boost::optional<int> ini
|
||||
{
|
||||
if(initV > 0 && initV <= FunctionLocalVars::NUM_LOCALS)
|
||||
{
|
||||
int &valPtr = curFunc ? curFunc->getLocal(initV) : const_cast<ERMInterpreter&>(*this).getFuncVars(0)->getLocal(initV); //retreive local var if in function or use global set otherwise
|
||||
int &valPtr = curFunc ? curFunc->getLocal(initV) : const_cast<ERMInterpreter&>(*this).getFuncVars(0)->getLocal(initV); //retrieve local var if in function or use global set otherwise
|
||||
if(retIt)
|
||||
ret = IexpValStr(&valPtr);
|
||||
else
|
||||
|
@ -137,7 +137,7 @@ void Queries::popQuery(PlayerColor player, QueryPtr query)
|
||||
|
||||
query->onRemoval(gh, player);
|
||||
|
||||
//Exposure on query below happens only if removal didnt trigger any new query
|
||||
//Exposure on query below happens only if removal didn't trigger any new query
|
||||
if(nextQuery && nextQuery == topQuery(player))
|
||||
{
|
||||
nextQuery->onExposure(gh, query);
|
||||
|
@ -23,7 +23,7 @@ VCMI is a fan-made open-source project in progress. We already allow support for
|
||||
Learn more about VCMI Project at \href{http://wiki.vcmi.eu/index.php?title=VCMI}{Wiki}.\\
|
||||
Check \href{http://spreadsheets.google.com/ccc?key=pRhYM0YkAF9lIpLe4raNAWA&hl=pl}{google docs} for the list of already implemented objects, spells and artifacts.
|
||||
\section{Installation}
|
||||
VCMI requires Heroes of Might \& Magic 3 complete + WoG 3.58f installation and will not run properly without their files. We strongly recommend using English version, other languages may cause unexpected errors or bizzare font glitches.\\
|
||||
VCMI requires Heroes of Might \& Magic 3 complete + WoG 3.58f installation and will not run properly without their files. We strongly recommend using English version, other languages may cause unexpected errors or bizarre font glitches.\\
|
||||
If you don't have Wake of Gods 3.58f yet, click \href{http://www.maps4heroes.com/heroes3/files/allinone_358f.zip}{here}.\\
|
||||
For English language files, extract \href{http://download.vcmi.eu/dataEN.7z}{this package} to your \texttt{Data} folder.\bigskip\\
|
||||
Starting from 0.90, VCMI can be also installed on H3 + ERA setups.
|
||||
@ -80,7 +80,7 @@ Current list of Stack Artifacts available for testing:
|
||||
\label{Stack_Queue}
|
||||
\subsection{Stack Queue}
|
||||
Stack queue is a feature coming straight from HoMM5, which allows you to see order of stacks on the battlefield, sorted from left to right. To toggle in on/off, press `Q' during the battle.\\
|
||||
There is smaller and bigger version of it, the second one is avaliable only in higher resolutions.
|
||||
There is smaller and bigger version of it, the second one is available only in higher resolutions.
|
||||
\subsection{Pathfinder}
|
||||
VCMI introduces improved pathfinder, which may find the way on adventure map using ships and subterranean gates. Simply click your destination on another island or level and the proposed path will be displayed.
|
||||
\label{Quest_Log}
|
||||
@ -154,22 +154,22 @@ It is possible to save a starting configuration (such as map and options) in pre
|
||||
\newpage
|
||||
\section{Release notes}
|
||||
\begin{itemize}
|
||||
\item In 0.89 \hyperref[Commanders]{Commanders} and \hyperref[Stack_Artifacts]{Stack Artifacts} were implemented and enabled by default. There are four Stack Artifacts avaliable. Their behaviour has been altered for testing purpose only.
|
||||
\item In 0.89 \hyperref[Commanders]{Commanders} and \hyperref[Stack_Artifacts]{Stack Artifacts} were implemented and enabled by default. There are four Stack Artifacts available. Their behaviour has been altered for testing purpose only.
|
||||
\item \hyperref[Stack_Experience]{Stack Experience} is enabled by default. It's an optional feature, but needs complex tesing. Mechanics and tables from original WoG 3.58f were used for this purpose. Note that not all of WoG creature abilities are handled.
|
||||
\item Online game, random map generator as well as some other parts of the game are not yet implemented. Do not worry if nothing happens when you click them, please report only actual bugs and game crashes.
|
||||
\item It is possible to start the campaign, althought heroes will not carry over to subsequent scenarios.
|
||||
\item It is possible to start the campaign, although heroes will not carry over to subsequent scenarios.
|
||||
\end{itemize}
|
||||
\subsection{Android port}
|
||||
Android port, despite some rumours, is not complete and may crash at random. The port is work of a Peyla - volunteer outside of VCMI team, who abandoned it. Any Android support is beyond our scope.
|
||||
\label{Feedback}
|
||||
\section{Feedback}
|
||||
Our project is open and its sources are avaliable for everyone to browse and download. We do our best to inform community of Heroes fans with all the details and development progress. We also look forward to your comments, support and advice.\medskip\\
|
||||
A good place to start is \href{http://wiki.vcmi.eu/index.php?title=Main_Page}{VCMI Wiki} which contains all neccessary information for developers, testers and the people who would like to get familiar with our project.
|
||||
Our project is open and its sources are available for everyone to browse and download. We do our best to inform community of Heroes fans with all the details and development progress. We also look forward to your comments, support and advice.\medskip\\
|
||||
A good place to start is \href{http://wiki.vcmi.eu/index.php?title=Main_Page}{VCMI Wiki} which contains all necessary information for developers, testers and the people who would like to get familiar with our project.
|
||||
If you want to report a bug, use \href{http://bugs.vcmi.eu/bug_report_advanced_page.php}{Mantis Bugtracker}.\\
|
||||
Make sure the issue is not already mentioned on \href{http://bugs.vcmi.eu/view_all_bug_page.php}{the list} unless you can provide additional details for it.\\
|
||||
Please do not report as bugs features not yet implemented. For proposing new ideas and requests, visit \href{http://forum.vcmi.eu/index.php}{our board}.\medskip\\
|
||||
VCMI comes with its own bug handlers: the console which prints game log \texttt{(server\_log, VCMI\_Client\_log, VCMI\_Server\_log)} and memory dump file (\texttt{.dmp}) created on crash on Windows systems. These may be very helpful when the nature of bug is not obvious, please attach them if necessary.\medskip\\
|
||||
To resolve an issue, we must be able to reproduce it on our computers. Please put down all circumstances in which a bug occured and what did you do before, especially if it happens rarely or is not clearly visible. The better report, the better chance to track the bug quickly.
|
||||
To resolve an issue, we must be able to reproduce it on our computers. Please put down all circumstances in which a bug occurred and what did you do before, especially if it happens rarely or is not clearly visible. The better report, the better chance to track the bug quickly.
|
||||
\subsubsection{Linux notes}
|
||||
On *nix-like systems logs can be found in \texttt{$\sim$/.vcmi} directory. \\
|
||||
When reporting compilation issues please specify name and version of your distribution.
|
||||
|
Loading…
Reference in New Issue
Block a user