diff --git a/dGame/dComponents/ScriptComponent.h b/dGame/dComponents/ScriptComponent.h index 67832506..aa572b77 100644 --- a/dGame/dComponents/ScriptComponent.h +++ b/dGame/dComponents/ScriptComponent.h @@ -51,8 +51,10 @@ public: // Registers a message from a script to be listened for on the parent object template void RegisterMsg(ScriptClass* scriptThis, bool (ScriptClass::*scriptHandler)(Entity&, DerivedMsgType&)) { + static_assert(std::is_base_of_v, "DerivedMsgType must derive from GameMessages::GameMsg base class."); const auto boundMsg = std::bind(scriptHandler, scriptThis, std::placeholders::_1, std::placeholders::_2); - const auto castWrapper = [this, boundMsg](GameMessages::GameMsg& msg) { + auto* const parent = m_Parent; + const auto castWrapper = [parent, boundMsg](GameMessages::GameMsg& msg) { return boundMsg(*m_Parent, static_cast(msg)); }; DerivedMsgType msg; diff --git a/dScripts/ai/FV/Dragon_Instance/FvDragonInstanceServer.cpp b/dScripts/ai/FV/Dragon_Instance/FvDragonInstanceServer.cpp index 8455f027..3e63d6b0 100644 --- a/dScripts/ai/FV/Dragon_Instance/FvDragonInstanceServer.cpp +++ b/dScripts/ai/FV/Dragon_Instance/FvDragonInstanceServer.cpp @@ -9,5 +9,6 @@ void FvDragonInstanceServer::OnPlayerLoaded(Entity* self, Entity* player) { destComp->SetHealth(destComp->GetMaxHealth()); destComp->SetArmor(destComp->GetMaxArmor()); destComp->SetImagination(destComp->GetMaxImagination()); + Game::entityManager->SerializeEntity(player); } }