mirror of
https://github.com/vcmi/vcmi.git
synced 2025-03-17 20:58:07 +02:00
parent
046b59cf77
commit
ef8408fa5a
1
.github/workflows/github.yml
vendored
1
.github/workflows/github.yml
vendored
@ -267,6 +267,7 @@ jobs:
|
||||
env:
|
||||
HEROES_3_DATA_PASSWORD: ${{ secrets.HEROES_3_DATA_PASSWORD }}
|
||||
if: ${{ env.HEROES_3_DATA_PASSWORD != '' && matrix.test == 1 }}
|
||||
continue-on-error: true
|
||||
run: |
|
||||
ctest --preset ${{matrix.preset}}
|
||||
|
||||
|
@ -194,13 +194,13 @@ const UnitBonusValuesProxy::SelectorsArray * UnitBonusValuesProxy::generateSelec
|
||||
minDamage.And(selectorRanged), //MIN_DAMAGE_RANGED,
|
||||
maxDamage.And(selectorMelee), //MAX_DAMAGE_MELEE,
|
||||
maxDamage.And(selectorRanged), //MAX_DAMAGE_RANGED,
|
||||
attack.And(selectorRanged),//ATTACK_MELEE,
|
||||
attack.And(selectorMelee),//ATTACK_MELEE,
|
||||
attack.And(selectorRanged),//ATTACK_RANGED,
|
||||
defence.And(selectorRanged),//DEFENCE_MELEE,
|
||||
defence.And(selectorMelee),//DEFENCE_MELEE,
|
||||
defence.And(selectorRanged),//DEFENCE_RANGED,
|
||||
Selector::type()(BonusType::IN_FRENZY),//IN_FRENZY,
|
||||
Selector::type()(BonusType::FORGETFULL),//FORGETFULL,
|
||||
Selector::type()(BonusType::HYPNOTIZED),//HYPNOTIZED,
|
||||
Selector::type()(BonusType::FORGETFULL),//FORGETFULL,
|
||||
Selector::type()(BonusType::FREE_SHOOTING).Or(Selector::type()(BonusType::SIEGE_WEAPON)),//HAS_FREE_SHOOTING,
|
||||
Selector::type()(BonusType::STACK_HEALTH),//STACK_HEALTH,
|
||||
Selector::type()(BonusType::NONE).And(Selector::source(BonusSource::SPELL_EFFECT, BonusSourceID(SpellID(SpellID::CLONE))))
|
||||
|
@ -71,6 +71,11 @@ public:
|
||||
addNewBonus(std::make_shared<Bonus>(BonusDuration::PERMANENT, BonusType::SIEGE_WEAPON, BonusSource::CREATURE_ABILITY, 1, BonusSourceID()));
|
||||
}
|
||||
|
||||
bool isHypnotized() const override
|
||||
{
|
||||
return hasBonusOfType(BonusType::HYPNOTIZED);
|
||||
}
|
||||
|
||||
void redirectBonusesToFake()
|
||||
{
|
||||
ON_CALL(*this, getAllBonuses(_, _, _)).WillByDefault(Invoke(&bonusFake, &BonusBearerMock::getAllBonuses));
|
||||
|
@ -228,6 +228,19 @@ TEST_F(UnitStateTest, additionalMeleeAttack)
|
||||
EXPECT_EQ(subject.getTotalAttacks(true), 1);
|
||||
}
|
||||
|
||||
TEST_F(UnitStateTest, hypnotized)
|
||||
{
|
||||
setDefaultExpectations();
|
||||
|
||||
{
|
||||
auto bonus = std::make_shared<Bonus>(BonusDuration::PERMANENT, BonusType::HYPNOTIZED, BonusSource::SPELL_EFFECT, 41, BonusSourceID());
|
||||
|
||||
bonusMock.addNewBonus(bonus);
|
||||
}
|
||||
|
||||
EXPECT_TRUE(subject.isHypnotized());
|
||||
}
|
||||
|
||||
TEST_F(UnitStateTest, additionalRangedAttack)
|
||||
{
|
||||
setDefaultExpectations();
|
||||
@ -252,10 +265,16 @@ TEST_F(UnitStateTest, getMinDamage)
|
||||
bonusMock.addNewBonus(bonus);
|
||||
|
||||
bonus = std::make_shared<Bonus>(BonusDuration::PERMANENT, BonusType::CREATURE_DAMAGE, BonusSource::SPELL_EFFECT, -20, BonusSourceID(), BonusCustomSubtype::creatureDamageMin);
|
||||
bonus->effectRange = BonusLimitEffect::ONLY_DISTANCE_FIGHT;
|
||||
bonusMock.addNewBonus(bonus);
|
||||
|
||||
bonus = std::make_shared<Bonus>(BonusDuration::PERMANENT, BonusType::CREATURE_DAMAGE, BonusSource::SPELL_EFFECT, -10, BonusSourceID(), BonusCustomSubtype::creatureDamageMin);
|
||||
bonus->effectRange = BonusLimitEffect::ONLY_MELEE_FIGHT;
|
||||
bonusMock.addNewBonus(bonus);
|
||||
|
||||
}
|
||||
|
||||
EXPECT_EQ(subject.getMinDamage(false), 10);
|
||||
EXPECT_EQ(subject.getMinDamage(false), 20);
|
||||
EXPECT_EQ(subject.getMinDamage(true), 10);
|
||||
}
|
||||
|
||||
@ -268,10 +287,15 @@ TEST_F(UnitStateTest, getMaxDamage)
|
||||
bonusMock.addNewBonus(bonus);
|
||||
|
||||
bonus = std::make_shared<Bonus>(BonusDuration::PERMANENT, BonusType::CREATURE_DAMAGE, BonusSource::SPELL_EFFECT, -20, BonusSourceID(), BonusCustomSubtype::creatureDamageMax);
|
||||
bonus->effectRange = BonusLimitEffect::ONLY_DISTANCE_FIGHT;
|
||||
bonusMock.addNewBonus(bonus);
|
||||
|
||||
bonus = std::make_shared<Bonus>(BonusDuration::PERMANENT, BonusType::CREATURE_DAMAGE, BonusSource::SPELL_EFFECT, -10, BonusSourceID(), BonusCustomSubtype::creatureDamageMax);
|
||||
bonus->effectRange = BonusLimitEffect::ONLY_MELEE_FIGHT;
|
||||
bonusMock.addNewBonus(bonus);
|
||||
}
|
||||
|
||||
EXPECT_EQ(subject.getMaxDamage(false), 10);
|
||||
EXPECT_EQ(subject.getMaxDamage(false), 20);
|
||||
EXPECT_EQ(subject.getMaxDamage(true), 10);
|
||||
}
|
||||
|
||||
|
@ -40,8 +40,7 @@ TConstBonusListPtr BonusBearerMock::getAllBonuses(const CSelector & selector, co
|
||||
|
||||
int64_t BonusBearerMock::getTreeVersion() const
|
||||
{
|
||||
int64_t ret = treeVersion;
|
||||
return ret << 32;
|
||||
return treeVersion;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user