mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-12-25 06:53:35 +00:00
delete unused functions and update documentation
This commit is contained in:
parent
70e0cd6f93
commit
a449e5323b
@ -175,20 +175,20 @@ void PetComponent::OnUse(Entity* originator) {
|
|||||||
if (m_Owner != LWOOBJID_EMPTY) return;
|
if (m_Owner != LWOOBJID_EMPTY) return;
|
||||||
|
|
||||||
if (m_Tamer != LWOOBJID_EMPTY) {
|
if (m_Tamer != LWOOBJID_EMPTY) {
|
||||||
auto* tamer = Game::entityManager->GetEntity(m_Tamer);
|
const auto* const tamer = Game::entityManager->GetEntity(m_Tamer);
|
||||||
|
|
||||||
if (tamer != nullptr) return;
|
if (tamer != nullptr) return;
|
||||||
|
|
||||||
m_Tamer = LWOOBJID_EMPTY;
|
m_Tamer = LWOOBJID_EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto* inventoryComponent = originator->GetComponent<InventoryComponent>();
|
auto* const inventoryComponent = originator->GetComponent<InventoryComponent>();
|
||||||
|
|
||||||
if (inventoryComponent == nullptr) return;
|
if (!inventoryComponent) return;
|
||||||
|
|
||||||
if (m_Preconditions != nullptr && !m_Preconditions->Check(originator, true)) return;
|
if (m_Preconditions != nullptr && !m_Preconditions->Check(originator, true)) return;
|
||||||
|
|
||||||
auto* movementAIComponent = m_Parent->GetComponent<MovementAIComponent>();
|
auto* const movementAIComponent = m_Parent->GetComponent<MovementAIComponent>();
|
||||||
|
|
||||||
if (movementAIComponent != nullptr) {
|
if (movementAIComponent != nullptr) {
|
||||||
movementAIComponent->Stop();
|
movementAIComponent->Stop();
|
||||||
@ -240,11 +240,11 @@ void PetComponent::OnUse(Entity* originator) {
|
|||||||
imaginationCost = cached->second.imaginationCost;
|
imaginationCost = cached->second.imaginationCost;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto* destroyableComponent = originator->GetComponent<DestroyableComponent>();
|
const auto* const destroyableComponent = originator->GetComponent<DestroyableComponent>();
|
||||||
|
|
||||||
if (destroyableComponent == nullptr) return;
|
if (!destroyableComponent) return;
|
||||||
|
|
||||||
auto imagination = destroyableComponent->GetImagination();
|
const auto imagination = destroyableComponent->GetImagination();
|
||||||
|
|
||||||
if (imagination < imaginationCost) return;
|
if (imagination < imaginationCost) return;
|
||||||
|
|
||||||
@ -257,9 +257,9 @@ void PetComponent::OnUse(Entity* originator) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto petPosition = m_Parent->GetPosition();
|
const auto petPosition = m_Parent->GetPosition();
|
||||||
|
|
||||||
auto originatorPosition = originator->GetPosition();
|
const auto originatorPosition = originator->GetPosition();
|
||||||
|
|
||||||
m_Parent->SetRotation(NiQuaternion::LookAt(petPosition, originatorPosition));
|
m_Parent->SetRotation(NiQuaternion::LookAt(petPosition, originatorPosition));
|
||||||
|
|
||||||
@ -295,7 +295,7 @@ void PetComponent::OnUse(Entity* originator) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
auto rotation = NiQuaternion::LookAt(position, petPosition);
|
const auto rotation = NiQuaternion::LookAt(position, petPosition);
|
||||||
|
|
||||||
GameMessages::SendNotifyPetTamingMinigame(
|
GameMessages::SendNotifyPetTamingMinigame(
|
||||||
originator->GetObjectID(),
|
originator->GetObjectID(),
|
||||||
@ -345,21 +345,13 @@ void PetComponent::Update(float deltaTime) {
|
|||||||
|
|
||||||
// Remove "left behind" pets
|
// Remove "left behind" pets
|
||||||
if (m_Owner != LWOOBJID_EMPTY) {
|
if (m_Owner != LWOOBJID_EMPTY) {
|
||||||
Entity* owner = GetOwner();
|
const Entity* const owner = GetOwner();
|
||||||
if (!owner) {
|
if (!owner) {
|
||||||
m_Parent->Kill();
|
m_Parent->Kill();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*START_BITMASK_SWITCH(m_Flags) {
|
|
||||||
case TAMEABLE:
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
LOG_DEBUG("Triggered default case!");
|
|
||||||
}*/
|
|
||||||
|
|
||||||
if (HasFlag(SPAWNING)) OnSpawn();
|
if (HasFlag(SPAWNING)) OnSpawn();
|
||||||
|
|
||||||
// Handle pet AI states
|
// Handle pet AI states
|
||||||
@ -417,9 +409,9 @@ void PetComponent::UpdateUnowned(float deltaTime) { //TODO: CURRENTLY UNUSED
|
|||||||
void PetComponent::TryBuild(uint32_t numBricks, bool clientFailed) {
|
void PetComponent::TryBuild(uint32_t numBricks, bool clientFailed) {
|
||||||
if (m_Tamer == LWOOBJID_EMPTY) return;
|
if (m_Tamer == LWOOBJID_EMPTY) return;
|
||||||
|
|
||||||
auto* tamer = Game::entityManager->GetEntity(m_Tamer);
|
auto* const tamer = Game::entityManager->GetEntity(m_Tamer);
|
||||||
|
|
||||||
if (tamer == nullptr) {
|
if (!tamer) {
|
||||||
m_Tamer = LWOOBJID_EMPTY;
|
m_Tamer = LWOOBJID_EMPTY;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -429,9 +421,9 @@ void PetComponent::TryBuild(uint32_t numBricks, bool clientFailed) {
|
|||||||
|
|
||||||
if (cached == buildCache.end()) return;
|
if (cached == buildCache.end()) return;
|
||||||
|
|
||||||
auto* destroyableComponent = tamer->GetComponent<DestroyableComponent>();
|
auto* const destroyableComponent = tamer->GetComponent<DestroyableComponent>();
|
||||||
|
|
||||||
if (destroyableComponent == nullptr) return;
|
if (!destroyableComponent) return;
|
||||||
|
|
||||||
auto imagination = destroyableComponent->GetImagination();
|
auto imagination = destroyableComponent->GetImagination();
|
||||||
|
|
||||||
@ -457,9 +449,9 @@ void PetComponent::TryBuild(uint32_t numBricks, bool clientFailed) {
|
|||||||
void PetComponent::NotifyTamingBuildSuccess(NiPoint3 position) {
|
void PetComponent::NotifyTamingBuildSuccess(NiPoint3 position) {
|
||||||
if (m_Tamer == LWOOBJID_EMPTY) return;
|
if (m_Tamer == LWOOBJID_EMPTY) return;
|
||||||
|
|
||||||
auto* tamer = Game::entityManager->GetEntity(m_Tamer);
|
auto* const tamer = Game::entityManager->GetEntity(m_Tamer);
|
||||||
|
|
||||||
if (tamer == nullptr) {
|
if (!tamer) {
|
||||||
m_Tamer = LWOOBJID_EMPTY;
|
m_Tamer = LWOOBJID_EMPTY;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -480,7 +472,7 @@ void PetComponent::NotifyTamingBuildSuccess(NiPoint3 position) {
|
|||||||
info.rot = NiQuaternionConstant::IDENTITY;
|
info.rot = NiQuaternionConstant::IDENTITY;
|
||||||
info.spawnerID = tamer->GetObjectID();
|
info.spawnerID = tamer->GetObjectID();
|
||||||
|
|
||||||
auto* modelEntity = Game::entityManager->CreateEntity(info);
|
auto* const modelEntity = Game::entityManager->CreateEntity(info);
|
||||||
|
|
||||||
m_ModelId = modelEntity->GetObjectID();
|
m_ModelId = modelEntity->GetObjectID();
|
||||||
|
|
||||||
@ -490,7 +482,7 @@ void PetComponent::NotifyTamingBuildSuccess(NiPoint3 position) {
|
|||||||
|
|
||||||
GameMessages::SendPetResponse(m_Tamer, m_Parent->GetObjectID(), 0, 10, 0, tamer->GetSystemAddress());
|
GameMessages::SendPetResponse(m_Tamer, m_Parent->GetObjectID(), 0, 10, 0, tamer->GetSystemAddress());
|
||||||
|
|
||||||
auto* inventoryComponent = tamer->GetComponent<InventoryComponent>();
|
auto* const inventoryComponent = tamer->GetComponent<InventoryComponent>();
|
||||||
if (!inventoryComponent) return;
|
if (!inventoryComponent) return;
|
||||||
|
|
||||||
LWOOBJID petSubKey = ObjectIDManager::GenerateRandomObjectID();
|
LWOOBJID petSubKey = ObjectIDManager::GenerateRandomObjectID();
|
||||||
@ -511,7 +503,7 @@ void PetComponent::NotifyTamingBuildSuccess(NiPoint3 position) {
|
|||||||
|
|
||||||
inventoryComponent->AddItem(m_Parent->GetLOT(), 1, eLootSourceType::ACTIVITY, eInventoryType::MODELS, {}, LWOOBJID_EMPTY, true, false, petSubKey);
|
inventoryComponent->AddItem(m_Parent->GetLOT(), 1, eLootSourceType::ACTIVITY, eInventoryType::MODELS, {}, LWOOBJID_EMPTY, true, false, petSubKey);
|
||||||
|
|
||||||
auto* item = inventoryComponent->FindItemBySubKey(petSubKey, MODELS);
|
auto* const item = inventoryComponent->FindItemBySubKey(petSubKey, MODELS);
|
||||||
if (!item) return;
|
if (!item) return;
|
||||||
|
|
||||||
DatabasePet databasePet{};
|
DatabasePet databasePet{};
|
||||||
@ -543,15 +535,15 @@ void PetComponent::NotifyTamingBuildSuccess(NiPoint3 position) {
|
|||||||
tamer->GetCharacter()->SetPlayerFlag(petFlags.at(m_Parent->GetLOT()), true);
|
tamer->GetCharacter()->SetPlayerFlag(petFlags.at(m_Parent->GetLOT()), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto* missionComponent = tamer->GetComponent<MissionComponent>();
|
auto* const missionComponent = tamer->GetComponent<MissionComponent>();
|
||||||
|
|
||||||
if (missionComponent != nullptr) {
|
if (missionComponent != nullptr) {
|
||||||
missionComponent->Progress(eMissionTaskType::PET_TAMING, m_Parent->GetLOT());
|
missionComponent->Progress(eMissionTaskType::PET_TAMING, m_Parent->GetLOT());
|
||||||
}
|
}
|
||||||
|
|
||||||
SetOnlyFlag(IDLE); // SetStatus(1);
|
SetOnlyFlag(IDLE);
|
||||||
|
|
||||||
auto* characterComponent = tamer->GetComponent<CharacterComponent>();
|
auto* const characterComponent = tamer->GetComponent<CharacterComponent>();
|
||||||
if (characterComponent != nullptr) {
|
if (characterComponent != nullptr) {
|
||||||
characterComponent->UpdatePlayerStatistic(PetsTamed);
|
characterComponent->UpdatePlayerStatistic(PetsTamed);
|
||||||
}
|
}
|
||||||
@ -617,7 +609,7 @@ void PetComponent::RequestSetPetName(std::u16string name) {
|
|||||||
|
|
||||||
GameMessages::SendTerminateInteraction(m_Tamer, eTerminateType::FROM_INTERACTION, m_Parent->GetObjectID());
|
GameMessages::SendTerminateInteraction(m_Tamer, eTerminateType::FROM_INTERACTION, m_Parent->GetObjectID());
|
||||||
|
|
||||||
auto* modelEntity = Game::entityManager->GetEntity(m_ModelId);
|
auto* const modelEntity = Game::entityManager->GetEntity(m_ModelId);
|
||||||
|
|
||||||
if (modelEntity != nullptr) {
|
if (modelEntity != nullptr) {
|
||||||
modelEntity->Smash(m_Tamer);
|
modelEntity->Smash(m_Tamer);
|
||||||
@ -636,9 +628,9 @@ void PetComponent::RequestSetPetName(std::u16string name) {
|
|||||||
void PetComponent::ClientExitTamingMinigame(bool voluntaryExit) {
|
void PetComponent::ClientExitTamingMinigame(bool voluntaryExit) {
|
||||||
if (m_Tamer == LWOOBJID_EMPTY) return;
|
if (m_Tamer == LWOOBJID_EMPTY) return;
|
||||||
|
|
||||||
auto* tamer = Game::entityManager->GetEntity(m_Tamer);
|
auto* const tamer = Game::entityManager->GetEntity(m_Tamer);
|
||||||
|
|
||||||
if (tamer == nullptr) {
|
if (!tamer) {
|
||||||
m_Tamer = LWOOBJID_EMPTY;
|
m_Tamer = LWOOBJID_EMPTY;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -687,9 +679,9 @@ void PetComponent::StartTimer() {
|
|||||||
void PetComponent::ClientFailTamingMinigame() {
|
void PetComponent::ClientFailTamingMinigame() {
|
||||||
if (m_Tamer == LWOOBJID_EMPTY) return;
|
if (m_Tamer == LWOOBJID_EMPTY) return;
|
||||||
|
|
||||||
auto* tamer = Game::entityManager->GetEntity(m_Tamer);
|
auto* const tamer = Game::entityManager->GetEntity(m_Tamer);
|
||||||
|
|
||||||
if (tamer == nullptr) {
|
if (!tamer) {
|
||||||
m_Tamer = LWOOBJID_EMPTY;
|
m_Tamer = LWOOBJID_EMPTY;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -806,11 +798,11 @@ void PetComponent::OnFollow(const float deltaTime) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Determine if the "Lost Tags" mission has been completed and digging has been unlocked
|
// Determine if the "Lost Tags" mission has been completed and digging has been unlocked
|
||||||
auto* missionComponent = owner->GetComponent<MissionComponent>();
|
const auto* const missionComponent = owner->GetComponent<MissionComponent>();
|
||||||
if (!missionComponent) return;
|
if (!missionComponent) return;
|
||||||
const bool digUnlocked = missionComponent->GetMissionState(842) == eMissionState::COMPLETE;
|
const bool digUnlocked = missionComponent->GetMissionState(842) == eMissionState::COMPLETE;
|
||||||
|
|
||||||
Entity* closestTreasure = PetDigServer::GetClosestTresure(ownerPos);
|
const Entity* closestTreasure = PetDigServer::GetClosestTresure(ownerPos);
|
||||||
const bool nonDragonForBone = closestTreasure->GetLOT() == 12192 && m_Parent->GetLOT() != 13067;
|
const bool nonDragonForBone = closestTreasure->GetLOT() == 12192 && m_Parent->GetLOT() != 13067;
|
||||||
if (!nonDragonForBone && closestTreasure != nullptr && digUnlocked) {
|
if (!nonDragonForBone && closestTreasure != nullptr && digUnlocked) {
|
||||||
const NiPoint3 treasurePos = closestTreasure->GetPosition();
|
const NiPoint3 treasurePos = closestTreasure->GetPosition();
|
||||||
@ -893,7 +885,7 @@ void PetComponent::StartInteract(const NiPoint3& position, const PetInteractType
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PetComponent::StopInteract(bool bDontSerialize) {
|
void PetComponent::StopInteract(bool bDontSerialize) {
|
||||||
Entity* owner = GetOwner();
|
Entity* const owner = GetOwner();
|
||||||
if (!owner) return;
|
if (!owner) return;
|
||||||
|
|
||||||
const auto petAbility = ePetAbilityType::Invalid;
|
const auto petAbility = ePetAbilityType::Invalid;
|
||||||
@ -917,7 +909,7 @@ void PetComponent::StopInteract(bool bDontSerialize) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PetComponent::SetupInteractBouncer() {
|
void PetComponent::SetupInteractBouncer() {
|
||||||
const auto* owner = GetOwner();
|
const auto* const owner = GetOwner();
|
||||||
if (!owner) return;
|
if (!owner) return;
|
||||||
|
|
||||||
LOG_DEBUG("Setting up bouncer interaction!");
|
LOG_DEBUG("Setting up bouncer interaction!");
|
||||||
@ -941,10 +933,10 @@ void PetComponent::SetupInteractBouncer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PetComponent::StartInteractBouncer() {
|
void PetComponent::StartInteractBouncer() {
|
||||||
Entity* user = GetOwner();
|
Entity* const user = GetOwner();
|
||||||
if (IsHandlingInteraction() || !user) return;
|
if (IsHandlingInteraction() || !user) return;
|
||||||
|
|
||||||
auto* destroyableComponent = user->GetComponent<DestroyableComponent>();
|
auto* const destroyableComponent = user->GetComponent<DestroyableComponent>();
|
||||||
if (!destroyableComponent) return;
|
if (!destroyableComponent) return;
|
||||||
|
|
||||||
auto imagination = destroyableComponent->GetImagination();
|
auto imagination = destroyableComponent->GetImagination();
|
||||||
@ -1018,10 +1010,10 @@ void PetComponent::SetupInteractTreasureDig() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PetComponent::StartInteractTreasureDig() {
|
void PetComponent::StartInteractTreasureDig() {
|
||||||
Entity* user = GetOwner();
|
Entity* const user = GetOwner();
|
||||||
if (IsHandlingInteraction() || !user) return;
|
if (IsHandlingInteraction() || !user) return;
|
||||||
|
|
||||||
auto* destroyableComponent = user->GetComponent<DestroyableComponent>();
|
auto* const destroyableComponent = user->GetComponent<DestroyableComponent>();
|
||||||
if (!destroyableComponent) return;
|
if (!destroyableComponent) return;
|
||||||
|
|
||||||
auto imagination = destroyableComponent->GetImagination();
|
auto imagination = destroyableComponent->GetImagination();
|
||||||
@ -1077,7 +1069,7 @@ void PetComponent::Activate(Item* item, bool registerPet, bool fromTaming) { //
|
|||||||
m_ItemId = item->GetId();
|
m_ItemId = item->GetId();
|
||||||
m_DatabaseId = item->GetSubKey();
|
m_DatabaseId = item->GetSubKey();
|
||||||
|
|
||||||
auto* inventoryComponent = item->GetInventory()->GetComponent();
|
auto* const inventoryComponent = item->GetInventory()->GetComponent();
|
||||||
|
|
||||||
if (inventoryComponent == nullptr) return;
|
if (inventoryComponent == nullptr) return;
|
||||||
|
|
||||||
@ -1085,10 +1077,10 @@ void PetComponent::Activate(Item* item, bool registerPet, bool fromTaming) { //
|
|||||||
|
|
||||||
m_Owner = inventoryComponent->GetParent()->GetObjectID();
|
m_Owner = inventoryComponent->GetParent()->GetObjectID();
|
||||||
|
|
||||||
auto* owner = GetOwner();
|
auto* const owner = GetOwner();
|
||||||
|
|
||||||
if (owner == nullptr) return;
|
if (!owner) return;
|
||||||
SetFlag(SPAWNING); //SetStatus(PetFlag::SPAWNING);
|
SetFlag(SPAWNING);
|
||||||
|
|
||||||
auto databaseData = inventoryComponent->GetDatabasePet(m_DatabaseId);
|
auto databaseData = inventoryComponent->GetDatabasePet(m_DatabaseId);
|
||||||
|
|
||||||
@ -1119,7 +1111,7 @@ void PetComponent::Activate(Item* item, bool registerPet, bool fromTaming) { //
|
|||||||
|
|
||||||
GameMessages::SendMarkInventoryItemAsActive(m_Owner, true, eUnequippableActiveType::PET, m_ItemId, GetOwner()->GetSystemAddress());
|
GameMessages::SendMarkInventoryItemAsActive(m_Owner, true, eUnequippableActiveType::PET, m_ItemId, GetOwner()->GetSystemAddress());
|
||||||
|
|
||||||
activePets[m_Owner] = m_Parent->GetObjectID();
|
activePets.emplace(m_Owner, m_Parent->GetObjectID());
|
||||||
|
|
||||||
Game::entityManager->SerializeEntity(m_Parent);
|
Game::entityManager->SerializeEntity(m_Parent);
|
||||||
|
|
||||||
@ -1137,16 +1129,16 @@ void PetComponent::Activate(Item* item, bool registerPet, bool fromTaming) { //
|
|||||||
void PetComponent::AddDrainImaginationTimer(Item* item, bool fromTaming) {
|
void PetComponent::AddDrainImaginationTimer(Item* item, bool fromTaming) {
|
||||||
if (Game::config->GetValue("pets_take_imagination") != "1") return;
|
if (Game::config->GetValue("pets_take_imagination") != "1") return;
|
||||||
|
|
||||||
auto playerInventory = item->GetInventory();
|
const auto* const playerInventory = item->GetInventory();
|
||||||
if (!playerInventory) return;
|
if (!playerInventory) return;
|
||||||
|
|
||||||
auto playerInventoryComponent = playerInventory->GetComponent();
|
const auto* const playerInventoryComponent = playerInventory->GetComponent();
|
||||||
if (!playerInventoryComponent) return;
|
if (!playerInventoryComponent) return;
|
||||||
|
|
||||||
auto playerEntity = playerInventoryComponent->GetParent();
|
const auto* const playerEntity = playerInventoryComponent->GetParent();
|
||||||
if (!playerEntity) return;
|
if (!playerEntity) return;
|
||||||
|
|
||||||
auto playerDestroyableComponent = playerEntity->GetComponent<DestroyableComponent>();
|
auto* const playerDestroyableComponent = playerEntity->GetComponent<DestroyableComponent>();
|
||||||
if (!playerDestroyableComponent) return;
|
if (!playerDestroyableComponent) return;
|
||||||
|
|
||||||
// Drain by 1 when you summon pet or when this method is called, but not when we have just tamed this pet.
|
// Drain by 1 when you summon pet or when this method is called, but not when we have just tamed this pet.
|
||||||
@ -1181,9 +1173,9 @@ void PetComponent::Deactivate() {
|
|||||||
|
|
||||||
m_Parent->Kill();
|
m_Parent->Kill();
|
||||||
|
|
||||||
auto* owner = GetOwner();
|
const auto* const owner = GetOwner();
|
||||||
|
|
||||||
if (owner == nullptr) return;
|
if (!owner) return;
|
||||||
|
|
||||||
GameMessages::SendAddPetToPlayer(m_Owner, 0, u"", LWOOBJID_EMPTY, LOT_NULL, owner->GetSystemAddress());
|
GameMessages::SendAddPetToPlayer(m_Owner, 0, u"", LWOOBJID_EMPTY, LOT_NULL, owner->GetSystemAddress());
|
||||||
|
|
||||||
@ -1195,23 +1187,21 @@ void PetComponent::Deactivate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PetComponent::Release() {
|
void PetComponent::Release() {
|
||||||
auto* inventoryComponent = GetOwner()->GetComponent<InventoryComponent>();
|
auto* const inventoryComponent = GetOwner()->GetComponent<InventoryComponent>();
|
||||||
|
|
||||||
if (inventoryComponent == nullptr) {
|
if (!inventoryComponent) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Deactivate();
|
Deactivate();
|
||||||
|
|
||||||
inventoryComponent->RemoveDatabasePet(m_DatabaseId);
|
inventoryComponent->RemoveDatabasePet(m_DatabaseId);
|
||||||
|
|
||||||
auto* item = inventoryComponent->FindItemBySubKey(m_DatabaseId);
|
auto* const item = inventoryComponent->FindItemBySubKey(m_DatabaseId);
|
||||||
|
|
||||||
item->SetCount(0, false, false);
|
item->SetCount(0, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PetComponent::Command(const NiPoint3& position, const LWOOBJID source, const int32_t commandType, const int32_t typeId, const bool overrideObey) {
|
void PetComponent::Command(const NiPoint3& position, const LWOOBJID source, const int32_t commandType, const int32_t typeId, const bool overrideObey) {
|
||||||
auto* owner = GetOwner();
|
auto* const owner = GetOwner();
|
||||||
if (!owner) return;
|
if (!owner) return;
|
||||||
|
|
||||||
if (commandType == 1) {
|
if (commandType == 1) {
|
||||||
@ -1254,10 +1244,6 @@ LWOOBJID PetComponent::GetItemId() const {
|
|||||||
return m_ItemId;
|
return m_ItemId;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t PetComponent::GetStatus() const {
|
|
||||||
return m_Flags;
|
|
||||||
}
|
|
||||||
|
|
||||||
ePetAbilityType PetComponent::GetAbility() const {
|
ePetAbilityType PetComponent::GetAbility() const {
|
||||||
return m_Ability;
|
return m_Ability;
|
||||||
}
|
}
|
||||||
@ -1266,11 +1252,6 @@ void PetComponent::SetInteraction(LWOOBJID value) {
|
|||||||
m_Interaction = value;
|
m_Interaction = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PetComponent::SetStatus(uint32_t value) {
|
|
||||||
m_Flags = value;
|
|
||||||
LOG_DEBUG("Pet status set to: %x", m_Flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PetComponent::SetAbility(ePetAbilityType value) {
|
void PetComponent::SetAbility(ePetAbilityType value) {
|
||||||
m_Ability = value;
|
m_Ability = value;
|
||||||
}
|
}
|
||||||
@ -1282,9 +1263,9 @@ PetComponent* PetComponent::GetTamingPet(LWOOBJID tamer) {
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto* entity = Game::entityManager->GetEntity(pair->second);
|
auto* const entity = Game::entityManager->GetEntity(pair->second);
|
||||||
|
|
||||||
if (entity == nullptr) {
|
if (!entity) {
|
||||||
currentActivities.erase(tamer);
|
currentActivities.erase(tamer);
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@ -1300,9 +1281,9 @@ PetComponent* PetComponent::GetActivePet(LWOOBJID owner) {
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto* entity = Game::entityManager->GetEntity(pair->second);
|
auto* const entity = Game::entityManager->GetEntity(pair->second);
|
||||||
|
|
||||||
if (entity == nullptr) {
|
if (!entity) {
|
||||||
activePets.erase(owner);
|
activePets.erase(owner);
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -38,6 +38,7 @@ enum PetInteractType : uint8_t {
|
|||||||
enum PetFlag : uint32_t {
|
enum PetFlag : uint32_t {
|
||||||
NONE,
|
NONE,
|
||||||
IDLE = 1 << 0, //0x01 - Seems to be "idle," which the game doesn't differentiate from "follow"
|
IDLE = 1 << 0, //0x01 - Seems to be "idle," which the game doesn't differentiate from "follow"
|
||||||
|
UNKNOWN2 = 1 << 1, //0x02,
|
||||||
UNKNOWN4 = 1 << 2, //0x04 - FOLLOWING(?)
|
UNKNOWN4 = 1 << 2, //0x04 - FOLLOWING(?)
|
||||||
BEING_TAMED = 1 << 4, //0x10,
|
BEING_TAMED = 1 << 4, //0x10,
|
||||||
NOT_WAITING = 1 << 5, //0x20,
|
NOT_WAITING = 1 << 5, //0x20,
|
||||||
@ -297,13 +298,13 @@ public:
|
|||||||
* bit map
|
* bit map
|
||||||
* @return the status of this pet
|
* @return the status of this pet
|
||||||
*/
|
*/
|
||||||
uint32_t GetStatus() const;
|
/*uint32_t GetStatus() const;*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the current status of the pet
|
* Sets the current status of the pet
|
||||||
* @param value the current status of the pet to set
|
* @param value the current status of the pet to set
|
||||||
*/
|
*/
|
||||||
void SetStatus(uint32_t value);
|
/*void SetStatus(uint32_t value);*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an ability the pet may perform, currently unused
|
* Returns an ability the pet may perform, currently unused
|
||||||
@ -585,7 +586,6 @@ private:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Pet information loaded from the CDClientDatabase
|
* Pet information loaded from the CDClientDatabase
|
||||||
* TODO: Switch to a reference when safe to do so
|
|
||||||
*/
|
*/
|
||||||
CDPetComponent m_PetInfo;
|
CDPetComponent m_PetInfo;
|
||||||
};
|
};
|
||||||
|
@ -710,17 +710,18 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Pet status utility
|
// Pet status utility
|
||||||
if (chatCommand == "setpetstatus" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
if (chatCommand == "setpetflag" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
if (args.size() == 0) {
|
if (args.size() == 0) {
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"Too few arguments!");
|
ChatPackets::SendSystemMessage(sysAddr, u"Too few arguments!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto petStatus = GeneralUtils::TryParse<uint32_t>(args[0]);
|
const auto petFlagInput = GeneralUtils::TryParse<std::underlying_type_t<PetFlag>>(args[0]);
|
||||||
if (!petStatus) {
|
if (!petFlagInput) {
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"Invalid pet status!");
|
ChatPackets::SendSystemMessage(sysAddr, u"Invalid pet status!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
const PetFlag petFlag = static_cast<PetFlag>(1 << petFlagInput.value());
|
||||||
|
|
||||||
// Determine if player has a pet summoned
|
// Determine if player has a pet summoned
|
||||||
auto* petComponent = PetComponent::GetActivePet(entity->GetObjectID());
|
auto* petComponent = PetComponent::GetActivePet(entity->GetObjectID());
|
||||||
@ -729,10 +730,9 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
petComponent->SetStatus(petStatus.value());
|
petComponent->SetFlag(petFlag);
|
||||||
//Game::entityManager->SerializeEntity(petComponent->GetParentEntity());
|
|
||||||
|
|
||||||
std::u16string msg = u"Set pet status to " + (GeneralUtils::to_u16string(petStatus.value()));
|
std::u16string msg = u"Set pet flag to " + (GeneralUtils::to_u16string(petFlag));
|
||||||
ChatPackets::SendSystemMessage(sysAddr, msg);
|
ChatPackets::SendSystemMessage(sysAddr, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,13 +74,13 @@ void DamagingPets::OnTimerDone(Entity* self, std::string message) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DamagingPets::MakeUntamable(Entity* self) {
|
void DamagingPets::MakeUntamable(Entity* self) {
|
||||||
auto* petComponent = self->GetComponent<PetComponent>();
|
auto* const petComponent = self->GetComponent<PetComponent>();
|
||||||
|
|
||||||
// If the pet is currently not being tamed, make it hostile
|
// If the pet is currently not being tamed, make it hostile
|
||||||
if (petComponent != nullptr && petComponent->GetStatus() != 5) {
|
if (petComponent != nullptr && !petComponent->HasFlag(PetFlag::NOT_WAITING)) {
|
||||||
self->SetNetworkVar<bool>(u"bIAmTamable", false);
|
self->SetNetworkVar<bool>(u"bIAmTamable", false);
|
||||||
self->SetVar<bool>(u"IsEvil", true);
|
self->SetVar<bool>(u"IsEvil", true);
|
||||||
petComponent->SetStatus(1);
|
petComponent->SetFlag(PetFlag::IDLE);
|
||||||
|
|
||||||
auto* combatAIComponent = self->GetComponent<BaseCombatAIComponent>();
|
auto* combatAIComponent = self->GetComponent<BaseCombatAIComponent>();
|
||||||
if (combatAIComponent != nullptr) {
|
if (combatAIComponent != nullptr) {
|
||||||
@ -110,7 +110,7 @@ void DamagingPets::ClearEffects(Entity* self) {
|
|||||||
|
|
||||||
auto* petComponent = self->GetComponent<PetComponent>();
|
auto* petComponent = self->GetComponent<PetComponent>();
|
||||||
if (petComponent != nullptr) {
|
if (petComponent != nullptr) {
|
||||||
petComponent->SetStatus(67108866);
|
petComponent->SetFlag(PetFlag::TAMEABLE, PetFlag::UNKNOWN2);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto* combatAIComponent = self->GetComponent<BaseCombatAIComponent>();
|
auto* combatAIComponent = self->GetComponent<BaseCombatAIComponent>();
|
||||||
|
@ -97,6 +97,10 @@ These commands are primarily for development and testing. The usage of many of t
|
|||||||
|setcontrolscheme|`/setcontrolscheme <scheme number>`|Sets the character control scheme to the specified number.|8|
|
|setcontrolscheme|`/setcontrolscheme <scheme number>`|Sets the character control scheme to the specified number.|8|
|
||||||
|setcurrency|`/setcurrency <coins>`|Sets your coins.|8|
|
|setcurrency|`/setcurrency <coins>`|Sets your coins.|8|
|
||||||
|setflag|`/setflag (value) <flag id>`|Sets the given inventory or health flag to the given value, where value can be one of "on" or "off". If no value is given, by default this adds the flag to your character (equivalent of calling `/setflag on <flag id>`).|8|
|
|setflag|`/setflag (value) <flag id>`|Sets the given inventory or health flag to the given value, where value can be one of "on" or "off". If no value is given, by default this adds the flag to your character (equivalent of calling `/setflag on <flag id>`).|8|
|
||||||
|
|setpetaccel|`/setpetaccel (value) <pet acceleration>`|Sets the acceleration of the owner's pet to the given value.|8|
|
||||||
|
|setpetflag|`/setpetflag (value) <pet flag id>`|Sets the pet flag to the given value, where the value is one of the bitshift values specified in the PetFlags enum.|8|
|
||||||
|
|setpetmaxspeed|`/setpetmaxspeed (value) <pet max speed>`|Sets the maximum speed of the owner's pet to the given value.|8|
|
||||||
|
|setpethalt|`/setpethalt (value) <pet halting distance>`|Sets the halting distance of the owner's pet to the given value.|8|
|
||||||
|setinventorysize|`/setinventorysize <size> (inventory)` or <br> `/setinvsize <size> (inventory)`|Sets your inventory size to the given size. If `inventory` is provided, the number or string will be used to set that inventory to the requested size. Alias: `/setinvsize`|8|
|
|setinventorysize|`/setinventorysize <size> (inventory)` or <br> `/setinvsize <size> (inventory)`|Sets your inventory size to the given size. If `inventory` is provided, the number or string will be used to set that inventory to the requested size. Alias: `/setinvsize`|8|
|
||||||
|setuistate|`/setuistate <ui state>`|Changes UI state.|8|
|
|setuistate|`/setuistate <ui state>`|Changes UI state.|8|
|
||||||
|spawn|`/spawn <id>`|Spawns an object at your location by id.|8|
|
|spawn|`/spawn <id>`|Spawns an object at your location by id.|8|
|
||||||
|
Loading…
Reference in New Issue
Block a user