mission fix redo

This commit is contained in:
jadebenn 2023-11-21 20:16:17 -06:00
parent 23664c0a9b
commit 81d8c187ea
2 changed files with 28 additions and 33 deletions

View File

@ -368,15 +368,12 @@ void PetComponent::Update(float deltaTime) {
} }
auto* owner = GetOwner(); auto* owner = GetOwner();
if (owner == nullptr) { if (owner == nullptr) {
m_Parent->Kill(); m_Parent->Kill();
return; return;
} }
m_MovementAI = m_Parent->GetComponent<MovementAIComponent>(); m_MovementAI = m_Parent->GetComponent<MovementAIComponent>();
if (m_MovementAI == nullptr) { if (m_MovementAI == nullptr) {
return; return;
} }
@ -390,7 +387,6 @@ void PetComponent::Update(float deltaTime) {
NiPoint3 position = m_MovementAI->GetParent()->GetPosition(); NiPoint3 position = m_MovementAI->GetParent()->GetPosition();
float distanceToOwner = Vector3::DistanceSquared(position, destination); float distanceToOwner = Vector3::DistanceSquared(position, destination);
if (distanceToOwner > 50 * 50 || m_TimerAway > 5) { if (distanceToOwner > 50 * 50 || m_TimerAway > 5) {
m_MovementAI->Warp(destination); m_MovementAI->Warp(destination);
@ -437,7 +433,6 @@ void PetComponent::Update(float deltaTime) {
const bool digUnlocked = missionComponent->GetMissionState(842) == eMissionState::COMPLETE; const bool digUnlocked = missionComponent->GetMissionState(842) == eMissionState::COMPLETE;
Entity* closestTresure = PetDigServer::GetClosestTresure(position); Entity* closestTresure = PetDigServer::GetClosestTresure(position);
if (closestTresure != nullptr && digUnlocked) { if (closestTresure != nullptr && digUnlocked) {
// Skeleton Dragon Pat special case for bone digging // Skeleton Dragon Pat special case for bone digging
if (closestTresure->GetLOT() == 12192 && m_Parent->GetLOT() != 13067) { if (closestTresure->GetLOT() == 12192 && m_Parent->GetLOT() != 13067) {
@ -449,7 +444,7 @@ void PetComponent::Update(float deltaTime) {
if (distance < 5 * 5) { if (distance < 5 * 5) {
m_Interaction = closestTresure->GetObjectID(); 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); SetIsReadyToDig(true);
@ -1157,7 +1152,7 @@ void PetComponent::SetPreconditions(std::string& preconditions) {
void PetComponent::StartInteractDig() { void PetComponent::StartInteractDig() {
//m_InInteract = true; //m_InInteract = true;
m_TresureTime = 2.0f; //TODO: Remove magic number 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() { void PetComponent::EndInteractDig() {

View File

@ -5016,8 +5016,17 @@ void GameMessages::HandlePlayEmote(RakNet::BitStream* inStream, Entity* entity)
if (emoteID == 0) return; if (emoteID == 0) return;
std::string sAnimationName = "deaded"; //Default name in case we fail to get the emote std::string sAnimationName = "deaded"; //Default name in case we fail to get the emote
CDEmoteTableTable* emotes = CDClientManager::Instance().GetTable<CDEmoteTableTable>();
if (emotes) {
CDEmoteTable* emote = emotes->GetEmote(emoteID);
if (emote) sAnimationName = emote->animationName;
}
RenderComponent::PlayAnimation(entity, sAnimationName);
MissionComponent* missionComponent = entity->GetComponent<MissionComponent>(); MissionComponent* missionComponent = entity->GetComponent<MissionComponent>();
if (missionComponent) { if (!missionComponent) return;
if (targetID != LWOOBJID_EMPTY) { if (targetID != LWOOBJID_EMPTY) {
auto* targetEntity = Game::entityManager->GetEntity(targetID); auto* targetEntity = Game::entityManager->GetEntity(targetID);
@ -5040,15 +5049,6 @@ void GameMessages::HandlePlayEmote(RakNet::BitStream* inStream, Entity* entity)
missionComponent->Progress(eMissionTaskType::EMOTE, emoteID, scripted->GetObjectID()); missionComponent->Progress(eMissionTaskType::EMOTE, emoteID, scripted->GetObjectID());
} }
} }
}
CDEmoteTableTable* emotes = CDClientManager::Instance().GetTable<CDEmoteTableTable>();
if (emotes) {
CDEmoteTable* emote = emotes->GetEmote(emoteID);
if (emote) sAnimationName = emote->animationName;
}
RenderComponent::PlayAnimation(entity, sAnimationName);
} }
void GameMessages::HandleModularBuildConvertModel(RakNet::BitStream* inStream, Entity* entity, const SystemAddress& sysAddr) { void GameMessages::HandleModularBuildConvertModel(RakNet::BitStream* inStream, Entity* entity, const SystemAddress& sysAddr) {