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

CGCreature::takenAction: add neverFlee check. Fix issue 2242

This commit is contained in:
ArseniyShestakov 2015-11-25 09:34:49 +03:00
parent 3d8f67f864
commit 64c6d3c950

View File

@ -164,7 +164,7 @@ void CGCreature::onHeroVisit( const CGHeroInstance * h ) const
case FIGHT:
fight(h);
break;
case FLEE: //flee
case FLEE:
{
flee(h);
break;
@ -322,13 +322,13 @@ int CGCreature::takenAction(const CGHeroInstance *h, bool allowJoin) const
int charisma = powerFactor + h->getSecSkillLevel(SecondarySkill::DIPLOMACY) + sympathy;
if(charisma < character) //creatures will fight
return -2;
if(charisma < character)
return FIGHT;
if (allowJoin)
{
if(h->getSecSkillLevel(SecondarySkill::DIPLOMACY) + sympathy + 1 >= character)
return 0; //join for free
return JOIN_FOR_FREE;
else if(h->getSecSkillLevel(SecondarySkill::DIPLOMACY) * 2 + sympathy + 1 >= character)
return VLC->creh->creatures[subID]->cost[6] * getStackCount(SlotID(0)); //join for gold
@ -336,10 +336,10 @@ int CGCreature::takenAction(const CGHeroInstance *h, bool allowJoin) const
//we are still here - creatures have not joined hero, flee or fight
if (charisma > character)
return -1; //flee
if (charisma > character && !neverFlees)
return FLEE;
else
return -2; //fight
return FIGHT;
}
void CGCreature::fleeDecision(const CGHeroInstance *h, ui32 pursue) const
@ -361,7 +361,7 @@ void CGCreature::joinDecision(const CGHeroInstance *h, int cost, ui32 accept) co
{
if(!accept)
{
if(takenAction(h,false) == -1) //they flee
if(takenAction(h,false) == FLEE)
{
cb->setObjProperty(id, ObjProperty::MONSTER_REFUSED_JOIN, true);
flee(h);