1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

Merge pull request #272 from dydzio0614/bug2600

Nice, thanks :)
This commit is contained in:
DjWarmonger 2017-02-01 17:57:58 +01:00 committed by GitHub
commit 6d37c8bceb
4 changed files with 24 additions and 1 deletions

View File

@ -18,6 +18,12 @@
"description": "May Retaliate ${val} extra times"
},
"CATAPULT_EXTRA_SHOTS":
{
"name": "Additional siege attacks",
"description": "Can hit siege walls ${val} extra times per attack"
},
"AIR_IMMUNITY":
{
"name": "Air immunity",

View File

@ -269,6 +269,14 @@
"index": 95,
"level": 6,
"faction": "stronghold",
"abilities":
{
"siegeDoubleAttack" :
{
"type" : "CATAPULT_EXTRA_SHOTS",
"val" : 1
}
},
"graphics" :
{
"animation": "CCYCLLOR.DEF",

View File

@ -216,6 +216,7 @@ public:
BONUS_NAME(DISGUISED) /* subtype - spell level */\
BONUS_NAME(VISIONS) /* subtype - spell level */\
BONUS_NAME(NO_TERRAIN_PENALTY) /* subtype - terrain type */\
BONUS_NAME(CATAPULT_EXTRA_SHOTS) /*val - number of additional shots, requires CATAPULT bonus to work*/\
/* end of list */

View File

@ -3954,7 +3954,15 @@ bool CGameHandler::makeBattleAction(BattleAction &ba)
auto wrapper = wrapAction(ba);
const CGHeroInstance * attackingHero = gs->curB->battleGetFightingHero(ba.side);
CHeroHandler::SBallisticsLevelInfo sbi = VLC->heroh->ballistics.at(attackingHero->getSecSkillLevel(SecondarySkill::BALLISTICS));
CHeroHandler::SBallisticsLevelInfo sbi;
if(stack->getCreature()->idNumber == CreatureID::CATAPULT)
sbi = VLC->heroh->ballistics.at(attackingHero->getSecSkillLevel(SecondarySkill::BALLISTICS));
else //may need to use higher ballistics level for creatures in future for some cases to match original H3 (upgraded cyclops etc)
{
sbi = VLC->heroh->ballistics.at(1);
sbi.shots += std::max(stack->valOfBonuses(Bonus::CATAPULT_EXTRA_SHOTS), 0);
}
auto wallPart = gs->curB->battleHexToWallPart(ba.destinationTile);
if (!gs->curB->isWallPartPotentiallyAttackable(wallPart))