New quests work
This commit is contained in:
1 parent
63bdfb8ff6
commit
bb238f9b72
13 files changed
+294
-523
No files matched your search
@@ -37,39 +37,32 @@ TGoalVec CompleteQuest::decompose() const
|
||||
}
|
||||
|
||||
logAi->debug("Trying to realize quest: %s", questToString());
|
||||
|
||||
switch(q.quest->missionType)
|
||||
{
|
||||
case CQuest::MISSION_ART:
|
||||
|
||||
if(!q.quest->artifacts.empty())
|
||||
return missionArt();
|
||||
|
||||
case CQuest::MISSION_HERO:
|
||||
if(!q.quest->heroes.empty())
|
||||
return missionHero();
|
||||
|
||||
case CQuest::MISSION_ARMY:
|
||||
if(!q.quest->creatures.empty())
|
||||
return missionArmy();
|
||||
|
||||
case CQuest::MISSION_RESOURCES:
|
||||
if(q.quest->resources.nonZero())
|
||||
return missionResources();
|
||||
|
||||
case CQuest::MISSION_KILL_HERO:
|
||||
case CQuest::MISSION_KILL_CREATURE:
|
||||
if(q.quest->killTarget >= 0)
|
||||
return missionDestroyObj();
|
||||
|
||||
case CQuest::MISSION_PRIMARY_STAT:
|
||||
return missionIncreasePrimaryStat();
|
||||
for(auto & s : q.quest->primary)
|
||||
if(s)
|
||||
return missionIncreasePrimaryStat();
|
||||
|
||||
case CQuest::MISSION_LEVEL:
|
||||
if(q.quest->heroLevel > 0)
|
||||
return missionLevel();
|
||||
|
||||
case CQuest::MISSION_PLAYER:
|
||||
break;
|
||||
|
||||
case CQuest::MISSION_KEYMASTER:
|
||||
|
||||
if(q.quest->questName == CQuest::missionName(10))
|
||||
return missionKeymaster();
|
||||
|
||||
} //end of switch
|
||||
|
||||
return TGoalVec();
|
||||
}
|
||||
|
||||
@@ -104,7 +97,7 @@ std::string CompleteQuest::questToString() const
|
||||
return "find " + VLC->generaltexth->tentColors[q.obj->subID] + " keymaster tent";
|
||||
}
|
||||
|
||||
if(q.quest->missionType == CQuest::MISSION_NONE)
|
||||
if(q.quest->questName == CQuest::missionName(0))
|
||||
return "inactive quest";
|
||||
|
||||
MetaString ms;
|
||||
|
||||
@@ -130,7 +130,7 @@ namespace AIPathfinding
|
||||
auto questInfo = QuestInfo(questObj->quest, destination.nodeObject, destination.coord);
|
||||
QuestAction questAction(questInfo);
|
||||
|
||||
if(destination.nodeObject->ID == Obj::QUEST_GUARD && questObj->quest->missionType == CQuest::MISSION_NONE)
|
||||
if(destination.nodeObject->ID == Obj::QUEST_GUARD && questObj->quest->questName == CQuest::missionName(0))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -25,41 +25,34 @@ TGoalVec CompleteQuest::getAllPossibleSubgoals()
|
||||
{
|
||||
TGoalVec solutions;
|
||||
|
||||
if(q.quest->missionType && q.quest->progress != CQuest::COMPLETE)
|
||||
if(q.quest->progress != CQuest::COMPLETE)
|
||||
{
|
||||
logAi->debug("Trying to realize quest: %s", questToString());
|
||||
|
||||
switch(q.quest->missionType)
|
||||
{
|
||||
case CQuest::MISSION_ART:
|
||||
if(!q.quest->artifacts.empty())
|
||||
return missionArt();
|
||||
|
||||
case CQuest::MISSION_HERO:
|
||||
if(!q.quest->heroes.empty())
|
||||
return missionHero();
|
||||
|
||||
case CQuest::MISSION_ARMY:
|
||||
if(!q.quest->creatures.empty())
|
||||
return missionArmy();
|
||||
|
||||
case CQuest::MISSION_RESOURCES:
|
||||
if(q.quest->resources.nonZero())
|
||||
return missionResources();
|
||||
|
||||
case CQuest::MISSION_KILL_HERO:
|
||||
case CQuest::MISSION_KILL_CREATURE:
|
||||
if(q.quest->killTarget >= 0)
|
||||
return missionDestroyObj();
|
||||
|
||||
case CQuest::MISSION_PRIMARY_STAT:
|
||||
return missionIncreasePrimaryStat();
|
||||
for(auto & s : q.quest->primary)
|
||||
if(s)
|
||||
return missionIncreasePrimaryStat();
|
||||
|
||||
case CQuest::MISSION_LEVEL:
|
||||
if(q.quest->heroLevel > 0)
|
||||
return missionLevel();
|
||||
|
||||
case CQuest::MISSION_PLAYER:
|
||||
break;
|
||||
|
||||
case CQuest::MISSION_KEYMASTER:
|
||||
if(q.quest->questName == CQuest::missionName(10))
|
||||
return missionKeymaster();
|
||||
|
||||
} //end of switch
|
||||
}
|
||||
|
||||
return TGoalVec();
|
||||
@@ -67,7 +60,7 @@ TGoalVec CompleteQuest::getAllPossibleSubgoals()
|
||||
|
||||
TSubgoal CompleteQuest::whatToDoToAchieve()
|
||||
{
|
||||
if(q.quest->missionType == CQuest::MISSION_NONE)
|
||||
if(q.quest->questName == CQuest::missionName(0))
|
||||
{
|
||||
throw cannotFulfillGoalException("Can not complete inactive quest");
|
||||
}
|
||||
@@ -101,7 +94,7 @@ std::string CompleteQuest::completeMessage() const
|
||||
|
||||
std::string CompleteQuest::questToString() const
|
||||
{
|
||||
if(q.quest->missionType == CQuest::MISSION_NONE)
|
||||
if(q.quest->questName == CQuest::missionName(0))
|
||||
return "inactive quest";
|
||||
|
||||
MetaString ms;
|
||||
|
||||
Reference in new issue
Block a user