1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-24 03:47:18 +02:00

Merge pull request #4445 from IvanSavenko/fix_ranged_attack

Do not try to shoot at 2nd hex of wide creatures
This commit is contained in:
Ivan Savenko 2024-08-14 17:05:12 +03:00 committed by GitHub
commit ac717d57ea
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 3 deletions

View File

@ -245,7 +245,7 @@ AttackPossibility AttackPossibility::evaluate(
std::vector<BattleHex> defenderHex;
if(attackInfo.shooting)
defenderHex = defender->getHexes();
defenderHex.push_back(defender->getPosition());
else
defenderHex = CStack::meleeAttackHexes(attacker, defender, hex);

View File

@ -168,6 +168,7 @@ LONG WINAPI onUnhandledException(EXCEPTION_POINTERS* exception)
#endif
#ifdef NDEBUG
[[noreturn]] static void onTerminate()
{
logGlobal->error("Disaster happened.");
@ -205,6 +206,7 @@ LONG WINAPI onUnhandledException(EXCEPTION_POINTERS* exception)
#endif
std::abort();
}
#endif
void CConsoleHandler::setColor(EConsoleTextColor::EConsoleTextColor color)
{
@ -296,14 +298,14 @@ CConsoleHandler::CConsoleHandler():
GetConsoleScreenBufferInfo(handleErr, &csbi);
defErrColor = csbi.wAttributes;
#ifndef _DEBUG
#ifdef NDEBUG
SetUnhandledExceptionFilter(onUnhandledException);
#endif
#else
defColor = "\x1b[0m";
#endif
#ifndef _DEBUG
#ifdef NDEBUG
std::set_terminate(onTerminate);
#endif
}

View File

@ -173,6 +173,9 @@ bool CBattleInfoCallback::battleIsInsideWalls(BattleHex from) const
bool CBattleInfoCallback::battleHasPenaltyOnLine(BattleHex from, BattleHex dest, bool checkWall, bool checkMoat) const
{
if (!from.isAvailable() || !dest.isAvailable())
throw std::runtime_error("Invalid hex (" + std::to_string(from.hex) + " and " + std::to_string(dest.hex) + ") received in battleHasPenaltyOnLine!" );
auto isTileBlocked = [&](BattleHex tile)
{
EWallPart wallPart = battleHexToWallPart(tile);