mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-06-13 02:04:20 +00:00
cleanup enums to make them more consistent
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
#include "ChatPackets.h"
|
||||
#include "Inventory.h"
|
||||
#include "InventoryComponent.h"
|
||||
#include "eMissionTaskType.h"
|
||||
#include "eMissionState.h"
|
||||
|
||||
Character::Character(uint32_t id, User* parentUser) {
|
||||
//First load the name, etc:
|
||||
@@ -34,7 +36,7 @@ Character::Character(uint32_t id, User* parentUser) {
|
||||
m_UnapprovedName = res->getString(2).c_str();
|
||||
m_NameRejected = res->getBoolean(3);
|
||||
m_PropertyCloneID = res->getUInt(4);
|
||||
m_PermissionMap = static_cast<PermissionMap>(res->getUInt64(5));
|
||||
m_PermissionMap = static_cast<ePermissionMap>(res->getUInt64(5));
|
||||
}
|
||||
|
||||
delete res;
|
||||
@@ -93,7 +95,7 @@ void Character::UpdateFromDatabase() {
|
||||
m_UnapprovedName = res->getString(2).c_str();
|
||||
m_NameRejected = res->getBoolean(3);
|
||||
m_PropertyCloneID = res->getUInt(4);
|
||||
m_PermissionMap = static_cast<PermissionMap>(res->getUInt64(5));
|
||||
m_PermissionMap = static_cast<ePermissionMap>(res->getUInt64(5));
|
||||
}
|
||||
|
||||
delete res;
|
||||
@@ -423,7 +425,7 @@ void Character::SetPlayerFlag(const uint32_t flagId, const bool value) {
|
||||
auto* missionComponent = player->GetComponent<MissionComponent>();
|
||||
|
||||
if (missionComponent != nullptr) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_PLAYER_FLAG, flagId);
|
||||
missionComponent->Progress(eMissionTaskType::PLAYER_FLAG, flagId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -535,7 +537,7 @@ void Character::OnZoneLoad() {
|
||||
|
||||
if (missionComponent != nullptr) {
|
||||
// Fix the monument race flag
|
||||
if (missionComponent->GetMissionState(319) >= MissionState::MISSION_STATE_READY_TO_COMPLETE) {
|
||||
if (missionComponent->GetMissionState(319) >= eMissionState::READY_TO_COMPLETE) {
|
||||
SetPlayerFlag(33, true);
|
||||
}
|
||||
}
|
||||
@@ -550,7 +552,7 @@ void Character::OnZoneLoad() {
|
||||
/**
|
||||
* Restrict old character to 1 million coins
|
||||
*/
|
||||
if (HasPermission(PermissionMap::Old)) {
|
||||
if (HasPermission(ePermissionMap::Old)) {
|
||||
if (GetCoins() > 1000000) {
|
||||
SetCoins(1000000, eLootSourceType::LOOT_SOURCE_NONE);
|
||||
}
|
||||
@@ -568,11 +570,11 @@ void Character::OnZoneLoad() {
|
||||
}
|
||||
}
|
||||
|
||||
PermissionMap Character::GetPermissionMap() const {
|
||||
ePermissionMap Character::GetPermissionMap() const {
|
||||
return m_PermissionMap;
|
||||
}
|
||||
|
||||
bool Character::HasPermission(PermissionMap permission) const {
|
||||
bool Character::HasPermission(ePermissionMap permission) const {
|
||||
return (static_cast<uint64_t>(m_PermissionMap) & static_cast<uint64_t>(permission)) != 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,11 +9,12 @@
|
||||
|
||||
#include "NiPoint3.h"
|
||||
#include "NiQuaternion.h"
|
||||
#include "PermissionMap.h"
|
||||
#include "ePermissionMap.h"
|
||||
|
||||
class User;
|
||||
struct Packet;
|
||||
class Entity;
|
||||
enum class ePermissionMap : uint64_t;
|
||||
|
||||
/**
|
||||
* Meta information about a character, like their name and style
|
||||
@@ -385,14 +386,14 @@ public:
|
||||
* Gets the permissions of the character, determining what actions a character may do
|
||||
* @return the permissions for this character
|
||||
*/
|
||||
PermissionMap GetPermissionMap() const;
|
||||
ePermissionMap GetPermissionMap() const;
|
||||
|
||||
/**
|
||||
* Check if this character has a certain permission
|
||||
* @param permission the ID of the permission to check for
|
||||
* @return whether the character has the specified permission
|
||||
*/
|
||||
bool HasPermission(PermissionMap permission) const;
|
||||
bool HasPermission(ePermissionMap permission) const;
|
||||
|
||||
/**
|
||||
* Gets all the emotes this character has unlocked so far
|
||||
@@ -481,7 +482,7 @@ private:
|
||||
/**
|
||||
* Bitmap of permission attributes this character has.
|
||||
*/
|
||||
PermissionMap m_PermissionMap;
|
||||
ePermissionMap m_PermissionMap;
|
||||
|
||||
/**
|
||||
* The default name of this character
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "EntityTimer.h"
|
||||
#include "EntityCallbackTimer.h"
|
||||
#include "Loot.h"
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
//Component includes:
|
||||
#include "Component.h"
|
||||
@@ -1318,7 +1319,7 @@ void Entity::OnCollisionPhantom(const LWOOBJID otherEntity) {
|
||||
auto* missionComponent = other->GetComponent<MissionComponent>();
|
||||
|
||||
if (missionComponent != nullptr) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_LOCATION, 0, 0, GeneralUtils::UTF16ToWTF8(poi));
|
||||
missionComponent->Progress(eMissionTaskType::EXPLORE, 0, 0, GeneralUtils::UTF16ToWTF8(poi));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1614,7 +1615,7 @@ void Entity::PickupItem(const LWOOBJID& objectID) {
|
||||
auto* missionComponent = GetComponent<MissionComponent>();
|
||||
|
||||
if (missionComponent != nullptr) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_POWERUP, skill.skillID);
|
||||
missionComponent->Progress(eMissionTaskType::POWERUP, skill.skillID);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "Character.h"
|
||||
#include "CharacterComponent.h"
|
||||
#include "MissionComponent.h"
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
TradingManager* TradingManager::m_Address = nullptr;
|
||||
|
||||
@@ -161,14 +162,14 @@ void Trade::Complete() {
|
||||
for (const auto& tradeItem : m_ItemsA) {
|
||||
auto* itemToRemove = inventoryA->FindItemById(tradeItem.itemId);
|
||||
if (itemToRemove) itemToRemove->SetCount(itemToRemove->GetCount() - tradeItem.itemCount);
|
||||
missionsA->Progress(MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION, tradeItem.itemLot, LWOOBJID_EMPTY, "", -tradeItem.itemCount);
|
||||
missionsA->Progress(eMissionTaskType::GATHER, tradeItem.itemLot, LWOOBJID_EMPTY, "", -tradeItem.itemCount);
|
||||
inventoryB->AddItem(tradeItem.itemLot, tradeItem.itemCount, eLootSourceType::LOOT_SOURCE_TRADE);
|
||||
}
|
||||
|
||||
for (const auto& tradeItem : m_ItemsB) {
|
||||
auto* itemToRemove = inventoryB->FindItemById(tradeItem.itemId);
|
||||
if (itemToRemove) itemToRemove->SetCount(itemToRemove->GetCount() - tradeItem.itemCount);
|
||||
missionsB->Progress(MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION, tradeItem.itemLot, LWOOBJID_EMPTY, "", -tradeItem.itemCount);
|
||||
missionsB->Progress(eMissionTaskType::GATHER, tradeItem.itemLot, LWOOBJID_EMPTY, "", -tradeItem.itemCount);
|
||||
inventoryA->AddItem(tradeItem.itemLot, tradeItem.itemCount, eLootSourceType::LOOT_SOURCE_TRADE);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
#ifndef __ACHIEVEMENTCACHEKEY__H__
|
||||
#define __ACHIEVEMENTCACHEKEY__H__
|
||||
|
||||
@@ -6,7 +8,7 @@ public:
|
||||
AchievementCacheKey() {
|
||||
targets = "";
|
||||
value = 0;
|
||||
type = MissionTaskType::MISSION_TASK_TYPE_UNKNOWN;
|
||||
type = eMissionTaskType::UNKNOWN;
|
||||
};
|
||||
|
||||
bool operator==(const AchievementCacheKey& point) const {
|
||||
@@ -14,15 +16,15 @@ public:
|
||||
};
|
||||
void SetTargets(const std::string value) { this->targets = value; };
|
||||
void SetValue(uint32_t value) { this->value = value; };
|
||||
void SetType(MissionTaskType value) { this->type = value; };
|
||||
void SetType(eMissionTaskType value) { this->type = value; };
|
||||
|
||||
std::string GetTargets() const { return this->targets; };
|
||||
uint32_t GetValue() const { return this->value; };
|
||||
MissionTaskType GetType() const { return this->type; };
|
||||
eMissionTaskType GetType() const { return this->type; };
|
||||
private:
|
||||
std::string targets;
|
||||
uint32_t value;
|
||||
MissionTaskType type;
|
||||
eMissionTaskType type;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "InventoryComponent.h"
|
||||
#include "dZoneManager.h"
|
||||
#include "WorldConfig.h"
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
DestroyableComponent::DestroyableComponent(Entity* parent) : Component(parent) {
|
||||
m_iArmor = 0;
|
||||
@@ -467,9 +468,9 @@ bool DestroyableComponent::IsKnockbackImmune() const {
|
||||
|
||||
if (characterComponent != nullptr && inventoryComponent != nullptr && characterComponent->GetCurrentActivity() == eGameActivities::ACTIVITY_QUICKBUILDING) {
|
||||
const auto hasPassive = inventoryComponent->HasAnyPassive({
|
||||
ItemSetPassiveAbilityID::EngineerRank2, ItemSetPassiveAbilityID::EngineerRank3,
|
||||
ItemSetPassiveAbilityID::SummonerRank2, ItemSetPassiveAbilityID::SummonerRank3,
|
||||
ItemSetPassiveAbilityID::InventorRank2, ItemSetPassiveAbilityID::InventorRank3,
|
||||
eItemSetPassiveAbilityID::EngineerRank2, eItemSetPassiveAbilityID::EngineerRank3,
|
||||
eItemSetPassiveAbilityID::SummonerRank2, eItemSetPassiveAbilityID::SummonerRank3,
|
||||
eItemSetPassiveAbilityID::InventorRank2, eItemSetPassiveAbilityID::InventorRank3,
|
||||
}, 5);
|
||||
|
||||
if (hasPassive) {
|
||||
@@ -736,12 +737,12 @@ void DestroyableComponent::Smash(const LWOOBJID source, const eKillType killType
|
||||
|
||||
if (memberMissions == nullptr) continue;
|
||||
|
||||
memberMissions->Progress(MissionTaskType::MISSION_TASK_TYPE_SMASH, m_Parent->GetLOT());
|
||||
memberMissions->Progress(MissionTaskType::MISSION_TASK_TYPE_SKILL, m_Parent->GetLOT(), skillID);
|
||||
memberMissions->Progress(eMissionTaskType::SMASH, m_Parent->GetLOT());
|
||||
memberMissions->Progress(eMissionTaskType::USE_SKILL, m_Parent->GetLOT(), skillID);
|
||||
}
|
||||
} else {
|
||||
missions->Progress(MissionTaskType::MISSION_TASK_TYPE_SMASH, m_Parent->GetLOT());
|
||||
missions->Progress(MissionTaskType::MISSION_TASK_TYPE_SKILL, m_Parent->GetLOT(), skillID);
|
||||
missions->Progress(eMissionTaskType::SMASH, m_Parent->GetLOT());
|
||||
missions->Progress(eMissionTaskType::USE_SKILL, m_Parent->GetLOT(), skillID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "eItemType.h"
|
||||
#include "eUnequippableActiveType.h"
|
||||
#include "CppScripts.h"
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
InventoryComponent::InventoryComponent(Entity* parent, tinyxml2::XMLDocument* document): Component(parent) {
|
||||
this->m_Dirty = true;
|
||||
@@ -196,7 +197,7 @@ void InventoryComponent::AddItem(
|
||||
auto* item = new Item(lot, inventory, slot, count, config, parent, showFlyingLoot, isModMoveAndEquip, subKey, bound, lootSourceType);
|
||||
|
||||
if (missions != nullptr && !IsTransferInventory(inventoryType)) {
|
||||
missions->Progress(MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION, lot, LWOOBJID_EMPTY, "", count, IsTransferInventory(inventorySourceType));
|
||||
missions->Progress(eMissionTaskType::GATHER, lot, LWOOBJID_EMPTY, "", count, IsTransferInventory(inventorySourceType));
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -284,7 +285,7 @@ void InventoryComponent::AddItem(
|
||||
}
|
||||
|
||||
if (missions != nullptr && !IsTransferInventory(inventoryType)) {
|
||||
missions->Progress(MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION, lot, LWOOBJID_EMPTY, "", count - outOfSpace, IsTransferInventory(inventorySourceType));
|
||||
missions->Progress(eMissionTaskType::GATHER, lot, LWOOBJID_EMPTY, "", count - outOfSpace, IsTransferInventory(inventorySourceType));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -373,7 +374,7 @@ void InventoryComponent::MoveItemToInventory(Item* item, const eInventoryType in
|
||||
|
||||
if (missionComponent != nullptr) {
|
||||
if (IsTransferInventory(inventory)) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION, lot, LWOOBJID_EMPTY, "", -static_cast<int32_t>(count));
|
||||
missionComponent->Progress(eMissionTaskType::GATHER, lot, LWOOBJID_EMPTY, "", -static_cast<int32_t>(count));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -841,9 +842,9 @@ void InventoryComponent::EquipItem(Item* item, const bool skipChecks) {
|
||||
const auto type = static_cast<eItemType>(item->GetInfo().itemType);
|
||||
|
||||
|
||||
if (!building && (item->GetLot() == 6086 || type == eItemType::ITEM_TYPE_LOOT_MODEL || type == eItemType::ITEM_TYPE_VEHICLE)) return;
|
||||
if (!building && (item->GetLot() == 6086 || type == eItemType::LOOT_MODEL || type == eItemType::VEHICLE)) return;
|
||||
|
||||
if (type != eItemType::ITEM_TYPE_LOOT_MODEL && type != eItemType::ITEM_TYPE_MODEL) {
|
||||
if (type != eItemType::LOOT_MODEL && type != eItemType::MODEL) {
|
||||
if (!item->GetBound() && !item->GetPreconditionExpression()->Check(m_Parent)) {
|
||||
return;
|
||||
}
|
||||
@@ -1202,14 +1203,14 @@ void InventoryComponent::TriggerPassiveAbility(PassiveAbilityTrigger trigger, En
|
||||
}
|
||||
}
|
||||
|
||||
bool InventoryComponent::HasAnyPassive(const std::vector<ItemSetPassiveAbilityID>& passiveIDs, int32_t equipmentRequirement) const {
|
||||
bool InventoryComponent::HasAnyPassive(const std::vector<eItemSetPassiveAbilityID>& passiveIDs, int32_t equipmentRequirement) const {
|
||||
for (auto* set : m_Itemsets) {
|
||||
if (set->GetEquippedCount() < equipmentRequirement) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check if the set has any of the passive abilities
|
||||
if (std::find(passiveIDs.begin(), passiveIDs.end(), static_cast<ItemSetPassiveAbilityID>(set->GetID())) != passiveIDs.end()) {
|
||||
if (std::find(passiveIDs.begin(), passiveIDs.end(), static_cast<eItemSetPassiveAbilityID>(set->GetID())) != passiveIDs.end()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1285,15 +1286,15 @@ void InventoryComponent::RemoveDatabasePet(LWOOBJID id) {
|
||||
|
||||
BehaviorSlot InventoryComponent::FindBehaviorSlot(const eItemType type) {
|
||||
switch (type) {
|
||||
case eItemType::ITEM_TYPE_HAT:
|
||||
case eItemType::HAT:
|
||||
return BehaviorSlot::Head;
|
||||
case eItemType::ITEM_TYPE_NECK:
|
||||
case eItemType::NECK:
|
||||
return BehaviorSlot::Neck;
|
||||
case eItemType::ITEM_TYPE_LEFT_HAND:
|
||||
case eItemType::LEFT_HAND:
|
||||
return BehaviorSlot::Offhand;
|
||||
case eItemType::ITEM_TYPE_RIGHT_HAND:
|
||||
case eItemType::RIGHT_HAND:
|
||||
return BehaviorSlot::Primary;
|
||||
case eItemType::ITEM_TYPE_CONSUMABLE:
|
||||
case eItemType::CONSUMABLE:
|
||||
return BehaviorSlot::Consumable;
|
||||
default:
|
||||
return BehaviorSlot::Invalid;
|
||||
@@ -1343,7 +1344,7 @@ std::vector<uint32_t> InventoryComponent::FindBuffs(Item* item, bool castOnEquip
|
||||
}
|
||||
|
||||
if (missions != nullptr && castOnEquip) {
|
||||
missions->Progress(MissionTaskType::MISSION_TASK_TYPE_SKILL, result.skillID);
|
||||
missions->Progress(eMissionTaskType::USE_SKILL, result.skillID);
|
||||
}
|
||||
|
||||
// If item is not a proxy, add its buff to the added buffs.
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#include "DatabasePet.h"
|
||||
#include "Component.h"
|
||||
#include "ItemSetPassiveAbility.h"
|
||||
#include "ItemSetPassiveAbilityID.h"
|
||||
#include "eItemSetPassiveAbilityID.h"
|
||||
#include "PossessorComponent.h"
|
||||
#include "eInventoryType.h"
|
||||
|
||||
@@ -291,7 +291,7 @@ public:
|
||||
* @param equipmentRequirement the number of equipment required to be allowed to have the ability
|
||||
* @return if the entity has any of the passed passive abilities equipped
|
||||
*/
|
||||
bool HasAnyPassive(const std::vector<ItemSetPassiveAbilityID>& passiveIDs, int32_t equipmentRequirement) const;
|
||||
bool HasAnyPassive(const std::vector<eItemSetPassiveAbilityID>& passiveIDs, int32_t equipmentRequirement) const;
|
||||
|
||||
/**
|
||||
* Despawns the currently active pet, if any
|
||||
@@ -354,14 +354,14 @@ public:
|
||||
|
||||
/**
|
||||
* Call this when you equip an item. This calls OnFactionTriggerItemEquipped for any scripts found on the items.
|
||||
*
|
||||
*
|
||||
* @param equippedItem The item script to lookup and call equip on
|
||||
*/
|
||||
void EquipScripts(Item* equippedItem);
|
||||
|
||||
|
||||
/**
|
||||
* Call this when you unequip an item. This calls OnFactionTriggerItemUnequipped for any scripts found on the items.
|
||||
*
|
||||
*
|
||||
* @param unequippedItem The item script to lookup and call unequip on
|
||||
*/
|
||||
void UnequipScripts(Item* unequippedItem);
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "Mail.h"
|
||||
#include "MissionPrerequisites.h"
|
||||
#include "AchievementCacheKey.h"
|
||||
#include "eMissionState.h"
|
||||
|
||||
// MARK: Mission Component
|
||||
|
||||
@@ -53,11 +54,11 @@ Mission* MissionComponent::GetMission(const uint32_t missionId) const {
|
||||
}
|
||||
|
||||
|
||||
MissionState MissionComponent::GetMissionState(const uint32_t missionId) const {
|
||||
eMissionState MissionComponent::GetMissionState(const uint32_t missionId) const {
|
||||
auto* mission = GetMission(missionId);
|
||||
|
||||
if (mission == nullptr) {
|
||||
return CanAccept(missionId) ? MissionState::MISSION_STATE_AVAILABLE : MissionState::MISSION_STATE_UNKNOWN;
|
||||
return CanAccept(missionId) ? eMissionState::AVAILABLE : eMissionState::UNKNOWN;
|
||||
}
|
||||
|
||||
return mission->GetMissionState();
|
||||
@@ -143,7 +144,7 @@ void MissionComponent::RemoveMission(uint32_t missionId) {
|
||||
m_Missions.erase(missionId);
|
||||
}
|
||||
|
||||
void MissionComponent::Progress(MissionTaskType type, int32_t value, LWOOBJID associate, const std::string& targets, int32_t count, bool ignoreAchievements) {
|
||||
void MissionComponent::Progress(eMissionTaskType type, int32_t value, LWOOBJID associate, const std::string& targets, int32_t count, bool ignoreAchievements) {
|
||||
for (const auto& pair : m_Missions) {
|
||||
auto* mission = pair.second;
|
||||
|
||||
@@ -215,7 +216,7 @@ void MissionComponent::ForceProgressTaskType(const uint32_t missionId, const uin
|
||||
}
|
||||
|
||||
for (auto* element : mission->GetTasks()) {
|
||||
if (element->GetType() != static_cast<MissionTaskType>(taskType)) continue;
|
||||
if (element->GetType() != static_cast<eMissionTaskType>(taskType)) continue;
|
||||
|
||||
element->AddProgress(value);
|
||||
}
|
||||
@@ -253,7 +254,7 @@ void MissionComponent::ForceProgressValue(uint32_t missionId, uint32_t taskType,
|
||||
}
|
||||
|
||||
for (auto* element : mission->GetTasks()) {
|
||||
if (element->GetType() != static_cast<MissionTaskType>(taskType) || !element->InAllTargets(value)) continue;
|
||||
if (element->GetType() != static_cast<eMissionTaskType>(taskType) || !element->InAllTargets(value)) continue;
|
||||
|
||||
element->AddProgress(1);
|
||||
}
|
||||
@@ -281,7 +282,7 @@ bool MissionComponent::GetMissionInfo(uint32_t missionId, CDMissions& result) {
|
||||
|
||||
#define MISSION_NEW_METHOD
|
||||
|
||||
bool MissionComponent::LookForAchievements(MissionTaskType type, int32_t value, bool progress, LWOOBJID associate, const std::string& targets, int32_t count) {
|
||||
bool MissionComponent::LookForAchievements(eMissionTaskType type, int32_t value, bool progress, LWOOBJID associate, const std::string& targets, int32_t count) {
|
||||
#ifdef MISSION_NEW_METHOD
|
||||
// Query for achievments, using the cache
|
||||
const auto& result = QueryAchievements(type, value, targets);
|
||||
@@ -390,7 +391,7 @@ bool MissionComponent::LookForAchievements(MissionTaskType type, int32_t value,
|
||||
#endif
|
||||
}
|
||||
|
||||
const std::vector<uint32_t>& MissionComponent::QueryAchievements(MissionTaskType type, int32_t value, const std::string targets) {
|
||||
const std::vector<uint32_t>& MissionComponent::QueryAchievements(eMissionTaskType type, int32_t value, const std::string targets) {
|
||||
// Create a hash which represent this query for achievements
|
||||
AchievementCacheKey toFind;
|
||||
toFind.SetType(type);
|
||||
@@ -484,7 +485,7 @@ bool MissionComponent::RequiresItem(const LOT lot) {
|
||||
}
|
||||
|
||||
for (auto* task : mission->GetTasks()) {
|
||||
if (task->IsComplete() || task->GetType() != MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION) {
|
||||
if (task->IsComplete() || task->GetType() != eMissionTaskType::GATHER) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -496,7 +497,7 @@ bool MissionComponent::RequiresItem(const LOT lot) {
|
||||
}
|
||||
}
|
||||
|
||||
const auto required = LookForAchievements(MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION, lot, false);
|
||||
const auto required = LookForAchievements(eMissionTaskType::GATHER, lot, false);
|
||||
|
||||
return required;
|
||||
}
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
|
||||
class AchievementCacheKey;
|
||||
|
||||
/**
|
||||
* The mission inventory of an entity. Tracks mission state for each mission that can be accepted and allows for
|
||||
* progression of each of the mission task types (see MissionTaskType).
|
||||
*/
|
||||
class MissionComponent: public Component
|
||||
/**
|
||||
* The mission inventory of an entity. Tracks mission state for each mission that can be accepted and allows for
|
||||
* progression of each of the mission task types (see eMissionTaskType).
|
||||
*/
|
||||
class MissionComponent : public Component
|
||||
{
|
||||
public:
|
||||
static const uint32_t ComponentType = COMPONENT_TYPE_MISSION;
|
||||
@@ -52,7 +52,7 @@ public:
|
||||
* @param missionId the ID of the mission to get the mission state for
|
||||
* @return the mission state of the mission specified by the ID
|
||||
*/
|
||||
MissionState GetMissionState(uint32_t missionId) const;
|
||||
eMissionState GetMissionState(uint32_t missionId) const;
|
||||
|
||||
/**
|
||||
* Checks if the entity has all the requirements for accepting the mission specified by the ID.
|
||||
@@ -93,7 +93,7 @@ public:
|
||||
* @param count the number to progress by, for example the number of items
|
||||
* @param ignoreAchievements do not progress achievements
|
||||
*/
|
||||
void Progress(MissionTaskType type, int32_t value, LWOOBJID associate = 0, const std::string& targets = "", int32_t count = 1, bool ignoreAchievements = false);
|
||||
void Progress(eMissionTaskType type, int32_t value, LWOOBJID associate = 0, const std::string& targets = "", int32_t count = 1, bool ignoreAchievements = false);
|
||||
|
||||
/**
|
||||
* Forces progression for a mission and task, ignoring checks
|
||||
@@ -140,7 +140,7 @@ public:
|
||||
* @param count the number of values to progress by (differs by task type)
|
||||
* @return true if a achievement was accepted, false otherwise
|
||||
*/
|
||||
bool LookForAchievements(MissionTaskType type, int32_t value, bool progress = true, LWOOBJID associate = LWOOBJID_EMPTY, const std::string& targets = "", int32_t count = 1);
|
||||
bool LookForAchievements(eMissionTaskType type, int32_t value, bool progress = true, LWOOBJID associate = LWOOBJID_EMPTY, const std::string& targets = "", int32_t count = 1);
|
||||
|
||||
/**
|
||||
* Checks if there's a mission active that requires the collection of the specified LOT
|
||||
@@ -188,7 +188,7 @@ private:
|
||||
* @param targets optional targets to progress with
|
||||
* @return list of mission IDs (achievements) that can be progressed for the given parameters
|
||||
*/
|
||||
static const std::vector<uint32_t>& QueryAchievements(MissionTaskType type, int32_t value, const std::string targets);
|
||||
static const std::vector<uint32_t>& QueryAchievements(eMissionTaskType type, int32_t value, const std::string targets);
|
||||
|
||||
/**
|
||||
* As achievements can be hard to query, we here store a list of all the mission IDs that can be unlocked for a
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "dLogger.h"
|
||||
#include "Game.h"
|
||||
#include "MissionPrerequisites.h"
|
||||
#include "eMissionState.h"
|
||||
|
||||
OfferedMission::OfferedMission(const uint32_t missionId, const bool offersMission, const bool acceptsMission) {
|
||||
this->missionId = missionId;
|
||||
@@ -170,10 +171,10 @@ void MissionOfferComponent::OfferMissions(Entity* entity, const uint32_t specifi
|
||||
for (const auto sample : randomMissionPool) {
|
||||
const auto state = missionComponent->GetMissionState(sample);
|
||||
|
||||
if (state == MissionState::MISSION_STATE_ACTIVE ||
|
||||
state == MissionState::MISSION_STATE_COMPLETE_ACTIVE ||
|
||||
state == MissionState::MISSION_STATE_READY_TO_COMPLETE ||
|
||||
state == MissionState::MISSION_STATE_COMPLETE_READY_TO_COMPLETE ||
|
||||
if (state == eMissionState::ACTIVE ||
|
||||
state == eMissionState::COMPLETE_ACTIVE ||
|
||||
state == eMissionState::READY_TO_COMPLETE ||
|
||||
state == eMissionState::COMPLETE_READY_TO_COMPLETE ||
|
||||
sample == specifiedMissionId) {
|
||||
mission = missionComponent->GetMission(sample);
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "dChatFilter.h"
|
||||
#include "Database.h"
|
||||
#include "EntityInfo.h"
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
|
||||
std::unordered_map<LOT, PetComponent::PetPuzzleData> PetComponent::buildCache{};
|
||||
std::unordered_map<LWOOBJID, LWOOBJID> PetComponent::currentActivities{};
|
||||
@@ -602,7 +604,7 @@ void PetComponent::NotifyTamingBuildSuccess(NiPoint3 position) {
|
||||
auto* missionComponent = tamer->GetComponent<MissionComponent>();
|
||||
|
||||
if (missionComponent != nullptr) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_PET_TAMING, m_Parent->GetLOT());
|
||||
missionComponent->Progress(eMissionTaskType::PET_TAMING, m_Parent->GetLOT());
|
||||
}
|
||||
|
||||
SetStatus(1);
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "RocketLaunchpadControlComponent.h"
|
||||
#include "PropertyEntranceComponent.h"
|
||||
#include "InventoryComponent.h"
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
#include <vector>
|
||||
#include "CppScripts.h"
|
||||
@@ -404,7 +405,7 @@ void PropertyManagementComponent::UpdateModelPosition(const LWOOBJID id, const N
|
||||
});
|
||||
// Progress place model missions
|
||||
auto missionComponent = entity->GetComponent<MissionComponent>();
|
||||
if (missionComponent != nullptr) missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_PLACE_MODEL, 0);
|
||||
if (missionComponent != nullptr) missionComponent->Progress(eMissionTaskType::PLACE_MODEL, 0);
|
||||
}
|
||||
|
||||
void PropertyManagementComponent::DeleteModel(const LWOOBJID id, const int deleteReason) {
|
||||
|
||||
@@ -15,13 +15,14 @@
|
||||
#include "Player.h"
|
||||
#include "PossessableComponent.h"
|
||||
#include "PossessorComponent.h"
|
||||
#include "RacingTaskParam.h"
|
||||
#include "eRacingTaskParam.h"
|
||||
#include "Spawner.h"
|
||||
#include "VehiclePhysicsComponent.h"
|
||||
#include "dServer.h"
|
||||
#include "dZoneManager.h"
|
||||
#include "dConfig.h"
|
||||
#include "Loot.h"
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.14159265358979323846264338327950288
|
||||
@@ -395,18 +396,18 @@ void RacingControlComponent::HandleMessageBoxResponse(Entity* player,
|
||||
|
||||
if (missionComponent == nullptr) return;
|
||||
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_RACING, 0, (LWOOBJID)RacingTaskParam::RACING_TASK_PARAM_COMPETED_IN_RACE); // Progress task for competing in a race
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_RACING, data->smashedTimes, (LWOOBJID)RacingTaskParam::RACING_TASK_PARAM_SAFE_DRIVER); // Finish a race without being smashed.
|
||||
missionComponent->Progress(eMissionTaskType::RACING, 0, (LWOOBJID)eRacingTaskParam::COMPETED_IN_RACE); // Progress task for competing in a race
|
||||
missionComponent->Progress(eMissionTaskType::RACING, data->smashedTimes, (LWOOBJID)eRacingTaskParam::SAFE_DRIVER); // Finish a race without being smashed.
|
||||
|
||||
// If solo racing is enabled OR if there are 3 players in the race, progress placement tasks.
|
||||
if (m_SoloRacing || m_LoadedPlayers > 2) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_RACING, data->finished, (LWOOBJID)RacingTaskParam::RACING_TASK_PARAM_FINISH_WITH_PLACEMENT); // Finish in 1st place on a race
|
||||
missionComponent->Progress(eMissionTaskType::RACING, data->finished, (LWOOBJID)eRacingTaskParam::FINISH_WITH_PLACEMENT); // Finish in 1st place on a race
|
||||
if (data->finished == 1) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_RACING, dZoneManager::Instance()->GetZone()->GetWorldID(), (LWOOBJID)RacingTaskParam::RACING_TASK_PARAM_FIRST_PLACE_MULTIPLE_TRACKS); // Finish in 1st place on multiple tracks.
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_RACING, dZoneManager::Instance()->GetZone()->GetWorldID(), (LWOOBJID)RacingTaskParam::RACING_TASK_PARAM_WIN_RACE_IN_WORLD); // Finished first place in specific world.
|
||||
missionComponent->Progress(eMissionTaskType::RACING, dZoneManager::Instance()->GetZone()->GetWorldID(), (LWOOBJID)eRacingTaskParam::FIRST_PLACE_MULTIPLE_TRACKS); // Finish in 1st place on multiple tracks.
|
||||
missionComponent->Progress(eMissionTaskType::RACING, dZoneManager::Instance()->GetZone()->GetWorldID(), (LWOOBJID)eRacingTaskParam::WIN_RACE_IN_WORLD); // Finished first place in specific world.
|
||||
}
|
||||
if (data->finished == m_LoadedPlayers) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_RACING, dZoneManager::Instance()->GetZone()->GetWorldID(), (LWOOBJID)RacingTaskParam::RACING_TASK_PARAM_LAST_PLACE_FINISH); // Finished first place in specific world.
|
||||
missionComponent->Progress(eMissionTaskType::RACING, dZoneManager::Instance()->GetZone()->GetWorldID(), (LWOOBJID)eRacingTaskParam::LAST_PLACE_FINISH); // Finished first place in specific world.
|
||||
}
|
||||
}
|
||||
} else if (id == "ACT_RACE_EXIT_THE_RACE?" || id == "Exit") {
|
||||
@@ -828,7 +829,7 @@ void RacingControlComponent::Update(float deltaTime) {
|
||||
if (missionComponent != nullptr) {
|
||||
|
||||
// Progress lap time tasks
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_RACING, (lapTime) * 1000, (LWOOBJID)RacingTaskParam::RACING_TASK_PARAM_LAP_TIME);
|
||||
missionComponent->Progress(eMissionTaskType::RACING, (lapTime) * 1000, (LWOOBJID)eRacingTaskParam::LAP_TIME);
|
||||
|
||||
if (player.lap == 3) {
|
||||
m_Finished++;
|
||||
@@ -844,7 +845,7 @@ void RacingControlComponent::Update(float deltaTime) {
|
||||
raceTime, raceTime * 1000);
|
||||
|
||||
// Entire race time
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_RACING, (raceTime) * 1000, (LWOOBJID)RacingTaskParam::RACING_TASK_PARAM_TOTAL_TRACK_TIME);
|
||||
missionComponent->Progress(eMissionTaskType::RACING, (raceTime) * 1000, (LWOOBJID)eRacingTaskParam::TOTAL_TRACK_TIME);
|
||||
|
||||
auto* characterComponent = playerEntity->GetComponent<CharacterComponent>();
|
||||
if (characterComponent != nullptr) {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include "dLogger.h"
|
||||
#include "CharacterComponent.h"
|
||||
#include "MissionComponent.h"
|
||||
#include "MissionTaskType.h"
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
#include "dServer.h"
|
||||
#include "PacketUtils.h"
|
||||
@@ -473,12 +473,12 @@ void RebuildComponent::CompleteRebuild(Entity* user) {
|
||||
auto* member = EntityManager::Instance()->GetEntity(memberId);
|
||||
if (member) {
|
||||
auto* missionComponent = member->GetComponent<MissionComponent>();
|
||||
if (missionComponent) missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_ACTIVITY, m_ActivityId);
|
||||
if (missionComponent) missionComponent->Progress(eMissionTaskType::ACTIVITY, m_ActivityId);
|
||||
}
|
||||
}
|
||||
} else{
|
||||
auto* missionComponent = builder->GetComponent<MissionComponent>();
|
||||
if (missionComponent) missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_ACTIVITY, m_ActivityId);
|
||||
if (missionComponent) missionComponent->Progress(eMissionTaskType::ACTIVITY, m_ActivityId);
|
||||
}
|
||||
LootGenerator::Instance().DropActivityLoot(builder, m_Parent, m_ActivityId, 1);
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "DestroyableComponent.h"
|
||||
#include "dMessageIdentifiers.h"
|
||||
#include "Loot.h"
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
ScriptedActivityComponent::ScriptedActivityComponent(Entity* parent, int activityID) : Component(parent) {
|
||||
m_ActivityID = activityID;
|
||||
@@ -552,7 +553,7 @@ void ActivityInstance::StartZone() {
|
||||
void ActivityInstance::RewardParticipant(Entity* participant) {
|
||||
auto* missionComponent = participant->GetComponent<MissionComponent>();
|
||||
if (missionComponent) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_ACTIVITY, m_ActivityInfo.ActivityID);
|
||||
missionComponent->Progress(eMissionTaskType::ACTIVITY, m_ActivityInfo.ActivityID);
|
||||
}
|
||||
|
||||
// First, get the activity data
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "StartSkill.h"
|
||||
#include "EchoStartSkill.h"
|
||||
#include "EchoSyncSkill.h"
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
@@ -281,7 +282,7 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System
|
||||
|
||||
MissionComponent* comp = entity->GetComponent<MissionComponent>();
|
||||
if (comp) {
|
||||
comp->Progress(MissionTaskType::MISSION_TASK_TYPE_SKILL, startSkill.skillID);
|
||||
comp->Progress(eMissionTaskType::USE_SKILL, startSkill.skillID);
|
||||
}
|
||||
|
||||
CDSkillBehaviorTable* skillTable = CDClientManager::Instance()->GetTable<CDSkillBehaviorTable>("SkillBehavior");
|
||||
|
||||
@@ -31,7 +31,9 @@
|
||||
#include "LeaderboardManager.h"
|
||||
#include "AMFFormat.h"
|
||||
#include "Loot.h"
|
||||
#include "RacingTaskParam.h"
|
||||
#include "eRacingTaskParam.h"
|
||||
#include "eMissionTaskType.h"
|
||||
#include "eMissionState.h"
|
||||
|
||||
#include <sstream>
|
||||
#include <future>
|
||||
@@ -3264,7 +3266,7 @@ void GameMessages::HandleClientTradeRequest(RakNet::BitStream* inStream, Entity*
|
||||
// Check if the player has restricted trade access
|
||||
auto* character = entity->GetCharacter();
|
||||
|
||||
if (character->HasPermission(PermissionMap::RestrictedTradeAccess)) {
|
||||
if (character->HasPermission(ePermissionMap::RestrictedTradeAccess)) {
|
||||
// Send a message to the player
|
||||
ChatPackets::SendSystemMessage(
|
||||
sysAddr,
|
||||
@@ -3284,7 +3286,7 @@ void GameMessages::HandleClientTradeRequest(RakNet::BitStream* inStream, Entity*
|
||||
if (invitee != nullptr && invitee->IsPlayer()) {
|
||||
character = invitee->GetCharacter();
|
||||
|
||||
if (character->HasPermission(PermissionMap::RestrictedTradeAccess)) {
|
||||
if (character->HasPermission(ePermissionMap::RestrictedTradeAccess)) {
|
||||
// Send a message to the player
|
||||
ChatPackets::SendSystemMessage(
|
||||
sysAddr,
|
||||
@@ -4707,25 +4709,10 @@ void GameMessages::HandleBuyFromVendor(RakNet::BitStream* inStream, Entity* enti
|
||||
|
||||
LOT tokenId = -1;
|
||||
|
||||
if (missionComponent->GetMissionState(545) == MissionState::MISSION_STATE_COMPLETE) // "Join Assembly!"
|
||||
{
|
||||
tokenId = 8318; // "Assembly Token"
|
||||
}
|
||||
|
||||
if (missionComponent->GetMissionState(556) == MissionState::MISSION_STATE_COMPLETE) // "Join Venture League!"
|
||||
{
|
||||
tokenId = 8321; // "Venture League Token"
|
||||
}
|
||||
|
||||
if (missionComponent->GetMissionState(567) == MissionState::MISSION_STATE_COMPLETE) // "Join The Sentinels!"
|
||||
{
|
||||
tokenId = 8319; // "Sentinels Token"
|
||||
}
|
||||
|
||||
if (missionComponent->GetMissionState(578) == MissionState::MISSION_STATE_COMPLETE) // "Join Paradox!"
|
||||
{
|
||||
tokenId = 8320; // "Paradox Token"
|
||||
}
|
||||
if (missionComponent->GetMissionState(545) == eMissionState::COMPLETE) tokenId = 8318; // "Assembly Token"
|
||||
if (missionComponent->GetMissionState(556) == eMissionState::COMPLETE) tokenId = 8321; // "Venture League Token"
|
||||
if (missionComponent->GetMissionState(567) == eMissionState::COMPLETE) tokenId = 8319; // "Sentinels Token"
|
||||
if (missionComponent->GetMissionState(578) == eMissionState::COMPLETE) tokenId = 8320; // "Paradox Token"
|
||||
|
||||
const uint32_t altCurrencyCost = itemComp.commendationCost * count;
|
||||
|
||||
@@ -5031,8 +5018,8 @@ void GameMessages::HandleRequestUse(RakNet::BitStream* inStream, Entity* entity,
|
||||
|
||||
if (missionComponent == nullptr) return;
|
||||
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_MISSION_INTERACTION, interactedObject->GetLOT(), interactedObject->GetObjectID());
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_NON_MISSION_INTERACTION, interactedObject->GetLOT(), interactedObject->GetObjectID());
|
||||
missionComponent->Progress(eMissionTaskType::TALK_TO_NPC, interactedObject->GetLOT(), interactedObject->GetObjectID());
|
||||
missionComponent->Progress(eMissionTaskType::INTERACT, interactedObject->GetLOT(), interactedObject->GetObjectID());
|
||||
}
|
||||
|
||||
void GameMessages::HandlePlayEmote(RakNet::BitStream* inStream, Entity* entity) {
|
||||
@@ -5059,7 +5046,7 @@ void GameMessages::HandlePlayEmote(RakNet::BitStream* inStream, Entity* entity)
|
||||
|
||||
if (targetEntity != nullptr) {
|
||||
targetEntity->OnEmoteReceived(emoteID, entity);
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_EMOTE, emoteID, targetID);
|
||||
missionComponent->Progress(eMissionTaskType::EMOTE, emoteID, targetID);
|
||||
}
|
||||
} else {
|
||||
Game::logger->LogDebug("GameMessages", "Target ID is empty, using backup");
|
||||
@@ -5071,7 +5058,7 @@ void GameMessages::HandlePlayEmote(RakNet::BitStream* inStream, Entity* entity)
|
||||
if (Vector3::DistanceSquared(scripted->GetPosition(), referencePoint) > 5.0f * 5.0f) continue;
|
||||
|
||||
scripted->OnEmoteReceived(emoteID, entity);
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_EMOTE, emoteID, scripted->GetObjectID());
|
||||
missionComponent->Progress(eMissionTaskType::EMOTE, emoteID, scripted->GetObjectID());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5163,7 +5150,7 @@ void GameMessages::HandleRespondToMission(RakNet::BitStream* inStream, Entity* e
|
||||
|
||||
void GameMessages::HandleMissionDialogOK(RakNet::BitStream* inStream, Entity* entity) {
|
||||
bool bIsComplete{};
|
||||
MissionState iMissionState{};
|
||||
eMissionState iMissionState{};
|
||||
int missionID{};
|
||||
LWOOBJID responder{};
|
||||
Entity* player = nullptr;
|
||||
@@ -5185,9 +5172,9 @@ void GameMessages::HandleMissionDialogOK(RakNet::BitStream* inStream, Entity* en
|
||||
return;
|
||||
}
|
||||
|
||||
if (iMissionState == MissionState::MISSION_STATE_AVAILABLE || iMissionState == MissionState::MISSION_STATE_COMPLETE_AVAILABLE) {
|
||||
if (iMissionState == eMissionState::AVAILABLE || iMissionState == eMissionState::COMPLETE_AVAILABLE) {
|
||||
missionComponent->AcceptMission(missionID);
|
||||
} else if (iMissionState == MissionState::MISSION_STATE_READY_TO_COMPLETE || iMissionState == MissionState::MISSION_STATE_COMPLETE_READY_TO_COMPLETE) {
|
||||
} else if (iMissionState == eMissionState::READY_TO_COMPLETE || iMissionState == eMissionState::COMPLETE_READY_TO_COMPLETE) {
|
||||
missionComponent->CompleteMission(missionID);
|
||||
}
|
||||
}
|
||||
@@ -5219,7 +5206,7 @@ void GameMessages::HandleHasBeenCollected(RakNet::BitStream* inStream, Entity* e
|
||||
|
||||
MissionComponent* missionComponent = static_cast<MissionComponent*>(player->GetComponent(COMPONENT_TYPE_MISSION));
|
||||
if (missionComponent) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_ENVIRONMENT, entity->GetLOT(), entity->GetObjectID());
|
||||
missionComponent->Progress(eMissionTaskType::COLLECTION, entity->GetLOT(), entity->GetObjectID());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5438,7 +5425,7 @@ void GameMessages::HandleRemoveItemFromInventory(RakNet::BitStream* inStream, En
|
||||
auto* missionComponent = entity->GetComponent<MissionComponent>();
|
||||
|
||||
if (missionComponent != nullptr) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION, item->GetLot(), LWOOBJID_EMPTY, "", -iStackCount);
|
||||
missionComponent->Progress(eMissionTaskType::GATHER, item->GetLot(), LWOOBJID_EMPTY, "", -iStackCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5593,8 +5580,8 @@ void GameMessages::HandleModularBuildFinish(RakNet::BitStream* inStream, Entity*
|
||||
|
||||
if (entity->GetLOT() != 9980 || Game::server->GetZoneID() != 1200) {
|
||||
if (missionComponent != nullptr) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_SCRIPT, entity->GetLOT(), entity->GetObjectID());
|
||||
if (count >= 7 && everyPieceSwapped) missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_RACING, LWOOBJID_EMPTY, (LWOOBJID)RacingTaskParam::RACING_TASK_PARAM_MODULAR_BUILDING);
|
||||
missionComponent->Progress(eMissionTaskType::SCRIPT, entity->GetLOT(), entity->GetObjectID());
|
||||
if (count >= 7 && everyPieceSwapped) missionComponent->Progress(eMissionTaskType::RACING, LWOOBJID_EMPTY, (LWOOBJID)eRacingTaskParam::MODULAR_BUILDING);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5826,7 +5813,7 @@ void GameMessages::HandleClientItemConsumed(RakNet::BitStream* inStream, Entity*
|
||||
|
||||
auto* missions = static_cast<MissionComponent*>(entity->GetComponent(COMPONENT_TYPE_MISSION));
|
||||
if (missions != nullptr) {
|
||||
missions->Progress(MissionTaskType::MISSION_TASK_TYPE_FOOD, itemLot);
|
||||
missions->Progress(eMissionTaskType::USE_ITEM, itemLot);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -231,41 +231,42 @@ eInventoryType Inventory::FindInventoryTypeForLot(const LOT lot) {
|
||||
const auto itemType = static_cast<eItemType>(itemComponent.itemType);
|
||||
|
||||
switch (itemType) {
|
||||
case eItemType::ITEM_TYPE_BRICK:
|
||||
case eItemType::BRICK:
|
||||
return BRICKS;
|
||||
|
||||
case eItemType::ITEM_TYPE_BEHAVIOR:
|
||||
case eItemType::BEHAVIOR:
|
||||
return BEHAVIORS;
|
||||
|
||||
case eItemType::ITEM_TYPE_PROPERTY:
|
||||
case eItemType::PROPERTY:
|
||||
return PROPERTY_DEEDS;
|
||||
|
||||
case eItemType::ITEM_TYPE_MODEL:
|
||||
case eItemType::ITEM_TYPE_VEHICLE:
|
||||
case eItemType::ITEM_TYPE_LOOT_MODEL:
|
||||
case eItemType::ITEM_TYPE_MOUNT:
|
||||
case eItemType::MODEL:
|
||||
case eItemType::VEHICLE:
|
||||
case eItemType::LOOT_MODEL:
|
||||
case eItemType::LUP_MODEL:
|
||||
case eItemType::MOUNT:
|
||||
return MODELS;
|
||||
|
||||
case eItemType::ITEM_TYPE_HAT:
|
||||
case eItemType::ITEM_TYPE_HAIR:
|
||||
case eItemType::ITEM_TYPE_NECK:
|
||||
case eItemType::ITEM_TYPE_LEFT_HAND:
|
||||
case eItemType::ITEM_TYPE_RIGHT_HAND:
|
||||
case eItemType::ITEM_TYPE_LEGS:
|
||||
case eItemType::ITEM_TYPE_LEFT_TRINKET:
|
||||
case eItemType::ITEM_TYPE_RIGHT_TRINKET:
|
||||
case eItemType::ITEM_TYPE_COLLECTIBLE:
|
||||
case eItemType::ITEM_TYPE_CONSUMABLE:
|
||||
case eItemType::ITEM_TYPE_CHEST:
|
||||
case eItemType::ITEM_TYPE_EGG:
|
||||
case eItemType::ITEM_TYPE_PET_FOOD:
|
||||
case eItemType::ITEM_TYPE_PET_INVENTORY_ITEM:
|
||||
case eItemType::ITEM_TYPE_PACKAGE:
|
||||
case eItemType::ITEM_TYPE_CURRENCY:
|
||||
case eItemType::HAT:
|
||||
case eItemType::HAIR:
|
||||
case eItemType::NECK:
|
||||
case eItemType::LEFT_HAND:
|
||||
case eItemType::RIGHT_HAND:
|
||||
case eItemType::LEGS:
|
||||
case eItemType::LEFT_TRINKET:
|
||||
case eItemType::RIGHT_TRINKET:
|
||||
case eItemType::COLLECTIBLE:
|
||||
case eItemType::CONSUMABLE:
|
||||
case eItemType::CHEST:
|
||||
case eItemType::EGG:
|
||||
case eItemType::PET_FOOD:
|
||||
case eItemType::PET_INVENTORY_ITEM:
|
||||
case eItemType::PACKAGE:
|
||||
|
||||
return ITEMS;
|
||||
|
||||
case eItemType::ITEM_TYPE_QUEST_OBJECT:
|
||||
case eItemType::ITEM_TYPE_UNKNOWN:
|
||||
case eItemType::QUEST_OBJECT:
|
||||
case eItemType::UNKNOWN:
|
||||
default:
|
||||
return QUEST;
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ Item::Item(
|
||||
|
||||
const auto type = static_cast<eItemType>(info->itemType);
|
||||
|
||||
if (type == eItemType::ITEM_TYPE_MOUNT) {
|
||||
if (type == eItemType::MOUNT) {
|
||||
id = GeneralUtils::SetBit(id, OBJECT_BIT_CLIENT);
|
||||
}
|
||||
|
||||
@@ -283,10 +283,10 @@ void Item::UseNonEquip(Item* item) {
|
||||
}
|
||||
|
||||
const auto type = static_cast<eItemType>(info->itemType);
|
||||
if (type == eItemType::ITEM_TYPE_MOUNT) {
|
||||
if (type == eItemType::MOUNT) {
|
||||
playerInventoryComponent->HandlePossession(this);
|
||||
// TODO Check if mounts are allowed to be spawned
|
||||
} else if (type == eItemType::ITEM_TYPE_PET_INVENTORY_ITEM && subKey != LWOOBJID_EMPTY) {
|
||||
} else if (type == eItemType::PET_INVENTORY_ITEM && subKey != LWOOBJID_EMPTY) {
|
||||
const auto& databasePet = playerInventoryComponent->GetDatabasePet(subKey);
|
||||
if (databasePet.lot != LOT_NULL) {
|
||||
playerInventoryComponent->SpawnPet(this);
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "CDClientDatabase.h"
|
||||
#include "Game.h"
|
||||
#include "MissionComponent.h"
|
||||
#include "eMissionTaskType.h"
|
||||
#include <algorithm>
|
||||
|
||||
ItemSet::ItemSet(const uint32_t id, InventoryComponent* inventoryComponent) {
|
||||
@@ -130,7 +131,7 @@ void ItemSet::OnEquip(const LOT lot) {
|
||||
|
||||
const auto behaviorId = skillTable->GetSkillByID(skill).behaviorID;
|
||||
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_SKILL, skill);
|
||||
missionComponent->Progress(eMissionTaskType::USE_SKILL, skill);
|
||||
|
||||
skillComponent->HandleUnmanaged(behaviorId, m_InventoryComponent->GetParent()->GetObjectID());
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include "DestroyableComponent.h"
|
||||
#include "SkillComponent.h"
|
||||
#include "ItemSet.h"
|
||||
#include "ItemSetPassiveAbilityID.h"
|
||||
#include "eItemSetPassiveAbilityID.h"
|
||||
|
||||
ItemSetPassiveAbility::ItemSetPassiveAbility(PassiveAbilityTrigger trigger, Entity* parent, ItemSet* itemSet) {
|
||||
m_Trigger = trigger;
|
||||
@@ -46,31 +46,31 @@ void ItemSetPassiveAbility::Activate(Entity* target) {
|
||||
|
||||
EntityManager::Instance()->SerializeEntity(m_Parent);
|
||||
|
||||
const auto id = static_cast<ItemSetPassiveAbilityID>(m_ItemSet->GetID());
|
||||
const auto id = static_cast<eItemSetPassiveAbilityID>(m_ItemSet->GetID());
|
||||
const auto parentID = m_Parent->GetObjectID();
|
||||
const auto equippedCount = m_ItemSet->GetEquippedCount();
|
||||
|
||||
switch (id) {
|
||||
// Assembly
|
||||
case ItemSetPassiveAbilityID::InventorRank1:
|
||||
case ItemSetPassiveAbilityID::SummonerRank1:
|
||||
case ItemSetPassiveAbilityID::EngineerRank1: {
|
||||
case eItemSetPassiveAbilityID::InventorRank1:
|
||||
case eItemSetPassiveAbilityID::SummonerRank1:
|
||||
case eItemSetPassiveAbilityID::EngineerRank1: {
|
||||
if (equippedCount < 4) return;
|
||||
m_Cooldown = 11.0f;
|
||||
skillComponent->CalculateBehavior(394, 4401, parentID);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::InventorRank2:
|
||||
case ItemSetPassiveAbilityID::SummonerRank2:
|
||||
case ItemSetPassiveAbilityID::EngineerRank2: {
|
||||
case eItemSetPassiveAbilityID::InventorRank2:
|
||||
case eItemSetPassiveAbilityID::SummonerRank2:
|
||||
case eItemSetPassiveAbilityID::EngineerRank2: {
|
||||
if (equippedCount < 4) return;
|
||||
m_Cooldown = 11.0f;
|
||||
skillComponent->CalculateBehavior(581, 9433, parentID);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::InventorRank3:
|
||||
case ItemSetPassiveAbilityID::SummonerRank3:
|
||||
case ItemSetPassiveAbilityID::EngineerRank3: {
|
||||
case eItemSetPassiveAbilityID::InventorRank3:
|
||||
case eItemSetPassiveAbilityID::SummonerRank3:
|
||||
case eItemSetPassiveAbilityID::EngineerRank3: {
|
||||
if (equippedCount < 4) return;
|
||||
m_Cooldown = 11.0f;
|
||||
skillComponent->CalculateBehavior(582, 9435, parentID);
|
||||
@@ -78,57 +78,57 @@ void ItemSetPassiveAbility::Activate(Entity* target) {
|
||||
}
|
||||
|
||||
// Sentinel
|
||||
case ItemSetPassiveAbilityID::KnightRank1: {
|
||||
case eItemSetPassiveAbilityID::KnightRank1: {
|
||||
if (equippedCount < 4) return;
|
||||
m_Cooldown = 11.0f;
|
||||
skillComponent->CalculateBehavior(559, 8884, parentID);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::KnightRank2: {
|
||||
case eItemSetPassiveAbilityID::KnightRank2: {
|
||||
if (equippedCount < 4) return;
|
||||
m_Cooldown = 11.0f;
|
||||
skillComponent->CalculateBehavior(560, 8885, parentID);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::KnightRank3: {
|
||||
case eItemSetPassiveAbilityID::KnightRank3: {
|
||||
if (equippedCount < 4) return;
|
||||
m_Cooldown = 11.0f;
|
||||
skillComponent->CalculateBehavior(561, 8890, parentID);
|
||||
break;
|
||||
}
|
||||
|
||||
case ItemSetPassiveAbilityID::SpaceRangerRank1: {
|
||||
case eItemSetPassiveAbilityID::SpaceRangerRank1: {
|
||||
if (equippedCount < 4) return;
|
||||
m_Cooldown = 11.0f;
|
||||
skillComponent->CalculateBehavior(1101, 24612, parentID);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::SpaceRangerRank2: {
|
||||
case eItemSetPassiveAbilityID::SpaceRangerRank2: {
|
||||
if (equippedCount < 4) return;
|
||||
m_Cooldown = 11.0f;
|
||||
skillComponent->CalculateBehavior(1102, 24617, parentID);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::SpaceRangerRank3: {
|
||||
case eItemSetPassiveAbilityID::SpaceRangerRank3: {
|
||||
if (equippedCount < 4) return;
|
||||
m_Cooldown = 11.0f;
|
||||
skillComponent->CalculateBehavior(1103, 24622, parentID);
|
||||
break;
|
||||
}
|
||||
|
||||
case ItemSetPassiveAbilityID::SamuraiRank1: {
|
||||
case eItemSetPassiveAbilityID::SamuraiRank1: {
|
||||
if (equippedCount < 4) return;
|
||||
m_Cooldown = 11.0f;
|
||||
skillComponent->CalculateBehavior(562, 8899, parentID);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::SamuraiRank2: {
|
||||
case eItemSetPassiveAbilityID::SamuraiRank2: {
|
||||
if (equippedCount < 4) return;
|
||||
m_Cooldown = 11.0f;
|
||||
skillComponent->CalculateBehavior(563, 8904, parentID);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::SamuraiRank3: {
|
||||
case eItemSetPassiveAbilityID::SamuraiRank3: {
|
||||
if (equippedCount < 4) return;
|
||||
m_Cooldown = 11.0f;
|
||||
skillComponent->CalculateBehavior(564, 8909, parentID);
|
||||
@@ -143,47 +143,47 @@ void ItemSetPassiveAbility::Activate(Entity* target) {
|
||||
std::vector<ItemSetPassiveAbility> ItemSetPassiveAbility::FindAbilities(uint32_t itemSetID, Entity* parent, ItemSet* itemSet) {
|
||||
std::vector<ItemSetPassiveAbility> abilities;
|
||||
|
||||
switch (static_cast<ItemSetPassiveAbilityID>(itemSetID)) {
|
||||
switch (static_cast<eItemSetPassiveAbilityID>(itemSetID)) {
|
||||
// Assembly
|
||||
case ItemSetPassiveAbilityID::SummonerRank1:
|
||||
case ItemSetPassiveAbilityID::SummonerRank2:
|
||||
case ItemSetPassiveAbilityID::SummonerRank3:
|
||||
case ItemSetPassiveAbilityID::InventorRank1:
|
||||
case ItemSetPassiveAbilityID::InventorRank2:
|
||||
case ItemSetPassiveAbilityID::InventorRank3:
|
||||
case ItemSetPassiveAbilityID::EngineerRank1:
|
||||
case ItemSetPassiveAbilityID::EngineerRank2:
|
||||
case ItemSetPassiveAbilityID::EngineerRank3: {
|
||||
case eItemSetPassiveAbilityID::SummonerRank1:
|
||||
case eItemSetPassiveAbilityID::SummonerRank2:
|
||||
case eItemSetPassiveAbilityID::SummonerRank3:
|
||||
case eItemSetPassiveAbilityID::InventorRank1:
|
||||
case eItemSetPassiveAbilityID::InventorRank2:
|
||||
case eItemSetPassiveAbilityID::InventorRank3:
|
||||
case eItemSetPassiveAbilityID::EngineerRank1:
|
||||
case eItemSetPassiveAbilityID::EngineerRank2:
|
||||
case eItemSetPassiveAbilityID::EngineerRank3: {
|
||||
abilities.emplace_back(PassiveAbilityTrigger::AssemblyImagination, parent, itemSet);
|
||||
|
||||
break;
|
||||
}
|
||||
// Sentinel
|
||||
case ItemSetPassiveAbilityID::KnightRank1:
|
||||
case ItemSetPassiveAbilityID::KnightRank2:
|
||||
case ItemSetPassiveAbilityID::KnightRank3:
|
||||
case ItemSetPassiveAbilityID::SpaceRangerRank1:
|
||||
case ItemSetPassiveAbilityID::SpaceRangerRank2:
|
||||
case ItemSetPassiveAbilityID::SpaceRangerRank3:
|
||||
case ItemSetPassiveAbilityID::SamuraiRank1:
|
||||
case ItemSetPassiveAbilityID::SamuraiRank2:
|
||||
case ItemSetPassiveAbilityID::SamuraiRank3: {
|
||||
case eItemSetPassiveAbilityID::KnightRank1:
|
||||
case eItemSetPassiveAbilityID::KnightRank2:
|
||||
case eItemSetPassiveAbilityID::KnightRank3:
|
||||
case eItemSetPassiveAbilityID::SpaceRangerRank1:
|
||||
case eItemSetPassiveAbilityID::SpaceRangerRank2:
|
||||
case eItemSetPassiveAbilityID::SpaceRangerRank3:
|
||||
case eItemSetPassiveAbilityID::SamuraiRank1:
|
||||
case eItemSetPassiveAbilityID::SamuraiRank2:
|
||||
case eItemSetPassiveAbilityID::SamuraiRank3: {
|
||||
abilities.emplace_back(PassiveAbilityTrigger::SentinelArmor, parent, itemSet);
|
||||
abilities.emplace_back(PassiveAbilityTrigger::EnemySmashed, parent, itemSet);
|
||||
|
||||
break;
|
||||
}
|
||||
// Paradox
|
||||
case ItemSetPassiveAbilityID::BatLord:
|
||||
case ItemSetPassiveAbilityID::SpaceMarauderRank1:
|
||||
case ItemSetPassiveAbilityID::SpaceMarauderRank2:
|
||||
case ItemSetPassiveAbilityID::SpaceMarauderRank3:
|
||||
case ItemSetPassiveAbilityID::SorcererRank1:
|
||||
case ItemSetPassiveAbilityID::SorcererRank2:
|
||||
case ItemSetPassiveAbilityID::SorcererRank3:
|
||||
case ItemSetPassiveAbilityID::ShinobiRank1:
|
||||
case ItemSetPassiveAbilityID::ShinobiRank2:
|
||||
case ItemSetPassiveAbilityID::ShinobiRank3: {
|
||||
case eItemSetPassiveAbilityID::BatLord:
|
||||
case eItemSetPassiveAbilityID::SpaceMarauderRank1:
|
||||
case eItemSetPassiveAbilityID::SpaceMarauderRank2:
|
||||
case eItemSetPassiveAbilityID::SpaceMarauderRank3:
|
||||
case eItemSetPassiveAbilityID::SorcererRank1:
|
||||
case eItemSetPassiveAbilityID::SorcererRank2:
|
||||
case eItemSetPassiveAbilityID::SorcererRank3:
|
||||
case eItemSetPassiveAbilityID::ShinobiRank1:
|
||||
case eItemSetPassiveAbilityID::ShinobiRank2:
|
||||
case eItemSetPassiveAbilityID::ShinobiRank3: {
|
||||
abilities.emplace_back(PassiveAbilityTrigger::EnemySmashed, parent, itemSet);
|
||||
|
||||
break;
|
||||
@@ -205,110 +205,110 @@ void ItemSetPassiveAbility::OnEnemySmshed(Entity* target) {
|
||||
|
||||
EntityManager::Instance()->SerializeEntity(m_Parent);
|
||||
|
||||
const auto id = static_cast<ItemSetPassiveAbilityID>(m_ItemSet->GetID());
|
||||
const auto id = static_cast<eItemSetPassiveAbilityID>(m_ItemSet->GetID());
|
||||
const auto parentID = m_Parent->GetObjectID();
|
||||
const auto equippedCount = m_ItemSet->GetEquippedCount();
|
||||
|
||||
switch (id) {
|
||||
// Bat Lord
|
||||
case ItemSetPassiveAbilityID::BatLord: {
|
||||
case eItemSetPassiveAbilityID::BatLord: {
|
||||
if (equippedCount < 5) return;
|
||||
destroyableComponent->Heal(3);
|
||||
break;
|
||||
}
|
||||
// Sentinel
|
||||
case ItemSetPassiveAbilityID::KnightRank1: {
|
||||
case eItemSetPassiveAbilityID::KnightRank1: {
|
||||
if (equippedCount < 5) return;
|
||||
destroyableComponent->Repair(1);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::KnightRank2: {
|
||||
case eItemSetPassiveAbilityID::KnightRank2: {
|
||||
if (equippedCount < 5) return;
|
||||
destroyableComponent->Repair(1);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::KnightRank3: {
|
||||
case eItemSetPassiveAbilityID::KnightRank3: {
|
||||
if (equippedCount < 5) return;
|
||||
destroyableComponent->Repair(1);
|
||||
break;
|
||||
}
|
||||
|
||||
case ItemSetPassiveAbilityID::SpaceRangerRank1: {
|
||||
case eItemSetPassiveAbilityID::SpaceRangerRank1: {
|
||||
if (equippedCount < 5) return;
|
||||
destroyableComponent->Repair(1);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::SpaceRangerRank2: {
|
||||
case eItemSetPassiveAbilityID::SpaceRangerRank2: {
|
||||
if (equippedCount < 5) return;
|
||||
destroyableComponent->Repair(1);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::SpaceRangerRank3: {
|
||||
case eItemSetPassiveAbilityID::SpaceRangerRank3: {
|
||||
if (equippedCount < 5) return;
|
||||
destroyableComponent->Repair(1);
|
||||
break;
|
||||
}
|
||||
|
||||
case ItemSetPassiveAbilityID::SamuraiRank1: {
|
||||
case eItemSetPassiveAbilityID::SamuraiRank1: {
|
||||
if (equippedCount < 5) return;
|
||||
destroyableComponent->Repair(1);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::SamuraiRank2: {
|
||||
case eItemSetPassiveAbilityID::SamuraiRank2: {
|
||||
if (equippedCount < 5) return;
|
||||
destroyableComponent->Repair(1);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::SamuraiRank3: {
|
||||
case eItemSetPassiveAbilityID::SamuraiRank3: {
|
||||
if (equippedCount < 5) return;
|
||||
destroyableComponent->Repair(1);
|
||||
break;
|
||||
}
|
||||
|
||||
// Paradox
|
||||
case ItemSetPassiveAbilityID::SpaceMarauderRank1: {
|
||||
case eItemSetPassiveAbilityID::SpaceMarauderRank1: {
|
||||
if (equippedCount < 4) return;
|
||||
destroyableComponent->Imagine(1);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::SpaceMarauderRank2: {
|
||||
case eItemSetPassiveAbilityID::SpaceMarauderRank2: {
|
||||
if (equippedCount < 4) return;
|
||||
destroyableComponent->Imagine(2);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::SpaceMarauderRank3: {
|
||||
case eItemSetPassiveAbilityID::SpaceMarauderRank3: {
|
||||
if (equippedCount < 4) return;
|
||||
destroyableComponent->Imagine(3);
|
||||
break;
|
||||
}
|
||||
|
||||
case ItemSetPassiveAbilityID::ShinobiRank1: {
|
||||
case eItemSetPassiveAbilityID::ShinobiRank1: {
|
||||
if (equippedCount < 4) return;
|
||||
destroyableComponent->Imagine(1);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::ShinobiRank2: {
|
||||
case eItemSetPassiveAbilityID::ShinobiRank2: {
|
||||
if (equippedCount < 4) return;
|
||||
destroyableComponent->Imagine(2);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::ShinobiRank3: {
|
||||
if (equippedCount < 4 || !target) return;
|
||||
skillComponent->CalculateBehavior(695, 11399, target->GetObjectID());
|
||||
case eItemSetPassiveAbilityID::ShinobiRank3: {
|
||||
if (equippedCount < 4) return;
|
||||
destroyableComponent->Imagine(3);
|
||||
break;
|
||||
}
|
||||
|
||||
case ItemSetPassiveAbilityID::SorcererRank1: {
|
||||
case eItemSetPassiveAbilityID::SorcererRank1: {
|
||||
if (equippedCount < 4) return;
|
||||
destroyableComponent->Imagine(1);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::SorcererRank2: {
|
||||
case eItemSetPassiveAbilityID::SorcererRank2: {
|
||||
if (equippedCount < 4) return;
|
||||
destroyableComponent->Imagine(2);
|
||||
break;
|
||||
}
|
||||
case ItemSetPassiveAbilityID::SorcererRank3: {
|
||||
case eItemSetPassiveAbilityID::SorcererRank3: {
|
||||
if (equippedCount < 4) return;
|
||||
destroyableComponent->Imagine(3);
|
||||
break;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include "GameMessages.h"
|
||||
#include "Mail.h"
|
||||
#include "MissionComponent.h"
|
||||
#include "RacingTaskParam.h"
|
||||
#include "eRacingTaskParam.h"
|
||||
#include "dLogger.h"
|
||||
#include "dServer.h"
|
||||
#include "dZoneManager.h"
|
||||
@@ -20,6 +20,10 @@
|
||||
#include "User.h"
|
||||
#include "Database.h"
|
||||
#include "WorldConfig.h"
|
||||
#include "eMissionState.h"
|
||||
#include "eMissionTaskType.h"
|
||||
#include "eMissionLockState.h"
|
||||
|
||||
|
||||
Mission::Mission(MissionComponent* missionComponent, const uint32_t missionId) {
|
||||
m_MissionComponent = missionComponent;
|
||||
@@ -32,7 +36,7 @@ Mission::Mission(MissionComponent* missionComponent, const uint32_t missionId) {
|
||||
|
||||
m_Reward = 0;
|
||||
|
||||
m_State = MissionState::MISSION_STATE_UNKNOWN;
|
||||
m_State = eMissionState::UNKNOWN;
|
||||
|
||||
auto* missionsTable = CDClientManager::Instance()->GetTable<CDMissionsTable>("Missions");
|
||||
|
||||
@@ -60,7 +64,7 @@ Mission::Mission(MissionComponent* missionComponent, const uint32_t missionId) {
|
||||
void Mission::LoadFromXml(tinyxml2::XMLElement* element) {
|
||||
// Start custom XML
|
||||
if (element->Attribute("state") != nullptr) {
|
||||
m_State = static_cast<MissionState>(std::stoul(element->Attribute("state")));
|
||||
m_State = static_cast<eMissionState>(std::stoul(element->Attribute("state")));
|
||||
}
|
||||
// End custom XML
|
||||
|
||||
@@ -85,8 +89,8 @@ void Mission::LoadFromXml(tinyxml2::XMLElement* element) {
|
||||
|
||||
const auto type = m_Tasks[index]->GetType();
|
||||
|
||||
if (type == MissionTaskType::MISSION_TASK_TYPE_ENVIRONMENT ||
|
||||
type == MissionTaskType::MISSION_TASK_TYPE_VISIT_PROPERTY) {
|
||||
if (type == eMissionTaskType::COLLECTION ||
|
||||
type == eMissionTaskType::VISIT_PROPERTY) {
|
||||
std::vector<uint32_t> uniques;
|
||||
|
||||
const auto value = std::stoul(task->Attribute("v"));
|
||||
@@ -100,7 +104,7 @@ void Mission::LoadFromXml(tinyxml2::XMLElement* element) {
|
||||
|
||||
uniques.push_back(unique);
|
||||
|
||||
if (m_MissionComponent != nullptr && type == MissionTaskType::MISSION_TASK_TYPE_ENVIRONMENT) {
|
||||
if (m_MissionComponent != nullptr && type == eMissionTaskType::COLLECTION) {
|
||||
m_MissionComponent->AddCollectible(unique);
|
||||
}
|
||||
|
||||
@@ -144,8 +148,8 @@ void Mission::UpdateXml(tinyxml2::XMLElement* element) {
|
||||
}
|
||||
|
||||
for (auto* task : m_Tasks) {
|
||||
if (task->GetType() == MissionTaskType::MISSION_TASK_TYPE_ENVIRONMENT ||
|
||||
task->GetType() == MissionTaskType::MISSION_TASK_TYPE_VISIT_PROPERTY) {
|
||||
if (task->GetType() == eMissionTaskType::COLLECTION ||
|
||||
task->GetType() == eMissionTaskType::VISIT_PROPERTY) {
|
||||
|
||||
auto* child = element->GetDocument()->NewElement("sv");
|
||||
|
||||
@@ -229,7 +233,7 @@ std::vector<MissionTask*> Mission::GetTasks() const {
|
||||
return m_Tasks;
|
||||
}
|
||||
|
||||
MissionState Mission::GetMissionState() const {
|
||||
eMissionState Mission::GetMissionState() const {
|
||||
return m_State;
|
||||
}
|
||||
|
||||
@@ -246,47 +250,47 @@ bool Mission::IsRepeatable() const {
|
||||
}
|
||||
|
||||
bool Mission::IsComplete() const {
|
||||
return m_State == MissionState::MISSION_STATE_COMPLETE;
|
||||
return m_State == eMissionState::COMPLETE;
|
||||
}
|
||||
|
||||
bool Mission::IsActive() const {
|
||||
return m_State == MissionState::MISSION_STATE_ACTIVE || m_State == MissionState::MISSION_STATE_COMPLETE_AVAILABLE;
|
||||
return m_State == eMissionState::ACTIVE || m_State == eMissionState::COMPLETE_AVAILABLE;
|
||||
}
|
||||
|
||||
void Mission::MakeActive() {
|
||||
SetMissionState(m_Completions == 0 ? MissionState::MISSION_STATE_ACTIVE : MissionState::MISSION_STATE_COMPLETE_ACTIVE);
|
||||
SetMissionState(m_Completions == 0 ? eMissionState::ACTIVE : eMissionState::COMPLETE_ACTIVE);
|
||||
}
|
||||
|
||||
bool Mission::IsReadyToComplete() const {
|
||||
return m_State == MissionState::MISSION_STATE_READY_TO_COMPLETE || m_State == MissionState::MISSION_STATE_COMPLETE_READY_TO_COMPLETE;
|
||||
return m_State == eMissionState::READY_TO_COMPLETE || m_State == eMissionState::COMPLETE_READY_TO_COMPLETE;
|
||||
}
|
||||
|
||||
void Mission::MakeReadyToComplete() {
|
||||
SetMissionState(m_Completions == 0 ? MissionState::MISSION_STATE_READY_TO_COMPLETE : MissionState::MISSION_STATE_COMPLETE_READY_TO_COMPLETE);
|
||||
SetMissionState(m_Completions == 0 ? eMissionState::READY_TO_COMPLETE : eMissionState::COMPLETE_READY_TO_COMPLETE);
|
||||
}
|
||||
|
||||
bool Mission::IsAvalible() const {
|
||||
return m_State == MissionState::MISSION_STATE_AVAILABLE || m_State == MissionState::MISSION_STATE_COMPLETE_AVAILABLE;
|
||||
return m_State == eMissionState::AVAILABLE || m_State == eMissionState::COMPLETE_AVAILABLE;
|
||||
}
|
||||
|
||||
bool Mission::IsFetchMission() const {
|
||||
return m_Tasks.size() == 1 && m_Tasks[0]->GetType() == MissionTaskType::MISSION_TASK_TYPE_MISSION_INTERACTION;
|
||||
return m_Tasks.size() == 1 && m_Tasks[0]->GetType() == eMissionTaskType::TALK_TO_NPC;
|
||||
}
|
||||
|
||||
void Mission::MakeAvalible() {
|
||||
SetMissionState(m_Completions == 0 ? MissionState::MISSION_STATE_AVAILABLE : MissionState::MISSION_STATE_COMPLETE_AVAILABLE);
|
||||
SetMissionState(m_Completions == 0 ? eMissionState::AVAILABLE : eMissionState::COMPLETE_AVAILABLE);
|
||||
}
|
||||
|
||||
void Mission::Accept() {
|
||||
SetMissionTypeState(MissionLockState::MISSION_LOCK_NEW, info->defined_type, info->defined_subtype);
|
||||
SetMissionTypeState(eMissionLockState::NEW, info->defined_type, info->defined_subtype);
|
||||
|
||||
SetMissionState(m_Completions > 0 ? MissionState::MISSION_STATE_COMPLETE_ACTIVE : MissionState::MISSION_STATE_ACTIVE);
|
||||
SetMissionState(m_Completions > 0 ? eMissionState::COMPLETE_ACTIVE : eMissionState::ACTIVE);
|
||||
|
||||
Catchup();
|
||||
}
|
||||
|
||||
void Mission::Complete(const bool yieldRewards) {
|
||||
if (m_State != MissionState::MISSION_STATE_ACTIVE && m_State != MissionState::MISSION_STATE_COMPLETE_ACTIVE) {
|
||||
if (m_State != eMissionState::ACTIVE && m_State != eMissionState::COMPLETE_ACTIVE) {
|
||||
// If we are accepting a mission here there is no point to giving it a unique ID since we just complete it immediately.
|
||||
Accept();
|
||||
}
|
||||
@@ -295,13 +299,13 @@ void Mission::Complete(const bool yieldRewards) {
|
||||
task->Complete();
|
||||
}
|
||||
|
||||
SetMissionState(MissionState::MISSION_STATE_REWARDING, true);
|
||||
SetMissionState(eMissionState::REWARDING, true);
|
||||
|
||||
if (yieldRewards) {
|
||||
YieldRewards();
|
||||
}
|
||||
|
||||
SetMissionState(MissionState::MISSION_STATE_COMPLETE);
|
||||
SetMissionState(eMissionState::COMPLETE);
|
||||
|
||||
m_Completions++;
|
||||
|
||||
@@ -320,11 +324,11 @@ void Mission::Complete(const bool yieldRewards) {
|
||||
|
||||
auto* missionComponent = entity->GetComponent<MissionComponent>();
|
||||
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_MISSION_COMPLETE, info->id);
|
||||
missionComponent->Progress(eMissionTaskType::META, info->id);
|
||||
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_RACING, info->id, (LWOOBJID)RacingTaskParam::RACING_TASK_PARAM_COMPLETE_ANY_RACING_TASK);
|
||||
missionComponent->Progress(eMissionTaskType::RACING, info->id, (LWOOBJID)eRacingTaskParam::COMPLETE_ANY_RACING_TASK);
|
||||
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_RACING, info->id, (LWOOBJID)RacingTaskParam::RACING_TASK_PARAM_COMPLETE_TRACK_TASKS);
|
||||
missionComponent->Progress(eMissionTaskType::RACING, info->id, (LWOOBJID)eRacingTaskParam::COMPLETE_TRACK_TASKS);
|
||||
|
||||
auto* missionEmailTable = CDClientManager::Instance()->GetTable<CDMissionEmailTable>("MissionEmail");
|
||||
|
||||
@@ -371,7 +375,7 @@ void Mission::Catchup() {
|
||||
for (auto* task : m_Tasks) {
|
||||
const auto type = task->GetType();
|
||||
|
||||
if (type == MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION) {
|
||||
if (type == eMissionTaskType::GATHER) {
|
||||
for (auto target : task->GetAllTargets()) {
|
||||
const auto count = inventory->GetLotCountNonTransfer(target);
|
||||
|
||||
@@ -381,7 +385,7 @@ void Mission::Catchup() {
|
||||
}
|
||||
}
|
||||
|
||||
if (type == MissionTaskType::MISSION_TASK_TYPE_PLAYER_FLAG) {
|
||||
if (type == eMissionTaskType::PLAYER_FLAG) {
|
||||
for (auto target : task->GetAllTargets()) {
|
||||
const auto flag = GetUser()->GetLastUsedChar()->GetPlayerFlag(target);
|
||||
|
||||
@@ -416,7 +420,7 @@ void Mission::YieldRewards() {
|
||||
|
||||
// Remove mission items
|
||||
for (auto* task : m_Tasks) {
|
||||
if (task->GetType() != MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION) {
|
||||
if (task->GetType() != eMissionTaskType::GATHER) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -429,7 +433,7 @@ void Mission::YieldRewards() {
|
||||
inventoryComponent->RemoveItem(target, task->GetClientInfo().targetValue, eInventoryType::ITEMS);
|
||||
inventoryComponent->RemoveItem(target, task->GetClientInfo().targetValue, eInventoryType::QUEST);
|
||||
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION, target, LWOOBJID_EMPTY, "", -task->GetClientInfo().targetValue);
|
||||
missionComponent->Progress(eMissionTaskType::GATHER, target, LWOOBJID_EMPTY, "", -task->GetClientInfo().targetValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -525,7 +529,7 @@ void Mission::YieldRewards() {
|
||||
}
|
||||
|
||||
if (info->reward_reputation > 0) {
|
||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_EARN_REPUTATION, 0, 0L, "", info->reward_reputation);
|
||||
missionComponent->Progress(eMissionTaskType::EARN_REPUTATION, 0, 0L, "", info->reward_reputation);
|
||||
auto character = entity->GetComponent<CharacterComponent>();
|
||||
if (character) {
|
||||
character->SetReputation(character->GetReputation() + info->reward_reputation);
|
||||
@@ -560,7 +564,7 @@ void Mission::YieldRewards() {
|
||||
}
|
||||
}
|
||||
|
||||
void Mission::Progress(MissionTaskType type, int32_t value, LWOOBJID associate, const std::string& targets, int32_t count) {
|
||||
void Mission::Progress(eMissionTaskType type, int32_t value, LWOOBJID associate, const std::string& targets, int32_t count) {
|
||||
const auto isRemoval = count < 0;
|
||||
|
||||
if (isRemoval && (IsComplete() || IsAchievement())) {
|
||||
@@ -584,7 +588,7 @@ void Mission::Progress(MissionTaskType type, int32_t value, LWOOBJID associate,
|
||||
}
|
||||
}
|
||||
|
||||
void Mission::SetMissionState(const MissionState state, const bool sendingRewards) {
|
||||
void Mission::SetMissionState(const eMissionState state, const bool sendingRewards) {
|
||||
this->m_State = state;
|
||||
|
||||
auto* entity = GetAssociate();
|
||||
@@ -596,7 +600,7 @@ void Mission::SetMissionState(const MissionState state, const bool sendingReward
|
||||
GameMessages::SendNotifyMission(entity, entity->GetParentUser()->GetSystemAddress(), info->id, static_cast<int>(state), sendingRewards);
|
||||
}
|
||||
|
||||
void Mission::SetMissionTypeState(MissionLockState state, const std::string& type, const std::string& subType) {
|
||||
void Mission::SetMissionTypeState(eMissionLockState state, const std::string& type, const std::string& subType) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
||||
@@ -10,13 +10,12 @@
|
||||
#include "MissionTask.h"
|
||||
#include "dCommonVars.h"
|
||||
#include "Entity.h"
|
||||
#include "MissionState.h"
|
||||
#include "MissionLockState.h"
|
||||
|
||||
namespace tinyxml2 {
|
||||
class XMLElement;
|
||||
};
|
||||
|
||||
enum class eMissionState : int;
|
||||
enum class eMissionLockState : int;
|
||||
class MissionComponent;
|
||||
|
||||
/**
|
||||
@@ -53,7 +52,7 @@ public:
|
||||
* Returns the current state of this mission
|
||||
* @return the current state of this mission
|
||||
*/
|
||||
MissionState GetMissionState() const;
|
||||
eMissionState GetMissionState() const;
|
||||
|
||||
/**
|
||||
* Returns the database information that represents to this mission.
|
||||
@@ -102,12 +101,12 @@ public:
|
||||
* @param state the mission state to set
|
||||
* @param sendingRewards a flag indicating to the client that rewards wil lfollow
|
||||
*/
|
||||
void SetMissionState(MissionState state, bool sendingRewards = false);
|
||||
void SetMissionState(eMissionState state, bool sendingRewards = false);
|
||||
|
||||
/**
|
||||
* Currently unimplemented
|
||||
*/
|
||||
void SetMissionTypeState(MissionLockState state, const std::string& type, const std::string& subType);
|
||||
void SetMissionTypeState(eMissionLockState state, const std::string& type, const std::string& subType);
|
||||
|
||||
/**
|
||||
* Returns whether this mission is an achievement
|
||||
@@ -208,7 +207,7 @@ public:
|
||||
* @param targets optional multiple targets that need to be met for progression
|
||||
* @param count optional count to progress with
|
||||
*/
|
||||
void Progress(MissionTaskType type, int32_t value, LWOOBJID associate = 0, const std::string& targets = "", int32_t count = 1);
|
||||
void Progress(eMissionTaskType type, int32_t value, LWOOBJID associate = 0, const std::string& targets = "", int32_t count = 1);
|
||||
|
||||
/**
|
||||
* Returns if the mission ID that's given belongs to an existing mission
|
||||
@@ -251,7 +250,7 @@ private:
|
||||
/**
|
||||
* The current state this mission is in
|
||||
*/
|
||||
MissionState m_State;
|
||||
eMissionState m_State;
|
||||
|
||||
/**
|
||||
* The number of times the entity has completed this mission
|
||||
|
||||
@@ -106,8 +106,8 @@ bool PrerequisiteExpression::Execute(const std::unordered_map<uint32_t, Mission*
|
||||
if (this->sub != 0) {
|
||||
// Special case for one Wisp Lee repeatable mission.
|
||||
a = mission->GetClientInfo().id == 1883 ?
|
||||
mission->GetMissionState() == static_cast<MissionState>(this->sub) :
|
||||
mission->GetMissionState() >= static_cast<MissionState>(this->sub);
|
||||
mission->GetMissionState() == static_cast<eMissionState>(this->sub) :
|
||||
mission->GetMissionState() >= static_cast<eMissionState>(this->sub);
|
||||
} else if (mission->IsComplete()) {
|
||||
a = true;
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "dZoneManager.h"
|
||||
#include "InventoryComponent.h"
|
||||
#include "MissionComponent.h"
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
MissionTask::MissionTask(Mission* mission, CDMissionTasks* info, uint32_t mask) {
|
||||
this->info = info;
|
||||
@@ -42,8 +43,8 @@ MissionTask::MissionTask(Mission* mission, CDMissionTasks* info, uint32_t mask)
|
||||
}
|
||||
|
||||
|
||||
MissionTaskType MissionTask::GetType() const {
|
||||
return static_cast<MissionTaskType>(info->taskType);
|
||||
eMissionTaskType MissionTask::GetType() const {
|
||||
return static_cast<eMissionTaskType>(info->taskType);
|
||||
}
|
||||
|
||||
|
||||
@@ -187,7 +188,7 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
||||
const auto type = GetType();
|
||||
|
||||
if (count < 0) {
|
||||
if (mission->IsMission() && type == MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION && InAllTargets(value)) {
|
||||
if (mission->IsMission() && type == eMissionTaskType::GATHER && InAllTargets(value)) {
|
||||
if (parameters.size() > 0 && (parameters[0] & 1) != 0) {
|
||||
return;
|
||||
}
|
||||
@@ -218,10 +219,10 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
||||
std::vector<LDFBaseData*> settings;
|
||||
|
||||
switch (type) {
|
||||
case MissionTaskType::MISSION_TASK_TYPE_UNKNOWN:
|
||||
case eMissionTaskType::UNKNOWN:
|
||||
break;
|
||||
|
||||
case MissionTaskType::MISSION_TASK_TYPE_ACTIVITY:
|
||||
case eMissionTaskType::ACTIVITY:
|
||||
{
|
||||
if (InAllTargets(value)) {
|
||||
AddProgress(count);
|
||||
@@ -256,8 +257,8 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
||||
break;
|
||||
}
|
||||
|
||||
case MissionTaskType::MISSION_TASK_TYPE_FOOD:
|
||||
case MissionTaskType::MISSION_TASK_TYPE_MISSION_INTERACTION:
|
||||
case eMissionTaskType::USE_ITEM:
|
||||
case eMissionTaskType::TALK_TO_NPC:
|
||||
{
|
||||
if (GetTarget() != value) break;
|
||||
|
||||
@@ -266,7 +267,7 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
||||
break;
|
||||
}
|
||||
|
||||
case MissionTaskType::MISSION_TASK_TYPE_EMOTE:
|
||||
case eMissionTaskType::EMOTE:
|
||||
{
|
||||
if (!InParameters(value)) break;
|
||||
|
||||
@@ -287,7 +288,7 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
||||
break;
|
||||
}
|
||||
|
||||
case MissionTaskType::MISSION_TASK_TYPE_SKILL:
|
||||
case eMissionTaskType::USE_SKILL:
|
||||
{
|
||||
// This is a complicated check because for some missions we need to check for the associate being in the parameters instead of the value being in the parameters.
|
||||
if (associate == LWOOBJID_EMPTY && GetAllTargets().size() == 1 && GetAllTargets()[0] == -1) {
|
||||
@@ -298,7 +299,7 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
||||
break;
|
||||
}
|
||||
|
||||
case MissionTaskType::MISSION_TASK_TYPE_MINIGAME:
|
||||
case eMissionTaskType::PERFORM_ACTIVITY:
|
||||
{
|
||||
auto* minigameManager = EntityManager::Instance()->GetEntity(associate);
|
||||
if (minigameManager == nullptr)
|
||||
@@ -327,7 +328,7 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
||||
break;
|
||||
}
|
||||
|
||||
case MissionTaskType::MISSION_TASK_TYPE_VISIT_PROPERTY:
|
||||
case eMissionTaskType::VISIT_PROPERTY:
|
||||
{
|
||||
if (!InAllTargets(value)) break;
|
||||
|
||||
@@ -340,7 +341,7 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
||||
break;
|
||||
}
|
||||
|
||||
case MissionTaskType::MISSION_TASK_TYPE_ENVIRONMENT:
|
||||
case eMissionTaskType::COLLECTION:
|
||||
{
|
||||
if (!InAllTargets(value)) break;
|
||||
|
||||
@@ -375,7 +376,7 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
||||
break;
|
||||
}
|
||||
|
||||
case MissionTaskType::MISSION_TASK_TYPE_LOCATION:
|
||||
case eMissionTaskType::EXPLORE:
|
||||
{
|
||||
if (info->targetGroup != targets) break;
|
||||
|
||||
@@ -384,9 +385,9 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
||||
break;
|
||||
}
|
||||
|
||||
case MissionTaskType::MISSION_TASK_TYPE_RACING:
|
||||
case eMissionTaskType::RACING:
|
||||
{
|
||||
// The meaning of associate can be found in RacingTaskParam.h
|
||||
// The meaning of associate can be found in eRacingTaskParam.h
|
||||
if (parameters.empty()) break;
|
||||
|
||||
if (!InAllTargets(dZoneManager::Instance()->GetZone()->GetWorldID()) && !(parameters[0] == 4 || parameters[0] == 5) && !InAllTargets(value)) break;
|
||||
@@ -426,15 +427,15 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
||||
break;
|
||||
}
|
||||
|
||||
case MissionTaskType::MISSION_TASK_TYPE_PET_TAMING:
|
||||
case MissionTaskType::MISSION_TASK_TYPE_SCRIPT:
|
||||
case MissionTaskType::MISSION_TASK_TYPE_NON_MISSION_INTERACTION:
|
||||
case MissionTaskType::MISSION_TASK_TYPE_MISSION_COMPLETE:
|
||||
case MissionTaskType::MISSION_TASK_TYPE_POWERUP:
|
||||
case MissionTaskType::MISSION_TASK_TYPE_SMASH:
|
||||
case MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION:
|
||||
case MissionTaskType::MISSION_TASK_TYPE_PLAYER_FLAG:
|
||||
case MissionTaskType::MISSION_TASK_TYPE_EARN_REPUTATION:
|
||||
case eMissionTaskType::PET_TAMING:
|
||||
case eMissionTaskType::SCRIPT:
|
||||
case eMissionTaskType::INTERACT:
|
||||
case eMissionTaskType::META:
|
||||
case eMissionTaskType::POWERUP:
|
||||
case eMissionTaskType::SMASH:
|
||||
case eMissionTaskType::GATHER:
|
||||
case eMissionTaskType::PLAYER_FLAG:
|
||||
case eMissionTaskType::EARN_REPUTATION:
|
||||
{
|
||||
if (!InAllTargets(value)) break;
|
||||
|
||||
@@ -442,7 +443,7 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
||||
|
||||
break;
|
||||
}
|
||||
case MissionTaskType::MISSION_TASK_TYPE_PLACE_MODEL:
|
||||
case eMissionTaskType::PLACE_MODEL:
|
||||
{
|
||||
AddProgress(count);
|
||||
break;
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
#define MISSIONTASK_H
|
||||
|
||||
#include "CDMissionTasksTable.h"
|
||||
#include "MissionTaskType.h"
|
||||
#include "dCommonVars.h"
|
||||
|
||||
enum class eMissionTaskType : int;
|
||||
class Mission;
|
||||
|
||||
/**
|
||||
@@ -57,7 +57,7 @@ public:
|
||||
* Returns the type of this task
|
||||
* @return the type of this task
|
||||
*/
|
||||
MissionTaskType GetType() const;
|
||||
eMissionTaskType GetType() const;
|
||||
|
||||
/**
|
||||
* Returns the value that should be progressed to, to complete the mission (the target value)
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
#include "GeneralUtils.h"
|
||||
#include "InventoryComponent.h"
|
||||
#include "MissionComponent.h"
|
||||
#include "eMissionState.h"
|
||||
|
||||
|
||||
LootGenerator::LootGenerator() {
|
||||
CDLootTableTable* lootTableTable = CDClientManager::Instance()->GetTable<CDLootTableTable>("LootTable");
|
||||
@@ -186,13 +188,13 @@ std::unordered_map<LOT, int32_t> LootGenerator::RollLootMatrix(Entity* player, u
|
||||
|
||||
// convert faction token proxy
|
||||
if (drop.itemID == 13763) {
|
||||
if (missionComponent->GetMissionState(545) == MissionState::MISSION_STATE_COMPLETE)
|
||||
if (missionComponent->GetMissionState(545) == eMissionState::COMPLETE)
|
||||
drop.itemID = 8318; // "Assembly Token"
|
||||
else if (missionComponent->GetMissionState(556) == MissionState::MISSION_STATE_COMPLETE)
|
||||
else if (missionComponent->GetMissionState(556) == eMissionState::COMPLETE)
|
||||
drop.itemID = 8321; // "Venture League Token"
|
||||
else if (missionComponent->GetMissionState(567) == MissionState::MISSION_STATE_COMPLETE)
|
||||
else if (missionComponent->GetMissionState(567) == eMissionState::COMPLETE)
|
||||
drop.itemID = 8319; // "Sentinels Token"
|
||||
else if (missionComponent->GetMissionState(578) == MissionState::MISSION_STATE_COMPLETE)
|
||||
else if (missionComponent->GetMissionState(578) == eMissionState::COMPLETE)
|
||||
drop.itemID = 8320; // "Paradox Token"
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "Character.h"
|
||||
#include "dZoneManager.h"
|
||||
#include "WorldConfig.h"
|
||||
#include "eMissionTaskType.h"
|
||||
|
||||
void Mail::SendMail(const Entity* recipient, const std::string& subject, const std::string& body, const LOT attachment,
|
||||
const uint16_t attachmentCount) {
|
||||
@@ -165,7 +166,7 @@ void Mail::HandleSendMail(RakNet::BitStream* packet, const SystemAddress& sysAdd
|
||||
|
||||
if (!character) return;
|
||||
|
||||
if (character->HasPermission(PermissionMap::RestrictedMailAccess)) {
|
||||
if (character->HasPermission(ePermissionMap::RestrictedMailAccess)) {
|
||||
// Send a message to the player
|
||||
ChatPackets::SendSystemMessage(
|
||||
sysAddr,
|
||||
@@ -268,7 +269,7 @@ void Mail::HandleSendMail(RakNet::BitStream* packet, const SystemAddress& sysAdd
|
||||
auto* missionCompoent = entity->GetComponent<MissionComponent>();
|
||||
|
||||
if (missionCompoent != nullptr) {
|
||||
missionCompoent->Progress(MissionTaskType::MISSION_TASK_TYPE_ITEM_COLLECTION, itemLOT, LWOOBJID_EMPTY, "", -attachmentCount);
|
||||
missionCompoent->Progress(eMissionTaskType::GATHER, itemLOT, LWOOBJID_EMPTY, "", -attachmentCount);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include "LevelProgressionComponent.h"
|
||||
#include "DestroyableComponent.h"
|
||||
#include "GameMessages.h"
|
||||
|
||||
#include "eMissionState.h"
|
||||
|
||||
std::map<uint32_t, Precondition*> Preconditions::cache = {};
|
||||
|
||||
@@ -142,19 +142,19 @@ bool Precondition::CheckValue(Entity* player, const uint32_t value, bool evaluat
|
||||
case PreconditionType::HasAchievement:
|
||||
mission = missionComponent->GetMission(value);
|
||||
|
||||
return mission == nullptr || mission->GetMissionState() >= MissionState::MISSION_STATE_COMPLETE;
|
||||
return mission == nullptr || mission->GetMissionState() >= eMissionState::COMPLETE;
|
||||
case PreconditionType::MissionAvailable:
|
||||
mission = missionComponent->GetMission(value);
|
||||
|
||||
return mission == nullptr || mission->GetMissionState() >= MissionState::MISSION_STATE_AVAILABLE;
|
||||
return mission == nullptr || mission->GetMissionState() >= eMissionState::AVAILABLE;
|
||||
case PreconditionType::OnMission:
|
||||
mission = missionComponent->GetMission(value);
|
||||
|
||||
return mission == nullptr || mission->GetMissionState() >= MissionState::MISSION_STATE_ACTIVE;
|
||||
return mission == nullptr || mission->GetMissionState() >= eMissionState::ACTIVE;
|
||||
case PreconditionType::MissionComplete:
|
||||
mission = missionComponent->GetMission(value);
|
||||
|
||||
return mission == nullptr ? false : mission->GetMissionState() >= MissionState::MISSION_STATE_COMPLETE;
|
||||
return mission == nullptr ? false : mission->GetMissionState() >= eMissionState::COMPLETE;
|
||||
case PreconditionType::PetDeployed:
|
||||
return false; // TODO
|
||||
case PreconditionType::HasFlag:
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
#include "AMFFormat.h"
|
||||
#include "MovingPlatformComponent.h"
|
||||
#include "dMessageIdentifiers.h"
|
||||
#include "eMissionState.h"
|
||||
|
||||
void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entity* entity, const SystemAddress& sysAddr) {
|
||||
std::string chatCommand;
|
||||
@@ -685,7 +686,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
||||
return;
|
||||
}
|
||||
|
||||
mission->SetMissionState(MissionState::MISSION_STATE_ACTIVE);
|
||||
mission->SetMissionState(eMissionState::ACTIVE);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user