gdle/Source/BindStone.cpp

52 lines
1.4 KiB
C++
Raw Permalink Normal View History

2018-03-29 17:01:57 -04:00
2019-07-07 20:56:15 +00:00
#include <StdAfx.h>
2018-03-29 17:01:57 -04:00
#include "WeenieObject.h"
#include "PhysicsObj.h"
#include "BindStone.h"
#include "Player.h"
#include "UseManager.h"
#include "AllegianceManager.h"
CBindStone::CBindStone()
{
}
CBindStone::~CBindStone()
{
}
2018-07-12 14:41:21 -07:00
int CBindStone::Use(CPlayerWeenie *pOther)
2018-03-29 17:01:57 -04:00
{
CGenericUseEvent *useEvent = new CGenericUseEvent;
useEvent->_target_id = GetID();
//useEvent->_do_use_animation = Motion_Sanctuary;
pOther->ExecuteUseEvent(useEvent);
return WERROR_NONE;
}
2018-07-12 14:41:21 -07:00
int CBindStone::DoUseResponse(CWeenieObject *player)
2018-03-29 17:01:57 -04:00
{
2019-07-07 20:56:15 +00:00
uint32_t playerId = player->GetID();
2018-03-29 17:01:57 -04:00
AllegianceTreeNode *allegianceNode = g_pAllegianceManager->GetTreeNode(playerId);
if (!allegianceNode)
return WERROR_ALLEGIANCE_NONEXISTENT;
AllegianceInfo *allegianceInfo = g_pAllegianceManager->GetInfo(allegianceNode->_monarchID);
eAllegianceOfficerLevel officerLevel = eAllegianceOfficerLevel::Undef_AllegianceOfficerLevel;
auto iterator = allegianceInfo->_info.m_AllegianceOfficers.find(playerId);
if (iterator != allegianceInfo->_info.m_AllegianceOfficers.end())
officerLevel = iterator->second;
if (allegianceNode->_monarchID == playerId || officerLevel >= eAllegianceOfficerLevel::Castellan_AllegianceOfficerLevel)
{
2018-03-29 17:01:57 -04:00
allegianceInfo->_info.m_BindPoint = m_Position;
g_pAllegianceManager->Save();
}
2018-03-29 17:01:57 -04:00
else
return WERROR_ALLEGIANCE_NOT_AUTHORIZED;
2019-09-03 14:18:02 +00:00
return CWeenieObject::DoUseResponse(player);
2018-03-29 17:01:57 -04:00
}