diff --git a/src/world/Script/NativeScriptApi.cpp b/src/world/Script/NativeScriptApi.cpp index d1969ca9..4fd16292 100644 --- a/src/world/Script/NativeScriptApi.cpp +++ b/src/world/Script/NativeScriptApi.cpp @@ -170,7 +170,7 @@ namespace Sapphire::ScriptAPI { } - void QuestScript::onEObjHit( Sapphire::Entity::Player& player, uint64_t actorId, uint32_t actionId ) + void QuestScript::onEObjHit( World::Quest& quest, Sapphire::Entity::Player& player, uint64_t actorId, uint32_t actionId ) { } diff --git a/src/world/Script/NativeScriptApi.h b/src/world/Script/NativeScriptApi.h index 6cf8a83a..87351995 100644 --- a/src/world/Script/NativeScriptApi.h +++ b/src/world/Script/NativeScriptApi.h @@ -223,7 +223,7 @@ namespace Sapphire::ScriptAPI virtual void onEventHandlerTradeReturn( Sapphire::Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param, uint32_t catalogId ); - virtual void onEObjHit( Sapphire::Entity::Player& player, uint64_t actorId, uint32_t actionId ); + virtual void onEObjHit( World::Quest& quest, Sapphire::Entity::Player& player, uint64_t actorId, uint32_t actionId ); World::Manager::EventMgr& eventMgr() { diff --git a/src/world/Script/ScriptMgr.cpp b/src/world/Script/ScriptMgr.cpp index 679a0722..6b7bbdb0 100644 --- a/src/world/Script/ScriptMgr.cpp +++ b/src/world/Script/ScriptMgr.cpp @@ -365,7 +365,7 @@ bool Sapphire::Scripting::ScriptMgr::onBNpcKill( Entity::Player& player, uint16_ // loop through all active quests and try to call available onBNpcKill callbacks for( size_t i = 0; i < 30; i++ ) { - auto quest = player.getQuestByIndex( static_cast< uint16_t >( i )); + auto quest = player.getQuestByIndex( static_cast< uint16_t >( i ) ); if( quest.getId() == 0 ) continue; @@ -402,15 +402,18 @@ bool Sapphire::Scripting::ScriptMgr::onEObjHit( Sapphire::Entity::Player& player uint32_t questId = quest.getId() | Event::EventHandler::EventHandlerType::Quest << 16; - auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::EventScript >( questId ); + auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::QuestScript >( questId ); if( script ) { didCallScript = true; std::string objName = eventMgr.getEventName( questId ); - PlayerMgr::sendDebug( player, "Calling: {0}.onEObjHit actorId#{1}", objName, actorId ); + PlayerMgr::sendDebug( player, "Calling: {0}.onEObjHit actorId#{1}, questId#", objName, actorId, quest.getId() ); - script->onEObjHit( player, actorId, actionId ); + World::Quest preQ = quest; + script->onEObjHit( quest, player, actorId, actionId ); + if( quest != preQ ) + player.updateQuest( quest ); } }