Changed: #1304: Add guild missions prerequisites.

This commit is contained in:
Fabien_HENON 2011-06-20 16:08:12 +02:00
parent 3479178476
commit a369dbc942
3 changed files with 86 additions and 21 deletions

View file

@ -182,9 +182,11 @@ public:
///\return the mission
inline std::vector<CMissionGuild*> & getMissions()
{
return std::vector<CMissionGuild*>();
// To Do
}
void addMission(CMissionGuild* guildMission) {}
bool isMissionSuccessfull(TAIAlias alias) { return false; }
//@}
/// inventory management

View file

@ -44,6 +44,7 @@
#include "egs_utils.h"
#include "egs_pd.h"
#include "guild_manager/guild_member_module.h"
#include "guild_manager/guild_manager.h"
#include "building_manager/building_manager.h"
#include "building_manager/room_instance.h"
#include "zone_manager.h"
@ -853,7 +854,7 @@ void CMissionManager::instanciateMission(CCharacter* user,TAIAlias alias, TAIAl
CGuild * guild = CGuildManager::getInstance()->getGuildFromId( user->getGuildId() );
if (!guild)
{
nlwarning( "<MISSIONS>cant find guild ID : %d", _GuildId );
nlwarning( "<MISSIONS>cant find guild ID : %d", user->getGuildId() );
return;
}
if ( !templ->Tags.NoList && guild->getMissions().size() >= MaxGuildMissionCount)

View file

@ -1307,21 +1307,57 @@ uint32 CMissionTemplate::testPrerequisits( CCharacter * user, CPrerequisitInfos
else if ( Type == MISSION_DESC::Guild )
{
/// todo guild mission
/*
CGuild * guild = user->getGuild();
CGuild * guild = CGuildManager::getInstance()->getGuildFromId( user->getGuildId() );
if ( guild == NULL )
{
MISDBG("No guild");
return MISSION_DESC::PreReqFail;
/*if (logOnFail)
MISDBG("%s No guild", sDebugPrefix.c_str());
if (!fillPrereqInfos)
return MISSION_DESC::PreReqFail;
prereqDesc.Description = STRING_MANAGER::sendStringToClient(user->getEntityRowId(), "MISSION_PREREQ_TEAM", TVectorParamCheck());
prereqDesc.IsMandatory = true;
prereqDesc.Validated = false;
prereqInfos.Prerequisits.push_back(prereqDesc);
addedPrereqTexts.insert("MISSION_PREREQ_TEAM");
returnValue = MISSION_DESC::PreReqFail;
logOnFail = false;*/
}
// check if the mission is already picked
for ( uint j = 0 ; j < guild->getMissions().size(); j++ )
{
if ( guild->getMissions()[j]->getTemplate()->Alias == alias )
if ( guild->getMissions()[j]->getTemplateId() == alias ||
guild->getMissions()[j]->getMainMissionTemplateId() == alias)
{
MISDBG("The guild already own this mission");
return MISSION_DESC::PreReqFail;
/*if (logOnFail)
MISDBG("%s The guild already own this mission", sDebugPrefix.c_str());
if (!fillPrereqInfos)
return MISSION_DESC::PreReqFail;
if (addedPrereqTexts.find("MISSION_PREREQ_ALREADY_DONE") == addedPrereqTexts.end())
{
prereqDesc.Description = STRING_MANAGER::sendStringToClient(user->getEntityRowId(), "MISSION_PREREQ_ALREADY_DONE", TVectorParamCheck());
prereqDesc.IsMandatory = true;
prereqDesc.Validated = false;
prereqInfos.Prerequisits.push_back(prereqDesc);
addedPrereqTexts.insert("MISSION_PREREQ_ALREADY_DONE");
}
returnValue = MISSION_DESC::PreReqFail;
logOnFail = false;*/
}
}
// check non replayable missions
if( !Tags.Replayable )
@ -1329,11 +1365,29 @@ uint32 CMissionTemplate::testPrerequisits( CCharacter * user, CPrerequisitInfos
if (guild->isMissionSuccessfull(alias))
// if ( std::find(guild->getSuccessfulMissions().begin(),guild->getSuccessfulMissions().end(), alias) != guild->getSuccessfulMissions().end() )
{
MISDBG("solo non replayable");
MISDBG("mission non replayable");
return MISSION_DESC::PreReqFail;
/*if (logOnFail)
MISDBG("%s Guild mission already done and not replayable", sDebugPrefix.c_str());
if (!fillPrereqInfos)
return MISSION_DESC::PreReqFailAlreadyDone;
if (addedPrereqTexts.find("MISSION_PREREQ_ALREADY_DONE") == addedPrereqTexts.end())
{
prereqDesc.Description = STRING_MANAGER::sendStringToClient(user->getEntityRowId(), "MISSION_PREREQ_ALREADY_DONE", TVectorParamCheck());
prereqDesc.IsMandatory = true;
prereqDesc.Validated = false;
prereqInfos.Prerequisits.push_back(prereqDesc);
addedPrereqTexts.insert("MISSION_PREREQ_ALREADY_DONE");
}
returnValue = MISSION_DESC::PreReqFailAlreadyDone;
logOnFail = false;*/
}
}
*/
}
else
{
@ -1412,7 +1466,7 @@ uint32 CMissionTemplate::testPrerequisits( CCharacter * user, CPrerequisitInfos
if ( templ->Type == MISSION_DESC::Guild )
{
/// todo guild mission
/*
CGuild* guild = CGuildManager::getInstance()->getGuildFromId( user->getGuildId() );
if ( ! guild )
{
MISDBG("Require needed mission at line %u (guild mission but player has no guild)", Prerequisits.NeededMissions[i].Line);
@ -1420,7 +1474,7 @@ uint32 CMissionTemplate::testPrerequisits( CCharacter * user, CPrerequisitInfos
}
if (guild->isMissionSuccessfull(templ->Alias))
break;
*/
}
else if ( templ->Type == MISSION_DESC::Solo )
{
@ -1473,15 +1527,14 @@ uint32 CMissionTemplate::testPrerequisits( CCharacter * user, CPrerequisitInfos
else if ( templ->Type == MISSION_DESC::Guild )
{
/// todo guild mission
/*
CGuild* guild = CGuildManager::getInstance()->getGuildFromId( user->getGuildId() );
if ( !guild )
break;
if (!guild->isMissionSuccessfull(templ->Alias))
if (!guild || !guild->isMissionSuccessfull(templ->Alias))
break;
*/
/*if (!guild || !guild->isMissionSuccessfull(templ->Alias))
break;*/
}
else if ( templ->Type == MISSION_DESC::Solo )
{
@ -1537,8 +1590,8 @@ uint32 CMissionTemplate::testPrerequisits( CCharacter * user, CPrerequisitInfos
{
/// todo guild mission
/*
CGuild* guild = CGuildManager::getInstance()->getGuildFromId( user->getGuildId() );
if ( !guild )
{
MISDBG("Require running mission at line %u (guild mission but player has no guild)", Prerequisits.RunningMissions[i].Line );
@ -1548,12 +1601,12 @@ uint32 CMissionTemplate::testPrerequisits( CCharacter * user, CPrerequisitInfos
for ( ; k < guild->getMissions().size(); k++ )
{
if ( guild->getMissions()[k]->getTemplate()->Alias == templ->Alias )
if ( guild->getMissions()[k]->getTemplateId() == templ->Alias )
break;
}
if (k != guild->getMissions().size())
break;
*/
}
else if ( templ->Type == MISSION_DESC::Solo )
{
@ -1651,20 +1704,20 @@ uint32 CMissionTemplate::testPrerequisits( CCharacter * user, CPrerequisitInfos
{
/// todo guild mission
/*
CGuild* guild = CGuildManager::getInstance()->getGuildFromId( user->getGuildId() );
if(!guild)
break;
uint k=0;
for ( ; k < guild->getMissions().size(); k++ )
{
if ( guild->getMissions()[k]->getTemplate()->Alias == templ->Alias )
if ( guild->getMissions()[k]->getTemplateId() == templ->Alias )
break;
}
if (k == guild->getMissions().size())
break;
*/
}
else if ( templ->Type == MISSION_DESC::Solo )
{
@ -2041,6 +2094,15 @@ uint32 CMissionTemplate::testPrerequisits( CCharacter * user, CPrerequisitInfos
if (!fillPrereqInfos)
return MISSION_DESC::PreReqFail;
/*if (addedPrereqTexts.find("GUILD_BUILDING_BAD_GRADE") == addedPrereqTexts.end())
{
prereqDesc.Description = STRING_MANAGER::sendStringToClient(user->getEntityRowId(), "GUILD_BUILDING_BAD_GRADE", TVectorParamCheck());
prereqDesc.IsMandatory = true;
prereqDesc.Validated = false;
prereqInfos.Prerequisits.push_back(prereqDesc);
addedPrereqTexts.insert("GUILD_BUILDING_BAD_GRADE");
}*/
returnValue = MISSION_DESC::PreReqFail;
logOnFail = false;
}