fix: Fixes expansion flags for animations (#1009)
This commit is contained in:
parent
d1a3c9b0c7
commit
8f1240d25e
4 changed files with 29 additions and 80 deletions
|
|
@ -4,7 +4,6 @@
|
||||||
"ClientVersion": null,
|
"ClientVersion": null,
|
||||||
"ClientFlags": null,
|
"ClientFlags": null,
|
||||||
"FeatureFlags": {
|
"FeatureFlags": {
|
||||||
"None": true,
|
|
||||||
"T2A": false,
|
"T2A": false,
|
||||||
"UOR": false,
|
"UOR": false,
|
||||||
"UOTD": false,
|
"UOTD": false,
|
||||||
|
|
@ -31,7 +30,6 @@
|
||||||
"EJ": false
|
"EJ": false
|
||||||
},
|
},
|
||||||
"CharacterListFlags": {
|
"CharacterListFlags": {
|
||||||
"None": true,
|
|
||||||
"Unk1": false,
|
"Unk1": false,
|
||||||
"OverwriteConfigButton": false,
|
"OverwriteConfigButton": false,
|
||||||
"OneCharacterSlot": false,
|
"OneCharacterSlot": false,
|
||||||
|
|
@ -50,7 +48,6 @@
|
||||||
"NewFeluccaAreas": false
|
"NewFeluccaAreas": false
|
||||||
},
|
},
|
||||||
"HousingFlags": {
|
"HousingFlags": {
|
||||||
"None": true,
|
|
||||||
"AOS": false,
|
"AOS": false,
|
||||||
"SE": false,
|
"SE": false,
|
||||||
"ML": false,
|
"ML": false,
|
||||||
|
|
@ -70,7 +67,6 @@
|
||||||
"ClientVersion": null,
|
"ClientVersion": null,
|
||||||
"ClientFlags": "Felucca",
|
"ClientFlags": "Felucca",
|
||||||
"FeatureFlags": {
|
"FeatureFlags": {
|
||||||
"None": false,
|
|
||||||
"T2A": true,
|
"T2A": true,
|
||||||
"UOR": false,
|
"UOR": false,
|
||||||
"UOTD": false,
|
"UOTD": false,
|
||||||
|
|
@ -97,7 +93,6 @@
|
||||||
"EJ": false
|
"EJ": false
|
||||||
},
|
},
|
||||||
"CharacterListFlags": {
|
"CharacterListFlags": {
|
||||||
"None": false,
|
|
||||||
"Unk1": false,
|
"Unk1": false,
|
||||||
"OverwriteConfigButton": false,
|
"OverwriteConfigButton": false,
|
||||||
"OneCharacterSlot": false,
|
"OneCharacterSlot": false,
|
||||||
|
|
@ -116,7 +111,6 @@
|
||||||
"NewFeluccaAreas": false
|
"NewFeluccaAreas": false
|
||||||
},
|
},
|
||||||
"HousingFlags": {
|
"HousingFlags": {
|
||||||
"None": true,
|
|
||||||
"AOS": false,
|
"AOS": false,
|
||||||
"SE": false,
|
"SE": false,
|
||||||
"ML": false,
|
"ML": false,
|
||||||
|
|
@ -136,7 +130,6 @@
|
||||||
"ClientVersion": null,
|
"ClientVersion": null,
|
||||||
"ClientFlags": "Trammel",
|
"ClientFlags": "Trammel",
|
||||||
"FeatureFlags": {
|
"FeatureFlags": {
|
||||||
"None": false,
|
|
||||||
"T2A": true,
|
"T2A": true,
|
||||||
"UOR": true,
|
"UOR": true,
|
||||||
"UOTD": false,
|
"UOTD": false,
|
||||||
|
|
@ -163,7 +156,6 @@
|
||||||
"EJ": false
|
"EJ": false
|
||||||
},
|
},
|
||||||
"CharacterListFlags": {
|
"CharacterListFlags": {
|
||||||
"None": false,
|
|
||||||
"Unk1": false,
|
"Unk1": false,
|
||||||
"OverwriteConfigButton": false,
|
"OverwriteConfigButton": false,
|
||||||
"OneCharacterSlot": false,
|
"OneCharacterSlot": false,
|
||||||
|
|
@ -182,7 +174,6 @@
|
||||||
"NewFeluccaAreas": false
|
"NewFeluccaAreas": false
|
||||||
},
|
},
|
||||||
"HousingFlags": {
|
"HousingFlags": {
|
||||||
"None": true,
|
|
||||||
"AOS": false,
|
"AOS": false,
|
||||||
"SE": false,
|
"SE": false,
|
||||||
"ML": false,
|
"ML": false,
|
||||||
|
|
@ -202,7 +193,6 @@
|
||||||
"ClientVersion": null,
|
"ClientVersion": null,
|
||||||
"ClientFlags": "Ilshenar",
|
"ClientFlags": "Ilshenar",
|
||||||
"FeatureFlags": {
|
"FeatureFlags": {
|
||||||
"None": false,
|
|
||||||
"T2A": true,
|
"T2A": true,
|
||||||
"UOR": true,
|
"UOR": true,
|
||||||
"UOTD": true,
|
"UOTD": true,
|
||||||
|
|
@ -229,7 +219,6 @@
|
||||||
"EJ": false
|
"EJ": false
|
||||||
},
|
},
|
||||||
"CharacterListFlags": {
|
"CharacterListFlags": {
|
||||||
"None": false,
|
|
||||||
"Unk1": false,
|
"Unk1": false,
|
||||||
"OverwriteConfigButton": false,
|
"OverwriteConfigButton": false,
|
||||||
"OneCharacterSlot": false,
|
"OneCharacterSlot": false,
|
||||||
|
|
@ -248,7 +237,6 @@
|
||||||
"NewFeluccaAreas": false
|
"NewFeluccaAreas": false
|
||||||
},
|
},
|
||||||
"HousingFlags": {
|
"HousingFlags": {
|
||||||
"None": true,
|
|
||||||
"AOS": false,
|
"AOS": false,
|
||||||
"SE": false,
|
"SE": false,
|
||||||
"ML": false,
|
"ML": false,
|
||||||
|
|
@ -268,7 +256,6 @@
|
||||||
"ClientVersion": null,
|
"ClientVersion": null,
|
||||||
"ClientFlags": "Ilshenar",
|
"ClientFlags": "Ilshenar",
|
||||||
"FeatureFlags": {
|
"FeatureFlags": {
|
||||||
"None": false,
|
|
||||||
"T2A": true,
|
"T2A": true,
|
||||||
"UOR": true,
|
"UOR": true,
|
||||||
"UOTD": true,
|
"UOTD": true,
|
||||||
|
|
@ -295,7 +282,6 @@
|
||||||
"EJ": false
|
"EJ": false
|
||||||
},
|
},
|
||||||
"CharacterListFlags": {
|
"CharacterListFlags": {
|
||||||
"None": false,
|
|
||||||
"Unk1": false,
|
"Unk1": false,
|
||||||
"OverwriteConfigButton": false,
|
"OverwriteConfigButton": false,
|
||||||
"OneCharacterSlot": false,
|
"OneCharacterSlot": false,
|
||||||
|
|
@ -314,7 +300,6 @@
|
||||||
"NewFeluccaAreas": false
|
"NewFeluccaAreas": false
|
||||||
},
|
},
|
||||||
"HousingFlags": {
|
"HousingFlags": {
|
||||||
"None": true,
|
|
||||||
"AOS": false,
|
"AOS": false,
|
||||||
"SE": false,
|
"SE": false,
|
||||||
"ML": false,
|
"ML": false,
|
||||||
|
|
@ -334,9 +319,8 @@
|
||||||
"ClientVersion": null,
|
"ClientVersion": null,
|
||||||
"ClientFlags": "Malas",
|
"ClientFlags": "Malas",
|
||||||
"FeatureFlags": {
|
"FeatureFlags": {
|
||||||
"None": false,
|
"T2A": true,
|
||||||
"T2A": false,
|
"UOR": true,
|
||||||
"UOR": false,
|
|
||||||
"UOTD": false,
|
"UOTD": false,
|
||||||
"LBR": true,
|
"LBR": true,
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
|
|
@ -361,7 +345,6 @@
|
||||||
"EJ": false
|
"EJ": false
|
||||||
},
|
},
|
||||||
"CharacterListFlags": {
|
"CharacterListFlags": {
|
||||||
"None": false,
|
|
||||||
"Unk1": false,
|
"Unk1": false,
|
||||||
"OverwriteConfigButton": false,
|
"OverwriteConfigButton": false,
|
||||||
"OneCharacterSlot": false,
|
"OneCharacterSlot": false,
|
||||||
|
|
@ -380,7 +363,6 @@
|
||||||
"NewFeluccaAreas": false
|
"NewFeluccaAreas": false
|
||||||
},
|
},
|
||||||
"HousingFlags": {
|
"HousingFlags": {
|
||||||
"None": false,
|
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
"SE": false,
|
"SE": false,
|
||||||
"ML": false,
|
"ML": false,
|
||||||
|
|
@ -400,9 +382,8 @@
|
||||||
"ClientVersion": null,
|
"ClientVersion": null,
|
||||||
"ClientFlags": "Tokuno",
|
"ClientFlags": "Tokuno",
|
||||||
"FeatureFlags": {
|
"FeatureFlags": {
|
||||||
"None": false,
|
"T2A": true,
|
||||||
"T2A": false,
|
"UOR": true,
|
||||||
"UOR": false,
|
|
||||||
"UOTD": false,
|
"UOTD": false,
|
||||||
"LBR": true,
|
"LBR": true,
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
|
|
@ -427,7 +408,6 @@
|
||||||
"EJ": false
|
"EJ": false
|
||||||
},
|
},
|
||||||
"CharacterListFlags": {
|
"CharacterListFlags": {
|
||||||
"None": false,
|
|
||||||
"Unk1": false,
|
"Unk1": false,
|
||||||
"OverwriteConfigButton": false,
|
"OverwriteConfigButton": false,
|
||||||
"OneCharacterSlot": false,
|
"OneCharacterSlot": false,
|
||||||
|
|
@ -446,7 +426,6 @@
|
||||||
"NewFeluccaAreas": false
|
"NewFeluccaAreas": false
|
||||||
},
|
},
|
||||||
"HousingFlags": {
|
"HousingFlags": {
|
||||||
"None": false,
|
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
"SE": true,
|
"SE": true,
|
||||||
"ML": false,
|
"ML": false,
|
||||||
|
|
@ -466,9 +445,8 @@
|
||||||
"ClientVersion": "5.0.0a",
|
"ClientVersion": "5.0.0a",
|
||||||
"ClientFlags": null,
|
"ClientFlags": null,
|
||||||
"FeatureFlags": {
|
"FeatureFlags": {
|
||||||
"None": false,
|
"T2A": true,
|
||||||
"T2A": false,
|
"UOR": true,
|
||||||
"UOR": false,
|
|
||||||
"UOTD": false,
|
"UOTD": false,
|
||||||
"LBR": true,
|
"LBR": true,
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
|
|
@ -493,7 +471,6 @@
|
||||||
"EJ": false
|
"EJ": false
|
||||||
},
|
},
|
||||||
"CharacterListFlags": {
|
"CharacterListFlags": {
|
||||||
"None": false,
|
|
||||||
"Unk1": false,
|
"Unk1": false,
|
||||||
"OverwriteConfigButton": false,
|
"OverwriteConfigButton": false,
|
||||||
"OneCharacterSlot": false,
|
"OneCharacterSlot": false,
|
||||||
|
|
@ -512,7 +489,6 @@
|
||||||
"NewFeluccaAreas": false
|
"NewFeluccaAreas": false
|
||||||
},
|
},
|
||||||
"HousingFlags": {
|
"HousingFlags": {
|
||||||
"None": false,
|
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
"SE": true,
|
"SE": true,
|
||||||
"ML": true,
|
"ML": true,
|
||||||
|
|
@ -532,9 +508,8 @@
|
||||||
"ClientVersion": null,
|
"ClientVersion": null,
|
||||||
"ClientFlags": "TerMur",
|
"ClientFlags": "TerMur",
|
||||||
"FeatureFlags": {
|
"FeatureFlags": {
|
||||||
"None": false,
|
"T2A": true,
|
||||||
"T2A": false,
|
"UOR": true,
|
||||||
"UOR": false,
|
|
||||||
"UOTD": false,
|
"UOTD": false,
|
||||||
"LBR": true,
|
"LBR": true,
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
|
|
@ -559,7 +534,6 @@
|
||||||
"EJ": false
|
"EJ": false
|
||||||
},
|
},
|
||||||
"CharacterListFlags": {
|
"CharacterListFlags": {
|
||||||
"None": false,
|
|
||||||
"Unk1": false,
|
"Unk1": false,
|
||||||
"OverwriteConfigButton": false,
|
"OverwriteConfigButton": false,
|
||||||
"OneCharacterSlot": false,
|
"OneCharacterSlot": false,
|
||||||
|
|
@ -578,7 +552,6 @@
|
||||||
"NewFeluccaAreas": false
|
"NewFeluccaAreas": false
|
||||||
},
|
},
|
||||||
"HousingFlags": {
|
"HousingFlags": {
|
||||||
"None": false,
|
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
"SE": true,
|
"SE": true,
|
||||||
"ML": true,
|
"ML": true,
|
||||||
|
|
@ -598,9 +571,8 @@
|
||||||
"ClientVersion": "7.0.9.0",
|
"ClientVersion": "7.0.9.0",
|
||||||
"ClientFlags": null,
|
"ClientFlags": null,
|
||||||
"FeatureFlags": {
|
"FeatureFlags": {
|
||||||
"None": false,
|
"T2A": true,
|
||||||
"T2A": false,
|
"UOR": true,
|
||||||
"UOR": false,
|
|
||||||
"UOTD": false,
|
"UOTD": false,
|
||||||
"LBR": true,
|
"LBR": true,
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
|
|
@ -625,7 +597,6 @@
|
||||||
"EJ": false
|
"EJ": false
|
||||||
},
|
},
|
||||||
"CharacterListFlags": {
|
"CharacterListFlags": {
|
||||||
"None": false,
|
|
||||||
"Unk1": false,
|
"Unk1": false,
|
||||||
"OverwriteConfigButton": false,
|
"OverwriteConfigButton": false,
|
||||||
"OneCharacterSlot": false,
|
"OneCharacterSlot": false,
|
||||||
|
|
@ -644,7 +615,6 @@
|
||||||
"NewFeluccaAreas": false
|
"NewFeluccaAreas": false
|
||||||
},
|
},
|
||||||
"HousingFlags": {
|
"HousingFlags": {
|
||||||
"None": false,
|
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
"SE": true,
|
"SE": true,
|
||||||
"ML": true,
|
"ML": true,
|
||||||
|
|
@ -664,9 +634,8 @@
|
||||||
"ClientVersion": "7.0.45.65",
|
"ClientVersion": "7.0.45.65",
|
||||||
"ClientFlags": null,
|
"ClientFlags": null,
|
||||||
"FeatureFlags": {
|
"FeatureFlags": {
|
||||||
"None": false,
|
"T2A": true,
|
||||||
"T2A": false,
|
"UOR": true,
|
||||||
"UOR": false,
|
|
||||||
"UOTD": false,
|
"UOTD": false,
|
||||||
"LBR": true,
|
"LBR": true,
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
|
|
@ -691,7 +660,6 @@
|
||||||
"EJ": false
|
"EJ": false
|
||||||
},
|
},
|
||||||
"CharacterListFlags": {
|
"CharacterListFlags": {
|
||||||
"None": false,
|
|
||||||
"Unk1": false,
|
"Unk1": false,
|
||||||
"OverwriteConfigButton": false,
|
"OverwriteConfigButton": false,
|
||||||
"OneCharacterSlot": false,
|
"OneCharacterSlot": false,
|
||||||
|
|
@ -710,7 +678,6 @@
|
||||||
"NewFeluccaAreas": false
|
"NewFeluccaAreas": false
|
||||||
},
|
},
|
||||||
"HousingFlags": {
|
"HousingFlags": {
|
||||||
"None": false,
|
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
"SE": true,
|
"SE": true,
|
||||||
"ML": true,
|
"ML": true,
|
||||||
|
|
@ -730,9 +697,8 @@
|
||||||
"ClientVersion": "7.0.61.0",
|
"ClientVersion": "7.0.61.0",
|
||||||
"ClientFlags": null,
|
"ClientFlags": null,
|
||||||
"FeatureFlags": {
|
"FeatureFlags": {
|
||||||
"None": false,
|
"T2A": true,
|
||||||
"T2A": false,
|
"UOR": true,
|
||||||
"UOR": false,
|
|
||||||
"UOTD": false,
|
"UOTD": false,
|
||||||
"LBR": true,
|
"LBR": true,
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
|
|
@ -757,7 +723,6 @@
|
||||||
"EJ": true
|
"EJ": true
|
||||||
},
|
},
|
||||||
"CharacterListFlags": {
|
"CharacterListFlags": {
|
||||||
"None": false,
|
|
||||||
"Unk1": false,
|
"Unk1": false,
|
||||||
"OverwriteConfigButton": false,
|
"OverwriteConfigButton": false,
|
||||||
"OneCharacterSlot": false,
|
"OneCharacterSlot": false,
|
||||||
|
|
@ -776,7 +741,6 @@
|
||||||
"NewFeluccaAreas": false
|
"NewFeluccaAreas": false
|
||||||
},
|
},
|
||||||
"HousingFlags": {
|
"HousingFlags": {
|
||||||
"None": false,
|
|
||||||
"AOS": true,
|
"AOS": true,
|
||||||
"SE": true,
|
"SE": true,
|
||||||
"ML": true,
|
"ML": true,
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,6 @@ namespace Server
|
||||||
ExpansionUOR = ExpansionT2A | UOR,
|
ExpansionUOR = ExpansionT2A | UOR,
|
||||||
ExpansionUOTD = ExpansionUOR | UOTD,
|
ExpansionUOTD = ExpansionUOR | UOTD,
|
||||||
ExpansionLBR = ExpansionUOTD | LBR,
|
ExpansionLBR = ExpansionUOTD | LBR,
|
||||||
// In later clients, the AOS+ expansions include the Publish 16 LBR flag, but not the previous expansions.
|
|
||||||
ExpansionAOS = LBR | AOS | LiveAccount,
|
ExpansionAOS = LBR | AOS | LiveAccount,
|
||||||
ExpansionSE = ExpansionAOS | SE,
|
ExpansionSE = ExpansionAOS | SE,
|
||||||
ExpansionML = ExpansionSE | ML | NinthAge,
|
ExpansionML = ExpansionSE | ML | NinthAge,
|
||||||
|
|
@ -159,6 +158,12 @@ namespace Server
|
||||||
|
|
||||||
public class ExpansionInfo
|
public class ExpansionInfo
|
||||||
{
|
{
|
||||||
|
public static bool ForceOldAnimations { get; private set; }
|
||||||
|
public static void Configure()
|
||||||
|
{
|
||||||
|
ForceOldAnimations = ServerConfiguration.GetSetting("expansion.forceOldAnimations", false);
|
||||||
|
}
|
||||||
|
|
||||||
public static string GetEraFolder(string parentDirectory)
|
public static string GetEraFolder(string parentDirectory)
|
||||||
{
|
{
|
||||||
var expansion = Core.Expansion;
|
var expansion = Core.Expansion;
|
||||||
|
|
@ -265,32 +270,6 @@ namespace Server
|
||||||
public ClientVersion RequiredClient { get; set; }
|
public ClientVersion RequiredClient { get; set; }
|
||||||
public HousingFlags CustomHousingFlag { get; set; }
|
public HousingFlags CustomHousingFlag { get; set; }
|
||||||
|
|
||||||
public static FeatureFlags GetFeatures(Expansion ex)
|
|
||||||
{
|
|
||||||
var info = GetInfo(ex);
|
|
||||||
|
|
||||||
if (info != null)
|
|
||||||
{
|
|
||||||
return info.SupportedFeatures;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ex switch
|
|
||||||
{
|
|
||||||
Expansion.T2A => FeatureFlags.ExpansionT2A,
|
|
||||||
Expansion.UOR => FeatureFlags.ExpansionUOR,
|
|
||||||
Expansion.UOTD => FeatureFlags.ExpansionUOTD,
|
|
||||||
Expansion.LBR => FeatureFlags.ExpansionLBR,
|
|
||||||
Expansion.AOS => FeatureFlags.ExpansionAOS,
|
|
||||||
Expansion.SE => FeatureFlags.ExpansionSE,
|
|
||||||
Expansion.ML => FeatureFlags.ExpansionML,
|
|
||||||
Expansion.SA => FeatureFlags.ExpansionSA,
|
|
||||||
Expansion.HS => FeatureFlags.ExpansionHS,
|
|
||||||
Expansion.TOL => FeatureFlags.ExpansionTOL,
|
|
||||||
Expansion.EJ => FeatureFlags.EJ,
|
|
||||||
_ => FeatureFlags.ExpansionNone
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ExpansionInfo GetInfo(Expansion ex) => GetInfo((int)ex);
|
public static ExpansionInfo GetInfo(Expansion ex) => GetInfo((int)ex);
|
||||||
|
|
||||||
public static ExpansionInfo GetInfo(int ex)
|
public static ExpansionInfo GetInfo(int ex)
|
||||||
|
|
|
||||||
|
|
@ -100,16 +100,17 @@ namespace Server.Json
|
||||||
{
|
{
|
||||||
writer.WriteStartObject();
|
writer.WriteStartObject();
|
||||||
var underlyingType = Enum.GetUnderlyingType(typeof(T));
|
var underlyingType = Enum.GetUnderlyingType(typeof(T));
|
||||||
var size = GetUnderlyingTypeLength(Type.GetTypeCode(underlyingType)) - 1;
|
|
||||||
var intValue = ConvertToUInt64(underlyingType, value);
|
var intValue = ConvertToUInt64(underlyingType, value);
|
||||||
|
|
||||||
foreach (var flagName in Enum.GetNames(typeof(T)))
|
foreach (var flagName in Enum.GetNames(typeof(T)))
|
||||||
{
|
{
|
||||||
var flagValue = Enum.Parse<T>(flagName, false);
|
var flagValue = Enum.Parse<T>(flagName, false);
|
||||||
var flag = ConvertToUInt64(underlyingType, flagValue);
|
var flag = ConvertToUInt64(underlyingType, flagValue);
|
||||||
if (flag == 0 || (flag & size) == 0)
|
|
||||||
|
// Do not write out multi-bit values. This is a custom behavior
|
||||||
|
if (flag > 0 && (flag & (flag - 1)) == 0)
|
||||||
{
|
{
|
||||||
writer.WriteBoolean(flagName, (intValue & flag) != 0);
|
writer.WriteBoolean(flagName, (intValue & flag) == flag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -160,6 +160,11 @@ public static class OutgoingAccountPackets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ExpansionInfo.ForceOldAnimations)
|
||||||
|
{
|
||||||
|
flags &= ~FeatureFlags.LBR;
|
||||||
|
}
|
||||||
|
|
||||||
var length = ns.ExtendedSupportedFeatures ? 5 : 3;
|
var length = ns.ExtendedSupportedFeatures ? 5 : 3;
|
||||||
var writer = new SpanWriter(stackalloc byte[length]);
|
var writer = new SpanWriter(stackalloc byte[length]);
|
||||||
writer.Write((byte)0xB9); // Packet ID
|
writer.Write((byte)0xB9); // Packet ID
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue