mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-25 11:07:45 +00:00
more wedding stuff
This commit is contained in:
parent
1e8e421dba
commit
b2cc65e9ff
17 changed files with 212 additions and 42 deletions
|
@ -1439,6 +1439,20 @@ namespace Sapphire::Network::Packets::Server
|
|||
uint8_t unknown[8];
|
||||
};
|
||||
|
||||
struct FFXIVIpcEventPlay16 : FFXIVIpcBasePacket< EventPlay16 >
|
||||
{
|
||||
uint64_t actorId;
|
||||
uint32_t eventId;
|
||||
uint16_t scene;
|
||||
uint16_t padding;
|
||||
uint32_t flags;
|
||||
uint32_t param3;
|
||||
uint8_t paramSize;
|
||||
uint8_t padding1[3];
|
||||
uint32_t param5;
|
||||
uint32_t param[16];
|
||||
};
|
||||
|
||||
template< int ArgCount >
|
||||
struct FFXIVIpcEventPlayN
|
||||
{
|
||||
|
|
|
@ -77,3 +77,8 @@ uint8_t Util::floatToUInt8Rot( float val )
|
|||
{
|
||||
return static_cast< uint8_t >( 0x80 * ( ( val + PI ) ) / PI );
|
||||
}
|
||||
|
||||
float Util::floatFromUInt16Rot( uint16_t rot )
|
||||
{
|
||||
return rot / 32768.0f * PI - PI;
|
||||
}
|
|
@ -25,6 +25,8 @@ namespace Sapphire::Common::Util
|
|||
|
||||
uint16_t floatToUInt16Rot( float val );
|
||||
|
||||
float floatFromUInt16Rot( uint16_t rot );
|
||||
|
||||
uint8_t floatToUInt8Rot( float val );
|
||||
|
||||
template < typename T >
|
||||
|
|
|
@ -2,9 +2,16 @@
|
|||
#include <Territory/InstanceContent.h>
|
||||
|
||||
#include "Actor/Player.h"
|
||||
#include "Actor/EventObject.h"
|
||||
#include "Territory/PublicContent.h"
|
||||
#include <Util/UtilMath.h>
|
||||
#include "Network/CommonActorControl.h"
|
||||
#include "Network/PacketWrappers/ActorControlSelfPacket.h"
|
||||
|
||||
using namespace Sapphire;
|
||||
using namespace Sapphire::Network::ActorControl;
|
||||
using namespace Sapphire::Network::Packets;
|
||||
using namespace Sapphire::Network::Packets::Server;
|
||||
|
||||
class SanctumOfTheTwelve : public Sapphire::ScriptAPI::PublicContentScript
|
||||
{
|
||||
|
@ -13,7 +20,20 @@ public:
|
|||
|
||||
void onInit( PublicContent& instance ) override
|
||||
{
|
||||
auto exitHandler = [ & ]( Entity::Player& player, Entity::EventObjectPtr eobj, TerritoryPtr terri, uint32_t eventId, uint64_t actorId )
|
||||
{
|
||||
player.eventFinish( eventId, 1 );
|
||||
player.exitInstance();
|
||||
};
|
||||
|
||||
instance.registerEObj( "unknown_0", 2005027, 0, 0, { 0.0f, 251.103f, -60.39313f }, 1.0f, Common::Util::floatFromUInt16Rot( 28453 ) );
|
||||
instance.registerEObj( "unknown_1", 2004902, 0, 1, { -0.1025963f, 2.902821f, -125.97f }, 1.0f, Common::Util::floatFromUInt16Rot( 32767 ) );
|
||||
instance.registerEObj( "unknown_2", 2004786, 0, 0, { 0.0f, 501.103f, -60.39313f }, 1.0f, Common::Util::floatFromUInt16Rot( 28453 ) );
|
||||
instance.registerEObj( "unknown_3", 2004783, 0, 0, { 0.0f, 0.5f, 19.0f }, 1.0f, Common::Util::floatFromUInt16Rot( 32767 ) )->setOnTalkHandler( exitHandler );
|
||||
instance.registerEObj( "unknown_4", 2004783, 0, 0, { 0.0f, 250.5515f, -48.19313f }, 1.0f, Common::Util::floatFromUInt16Rot( 32767 ) )->setOnTalkHandler( exitHandler );
|
||||
instance.registerEObj( "unknown_5", 2004783, 0, 0, { -0.01531982f, 500.5456f, -48.20331 }, 0.9917603f, Common::Util::floatFromUInt16Rot( 32767 ) )->setOnTalkHandler( exitHandler );
|
||||
instance.registerEObj( "unknown_6", 2004783, 0, 0, { -0.01531982f, 750.5475f, -55.13086f }, 0.9917603f, Common::Util::floatFromUInt16Rot( 32767 ) )->setOnTalkHandler( exitHandler );
|
||||
instance.setCurrentFestival( 237, 0 );
|
||||
}
|
||||
|
||||
void onUpdate( PublicContent& instance, uint64_t tickCount ) override
|
||||
|
@ -48,8 +68,17 @@ public:
|
|||
|
||||
void onEnterTerritory( PublicContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
|
||||
{
|
||||
player.setPosAndSendActorMove( 0, 250, -50, player.getRot() );
|
||||
player.directorPlayScene( instance.getDirectorId(), 1, NONE, 0, 0, 0 );
|
||||
auto callback = [ & ]( Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
auto p = makeZonePacket< FFXIVDirectorUnk4 >( getId() );
|
||||
p->data().param[0] = instance.getDirectorId();
|
||||
p->data().param[1] = 4365;
|
||||
p->data().param[2] = 0;
|
||||
p->data().param[3] = 0;
|
||||
player.queuePacket( p );
|
||||
};
|
||||
player.queuePacket( makeActorControlSelf( getId(), DirectorUpdate, instance.getDirectorId(), 0x80000003, 1200 ) ); // timer
|
||||
player.playScene( instance.getDirectorId(), 1, HIDE_HOTBAR, 0, 2, 4, callback );
|
||||
}
|
||||
|
||||
void onDebug( Entity::Player& player, uint32_t param ) override
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
//ACTOR1 = CEREMONYSHOP01578
|
||||
//_ACTOR1 SET!!
|
||||
//SCENE_100 REMOVED!!
|
||||
#include <ctime>
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
@ -12,11 +13,16 @@
|
|||
#include "Network/PacketWrappers/ActorControlSelfPacket.h"
|
||||
|
||||
using namespace Sapphire;
|
||||
using namespace Sapphire::Network::ActorControl;
|
||||
using namespace Sapphire::Network::Packets;
|
||||
using namespace Sapphire::Network::Packets::Server;
|
||||
|
||||
class SubCts999 : public Sapphire::ScriptAPI::EventScript
|
||||
{
|
||||
private:
|
||||
TerritoryPtr currentInstance;
|
||||
public:
|
||||
SubCts999() : Sapphire::ScriptAPI::EventScript( 67114 ){};
|
||||
SubCts999() : Sapphire::ScriptAPI::EventScript( 67114 ){ currentInstance = nullptr; };
|
||||
~SubCts999() = default;
|
||||
|
||||
//SEQ_0, 1 entries
|
||||
|
@ -416,7 +422,7 @@ private:
|
|||
}
|
||||
if( type == 4 ) // BASE_ID_TERRITORY_TYPE = unknown
|
||||
{
|
||||
player.queuePacket( Sapphire::Network::Packets::Server::makeActorControlSelf( getId(), Sapphire::Network::ActorControl::ActorControlType::CeremonyDecoration, player.getQuestUI8FH( getId() ), player.getQuestUI8FL( getId() ), 0, 0 ) );
|
||||
player.queuePacket( makeActorControlSelf( getId(), ActorControlType::CeremonyDecoration, player.getQuestUI8FH( getId() ), player.getQuestUI8FL( getId() ), 0, 0 ) );
|
||||
Scene00067( player ); // Scene00067: Normal(SetWeddingFestivalParam), id=unknown
|
||||
break;
|
||||
}
|
||||
|
@ -451,7 +457,7 @@ private:
|
|||
}
|
||||
if( type == 4 ) // BASE_ID_TERRITORY_TYPE = unknown
|
||||
{
|
||||
player.queuePacket( Sapphire::Network::Packets::Server::makeActorControlSelf( getId(), Sapphire::Network::ActorControl::ActorControlType::CeremonyDecoration, player.getQuestUI8FH( getId() ), player.getQuestUI8FL( getId() ), 0, 0 ) );
|
||||
player.queuePacket( makeActorControlSelf( getId(), ActorControlType::CeremonyDecoration, player.getQuestUI8FH( getId() ), player.getQuestUI8FL( getId() ), 0, 0 ) );
|
||||
Scene00073( player ); // Scene00073: Normal(FadeIn, SetWeddingFestivalParam), id=unknown
|
||||
break;
|
||||
}
|
||||
|
@ -1365,12 +1371,25 @@ private:
|
|||
player.sendDebug( "SubCts999:67114 calling Scene00070: Normal(Talk, YesNo, TargetCanMove, SystemTalk), id=ETOINELLE" );
|
||||
auto callback = [ & ]( Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
//if( result.param1 > 0 && result.param2 == 1 )
|
||||
//{
|
||||
//}
|
||||
checkProgressSeq12( player );
|
||||
if( result.param1 == 1024 && result.param3 == 2 )
|
||||
{
|
||||
player.prepareZoning( 392, true, 1, 0, 0, 1, 8 );
|
||||
player.eventFinish( getId(), 1 );
|
||||
if( !currentInstance )
|
||||
{
|
||||
auto& terriMgr = Common::Service< World::Manager::TerritoryMgr >::ref();
|
||||
currentInstance = terriMgr.createPublicContent( 1, 392 );
|
||||
}
|
||||
Common::FFXIVARR_POSITION3 pos;
|
||||
pos.x = 0;
|
||||
pos.y = 500;
|
||||
pos.z = -50;
|
||||
player.setInstance( currentInstance, pos, -3.14f );
|
||||
}
|
||||
};
|
||||
player.playScene( getId(), 70, NONE, callback );
|
||||
std::vector< uint32_t > list;
|
||||
list.push_back( std::time( 0 ) );
|
||||
player.playScene16( getId(), 70, HIDE_HOTBAR, 0, 0, list, callback );
|
||||
}
|
||||
|
||||
void Scene00071( Entity::Player& player )
|
||||
|
@ -1401,7 +1420,6 @@ private:
|
|||
player.sendDebug( "SubCts999:67114 calling Scene00073: Normal(FadeIn, SetWeddingFestivalParam), id=unknown" );
|
||||
auto callback = [ & ]( Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
//checkProgressSeq12( player );
|
||||
};
|
||||
player.playScene( getId(), 73, HIDE_HOTBAR, callback );
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ namespace Sapphire::Entity
|
|||
Common::FFXIVARR_POSITION3 pos, float rotation, const std::string& givenName = "none" );
|
||||
|
||||
using OnTalkEventHandler = std::function< void( Entity::Player&, Entity::EventObjectPtr,
|
||||
TerritoryPtr, uint64_t ) >;
|
||||
TerritoryPtr, uint32_t, uint64_t ) >;
|
||||
|
||||
uint32_t getGimmickId() const;
|
||||
|
||||
|
|
|
@ -1830,14 +1830,14 @@ void Sapphire::Entity::Player::sendZonePackets()
|
|||
//setStateFlag( PlayerStateFlag::BetweenAreas );
|
||||
//setStateFlag( PlayerStateFlag::BetweenAreas1 );
|
||||
|
||||
if( isActionLearned( static_cast< uint8_t >( Common::UnlockEntry::HuntingLog ) ) )
|
||||
sendHuntingLog();
|
||||
|
||||
sendStats();
|
||||
|
||||
// only initialize the UI if the player in fact just logged in.
|
||||
if( isLogin() )
|
||||
{
|
||||
if( isActionLearned( static_cast< uint8_t >( Common::UnlockEntry::HuntingLog ) ) )
|
||||
sendHuntingLog();
|
||||
|
||||
auto contentFinderList = makeZonePacket< FFXIVIpcCFAvailableContents >( getId() );
|
||||
|
||||
for( auto i = 0; i < sizeof( contentFinderList->data().contents ); i++ )
|
||||
|
@ -1897,20 +1897,33 @@ void Sapphire::Entity::Player::sendZonePackets()
|
|||
queuePacket( initZonePacket );
|
||||
|
||||
if( auto d = getCurrentTerritory()->getAsDirector() )
|
||||
{
|
||||
if( d->getContentFinderConditionId() > 0 )
|
||||
{
|
||||
struct UNK00EA : FFXIVIpcBasePacket< 0x00EA >
|
||||
{
|
||||
uint32_t unknown[4];
|
||||
};
|
||||
auto p = makeZonePacket< UNK00EA >( getId() );
|
||||
p->data().unknown[0] = d->getContentFinderConditionId();
|
||||
p->data().unknown[2] = 1082270818;
|
||||
queuePacket( p );
|
||||
auto p2 = makeZonePacket< UNK00EA >( getId() );
|
||||
p2->data().unknown[0] = d->getContentFinderConditionId();
|
||||
p2->data().unknown[1] = 4;
|
||||
queuePacket( p2 );
|
||||
}
|
||||
if( d->getDirectorId() == 2147745793 )
|
||||
{
|
||||
initZonePacket->data().unknown4 = 5038252;
|
||||
initZonePacket->data().bitmask = 174;
|
||||
initZonePacket->data().bitmask1 = 0;
|
||||
initZonePacket->data().unknown8 = 12152490;
|
||||
initZonePacket->data().festivalId = 237;
|
||||
initZonePacket->data().unknown9 = 1091141632;
|
||||
initZonePacket->data().unknown10 = 1065353216;
|
||||
initZonePacket->data().unknown12[3] = 116;
|
||||
initZonePacket->data().unknown14[0] = 67372032;
|
||||
initZonePacket->data().unknown14[1] = 16843012;
|
||||
initZonePacket->data().unknown14[2] = 132097;
|
||||
}
|
||||
}
|
||||
|
||||
getCurrentTerritory()->onPlayerZoneIn( *this );
|
||||
|
||||
|
|
|
@ -111,6 +111,8 @@ namespace Sapphire::Entity
|
|||
void playSceneChain( uint32_t eventId, uint32_t scene, uint32_t flags,
|
||||
Event::EventHandler::SceneChainCallback sceneChainCallback );
|
||||
|
||||
void playScene16( uint32_t eventId, uint32_t scene, uint32_t flags, uint32_t param3, uint32_t param5, std::vector< uint32_t > paramList, Event::EventHandler::SceneReturnCallback eventReturnCallback );
|
||||
|
||||
/*! setup the event and return a ptr to it */
|
||||
Event::EventHandlerPtr bootstrapSceneEvent( uint32_t eventId, uint32_t flags );
|
||||
|
||||
|
|
|
@ -323,6 +323,34 @@ void Sapphire::Entity::Player::eventFinish( uint32_t eventId, uint32_t freePlaye
|
|||
unsetStateFlag( PlayerStateFlag::InNpcEvent );
|
||||
}
|
||||
|
||||
void Sapphire::Entity::Player::playScene16( uint32_t eventId, uint32_t scene, uint32_t flags, uint32_t param3, uint32_t param5, std::vector< uint32_t > paramList, Event::EventHandler::SceneReturnCallback eventReturnCallback )
|
||||
{
|
||||
auto pEvent = bootstrapSceneEvent( eventId, flags );
|
||||
if( !pEvent )
|
||||
return;
|
||||
|
||||
pEvent->setPlayedScene( true );
|
||||
pEvent->setEventReturnCallback( eventReturnCallback );
|
||||
pEvent->setSceneChainCallback( nullptr );
|
||||
auto eventPlay16 = makeZonePacket< FFXIVIpcEventPlay16 >( getId() );
|
||||
eventPlay16->data().actorId = pEvent->getActorId();
|
||||
eventPlay16->data().eventId = pEvent->getId();
|
||||
eventPlay16->data().scene = scene;
|
||||
eventPlay16->data().flags = flags;
|
||||
eventPlay16->data().param3 = param3;
|
||||
eventPlay16->data().param5 = param5;
|
||||
eventPlay16->data().paramSize = paramList.size();
|
||||
int i = 0;
|
||||
for( auto p : paramList )
|
||||
{
|
||||
assert( i < 16 );
|
||||
eventPlay16->data().param[ i ] = paramList.at( i );
|
||||
i++;
|
||||
}
|
||||
|
||||
queuePacket( eventPlay16 );
|
||||
}
|
||||
|
||||
void Sapphire::Entity::Player::eventActionStart( uint32_t eventId,
|
||||
uint32_t action,
|
||||
World::Action::ActionCallback finishCallback,
|
||||
|
|
|
@ -1490,4 +1490,42 @@ void Sapphire::World::Manager::DebugCommandMgr::pc( char* data, Entity::Player&
|
|||
|
||||
instance->setBranch( branch );
|
||||
}
|
||||
else if( subCommand == "objstate" )
|
||||
{
|
||||
char objName[128];
|
||||
uint8_t state;
|
||||
|
||||
sscanf( params.c_str(), "%s %hhu", objName, &state );
|
||||
|
||||
auto instance = std::dynamic_pointer_cast< PublicContent >( player.getCurrentTerritory() );
|
||||
if( !instance )
|
||||
return;
|
||||
|
||||
auto obj = instance->getEObjByName( objName );
|
||||
if( !obj )
|
||||
return;
|
||||
|
||||
obj->setState( state );
|
||||
}
|
||||
else if( subCommand == "objflag" )
|
||||
{
|
||||
char objName[256];
|
||||
uint32_t state1;
|
||||
uint32_t state2;
|
||||
|
||||
sscanf( params.c_str(), "%s %i %i", objName, &state1, &state2 );
|
||||
|
||||
auto instance = std::dynamic_pointer_cast< PublicContent >( player.getCurrentTerritory() );
|
||||
if( !instance )
|
||||
return;
|
||||
|
||||
auto obj = instance->getEObjByName( objName );
|
||||
if( !obj )
|
||||
{
|
||||
player.sendDebug( "No eobj found." );
|
||||
return;
|
||||
}
|
||||
|
||||
obj->setAnimationFlag( state1, state2 );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -379,6 +379,8 @@ void Sapphire::Network::GameConnection::pingHandler( const Packets::FFXIVARR_PAC
|
|||
|
||||
void Sapphire::Network::GameConnection::finishLoadingHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
|
||||
Entity::Player& player )
|
||||
{
|
||||
if( player.isLogin() )
|
||||
{
|
||||
player.sendQuestInfo();
|
||||
|
||||
|
@ -389,6 +391,7 @@ void Sapphire::Network::GameConnection::finishLoadingHandler( const Packets::FFX
|
|||
gcPacket->data().gcRank[ 1 ] = player.getGcRankArray()[ 1 ];
|
||||
gcPacket->data().gcRank[ 2 ] = player.getGcRankArray()[ 2 ];
|
||||
player.queuePacket( gcPacket );
|
||||
}
|
||||
|
||||
player.getCurrentTerritory()->onFinishLoading( player );
|
||||
|
||||
|
|
|
@ -22,15 +22,15 @@ namespace Sapphire::Network::Packets::Server
|
|||
uint32_t param3 = 0,
|
||||
uint32_t param4 = 0,
|
||||
uint32_t param5 = 0,
|
||||
uint32_t padding1 = 0 ) :
|
||||
uint32_t param6 = 0 ) :
|
||||
ZoneChannelPacket< FFXIVIpcActorControlSelf >( actorId, actorId )
|
||||
{
|
||||
initialize( category, param1, param2, param3, param4, param5 );
|
||||
initialize( category, param1, param2, param3, param4, param5, param6 );
|
||||
};
|
||||
|
||||
private:
|
||||
void initialize( uint16_t category, uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4,
|
||||
uint32_t param5 )
|
||||
uint32_t param5, uint32_t param6 )
|
||||
{
|
||||
m_data.padding = 0;
|
||||
m_data.category = category;
|
||||
|
@ -39,6 +39,7 @@ namespace Sapphire::Network::Packets::Server
|
|||
m_data.param3 = param3;
|
||||
m_data.param4 = param4;
|
||||
m_data.param5 = param5;
|
||||
m_data.param6 = param6;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
#include "Forwards.h"
|
||||
#include "Inventory/Item.h"
|
||||
#include "StatusEffect/StatusEffect.h"
|
||||
#include "Territory/Territory.h"
|
||||
#include "Event/Director.h"
|
||||
|
||||
namespace Sapphire::Network::Packets::Server
|
||||
{
|
||||
|
@ -143,6 +145,10 @@ namespace Sapphire::Network::Packets::Server
|
|||
m_data.effect[ effect.first ].param = effect.second->getParam();
|
||||
}
|
||||
|
||||
if( auto d = player.getCurrentTerritory()->getAsDirector() )
|
||||
{
|
||||
m_data.directorId = d->getDirectorId();
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -377,7 +377,7 @@ void Sapphire::InstanceContent::onTalk( Sapphire::Entity::Player& player, uint32
|
|||
return;
|
||||
|
||||
if( auto onTalk = it->second->getOnTalkHandler() )
|
||||
onTalk( player, it->second, getAsInstanceContent(), actorId );
|
||||
onTalk( player, it->second, getAsInstanceContent(), eventId, actorId );
|
||||
else
|
||||
player.sendDebug( "No onTalk handler found for interactable eobj with EObjID#{0}, eventId#{1} ",
|
||||
it->second->getObjectId(), eventId );
|
||||
|
|
|
@ -106,7 +106,7 @@ void Sapphire::PublicContent::onDirectorSync( Entity::Player& player )
|
|||
|
||||
void Sapphire::PublicContent::onBeforePlayerZoneIn( Sapphire::Entity::Player& player )
|
||||
{
|
||||
if( m_pEntranceEObj != nullptr )
|
||||
/*if( m_pEntranceEObj != nullptr )
|
||||
{
|
||||
player.setRot( PI );
|
||||
player.setPos( m_pEntranceEObj->getPos() );
|
||||
|
@ -115,7 +115,7 @@ void Sapphire::PublicContent::onBeforePlayerZoneIn( Sapphire::Entity::Player& pl
|
|||
{
|
||||
player.setRot( PI );
|
||||
player.setPos( { 0.f, 0.f, 0.f } );
|
||||
}
|
||||
}*/
|
||||
player.resetObjSpawnIndex();
|
||||
}
|
||||
|
||||
|
@ -144,6 +144,15 @@ void Sapphire::PublicContent::onRegisterEObj( Entity::EventObjectPtr object )
|
|||
std::to_string( object->getObjectId() ) );
|
||||
}
|
||||
|
||||
Sapphire::Entity::EventObjectPtr Sapphire::PublicContent::getEObjByName( const std::string& name )
|
||||
{
|
||||
auto it = m_eventObjectMap.find( name );
|
||||
if( it == m_eventObjectMap.end() )
|
||||
return nullptr;
|
||||
|
||||
return it->second;
|
||||
}
|
||||
|
||||
void Sapphire::PublicContent::clearDirector( Entity::Player& player )
|
||||
{
|
||||
sendDirectorClear( player );
|
||||
|
@ -157,7 +166,7 @@ void Sapphire::PublicContent::onTalk( Sapphire::Entity::Player& player, uint32_t
|
|||
return;
|
||||
|
||||
if( auto onTalk = it->second->getOnTalkHandler() )
|
||||
onTalk( player, it->second, getAsPublicContent(), actorId );
|
||||
onTalk( player, it->second, getAsPublicContent(), eventId, actorId );
|
||||
else
|
||||
player.sendDebug( "No onTalk handler found for interactable eobj with EObjID#{0}, eventId#{1} ",
|
||||
it->second->getObjectId(), eventId );
|
||||
|
|
|
@ -48,6 +48,8 @@ namespace Sapphire
|
|||
|
||||
uint32_t getContentId() const;
|
||||
|
||||
Entity::EventObjectPtr getEObjByName( const std::string& name );
|
||||
|
||||
void clearDirector( Entity::Player& player );
|
||||
|
||||
void onTalk( Entity::Player& player, uint32_t eventId, uint64_t actorId );
|
||||
|
|
|
@ -330,7 +330,7 @@ void Sapphire::QuestBattle::onTalk( Sapphire::Entity::Player& player, uint32_t e
|
|||
return;
|
||||
|
||||
if( auto onTalkHandler = it->second->getOnTalkHandler() )
|
||||
onTalkHandler( player, it->second, getAsQuestBattle(), actorId );
|
||||
onTalkHandler( player, it->second, getAsQuestBattle(), eventId, actorId );
|
||||
else
|
||||
player.sendDebug( "No onTalk handler found for interactable eobj with EObjID#{0}, eventId#{1} ",
|
||||
it->second->getObjectId(), eventId );
|
||||
|
|
Loading…
Add table
Reference in a new issue