mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-26 22:57:00 +02:00
- Made sure that stack artifacts will not spawn when they are turned off
- Description for "Spell-like attack"
This commit is contained in:
parent
a0e72785a6
commit
cf7108f075
@ -8,6 +8,7 @@
|
|||||||
{ "id": "TWO_HEX_ATTACK_BREATH", "name": "Breath", "description": "Breath Attack (2-hex range)" },
|
{ "id": "TWO_HEX_ATTACK_BREATH", "name": "Breath", "description": "Breath Attack (2-hex range)" },
|
||||||
{ "id": "SPELL_AFTER_ATTACK", "name": "Caster - %s", "description": "%d% chance to cast after attack" },
|
{ "id": "SPELL_AFTER_ATTACK", "name": "Caster - %s", "description": "%d% chance to cast after attack" },
|
||||||
{ "id": "SPELL_BEFORE_ATTACK", "name": "Caster - %s", "description": "%d% chance to cast before attack" },
|
{ "id": "SPELL_BEFORE_ATTACK", "name": "Caster - %s", "description": "%d% chance to cast before attack" },
|
||||||
|
{ "id": "SPELL_LIKE_ATTACK", "name": "Spell-like attack", "description": "Attacks with %s" },
|
||||||
{ "id": "CATAPULT", "name": "Catapult", "description": "Attacks siege walls" },
|
{ "id": "CATAPULT", "name": "Catapult", "description": "Attacks siege walls" },
|
||||||
{ "id": "JOUSTING", "name": "Champion Charge", "description": "+5% damage per hex travelled" },
|
{ "id": "JOUSTING", "name": "Champion Charge", "description": "+5% damage per hex travelled" },
|
||||||
{ "id": "DOUBLE_DAMAGE_CHANCE", "name": "Death Blow", "description": "%d% chance for double damage" },
|
{ "id": "DOUBLE_DAMAGE_CHANCE", "name": "Death Blow", "description": "%d% chance for double damage" },
|
||||||
|
@ -776,13 +776,20 @@ void CArtHandler::clearHlpLists()
|
|||||||
relics.clear();
|
relics.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CArtHandler::legalArtifact(int id)
|
||||||
|
{
|
||||||
|
return (artifacts[id]->possibleSlots[ArtBearer::HERO].size() ||
|
||||||
|
artifacts[id]->possibleSlots[ArtBearer::COMMANDER].size() && VLC->modh->modules.COMMANDERS) ||
|
||||||
|
(artifacts[id]->possibleSlots[ArtBearer::CREATURE].size() && VLC->modh->modules.STACK_ARTIFACT);
|
||||||
|
}
|
||||||
|
|
||||||
void CArtHandler::initAllowedArtifactsList(const std::vector<ui8> &allowed)
|
void CArtHandler::initAllowedArtifactsList(const std::vector<ui8> &allowed)
|
||||||
{
|
{
|
||||||
allowedArtifacts.clear();
|
allowedArtifacts.clear();
|
||||||
clearHlpLists();
|
clearHlpLists();
|
||||||
for (int i=0; i<144; ++i) //yes, 144
|
for (int i=0; i<144; ++i) //yes, 144
|
||||||
{
|
{
|
||||||
if (allowed[i])
|
if (allowed[i] && legalArtifact(i))
|
||||||
allowedArtifacts.push_back(artifacts[i]);
|
allowedArtifacts.push_back(artifacts[i]);
|
||||||
}
|
}
|
||||||
if (VLC->modh->modules.COMMANDERS) //allow all commander artifacts for testing
|
if (VLC->modh->modules.COMMANDERS) //allow all commander artifacts for testing
|
||||||
@ -798,8 +805,7 @@ void CArtHandler::initAllowedArtifactsList(const std::vector<ui8> &allowed)
|
|||||||
allowedArtifacts.push_back(artifacts[i]);
|
allowedArtifacts.push_back(artifacts[i]);
|
||||||
else //check if active modules allow artifact to be every used
|
else //check if active modules allow artifact to be every used
|
||||||
{
|
{
|
||||||
if ((artifacts[i]->possibleSlots[ArtBearer::COMMANDER].size() && VLC->modh->modules.COMMANDERS) ||
|
if (legalArtifact(i))
|
||||||
(artifacts[i]->possibleSlots[ArtBearer::CREATURE].size() && VLC->modh->modules.STACK_ARTIFACT))
|
|
||||||
allowedArtifacts.push_back(artifacts[i]);
|
allowedArtifacts.push_back(artifacts[i]);
|
||||||
//keep im mind that artifact can be worn by more than one type of bearer
|
//keep im mind that artifact can be worn by more than one type of bearer
|
||||||
}
|
}
|
||||||
|
@ -243,6 +243,7 @@ public:
|
|||||||
void clearHlpLists();
|
void clearHlpLists();
|
||||||
ui16 getRandomArt (int flags);
|
ui16 getRandomArt (int flags);
|
||||||
ui16 getArtSync (ui32 rand, int flags);
|
ui16 getArtSync (ui32 rand, int flags);
|
||||||
|
bool CArtHandler::legalArtifact(int id);
|
||||||
void getAllowedArts(std::vector<ConstTransitivePtr<CArtifact> > &out, std::vector<CArtifact*> *arts, int flag);
|
void getAllowedArts(std::vector<ConstTransitivePtr<CArtifact> > &out, std::vector<CArtifact*> *arts, int flag);
|
||||||
void getAllowed(std::vector<ConstTransitivePtr<CArtifact> > &out, int flags);
|
void getAllowed(std::vector<ConstTransitivePtr<CArtifact> > &out, int flags);
|
||||||
void erasePickedArt (TArtifactInstanceID id);
|
void erasePickedArt (TArtifactInstanceID id);
|
||||||
|
@ -646,6 +646,11 @@ std::string CStackInstance::bonusToString(Bonus *bonus, bool description) const
|
|||||||
boost::algorithm::replace_first(text, "%s", VLC->spellh->spells[bonus->subtype]->name);
|
boost::algorithm::replace_first(text, "%s", VLC->spellh->spells[bonus->subtype]->name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case Bonus::SPELL_LIKE_ATTACK:
|
||||||
|
{
|
||||||
|
boost::algorithm::replace_first(text, "%s", VLC->spellh->spells[bonus->subtype]->name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
{}//TODO: allow custom bonus types... someday, somehow
|
{}//TODO: allow custom bonus types... someday, somehow
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user