mirror of
https://github.com/EQEmu/Server.git
synced 2026-04-11 13:02:25 +00:00
Filled out a lot of the version stuff for a new client version (oh my lawd this could be easier!)
This commit is contained in:
parent
0a9a941b6b
commit
dbb0288a13
@ -56,6 +56,8 @@ const char* EQ::versions::ClientVersionName(ClientVersion client_version)
|
|||||||
return "RoF";
|
return "RoF";
|
||||||
case ClientVersion::RoF2:
|
case ClientVersion::RoF2:
|
||||||
return "RoF2";
|
return "RoF2";
|
||||||
|
case ClientVersion::Larion:
|
||||||
|
return "Larion";
|
||||||
default:
|
default:
|
||||||
return "Invalid Version";
|
return "Invalid Version";
|
||||||
};
|
};
|
||||||
@ -76,6 +78,8 @@ uint32 EQ::versions::ConvertClientVersionToClientVersionBit(ClientVersion client
|
|||||||
return bitRoF;
|
return bitRoF;
|
||||||
case ClientVersion::RoF2:
|
case ClientVersion::RoF2:
|
||||||
return bitRoF2;
|
return bitRoF2;
|
||||||
|
case ClientVersion::Larion:
|
||||||
|
return bitLarion;
|
||||||
default:
|
default:
|
||||||
return bitUnknown;
|
return bitUnknown;
|
||||||
}
|
}
|
||||||
@ -96,6 +100,8 @@ EQ::versions::ClientVersion EQ::versions::ConvertClientVersionBitToClientVersion
|
|||||||
return ClientVersion::RoF;
|
return ClientVersion::RoF;
|
||||||
case ((uint32)1 << (static_cast<unsigned int>(ClientVersion::RoF2) - 1)) :
|
case ((uint32)1 << (static_cast<unsigned int>(ClientVersion::RoF2) - 1)) :
|
||||||
return ClientVersion::RoF2;
|
return ClientVersion::RoF2;
|
||||||
|
case ((uint32)1 << (static_cast<unsigned int>(ClientVersion::Larion) - 1)):
|
||||||
|
return ClientVersion::Larion;
|
||||||
default:
|
default:
|
||||||
return ClientVersion::Unknown;
|
return ClientVersion::Unknown;
|
||||||
}
|
}
|
||||||
@ -184,6 +190,8 @@ const char* EQ::versions::MobVersionName(MobVersion mob_version)
|
|||||||
return "RoF";
|
return "RoF";
|
||||||
case MobVersion::RoF2:
|
case MobVersion::RoF2:
|
||||||
return "RoF2";
|
return "RoF2";
|
||||||
|
case MobVersion::Larion:
|
||||||
|
return "Larion";
|
||||||
case MobVersion::NPC:
|
case MobVersion::NPC:
|
||||||
return "NPC";
|
return "NPC";
|
||||||
case MobVersion::NPCMerchant:
|
case MobVersion::NPCMerchant:
|
||||||
@ -212,6 +220,8 @@ const char* EQ::versions::MobVersionName(MobVersion mob_version)
|
|||||||
return "Offline RoF";
|
return "Offline RoF";
|
||||||
case MobVersion::OfflineRoF2:
|
case MobVersion::OfflineRoF2:
|
||||||
return "Offline RoF2";
|
return "Offline RoF2";
|
||||||
|
case MobVersion::OfflineLarion:
|
||||||
|
return "Offline Larion";
|
||||||
default:
|
default:
|
||||||
return "Invalid Version";
|
return "Invalid Version";
|
||||||
};
|
};
|
||||||
@ -235,6 +245,8 @@ EQ::versions::ClientVersion EQ::versions::ConvertMobVersionToClientVersion(MobVe
|
|||||||
return ClientVersion::RoF;
|
return ClientVersion::RoF;
|
||||||
case MobVersion::RoF2:
|
case MobVersion::RoF2:
|
||||||
return ClientVersion::RoF2;
|
return ClientVersion::RoF2;
|
||||||
|
case MobVersion::Larion:
|
||||||
|
return ClientVersion::Larion;
|
||||||
default:
|
default:
|
||||||
return ClientVersion::Unknown;
|
return ClientVersion::Unknown;
|
||||||
}
|
}
|
||||||
@ -258,6 +270,8 @@ EQ::versions::MobVersion EQ::versions::ConvertClientVersionToMobVersion(ClientVe
|
|||||||
return MobVersion::RoF;
|
return MobVersion::RoF;
|
||||||
case ClientVersion::RoF2:
|
case ClientVersion::RoF2:
|
||||||
return MobVersion::RoF2;
|
return MobVersion::RoF2;
|
||||||
|
case ClientVersion::Larion:
|
||||||
|
return MobVersion::Larion;
|
||||||
default:
|
default:
|
||||||
return MobVersion::Unknown;
|
return MobVersion::Unknown;
|
||||||
}
|
}
|
||||||
@ -278,6 +292,8 @@ EQ::versions::MobVersion EQ::versions::ConvertPCMobVersionToOfflinePCMobVersion(
|
|||||||
return MobVersion::OfflineRoF;
|
return MobVersion::OfflineRoF;
|
||||||
case MobVersion::RoF2:
|
case MobVersion::RoF2:
|
||||||
return MobVersion::OfflineRoF2;
|
return MobVersion::OfflineRoF2;
|
||||||
|
case MobVersion::Larion:
|
||||||
|
return MobVersion::OfflineLarion;
|
||||||
default:
|
default:
|
||||||
return MobVersion::Unknown;
|
return MobVersion::Unknown;
|
||||||
}
|
}
|
||||||
@ -298,6 +314,8 @@ EQ::versions::MobVersion EQ::versions::ConvertOfflinePCMobVersionToPCMobVersion(
|
|||||||
return MobVersion::RoF;
|
return MobVersion::RoF;
|
||||||
case MobVersion::OfflineRoF2:
|
case MobVersion::OfflineRoF2:
|
||||||
return MobVersion::RoF2;
|
return MobVersion::RoF2;
|
||||||
|
case MobVersion::OfflineLarion:
|
||||||
|
return MobVersion::Larion;
|
||||||
default:
|
default:
|
||||||
return MobVersion::Unknown;
|
return MobVersion::Unknown;
|
||||||
}
|
}
|
||||||
@ -318,6 +336,8 @@ EQ::versions::ClientVersion EQ::versions::ConvertOfflinePCMobVersionToClientVers
|
|||||||
return ClientVersion::RoF;
|
return ClientVersion::RoF;
|
||||||
case MobVersion::OfflineRoF2:
|
case MobVersion::OfflineRoF2:
|
||||||
return ClientVersion::RoF2;
|
return ClientVersion::RoF2;
|
||||||
|
case MobVersion::OfflineLarion:
|
||||||
|
return ClientVersion::Larion;
|
||||||
default:
|
default:
|
||||||
return ClientVersion::Unknown;
|
return ClientVersion::Unknown;
|
||||||
}
|
}
|
||||||
@ -338,6 +358,8 @@ EQ::versions::MobVersion EQ::versions::ConvertClientVersionToOfflinePCMobVersion
|
|||||||
return MobVersion::OfflineRoF;
|
return MobVersion::OfflineRoF;
|
||||||
case ClientVersion::RoF2:
|
case ClientVersion::RoF2:
|
||||||
return MobVersion::OfflineRoF2;
|
return MobVersion::OfflineRoF2;
|
||||||
|
case ClientVersion::Larion:
|
||||||
|
return MobVersion::OfflineLarion;
|
||||||
default:
|
default:
|
||||||
return MobVersion::Unknown;
|
return MobVersion::Unknown;
|
||||||
}
|
}
|
||||||
@ -388,6 +410,27 @@ const char* EQ::expansions::ExpansionName(Expansion expansion)
|
|||||||
return "Rain of Fear";
|
return "Rain of Fear";
|
||||||
case Expansion::CotF:
|
case Expansion::CotF:
|
||||||
return "Call of the Forsaken";
|
return "Call of the Forsaken";
|
||||||
|
case Expansion::TDS:
|
||||||
|
return "The Darkened Sea";
|
||||||
|
case Expansion::TBM:
|
||||||
|
return "The Broken Mirror";
|
||||||
|
case Expansion::EoK:
|
||||||
|
return "Empires of Kunark";
|
||||||
|
case Expansion::RoS:
|
||||||
|
return "Ring of Scale";
|
||||||
|
case Expansion::TBL:
|
||||||
|
return "The Burning Lands";
|
||||||
|
case Expansion::ToV:
|
||||||
|
return "Torment of Velious";
|
||||||
|
case Expansion::CoV:
|
||||||
|
return "Claws of Veeshan";
|
||||||
|
case Expansion::ToL:
|
||||||
|
return "Terror of Luclin";
|
||||||
|
case Expansion::NoS:
|
||||||
|
return "Night of Shadows";
|
||||||
|
case Expansion::LS:
|
||||||
|
return "Laurion's Song";
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return "Invalid Expansion";
|
return "Invalid Expansion";
|
||||||
}
|
}
|
||||||
@ -441,6 +484,26 @@ uint32 EQ::expansions::ConvertExpansionToExpansionBit(Expansion expansion)
|
|||||||
return bitRoF;
|
return bitRoF;
|
||||||
case Expansion::CotF:
|
case Expansion::CotF:
|
||||||
return bitCotF;
|
return bitCotF;
|
||||||
|
case Expansion::TDS:
|
||||||
|
return bitTDS;
|
||||||
|
case Expansion::TBM:
|
||||||
|
return bitTBM;
|
||||||
|
case Expansion::EoK:
|
||||||
|
return bitEoK;
|
||||||
|
case Expansion::RoS:
|
||||||
|
return bitRoS;
|
||||||
|
case Expansion::TBL:
|
||||||
|
return bitTBL;
|
||||||
|
case Expansion::ToV:
|
||||||
|
return bitToV;
|
||||||
|
case Expansion::CoV:
|
||||||
|
return bitCoV;
|
||||||
|
case Expansion::ToL:
|
||||||
|
return bitToL;
|
||||||
|
case Expansion::NoS:
|
||||||
|
return bitNoS;
|
||||||
|
case Expansion::LS:
|
||||||
|
return bitLS;
|
||||||
default:
|
default:
|
||||||
return bitEverQuest;
|
return bitEverQuest;
|
||||||
}
|
}
|
||||||
@ -489,6 +552,26 @@ EQ::expansions::Expansion EQ::expansions::ConvertExpansionBitToExpansion(uint32
|
|||||||
return Expansion::RoF;
|
return Expansion::RoF;
|
||||||
case bitCotF:
|
case bitCotF:
|
||||||
return Expansion::CotF;
|
return Expansion::CotF;
|
||||||
|
case bitTDS:
|
||||||
|
return Expansion::TDS;
|
||||||
|
case bitTBM:
|
||||||
|
return Expansion::TBM;
|
||||||
|
case bitEoK:
|
||||||
|
return Expansion::EoK;
|
||||||
|
case bitRoS:
|
||||||
|
return Expansion::RoS;
|
||||||
|
case bitTBL:
|
||||||
|
return Expansion::TBL;
|
||||||
|
case bitToV:
|
||||||
|
return Expansion::ToV;
|
||||||
|
case bitCoV:
|
||||||
|
return Expansion::CoV;
|
||||||
|
case bitToL:
|
||||||
|
return Expansion::ToL;
|
||||||
|
case bitNoS:
|
||||||
|
return Expansion::NoS;
|
||||||
|
case bitLS:
|
||||||
|
return Expansion::LS;
|
||||||
default:
|
default:
|
||||||
return Expansion::EverQuest;
|
return Expansion::EverQuest;
|
||||||
}
|
}
|
||||||
@ -537,6 +620,26 @@ uint32 EQ::expansions::ConvertExpansionToExpansionsMask(Expansion expansion)
|
|||||||
return maskRoF;
|
return maskRoF;
|
||||||
case Expansion::CotF:
|
case Expansion::CotF:
|
||||||
return maskCotF;
|
return maskCotF;
|
||||||
|
case Expansion::TDS:
|
||||||
|
return maskTDS;
|
||||||
|
case Expansion::TBM:
|
||||||
|
return maskTBM;
|
||||||
|
case Expansion::EoK:
|
||||||
|
return maskEoK;
|
||||||
|
case Expansion::RoS:
|
||||||
|
return maskRoS;
|
||||||
|
case Expansion::TBL:
|
||||||
|
return maskTBL;
|
||||||
|
case Expansion::ToV:
|
||||||
|
return maskToV;
|
||||||
|
case Expansion::CoV:
|
||||||
|
return maskCoV;
|
||||||
|
case Expansion::ToL:
|
||||||
|
return maskToL;
|
||||||
|
case Expansion::NoS:
|
||||||
|
return maskNoS;
|
||||||
|
case Expansion::LS:
|
||||||
|
return maskLS;
|
||||||
default:
|
default:
|
||||||
return maskEverQuest;
|
return maskEverQuest;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,6 +49,7 @@ namespace EQ
|
|||||||
bitUF = 0x00000010,
|
bitUF = 0x00000010,
|
||||||
bitRoF = 0x00000020,
|
bitRoF = 0x00000020,
|
||||||
bitRoF2 = 0x00000040,
|
bitRoF2 = 0x00000040,
|
||||||
|
bitLarion = 0x00000080,
|
||||||
maskUnknown = 0x00000000,
|
maskUnknown = 0x00000000,
|
||||||
maskTitaniumAndEarlier = 0x00000003,
|
maskTitaniumAndEarlier = 0x00000003,
|
||||||
maskSoFAndEarlier = 0x00000007,
|
maskSoFAndEarlier = 0x00000007,
|
||||||
@ -60,6 +61,7 @@ namespace EQ
|
|||||||
maskUFAndLater = 0xFFFFFFF0,
|
maskUFAndLater = 0xFFFFFFF0,
|
||||||
maskRoFAndLater = 0xFFFFFFE0,
|
maskRoFAndLater = 0xFFFFFFE0,
|
||||||
maskRoF2AndLater = 0xFFFFFFC0,
|
maskRoF2AndLater = 0xFFFFFFC0,
|
||||||
|
maskLarionAndLater = 0xFFFFFF80,
|
||||||
maskAllClients = 0xFFFFFFFF
|
maskAllClients = 0xFFFFFFFF
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -81,6 +83,7 @@ namespace EQ
|
|||||||
UF,
|
UF,
|
||||||
RoF,
|
RoF,
|
||||||
RoF2,
|
RoF2,
|
||||||
|
Larion,
|
||||||
NPC,
|
NPC,
|
||||||
NPCMerchant,
|
NPCMerchant,
|
||||||
Merc,
|
Merc,
|
||||||
@ -94,13 +97,14 @@ namespace EQ
|
|||||||
OfflineSoD,
|
OfflineSoD,
|
||||||
OfflineUF,
|
OfflineUF,
|
||||||
OfflineRoF,
|
OfflineRoF,
|
||||||
OfflineRoF2
|
OfflineRoF2,
|
||||||
|
OfflineLarion
|
||||||
};
|
};
|
||||||
|
|
||||||
const MobVersion LastMobVersion = MobVersion::OfflineRoF2;
|
const MobVersion LastMobVersion = MobVersion::OfflineLarion;
|
||||||
const MobVersion LastPCMobVersion = MobVersion::RoF2;
|
const MobVersion LastPCMobVersion = MobVersion::Larion;
|
||||||
const MobVersion LastNonPCMobVersion = MobVersion::BotPet;
|
const MobVersion LastNonPCMobVersion = MobVersion::BotPet;
|
||||||
const MobVersion LastOfflinePCMobVersion = MobVersion::OfflineRoF2;
|
const MobVersion LastOfflinePCMobVersion = MobVersion::OfflineLarion;
|
||||||
const size_t MobVersionCount = (static_cast<size_t>(LastMobVersion) + 1);
|
const size_t MobVersionCount = (static_cast<size_t>(LastMobVersion) + 1);
|
||||||
|
|
||||||
bool IsValidMobVersion(MobVersion mob_version);
|
bool IsValidMobVersion(MobVersion mob_version);
|
||||||
@ -132,7 +136,8 @@ namespace EQ
|
|||||||
ucsSoDCombined = 'D',
|
ucsSoDCombined = 'D',
|
||||||
ucsUFCombined = 'E',
|
ucsUFCombined = 'E',
|
||||||
ucsRoFCombined = 'F',
|
ucsRoFCombined = 'F',
|
||||||
ucsRoF2Combined = 'G'
|
ucsRoF2Combined = 'G',
|
||||||
|
ucsLaurionCombined = 'G'
|
||||||
};
|
};
|
||||||
|
|
||||||
} /*versions*/
|
} /*versions*/
|
||||||
@ -159,7 +164,17 @@ namespace EQ
|
|||||||
HoT,
|
HoT,
|
||||||
VoA,
|
VoA,
|
||||||
RoF,
|
RoF,
|
||||||
CotF
|
CotF,
|
||||||
|
TDS,
|
||||||
|
TBM,
|
||||||
|
EoK,
|
||||||
|
RoS,
|
||||||
|
TBL,
|
||||||
|
ToV,
|
||||||
|
CoV,
|
||||||
|
ToL,
|
||||||
|
NoS,
|
||||||
|
LS
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ExpansionBitmask : uint32 {
|
enum ExpansionBitmask : uint32 {
|
||||||
@ -184,6 +199,16 @@ namespace EQ
|
|||||||
bitVoA = 0x00020000,
|
bitVoA = 0x00020000,
|
||||||
bitRoF = 0x00040000,
|
bitRoF = 0x00040000,
|
||||||
bitCotF = 0x00080000,
|
bitCotF = 0x00080000,
|
||||||
|
bitTDS = 0x00100000,
|
||||||
|
bitTBM = 0x00200000,
|
||||||
|
bitEoK = 0x00400000,
|
||||||
|
bitRoS = 0x00800000,
|
||||||
|
bitTBL = 0x01000000,
|
||||||
|
bitToV = 0x02000000,
|
||||||
|
bitCoV = 0x04000000,
|
||||||
|
bitToL = 0x08000000,
|
||||||
|
bitNoS = 0x10000000,
|
||||||
|
bitLS = 0x20000000,
|
||||||
maskEverQuest = 0x00000000,
|
maskEverQuest = 0x00000000,
|
||||||
maskRoK = 0x00000001,
|
maskRoK = 0x00000001,
|
||||||
maskSoV = 0x00000003,
|
maskSoV = 0x00000003,
|
||||||
@ -204,7 +229,17 @@ namespace EQ
|
|||||||
maskHoT = 0x0001FFFF,
|
maskHoT = 0x0001FFFF,
|
||||||
maskVoA = 0x0003FFFF,
|
maskVoA = 0x0003FFFF,
|
||||||
maskRoF = 0x0007FFFF,
|
maskRoF = 0x0007FFFF,
|
||||||
maskCotF = 0x000FFFFF
|
maskCotF = 0x000FFFFF,
|
||||||
|
maskTDS = 0x001FFFFF,
|
||||||
|
maskTBM = 0x003FFFFF,
|
||||||
|
maskEoK = 0x007FFFFF,
|
||||||
|
maskRoS = 0x00FFFFFF,
|
||||||
|
maskTBL = 0x01FFFFFF,
|
||||||
|
maskToV = 0x03FFFFFF,
|
||||||
|
maskCoV = 0x07FFFFFF,
|
||||||
|
maskToL = 0x0FFFFFFF,
|
||||||
|
maskNoS = 0x1FFFFFFF,
|
||||||
|
maskLS = 0x3FFFFFFF,
|
||||||
};
|
};
|
||||||
|
|
||||||
const char* ExpansionName(Expansion expansion);
|
const char* ExpansionName(Expansion expansion);
|
||||||
|
|||||||
@ -370,6 +370,33 @@ static const EQ::inventory::LookupEntry inventory_static_lookup_entries[EQ::vers
|
|||||||
RoF2::inventory::ConcatenateInvTypeLimbo,
|
RoF2::inventory::ConcatenateInvTypeLimbo,
|
||||||
RoF2::inventory::AllowOverLevelEquipment
|
RoF2::inventory::AllowOverLevelEquipment
|
||||||
),
|
),
|
||||||
|
/*[MobVersion::LS] =*/
|
||||||
|
EQ::inventory::LookupEntry(
|
||||||
|
EQ::inventory::LookupEntry::InventoryTypeSize_Struct(
|
||||||
|
EQ::invtype::POSSESSIONS_SIZE, RoF2::invtype::BANK_SIZE, RoF2::invtype::SHARED_BANK_SIZE,
|
||||||
|
RoF2::invtype::TRADE_SIZE, RoF2::invtype::WORLD_SIZE, RoF2::invtype::LIMBO_SIZE,
|
||||||
|
RoF2::invtype::TRIBUTE_SIZE, RoF2::invtype::TROPHY_TRIBUTE_SIZE, RoF2::invtype::GUILD_TRIBUTE_SIZE,
|
||||||
|
RoF2::invtype::MERCHANT_SIZE, RoF2::invtype::DELETED_SIZE, RoF2::invtype::CORPSE_SIZE,
|
||||||
|
RoF2::invtype::BAZAAR_SIZE, RoF2::invtype::INSPECT_SIZE, RoF2::invtype::REAL_ESTATE_SIZE,
|
||||||
|
RoF2::invtype::VIEW_MOD_PC_SIZE, RoF2::invtype::VIEW_MOD_BANK_SIZE, RoF2::invtype::VIEW_MOD_SHARED_BANK_SIZE,
|
||||||
|
RoF2::invtype::VIEW_MOD_LIMBO_SIZE, RoF2::invtype::ALT_STORAGE_SIZE, RoF2::invtype::ARCHIVED_SIZE,
|
||||||
|
RoF2::invtype::MAIL_SIZE, RoF2::invtype::GUILD_TROPHY_TRIBUTE_SIZE, RoF2::invtype::KRONO_SIZE,
|
||||||
|
RoF2::invtype::OTHER_SIZE
|
||||||
|
),
|
||||||
|
|
||||||
|
RoF2::invslot::EQUIPMENT_BITMASK,
|
||||||
|
RoF2::invslot::GENERAL_BITMASK,
|
||||||
|
RoF2::invslot::CURSOR_BITMASK,
|
||||||
|
RoF2::invslot::POSSESSIONS_BITMASK,
|
||||||
|
RoF2::invslot::CORPSE_BITMASK,
|
||||||
|
RoF2::invbag::SLOT_COUNT,
|
||||||
|
RoF2::invaug::SOCKET_COUNT,
|
||||||
|
|
||||||
|
RoF2::inventory::AllowEmptyBagInBag,
|
||||||
|
RoF2::inventory::AllowClickCastFromBag,
|
||||||
|
RoF2::inventory::ConcatenateInvTypeLimbo,
|
||||||
|
RoF2::inventory::AllowOverLevelEquipment
|
||||||
|
),
|
||||||
/*[MobVersion::NPC] =*/
|
/*[MobVersion::NPC] =*/
|
||||||
EQ::inventory::LookupEntry(
|
EQ::inventory::LookupEntry(
|
||||||
EQ::inventory::LookupEntry::InventoryTypeSize_Struct(
|
EQ::inventory::LookupEntry::InventoryTypeSize_Struct(
|
||||||
@ -743,6 +770,33 @@ static const EQ::inventory::LookupEntry inventory_static_lookup_entries[EQ::vers
|
|||||||
RoF2::invbag::SLOT_COUNT,
|
RoF2::invbag::SLOT_COUNT,
|
||||||
RoF2::invaug::SOCKET_COUNT,
|
RoF2::invaug::SOCKET_COUNT,
|
||||||
|
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
),
|
||||||
|
/*[MobVersion::OfflineLS] =*/
|
||||||
|
EQ::inventory::LookupEntry(
|
||||||
|
EQ::inventory::LookupEntry::InventoryTypeSize_Struct(
|
||||||
|
RoF2::INULL, RoF2::INULL, RoF2::INULL,
|
||||||
|
RoF2::invtype::TRADE_SIZE, RoF2::INULL, RoF2::INULL,
|
||||||
|
RoF2::INULL, RoF2::INULL, RoF2::INULL,
|
||||||
|
RoF2::invtype::MERCHANT_SIZE, RoF2::INULL, RoF2::INULL,
|
||||||
|
RoF2::invtype::BAZAAR_SIZE, RoF2::invtype::INSPECT_SIZE, RoF2::INULL,
|
||||||
|
RoF2::invtype::VIEW_MOD_PC_SIZE, RoF2::invtype::VIEW_MOD_BANK_SIZE, RoF2::invtype::VIEW_MOD_SHARED_BANK_SIZE,
|
||||||
|
RoF2::invtype::VIEW_MOD_LIMBO_SIZE, RoF2::INULL, RoF2::INULL,
|
||||||
|
RoF2::INULL, RoF2::INULL, RoF2::INULL,
|
||||||
|
RoF2::INULL
|
||||||
|
),
|
||||||
|
|
||||||
|
RoF2::INULL,
|
||||||
|
RoF2::INULL,
|
||||||
|
RoF2::INULL,
|
||||||
|
RoF2::INULL,
|
||||||
|
RoF2::INULL,
|
||||||
|
RoF2::invbag::SLOT_COUNT,
|
||||||
|
RoF2::invaug::SOCKET_COUNT,
|
||||||
|
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
@ -994,6 +1048,10 @@ static const EQ::behavior::LookupEntry behavior_static_lookup_entries[EQ::versio
|
|||||||
EQ::behavior::LookupEntry(
|
EQ::behavior::LookupEntry(
|
||||||
RoF2::behavior::CoinHasWeight
|
RoF2::behavior::CoinHasWeight
|
||||||
),
|
),
|
||||||
|
/*[MobVersion::LS] =*/
|
||||||
|
EQ::behavior::LookupEntry(
|
||||||
|
RoF2::behavior::CoinHasWeight
|
||||||
|
),
|
||||||
/*[MobVersion::NPC] =*/
|
/*[MobVersion::NPC] =*/
|
||||||
EQ::behavior::LookupEntry(
|
EQ::behavior::LookupEntry(
|
||||||
EQ::behavior::CoinHasWeight
|
EQ::behavior::CoinHasWeight
|
||||||
@ -1047,6 +1105,10 @@ static const EQ::behavior::LookupEntry behavior_static_lookup_entries[EQ::versio
|
|||||||
RoF::behavior::CoinHasWeight
|
RoF::behavior::CoinHasWeight
|
||||||
),
|
),
|
||||||
/*[MobVersion::OfflineRoF2] =*/
|
/*[MobVersion::OfflineRoF2] =*/
|
||||||
|
EQ::behavior::LookupEntry(
|
||||||
|
RoF2::behavior::CoinHasWeight
|
||||||
|
),
|
||||||
|
/*[MobVersion::OfflineLS] =*/
|
||||||
EQ::behavior::LookupEntry(
|
EQ::behavior::LookupEntry(
|
||||||
RoF2::behavior::CoinHasWeight
|
RoF2::behavior::CoinHasWeight
|
||||||
)
|
)
|
||||||
|
|||||||
@ -29,7 +29,7 @@
|
|||||||
#include "../common/patches/uf_limits.h"
|
#include "../common/patches/uf_limits.h"
|
||||||
#include "../common/patches/rof_limits.h"
|
#include "../common/patches/rof_limits.h"
|
||||||
#include "../common/patches/rof2_limits.h"
|
#include "../common/patches/rof2_limits.h"
|
||||||
|
#include "../common/patches/larion_limits.h"
|
||||||
|
|
||||||
namespace EQ
|
namespace EQ
|
||||||
{
|
{
|
||||||
|
|||||||
@ -126,94 +126,89 @@ namespace Larion
|
|||||||
|
|
||||||
// ENCODE methods
|
// ENCODE methods
|
||||||
ENCODE(OP_LogServer) {
|
ENCODE(OP_LogServer) {
|
||||||
EQApplicationPacket* in = *p;
|
SETUP_VAR_ENCODE(LogServer_Struct);
|
||||||
*p = nullptr;
|
ALLOC_LEN_ENCODE(1840);
|
||||||
LogServer_Struct* emu = (LogServer_Struct*)in->pBuffer;
|
|
||||||
|
|
||||||
auto outapp = new EQApplicationPacket(OP_LogServer, 1840);
|
|
||||||
auto buffer = outapp->pBuffer;
|
|
||||||
|
|
||||||
//pvp
|
//pvp
|
||||||
if (emu->enable_pvp) {
|
if (emu->enable_pvp) {
|
||||||
*(char*)&buffer[0x04] = 1;
|
*(char*)&__packet->pBuffer[0x04] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (emu->enable_FV) {
|
if (emu->enable_FV) {
|
||||||
//FV sets these both to 1
|
//FV sets these both to 1
|
||||||
//one appears to enable the no drop flag the other just marks the server as special?
|
//one appears to enable the no drop flag the other just marks the server as special?
|
||||||
*(char*)&buffer[0x08] = 1;
|
*(char*)&__packet->pBuffer[0x08] = 1;
|
||||||
*(char*)&buffer[0x0a] = 1;
|
*(char*)&__packet->pBuffer[0x0a] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//This has something to do with heirloom and prestige items but im not sure what it does
|
//This has something to do with heirloom and prestige items but im not sure what it does
|
||||||
//Seems to sit at 0
|
//Seems to sit at 0
|
||||||
*(char*)&buffer[0x71d] = 0;
|
*(char*)&__packet->pBuffer[0x71d] = 0;
|
||||||
|
|
||||||
//not sure what this does, something to do with server select
|
//not sure what this does, something to do with server select
|
||||||
*(char*)&buffer[0x09] = 0;
|
*(char*)&__packet->pBuffer[0x09] = 0;
|
||||||
|
|
||||||
//this appears to have some effect on the tradeskill system; disabling made by tags perhaps?
|
//this appears to have some effect on the tradeskill system; disabling made by tags perhaps?
|
||||||
*(char*)&buffer[0x0b] = 0;
|
*(char*)&__packet->pBuffer[0x0b] = 0;
|
||||||
|
|
||||||
//not sure, setting it to the value ive seen
|
//not sure, setting it to the value ive seen
|
||||||
*(char*)&buffer[0x0c] = 1;
|
*(char*)&__packet->pBuffer[0x0c] = 1;
|
||||||
|
|
||||||
//Something to do with languages
|
//Something to do with languages
|
||||||
*(char*)&buffer[0x0d] = 1;
|
*(char*)&__packet->pBuffer[0x0d] = 1;
|
||||||
|
|
||||||
//These seem to affect if server has betabuff enabled
|
//These seem to affect if server has betabuff enabled
|
||||||
*(char*)&buffer[0x5c0] = 0;
|
*(char*)&__packet->pBuffer[0x5c0] = 0;
|
||||||
*(char*)&buffer[0x5c1] = 0;
|
*(char*)&__packet->pBuffer[0x5c1] = 0;
|
||||||
//This is set on test so it's probably indicating this is a test server
|
//This is set on test so it's probably indicating this is a test server
|
||||||
*(char*)&buffer[0x5c2] = 0;
|
*(char*)&__packet->pBuffer[0x5c2] = 0;
|
||||||
|
|
||||||
//not sure, but it's grouped with the beta and test stuff
|
//not sure, but it's grouped with the beta and test stuff
|
||||||
*(char*)&buffer[0x5c3] = 0;
|
*(char*)&__packet->pBuffer[0x5c3] = 0;
|
||||||
|
|
||||||
//world short name
|
//world short name
|
||||||
strncpy((char*)&buffer[0x15], emu->worldshortname, 32);
|
strncpy((char*)&__packet->pBuffer[0x15], emu->worldshortname, 32);
|
||||||
|
|
||||||
//not sure, affects some player calculation but didn't care to look more
|
//not sure, affects some player calculation but didn't care to look more
|
||||||
*(char*)&buffer[0x5c2] = 0;
|
*(char*)&__packet->pBuffer[0x5c2] = 0;
|
||||||
|
|
||||||
//Looks right
|
//Looks right
|
||||||
if (emu->enablemail) {
|
if (emu->enablemail) {
|
||||||
*(char*)&buffer[0x5b5] = 1;
|
*(char*)&__packet->pBuffer[0x5b5] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Looks right
|
//Looks right
|
||||||
if (emu->enablevoicemacros) {
|
if (emu->enablevoicemacros) {
|
||||||
*(char*)&buffer[0x5b4] = 1;
|
*(char*)&__packet->pBuffer[0x5b4] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Not sure, sending what we've seen
|
//Not sure, sending what we've seen
|
||||||
*(char*)&buffer[0x5b6] = 0;
|
*(char*)&__packet->pBuffer[0x5b6] = 0;
|
||||||
|
|
||||||
//Not sure sending what we've seen
|
//Not sure sending what we've seen
|
||||||
*(char*)&buffer[0x5b8] = 1;
|
*(char*)&__packet->pBuffer[0x5b8] = 1;
|
||||||
|
|
||||||
//Not sure sending what we've seen
|
//Not sure sending what we've seen
|
||||||
*(int32_t*)&buffer[0x5fc] = -1;
|
*(int32_t*)&__packet->pBuffer[0x5fc] = -1;
|
||||||
|
|
||||||
//Test sets this to 1, everyone else seems to set it to 0
|
//Test sets this to 1, everyone else seems to set it to 0
|
||||||
*(int32_t*)&buffer[0x600] = 0;
|
*(int32_t*)&__packet->pBuffer[0x600] = 0;
|
||||||
|
|
||||||
//Disassembly puts it next to code dealing with commands, ive not seen anyone send anything but 0
|
//Disassembly puts it next to code dealing with commands, ive not seen anyone send anything but 0
|
||||||
*(char*)&buffer[0x705] = 0;
|
*(char*)&__packet->pBuffer[0x705] = 0;
|
||||||
|
|
||||||
//Something about item restrictions, seems to always be set to 1
|
//Something about item restrictions, seems to always be set to 1
|
||||||
*(char*)&buffer[0x710] = 0;
|
*(char*)&__packet->pBuffer[0x710] = 0;
|
||||||
|
|
||||||
//This and 0x724 are often multiplied together in guild favor calcs, live and test send 1.0f
|
//This and 0x724 are often multiplied together in guild favor calcs, live and test send 1.0f
|
||||||
*(float*)&buffer[0x720] = 1.0f;
|
*(float*)&__packet->pBuffer[0x720] = 1.0f;
|
||||||
*(float*)&buffer[0x724] = 1.0f;
|
*(float*)&__packet->pBuffer[0x724] = 1.0f;
|
||||||
|
|
||||||
//This and 0x72c are often multiplied together in non-guild favor calcs, live and test send 1.0f
|
//This and 0x72c are often multiplied together in non-guild favor calcs, live and test send 1.0f
|
||||||
*(float*)&buffer[0x728] = 1.0f;
|
*(float*)&__packet->pBuffer[0x728] = 1.0f;
|
||||||
*(float*)&buffer[0x72c] = 1.0f;
|
*(float*)&__packet->pBuffer[0x72c] = 1.0f;
|
||||||
|
|
||||||
dest->FastQueuePacket(&outapp);
|
FINISH_ENCODE();
|
||||||
safe_delete(in);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ENCODE(OP_SendMembership) {
|
ENCODE(OP_SendMembership) {
|
||||||
@ -224,30 +219,30 @@ namespace Larion
|
|||||||
eq->races = emu->races;
|
eq->races = emu->races;
|
||||||
eq->classes = emu->classes;
|
eq->classes = emu->classes;
|
||||||
eq->entrysize = 33;
|
eq->entrysize = 33;
|
||||||
eq->entries[0] = -1;
|
eq->entries[0] = -1; // Max AA Restriction
|
||||||
eq->entries[1] = -1;
|
eq->entries[1] = -1; // Max Level Restriction
|
||||||
eq->entries[2] = -1;
|
eq->entries[2] = -1; // Max Char Slots per Account (not used by client?)
|
||||||
eq->entries[3] = -1;
|
eq->entries[3] = -1; // 1 for Silver
|
||||||
eq->entries[4] = -1;
|
eq->entries[4] = -1; // Main Inventory Size
|
||||||
eq->entries[5] = -1;
|
eq->entries[5] = -1; // Max Platinum per level
|
||||||
eq->entries[6] = 1;
|
eq->entries[6] = 1; // Send Mail
|
||||||
eq->entries[7] = 1;
|
eq->entries[7] = 1; // Use Parcels?
|
||||||
eq->entries[8] = 1;
|
eq->entries[8] = 1; // Voice Chat
|
||||||
eq->entries[9] = -1;
|
eq->entries[9] = -1; // Merc Tiers
|
||||||
eq->entries[10] = 1;
|
eq->entries[10] = 1; // Create Guilds
|
||||||
eq->entries[11] = -1;
|
eq->entries[11] = -1; // Shared Bank Slots
|
||||||
eq->entries[12] = -1;
|
eq->entries[12] = -1; // Max Journal Quests
|
||||||
eq->entries[13] = 1;
|
eq->entries[13] = 1; // Housing Enabled
|
||||||
eq->entries[14] = 1;
|
eq->entries[14] = 1; // Prestiege
|
||||||
eq->entries[15] = 1;
|
eq->entries[15] = 1; // Broker System
|
||||||
eq->entries[16] = 1;
|
eq->entries[16] = 1; // Chat
|
||||||
eq->entries[17] = 1;
|
eq->entries[17] = 1; // Progression Server Access
|
||||||
eq->entries[18] = 1;
|
eq->entries[18] = 1; // Customer Support
|
||||||
eq->entries[19] = -1;
|
eq->entries[19] = -1; // Popup reminders?
|
||||||
eq->entries[20] = -1;
|
eq->entries[20] = -1; // Exit Popup?
|
||||||
eq->entries[21] = 0;
|
eq->entries[21] = 0;
|
||||||
eq->entries[22] = 0;
|
eq->entries[22] = 0;
|
||||||
eq->entries[23] = 0;
|
eq->entries[23] = 0; // This is the highest we actually see in detail entries
|
||||||
eq->entries[24] = 0;
|
eq->entries[24] = 0;
|
||||||
eq->entries[25] = 0;
|
eq->entries[25] = 0;
|
||||||
eq->entries[26] = 0;
|
eq->entries[26] = 0;
|
||||||
@ -262,7 +257,538 @@ namespace Larion
|
|||||||
}
|
}
|
||||||
|
|
||||||
ENCODE(OP_SendMembershipDetails) {
|
ENCODE(OP_SendMembershipDetails) {
|
||||||
|
SETUP_VAR_ENCODE(Membership_Details_Struct);
|
||||||
|
|
||||||
|
SerializeBuffer buffer;
|
||||||
|
// Generated via script; we should put this in a better format later
|
||||||
|
// count
|
||||||
|
buffer.WriteUInt32(96);
|
||||||
|
|
||||||
|
// settings
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(0);
|
||||||
|
buffer.WriteInt32(250);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(0);
|
||||||
|
buffer.WriteInt32(1000);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(1);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(1);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(2);
|
||||||
|
buffer.WriteInt32(2);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(0);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(0);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(2);
|
||||||
|
buffer.WriteInt32(4);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(3);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(1);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(1);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(3);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(4);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(2);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(2);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(4);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(5);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(3);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(3);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(5);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(6);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(4);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(4);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(6);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(7);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(5);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(5);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(7);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(8);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(6);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(6);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(8);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(9);
|
||||||
|
buffer.WriteInt32(5);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(7);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(7);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(9);
|
||||||
|
buffer.WriteInt32(5);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(10);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(8);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(8);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(11);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(10);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(9);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(9);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(12);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(11);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(10);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(10);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(13);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(12);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(11);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(11);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(14);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(13);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(12);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(12);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(15);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(14);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(13);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(13);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(16);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(15);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(14);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(14);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(17);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(16);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(15);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(15);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(18);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(17);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(16);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(16);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(19);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(18);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(17);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(17);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(20);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(19);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(18);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(18);
|
||||||
|
buffer.WriteInt32(1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(21);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(20);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(19);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(19);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(22);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(21);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(20);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(20);
|
||||||
|
buffer.WriteInt32(-1);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(21);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(0);
|
||||||
|
buffer.WriteUInt32(23);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(22);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(21);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(22);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(1);
|
||||||
|
buffer.WriteUInt32(23);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(22);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(2);
|
||||||
|
buffer.WriteUInt32(23);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
buffer.WriteUInt8(3);
|
||||||
|
buffer.WriteUInt32(23);
|
||||||
|
buffer.WriteInt32(0);
|
||||||
|
|
||||||
|
// race count
|
||||||
|
buffer.WriteUInt32(17);
|
||||||
|
|
||||||
|
// races
|
||||||
|
buffer.WriteUInt32(1);
|
||||||
|
buffer.WriteUInt32(131071);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(333);
|
||||||
|
buffer.WriteUInt32(131071);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90287);
|
||||||
|
buffer.WriteUInt32(131071);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90289);
|
||||||
|
buffer.WriteUInt32(16);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90290);
|
||||||
|
buffer.WriteUInt32(32);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90291);
|
||||||
|
buffer.WriteUInt32(64);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90292);
|
||||||
|
buffer.WriteUInt32(128);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90293);
|
||||||
|
buffer.WriteUInt32(256);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90294);
|
||||||
|
buffer.WriteUInt32(512);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90295);
|
||||||
|
buffer.WriteUInt32(1024);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90296);
|
||||||
|
buffer.WriteUInt32(2048);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90297);
|
||||||
|
buffer.WriteUInt32(8192);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90298);
|
||||||
|
buffer.WriteUInt32(16384);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90299);
|
||||||
|
buffer.WriteUInt32(32768);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90300);
|
||||||
|
buffer.WriteUInt32(65536);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(2012271);
|
||||||
|
buffer.WriteUInt32(131071);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(2012277);
|
||||||
|
buffer.WriteUInt32(131071);
|
||||||
|
|
||||||
|
// classes count
|
||||||
|
buffer.WriteUInt32(17);
|
||||||
|
|
||||||
|
// classes
|
||||||
|
buffer.WriteUInt32(1);
|
||||||
|
buffer.WriteUInt32(131071);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(333);
|
||||||
|
buffer.WriteUInt32(131071);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90287);
|
||||||
|
buffer.WriteUInt32(131071);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90301);
|
||||||
|
buffer.WriteUInt32(8);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90302);
|
||||||
|
buffer.WriteUInt32(16);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90303);
|
||||||
|
buffer.WriteUInt32(32);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90304);
|
||||||
|
buffer.WriteUInt32(64);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90305);
|
||||||
|
buffer.WriteUInt32(128);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90306);
|
||||||
|
buffer.WriteUInt32(256);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90307);
|
||||||
|
buffer.WriteUInt32(1024);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90308);
|
||||||
|
buffer.WriteUInt32(2048);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90309);
|
||||||
|
buffer.WriteUInt32(8192);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90310);
|
||||||
|
buffer.WriteUInt32(16384);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90311);
|
||||||
|
buffer.WriteUInt32(32768);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(90312);
|
||||||
|
buffer.WriteUInt32(65536);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(2012271);
|
||||||
|
buffer.WriteUInt32(131071);
|
||||||
|
|
||||||
|
buffer.WriteUInt32(2012277);
|
||||||
|
buffer.WriteUInt32(131071);
|
||||||
|
|
||||||
|
// exit string length
|
||||||
|
buffer.WriteUInt32(0);
|
||||||
|
|
||||||
|
__packet->size = buffer.size();
|
||||||
|
__packet->pBuffer = new unsigned char[__packet->size];
|
||||||
|
memcpy(__packet->pBuffer, buffer.buffer(), __packet->size);
|
||||||
|
FINISH_ENCODE();
|
||||||
|
}
|
||||||
|
|
||||||
|
ENCODE(OP_SendMaxCharacters) {
|
||||||
|
ENCODE_LENGTH_EXACT(MaxCharacters_Struct);
|
||||||
|
SETUP_DIRECT_ENCODE(MaxCharacters_Struct, structs::MaxCharacters_Struct);
|
||||||
|
|
||||||
|
//OUT(max_chars);
|
||||||
|
eq->max_chars = 8; //needs to be fixed
|
||||||
|
eq->marketplace_chars = 0;
|
||||||
|
eq->unknown008 = -1;
|
||||||
|
eq->unknown00c = 196608;
|
||||||
|
eq->unknown010 = 0;
|
||||||
|
eq->unknown014 = 0;
|
||||||
|
eq->unknown018 = 0;
|
||||||
|
eq->unknown01c = 0;
|
||||||
|
eq->unknown020 = -1;
|
||||||
|
eq->unknown024 = 0;
|
||||||
|
eq->unknown028 = 0;
|
||||||
|
eq->unknown02c = 0;
|
||||||
|
eq->unknown030 = 0;
|
||||||
|
eq->unknown034 = 0;
|
||||||
|
|
||||||
|
FINISH_ENCODE();
|
||||||
}
|
}
|
||||||
|
|
||||||
// DECODE methods
|
// DECODE methods
|
||||||
|
|||||||
@ -16,3 +16,269 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "larion_limits.h"
|
||||||
|
|
||||||
|
#include "../strings.h"
|
||||||
|
|
||||||
|
|
||||||
|
int16 Larion::invtype::GetInvTypeSize(int16 inv_type)
|
||||||
|
{
|
||||||
|
switch (inv_type) {
|
||||||
|
case invtype::typePossessions:
|
||||||
|
return invtype::POSSESSIONS_SIZE;
|
||||||
|
case invtype::typeBank:
|
||||||
|
return invtype::BANK_SIZE;
|
||||||
|
case invtype::typeSharedBank:
|
||||||
|
return invtype::SHARED_BANK_SIZE;
|
||||||
|
case invtype::typeTrade:
|
||||||
|
return invtype::TRADE_SIZE;
|
||||||
|
case invtype::typeWorld:
|
||||||
|
return invtype::WORLD_SIZE;
|
||||||
|
case invtype::typeLimbo:
|
||||||
|
return invtype::LIMBO_SIZE;
|
||||||
|
case invtype::typeTribute:
|
||||||
|
return invtype::TRIBUTE_SIZE;
|
||||||
|
case invtype::typeTrophyTribute:
|
||||||
|
return invtype::TROPHY_TRIBUTE_SIZE;
|
||||||
|
case invtype::typeGuildTribute:
|
||||||
|
return invtype::GUILD_TRIBUTE_SIZE;
|
||||||
|
case invtype::typeMerchant:
|
||||||
|
return invtype::MERCHANT_SIZE;
|
||||||
|
case invtype::typeDeleted:
|
||||||
|
return invtype::DELETED_SIZE;
|
||||||
|
case invtype::typeCorpse:
|
||||||
|
return invtype::CORPSE_SIZE;
|
||||||
|
case invtype::typeBazaar:
|
||||||
|
return invtype::BAZAAR_SIZE;
|
||||||
|
case invtype::typeInspect:
|
||||||
|
return invtype::INSPECT_SIZE;
|
||||||
|
case invtype::typeRealEstate:
|
||||||
|
return invtype::REAL_ESTATE_SIZE;
|
||||||
|
case invtype::typeViewMODPC:
|
||||||
|
return invtype::VIEW_MOD_PC_SIZE;
|
||||||
|
case invtype::typeViewMODBank:
|
||||||
|
return invtype::VIEW_MOD_BANK_SIZE;
|
||||||
|
case invtype::typeViewMODSharedBank:
|
||||||
|
return invtype::VIEW_MOD_SHARED_BANK_SIZE;
|
||||||
|
case invtype::typeViewMODLimbo:
|
||||||
|
return invtype::VIEW_MOD_LIMBO_SIZE;
|
||||||
|
case invtype::typeAltStorage:
|
||||||
|
return invtype::ALT_STORAGE_SIZE;
|
||||||
|
case invtype::typeArchived:
|
||||||
|
return invtype::ARCHIVED_SIZE;
|
||||||
|
case invtype::typeMail:
|
||||||
|
return invtype::MAIL_SIZE;
|
||||||
|
case invtype::typeGuildTrophyTribute:
|
||||||
|
return invtype::GUILD_TROPHY_TRIBUTE_SIZE;
|
||||||
|
case invtype::typeKrono:
|
||||||
|
return invtype::KRONO_SIZE;
|
||||||
|
case invtype::typeOther:
|
||||||
|
return invtype::OTHER_SIZE;
|
||||||
|
default:
|
||||||
|
return INULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* Larion::invtype::GetInvTypeName(int16 inv_type)
|
||||||
|
{
|
||||||
|
switch (inv_type) {
|
||||||
|
case invtype::TYPE_INVALID:
|
||||||
|
return "Invalid Type";
|
||||||
|
case invtype::typePossessions:
|
||||||
|
return "Possessions";
|
||||||
|
case invtype::typeBank:
|
||||||
|
return "Bank";
|
||||||
|
case invtype::typeSharedBank:
|
||||||
|
return "Shared Bank";
|
||||||
|
case invtype::typeTrade:
|
||||||
|
return "Trade";
|
||||||
|
case invtype::typeWorld:
|
||||||
|
return "World";
|
||||||
|
case invtype::typeLimbo:
|
||||||
|
return "Limbo";
|
||||||
|
case invtype::typeTribute:
|
||||||
|
return "Tribute";
|
||||||
|
case invtype::typeTrophyTribute:
|
||||||
|
return "Trophy Tribute";
|
||||||
|
case invtype::typeGuildTribute:
|
||||||
|
return "Guild Tribute";
|
||||||
|
case invtype::typeMerchant:
|
||||||
|
return "Merchant";
|
||||||
|
case invtype::typeDeleted:
|
||||||
|
return "Deleted";
|
||||||
|
case invtype::typeCorpse:
|
||||||
|
return "Corpse";
|
||||||
|
case invtype::typeBazaar:
|
||||||
|
return "Bazaar";
|
||||||
|
case invtype::typeInspect:
|
||||||
|
return "Inspect";
|
||||||
|
case invtype::typeRealEstate:
|
||||||
|
return "Real Estate";
|
||||||
|
case invtype::typeViewMODPC:
|
||||||
|
return "View MOD PC";
|
||||||
|
case invtype::typeViewMODBank:
|
||||||
|
return "View MOD Bank";
|
||||||
|
case invtype::typeViewMODSharedBank:
|
||||||
|
return "View MOD Shared Bank";
|
||||||
|
case invtype::typeViewMODLimbo:
|
||||||
|
return "View MOD Limbo";
|
||||||
|
case invtype::typeAltStorage:
|
||||||
|
return "Alt Storage";
|
||||||
|
case invtype::typeArchived:
|
||||||
|
return "Archived";
|
||||||
|
case invtype::typeMail:
|
||||||
|
return "Mail";
|
||||||
|
case invtype::typeGuildTrophyTribute:
|
||||||
|
return "Guild Trophy Tribute";
|
||||||
|
case invtype::typeKrono:
|
||||||
|
return "Krono";
|
||||||
|
case invtype::typeOther:
|
||||||
|
return "Other";
|
||||||
|
default:
|
||||||
|
return "Unknown Type";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Larion::invtype::IsInvTypePersistent(int16 inv_type)
|
||||||
|
{
|
||||||
|
switch (inv_type) {
|
||||||
|
case invtype::typePossessions:
|
||||||
|
case invtype::typeBank:
|
||||||
|
case invtype::typeSharedBank:
|
||||||
|
case invtype::typeTrade:
|
||||||
|
case invtype::typeWorld:
|
||||||
|
case invtype::typeLimbo:
|
||||||
|
case invtype::typeTribute:
|
||||||
|
case invtype::typeTrophyTribute:
|
||||||
|
case invtype::typeGuildTribute:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* Larion::invslot::GetInvPossessionsSlotName(int16 inv_slot)
|
||||||
|
{
|
||||||
|
switch (inv_slot) {
|
||||||
|
case invslot::SLOT_INVALID:
|
||||||
|
return "Invalid Slot";
|
||||||
|
case invslot::slotCharm:
|
||||||
|
return "Charm";
|
||||||
|
case invslot::slotEar1:
|
||||||
|
return "Ear 1";
|
||||||
|
case invslot::slotHead:
|
||||||
|
return "Head";
|
||||||
|
case invslot::slotFace:
|
||||||
|
return "Face";
|
||||||
|
case invslot::slotEar2:
|
||||||
|
return "Ear 2";
|
||||||
|
case invslot::slotNeck:
|
||||||
|
return "Neck";
|
||||||
|
case invslot::slotShoulders:
|
||||||
|
return "Shoulders";
|
||||||
|
case invslot::slotArms:
|
||||||
|
return "Arms";
|
||||||
|
case invslot::slotBack:
|
||||||
|
return "Back";
|
||||||
|
case invslot::slotWrist1:
|
||||||
|
return "Wrist 1";
|
||||||
|
case invslot::slotWrist2:
|
||||||
|
return "Wrist 2";
|
||||||
|
case invslot::slotRange:
|
||||||
|
return "Range";
|
||||||
|
case invslot::slotHands:
|
||||||
|
return "Hands";
|
||||||
|
case invslot::slotPrimary:
|
||||||
|
return "Primary";
|
||||||
|
case invslot::slotSecondary:
|
||||||
|
return "Secondary";
|
||||||
|
case invslot::slotFinger1:
|
||||||
|
return "Finger 1";
|
||||||
|
case invslot::slotFinger2:
|
||||||
|
return "Finger 2";
|
||||||
|
case invslot::slotChest:
|
||||||
|
return "Chest";
|
||||||
|
case invslot::slotLegs:
|
||||||
|
return "Legs";
|
||||||
|
case invslot::slotFeet:
|
||||||
|
return "Feet";
|
||||||
|
case invslot::slotWaist:
|
||||||
|
return "Waist";
|
||||||
|
case invslot::slotPowerSource:
|
||||||
|
return "Power Source";
|
||||||
|
case invslot::slotAmmo:
|
||||||
|
return "Ammo";
|
||||||
|
case invslot::slotGeneral1:
|
||||||
|
return "General 1";
|
||||||
|
case invslot::slotGeneral2:
|
||||||
|
return "General 2";
|
||||||
|
case invslot::slotGeneral3:
|
||||||
|
return "General 3";
|
||||||
|
case invslot::slotGeneral4:
|
||||||
|
return "General 4";
|
||||||
|
case invslot::slotGeneral5:
|
||||||
|
return "General 5";
|
||||||
|
case invslot::slotGeneral6:
|
||||||
|
return "General 6";
|
||||||
|
case invslot::slotGeneral7:
|
||||||
|
return "General 7";
|
||||||
|
case invslot::slotGeneral8:
|
||||||
|
return "General 8";
|
||||||
|
case invslot::slotGeneral9:
|
||||||
|
return "General 9";
|
||||||
|
case invslot::slotGeneral10:
|
||||||
|
return "General 10";
|
||||||
|
case invslot::slotCursor:
|
||||||
|
return "Cursor";
|
||||||
|
default:
|
||||||
|
return "Unknown Slot";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* Larion::invslot::GetInvSlotName(int16 inv_type, int16 inv_slot)
|
||||||
|
{
|
||||||
|
if (inv_type == invtype::typePossessions)
|
||||||
|
return invslot::GetInvPossessionsSlotName(inv_slot);
|
||||||
|
|
||||||
|
int16 type_size = invtype::GetInvTypeSize(inv_type);
|
||||||
|
|
||||||
|
if (!type_size || inv_slot == invslot::SLOT_INVALID)
|
||||||
|
return "Invalid Slot";
|
||||||
|
|
||||||
|
if ((inv_slot + 1) >= type_size)
|
||||||
|
return "Unknown Slot";
|
||||||
|
|
||||||
|
static std::string ret_str;
|
||||||
|
ret_str = StringFormat("Slot %i", (inv_slot + 1));
|
||||||
|
|
||||||
|
return ret_str.c_str();
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* Larion::invbag::GetInvBagIndexName(int16 bag_index)
|
||||||
|
{
|
||||||
|
if (bag_index == invbag::SLOT_INVALID)
|
||||||
|
return "Invalid Bag";
|
||||||
|
|
||||||
|
if (bag_index >= invbag::SLOT_COUNT)
|
||||||
|
return "Unknown Bag";
|
||||||
|
|
||||||
|
static std::string ret_str;
|
||||||
|
ret_str = StringFormat("Bag %i", (bag_index + 1));
|
||||||
|
|
||||||
|
return ret_str.c_str();
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* Larion::invaug::GetInvAugIndexName(int16 aug_index)
|
||||||
|
{
|
||||||
|
if (aug_index == invaug::SOCKET_INVALID)
|
||||||
|
return "Invalid Augment";
|
||||||
|
|
||||||
|
if (aug_index >= invaug::SOCKET_COUNT)
|
||||||
|
return "Unknown Augment";
|
||||||
|
|
||||||
|
static std::string ret_str;
|
||||||
|
ret_str = StringFormat("Augment %i", (aug_index + 1));
|
||||||
|
|
||||||
|
return ret_str.c_str();
|
||||||
|
}
|
||||||
|
|||||||
@ -20,11 +20,309 @@
|
|||||||
#ifndef COMMON_LARION_LIMITS_H
|
#ifndef COMMON_LARION_LIMITS_H
|
||||||
#define COMMON_LARION_LIMITS_H
|
#define COMMON_LARION_LIMITS_H
|
||||||
|
|
||||||
|
#include "../types.h"
|
||||||
|
#include "../emu_versions.h"
|
||||||
|
#include "../skills.h"
|
||||||
|
|
||||||
namespace Larion
|
namespace Larion
|
||||||
{
|
{
|
||||||
|
const int16 IINVALID = -1;
|
||||||
|
const int16 INULL = 0;
|
||||||
|
|
||||||
// put constants here and #include appropriately
|
namespace inventory {
|
||||||
|
inline EQ::versions::ClientVersion GetInventoryRef() { return EQ::versions::ClientVersion::Larion; }
|
||||||
|
|
||||||
|
const bool ConcatenateInvTypeLimbo = false;
|
||||||
|
|
||||||
|
const bool AllowOverLevelEquipment = true;
|
||||||
|
|
||||||
|
const bool AllowEmptyBagInBag = true;
|
||||||
|
const bool AllowClickCastFromBag = true;
|
||||||
|
|
||||||
|
} /*inventory*/
|
||||||
|
|
||||||
|
namespace invtype {
|
||||||
|
inline EQ::versions::ClientVersion GetInvTypeRef() { return EQ::versions::ClientVersion::Larion; }
|
||||||
|
|
||||||
|
namespace enum_ {
|
||||||
|
enum InventoryTypes : int16 {
|
||||||
|
typePossessions = INULL,
|
||||||
|
typeBank,
|
||||||
|
typeSharedBank,
|
||||||
|
typeTrade,
|
||||||
|
typeWorld,
|
||||||
|
typeLimbo,
|
||||||
|
typeTribute,
|
||||||
|
typeTrophyTribute,
|
||||||
|
typeGuildTribute,
|
||||||
|
typeMerchant,
|
||||||
|
typeDeleted,
|
||||||
|
typeCorpse,
|
||||||
|
typeBazaar,
|
||||||
|
typeInspect,
|
||||||
|
typeRealEstate,
|
||||||
|
typeViewMODPC,
|
||||||
|
typeViewMODBank,
|
||||||
|
typeViewMODSharedBank,
|
||||||
|
typeViewMODLimbo,
|
||||||
|
typeAltStorage,
|
||||||
|
typeArchived,
|
||||||
|
typeMail,
|
||||||
|
typeGuildTrophyTribute,
|
||||||
|
typeKrono,
|
||||||
|
typeOther
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace enum_
|
||||||
|
using namespace enum_;
|
||||||
|
|
||||||
|
const int16 POSSESSIONS_SIZE = 34;
|
||||||
|
const int16 BANK_SIZE = 24;
|
||||||
|
const int16 SHARED_BANK_SIZE = 2;
|
||||||
|
const int16 TRADE_SIZE = 8;
|
||||||
|
const int16 WORLD_SIZE = 10;
|
||||||
|
const int16 LIMBO_SIZE = 36;
|
||||||
|
const int16 TRIBUTE_SIZE = 5;
|
||||||
|
const int16 TROPHY_TRIBUTE_SIZE = 0;//unknown
|
||||||
|
const int16 GUILD_TRIBUTE_SIZE = 2;//unverified
|
||||||
|
const int16 MERCHANT_SIZE = 200;
|
||||||
|
const int16 DELETED_SIZE = 0;//unknown - "Recovery Tab"
|
||||||
|
const int16 CORPSE_SIZE = POSSESSIONS_SIZE;
|
||||||
|
const int16 BAZAAR_SIZE = 200;
|
||||||
|
const int16 INSPECT_SIZE = 23;
|
||||||
|
const int16 REAL_ESTATE_SIZE = 0;//unknown
|
||||||
|
const int16 VIEW_MOD_PC_SIZE = POSSESSIONS_SIZE;
|
||||||
|
const int16 VIEW_MOD_BANK_SIZE = BANK_SIZE;
|
||||||
|
const int16 VIEW_MOD_SHARED_BANK_SIZE = SHARED_BANK_SIZE;
|
||||||
|
const int16 VIEW_MOD_LIMBO_SIZE = LIMBO_SIZE;
|
||||||
|
const int16 ALT_STORAGE_SIZE = 0;//unknown - "Shroud Bank"
|
||||||
|
const int16 ARCHIVED_SIZE = 0;//unknown
|
||||||
|
const int16 MAIL_SIZE = 0;//unknown
|
||||||
|
const int16 GUILD_TROPHY_TRIBUTE_SIZE = 0;//unknown
|
||||||
|
const int16 KRONO_SIZE = 0;//unknown
|
||||||
|
const int16 OTHER_SIZE = 0;//unknown
|
||||||
|
|
||||||
|
const int16 TRADE_NPC_SIZE = 4; // defined by implication
|
||||||
|
|
||||||
|
const int16 TYPE_INVALID = IINVALID;
|
||||||
|
const int16 TYPE_BEGIN = typePossessions;
|
||||||
|
const int16 TYPE_END = typeOther;
|
||||||
|
const int16 TYPE_COUNT = (TYPE_END - TYPE_BEGIN) + 1;
|
||||||
|
|
||||||
|
int16 GetInvTypeSize(int16 inv_type);
|
||||||
|
const char* GetInvTypeName(int16 inv_type);
|
||||||
|
|
||||||
|
bool IsInvTypePersistent(int16 inv_type);
|
||||||
|
|
||||||
|
} /*invtype*/
|
||||||
|
|
||||||
|
namespace invslot {
|
||||||
|
inline EQ::versions::ClientVersion GetInvSlotRef() { return EQ::versions::ClientVersion::Larion; }
|
||||||
|
|
||||||
|
namespace enum_ {
|
||||||
|
enum InventorySlots : int16 {
|
||||||
|
slotCharm = INULL,
|
||||||
|
slotEar1,
|
||||||
|
slotHead,
|
||||||
|
slotFace,
|
||||||
|
slotEar2,
|
||||||
|
slotNeck,
|
||||||
|
slotShoulders,
|
||||||
|
slotArms,
|
||||||
|
slotBack,
|
||||||
|
slotWrist1,
|
||||||
|
slotWrist2,
|
||||||
|
slotRange,
|
||||||
|
slotHands,
|
||||||
|
slotPrimary,
|
||||||
|
slotSecondary,
|
||||||
|
slotFinger1,
|
||||||
|
slotFinger2,
|
||||||
|
slotChest,
|
||||||
|
slotLegs,
|
||||||
|
slotFeet,
|
||||||
|
slotWaist,
|
||||||
|
slotPowerSource,
|
||||||
|
slotAmmo,
|
||||||
|
slotGeneral1,
|
||||||
|
slotGeneral2,
|
||||||
|
slotGeneral3,
|
||||||
|
slotGeneral4,
|
||||||
|
slotGeneral5,
|
||||||
|
slotGeneral6,
|
||||||
|
slotGeneral7,
|
||||||
|
slotGeneral8,
|
||||||
|
slotGeneral9,
|
||||||
|
slotGeneral10,
|
||||||
|
slotCursor
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr int16 format_as(InventorySlots slot) { return static_cast<int16>(slot); }
|
||||||
|
} // namespace enum_
|
||||||
|
using namespace enum_;
|
||||||
|
|
||||||
|
const int16 SLOT_INVALID = IINVALID;
|
||||||
|
const int16 SLOT_BEGIN = INULL;
|
||||||
|
|
||||||
|
const int16 POSSESSIONS_BEGIN = slotCharm;
|
||||||
|
const int16 POSSESSIONS_END = slotCursor;
|
||||||
|
const int16 POSSESSIONS_COUNT = (POSSESSIONS_END - POSSESSIONS_BEGIN) + 1;
|
||||||
|
|
||||||
|
const int16 EQUIPMENT_BEGIN = slotCharm;
|
||||||
|
const int16 EQUIPMENT_END = slotAmmo;
|
||||||
|
const int16 EQUIPMENT_COUNT = (EQUIPMENT_END - EQUIPMENT_BEGIN) + 1;
|
||||||
|
|
||||||
|
const int16 GENERAL_BEGIN = slotGeneral1;
|
||||||
|
const int16 GENERAL_END = slotGeneral10;
|
||||||
|
const int16 GENERAL_COUNT = (GENERAL_END - GENERAL_BEGIN) + 1;
|
||||||
|
|
||||||
|
const int16 BONUS_BEGIN = invslot::slotCharm;
|
||||||
|
const int16 BONUS_STAT_END = invslot::slotPowerSource;
|
||||||
|
const int16 BONUS_SKILL_END = invslot::slotAmmo;
|
||||||
|
|
||||||
|
const int16 CORPSE_BEGIN = invslot::slotGeneral1;
|
||||||
|
const int16 CORPSE_END = invslot::slotGeneral1 + invslot::slotCursor;
|
||||||
|
|
||||||
|
const uint64 EQUIPMENT_BITMASK = 0x00000000007FFFFF;
|
||||||
|
const uint64 GENERAL_BITMASK = 0x00000001FF800000;
|
||||||
|
const uint64 CURSOR_BITMASK = 0x0000000200000000;
|
||||||
|
const uint64 POSSESSIONS_BITMASK = (EQUIPMENT_BITMASK | GENERAL_BITMASK | CURSOR_BITMASK); // based on 34-slot count (RoF+)
|
||||||
|
const uint64 CORPSE_BITMASK = (GENERAL_BITMASK | CURSOR_BITMASK | (EQUIPMENT_BITMASK << 34)); // based on 34-slot count (RoF+)
|
||||||
|
|
||||||
|
|
||||||
|
const char* GetInvPossessionsSlotName(int16 inv_slot);
|
||||||
|
const char* GetInvSlotName(int16 inv_type, int16 inv_slot);
|
||||||
|
|
||||||
|
} /*invslot*/
|
||||||
|
|
||||||
|
namespace invbag {
|
||||||
|
inline EQ::versions::ClientVersion GetInvBagRef() { return EQ::versions::ClientVersion::Larion; }
|
||||||
|
|
||||||
|
const int16 SLOT_INVALID = IINVALID;
|
||||||
|
const int16 SLOT_BEGIN = INULL;
|
||||||
|
const int16 SLOT_END = 9; //254;
|
||||||
|
const int16 SLOT_COUNT = 10; //255; // server Size will be 255..unsure what actual client is (test)
|
||||||
|
|
||||||
|
const char* GetInvBagIndexName(int16 bag_index);
|
||||||
|
|
||||||
|
} /*invbag*/
|
||||||
|
|
||||||
|
namespace invaug {
|
||||||
|
inline EQ::versions::ClientVersion GetInvAugRef() { return EQ::versions::ClientVersion::Larion; }
|
||||||
|
|
||||||
|
const int16 SOCKET_INVALID = IINVALID;
|
||||||
|
const int16 SOCKET_BEGIN = INULL;
|
||||||
|
const int16 SOCKET_END = 5;
|
||||||
|
const int16 SOCKET_COUNT = 6;
|
||||||
|
|
||||||
|
const char* GetInvAugIndexName(int16 aug_index);
|
||||||
|
|
||||||
|
} /*invaug*/
|
||||||
|
|
||||||
|
namespace item {
|
||||||
|
inline EQ::versions::ClientVersion GetItemRef() { return EQ::versions::ClientVersion::Larion; }
|
||||||
|
|
||||||
|
//enum Unknown : int { // looks like item class..but, RoF has it too - nothing in UF-
|
||||||
|
// Unknown1 = 0,
|
||||||
|
// Unknown2 = 1,
|
||||||
|
// Unknown3 = 2,
|
||||||
|
// Unknown4 = 5 // krono?
|
||||||
|
//};
|
||||||
|
|
||||||
|
enum ItemPacketType : int {
|
||||||
|
ItemPacketMerchant = 100,
|
||||||
|
ItemPacketTradeView = 101,
|
||||||
|
ItemPacketLoot = 102,
|
||||||
|
ItemPacketTrade = 103,
|
||||||
|
ItemPacketCharInventory = 105,
|
||||||
|
ItemPacketLimbo = 106,
|
||||||
|
ItemPacketWorldContainer = 107,
|
||||||
|
ItemPacketTributeItem = 108,
|
||||||
|
ItemPacketGuildTribute = 109,
|
||||||
|
ItemPacket10 = 110,
|
||||||
|
ItemPacket11 = 111,
|
||||||
|
ItemPacket12 = 112,
|
||||||
|
ItemPacketRecovery = 113,
|
||||||
|
ItemPacket14 = 115 // Parcel? adds to merchant window too
|
||||||
|
};
|
||||||
|
|
||||||
|
} /*item*/
|
||||||
|
|
||||||
|
namespace profile {
|
||||||
|
inline EQ::versions::ClientVersion GetProfileRef() { return EQ::versions::ClientVersion::Larion; }
|
||||||
|
|
||||||
|
const int16 BANDOLIERS_SIZE = 20; // number of bandolier instances
|
||||||
|
const int16 BANDOLIER_ITEM_COUNT = 4; // number of equipment slots in bandolier instance
|
||||||
|
|
||||||
|
const int16 POTION_BELT_SIZE = 5;
|
||||||
|
|
||||||
|
const int16 SKILL_ARRAY_SIZE = 100;
|
||||||
|
|
||||||
|
} /*profile*/
|
||||||
|
|
||||||
|
namespace constants {
|
||||||
|
inline EQ::versions::ClientVersion GetConstantsRef() { return EQ::versions::ClientVersion::Larion; }
|
||||||
|
|
||||||
|
const EQ::expansions::Expansion EXPANSION = EQ::expansions::Expansion::RoF;
|
||||||
|
const uint32 EXPANSION_BIT = EQ::expansions::bitRoF;
|
||||||
|
const uint32 EXPANSIONS_MASK = EQ::expansions::maskRoF;
|
||||||
|
|
||||||
|
const size_t CHARACTER_CREATION_LIMIT = 12;
|
||||||
|
|
||||||
|
const size_t SAY_LINK_BODY_SIZE = 56;
|
||||||
|
const uint32 MAX_GUILD_ID = 50000;
|
||||||
|
|
||||||
|
} /*constants*/
|
||||||
|
|
||||||
|
namespace behavior {
|
||||||
|
inline EQ::versions::ClientVersion GetBehaviorRef() { return EQ::versions::ClientVersion::Larion; }
|
||||||
|
|
||||||
|
const bool CoinHasWeight = false;
|
||||||
|
|
||||||
|
} /*behavior*/
|
||||||
|
|
||||||
|
namespace skills {
|
||||||
|
inline EQ::versions::ClientVersion GetSkillsRef() { return EQ::versions::ClientVersion::Larion; }
|
||||||
|
|
||||||
|
const size_t LastUsableSkill = EQ::skills::Skill2HPiercing;
|
||||||
|
|
||||||
|
} /*skills*/
|
||||||
|
|
||||||
|
namespace spells {
|
||||||
|
inline EQ::versions::ClientVersion GetSkillsRef() { return EQ::versions::ClientVersion::Larion; }
|
||||||
|
|
||||||
|
enum class CastingSlot : uint32 {
|
||||||
|
Gem1 = 0,
|
||||||
|
Gem2 = 1,
|
||||||
|
Gem3 = 2,
|
||||||
|
Gem4 = 3,
|
||||||
|
Gem5 = 4,
|
||||||
|
Gem6 = 5,
|
||||||
|
Gem7 = 6,
|
||||||
|
Gem8 = 7,
|
||||||
|
Gem9 = 8,
|
||||||
|
Gem10 = 9,
|
||||||
|
Gem11 = 10,
|
||||||
|
Gem12 = 11,
|
||||||
|
MaxGems = 16, // fallacy..only 12 slot are useable...
|
||||||
|
Item = 12,
|
||||||
|
Discipline = 13,
|
||||||
|
AltAbility = 0xFF
|
||||||
|
};
|
||||||
|
|
||||||
|
const int SPELL_ID_MAX = 45000;
|
||||||
|
const int SPELLBOOK_SIZE = 720;
|
||||||
|
const int SPELL_GEM_COUNT = static_cast<uint32>(CastingSlot::MaxGems);
|
||||||
|
|
||||||
|
const int LONG_BUFFS = 42;
|
||||||
|
const int SHORT_BUFFS = 20;
|
||||||
|
const int DISC_BUFFS = 1;
|
||||||
|
const int TOTAL_BUFFS = LONG_BUFFS + SHORT_BUFFS + DISC_BUFFS;
|
||||||
|
const int NPC_BUFFS = 97;
|
||||||
|
const int PET_BUFFS = NPC_BUFFS;
|
||||||
|
const int MERC_BUFFS = LONG_BUFFS;
|
||||||
|
|
||||||
|
} /*spells*/
|
||||||
|
|
||||||
}; /* Larion */
|
}; /* Larion */
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
E(OP_LogServer)
|
E(OP_LogServer)
|
||||||
E(OP_SendMembership)
|
E(OP_SendMembership)
|
||||||
E(OP_SendMembershipDetails)
|
E(OP_SendMembershipDetails)
|
||||||
|
E(OP_SendMaxCharacters)
|
||||||
|
|
||||||
#undef E
|
#undef E
|
||||||
#undef D
|
#undef D
|
||||||
|
|||||||
@ -37,9 +37,9 @@ namespace Larion {
|
|||||||
|
|
||||||
struct Membership_Setting_Struct
|
struct Membership_Setting_Struct
|
||||||
{
|
{
|
||||||
/*000*/ uint8 setting_index; // 0, 1, 2 or 3
|
/*000*/ uint8 setting_index; // 0, 1, 2 or 3: f2p, silver, gold, platinum?
|
||||||
/*001*/ uint32 setting_id; // 0 to 23
|
/*001*/ uint32 setting_id; // 0 to 23 actually seen but the OP_Membership packet has up to 32
|
||||||
/*005*/ int32 setting_value; // All can be 0, 1, or -1
|
/*005*/ int32 setting_value;
|
||||||
/*009*/
|
/*009*/
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -55,6 +55,24 @@ namespace Larion {
|
|||||||
/*480*/ //char exit_url[42]; // Upgrade to Silver or Gold Membership URL
|
/*480*/ //char exit_url[42]; // Upgrade to Silver or Gold Membership URL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct MaxCharacters_Struct {
|
||||||
|
/*000*/ uint32 max_chars;
|
||||||
|
/*004*/ uint32 marketplace_chars;
|
||||||
|
/*008*/ int32 unknown008; //some of these probably deal with heroic characters or something
|
||||||
|
/*00c*/ int32 unknown00c;
|
||||||
|
/*010*/ int32 unknown010;
|
||||||
|
/*014*/ int32 unknown014;
|
||||||
|
/*018*/ int32 unknown018;
|
||||||
|
/*01c*/ int32 unknown01c;
|
||||||
|
/*020*/ int32 unknown020;
|
||||||
|
/*024*/ int32 unknown024;
|
||||||
|
/*028*/ int32 unknown028;
|
||||||
|
/*02c*/ int32 unknown02c;
|
||||||
|
/*030*/ int32 unknown030;
|
||||||
|
/*034*/ int32 unknown034;
|
||||||
|
/*038*/
|
||||||
|
};
|
||||||
|
|
||||||
}; //end namespace structs
|
}; //end namespace structs
|
||||||
}; //end namespace larion
|
}; //end namespace larion
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user