From 910e06767bf246fc0cbd23c92f1cfaa4e87e6bab Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Sun, 30 Oct 2022 16:53:23 -0700 Subject: [PATCH] fix: Optimizes TextDefinition to eliminate allocations. Removes TextDefinition ctor. (#1221) ### BREAKING CHANGE ### The constructor for `TextDefinition` has been removed. Instead use `TextDefinition.Of()` or cast the integer/string to TextDefinition. --- .../Tests/Text/TextDefinitionTests.cs | 30 ++ Projects/Server/Geometry/Point2D.cs | 12 +- .../Converters/TextDefinitionConverter.cs | 4 +- .../TextDefinitionConverterFactory.cs | 0 .../Server/Serialization/IGenericReader.cs | 6 +- Projects/Server/Text/TextDefinition.cs | 68 ++++- .../Engines/Craft/Core/CraftSystem.cs | 2 +- .../UOContent/Engines/Craft/Core/Recipes.cs | 2 +- .../UOContent/Engines/Craft/DefAlchemy.cs | 2 +- .../UOContent/Engines/Craft/DefBlacksmithy.cs | 2 +- .../Engines/Craft/DefBowFletching.cs | 2 +- .../UOContent/Engines/Craft/DefCarpentry.cs | 2 +- .../UOContent/Engines/Craft/DefCartography.cs | 2 +- .../UOContent/Engines/Craft/DefCooking.cs | 2 +- .../Engines/Craft/DefGlassblowing.cs | 2 +- .../UOContent/Engines/Craft/DefInscription.cs | 2 +- .../UOContent/Engines/Craft/DefMasonry.cs | 2 +- .../UOContent/Engines/Craft/DefTailoring.cs | 2 +- .../UOContent/Engines/Craft/DefTinkering.cs | 2 +- .../Engines/Factions/Core/MerchantTitles.cs | 36 +-- .../Factions/Definitions/VendorDefinition.cs | 20 +- .../Instances/Factions/CouncilOfMages.cs | 257 +++++++++--------- .../Factions/Instances/Factions/Minax.cs | 211 +++++++------- .../Instances/Factions/Shadowlords.cs | 211 +++++++------- .../Instances/Factions/TrueBritannians.cs | 221 ++++++++------- .../Factions/Instances/Towns/Britain.cs | 41 ++- .../Factions/Instances/Towns/Magincia.cs | 41 ++- .../Engines/Factions/Instances/Towns/Minoc.cs | 41 ++- .../Factions/Instances/Towns/Moonglow.cs | 41 ++- .../Factions/Instances/Towns/SkaraBrae.cs | 41 ++- .../Factions/Instances/Towns/Trinsic.cs | 41 ++- .../Factions/Instances/Towns/Vesper.cs | 41 ++- .../Engines/Factions/Instances/Towns/Yew.cs | 41 ++- .../ML Quests/Definitions/HonestBeggar.cs | 13 +- .../UOContent/Engines/ML Quests/MLQuest.cs | 15 +- .../Engines/ML Quests/Rewards/DummyReward.cs | 3 +- .../Engines/ML Quests/Rewards/ItemReward.cs | 3 +- .../New Guild System/GuildRosterGump.cs | 8 +- .../UOContent/Items/Misc/PromotionalToken.cs | 6 +- Projects/UOContent/Spells/Base/SpecialMove.cs | 2 +- .../Spells/Bushido/HonorableExecution.cs | 4 +- .../Spells/Bushido/LightningStrike.cs | 2 +- .../Spells/Bushido/MomentumStrike.cs | 4 +- .../UOContent/Spells/Ninjitsu/Backstab.cs | 4 +- .../UOContent/Spells/Ninjitsu/DeathStrike.cs | 4 +- .../UOContent/Spells/Ninjitsu/FocusAttack.cs | 4 +- .../UOContent/Spells/Ninjitsu/KiAttack.cs | 4 +- .../Spells/Ninjitsu/SurpriseAttack.cs | 2 +- .../Spells/Spellweaving/Items/ArcaneFocus.cs | 2 +- .../Spellweaving/Items/TransientItem.cs | 2 +- 50 files changed, 790 insertions(+), 722 deletions(-) create mode 100644 Projects/Server.Tests/Tests/Text/TextDefinitionTests.cs rename Projects/{UOContent => Server}/Json/Converters/TextDefinitionConverter.cs (92%) rename Projects/{UOContent => Server}/Json/Converters/TextDefinitionConverterFactory.cs (100%) diff --git a/Projects/Server.Tests/Tests/Text/TextDefinitionTests.cs b/Projects/Server.Tests/Tests/Text/TextDefinitionTests.cs new file mode 100644 index 000000000..3ce35e350 --- /dev/null +++ b/Projects/Server.Tests/Tests/Text/TextDefinitionTests.cs @@ -0,0 +1,30 @@ +using System; +using Xunit; + +namespace Server.Tests; + +public class TextDefinitionTests +{ + [Theory] + [InlineData(10345, "", "#10345")] + [InlineData(0, "Hello", "Hello")] + [InlineData(10345, "Hello", "#10345")] + public void TestTextDefinitionToString(int a1, string a2, string expected) + { + Assert.Equal(expected, TextDefinition.Of(a1, a2).ToString()); + } + + [Theory] + [InlineData(10345, "", 10345, "", true)] + [InlineData(10345, "", 0, "Hello", false)] + [InlineData(0, "Hello", 0, "Hello", true)] + [InlineData(0, "Hello", 0, "hello", false)] + [InlineData(10345, "Hello", 10345, "Goodbye", true)] + [InlineData(10345, "Hello", 10510, "Hello", false)] + public void TestTextDefinitionIsEqual(int a1, string a2, int b1, string b2, bool isEqual) + { + var a = TextDefinition.Of(a1, a2); + var b = TextDefinition.Of(b1, b2); + Assert.Equal(isEqual, a.Equals(b)); + } +} diff --git a/Projects/Server/Geometry/Point2D.cs b/Projects/Server/Geometry/Point2D.cs index b0c407853..f37e640b8 100644 --- a/Projects/Server/Geometry/Point2D.cs +++ b/Projects/Server/Geometry/Point2D.cs @@ -112,17 +112,16 @@ public struct Point2D } public bool TryFormat(Span destination, out int charsWritten, ReadOnlySpan format, IFormatProvider provider) - { - return destination.TryWrite(provider, $"({m_X}, {m_Y})", out charsWritten); - } + => destination.TryWrite(provider, $"({m_X}, {m_Y})", out charsWritten); public override string ToString() { // Maximum number of characters that are needed to represent this: // 4 characters for (, ) // Up to 11 characters to represent each integer - Span span = stackalloc char[4+11*2]; - this.TryFormat(span, out var charsWritten, null, null); - return span.Slice(0, charsWritten).ToString(); + const int maxLength = 4 + 11 * 2; + Span span = stackalloc char[maxLength]; + TryFormat(span, out var charsWritten, null, null); + return span[..charsWritten].ToString(); } public string ToString(string format, IFormatProvider formatProvider) @@ -131,5 +130,4 @@ public struct Point2D // default ToString implementation. return ToString(); } - } diff --git a/Projects/UOContent/Json/Converters/TextDefinitionConverter.cs b/Projects/Server/Json/Converters/TextDefinitionConverter.cs similarity index 92% rename from Projects/UOContent/Json/Converters/TextDefinitionConverter.cs rename to Projects/Server/Json/Converters/TextDefinitionConverter.cs index 2a7f95989..1b5f1b1fb 100644 --- a/Projects/UOContent/Json/Converters/TextDefinitionConverter.cs +++ b/Projects/Server/Json/Converters/TextDefinitionConverter.cs @@ -24,8 +24,8 @@ namespace Server.Json public override TextDefinition Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => reader.TokenType switch { - JsonTokenType.String => new TextDefinition(reader.GetString()), - JsonTokenType.Number => new TextDefinition(reader.GetInt32()), + JsonTokenType.String => TextDefinition.Of(reader.GetString()), + JsonTokenType.Number => TextDefinition.Of(reader.GetInt32()), _ => throw new JsonException("TextDefinition value must be an integer or string") }; diff --git a/Projects/UOContent/Json/Converters/TextDefinitionConverterFactory.cs b/Projects/Server/Json/Converters/TextDefinitionConverterFactory.cs similarity index 100% rename from Projects/UOContent/Json/Converters/TextDefinitionConverterFactory.cs rename to Projects/Server/Json/Converters/TextDefinitionConverterFactory.cs diff --git a/Projects/Server/Serialization/IGenericReader.cs b/Projects/Server/Serialization/IGenericReader.cs index 0f5fb6eec..3c4fe4ce5 100644 --- a/Projects/Server/Serialization/IGenericReader.cs +++ b/Projects/Server/Serialization/IGenericReader.cs @@ -124,9 +124,9 @@ public interface IGenericReader { return ReadEncodedInt() switch { - 0 => new TextDefinition(), - 1 => new TextDefinition(ReadEncodedInt()), - 2 => new TextDefinition(ReadString()), + 0 => TextDefinition.Empty, + 1 => ReadEncodedInt(), + 2 => ReadString(), _ => null }; } diff --git a/Projects/Server/Text/TextDefinition.cs b/Projects/Server/Text/TextDefinition.cs index bfb2f4f08..47fee2544 100644 --- a/Projects/Server/Text/TextDefinition.cs +++ b/Projects/Server/Text/TextDefinition.cs @@ -13,17 +13,31 @@ * along with this program. If not, see . * *************************************************************************/ +using System; +using System.Runtime.CompilerServices; + namespace Server; [Parsable] [PropertyObject] -public class TextDefinition +public class TextDefinition : IEquatable, IEquatable { - public TextDefinition(string text) : this(0, text) + public static readonly TextDefinition Empty = new(); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TextDefinition Of(int number) => Of(number, null); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TextDefinition Of(string text) => Of(0, text); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TextDefinition Of(int number, string text) => new(number, text); + + private TextDefinition() { } - public TextDefinition(int number = 0, string text = null) + private TextDefinition(int number, string text) { Number = number; String = text; @@ -45,9 +59,9 @@ public class TextDefinition public string GetValue() => Number > 0 ? Number.ToString() : String ?? ""; - public static implicit operator TextDefinition(int v) => new(v); + public static implicit operator TextDefinition(int v) => Of(v); - public static implicit operator TextDefinition(string s) => new(s); + public static implicit operator TextDefinition(string s) => Of(s); public static implicit operator int(TextDefinition m) => m?.Number ?? 0; @@ -60,6 +74,48 @@ public class TextDefinition return null; } - return Utility.ToInt32(value, out var i) ? new TextDefinition(i) : new TextDefinition(value); + return Utility.ToInt32(value, out var i) ? Of(i) : Of(value); } + + public void Deconstruct(out int number, out string s) + { + if (Number > 0) + { + number = Number; + s = null; + } + else + { + number = 0; + s = String; + } + } + + public override bool Equals(object obj) => Equals(obj as TextDefinition); + + public bool Equals(TextDefinition other) + { + if (ReferenceEquals(null, other)) + { + return false; + } + + if (ReferenceEquals(this, other)) + { + return true; + } + + if (Number > 0 || other.Number > 0) + { + return Number == other.Number; + } + + return String == other.String; + } + + public override int GetHashCode() => Number > 0 ? HashCode.Combine(Number) : HashCode.Combine(String); + + public static bool operator ==(TextDefinition left, TextDefinition right) => Equals(left, right); + + public static bool operator !=(TextDefinition left, TextDefinition right) => !Equals(left, right); } diff --git a/Projects/UOContent/Engines/Craft/Core/CraftSystem.cs b/Projects/UOContent/Engines/Craft/Core/CraftSystem.cs index 58124baa9..a83179e27 100644 --- a/Projects/UOContent/Engines/Craft/Core/CraftSystem.cs +++ b/Projects/UOContent/Engines/Craft/Core/CraftSystem.cs @@ -50,7 +50,7 @@ namespace Server.Engines.Craft public abstract SkillName MainSkill { get; } - public virtual TextDefinition GumpTitle => 0; + public virtual TextDefinition GumpTitle => TextDefinition.Empty; public virtual CraftECA ECA => CraftECA.ChanceMinusSixty; diff --git a/Projects/UOContent/Engines/Craft/Core/Recipes.cs b/Projects/UOContent/Engines/Craft/Core/Recipes.cs index 7af458ef0..f2d8e4466 100644 --- a/Projects/UOContent/Engines/Craft/Core/Recipes.cs +++ b/Projects/UOContent/Engines/Craft/Core/Recipes.cs @@ -33,7 +33,7 @@ public class Recipe public int ID { get; } - public TextDefinition TextDefinition => _td ??= new TextDefinition(CraftItem.NameNumber, CraftItem.NameString); + public TextDefinition TextDefinition => _td ??= TextDefinition.Of(CraftItem.NameNumber, CraftItem.NameString); public static void Initialize() { diff --git a/Projects/UOContent/Engines/Craft/DefAlchemy.cs b/Projects/UOContent/Engines/Craft/DefAlchemy.cs index bf0d27ad0..f2cbd5a35 100644 --- a/Projects/UOContent/Engines/Craft/DefAlchemy.cs +++ b/Projects/UOContent/Engines/Craft/DefAlchemy.cs @@ -18,7 +18,7 @@ public class DefAlchemy : CraftSystem public override SkillName MainSkill => SkillName.Alchemy; - public override TextDefinition GumpTitle => 1044001; + public override TextDefinition GumpTitle { get; } = 1044001; public static CraftSystem CraftSystem { get; private set; } diff --git a/Projects/UOContent/Engines/Craft/DefBlacksmithy.cs b/Projects/UOContent/Engines/Craft/DefBlacksmithy.cs index ecab48d0d..b553a5f56 100644 --- a/Projects/UOContent/Engines/Craft/DefBlacksmithy.cs +++ b/Projects/UOContent/Engines/Craft/DefBlacksmithy.cs @@ -19,7 +19,7 @@ public class DefBlacksmithy : CraftSystem public override SkillName MainSkill => SkillName.Blacksmith; - public override TextDefinition GumpTitle => 1044002; + public override TextDefinition GumpTitle { get; } = 1044002; public static CraftSystem CraftSystem { get; private set; } diff --git a/Projects/UOContent/Engines/Craft/DefBowFletching.cs b/Projects/UOContent/Engines/Craft/DefBowFletching.cs index 4d71341ce..eb6e04166 100644 --- a/Projects/UOContent/Engines/Craft/DefBowFletching.cs +++ b/Projects/UOContent/Engines/Craft/DefBowFletching.cs @@ -16,7 +16,7 @@ public class DefBowFletching : CraftSystem public override SkillName MainSkill => SkillName.Fletching; - public override TextDefinition GumpTitle => 1044006; + public override TextDefinition GumpTitle { get; } = 1044006; public static CraftSystem CraftSystem { get; private set; } diff --git a/Projects/UOContent/Engines/Craft/DefCarpentry.cs b/Projects/UOContent/Engines/Craft/DefCarpentry.cs index fcae26682..1f7773d22 100644 --- a/Projects/UOContent/Engines/Craft/DefCarpentry.cs +++ b/Projects/UOContent/Engines/Craft/DefCarpentry.cs @@ -16,7 +16,7 @@ public class DefCarpentry : CraftSystem public override SkillName MainSkill => SkillName.Carpentry; - public override TextDefinition GumpTitle => 1044004; + public override TextDefinition GumpTitle { get; } = 1044004; public static CraftSystem CraftSystem { get; private set; } diff --git a/Projects/UOContent/Engines/Craft/DefCartography.cs b/Projects/UOContent/Engines/Craft/DefCartography.cs index 305429956..6b020e491 100644 --- a/Projects/UOContent/Engines/Craft/DefCartography.cs +++ b/Projects/UOContent/Engines/Craft/DefCartography.cs @@ -16,7 +16,7 @@ public class DefCartography : CraftSystem public override SkillName MainSkill => SkillName.Cartography; - public override TextDefinition GumpTitle => 1044008; + public override TextDefinition GumpTitle { get; } = 1044008; public static CraftSystem CraftSystem { get; private set; } diff --git a/Projects/UOContent/Engines/Craft/DefCooking.cs b/Projects/UOContent/Engines/Craft/DefCooking.cs index 9f995bbed..5ecd53e74 100644 --- a/Projects/UOContent/Engines/Craft/DefCooking.cs +++ b/Projects/UOContent/Engines/Craft/DefCooking.cs @@ -16,7 +16,7 @@ public class DefCooking : CraftSystem public override SkillName MainSkill => SkillName.Cooking; - public override TextDefinition GumpTitle => 1044003; + public override TextDefinition GumpTitle { get; } = 1044003; public static CraftSystem CraftSystem { get; private set; } diff --git a/Projects/UOContent/Engines/Craft/DefGlassblowing.cs b/Projects/UOContent/Engines/Craft/DefGlassblowing.cs index c41ddb229..644700e13 100644 --- a/Projects/UOContent/Engines/Craft/DefGlassblowing.cs +++ b/Projects/UOContent/Engines/Craft/DefGlassblowing.cs @@ -17,7 +17,7 @@ public class DefGlassblowing : CraftSystem public override SkillName MainSkill => SkillName.Alchemy; - public override TextDefinition GumpTitle => 1044622; + public override TextDefinition GumpTitle { get; } = 1044622; public static CraftSystem CraftSystem { get; private set; } diff --git a/Projects/UOContent/Engines/Craft/DefInscription.cs b/Projects/UOContent/Engines/Craft/DefInscription.cs index 873035744..3d4b5528f 100644 --- a/Projects/UOContent/Engines/Craft/DefInscription.cs +++ b/Projects/UOContent/Engines/Craft/DefInscription.cs @@ -36,7 +36,7 @@ public class DefInscription : CraftSystem public override SkillName MainSkill => SkillName.Inscribe; - public override TextDefinition GumpTitle => 1044009; + public override TextDefinition GumpTitle { get; } = 1044009; public static CraftSystem CraftSystem { get; private set; } diff --git a/Projects/UOContent/Engines/Craft/DefMasonry.cs b/Projects/UOContent/Engines/Craft/DefMasonry.cs index b0dbf78b3..3d7ed550c 100644 --- a/Projects/UOContent/Engines/Craft/DefMasonry.cs +++ b/Projects/UOContent/Engines/Craft/DefMasonry.cs @@ -17,7 +17,7 @@ public class DefMasonry : CraftSystem public override SkillName MainSkill => SkillName.Carpentry; - public override TextDefinition GumpTitle => 1044500; + public override TextDefinition GumpTitle { get; } = 1044500; public static CraftSystem CraftSystem { get; private set; } diff --git a/Projects/UOContent/Engines/Craft/DefTailoring.cs b/Projects/UOContent/Engines/Craft/DefTailoring.cs index da4e4377c..3aedde3fb 100644 --- a/Projects/UOContent/Engines/Craft/DefTailoring.cs +++ b/Projects/UOContent/Engines/Craft/DefTailoring.cs @@ -24,7 +24,7 @@ public class DefTailoring : CraftSystem public override SkillName MainSkill => SkillName.Tailoring; - public override TextDefinition GumpTitle => 1044005; // Tailoring Menu + public override TextDefinition GumpTitle { get; } = 1044005; // Tailoring Menu public static CraftSystem CraftSystem { get; private set; } diff --git a/Projects/UOContent/Engines/Craft/DefTinkering.cs b/Projects/UOContent/Engines/Craft/DefTinkering.cs index 6f594cb6f..009a9e34e 100644 --- a/Projects/UOContent/Engines/Craft/DefTinkering.cs +++ b/Projects/UOContent/Engines/Craft/DefTinkering.cs @@ -32,7 +32,7 @@ public class DefTinkering : CraftSystem public override SkillName MainSkill => SkillName.Tinkering; - public override TextDefinition GumpTitle => 1044007; + public override TextDefinition GumpTitle { get; } = 1044007; public static CraftSystem CraftSystem { get; private set; } diff --git a/Projects/UOContent/Engines/Factions/Core/MerchantTitles.cs b/Projects/UOContent/Engines/Factions/Core/MerchantTitles.cs index d2e384837..3b05756b8 100644 --- a/Projects/UOContent/Engines/Factions/Core/MerchantTitles.cs +++ b/Projects/UOContent/Engines/Factions/Core/MerchantTitles.cs @@ -42,44 +42,44 @@ namespace Server.Factions new( SkillName.Inscribe, 90.0, - new TextDefinition(1060773, "Scribe"), - new TextDefinition(1011468, "SCRIBE"), - new TextDefinition(1010121, "You now have the faction title of scribe") + 1060773, // Scribe + 1011468, // SCRIBE + 1010121 // You now have the faction title of scribe ), new( SkillName.Carpentry, 90.0, - new TextDefinition(1060774, "Carpenter"), - new TextDefinition(1011469, "CARPENTER"), - new TextDefinition(1010122, "You now have the faction title of carpenter") + 1060774, // Carpenter + 1011469, // CARPENTER + 1010122 // You now have the faction title of carpenter ), new( SkillName.Tinkering, 90.0, - new TextDefinition(1022984, "Tinker"), - new TextDefinition(1011470, "TINKER"), - new TextDefinition(1010123, "You now have the faction title of tinker") + 1022984, // Tinker + 1011470, // TINKER + 1010123 // You now have the faction title of tinker ), new( SkillName.Blacksmith, 90.0, - new TextDefinition(1023016, "Blacksmith"), - new TextDefinition(1011471, "BLACKSMITH"), - new TextDefinition(1010124, "You now have the faction title of blacksmith") + 1023016, // Blacksmith + 1011471, // BLACKSMITH + 1010124 // You now have the faction title of blacksmith ), new( SkillName.Fletching, 90.0, - new TextDefinition(1023022, "Bowyer"), - new TextDefinition(1011472, "BOWYER"), - new TextDefinition(1010125, "You now have the faction title of Bowyer") + 1023022, // Bowyer + 1011472, // BOWYER + 1010125 // You now have the faction title of Bowyer ), new( SkillName.Tailoring, 90.0, - new TextDefinition(1022982, "Tailor"), - new TextDefinition(1018300, "TAILOR"), - new TextDefinition(1042162, "You now have the faction title of Tailor") + 1022982, // Tailor + 1018300, // TAILOR + 1042162 // You now have the faction title of Tailor ) }; diff --git a/Projects/UOContent/Engines/Factions/Definitions/VendorDefinition.cs b/Projects/UOContent/Engines/Factions/Definitions/VendorDefinition.cs index c08131371..5318fe223 100644 --- a/Projects/UOContent/Engines/Factions/Definitions/VendorDefinition.cs +++ b/Projects/UOContent/Engines/Factions/Definitions/VendorDefinition.cs @@ -42,8 +42,8 @@ namespace Server.Factions 5000, 1000, 10, - new TextDefinition(1011549, "POTION BOTTLE VENDOR"), - new TextDefinition(1011544, "Buy Potion Bottle Vendor") + 1011549, // POTION BOTTLE VENDOR + 1011544 // Buy Potion Bottle Vendor ), new( typeof(FactionBoardVendor), @@ -51,8 +51,8 @@ namespace Server.Factions 3000, 500, 10, - new TextDefinition(1011552, "WOOD VENDOR"), - new TextDefinition(1011545, "Buy Wooden Board Vendor") + 1011552, // WOOD VENDOR + 1011545 // Buy Wooden Board Vendor ), new( typeof(FactionOreVendor), @@ -60,8 +60,8 @@ namespace Server.Factions 3000, 500, 10, - new TextDefinition(1011553, "IRON ORE VENDOR"), - new TextDefinition(1011546, "Buy Iron Ore Vendor") + 1011553, // IRON ORE VENDOR + 1011546 // Buy Iron Ore Vendor ), new( typeof(FactionReagentVendor), @@ -69,8 +69,8 @@ namespace Server.Factions 5000, 1000, 10, - new TextDefinition(1011554, "REAGENT VENDOR"), - new TextDefinition(1011547, "Buy Reagent Vendor") + 1011554, // REAGENT VENDOR + 1011547 // Buy Reagent Vendor ), new( typeof(FactionHorseVendor), @@ -78,8 +78,8 @@ namespace Server.Factions 5000, 1000, 1, - new TextDefinition(1011556, "HORSE BREEDER"), - new TextDefinition(1011555, "Buy Horse Breeder") + 1011556, // HORSE BREEDER + 1011555 // Buy Horse Breeder ) }; } diff --git a/Projects/UOContent/Engines/Factions/Instances/Factions/CouncilOfMages.cs b/Projects/UOContent/Engines/Factions/Instances/Factions/CouncilOfMages.cs index ddcc418b4..c10a70afd 100644 --- a/Projects/UOContent/Engines/Factions/Instances/Factions/CouncilOfMages.cs +++ b/Projects/UOContent/Engines/Factions/Instances/Factions/CouncilOfMages.cs @@ -1,140 +1,139 @@ -namespace Server.Factions +namespace Server.Factions; + +public class CouncilOfMages : Faction { - public class CouncilOfMages : Faction + public CouncilOfMages() { - public CouncilOfMages() - { - Instance = this; + Instance = this; - Definition = - new FactionDefinition( - 1, - 1325, // blue - 1310, // bluish white - 1325, // join stone : blue - 1325, // broadcast : blue - 0x77, - 0x3EB1, // war horse - "Council of Mages", - "council", - "CoM", - new TextDefinition(1011535, "COUNCIL OF MAGES"), - new TextDefinition(1060770, "Council of Mages faction"), - new TextDefinition(1011422, "
COUNCIL OF MAGES
"), - new TextDefinition( - 1011449, - "The council of Mages have their roots in the city of Moonglow, where " + - "they once convened. They began as a small movement, dedicated to " + - "calling forth the Stranger, who saved the lands once before. A " + - "series of war and murders and misbegotten trials by those loyal to " + - "Lord British has caused the group to take up the banner of war." - ), - new TextDefinition(1011455, "This city is controlled by the Council of Mages."), - new TextDefinition(1042253, "This sigil has been corrupted by the Council of Mages"), - new TextDefinition(1041044, "The faction signup stone for the Council of Mages"), - new TextDefinition(1041382, "The Faction Stone of the Council of Mages"), - new TextDefinition(1011464, ": Council of Mages"), - new TextDefinition(1005187, "Members of the Council of Mages will now be ignored."), - new TextDefinition(1005188, "Members of the Council of Mages will now be warned to leave."), - new TextDefinition(1005189, "Members of the Council of Mages will now be beaten with a stick."), - // Moonglow - new StrongholdDefinition( - new[] - { - new Rectangle2D(4463, 1487, 15, 35), - new Rectangle2D(4450, 1522, 35, 48) - }, - new Point3D(4469, 1486, 0), - new Point3D(4457, 1544, 0), - new[] - { - new Point3D(4464, 1534, 21), - new Point3D(4470, 1536, 21), - new Point3D(4468, 1534, 21), - new Point3D(4470, 1534, 21), - new Point3D(4468, 1536, 21), - new Point3D(4466, 1534, 21), - new Point3D(4466, 1536, 21), - new Point3D(4464, 1536, 21) - } - ), - // Magincia - /* new StrongholdDefinition( - new Rectangle2D[] - { - new Rectangle2D( 3756, 2232, 4, 23 ), - new Rectangle2D( 3760, 2227, 60, 28 ), - new Rectangle2D( 3782, 2219, 18, 8 ), - new Rectangle2D( 3778, 2255, 35, 17 ) - }, - new Point3D( 3750, 2241, 20 ), - new Point3D( 3795, 2259, 20 ), - new Point3D[] - { - new Point3D( 3793, 2255, 20 ), - new Point3D( 3793, 2252, 20 ), - new Point3D( 3793, 2249, 20 ), - new Point3D( 3793, 2246, 20 ), - new Point3D( 3797, 2255, 20 ), - new Point3D( 3797, 2252, 20 ), - new Point3D( 3797, 2249, 20 ), - new Point3D( 3797, 2246, 20 ) - } ), */ + Definition = + new FactionDefinition( + 1, + 1325, // blue + 1310, // bluish white + 1325, // join stone : blue + 1325, // broadcast : blue + 0x77, + 0x3EB1, // war horse + "Council of Mages", + "council", + "CoM", + 1011535, // COUNCIL OF MAGES + 1060770, // Council of Mages faction + 1011422, //
COUNCIL OF MAGES
+ /* + * The council of Mages have their roots in the city of Moonglow, where + * they once convened. They began as a small movement, dedicated to + * calling forth the Stranger, who saved the lands once before. A + * series of war and murders and misbegotten trials by those loyal to + * Lord British has caused the group to take up the banner of war. + */ + 1011449, + 1011455, // This city is controlled by the Council of Mages. + 1042253, // This sigil has been corrupted by the Council of Mages + 1041044, // The faction signup stone for the Council of Mages + 1041382, // The Faction Stone of the Council of Mages + 1011464, // : Council of Mages + 1005187, // Members of the Council of Mages will now be ignored. + 1005188, // Members of the Council of Mages will now be warned to leave. + 1005189, // Members of the Council of Mages will now be beaten with a stick. + // Moonglow + new StrongholdDefinition( new[] { - new RankDefinition(10, 991, 8, new TextDefinition(1060789, "Inquisitor of the Council")), - new RankDefinition(9, 950, 7, new TextDefinition(1060788, "Archon of Principle")), - new RankDefinition(8, 900, 6, new TextDefinition(1060787, "Luminary")), - new RankDefinition(7, 800, 6, new TextDefinition(1060787, "Luminary")), - new RankDefinition(6, 700, 5, new TextDefinition(1060786, "Diviner")), - new RankDefinition(5, 600, 5, new TextDefinition(1060786, "Diviner")), - new RankDefinition(4, 500, 5, new TextDefinition(1060786, "Diviner")), - new RankDefinition(3, 400, 4, new TextDefinition(1060785, "Mystic")), - new RankDefinition(2, 200, 4, new TextDefinition(1060785, "Mystic")), - new RankDefinition(1, 0, 4, new TextDefinition(1060785, "Mystic")) + new Rectangle2D(4463, 1487, 15, 35), + new Rectangle2D(4450, 1522, 35, 48) }, + new Point3D(4469, 1486, 0), + new Point3D(4457, 1544, 0), new[] { - new GuardDefinition( - typeof(FactionHenchman), - 0x1403, - 5000, - 1000, - 10, - new TextDefinition(1011526, "HENCHMAN"), - new TextDefinition(1011510, "Hire Henchman") - ), - new GuardDefinition( - typeof(FactionMercenary), - 0x0F62, - 6000, - 2000, - 10, - new TextDefinition(1011527, "MERCENARY"), - new TextDefinition(1011511, "Hire Mercenary") - ), - new GuardDefinition( - typeof(FactionSorceress), - 0x0E89, - 7000, - 3000, - 10, - new TextDefinition(1011507, "SORCERESS"), - new TextDefinition(1011501, "Hire Sorceress") - ), - new GuardDefinition( - typeof(FactionWizard), - 0x13F8, - 8000, - 4000, - 10, - new TextDefinition(1011508, "ELDER WIZARD"), - new TextDefinition(1011502, "Hire Elder Wizard") - ) + new Point3D(4464, 1534, 21), + new Point3D(4470, 1536, 21), + new Point3D(4468, 1534, 21), + new Point3D(4470, 1534, 21), + new Point3D(4468, 1536, 21), + new Point3D(4466, 1534, 21), + new Point3D(4466, 1536, 21), + new Point3D(4464, 1536, 21) } - ); - } - - public static Faction Instance { get; private set; } + ), + // Magincia + /* new StrongholdDefinition( + new Rectangle2D[] + { + new Rectangle2D( 3756, 2232, 4, 23 ), + new Rectangle2D( 3760, 2227, 60, 28 ), + new Rectangle2D( 3782, 2219, 18, 8 ), + new Rectangle2D( 3778, 2255, 35, 17 ) + }, + new Point3D( 3750, 2241, 20 ), + new Point3D( 3795, 2259, 20 ), + new Point3D[] + { + new Point3D( 3793, 2255, 20 ), + new Point3D( 3793, 2252, 20 ), + new Point3D( 3793, 2249, 20 ), + new Point3D( 3793, 2246, 20 ), + new Point3D( 3797, 2255, 20 ), + new Point3D( 3797, 2252, 20 ), + new Point3D( 3797, 2249, 20 ), + new Point3D( 3797, 2246, 20 ) + } ), */ + new[] + { + new RankDefinition(10, 991, 8, 1060789), // Inquisitor of the Council + new RankDefinition(9, 950, 7, 1060788), // Archon of Principle + new RankDefinition(8, 900, 6, 1060787), // Luminary + new RankDefinition(7, 800, 6, 1060787), // Luminary + new RankDefinition(6, 700, 5, 1060786), // Diviner + new RankDefinition(5, 600, 5, 1060786), // Diviner + new RankDefinition(4, 500, 5, 1060786), // Diviner + new RankDefinition(3, 400, 4, 1060785), // Mystic + new RankDefinition(2, 200, 4, 1060785), // Mystic + new RankDefinition(1, 0, 4, 1060785) // Mystic + }, + new[] + { + new GuardDefinition( + typeof(FactionHenchman), + 0x1403, + 5000, + 1000, + 10, + 1011526, // HENCHMAN + 1011510 // Hire Henchman + ), + new GuardDefinition( + typeof(FactionMercenary), + 0x0F62, + 6000, + 2000, + 10, + 1011527, // MERCENARY + 1011511 // Hire Mercenary + ), + new GuardDefinition( + typeof(FactionSorceress), + 0x0E89, + 7000, + 3000, + 10, + 1011507, // SORCERESS + 1011501 // Hire Sorceress + ), + new GuardDefinition( + typeof(FactionWizard), + 0x13F8, + 8000, + 4000, + 10, + 1011508, // ELDER WIZARD + 1011502 // Hire Elder Wizard + ) + } + ); } + + public static Faction Instance { get; private set; } } diff --git a/Projects/UOContent/Engines/Factions/Instances/Factions/Minax.cs b/Projects/UOContent/Engines/Factions/Instances/Factions/Minax.cs index b4807d84f..55321911b 100644 --- a/Projects/UOContent/Engines/Factions/Instances/Factions/Minax.cs +++ b/Projects/UOContent/Engines/Factions/Instances/Factions/Minax.cs @@ -1,117 +1,116 @@ -namespace Server.Factions +namespace Server.Factions; + +public class Minax : Faction { - public class Minax : Faction + public Minax() { - public Minax() - { - Instance = this; + Instance = this; - Definition = - new FactionDefinition( - 0, - 1645, // dark red - 1109, // shadow - 1645, // join stone : dark red - 1645, // broadcast : dark red - 0x78, - 0x3EAF, // war horse - "Minax", - "minax", - "Min", - new TextDefinition(1011534, "MINAX"), - new TextDefinition(1060769, "Minax faction"), - new TextDefinition(1011421, "
FOLLOWERS OF MINAX
"), - new TextDefinition( - 1011448, - "The followers of Minax have taken control in the old lands, " + - "and intend to hold it for as long as they can. Allying themselves " + - "with orcs, headless, gazers, trolls, and other beasts, they seek " + - "revenge against Lord British, for slights both real and imagined, " + - "though some of the followers wish only to wreak havoc on the " + - "unsuspecting populace." - ), - new TextDefinition(1011453, "This city is controlled by Minax."), - new TextDefinition(1042252, "This sigil has been corrupted by the Followers of Minax"), - new TextDefinition(1041043, "The faction signup stone for the Followers of Minax"), - new TextDefinition(1041381, "The Faction Stone of Minax"), - new TextDefinition(1011463, ": Minax"), - new TextDefinition(1005190, "Followers of Minax will now be ignored."), - new TextDefinition(1005191, "Followers of Minax will now be told to go away."), - new TextDefinition(1005192, "Followers of Minax will now be hanged by their toes."), - new StrongholdDefinition( - new[] - { - new Rectangle2D(1097, 2570, 70, 50) - }, - new Point3D(1172, 2593, 0), - new Point3D(1117, 2587, 18), - new[] - { - new Point3D(1113, 2601, 18), - new Point3D(1113, 2598, 18), - new Point3D(1113, 2595, 18), - new Point3D(1113, 2592, 18), - new Point3D(1116, 2601, 18), - new Point3D(1116, 2598, 18), - new Point3D(1116, 2595, 18), - new Point3D(1116, 2592, 18) - } - ), + Definition = + new FactionDefinition( + 0, + 1645, // dark red + 1109, // shadow + 1645, // join stone : dark red + 1645, // broadcast : dark red + 0x78, + 0x3EAF, // war horse + "Minax", + "minax", + "Min", + 1011534, // MINAX + 1060769, // Minax faction + 1011421, //
FOLLOWERS OF MINAX
+ /* + * The followers of Minax have taken control in the old lands, + * and intend to hold it for as long as they can. Allying themselves + * with orcs, headless, gazers, trolls, and other beasts, they seek + * revenge against Lord British, for slights both real and imagined, + * though some of the followers wish only to wreak havoc on the + * unsuspecting populace." + */ + 1011448, + 1011453, // This city is controlled by Minax. + 1042252, // This sigil has been corrupted by the Followers of Minax + 1041043, // The faction signup stone for the Followers of Minax + 1041381, // The Faction Stone of Minax + 1011463, // : Minax + 1005190, // Followers of Minax will now be ignored. + 1005191, // Followers of Minax will now be told to go away. + 1005192, // Followers of Minax will now be hanged by their toes. + new StrongholdDefinition( new[] { - new RankDefinition(10, 991, 8, new TextDefinition(1060784, "Avenger of Mondain")), - new RankDefinition(9, 950, 7, new TextDefinition(1060783, "Dread Knight")), - new RankDefinition(8, 900, 6, new TextDefinition(1060782, "Warlord")), - new RankDefinition(7, 800, 6, new TextDefinition(1060782, "Warlord")), - new RankDefinition(6, 700, 5, new TextDefinition(1060781, "Executioner")), - new RankDefinition(5, 600, 5, new TextDefinition(1060781, "Executioner")), - new RankDefinition(4, 500, 5, new TextDefinition(1060781, "Executioner")), - new RankDefinition(3, 400, 4, new TextDefinition(1060780, "Defiler")), - new RankDefinition(2, 200, 4, new TextDefinition(1060780, "Defiler")), - new RankDefinition(1, 0, 4, new TextDefinition(1060780, "Defiler")) + new Rectangle2D(1097, 2570, 70, 50) }, + new Point3D(1172, 2593, 0), + new Point3D(1117, 2587, 18), new[] { - new GuardDefinition( - typeof(FactionHenchman), - 0x1403, - 5000, - 1000, - 10, - new TextDefinition(1011526, "HENCHMAN"), - new TextDefinition(1011510, "Hire Henchman") - ), - new GuardDefinition( - typeof(FactionMercenary), - 0x0F62, - 6000, - 2000, - 10, - new TextDefinition(1011527, "MERCENARY"), - new TextDefinition(1011511, "Hire Mercenary") - ), - new GuardDefinition( - typeof(FactionBerserker), - 0x0F4B, - 7000, - 3000, - 10, - new TextDefinition(1011505, "BERSERKER"), - new TextDefinition(1011499, "Hire Berserker") - ), - new GuardDefinition( - typeof(FactionDragoon), - 0x1439, - 8000, - 4000, - 10, - new TextDefinition(1011506, "DRAGOON"), - new TextDefinition(1011500, "Hire Dragoon") - ) + new Point3D(1113, 2601, 18), + new Point3D(1113, 2598, 18), + new Point3D(1113, 2595, 18), + new Point3D(1113, 2592, 18), + new Point3D(1116, 2601, 18), + new Point3D(1116, 2598, 18), + new Point3D(1116, 2595, 18), + new Point3D(1116, 2592, 18) } - ); - } - - public static Faction Instance { get; private set; } + ), + new[] + { + new RankDefinition(10, 991, 8, 1060784), // Avenger of Mondain + new RankDefinition(9, 950, 7, 1060783), // Dread Knight + new RankDefinition(8, 900, 6, 1060782), // Warlord + new RankDefinition(7, 800, 6, 1060782), // Warlord + new RankDefinition(6, 700, 5, 1060781), // Executioner + new RankDefinition(5, 600, 5, 1060781), // Executioner + new RankDefinition(4, 500, 5, 1060781), // Executioner + new RankDefinition(3, 400, 4, 1060780), // Defiler + new RankDefinition(2, 200, 4, 1060780), // Defiler + new RankDefinition(1, 0, 4, 1060780) // Defiler + }, + new[] + { + new GuardDefinition( + typeof(FactionHenchman), + 0x1403, + 5000, + 1000, + 10, + 1011526, // HENCHMAN + 1011510 // Hire Henchman + ), + new GuardDefinition( + typeof(FactionMercenary), + 0x0F62, + 6000, + 2000, + 10, + 1011527, // MERCENARY + 1011511 // Hire Mercenary + ), + new GuardDefinition( + typeof(FactionBerserker), + 0x0F4B, + 7000, + 3000, + 10, + 1011505, // BERSERKER + 1011499 // Hire Berserker + ), + new GuardDefinition( + typeof(FactionDragoon), + 0x1439, + 8000, + 4000, + 10, + 1011506, // DRAGOON + 1011500 // Hire Dragoon + ) + } + ); } + + public static Faction Instance { get; private set; } } diff --git a/Projects/UOContent/Engines/Factions/Instances/Factions/Shadowlords.cs b/Projects/UOContent/Engines/Factions/Instances/Factions/Shadowlords.cs index c881420fb..7c48cf88c 100644 --- a/Projects/UOContent/Engines/Factions/Instances/Factions/Shadowlords.cs +++ b/Projects/UOContent/Engines/Factions/Instances/Factions/Shadowlords.cs @@ -1,117 +1,116 @@ -namespace Server.Factions +namespace Server.Factions; + +public class Shadowlords : Faction { - public class Shadowlords : Faction + public Shadowlords() { - public Shadowlords() - { - Instance = this; + Instance = this; - Definition = - new FactionDefinition( - 3, - 1109, // shadow - 2211, // green - 1109, // join stone : shadow - 2211, // broadcast : green - 0x79, - 0x3EB0, // war horse - "Shadowlords", - "shadow", - "SL", - new TextDefinition(1011537, "SHADOWLORDS"), - new TextDefinition(1060772, "Shadowlords faction"), - new TextDefinition(1011424, "
SHADES OF DARKNESS
"), - new TextDefinition( - 1011451, - "The Shadow Lords are a faction that has sprung up within the ranks of " + - "Minax. Comprised mostly of undead and those who would seek to be " + - "necromancers, they pose a threat to both the sides of good and evil. " + - "Their plans have disrupted the hold Minax has over Felucca, and their " + - "ultimate goal is to destroy all life." - ), - new TextDefinition(1011456, "This city is controlled by the Shadow Lords."), - new TextDefinition(1042255, "This sigil has been corrupted by the Shadowlords"), - new TextDefinition(1041046, "The faction signup stone for the Shadowlords"), - new TextDefinition(1041384, "The Faction Stone of the Shadowlords"), - new TextDefinition(1011466, ": Shadowlords"), - new TextDefinition(1005184, "Minions of the Shadowlords will now be ignored."), - new TextDefinition(1005185, "Minions of the Shadowlords will now be warned of their impending deaths."), - new TextDefinition(1005186, "Minions of the Shadowlords will now be attacked at will."), - new StrongholdDefinition( - new[] - { - new Rectangle2D(960, 688, 8, 9), - new Rectangle2D(944, 697, 24, 23) - }, - new Point3D(969, 768, 0), - new Point3D(947, 713, 0), - new[] - { - new Point3D(953, 713, 20), - new Point3D(953, 709, 20), - new Point3D(953, 705, 20), - new Point3D(953, 701, 20), - new Point3D(957, 713, 20), - new Point3D(957, 709, 20), - new Point3D(957, 705, 20), - new Point3D(957, 701, 20) - } - ), + Definition = + new FactionDefinition( + 3, + 1109, // shadow + 2211, // green + 1109, // join stone : shadow + 2211, // broadcast : green + 0x79, + 0x3EB0, // war horse + "Shadowlords", + "shadow", + "SL", + 1011537, // SHADOWLORDS + 1060772, // Shadowlords faction + 1011424, //
SHADES OF DARKNESS
+ /* + * The Shadow Lords are a faction that has sprung up within the ranks of + * Minax. Comprised mostly of undead and those who would seek to be + * necromancers, they pose a threat to both the sides of good and evil. + * Their plans have disrupted the hold Minax has over Felucca, and their + * ultimate goal is to destroy all life. + */ + 1011451, + 1011456, // This city is controlled by the Shadow Lords. + 1042255, // This sigil has been corrupted by the Shadowlords + 1041046, // The faction signup stone for the Shadowlords + 1041384, // The Faction Stone of the Shadowlords + 1011466, // : Shadowlords + 1005184, // Minions of the Shadowlords will now be ignored. + 1005185, // Minions of the Shadowlords will now be warned of their impending deaths. + 1005186, // Minions of the Shadowlords will now be attacked at will. + new StrongholdDefinition( new[] { - new RankDefinition(10, 991, 8, new TextDefinition(1060799, "Purveyor of Darkness")), - new RankDefinition(9, 950, 7, new TextDefinition(1060798, "Agent of Evil")), - new RankDefinition(8, 900, 6, new TextDefinition(1060797, "Bringer of Sorrow")), - new RankDefinition(7, 800, 6, new TextDefinition(1060797, "Bringer of Sorrow")), - new RankDefinition(6, 700, 5, new TextDefinition(1060796, "Keeper of Lies")), - new RankDefinition(5, 600, 5, new TextDefinition(1060796, "Keeper of Lies")), - new RankDefinition(4, 500, 5, new TextDefinition(1060796, "Keeper of Lies")), - new RankDefinition(3, 400, 4, new TextDefinition(1060795, "Servant")), - new RankDefinition(2, 200, 4, new TextDefinition(1060795, "Servant")), - new RankDefinition(1, 0, 4, new TextDefinition(1060795, "Servant")) + new Rectangle2D(960, 688, 8, 9), + new Rectangle2D(944, 697, 24, 23) }, + new Point3D(969, 768, 0), + new Point3D(947, 713, 0), new[] { - new GuardDefinition( - typeof(FactionHenchman), - 0x1403, - 5000, - 1000, - 10, - new TextDefinition(1011526, "HENCHMAN"), - new TextDefinition(1011510, "Hire Henchman") - ), - new GuardDefinition( - typeof(FactionMercenary), - 0x0F62, - 6000, - 2000, - 10, - new TextDefinition(1011527, "MERCENARY"), - new TextDefinition(1011511, "Hire Mercenary") - ), - new GuardDefinition( - typeof(FactionDeathKnight), - 0x0F45, - 7000, - 3000, - 10, - new TextDefinition(1011512, "DEATH KNIGHT"), - new TextDefinition(1011503, "Hire Death Knight") - ), - new GuardDefinition( - typeof(FactionNecromancer), - 0x13F8, - 8000, - 4000, - 10, - new TextDefinition(1011513, "SHADOW MAGE"), - new TextDefinition(1011504, "Hire Shadow Mage") - ) + new Point3D(953, 713, 20), + new Point3D(953, 709, 20), + new Point3D(953, 705, 20), + new Point3D(953, 701, 20), + new Point3D(957, 713, 20), + new Point3D(957, 709, 20), + new Point3D(957, 705, 20), + new Point3D(957, 701, 20) } - ); - } - - public static Faction Instance { get; private set; } + ), + new[] + { + new RankDefinition(10, 991, 8, 1060799), // Purveyor of Darkness + new RankDefinition(9, 950, 7, 1060798), // Agent of Evil + new RankDefinition(8, 900, 6, 1060797), // Bringer of Sorrow + new RankDefinition(7, 800, 6, 1060797), // Bringer of Sorrow + new RankDefinition(6, 700, 5, 1060796), // Keeper of Lies + new RankDefinition(5, 600, 5, 1060796), // Keeper of Lies + new RankDefinition(4, 500, 5, 1060796), // Keeper of Lies + new RankDefinition(3, 400, 4, 1060795), // Servant + new RankDefinition(2, 200, 4, 1060795), // Servant + new RankDefinition(1, 0, 4, 1060795) // Servant + }, + new[] + { + new GuardDefinition( + typeof(FactionHenchman), + 0x1403, + 5000, + 1000, + 10, + 1011526, // HENCHMAN + 1011510 // Hire Henchman + ), + new GuardDefinition( + typeof(FactionMercenary), + 0x0F62, + 6000, + 2000, + 10, + 1011527, // MERCENARY + 1011511 // Hire Mercenary + ), + new GuardDefinition( + typeof(FactionDeathKnight), + 0x0F45, + 7000, + 3000, + 10, + 1011512, // DEATH KNIGHT + 1011503 // Hire Death Knight + ), + new GuardDefinition( + typeof(FactionNecromancer), + 0x13F8, + 8000, + 4000, + 10, + 1011513, // SHADOW MAGE + 1011504 // Hire Shadow Mage + ) + } + ); } + + public static Faction Instance { get; private set; } } diff --git a/Projects/UOContent/Engines/Factions/Instances/Factions/TrueBritannians.cs b/Projects/UOContent/Engines/Factions/Instances/Factions/TrueBritannians.cs index 50ae1560e..9c7e6c35f 100644 --- a/Projects/UOContent/Engines/Factions/Instances/Factions/TrueBritannians.cs +++ b/Projects/UOContent/Engines/Factions/Instances/Factions/TrueBritannians.cs @@ -1,122 +1,121 @@ -namespace Server.Factions +namespace Server.Factions; + +public class TrueBritannians : Faction { - public class TrueBritannians : Faction + public TrueBritannians() { - public TrueBritannians() - { - Instance = this; + Instance = this; - Definition = - new FactionDefinition( - 2, - 1254, // dark purple - 2125, // gold - 2214, // join stone : gold - 2125, // broadcast : gold - 0x76, - 0x3EB2, // war horse - "True Britannians", - "true", - "TB", - new TextDefinition(1011536, "LORD BRITISH"), - new TextDefinition(1060771, "True Britannians faction"), - new TextDefinition(1011423, "
TRUE BRITANNIANS
"), - new TextDefinition( - 1011450, - "True Britannians are loyal to the throne of Lord British. They refuse " + - "to give up their homelands to the vile Minax, and detest the Shadowlords " + - "for their evil ways. In addition, the Council of Mages threatens the " + - "existence of their ruler, and as such they have armed themselves, and " + - "prepare for war with all." - ), - new TextDefinition(1011454, "This city is controlled by Lord British."), - new TextDefinition(1042254, "This sigil has been corrupted by the True Britannians"), - new TextDefinition(1041045, "The faction signup stone for the True Britannians"), - new TextDefinition(1041383, "The Faction Stone of the True Britannians"), - new TextDefinition(1011465, ": True Britannians"), - new TextDefinition(1005181, "Followers of Lord British will now be ignored."), - new TextDefinition(1005182, "Followers of Lord British will now be warned of their impending doom."), - new TextDefinition(1005183, "Followers of Lord British will now be attacked on sight."), - new StrongholdDefinition( - new[] - { - new Rectangle2D(1292, 1556, 25, 25), - new Rectangle2D(1292, 1676, 120, 25), - new Rectangle2D(1388, 1556, 25, 25), - new Rectangle2D(1317, 1563, 71, 18), - new Rectangle2D(1300, 1581, 105, 95), - new Rectangle2D(1405, 1612, 12, 21), - new Rectangle2D(1405, 1633, 11, 5) - }, - new Point3D(1419, 1622, 20), - new Point3D(1330, 1621, 50), - new[] - { - new Point3D(1328, 1627, 50), - new Point3D(1328, 1621, 50), - new Point3D(1334, 1627, 50), - new Point3D(1334, 1621, 50), - new Point3D(1340, 1627, 50), - new Point3D(1340, 1621, 50), - new Point3D(1345, 1621, 50), - new Point3D(1345, 1627, 50) - } - ), + Definition = + new FactionDefinition( + 2, + 1254, // dark purple + 2125, // gold + 2214, // join stone : gold + 2125, // broadcast : gold + 0x76, + 0x3EB2, // war horse + "True Britannians", + "true", + "TB", + 1011536, // LORD BRITISH + 1060771, // True Britannians faction + 1011423, //
TRUE BRITANNIANS
+ /* + * True Britannians are loyal to the throne of Lord British. They refuse + * to give up their homelands to the vile Minax, and detest the Shadowlords + * for their evil ways. In addition, the Council of Mages threatens the + * existence of their ruler, and as such they have armed themselves, and + * prepare for war with all. + */ + 1011450, + 1011454, // This city is controlled by Lord British. + 1042254, // This sigil has been corrupted by the True Britannians + 1041045, // The faction signup stone for the True Britannians + 1041383, // The Faction Stone of the True Britannians + 1011465, // : True Britannians + 1005181, // Followers of Lord British will now be ignored. + 1005182, // Followers of Lord British will now be warned of their impending doom. + 1005183, // Followers of Lord British will now be attacked on sight. + new StrongholdDefinition( new[] { - new RankDefinition(10, 991, 8, new TextDefinition(1060794, "Knight of the Codex")), - new RankDefinition(9, 950, 7, new TextDefinition(1060793, "Knight of Virtue")), - new RankDefinition(8, 900, 6, new TextDefinition(1060792, "Crusader")), - new RankDefinition(7, 800, 6, new TextDefinition(1060792, "Crusader")), - new RankDefinition(6, 700, 5, new TextDefinition(1060791, "Sentinel")), - new RankDefinition(5, 600, 5, new TextDefinition(1060791, "Sentinel")), - new RankDefinition(4, 500, 5, new TextDefinition(1060791, "Sentinel")), - new RankDefinition(3, 400, 4, new TextDefinition(1060790, "Defender")), - new RankDefinition(2, 200, 4, new TextDefinition(1060790, "Defender")), - new RankDefinition(1, 0, 4, new TextDefinition(1060790, "Defender")) + new Rectangle2D(1292, 1556, 25, 25), + new Rectangle2D(1292, 1676, 120, 25), + new Rectangle2D(1388, 1556, 25, 25), + new Rectangle2D(1317, 1563, 71, 18), + new Rectangle2D(1300, 1581, 105, 95), + new Rectangle2D(1405, 1612, 12, 21), + new Rectangle2D(1405, 1633, 11, 5) }, + new Point3D(1419, 1622, 20), + new Point3D(1330, 1621, 50), new[] { - new GuardDefinition( - typeof(FactionHenchman), - 0x1403, - 5000, - 1000, - 10, - new TextDefinition(1011526, "HENCHMAN"), - new TextDefinition(1011510, "Hire Henchman") - ), - new GuardDefinition( - typeof(FactionMercenary), - 0x0F62, - 6000, - 2000, - 10, - new TextDefinition(1011527, "MERCENARY"), - new TextDefinition(1011511, "Hire Mercenary") - ), - new GuardDefinition( - typeof(FactionKnight), - 0x0F4D, - 7000, - 3000, - 10, - new TextDefinition(1011528, "KNIGHT"), - new TextDefinition(1011497, "Hire Knight") - ), - new GuardDefinition( - typeof(FactionPaladin), - 0x143F, - 8000, - 4000, - 10, - new TextDefinition(1011529, "PALADIN"), - new TextDefinition(1011498, "Hire Paladin") - ) + new Point3D(1328, 1627, 50), + new Point3D(1328, 1621, 50), + new Point3D(1334, 1627, 50), + new Point3D(1334, 1621, 50), + new Point3D(1340, 1627, 50), + new Point3D(1340, 1621, 50), + new Point3D(1345, 1621, 50), + new Point3D(1345, 1627, 50) } - ); - } - - public static Faction Instance { get; private set; } + ), + new[] + { + new RankDefinition(10, 991, 8, 1060794), // Knight of the Codex + new RankDefinition(9, 950, 7, 1060793), // Knight of Virtue + new RankDefinition(8, 900, 6, 1060792), // Crusader + new RankDefinition(7, 800, 6, 1060792), // Crusader + new RankDefinition(6, 700, 5, 1060791), // Sentinel + new RankDefinition(5, 600, 5, 1060791), // Sentinel + new RankDefinition(4, 500, 5, 1060791), // Sentinel + new RankDefinition(3, 400, 4, 1060790), // Defender + new RankDefinition(2, 200, 4, 1060790), // Defender + new RankDefinition(1, 0, 4, 1060790), // Defender + }, + new[] + { + new GuardDefinition( + typeof(FactionHenchman), + 0x1403, + 5000, + 1000, + 10, + 1011526, // HENCHMAN + 1011510 // Hire Henchman + ), + new GuardDefinition( + typeof(FactionMercenary), + 0x0F62, + 6000, + 2000, + 10, + 1011527, // MERCENARY + 1011511 // Hire Mercenary + ), + new GuardDefinition( + typeof(FactionKnight), + 0x0F4D, + 7000, + 3000, + 10, + 1011528, // KNIGHT + 1011497 // Hire Knight + ), + new GuardDefinition( + typeof(FactionPaladin), + 0x143F, + 8000, + 4000, + 10, + 1011529, // PALADIN + 1011498 // Hire Paladin + ) + } + ); } + + public static Faction Instance { get; private set; } } diff --git a/Projects/UOContent/Engines/Factions/Instances/Towns/Britain.cs b/Projects/UOContent/Engines/Factions/Instances/Towns/Britain.cs index 7a072c294..10a9b85c0 100644 --- a/Projects/UOContent/Engines/Factions/Instances/Towns/Britain.cs +++ b/Projects/UOContent/Engines/Factions/Instances/Towns/Britain.cs @@ -1,23 +1,22 @@ -namespace Server.Factions +namespace Server.Factions; + +public class Britain : Town { - public class Britain : Town - { - public Britain() => - Definition = - new TownDefinition( - 0, - 0x1869, - "Britain", - "Britain", - new TextDefinition(1011433, "BRITAIN"), - new TextDefinition(1011561, "TOWN STONE FOR BRITAIN"), - new TextDefinition(1041034, "The Faction Sigil Monolith of Britain"), - new TextDefinition(1041404, "The Faction Town Sigil Monolith of Britain"), - new TextDefinition(1041413, "Faction Town Stone of Britain"), - new TextDefinition(1041395, "Faction Town Sigil of Britain"), - new TextDefinition(1041386, "Corrupted Faction Town Sigil of Britain"), - new Point3D(1592, 1680, 10), - new Point3D(1588, 1676, 10) - ); - } + public Britain() => + Definition = + new TownDefinition( + 0, + 0x1869, + "Britain", + "Britain", + 1011433, // BRITAIN + 1011561, // TOWN STONE FOR BRITAIN + 1041034, // The Faction Sigil Monolith of Britain + 1041404, // The Faction Town Sigil Monolith of Britain + 1041413, // Faction Town Stone of Britain + 1041395, // Faction Town Sigil of Britain + 1041386, // Corrupted Faction Town Sigil of Britain + new Point3D(1592, 1680, 10), + new Point3D(1588, 1676, 10) + ); } diff --git a/Projects/UOContent/Engines/Factions/Instances/Towns/Magincia.cs b/Projects/UOContent/Engines/Factions/Instances/Towns/Magincia.cs index feb1ae018..d42b27cff 100644 --- a/Projects/UOContent/Engines/Factions/Instances/Towns/Magincia.cs +++ b/Projects/UOContent/Engines/Factions/Instances/Towns/Magincia.cs @@ -1,23 +1,22 @@ -namespace Server.Factions +namespace Server.Factions; + +public class Magincia : Town { - public class Magincia : Town - { - public Magincia() => - Definition = - new TownDefinition( - 7, - 0x1870, - "Magincia", - "Magincia", - new TextDefinition(1011440, "MAGINCIA"), - new TextDefinition(1011568, "TOWN STONE FOR MAGINCIA"), - new TextDefinition(1041041, "The Faction Sigil Monolith of Magincia"), - new TextDefinition(1041411, "The Faction Town Sigil Monolith of Magincia"), - new TextDefinition(1041420, "Faction Town Stone of Magincia"), - new TextDefinition(1041402, "Faction Town Sigil of Magincia"), - new TextDefinition(1041393, "Corrupted Faction Town Sigil of Magincia"), - new Point3D(3714, 2235, 20), - new Point3D(3712, 2230, 20) - ); - } + public Magincia() => + Definition = + new TownDefinition( + 7, + 0x1870, + "Magincia", + "Magincia", + 1011440, // MAGINCIA + 1011568, // TOWN STONE FOR MAGINCIA + 1041041, // The Faction Sigil Monolith of Magincia + 1041411, // The Faction Town Sigil Monolith of Magincia + 1041420, // Faction Town Stone of Magincia + 1041402, // Faction Town Sigil of Magincia + 1041393, // Corrupted Faction Town Sigil of Magincia + new Point3D(3714, 2235, 20), + new Point3D(3712, 2230, 20) + ); } diff --git a/Projects/UOContent/Engines/Factions/Instances/Towns/Minoc.cs b/Projects/UOContent/Engines/Factions/Instances/Towns/Minoc.cs index c93545f8f..341a8668b 100644 --- a/Projects/UOContent/Engines/Factions/Instances/Towns/Minoc.cs +++ b/Projects/UOContent/Engines/Factions/Instances/Towns/Minoc.cs @@ -1,23 +1,22 @@ -namespace Server.Factions +namespace Server.Factions; + +public class Minoc : Town { - public class Minoc : Town - { - public Minoc() => - Definition = - new TownDefinition( - 2, - 0x186B, - "Minoc", - "Minoc", - new TextDefinition(1011437, "MINOC"), - new TextDefinition(1011564, "TOWN STONE FOR MINOC"), - new TextDefinition(1041036, "The Faction Sigil Monolith of Minoc"), - new TextDefinition(1041406, "The Faction Town Sigil Monolith Minoc"), - new TextDefinition(1041415, "Faction Town Stone of Minoc"), - new TextDefinition(1041397, "Faction Town Sigil of Minoc"), - new TextDefinition(1041388, "Corrupted Faction Town Sigil of Minoc"), - new Point3D(2471, 439, 15), - new Point3D(2469, 445, 15) - ); - } + public Minoc() => + Definition = + new TownDefinition( + 2, + 0x186B, + "Minoc", + "Minoc", + 1011437, // MINOC + 1011564, // TOWN STONE FOR MINOC + 1041036, // The Faction Sigil Monolith of Minoc + 1041406, // The Faction Town Sigil Monolith Minoc + 1041415, // Faction Town Stone of Minoc + 1041397, // Faction Town Sigil of Minoc + 1041388, // Corrupted Faction Town Sigil of Minoc + new Point3D(2471, 439, 15), + new Point3D(2469, 445, 15) + ); } diff --git a/Projects/UOContent/Engines/Factions/Instances/Towns/Moonglow.cs b/Projects/UOContent/Engines/Factions/Instances/Towns/Moonglow.cs index ed5ec2897..12f3708b4 100644 --- a/Projects/UOContent/Engines/Factions/Instances/Towns/Moonglow.cs +++ b/Projects/UOContent/Engines/Factions/Instances/Towns/Moonglow.cs @@ -1,23 +1,22 @@ -namespace Server.Factions +namespace Server.Factions; + +public class Moonglow : Town { - public class Moonglow : Town - { - public Moonglow() => - Definition = - new TownDefinition( - 3, - 0x186C, - "Moonglow", - "Moonglow", - new TextDefinition(1011435, "MOONGLOW"), - new TextDefinition(1011563, "TOWN STONE FOR MOONGLOW"), - new TextDefinition(1041037, "The Faction Sigil Monolith of Moonglow"), - new TextDefinition(1041407, "The Faction Town Sigil Monolith of Moonglow"), - new TextDefinition(1041416, "Faction Town Stone of Moonglow"), - new TextDefinition(1041398, "Faction Town Sigil of Moonglow"), - new TextDefinition(1041389, "Corrupted Faction Town Sigil of Moonglow"), - new Point3D(4436, 1083, 0), - new Point3D(4432, 1086, 0) - ); - } + public Moonglow() => + Definition = + new TownDefinition( + 3, + 0x186C, + "Moonglow", + "Moonglow", + 1011435, // MOONGLOW + 1011563, // TOWN STONE FOR MOONGLOW + 1041037, // The Faction Sigil Monolith of Moonglow + 1041407, // The Faction Town Sigil Monolith of Moonglow + 1041416, // Faction Town Stone of Moonglow + 1041398, // Faction Town Sigil of Moonglow + 1041389, // Corrupted Faction Town Sigil of Moonglow + new Point3D(4436, 1083, 0), + new Point3D(4432, 1086, 0) + ); } diff --git a/Projects/UOContent/Engines/Factions/Instances/Towns/SkaraBrae.cs b/Projects/UOContent/Engines/Factions/Instances/Towns/SkaraBrae.cs index 60277833c..52fd29a2e 100644 --- a/Projects/UOContent/Engines/Factions/Instances/Towns/SkaraBrae.cs +++ b/Projects/UOContent/Engines/Factions/Instances/Towns/SkaraBrae.cs @@ -1,23 +1,22 @@ -namespace Server.Factions +namespace Server.Factions; + +public class SkaraBrae : Town { - public class SkaraBrae : Town - { - public SkaraBrae() => - Definition = - new TownDefinition( - 6, - 0x186F, - "Skara Brae", - "Skara Brae", - new TextDefinition(1011439, "SKARA BRAE"), - new TextDefinition(1011567, "TOWN STONE FOR SKARA BRAE"), - new TextDefinition(1041040, "The Faction Sigil Monolith of Skara Brae"), - new TextDefinition(1041410, "The Faction Town Sigil Monolith of Skara Brae"), - new TextDefinition(1041419, "Faction Town Stone of Skara Brae"), - new TextDefinition(1041401, "Faction Town Sigil of Skara Brae"), - new TextDefinition(1041392, "Corrupted Faction Town Sigil of Skara Brae"), - new Point3D(576, 2200, 0), - new Point3D(572, 2196, 0) - ); - } + public SkaraBrae() => + Definition = + new TownDefinition( + 6, + 0x186F, + "Skara Brae", + "Skara Brae", + 1011439, // SKARA BRAE + 1011567, // TOWN STONE FOR SKARA BRAE + 1041040, // The Faction Sigil Monolith of Skara Brae + 1041410, // The Faction Town Sigil Monolith of Skara Brae + 1041419, // Faction Town Stone of Skara Brae + 1041401, // Faction Town Sigil of Skara Brae + 1041392, // Corrupted Faction Town Sigil of Skara Brae + new Point3D(576, 2200, 0), + new Point3D(572, 2196, 0) + ); } diff --git a/Projects/UOContent/Engines/Factions/Instances/Towns/Trinsic.cs b/Projects/UOContent/Engines/Factions/Instances/Towns/Trinsic.cs index f53ef55a3..7885a0509 100644 --- a/Projects/UOContent/Engines/Factions/Instances/Towns/Trinsic.cs +++ b/Projects/UOContent/Engines/Factions/Instances/Towns/Trinsic.cs @@ -1,23 +1,22 @@ -namespace Server.Factions +namespace Server.Factions; + +public class Trinsic : Town { - public class Trinsic : Town - { - public Trinsic() => - Definition = - new TownDefinition( - 1, - 0x186A, - "Trinsic", - "Trinsic", - new TextDefinition(1011434, "TRINSIC"), - new TextDefinition(1011562, "TOWN STONE FOR TRINSIC"), - new TextDefinition(1041035, "The Faction Sigil Monolith of Trinsic"), - new TextDefinition(1041405, "The Faction Town Sigil Monolith of Trinsic"), - new TextDefinition(1041414, "Faction Town Stone of Trinsic"), - new TextDefinition(1041396, "Faction Town Sigil of Trinsic"), - new TextDefinition(1041387, "Corrupted Faction Town Sigil of Trinsic"), - new Point3D(1914, 2717, 20), - new Point3D(1909, 2720, 20) - ); - } + public Trinsic() => + Definition = + new TownDefinition( + 1, + 0x186A, + "Trinsic", + "Trinsic", + 1011434, // TRINSIC + 1011562, // TOWN STONE FOR TRINSIC + 1041035, // The Faction Sigil Monolith of Trinsic + 1041405, // The Faction Town Sigil Monolith of Trinsic + 1041414, // Faction Town Stone of Trinsic + 1041396, // Faction Town Sigil of Trinsic + 1041387, // Corrupted Faction Town Sigil of Trinsic + new Point3D(1914, 2717, 20), + new Point3D(1909, 2720, 20) + ); } diff --git a/Projects/UOContent/Engines/Factions/Instances/Towns/Vesper.cs b/Projects/UOContent/Engines/Factions/Instances/Towns/Vesper.cs index fbdf139cb..ce7ba05f8 100644 --- a/Projects/UOContent/Engines/Factions/Instances/Towns/Vesper.cs +++ b/Projects/UOContent/Engines/Factions/Instances/Towns/Vesper.cs @@ -1,23 +1,22 @@ -namespace Server.Factions +namespace Server.Factions; + +public class Vesper : Town { - public class Vesper : Town - { - public Vesper() => - Definition = - new TownDefinition( - 5, - 0x186E, - "Vesper", - "Vesper", - new TextDefinition(1016413, "VESPER"), - new TextDefinition(1011566, "TOWN STONE FOR VESPER"), - new TextDefinition(1041039, "The Faction Sigil Monolith of Vesper"), - new TextDefinition(1041409, "The Faction Town Sigil Monolith of Vesper"), - new TextDefinition(1041418, "Faction Town Stone of Vesper"), - new TextDefinition(1041400, "Faction Town Sigil of Vesper"), - new TextDefinition(1041391, "Corrupted Faction Town Sigil of Vesper"), - new Point3D(2982, 818, 0), - new Point3D(2985, 821, 0) - ); - } + public Vesper() => + Definition = + new TownDefinition( + 5, + 0x186E, + "Vesper", + "Vesper", + 1016413, // VESPER + 1011566, // TOWN STONE FOR VESPER + 1041039, // The Faction Sigil Monolith of Vesper + 1041409, // The Faction Town Sigil Monolith of Vesper + 1041418, // Faction Town Stone of Vesper + 1041400, // Faction Town Sigil of Vesper + 1041391, // Corrupted Faction Town Sigil of Vesper + new Point3D(2982, 818, 0), + new Point3D(2985, 821, 0) + ); } diff --git a/Projects/UOContent/Engines/Factions/Instances/Towns/Yew.cs b/Projects/UOContent/Engines/Factions/Instances/Towns/Yew.cs index 426867090..c27bba2b7 100644 --- a/Projects/UOContent/Engines/Factions/Instances/Towns/Yew.cs +++ b/Projects/UOContent/Engines/Factions/Instances/Towns/Yew.cs @@ -1,23 +1,22 @@ -namespace Server.Factions +namespace Server.Factions; + +public class Yew : Town { - public class Yew : Town - { - public Yew() => - Definition = - new TownDefinition( - 4, - 0x186D, - "Yew", - "Yew", - new TextDefinition(1011438, "YEW"), - new TextDefinition(1011565, "TOWN STONE FOR YEW"), - new TextDefinition(1041038, "The Faction Sigil Monolith of Yew"), - new TextDefinition(1041408, "The Faction Town Sigil Monolith of Yew"), - new TextDefinition(1041417, "Faction Town Stone of Yew"), - new TextDefinition(1041399, "Faction Town Sigil of Yew"), - new TextDefinition(1041390, "Corrupted Faction Town Sigil of Yew"), - new Point3D(548, 979, 0), - new Point3D(542, 980, 0) - ); - } + public Yew() => + Definition = + new TownDefinition( + 4, + 0x186D, + "Yew", + "Yew", + 1011438, // YEW + 1011565, // TOWN STONE FOR YEW + 1041038, // The Faction Sigil Monolith of Yew + 1041408, // The Faction Town Sigil Monolith of Yew + 1041417, // Faction Town Stone of Yew + 1041399, // Faction Town Sigil of Yew + 1041390, // Corrupted Faction Town Sigil of Yew + new Point3D(548, 979, 0), + new Point3D(542, 980, 0) + ); } diff --git a/Projects/UOContent/Engines/ML Quests/Definitions/HonestBeggar.cs b/Projects/UOContent/Engines/ML Quests/Definitions/HonestBeggar.cs index 2b54401c5..717fd723d 100644 --- a/Projects/UOContent/Engines/ML Quests/Definitions/HonestBeggar.cs +++ b/Projects/UOContent/Engines/ML Quests/Definitions/HonestBeggar.cs @@ -12,13 +12,14 @@ namespace Server.Engines.MLQuests.Definitions { Activated = true; Title = 1075392; // Honest Beggar - Description = - 1075393; // Beg pardon, sir. I mean, madam. Uh, can I ask a favor of you? I found this jeweled ring. Most people would sell it and keep the money, but not me. I ain't never stole nothing, and I ain't about to start. I tried to take it over to Brit castle, figgerin' it must belong to some highborn lady, but the guards threw me out. You look like they might let you pass. Will you take the ring over there and see if you can find the owner? + // Beg pardon, sir. I mean, madam. Uh, can I ask a favor of you? I found this jeweled ring. Most people would sell it and keep the money, but not me. I ain't never stole nothing, and I ain't about to start. I tried to take it over to Brit castle, figgerin' it must belong to some highborn lady, but the guards threw me out. You look like they might let you pass. Will you take the ring over there and see if you can find the owner? + + Description = 1075393; RefusalMessage = 1075395; // I see. Too good to help an honest beggar like me, eh? - InProgressMessage = - 1075396; // A jewel like this must be worth a lot, so it must belong to some noble or another. I would show it around the castle. Someone's bound to recognize it. - CompletionMessage = - 1075397; // Didst thou find my ring? I thank thee very much! It is an old ring, and a gift from my husband. I was most distraught when I realized it was missing. + // A jewel like this must be worth a lot, so it must belong to some noble or another. I would show it around the castle. Someone's bound to recognize it. + InProgressMessage = 1075396; + // Didst thou find my ring? I thank thee very much! It is an old ring, and a gift from my husband. I was most distraught when I realized it was missing. + CompletionMessage = 1075397; CompletionNotice = CompletionNoticeShort; Objectives.Add(new DeliverObjective(typeof(ReginasRing), 1, "Regina's Ring", typeof(Regina))); diff --git a/Projects/UOContent/Engines/ML Quests/MLQuest.cs b/Projects/UOContent/Engines/ML Quests/MLQuest.cs index b7a696dd3..26ccdb2f5 100644 --- a/Projects/UOContent/Engines/ML Quests/MLQuest.cs +++ b/Projects/UOContent/Engines/ML Quests/MLQuest.cs @@ -17,17 +17,16 @@ namespace Server.Engines.MLQuests public class MLQuest { - public static readonly TextDefinition - CompletionNoticeDefault = - new(1072273); // You've completed a quest! Don't forget to collect your reward. + // You've completed a quest! Don't forget to collect your reward. + public static TextDefinition CompletionNoticeDefault = 1072273; - public static readonly TextDefinition CompletionNoticeShort = new(1046258); // Your quest is complete. + public static TextDefinition CompletionNoticeShort = 1046258; // Your quest is complete. - public static readonly TextDefinition - CompletionNoticeShortReturn = new(1073775); // Your quest is complete. Return for your reward. + // Your quest is complete. Return for your reward. + public static TextDefinition CompletionNoticeShortReturn = 1073775; - public static readonly TextDefinition - CompletionNoticeCraft = new(1073967); // You obtained what you seek, now receive your reward. + // You obtained what you seek, now receive your reward. + public static TextDefinition CompletionNoticeCraft = 1073967; public MLQuest() { diff --git a/Projects/UOContent/Engines/ML Quests/Rewards/DummyReward.cs b/Projects/UOContent/Engines/ML Quests/Rewards/DummyReward.cs index 9fc38c8df..9956767bc 100644 --- a/Projects/UOContent/Engines/ML Quests/Rewards/DummyReward.cs +++ b/Projects/UOContent/Engines/ML Quests/Rewards/DummyReward.cs @@ -5,8 +5,7 @@ namespace Server.Engines.MLQuests.Rewards { public class DummyReward : BaseReward { - public DummyReward(TextDefinition name) - : base(name) + public DummyReward(TextDefinition name) : base(name) { } diff --git a/Projects/UOContent/Engines/ML Quests/Rewards/ItemReward.cs b/Projects/UOContent/Engines/ML Quests/Rewards/ItemReward.cs index 49cbbcef1..ff5a579ef 100644 --- a/Projects/UOContent/Engines/ML Quests/Rewards/ItemReward.cs +++ b/Projects/UOContent/Engines/ML Quests/Rewards/ItemReward.cs @@ -41,8 +41,7 @@ namespace Server.Engines.MLQuests.Rewards private readonly Type m_Type; - public ItemReward(TextDefinition name = null, Type type = null, int amount = 1) - : base(name) + public ItemReward(TextDefinition name = null, Type type = null, int amount = 1) : base(name) { m_Type = type; m_Amount = amount; diff --git a/Projects/UOContent/Gumps/Guilds/New Guild System/GuildRosterGump.cs b/Projects/UOContent/Gumps/Guilds/New Guild System/GuildRosterGump.cs index eedea7a6b..b8cc54a81 100644 --- a/Projects/UOContent/Gumps/Guilds/New Guild System/GuildRosterGump.cs +++ b/Projects/UOContent/Gumps/Guilds/New Guild System/GuildRosterGump.cs @@ -70,9 +70,7 @@ namespace Server.Guilds defs[0] = name; defs[1] = pm.GuildRank.Name; - defs[2] = pm.NetState != null - ? new TextDefinition(1063015) - : new TextDefinition(pm.LastOnline.ToString("yyyy-MM-dd")); + defs[2] = pm.NetState != null ? 1063015 : pm.LastOnline.ToString("yyyy-MM-dd"); defs[3] = pm.GuildTitle ?? ""; return defs; @@ -151,8 +149,8 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063051, targ.Name); // ~1_val~ is already a member of a guild. } - else if (targ.HasGump() || targ.HasGump() - ) // TODO: Check message if CreateGuildGump Open + // TODO: Check message if CreateGuildGump Open + else if (targ.HasGump() || targ.HasGump()) { pm.SendLocalizedMessage(1063052, targ.Name); // ~1_val~ is currently considering another guild invitation. } diff --git a/Projects/UOContent/Items/Misc/PromotionalToken.cs b/Projects/UOContent/Items/Misc/PromotionalToken.cs index 6c3a562f6..b8723ce29 100644 --- a/Projects/UOContent/Items/Misc/PromotionalToken.cs +++ b/Projects/UOContent/Items/Misc/PromotionalToken.cs @@ -122,11 +122,11 @@ public partial class SoulstoneFragmentToken : PromotionalToken { } - public override TextDefinition ItemGumpName => 1070999; //
Soulstone Fragment
- public override TextDefinition ItemName => 1071000; // soulstone fragment + public override TextDefinition ItemGumpName { get; } = 1070999; //
Soulstone Fragment
+ public override TextDefinition ItemName { get; } = 1071000; // soulstone fragment // A soulstone fragment has been created in your bank box. - public override TextDefinition ItemReceiveMessage => 1070976; + public override TextDefinition ItemReceiveMessage { get; } = 1070976; public override Item CreateItemFor(Mobile from) => from?.Account != null ? new SoulstoneFragment(from.Account.ToString()) : null; diff --git a/Projects/UOContent/Spells/Base/SpecialMove.cs b/Projects/UOContent/Spells/Base/SpecialMove.cs index 25e6b5f3c..b4ff72370 100644 --- a/Projects/UOContent/Spells/Base/SpecialMove.cs +++ b/Projects/UOContent/Spells/Base/SpecialMove.cs @@ -17,7 +17,7 @@ namespace Server.Spells public virtual SkillName MoveSkill => SkillName.Bushido; public virtual double RequiredSkill => 0.0; - public virtual TextDefinition AbilityMessage => 0; + public virtual TextDefinition AbilityMessage => TextDefinition.Empty; public virtual bool BlockedByAnimalForm => true; public virtual bool DelayedContext => false; diff --git a/Projects/UOContent/Spells/Bushido/HonorableExecution.cs b/Projects/UOContent/Spells/Bushido/HonorableExecution.cs index 4d00260bd..f582ab56b 100644 --- a/Projects/UOContent/Spells/Bushido/HonorableExecution.cs +++ b/Projects/UOContent/Spells/Bushido/HonorableExecution.cs @@ -10,8 +10,8 @@ namespace Server.Spells.Bushido public override int BaseMana => 0; public override double RequiredSkill => 25.0; - public override TextDefinition AbilityMessage => - new(1063122); // You better kill your enemy with your next hit or you'll be rather sorry... + // You better kill your enemy with your next hit or you'll be rather sorry... + public override TextDefinition AbilityMessage { get; } = 1063122; public override double GetDamageScalar(Mobile attacker, Mobile defender) => // TODO: 20 -> Perfection diff --git a/Projects/UOContent/Spells/Bushido/LightningStrike.cs b/Projects/UOContent/Spells/Bushido/LightningStrike.cs index 7e78dfe07..eb52e264c 100644 --- a/Projects/UOContent/Spells/Bushido/LightningStrike.cs +++ b/Projects/UOContent/Spells/Bushido/LightningStrike.cs @@ -7,7 +7,7 @@ namespace Server.Spells.Bushido public override int BaseMana => 5; public override double RequiredSkill => 50.0; - public override TextDefinition AbilityMessage => new(1063167); // You prepare to strike quickly. + public override TextDefinition AbilityMessage { get; } = 1063167; // You prepare to strike quickly. public override bool DelayedContext => true; diff --git a/Projects/UOContent/Spells/Bushido/MomentumStrike.cs b/Projects/UOContent/Spells/Bushido/MomentumStrike.cs index c3b291d01..20a7ecf9c 100644 --- a/Projects/UOContent/Spells/Bushido/MomentumStrike.cs +++ b/Projects/UOContent/Spells/Bushido/MomentumStrike.cs @@ -7,8 +7,8 @@ namespace Server.Spells.Bushido public override int BaseMana => 10; public override double RequiredSkill => 70.0; - public override TextDefinition AbilityMessage => - new(1070757); // You prepare to strike two enemies with one blow. + // You prepare to strike two enemies with one blow. + public override TextDefinition AbilityMessage { get; } = 1070757; public override void OnHit(Mobile attacker, Mobile defender, int damage) { diff --git a/Projects/UOContent/Spells/Ninjitsu/Backstab.cs b/Projects/UOContent/Spells/Ninjitsu/Backstab.cs index a7857462f..11392721a 100644 --- a/Projects/UOContent/Spells/Ninjitsu/Backstab.cs +++ b/Projects/UOContent/Spells/Ninjitsu/Backstab.cs @@ -8,8 +8,8 @@ namespace Server.Spells.Ninjitsu public override int BaseMana => 30; public override double RequiredSkill => Core.ML ? 40.0 : 20.0; - public override TextDefinition AbilityMessage => - new(1063089); // You prepare to Backstab your opponent. + // You prepare to Backstab your opponent. + public override TextDefinition AbilityMessage { get; } = 1063089; public override bool ValidatesDuringHit => false; diff --git a/Projects/UOContent/Spells/Ninjitsu/DeathStrike.cs b/Projects/UOContent/Spells/Ninjitsu/DeathStrike.cs index 12b9f5523..3f655e81d 100644 --- a/Projects/UOContent/Spells/Ninjitsu/DeathStrike.cs +++ b/Projects/UOContent/Spells/Ninjitsu/DeathStrike.cs @@ -13,8 +13,8 @@ namespace Server.Spells.Ninjitsu public override int BaseMana => 30; public override double RequiredSkill => 85.0; - public override TextDefinition AbilityMessage => - new(1063091); // You prepare to hit your opponent with a Death Strike. + // You prepare to hit your opponent with a Death Strike. + public override TextDefinition AbilityMessage { get; } = 1063091; public override double GetDamageScalar(Mobile attacker, Mobile defender) => 0.5; diff --git a/Projects/UOContent/Spells/Ninjitsu/FocusAttack.cs b/Projects/UOContent/Spells/Ninjitsu/FocusAttack.cs index 658eee2e6..98026294b 100644 --- a/Projects/UOContent/Spells/Ninjitsu/FocusAttack.cs +++ b/Projects/UOContent/Spells/Ninjitsu/FocusAttack.cs @@ -7,8 +7,8 @@ namespace Server.Spells.Ninjitsu public override int BaseMana => Core.ML ? 10 : 20; public override double RequiredSkill => Core.ML ? 30.0 : 60; - public override TextDefinition AbilityMessage => - new(1063095); // You prepare to focus all of your abilities into your next strike. + // You prepare to focus all of your abilities into your next strike. + public override TextDefinition AbilityMessage { get; } = 1063095; public override bool Validate(Mobile from) { diff --git a/Projects/UOContent/Spells/Ninjitsu/KiAttack.cs b/Projects/UOContent/Spells/Ninjitsu/KiAttack.cs index 9bfc24587..172c77831 100644 --- a/Projects/UOContent/Spells/Ninjitsu/KiAttack.cs +++ b/Projects/UOContent/Spells/Ninjitsu/KiAttack.cs @@ -11,8 +11,8 @@ namespace Server.Spells.Ninjitsu public override int BaseMana => 25; public override double RequiredSkill => 80.0; - public override TextDefinition AbilityMessage => - new(1063099); // Your Ki Attack must be complete within 2 seconds for the damage bonus! + // Your Ki Attack must be complete within 2 seconds for the damage bonus! + public override TextDefinition AbilityMessage { get; } = 1063099; public override void OnUse(Mobile from) { diff --git a/Projects/UOContent/Spells/Ninjitsu/SurpriseAttack.cs b/Projects/UOContent/Spells/Ninjitsu/SurpriseAttack.cs index 5e6da6265..7e470944e 100644 --- a/Projects/UOContent/Spells/Ninjitsu/SurpriseAttack.cs +++ b/Projects/UOContent/Spells/Ninjitsu/SurpriseAttack.cs @@ -11,7 +11,7 @@ namespace Server.Spells.Ninjitsu public override int BaseMana => 20; public override double RequiredSkill => Core.ML ? 60.0 : 30.0; - public override TextDefinition AbilityMessage => new(1063128); // You prepare to surprise your prey. + public override TextDefinition AbilityMessage { get; } = 1063128; // You prepare to surprise your prey. public override bool ValidatesDuringHit => false; diff --git a/Projects/UOContent/Spells/Spellweaving/Items/ArcaneFocus.cs b/Projects/UOContent/Spells/Spellweaving/Items/ArcaneFocus.cs index 56676d627..fd51c150e 100644 --- a/Projects/UOContent/Spells/Spellweaving/Items/ArcaneFocus.cs +++ b/Projects/UOContent/Spells/Spellweaving/Items/ArcaneFocus.cs @@ -31,7 +31,7 @@ namespace Server.Items [CommandProperty(AccessLevel.GameMaster)] public int StrengthBonus { get; set; } - public override TextDefinition InvalidTransferMessage => 1073480; // Your arcane focus disappears. + public override TextDefinition InvalidTransferMessage { get; } = 1073480; // Your arcane focus disappears. public override bool Nontransferable => true; public override void GetProperties(IPropertyList list) diff --git a/Projects/UOContent/Spells/Spellweaving/Items/TransientItem.cs b/Projects/UOContent/Spells/Spellweaving/Items/TransientItem.cs index bfbd9fa81..d4d610039 100644 --- a/Projects/UOContent/Spells/Spellweaving/Items/TransientItem.cs +++ b/Projects/UOContent/Spells/Spellweaving/Items/TransientItem.cs @@ -29,7 +29,7 @@ namespace Server.Items public override bool Nontransferable => true; - public virtual TextDefinition InvalidTransferMessage => null; + public virtual TextDefinition InvalidTransferMessage => TextDefinition.Empty; public override void HandleInvalidTransfer(Mobile from) {