Files
DarkflameServer/dGame/dComponents/Character/MountControlComponent.cpp
Aaron Kimbrell 1056ca0025 fix: a character's mount save is written as 0, as live did
All 450 live saves looked at had <mnt a="0"/>. The server wrote the item
of the mount being ridden, a value live never showed and the client
would start with although nobody rides after a load.

<mnt a="0"/> is now always written, riding or not. A save that holds
another value, or one that is not a number, is still read without
failing and gets 0 at the next save.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-10 16:13:42 -06:00

22 lines
688 B
C++

#include "MountControlComponent.h"
#include "tinyxml2.h"
void MountControlComponent::LoadFromSaveData(const tinyxml2::XMLDocument& doc) {
const auto* const obj = doc.FirstChildElement("obj");
const auto* const mount = obj ? obj->FirstChildElement("mnt") : nullptr;
if (mount) mount->QueryInt64Attribute("a", &m_SavedMountItemID);
}
void MountControlComponent::WriteSaveData(tinyxml2::XMLDocument& doc) {
auto* const obj = doc.FirstChildElement("obj");
if (!obj) return;
auto* mount = obj->FirstChildElement("mnt");
if (!mount) mount = obj->InsertNewChildElement("mnt");
// 0 in every live save looked at (450), so 0 is written, riding or not
mount->SetAttribute("a", 0);
}