1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +02:00

Merge pull request #1935 from rilian-la-te/fix-spell-display

Fix spell display
This commit is contained in:
Ivan Savenko
2023-04-10 18:28:23 +03:00
committed by GitHub
10 changed files with 25 additions and 8 deletions

View File

@@ -63,7 +63,8 @@ int64_t CHeroWithMaybePickedArtifact::getTreeVersion() const
si32 CHeroWithMaybePickedArtifact::manaLimit() const si32 CHeroWithMaybePickedArtifact::manaLimit() const
{ {
return hero->manaLimit(); //TODO: reduplicate code with CGHeroInstance
return si32(getPrimSkillLevel(PrimarySkill::KNOWLEDGE) * (valOfBonuses(Bonus::MANA_PER_KNOWLEDGE)));
} }
CHeroWithMaybePickedArtifact::CHeroWithMaybePickedArtifact(CWindowWithArtifacts * Cww, const CGHeroInstance * Hero) CHeroWithMaybePickedArtifact::CHeroWithMaybePickedArtifact(CWindowWithArtifacts * Cww, const CGHeroInstance * Hero)

View File

@@ -56,7 +56,7 @@ public:
int64_t getTreeVersion() const override; int64_t getTreeVersion() const override;
si32 manaLimit() const override; si32 manaLimit() const;
}; };
class CHeroWindow : public CStatusbarWindow, public CGarrisonHolder, public CWindowWithArtifacts class CHeroWindow : public CStatusbarWindow, public CGarrisonHolder, public CWindowWithArtifacts

View File

@@ -65,6 +65,8 @@ public:
virtual void getCastDescription(const Spell * spell, const std::vector<const battle::Unit *> & attacked, MetaString & text) const = 0; virtual void getCastDescription(const Spell * spell, const std::vector<const battle::Unit *> & attacked, MetaString & text) const = 0;
virtual void spendMana(ServerCallback * server, const int32_t spellCost) const = 0; virtual void spendMana(ServerCallback * server, const int32_t spellCost) const = 0;
virtual int32_t manaLimit() const = 0;
}; };
} }

View File

@@ -789,11 +789,6 @@ int IBonusBearer::getMaxDamage(bool ranged) const
return valOfBonuses(selector, cachingStr); return valOfBonuses(selector, cachingStr);
} }
si32 IBonusBearer::manaLimit() const
{
return 0;
}
int IBonusBearer::getPrimSkillLevel(PrimarySkill::PrimarySkill id) const int IBonusBearer::getPrimSkillLevel(PrimarySkill::PrimarySkill id) const
{ {
static const CSelector selectorAllSkills = Selector::type()(Bonus::PRIMARY_SKILL); static const CSelector selectorAllSkills = Selector::type()(Bonus::PRIMARY_SKILL);

View File

@@ -752,7 +752,6 @@ public:
virtual si32 magicResistance() const; virtual si32 magicResistance() const;
ui32 Speed(int turn = 0, bool useBind = false) const; //get speed of creature with all modificators ui32 Speed(int turn = 0, bool useBind = false) const; //get speed of creature with all modificators
virtual si32 manaLimit() const; //maximum mana value for this hero (basically 10*knowledge)
int getPrimSkillLevel(PrimarySkill::PrimarySkill id) const; int getPrimSkillLevel(PrimarySkill::PrimarySkill id) const;
virtual int64_t getTreeVersion() const = 0; virtual int64_t getTreeVersion() const = 0;

View File

@@ -478,6 +478,11 @@ void CUnitState::getCastDescription(const spells::Spell * spell, const std::vect
text.addReplacement(MetaString::SPELL_NAME, spell->getIndex()); text.addReplacement(MetaString::SPELL_NAME, spell->getIndex());
} }
int32_t CUnitState::manaLimit() const
{
return 0; //TODO: creature casting with mana mode (for mods)
}
bool CUnitState::ableToRetaliate() const bool CUnitState::ableToRetaliate() const
{ {
return alive() return alive()

View File

@@ -194,6 +194,7 @@ public:
PlayerColor getCasterOwner() const override; PlayerColor getCasterOwner() const override;
void getCasterName(MetaString & text) const override; void getCasterName(MetaString & text) const override;
void getCastDescription(const spells::Spell * spell, const std::vector<const Unit *> & attacked, MetaString & text) const override; void getCastDescription(const spells::Spell * spell, const std::vector<const Unit *> & attacked, MetaString & text) const override;
int32_t manaLimit() const override;
bool ableToRetaliate() const override; bool ableToRetaliate() const override;
bool alive() const override; bool alive() const override;

View File

@@ -86,6 +86,14 @@ void ProxyCaster::spendMana(ServerCallback * server, const int32_t spellCost) co
actualCaster->spendMana(server, spellCost); actualCaster->spendMana(server, spellCost);
} }
int32_t ProxyCaster::manaLimit() const
{
if(actualCaster)
return actualCaster->manaLimit();
return 0;
}
} }
VCMI_LIB_NAMESPACE_END VCMI_LIB_NAMESPACE_END

View File

@@ -35,6 +35,7 @@ public:
void getCasterName(MetaString & text) const override; void getCasterName(MetaString & text) const override;
void getCastDescription(const Spell * spell, const std::vector<const battle::Unit *> & attacked, MetaString & text) const override; void getCastDescription(const Spell * spell, const std::vector<const battle::Unit *> & attacked, MetaString & text) const override;
void spendMana(ServerCallback * server, const int32_t spellCost) const override; void spendMana(ServerCallback * server, const int32_t spellCost) const override;
int32_t manaLimit() const override;
private: private:
const Caster * actualCaster; const Caster * actualCaster;

View File

@@ -168,6 +168,11 @@ public:
return owner; return owner;
} }
int32_t manaLimit() const override
{
return 0;
}
void getCasterName(MetaString & text) const override void getCasterName(MetaString & text) const override
{ {
logGlobal->error("Unexpected call to ObstacleCasterProxy::getCasterName"); logGlobal->error("Unexpected call to ObstacleCasterProxy::getCasterName");