1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-02 08:57:44 +00:00

DelayedEmnityTask and BNpc additions

This commit is contained in:
dude22072 2022-01-24 02:39:21 -06:00
parent f8303be9e8
commit 0cc2a497dd
9 changed files with 84 additions and 10 deletions

View file

@ -198,7 +198,8 @@ private:
auto& teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
auto enemy = instance->createBNpcFromInstanceId( Enemy0, 1220 /*Find the right value*/, Common::BNpcType::Enemy );
enemy->hateListAdd( player.getAsPlayer(), 1 );
enemy->setTriggerOwnerId( player.getId() );
enemy->hateListAddDelayed( player.getAsPlayer(), 1 );
quest.setBitFlag8( 1, true );
}

View file

@ -204,7 +204,8 @@ private:
auto& teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
auto enemy = instance->createBNpcFromInstanceId( Enemy0, 1220 /*Find the right value*/, Common::BNpcType::Enemy );
enemy->hateListAdd( player.getAsPlayer(), 1 );
enemy->setTriggerOwnerId( player.getId() );
enemy->hateListAddDelayed( player.getAsPlayer(), 1 );
quest.setBitFlag8( 1, true );
}

View file

@ -231,7 +231,7 @@ public:
return;
else if( entityId == Enemy0 && quest.getSeq() == Seq1 )
{
eventMgr().sendEventNotice( player, getId(), 1, 0 );
eventMgr().sendEventNotice( player, getId(), 0, 0 );
quest.setUI8BH( 0 );
quest.setSeq( Seq2 );
}
@ -290,7 +290,8 @@ private:
auto& teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
auto enemy = instance->createBNpcFromInstanceId( Enemy0, 319 /*Find the right value*/, Common::BNpcType::Enemy );
enemy->hateListAdd( player.getAsPlayer(), 1 );
enemy->setTriggerOwnerId( player.getId() );
enemy->hateListAddDelayed( player.getAsPlayer(), 1 );
}
//////////////////////////////////////////////////////////////////////

View file

@ -328,7 +328,8 @@ private:
auto& teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
auto enemy = instance->createBNpcFromInstanceId( Enemy0, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy );
enemy->hateListAdd( player.getAsPlayer(), 1 );
enemy->setTriggerOwnerId( player.getId() );
enemy->hateListAddDelayed( player.getAsPlayer(), 1 );
}
//////////////////////////////////////////////////////////////////////
@ -354,7 +355,8 @@ private:
auto& teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
auto enemy = instance->createBNpcFromInstanceId( Enemy1, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy );
enemy->hateListAdd( player.getAsPlayer(), 1 );
enemy->setTriggerOwnerId( player.getId() );
enemy->hateListAddDelayed( player.getAsPlayer(), 1 );
}
//////////////////////////////////////////////////////////////////////
@ -380,7 +382,8 @@ private:
auto& teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
auto enemy = instance->createBNpcFromInstanceId( Enemy2, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy );
enemy->hateListAdd( player.getAsPlayer(), 1 );
enemy->setTriggerOwnerId( player.getId() );
enemy->hateListAddDelayed( player.getAsPlayer(), 1 );
}
};

View file

@ -242,7 +242,8 @@ private:
auto& teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
auto enemy = instance->createBNpcFromInstanceId( Enemy0, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy );
enemy->hateListAdd( player.getAsPlayer(), 1 );
enemy->setTriggerOwnerId( player.getId() );
enemy->hateListAddDelayed( player.getAsPlayer(), 1 );
quest.setBitFlag8( 1, true );
}
@ -337,7 +338,8 @@ private:
auto& teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
auto enemy = instance->createBNpcFromInstanceId( Enemy1, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy );
enemy->hateListAdd( player.getAsPlayer(), 1 );
enemy->setTriggerOwnerId( player.getId() );
enemy->hateListAddDelayed( player.getAsPlayer(), 1 );
quest.setBitFlag8( 1, true );
}
@ -432,7 +434,8 @@ private:
auto& teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
auto enemy = instance->createBNpcFromInstanceId( Enemy2, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy );
enemy->hateListAdd( player.getAsPlayer(), 1 );
enemy->setTriggerOwnerId( player.getId() );
enemy->hateListAddDelayed( player.getAsPlayer(), 1 );
quest.setBitFlag8( 1, true );
}

View file

@ -41,6 +41,7 @@
#include <Manager/TaskMgr.h>
#include <Task/RemoveBNpcTask.h>
#include <Task/FadeBNpcTask.h>
#include <Task/DelayedEmnityTask.h>
#include <Service.h>
using namespace Sapphire::Common;
@ -480,6 +481,13 @@ void Sapphire::Entity::BNpc::hateListAdd( const Sapphire::Entity::CharaPtr& pCha
}
}
void Sapphire::Entity::BNpc::hateListAddDelayed( const Sapphire::Entity::CharaPtr& pChara, int32_t hateAmount )
{
auto& taskMgr = Common::Service< World::Manager::TaskMgr >::ref();
auto delayedEmnityTask = std::make_shared< Sapphire::World::DelayedEmnityTask >( 5000, getAsBNpc(), pChara, hateAmount );
taskMgr.queueTask( delayedEmnityTask );
}
void Sapphire::Entity::BNpc::hateListUpdate( const Sapphire::Entity::CharaPtr& pChara, int32_t hateAmount )
{
for( const auto& listEntry : m_hateList )

View file

@ -105,6 +105,7 @@ namespace Sapphire::Entity
void hateListClear();
CharaPtr hateListGetHighest();
void hateListAdd( const CharaPtr& pChara, int32_t hateAmount );
void hateListAddDelayed( const CharaPtr& pChara, int32_t hateAmount );
void hateListUpdate( const CharaPtr& pChara, int32_t hateAmount );
void hateListRemove( const CharaPtr& pChara );
bool hateListHasActor( const CharaPtr& pChara );

View file

@ -0,0 +1,31 @@
#include "DelayedEmnityTask.h"
#include <Actor/BNpc.h>
#include <Logging/Logger.h>
using namespace Sapphire::World;
Sapphire::World::DelayedEmnityTask::DelayedEmnityTask( uint64_t delayTime, Entity::BNpcPtr bnpc, Entity::CharaPtr chara, int32_t hateAmount ) :
Task(delayTime),
m_pBNpc(std::move(bnpc)),
m_pChara(std::move(chara)),
m_hateAmount( std::move(hateAmount) )
{
}
void DelayedEmnityTask::onQueue()
{
Logger::debug( { __FUNCTION__ } );
}
void DelayedEmnityTask::execute()
{
m_pBNpc->hateListAdd( m_pChara, m_hateAmount );
}
std::string DelayedEmnityTask::toString()
{
return fmt::format( "DelayedEmnityTask: BNpc#{}, Chara Name: {}, Hate Amount: {}, ElapsedTimeMs: {}", m_pBNpc->getId(), m_pChara->getName(), m_hateAmount, getDelayTimeMs() );
}

View file

@ -0,0 +1,25 @@
#pragma once
#include <cstdint>
#include <string>
#include "Task.h"
namespace Sapphire::World
{
class DelayedEmnityTask : public Task
{
public:
DelayedEmnityTask( uint64_t delayTime, Entity::BNpcPtr bnpc, Entity::CharaPtr chara, int32_t hateAmount );
void onQueue() override;
void execute() override;
std::string toString() override;
private:
Entity::BNpcPtr m_pBNpc;
Entity::CharaPtr m_pChara;
int32_t m_hateAmount;
};
}