mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-02 00:47:45 +00:00
DelayedEmnityTask and BNpc additions
This commit is contained in:
parent
f8303be9e8
commit
0cc2a497dd
9 changed files with 84 additions and 10 deletions
|
@ -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 );
|
||||
}
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
|
|
@ -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 )
|
||||
|
|
|
@ -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 );
|
||||
|
|
31
src/world/Task/DelayedEmnityTask.cpp
Normal file
31
src/world/Task/DelayedEmnityTask.cpp
Normal 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() );
|
||||
}
|
25
src/world/Task/DelayedEmnityTask.h
Normal file
25
src/world/Task/DelayedEmnityTask.h
Normal 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;
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue