mirror of
				https://github.com/DarkflameUniverse/DarkflameServer.git
				synced 2025-10-31 04:32:06 +00:00 
			
		
		
		
	mission fix redo
This commit is contained in:
		| @@ -368,15 +368,12 @@ void PetComponent::Update(float deltaTime) { | ||||
| 	} | ||||
|  | ||||
| 	auto* owner = GetOwner(); | ||||
|  | ||||
| 	if (owner == nullptr) { | ||||
| 		m_Parent->Kill(); | ||||
|  | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	m_MovementAI = m_Parent->GetComponent<MovementAIComponent>(); | ||||
|  | ||||
| 	if (m_MovementAI == nullptr) { | ||||
| 		return; | ||||
| 	} | ||||
| @@ -390,7 +387,6 @@ void PetComponent::Update(float deltaTime) { | ||||
| 	NiPoint3 position = m_MovementAI->GetParent()->GetPosition(); | ||||
|  | ||||
| 	float distanceToOwner = Vector3::DistanceSquared(position, destination); | ||||
|  | ||||
| 	if (distanceToOwner > 50 * 50 || m_TimerAway > 5) { | ||||
| 		m_MovementAI->Warp(destination); | ||||
|  | ||||
| @@ -437,7 +433,6 @@ void PetComponent::Update(float deltaTime) { | ||||
| 	const bool digUnlocked = missionComponent->GetMissionState(842) == eMissionState::COMPLETE; | ||||
|  | ||||
| 	Entity* closestTresure = PetDigServer::GetClosestTresure(position); | ||||
|  | ||||
| 	if (closestTresure != nullptr && digUnlocked) { | ||||
| 		// Skeleton Dragon Pat special case for bone digging | ||||
| 		if (closestTresure->GetLOT() == 12192 && m_Parent->GetLOT() != 13067) { | ||||
| @@ -449,7 +444,7 @@ void PetComponent::Update(float deltaTime) { | ||||
| 		if (distance < 5 * 5) { | ||||
| 			m_Interaction = closestTresure->GetObjectID(); | ||||
|  | ||||
| 			Command(NiPoint3::ZERO, LWOOBJID_EMPTY, 1, PetEmote::Bounce , true); // Plays 'bounce' animation | ||||
| 			Command(NiPoint3::ZERO, LWOOBJID_EMPTY, 1, PetEmote::Bounce, true); // Plays 'bounce' animation | ||||
|  | ||||
| 			SetIsReadyToDig(true); | ||||
|  | ||||
| @@ -1157,7 +1152,7 @@ void PetComponent::SetPreconditions(std::string& preconditions) { | ||||
| void PetComponent::StartInteractDig() { | ||||
| 	//m_InInteract = true; | ||||
| 	m_TresureTime = 2.0f; //TODO: Remove magic number | ||||
| 	Command(NiPoint3::ZERO, LWOOBJID_EMPTY, 1, PetEmote::DigTreasure , true); | ||||
| 	Command(NiPoint3::ZERO, LWOOBJID_EMPTY, 1, PetEmote::DigTreasure, true); | ||||
| } | ||||
|  | ||||
| void PetComponent::EndInteractDig() { | ||||
|   | ||||
| @@ -5016,32 +5016,6 @@ void GameMessages::HandlePlayEmote(RakNet::BitStream* inStream, Entity* entity) | ||||
| 	if (emoteID == 0) return; | ||||
| 	std::string sAnimationName = "deaded"; //Default name in case we fail to get the emote | ||||
|  | ||||
| 	MissionComponent* missionComponent = entity->GetComponent<MissionComponent>(); | ||||
| 	if (missionComponent) { | ||||
| 		if (targetID != LWOOBJID_EMPTY) { | ||||
| 			auto* targetEntity = Game::entityManager->GetEntity(targetID); | ||||
|  | ||||
| 			LOG_DEBUG("Emote target found (%d)", targetEntity != nullptr); | ||||
|  | ||||
| 			if (targetEntity != nullptr) { | ||||
| 				targetEntity->OnEmoteReceived(emoteID, entity); | ||||
| 				missionComponent->Progress(eMissionTaskType::EMOTE, emoteID, targetID); | ||||
| 			} | ||||
| 		} else { | ||||
| 			LOG_DEBUG("Target ID is empty, using backup"); | ||||
| 			const auto scriptedEntities = Game::entityManager->GetEntitiesByComponent(eReplicaComponentType::SCRIPT); | ||||
|  | ||||
| 			const auto& referencePoint = entity->GetPosition(); | ||||
|  | ||||
| 			for (auto* scripted : scriptedEntities) { | ||||
| 				if (Vector3::DistanceSquared(scripted->GetPosition(), referencePoint) > 5.0f * 5.0f) continue; | ||||
|  | ||||
| 				scripted->OnEmoteReceived(emoteID, entity); | ||||
| 				missionComponent->Progress(eMissionTaskType::EMOTE, emoteID, scripted->GetObjectID()); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	CDEmoteTableTable* emotes = CDClientManager::Instance().GetTable<CDEmoteTableTable>(); | ||||
| 	if (emotes) { | ||||
| 		CDEmoteTable* emote = emotes->GetEmote(emoteID); | ||||
| @@ -5049,6 +5023,32 @@ void GameMessages::HandlePlayEmote(RakNet::BitStream* inStream, Entity* entity) | ||||
| 	} | ||||
|  | ||||
| 	RenderComponent::PlayAnimation(entity, sAnimationName); | ||||
|  | ||||
| 	MissionComponent* missionComponent = entity->GetComponent<MissionComponent>(); | ||||
| 	if (!missionComponent) return; | ||||
|  | ||||
| 	if (targetID != LWOOBJID_EMPTY) { | ||||
| 		auto* targetEntity = Game::entityManager->GetEntity(targetID); | ||||
|  | ||||
| 		LOG_DEBUG("Emote target found (%d)", targetEntity != nullptr); | ||||
|  | ||||
| 		if (targetEntity != nullptr) { | ||||
| 			targetEntity->OnEmoteReceived(emoteID, entity); | ||||
| 			missionComponent->Progress(eMissionTaskType::EMOTE, emoteID, targetID); | ||||
| 		} | ||||
| 	} else { | ||||
| 		LOG_DEBUG("Target ID is empty, using backup"); | ||||
| 		const auto scriptedEntities = Game::entityManager->GetEntitiesByComponent(eReplicaComponentType::SCRIPT); | ||||
|  | ||||
| 		const auto& referencePoint = entity->GetPosition(); | ||||
|  | ||||
| 		for (auto* scripted : scriptedEntities) { | ||||
| 			if (Vector3::DistanceSquared(scripted->GetPosition(), referencePoint) > 5.0f * 5.0f) continue; | ||||
|  | ||||
| 			scripted->OnEmoteReceived(emoteID, entity); | ||||
| 			missionComponent->Progress(eMissionTaskType::EMOTE, emoteID, scripted->GetObjectID()); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void GameMessages::HandleModularBuildConvertModel(RakNet::BitStream* inStream, Entity* entity, const SystemAddress& sysAddr) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 jadebenn
					jadebenn