From 4898f7022324710b5d5428991988e0c8d0e4241c Mon Sep 17 00:00:00 2001 From: NetDwarf Date: Fri, 17 Feb 2023 13:43:08 +0100 Subject: [PATCH 1/5] Show error for wrong ID in DBCharacterClass.EligibleRace Fail early if it can't be parsed Remove PlayerRace.TryGetRace (unused) Add PlayerRace.Unknown as NullObject --- .../CharacterClasses/CharacterClass.cs | 20 ++++++++++----- GameServer/gameobjects/PlayerRace.cs | 25 ++++++------------- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/GameServer/gameobjects/CharacterClasses/CharacterClass.cs b/GameServer/gameobjects/CharacterClasses/CharacterClass.cs index d475bfe16d..3321d240e3 100644 --- a/GameServer/gameobjects/CharacterClasses/CharacterClass.cs +++ b/GameServer/gameobjects/CharacterClasses/CharacterClass.cs @@ -9,6 +9,8 @@ namespace DOL.GS { public class CharacterClass { + private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + private static Dictionary allClasses = new Dictionary(); private GamePlayer player; @@ -66,13 +68,19 @@ public static CharacterClass Create(DBCharacterClass dbCharClass) charClass.ProfessionTranslationID = dbCharClass.ProfessionTranslationID; charClass.AutoTrainSkills = dbCharClass.AutoTrainSkills - .Split(';', ',').Where(s => !string.IsNullOrEmpty(s)); + .Split(new[] { ';', ',' }, StringSplitOptions.RemoveEmptyEntries); - var newElibibleRaces = dbCharClass.EligibleRaces - .Split(';', ',').Where(s => !string.IsNullOrEmpty(s)) - .Select(s => Convert.ToInt32(s)) - .Select(i => PlayerRace.GetRace(i)); - charClass.eligibleRaces = newElibibleRaces; + var eligibleRaces = new List(); + var raceIDs = dbCharClass.EligibleRaces + .Split(new[] { ';', ',' }, StringSplitOptions.RemoveEmptyEntries) + .Select(s => Convert.ToInt32(s)); + foreach(var raceID in raceIDs) + { + var race = PlayerRace.GetRace(raceID); + if(race.Equals(PlayerRace.Unknown)) log.Error($"CharacterClass with ID {charClass.ID} contains invalid EligibleRace {raceID}"); + else eligibleRaces.Add(race); + } + charClass.eligibleRaces = eligibleRaces; charClass.MaxPulsingSpells = dbCharClass.MaxPulsingSpells == 0 ? (byte)2 : dbCharClass.MaxPulsingSpells; diff --git a/GameServer/gameobjects/PlayerRace.cs b/GameServer/gameobjects/PlayerRace.cs index a11d5699cf..0c19b3d8e9 100644 --- a/GameServer/gameobjects/PlayerRace.cs +++ b/GameServer/gameobjects/PlayerRace.cs @@ -42,9 +42,10 @@ private PlayerRace(eRace race, eRealm realm, eDAoCExpansion expansion, eLivingMo FemaleModel = femaleModel; } + public static PlayerRace Unknown { get; } = new PlayerRace(); + private static Dictionary races = new Dictionary() { - { eRace.Unknown, new PlayerRace() }, { eRace.Briton, new PlayerRace( eRace.Briton, eRealm.Albion, eDAoCExpansion.Classic, eLivingModel.BritonMale, eLivingModel.BritonFemale) } , { eRace.Highlander, new PlayerRace(eRace.Highlander, eRealm.Albion, eDAoCExpansion.Classic, eLivingModel.HighlanderMale, eLivingModel.HighlanderFemale) } , { eRace.Saracen, new PlayerRace(eRace.Saracen, eRealm.Albion, eDAoCExpansion.Classic, eLivingModel.SaracenMale, eLivingModel.SaracenFemale) } , @@ -68,22 +69,12 @@ private PlayerRace(eRace race, eRealm realm, eDAoCExpansion expansion, eLivingMo { eRace.Graoch, new PlayerRace(eRace.Graoch, eRealm.Hibernia, eDAoCExpansion.LabyrinthOfTheMinotaur, eLivingModel.MinotaurMaleHib, eLivingModel.None) } , }; - /// - /// Try to retrieve a PlayerRace based on eRace - /// - /// - /// - /// - public static bool TryGetRace(eRace key, out PlayerRace playerRace) - { - return races.TryGetValue(key, out playerRace); - } - - public static PlayerRace GetRace(int id) - { - races.TryGetValue((eRace)id,out var race); - return race; - } + public static PlayerRace GetRace(int id) + { + races.TryGetValue((eRace)id, out var race); + if (race == null) return Unknown; + return race; + } public eLivingModel GetModel(eGender gender) { From ca70ae9f6ed54fcd08151bbe3f8182272946b3ca Mon Sep 17 00:00:00 2001 From: NetDwarf Date: Fri, 17 Feb 2023 13:58:46 +0100 Subject: [PATCH 2/5] Load default CharacterClass if loading from DB fails --- .../CharacterClasses/CharacterClass.cs | 4 +-- .../CharacterClasses/CharacterClassDB.cs | 25 ++++++++++--------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/GameServer/gameobjects/CharacterClasses/CharacterClass.cs b/GameServer/gameobjects/CharacterClasses/CharacterClass.cs index 3321d240e3..2c7ce7a532 100644 --- a/GameServer/gameobjects/CharacterClasses/CharacterClass.cs +++ b/GameServer/gameobjects/CharacterClasses/CharacterClass.cs @@ -74,10 +74,10 @@ public static CharacterClass Create(DBCharacterClass dbCharClass) var raceIDs = dbCharClass.EligibleRaces .Split(new[] { ';', ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(s => Convert.ToInt32(s)); - foreach(var raceID in raceIDs) + foreach (var raceID in raceIDs) { var race = PlayerRace.GetRace(raceID); - if(race.Equals(PlayerRace.Unknown)) log.Error($"CharacterClass with ID {charClass.ID} contains invalid EligibleRace {raceID}"); + if (race.Equals(PlayerRace.Unknown)) log.Error($"CharacterClass with ID {charClass.ID} contains invalid EligibleRace {raceID}."); else eligibleRaces.Add(race); } charClass.eligibleRaces = eligibleRaces; diff --git a/GameServer/gameobjects/CharacterClasses/CharacterClassDB.cs b/GameServer/gameobjects/CharacterClasses/CharacterClassDB.cs index b0ea651f57..3edbd1c687 100644 --- a/GameServer/gameobjects/CharacterClasses/CharacterClassDB.cs +++ b/GameServer/gameobjects/CharacterClasses/CharacterClassDB.cs @@ -15,27 +15,28 @@ public static void Load() var dbClasses = DOLDB.SelectAllObjects().ToDictionary(c => c.ID, c => c); foreach (var classID in defaultClasses.Keys.ToList().Union(dbClasses.Keys)) { - DBCharacterClass dbClass; + CharacterClass charClass; if (dbClasses.TryGetValue(classID, out var databaseEntry)) { - dbClass = databaseEntry; + try + { + charClass = CharacterClass.Create(databaseEntry); + } + catch (Exception e) + { + log.Error($"CharacterClass with ID {classID} could not be loaded from database. Load default instead.:\n{e}"); + charClass = CharacterClass.Create(defaultClasses[classID]); + } } else { - dbClass = defaultClasses[classID]; + var dbClass = defaultClasses[classID]; dbClass.AllowAdd = true; GameServer.Database.AddObject(dbClass); + charClass = CharacterClass.Create(dbClass); } - try - { - var charClass = CharacterClass.Create(dbClass); - CharacterClass.AddOrReplace(charClass); - } - catch (Exception e) - { - log.Error($"CharacterClass with ID {classID} could not be loaded:\n{e}"); - } + CharacterClass.AddOrReplace(charClass); } } From aeb6598e70729ea56c3f6256f634f46bb33da78c Mon Sep 17 00:00:00 2001 From: NetDwarf Date: Sat, 18 Feb 2023 12:40:47 +0100 Subject: [PATCH 3/5] Remove CharacterClass.Name Add GamePlayer.Salutation Replace GamePlayer.CharacterClass.Name with .Salutation --- GameServer/behaviour/BehaviourUtils.cs | 2 +- GameServer/commands/gmcommands/GMinfo.cs | 2 +- GameServer/commands/gmcommands/Player.cs | 6 +++--- GameServer/commands/playercommands/battlegroup.cs | 2 +- GameServer/commands/playercommands/chatgroup.cs | 2 +- GameServer/commands/playercommands/guild.cs | 6 +++--- GameServer/commands/playercommands/who.cs | 4 ++-- GameServer/gameobjects/Atlantis/Arbiter.cs | 14 +++++++------- GameServer/gameobjects/Atlantis/ArtifactScholar.cs | 2 +- GameServer/gameobjects/Atlantis/Scholar.cs | 2 +- .../gameobjects/CharacterClasses/CharacterClass.cs | 1 - GameServer/gameobjects/CustomNPC/FaceCustomiser.cs | 2 +- GameServer/gameobjects/CustomNPC/GameTrainer.cs | 2 +- GameServer/gameobjects/CustomNPC/GuildRegistrar.cs | 2 +- GameServer/gameobjects/CustomNPC/Hastener.cs | 6 +++--- GameServer/gameobjects/GameNPC.cs | 2 +- GameServer/gameobjects/GamePlayer.cs | 10 ++++++---- GameServer/gameutils/Group.cs | 2 +- .../keeps/Gameobjects/Guards/MissionMaster.cs | 2 +- .../Client/168/PlayerPositionUpdateHandler.cs | 4 ++-- GameServer/packets/Server/PacketLib1125.cs | 2 +- GameServer/packets/Server/PacketLib168.cs | 6 +++--- GameServer/packets/Server/PacketLib169.cs | 2 +- GameServer/packets/Server/PacketLib171.cs | 2 +- GameServer/packets/Server/PacketLib175.cs | 2 +- GameServer/packets/Server/PacketLib176.cs | 2 +- GameServer/packets/Server/PacketLib179.cs | 2 +- GameServer/packets/Server/PacketLib190.cs | 2 +- GameServer/quests/Atlantis/ArtifactTurnInQuest.cs | 2 +- GameServer/quests/Atlantis/Artifacts/AFlask.cs | 2 +- .../quests/Atlantis/Artifacts/AHealersEmbrace.cs | 2 +- .../quests/Atlantis/Artifacts/AlvarusLeggings.cs | 2 +- .../quests/Atlantis/Artifacts/ArmsOfTheWinds.cs | 4 ++-- .../quests/Atlantis/Artifacts/BandOfStars.cs | 4 ++-- GameServer/quests/Atlantis/Artifacts/Battler.cs | 2 +- .../quests/Atlantis/Artifacts/BraggartsBow.cs | 2 +- .../quests/Atlantis/Artifacts/CrocodileTooth.cs | 2 +- .../quests/Atlantis/Artifacts/CrownofZahur.cs | 2 +- .../quests/Atlantis/Artifacts/CyclopsEyeShield.cs | 2 +- .../Atlantis/Artifacts/EerieDarknessStone.cs | 2 +- .../quests/Atlantis/Artifacts/EirenesHauberk.cs | 6 +++--- .../quests/Atlantis/Artifacts/FlamedancersBoots.cs | 2 +- GameServer/quests/Atlantis/Artifacts/FoolsBow.cs | 2 +- .../quests/Atlantis/Artifacts/FoppishSleeves.cs | 2 +- .../quests/Atlantis/Artifacts/GemofLostMemories.cs | 2 +- .../quests/Atlantis/Artifacts/GoldenScarabVest.cs | 2 +- .../quests/Atlantis/Artifacts/GoldenSpear.cs | 2 +- .../quests/Atlantis/Artifacts/GuardOfValor.cs | 6 +++--- GameServer/quests/Atlantis/Artifacts/MalicesAxe.cs | 2 +- .../Atlantis/Artifacts/MariashasSharkskinGloves.cs | 2 +- .../quests/Atlantis/Artifacts/NailahsRobes.cs | 2 +- GameServer/quests/Atlantis/Artifacts/OrionsBelt.cs | 2 +- .../quests/Atlantis/Artifacts/PhoebusHarp.cs | 2 +- .../quests/Atlantis/Artifacts/RingofDances.cs | 2 +- .../Atlantis/Artifacts/ScepteroftheMeritorious.cs | 2 +- .../Atlantis/Artifacts/SnakecharmersWeapon.cs | 2 +- .../quests/Atlantis/Artifacts/SpearofKings.cs | 2 +- .../quests/Atlantis/Artifacts/TraitorsDagger.cs | 2 +- .../quests/Atlantis/Artifacts/TraldorsOracle.cs | 2 +- GameServer/quests/Atlantis/Artifacts/WingedHelm.cs | 2 +- GameServer/quests/Atlantis/Artifacts/WingsDive.cs | 2 +- .../handlers/BedazzlingAuraAbility.cs | 2 +- GameServer/spells/Artifacts/Belt of Sun.cs | 2 +- GameServer/spells/Artifacts/RealmLore.cs | 2 +- GameServer/trainer/albion/FriarTrainer.cs | 2 +- GameServerScripts/quests/Albion/AFewRepairs.cs | 2 +- .../quests/Albion/AMessageToTheManes.cs | 2 +- .../quests/Albion/ANewHeroesWelcome.cs | 2 +- .../quests/Albion/ArrowsForYettaFletcher.cs | 2 +- GameServerScripts/quests/Albion/BoulderlingBalm.cs | 2 +- .../quests/Albion/BuildingABetterBow.cs | 2 +- GameServerScripts/quests/Albion/CemmethsOrders.cs | 2 +- GameServerScripts/quests/Albion/GreenerPastures.cs | 2 +- GameServerScripts/quests/Albion/HalfOgreAllMan.cs | 2 +- GameServerScripts/quests/Albion/LawrencesOil.cs | 2 +- .../quests/Albion/RevengeTheOtherWhiteMeat.cs | 2 +- GameServerScripts/quests/Albion/ShakenSquire.cs | 2 +- .../quests/Albion/ToReachTheBreach.cs | 2 +- GameServerScripts/quests/Albion/epic/Academy50.cs | 6 +++--- GameServerScripts/quests/Albion/epic/Church50.cs | 2 +- .../quests/Hibernia/SearchForKnowledge.cs | 2 +- .../quests/Hibernia/ToReachTheBreach.cs | 2 +- GameServerScripts/quests/Midgard/Frontiers.cs | 2 +- GameServerScripts/quests/Midgard/StolenEggs.cs | 2 +- GameServerScripts/web/WebUIGenerator.cs | 2 +- GameServerScripts/web/XMLWebUIGenerator.cs | 2 +- 86 files changed, 114 insertions(+), 113 deletions(-) diff --git a/GameServer/behaviour/BehaviourUtils.cs b/GameServer/behaviour/BehaviourUtils.cs index 9a49d2884f..3f6e1708ef 100644 --- a/GameServer/behaviour/BehaviourUtils.cs +++ b/GameServer/behaviour/BehaviourUtils.cs @@ -170,7 +170,7 @@ public static string GetPersonalizedMessage(string message, GamePlayer player) } message = message.Replace(RACE, player.RaceName); - message = message.Replace(CLASS, player.CharacterClass.Name); + message = message.Replace(CLASS, player.Salutation); message = message.Replace("", player.RealmTitle); if (message.Contains("")) diff --git a/GameServer/commands/gmcommands/GMinfo.cs b/GameServer/commands/gmcommands/GMinfo.cs index b2473c71ad..06af52824f 100644 --- a/GameServer/commands/gmcommands/GMinfo.cs +++ b/GameServer/commands/gmcommands/GMinfo.cs @@ -332,7 +332,7 @@ public void OnCommand(GameClient client, string[] args) info.Add(" - Lastname : " + target.LastName); info.Add(" - Realm : " + GlobalConstants.RealmToName(target.Realm)); info.Add(" - Level : " + target.Level); - info.Add(" - Class : " + target.CharacterClass.Name); + info.Add(" - Class : " + target.Salutation); info.Add(" - Guild : " + target.GuildName); info.Add(" "); info.Add(" - Account Name : " + target.AccountName); diff --git a/GameServer/commands/gmcommands/Player.cs b/GameServer/commands/gmcommands/Player.cs index 45793cf292..5f6ad69e14 100644 --- a/GameServer/commands/gmcommands/Player.cs +++ b/GameServer/commands/gmcommands/Player.cs @@ -2053,7 +2053,7 @@ public void OnCommand(GameClient client, string[] args) foreach (GamePlayer p in player.Group.GetPlayersInTheGroup()) { - text.Add(p.Name + " " + p.Level + " " + p.CharacterClass.Name); + text.Add(p.Name + " " + p.Level + " " + p.Salutation); } client.Out.SendCustomTextWindow("Group Members", text); @@ -2263,7 +2263,7 @@ private void Show_Inventory(GamePlayer player, GameClient client, string limitTy var text = new List(); text.Add(" - Name Lastname : " + player.Name + " " + player.LastName); text.Add(" - Realm Level Class : " + GlobalConstants.RealmToName(player.Realm) + " " + player.Level + " " + - player.CharacterClass.Name); + player.Salutation); text.Add(" "); text.Add(Money.GetShortString(player.CopperBalance)); text.Add(" "); @@ -2353,7 +2353,7 @@ private void Show_Info(GamePlayer player, GameClient client) text.Add(" "); text.Add("PLAYER INFORMATION (Client # " + player.Client.SessionID + ", " + player.GetType().FullName + ")"); text.Add(" - Name Lastname : " + player.Name + " " + player.LastName); - text.Add(" - Realm Level Gender Class : " + GlobalConstants.RealmToName(player.Realm) + " " + player.Level + " " + player.Gender + " " + player.CharacterClass.Name + " (" + player.CharacterClass.ID + ")"); + text.Add(" - Realm Level Gender Class : " + GlobalConstants.RealmToName(player.Realm) + " " + player.Level + " " + player.Gender + " " + player.Salutation + " (" + player.CharacterClass.ID + ")"); text.Add(" - Guild : " + player.GuildName + " " + (player.GuildRank != null ? "Rank: " + player.GuildRank.RankLevel.ToString() : "")); text.Add(" - XPs/RPs/BPs : " + player.Experience + " xp, " + player.RealmPoints + " rp, " + player.BountyPointBalance + " bp"); diff --git a/GameServer/commands/playercommands/battlegroup.cs b/GameServer/commands/playercommands/battlegroup.cs index 12015a3950..d45aa20294 100644 --- a/GameServer/commands/playercommands/battlegroup.cs +++ b/GameServer/commands/playercommands/battlegroup.cs @@ -309,7 +309,7 @@ public void OnCommand(GameClient client, string[] args) { text.Append(" "); } - text.Append("(" + nongrouped.CharacterClass.Name + ")"); + text.Append("(" + nongrouped.Salutation + ")"); text.Append(nongrouped.Name + '\n'); client.Out.SendMessage(text.ToString(), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow); } diff --git a/GameServer/commands/playercommands/chatgroup.cs b/GameServer/commands/playercommands/chatgroup.cs index addb10c7a4..27bd48c6a9 100644 --- a/GameServer/commands/playercommands/chatgroup.cs +++ b/GameServer/commands/playercommands/chatgroup.cs @@ -160,7 +160,7 @@ public void OnCommand(GameClient client, string[] args) text.Append(">"); } text.Append(" ("); - text.Append(player.CharacterClass.Name); + text.Append(player.Salutation); text.Append(")"); client.Out.SendMessage(text.ToString(), eChatType.CT_System, eChatLoc.CL_SystemWindow); //TODO: make function formatstring diff --git a/GameServer/commands/playercommands/guild.cs b/GameServer/commands/playercommands/guild.cs index f6ef0532da..05c479eff3 100644 --- a/GameServer/commands/playercommands/guild.cs +++ b/GameServer/commands/playercommands/guild.cs @@ -1540,7 +1540,7 @@ public void OnCommand(GameClient client, string[] args) { ind++; string zoneName = (ply.CurrentZone == null ? "(null)" : ply.CurrentZone.Description); - string mesg = ind + ") " + ply.Name + " the Level " + ply.Level + " " + ply.CharacterClass.Name + " in " + zoneName; + string mesg = ind + ") " + ply.Name + " the Level " + ply.Level + " " + ply.Salutation + " in " + zoneName; client.Out.SendMessage(mesg, eChatType.CT_Guild, eChatLoc.CL_SystemWindow); } } @@ -1568,9 +1568,9 @@ public void OnCommand(GameClient client, string[] args) string zoneName = (ply.CurrentZone == null ? "(null)" : ply.CurrentZone.Description); string mesg; if (ply.GuildRank.Title != null) - mesg = ind.ToString() + ") " + ply.Name + " <" + ply.GuildRank.Title + "> the Level " + ply.Level.ToString() + " " + ply.CharacterClass.Name + " in " + zoneName; + mesg = ind.ToString() + ") " + ply.Name + " <" + ply.GuildRank.Title + "> the Level " + ply.Level.ToString() + " " + ply.Salutation + " in " + zoneName; else - mesg = ind.ToString() + ") " + ply.Name + " <" + ply.GuildRank.RankLevel.ToString() + "> the Level " + ply.Level.ToString() + " " + ply.CharacterClass.Name + " in " + zoneName; + mesg = ind.ToString() + ") " + ply.Name + " <" + ply.GuildRank.RankLevel.ToString() + "> the Level " + ply.Level.ToString() + " " + ply.Salutation + " in " + zoneName; if (ServerProperties.Properties.ALLOW_CHANGE_LANGUAGE) mesg += " <" + ply.Client.Account.Language + ">"; if (ind >= startInd) diff --git a/GameServer/commands/playercommands/who.cs b/GameServer/commands/playercommands/who.cs index f786bc88a6..00ef42ed9b 100644 --- a/GameServer/commands/playercommands/who.cs +++ b/GameServer/commands/playercommands/who.cs @@ -239,7 +239,7 @@ private string FormatLine(GamePlayer player, uint PrivLevel, GameClient source) if (player.ClassNameFlag) { result.Append(" "); - result.Append(LanguageMgr.GetTranslation(source, "PlayerClass.Name." + player.CharacterClass.Name)); + result.Append(LanguageMgr.GetTranslation(source, "PlayerClass.Name." + player.Salutation)); } else if (player.CharacterClass != null) { @@ -388,7 +388,7 @@ public bool ApplyFilter(GamePlayer player) return true; if (GameServer.Instance.Configuration.ServerType == eGameServerType.GST_PvP) return false; - if (player.CharacterClass.Name.ToLower().StartsWith(m_filterString)) + if (player.Salutation.ToLower().StartsWith(m_filterString)) return true; if (player.CurrentZone != null && player.CurrentZone.Description.ToLower().Contains(m_filterString)) return true; diff --git a/GameServer/gameobjects/Atlantis/Arbiter.cs b/GameServer/gameobjects/Atlantis/Arbiter.cs index bd4922f34e..92a851d8fb 100644 --- a/GameServer/gameobjects/Atlantis/Arbiter.cs +++ b/GameServer/gameobjects/Atlantis/Arbiter.cs @@ -46,7 +46,7 @@ public override bool Interact(GamePlayer player) String realm = GlobalConstants.RealmToName((eRealm)Realm); SayTo(player, eChatLoc.CL_PopupWindow, LanguageMgr.GetTranslation(player.Client.Account.Language, - String.Format("{0}.Arbiter.Interact.Welcome", realm), player.CharacterClass.Name)); + String.Format("{0}.Arbiter.Interact.Welcome", realm), player.Salutation)); // TODO: This appears to be level-dependent. Get the proper message // for all the other cases (high enough level when starting the trials @@ -75,7 +75,7 @@ public override bool WhisperReceive(GameLiving source, string text) { SayTo(player, eChatLoc.CL_PopupWindow, LanguageMgr.GetTranslation(player.Client.Account.Language, - String.Format("{0}.Arbiter.WhisperReceive.Text1", realm), player.CharacterClass.Name)); + String.Format("{0}.Arbiter.WhisperReceive.Text1", realm), player.Salutation)); return false; } else if (lowerCase == LanguageMgr.GetTranslation(player.Client.Account.Language, @@ -99,7 +99,7 @@ public override bool WhisperReceive(GameLiving source, string text) { SayTo(player, eChatLoc.CL_PopupWindow, LanguageMgr.GetTranslation(player.Client.Account.Language, - String.Format("{0}.Arbiter.WhisperReceive.Text4", realm), player.CharacterClass.Name)); + String.Format("{0}.Arbiter.WhisperReceive.Text4", realm), player.Salutation)); return false; } else if (lowerCase == LanguageMgr.GetTranslation(player.Client.Account.Language, @@ -115,7 +115,7 @@ public override bool WhisperReceive(GameLiving source, string text) { SayTo(player, eChatLoc.CL_PopupWindow, LanguageMgr.GetTranslation(player.Client.Account.Language, - String.Format("{0}.Arbiter.WhisperReceive.Text6", realm), player.CharacterClass.Name)); + String.Format("{0}.Arbiter.WhisperReceive.Text6", realm), player.Salutation)); return false; } else if (lowerCase == LanguageMgr.GetTranslation(player.Client.Account.Language, @@ -123,7 +123,7 @@ public override bool WhisperReceive(GameLiving source, string text) { SayTo(player, eChatLoc.CL_PopupWindow, LanguageMgr.GetTranslation(player.Client.Account.Language, - String.Format("{0}.Arbiter.WhisperReceive.Text7", realm), player.CharacterClass.Name)); + String.Format("{0}.Arbiter.WhisperReceive.Text7", realm), player.Salutation)); return false; } else if (lowerCase == LanguageMgr.GetTranslation(player.Client.Account.Language, @@ -131,7 +131,7 @@ public override bool WhisperReceive(GameLiving source, string text) { SayTo(player, eChatLoc.CL_PopupWindow, LanguageMgr.GetTranslation(player.Client.Account.Language, - String.Format("{0}.Arbiter.WhisperReceive.Text8", realm), player.CharacterClass.Name)); + String.Format("{0}.Arbiter.WhisperReceive.Text8", realm), player.Salutation)); return false; } else if (lowerCase == LanguageMgr.GetTranslation(player.Client.Account.Language, @@ -139,7 +139,7 @@ public override bool WhisperReceive(GameLiving source, string text) { SayTo(player, eChatLoc.CL_PopupWindow, LanguageMgr.GetTranslation(player.Client.Account.Language, - String.Format("{0}.Arbiter.WhisperReceive.Text9", realm), player.CharacterClass.Name)); + String.Format("{0}.Arbiter.WhisperReceive.Text9", realm), player.Salutation)); return false; } diff --git a/GameServer/gameobjects/Atlantis/ArtifactScholar.cs b/GameServer/gameobjects/Atlantis/ArtifactScholar.cs index 5fafabd10d..6862231f8b 100644 --- a/GameServer/gameobjects/Atlantis/ArtifactScholar.cs +++ b/GameServer/gameobjects/Atlantis/ArtifactScholar.cs @@ -138,7 +138,7 @@ public override bool Interact(GamePlayer player) (eCharacterClass)player.CharacterClass.ID, (eRealm)player.Realm); if (versions.Count > 1) { - this.SayTo(player, string.Format("{0}, I see that you carry {1}. If you are interested, I will exchange yours for you but there is a price to pay for the change. Any experience or levels your artifact has gained will be lost when the change occurs. Are you still [interested]?", player.CharacterClass.Name, art)); + this.SayTo(player, string.Format("{0}, I see that you carry {1}. If you are interested, I will exchange yours for you but there is a price to pay for the change. Any experience or levels your artifact has gained will be lost when the change occurs. Are you still [interested]?", player.Salutation, art)); } } return true; diff --git a/GameServer/gameobjects/Atlantis/Scholar.cs b/GameServer/gameobjects/Atlantis/Scholar.cs index e340cfc3ef..00573c85b7 100644 --- a/GameServer/gameobjects/Atlantis/Scholar.cs +++ b/GameServer/gameobjects/Atlantis/Scholar.cs @@ -97,7 +97,7 @@ public override bool Interact(GamePlayer player) else { intro = String.Format("Which artifact may I assist you with, {0}? {1} {2}", - player.CharacterClass.Name, + player.Salutation, "I study the lore and magic of the following artifacts:", artifacts); diff --git a/GameServer/gameobjects/CharacterClasses/CharacterClass.cs b/GameServer/gameobjects/CharacterClasses/CharacterClass.cs index 2c7ce7a532..c9f3ab0d44 100644 --- a/GameServer/gameobjects/CharacterClasses/CharacterClass.cs +++ b/GameServer/gameobjects/CharacterClasses/CharacterClass.cs @@ -34,7 +34,6 @@ public class CharacterClass public string ProfessionTranslationID { get; private set; } = ""; public ushort MaxPulsingSpells { get; private set; } - public string Name => GetSalutation(player.Gender); public string BaseName => GetClass(baseClassID).name; public string Profession => LanguageMgr.TryTranslateOrDefault(player, ProfessionTranslationID, ProfessionTranslationID); diff --git a/GameServer/gameobjects/CustomNPC/FaceCustomiser.cs b/GameServer/gameobjects/CustomNPC/FaceCustomiser.cs index 8a2765ef9c..62e1b842d2 100644 --- a/GameServer/gameobjects/CustomNPC/FaceCustomiser.cs +++ b/GameServer/gameobjects/CustomNPC/FaceCustomiser.cs @@ -58,7 +58,7 @@ public override bool Interact(GamePlayer player) if(player.CustomisationStep == 2) { - SayTo(player, eChatLoc.CL_PopupWindow, player.CharacterClass.Name +", I have discovered a secret spell that will allow you to change your appearance. I can cast this spell upon you if you wish. All you must do is say the word and I will [change your appearance]."); + SayTo(player, eChatLoc.CL_PopupWindow, player.Salutation +", I have discovered a secret spell that will allow you to change your appearance. I can cast this spell upon you if you wish. All you must do is say the word and I will [change your appearance]."); } else if(player.CustomisationStep == 3) { diff --git a/GameServer/gameobjects/CustomNPC/GameTrainer.cs b/GameServer/gameobjects/CustomNPC/GameTrainer.cs index 455d2bcf16..72e7c67c85 100644 --- a/GameServer/gameobjects/CustomNPC/GameTrainer.cs +++ b/GameServer/gameobjects/CustomNPC/GameTrainer.cs @@ -386,7 +386,7 @@ public bool PromotePlayer(GamePlayer player, int classid, string messageToPlayer if (messageToPlayer != "") player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameTrainer.PromotePlayer.Says", this.Name, messageToPlayer), eChatType.CT_System, eChatLoc.CL_PopupWindow); - player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameTrainer.PromotePlayer.Upgraded", player.CharacterClass.Name), eChatType.CT_Important, eChatLoc.CL_SystemWindow); + player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameTrainer.PromotePlayer.Upgraded", player.Salutation), eChatType.CT_Important, eChatLoc.CL_SystemWindow); player.RefreshSpecDependantSkills(true); player.StartPowerRegeneration(); diff --git a/GameServer/gameobjects/CustomNPC/GuildRegistrar.cs b/GameServer/gameobjects/CustomNPC/GuildRegistrar.cs index ce826f7b61..e3ab299321 100644 --- a/GameServer/gameobjects/CustomNPC/GuildRegistrar.cs +++ b/GameServer/gameobjects/CustomNPC/GuildRegistrar.cs @@ -32,7 +32,7 @@ public override bool Interact(GamePlayer player) if (!base.Interact(player)) return false; - SayTo(player, "Hail, " + player.CharacterClass.Name + ". Have you come to [" + FORM_A_GUILD + "]?"); + SayTo(player, "Hail, " + player.Salutation + ". Have you come to [" + FORM_A_GUILD + "]?"); return true; } diff --git a/GameServer/gameobjects/CustomNPC/Hastener.cs b/GameServer/gameobjects/CustomNPC/Hastener.cs index e3cba7fd80..aacd5c901d 100644 --- a/GameServer/gameobjects/CustomNPC/Hastener.cs +++ b/GameServer/gameobjects/CustomNPC/Hastener.cs @@ -51,20 +51,20 @@ public override bool Interact(GamePlayer player) if (player.CurrentRegion.IsCapitalCity) SayTo(player, string.Format("{0} {1}. {2} {3} {4}", LanguageMgr.GetTranslation(player.Client.Account.Language, "GameHastener.Greeting"), - player.CharacterClass.Name, + player.Salutation, LanguageMgr.GetTranslation(player.Client.Account.Language, "GameHastener.CityMovementOffer"), LanguageMgr.GetTranslation(player.Client.Account.Language, "GameHastener.StrengthOffer"), LanguageMgr.GetTranslation(player.Client.Account.Language, "GameHastener.BorderKeepPortOffer"))); else if (IsShroudedIslesStartZone(player.CurrentZone.ID)) SayTo(player, string.Format("{0} {1}. {2} {3}", LanguageMgr.GetTranslation(player.Client.Account.Language, "GameHastener.Greeting"), - player.CharacterClass.Name, + player.Salutation, LanguageMgr.GetTranslation(player.Client.Account.Language, "GameHastener.CityMovementOffer"), LanguageMgr.GetTranslation(player.Client.Account.Language, "GameHastener.BorderKeepPortOffer"))); else if(!player.CurrentRegion.IsRvR)//default message outside of RvR SayTo(player, string.Format("{0} {1}. {2}", LanguageMgr.GetTranslation(player.Client.Account.Language, "GameHastener.Greeting"), - player.CharacterClass.Name, + player.Salutation, LanguageMgr.GetTranslation(player.Client.Account.Language, "GameHastener.DefaultMovementOffer"))); return true; } diff --git a/GameServer/gameobjects/GameNPC.cs b/GameServer/gameobjects/GameNPC.cs index efdcc78315..20e2f6bd18 100644 --- a/GameServer/gameobjects/GameNPC.cs +++ b/GameServer/gameobjects/GameNPC.cs @@ -5593,7 +5593,7 @@ public void FireAmbientSentence(eAmbientTrigger trigger, GameLiving living = nul // issuing text if (living is GamePlayer) - text = text.Replace("{class}", (living as GamePlayer).CharacterClass.Name).Replace("{race}", (living as GamePlayer).RaceName); + text = text.Replace("{class}", (living as GamePlayer).Salutation).Replace("{race}", (living as GamePlayer).RaceName); if (living is GameNPC) text = text.Replace("{class}", "NPC").Replace("{race}", "NPC"); diff --git a/GameServer/gameobjects/GamePlayer.cs b/GameServer/gameobjects/GamePlayer.cs index 094ade1df8..dbcb61e4d8 100644 --- a/GameServer/gameobjects/GamePlayer.cs +++ b/GameServer/gameobjects/GamePlayer.cs @@ -2807,6 +2807,8 @@ public override short Race public virtual CharacterClass CharacterClass { get; protected set; } + public string Salutation => CharacterClass.GetSalutation(Gender); + [Obsolete("Use SetCharacterClass(CharacterClass) instead.")] public virtual bool SetCharacterClass(int id) { @@ -12755,7 +12757,7 @@ public override IList GetExamineMessages(GamePlayer player) case eGameServerType.GST_Normal: { if (Realm == player.Realm || Client.Account.PrivLevel > 1 || player.Client.Account.PrivLevel > 1) - message = LanguageMgr.GetTranslation(player.Client.Account.Language, "GamePlayer.GetExamineMessages.RealmMember", player.GetName(this), GetPronoun(Client, 0, true), CharacterClass.Name); + message = LanguageMgr.GetTranslation(player.Client.Account.Language, "GamePlayer.GetExamineMessages.RealmMember", player.GetName(this), GetPronoun(Client, 0, true), Salutation); else message = LanguageMgr.GetTranslation(player.Client.Account.Language, "GamePlayer.GetExamineMessages.EnemyRealmMember", player.GetName(this), GetPronoun(Client, 0, true)); break; @@ -12764,11 +12766,11 @@ public override IList GetExamineMessages(GamePlayer player) case eGameServerType.GST_PvP: { if (Client.Account.PrivLevel > 1 || player.Client.Account.PrivLevel > 1) - message = LanguageMgr.GetTranslation(player.Client.Account.Language, "GamePlayer.GetExamineMessages.YourGuildMember", player.GetName(this), GetPronoun(Client, 0, true), CharacterClass.Name); + message = LanguageMgr.GetTranslation(player.Client.Account.Language, "GamePlayer.GetExamineMessages.YourGuildMember", player.GetName(this), GetPronoun(Client, 0, true), Salutation); else if (Guild == null) message = LanguageMgr.GetTranslation(player.Client.Account.Language, "GamePlayer.GetExamineMessages.NeutralMember", player.GetName(this), GetPronoun(Client, 0, true)); else if (Guild == player.Guild || Client.Account.PrivLevel > 1 || player.Client.Account.PrivLevel > 1) - message = LanguageMgr.GetTranslation(player.Client.Account.Language, "GamePlayer.GetExamineMessages.YourGuildMember", player.GetName(this), GetPronoun(Client, 0, true), CharacterClass.Name); + message = LanguageMgr.GetTranslation(player.Client.Account.Language, "GamePlayer.GetExamineMessages.YourGuildMember", player.GetName(this), GetPronoun(Client, 0, true), Salutation); else message = LanguageMgr.GetTranslation(player.Client.Account.Language, "GamePlayer.GetExamineMessages.OtherGuildMember", player.GetName(this), GetPronoun(Client, 0, true), GuildName); break; @@ -15567,7 +15569,7 @@ public bool CanReceiveArtifact(string artifactID) public override string ToString() { return new StringBuilder(base.ToString()) - .Append(" class=").Append(CharacterClass.Name) + .Append(" class=").Append(Salutation) .Append('(').Append(CharacterClass.ID.ToString()).Append(')') .ToString(); } diff --git a/GameServer/gameutils/Group.cs b/GameServer/gameutils/Group.cs index db804043e3..e3f244b95f 100644 --- a/GameServer/gameutils/Group.cs +++ b/GameServer/gameutils/Group.cs @@ -483,7 +483,7 @@ public string GroupMemberClassString(GamePlayer player) text.Append(" "); } } - text.Append("(" + plr.CharacterClass.Name + ")"); + text.Append("(" + plr.Salutation + ")"); text.Append(plr.Name + " "); } return text.ToString(); diff --git a/GameServer/keeps/Gameobjects/Guards/MissionMaster.cs b/GameServer/keeps/Gameobjects/Guards/MissionMaster.cs index b74943607e..2af03c4692 100644 --- a/GameServer/keeps/Gameobjects/Guards/MissionMaster.cs +++ b/GameServer/keeps/Gameobjects/Guards/MissionMaster.cs @@ -35,7 +35,7 @@ public override bool Interact(GamePlayer player) return false; if (Component == null) - SayTo(player, "Greetings, " + player.Name + ". We have put out the call far and wide for heroes such as yourself to aid us in our ongoing struggle. It warms my heart good to to see a great " + player.CharacterClass.Name + " such as yourself willing to lay their life on the line in defence of the [realm]."); + SayTo(player, "Greetings, " + player.Name + ". We have put out the call far and wide for heroes such as yourself to aid us in our ongoing struggle. It warms my heart good to to see a great " + player.Salutation + " such as yourself willing to lay their life on the line in defence of the [realm]."); else SayTo(player, "Hail and well met, " + player.Name + "! As the leader of our forces, I am calling upon our finest warriors to aid in the vanquishing of our enemies. Do you wish to do your duty in defence of our [realm]?"); return true; } diff --git a/GameServer/packets/Client/168/PlayerPositionUpdateHandler.cs b/GameServer/packets/Client/168/PlayerPositionUpdateHandler.cs index 85ead71f9e..d39c123f02 100644 --- a/GameServer/packets/Client/168/PlayerPositionUpdateHandler.cs +++ b/GameServer/packets/Client/168/PlayerPositionUpdateHandler.cs @@ -657,7 +657,7 @@ public void HandlePacket(GameClient client, GSPacketIn packet) var outpak190 = new GSUDPPacketOut(client.Out.GetPacketCode(eServerPackets.PlayerPosition)); outpak190.Write(outpakArr, 5, outpakArr.Length - 5); - outpak190.FillString(client.Player.CharacterClass.Name, 32); + outpak190.FillString(client.Player.Salutation, 32); outpak190.WriteByte((byte)(client.Player.RPFlag ? 1 : 0)); // roleplay flag, if == 1, show name (RP) with gray color outpak190.WriteByte(0); // send last byte for 190+ packets outpak190.WritePacketLength(); @@ -1233,7 +1233,7 @@ private void _HandlePacket1124(GameClient client, GSPacketIn packet) outpak1112.WriteByte(0); outpak1112.WritePacketLength(); - outpak190.FillString(client.Player.CharacterClass.Name, 32); + outpak190.FillString(client.Player.Salutation, 32); outpak190.WriteByte((byte)(client.Player.RPFlag ? 1 : 0)); outpak190.WriteByte(0); outpak190.WritePacketLength(); diff --git a/GameServer/packets/Server/PacketLib1125.cs b/GameServer/packets/Server/PacketLib1125.cs index 1bb5abd355..e9701f7a30 100644 --- a/GameServer/packets/Server/PacketLib1125.cs +++ b/GameServer/packets/Server/PacketLib1125.cs @@ -426,7 +426,7 @@ public override void SendGroupWindowUpdate() foreach (GameLiving living in group.GetMembersInTheGroup()) { pak.WritePascalString(living.Name); - pak.WritePascalString(living is GamePlayer ? ((GamePlayer)living).CharacterClass.Name : "NPC"); + pak.WritePascalString(living is GamePlayer ? ((GamePlayer)living).Salutation : "NPC"); pak.WriteShort((ushort)living.ObjectID); //or session id? pak.WriteByte(living.Level); } diff --git a/GameServer/packets/Server/PacketLib168.cs b/GameServer/packets/Server/PacketLib168.cs index cb905db314..129d0f2e63 100644 --- a/GameServer/packets/Server/PacketLib168.cs +++ b/GameServer/packets/Server/PacketLib168.cs @@ -1355,7 +1355,7 @@ public virtual void SendFindGroupWindowUpdate(GamePlayer[] list) } pak.WriteByte(player.Level); pak.WritePascalString(player.Name); - pak.WriteString(player.CharacterClass.Name, 4); + pak.WriteString(player.Salutation, 4); //Dinberg:Instances - have to write zoneskinID, it uses this to display the text 'x is in y'. if (player.CurrentZone != null) pak.WriteByte((byte) player.CurrentZone.ZoneSkinID); @@ -1689,7 +1689,7 @@ public virtual void SendGroupWindowUpdate() pak.WriteByte(0); } pak.WritePascalString(updateLiving.Name); - pak.WritePascalString(updateLiving is GamePlayer ? ((GamePlayer) updateLiving).CharacterClass.Name : "NPC"); + pak.WritePascalString(updateLiving is GamePlayer ? ((GamePlayer) updateLiving).Salutation : "NPC"); //classname } } @@ -2193,7 +2193,7 @@ public virtual void SendUpdatePlayer() pak.WriteByte(player.GetDisplayLevel(m_gameClient.Player)); //level pak.WritePascalString(player.Name); // player name pak.WriteByte((byte) (player.MaxHealth >> 8)); // maxhealth high byte ? - pak.WritePascalString(player.CharacterClass.Name); // class name + pak.WritePascalString(player.Salutation); // class name pak.WriteByte((byte) (player.MaxHealth & 0xFF)); // maxhealth low byte ? pak.WritePascalString( /*"The "+*/player.CharacterClass.Profession); // Profession pak.WriteByte(0x00); //unk diff --git a/GameServer/packets/Server/PacketLib169.cs b/GameServer/packets/Server/PacketLib169.cs index b870b9fe90..3285b9c506 100644 --- a/GameServer/packets/Server/PacketLib169.cs +++ b/GameServer/packets/Server/PacketLib169.cs @@ -97,7 +97,7 @@ public override void SendGroupWindowUpdate() pak.WriteShort(0); } pak.WritePascalString(living.Name); - pak.WritePascalString(living is GamePlayer ? ((GamePlayer)living).CharacterClass.Name : "NPC");//classname + pak.WritePascalString(living is GamePlayer ? ((GamePlayer)living).Salutation : "NPC");//classname } } SendTCP(pak); diff --git a/GameServer/packets/Server/PacketLib171.cs b/GameServer/packets/Server/PacketLib171.cs index 1a0b19df20..3cf21e860d 100644 --- a/GameServer/packets/Server/PacketLib171.cs +++ b/GameServer/packets/Server/PacketLib171.cs @@ -298,7 +298,7 @@ public override void SendFindGroupWindowUpdate(GamePlayer[] list) } pak.WriteByte(player.Level); pak.WritePascalString(player.Name); - pak.WriteString(player.CharacterClass.Name, 4); + pak.WriteString(player.Salutation, 4); //Dinberg:Instances - you know the score by now ;) //ZoneSkinID for clientside positioning of objects. if (player.CurrentZone != null) diff --git a/GameServer/packets/Server/PacketLib175.cs b/GameServer/packets/Server/PacketLib175.cs index 7b6f3c1a95..54d7cd1187 100644 --- a/GameServer/packets/Server/PacketLib175.cs +++ b/GameServer/packets/Server/PacketLib175.cs @@ -142,7 +142,7 @@ public override void SendUpdatePlayer() pak.WritePascalString(player.Name); pak.WriteByte((byte) (player.MaxHealth >> 8)); // maxhealth high byte ? - pak.WritePascalString(player.CharacterClass.Name); // class name + pak.WritePascalString(player.Salutation); // class name pak.WriteByte((byte) (player.MaxHealth & 0xFF)); // maxhealth low byte ? pak.WritePascalString( /*"The "+*/player.CharacterClass.Profession); // Profession diff --git a/GameServer/packets/Server/PacketLib176.cs b/GameServer/packets/Server/PacketLib176.cs index d74e96df6d..986d25976b 100644 --- a/GameServer/packets/Server/PacketLib176.cs +++ b/GameServer/packets/Server/PacketLib176.cs @@ -69,7 +69,7 @@ public override void SendFindGroupWindowUpdate(GamePlayer[] list) } pak.WriteByte(player.Level); pak.WritePascalString(player.Name); - pak.WriteString(player.CharacterClass.Name, 4); + pak.WriteString(player.Salutation, 4); //Dinberg:Instances - We use ZoneSkinID to bluff our way to victory and //trick the client for positioning objects (as IDs are hard coded). if(player.CurrentZone != null) diff --git a/GameServer/packets/Server/PacketLib179.cs b/GameServer/packets/Server/PacketLib179.cs index ffbdb6cd9e..949aa4f9cd 100644 --- a/GameServer/packets/Server/PacketLib179.cs +++ b/GameServer/packets/Server/PacketLib179.cs @@ -58,7 +58,7 @@ public override void SendUpdatePlayer() pak.WriteByte(player.GetDisplayLevel(m_gameClient.Player)); //level pak.WritePascalString(player.Name); // player name pak.WriteByte((byte) (player.MaxHealth >> 8)); // maxhealth high byte ? - pak.WritePascalString(player.CharacterClass.Name); // class name + pak.WritePascalString(player.Salutation); // class name pak.WriteByte((byte) (player.MaxHealth & 0xFF)); // maxhealth low byte ? pak.WritePascalString( /*"The "+*/player.CharacterClass.Profession); // Profession pak.WriteByte(0x00); //unk diff --git a/GameServer/packets/Server/PacketLib190.cs b/GameServer/packets/Server/PacketLib190.cs index 80e47f636e..39e52c67b2 100644 --- a/GameServer/packets/Server/PacketLib190.cs +++ b/GameServer/packets/Server/PacketLib190.cs @@ -348,7 +348,7 @@ public override void SendPlayerForgedPosition(GamePlayer player) // Write Remainings. pak.WriteByte(player.ManaPercent); pak.WriteByte(player.EndurancePercent); - pak.FillString(player.CharacterClass.Name, 32); + pak.FillString(player.Salutation, 32); pak.WriteByte((byte)(player.RPFlag ? 1 : 0)); pak.WriteByte(0); // send last byte for 190+ packets diff --git a/GameServer/quests/Atlantis/ArtifactTurnInQuest.cs b/GameServer/quests/Atlantis/ArtifactTurnInQuest.cs index c90daa15f4..366f35ad14 100644 --- a/GameServer/quests/Atlantis/ArtifactTurnInQuest.cs +++ b/GameServer/quests/Atlantis/ArtifactTurnInQuest.cs @@ -387,7 +387,7 @@ public override bool WhisperReceive(GameLiving source, GameLiving target, string if (GiveItem(player, template)) { FinishQuest(); - scholar.SayTo(player, eChatLoc.CL_PopupWindow, string.Format("Here is your {0}, {1}. May it serve you well!", ArtifactID, player.CharacterClass.Name)); + scholar.SayTo(player, eChatLoc.CL_PopupWindow, string.Format("Here is your {0}, {1}. May it serve you well!", ArtifactID, player.Salutation)); return true; } diff --git a/GameServer/quests/Atlantis/Artifacts/AFlask.cs b/GameServer/quests/Atlantis/Artifacts/AFlask.cs index b4855031e3..2edfcab93c 100644 --- a/GameServer/quests/Atlantis/Artifacts/AFlask.cs +++ b/GameServer/quests/Atlantis/Artifacts/AFlask.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/AHealersEmbrace.cs b/GameServer/quests/Atlantis/Artifacts/AHealersEmbrace.cs index 95f7e03500..efc49aead9 100644 --- a/GameServer/quests/Atlantis/Artifacts/AHealersEmbrace.cs +++ b/GameServer/quests/Atlantis/Artifacts/AHealersEmbrace.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "it, but it is for you and you alone. Do not destroy it because you will never", "have access to its full power again. Take care of it and it shall aid you in", "the trials", - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/AlvarusLeggings.cs b/GameServer/quests/Atlantis/Artifacts/AlvarusLeggings.cs index cf59f816bf..d4ef354010 100644 --- a/GameServer/quests/Atlantis/Artifacts/AlvarusLeggings.cs +++ b/GameServer/quests/Atlantis/Artifacts/AlvarusLeggings.cs @@ -146,7 +146,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory GiveItem(scholar, player, ArtifactID, template); String reply = String.Format("The spell is complete and the magic {0} {1}! {2} {3} {4}", "of the Leggings has been reawakened from its long sleep! But heed this warning,", - player.CharacterClass.Name, + player.Salutation, "Take good care of these leggings, because the magic contained within them is", "fragile and if the leggings are lost or destroyed, the magic will be gone forever.", "May these leggings serve you well as you travel through the trial planes."); diff --git a/GameServer/quests/Atlantis/Artifacts/ArmsOfTheWinds.cs b/GameServer/quests/Atlantis/Artifacts/ArmsOfTheWinds.cs index db867185c8..2ed0ecb3ad 100644 --- a/GameServer/quests/Atlantis/Artifacts/ArmsOfTheWinds.cs +++ b/GameServer/quests/Atlantis/Artifacts/ArmsOfTheWinds.cs @@ -149,11 +149,11 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "Atlanteans. I am only sad that I shall never get to meet the people that created", "wonderful objects like the Arms of the Winds. The magic in them has been", "reawakened for you,", - player.CharacterClass.Name, + player.Salutation, "You must take care of these sleeves because I cannot do it again. If you lose them", "or they are destroyed, the Arms of the Winds will be forever lost to you. I hope", "they serve you well,", - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/BandOfStars.cs b/GameServer/quests/Atlantis/Artifacts/BandOfStars.cs index 3f81e0b746..9f851fccd6 100644 --- a/GameServer/quests/Atlantis/Artifacts/BandOfStars.cs +++ b/GameServer/quests/Atlantis/Artifacts/BandOfStars.cs @@ -133,13 +133,13 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory GiveItem(scholar, player, ArtifactID, versions[";;"]); String reply = String.Format("Do you see how the stars in the {0} {1}? {2} {3} {4} {5} {6} {7}.", "band have begun to glow, ", - player.CharacterClass.Name, + player.Salutation, "That is because the magic of the bracelet is active again. It shall flow through", "the Band and into you, then back into the Band. Because of this flow, you may not", "give the bracelet to anyone else. Destroying the Bracelet will end the flow of", "magic and once stopped, it cannot be restarted again. May the Band of Stars guide", "you to success in the trials, ", - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/Battler.cs b/GameServer/quests/Atlantis/Artifacts/Battler.cs index 872729406f..1af7a586a7 100644 --- a/GameServer/quests/Atlantis/Artifacts/Battler.cs +++ b/GameServer/quests/Atlantis/Artifacts/Battler.cs @@ -141,7 +141,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory if (RemoveItem(player, item)) { String reply = String.Format("You now have a decision to make, {0}. {1} {2} {3} {4} {5}", - player.CharacterClass.Name, + player.Salutation, "I can unlock your Battler so it uses [slashing] skills or so it uses", "[crushing] skills. In both cases, I can unlock it as a one-handed weapon", "or a two-handed one. All you must do is decide which kind of damage you", diff --git a/GameServer/quests/Atlantis/Artifacts/BraggartsBow.cs b/GameServer/quests/Atlantis/Artifacts/BraggartsBow.cs index 28dab9486e..c8c1689952 100644 --- a/GameServer/quests/Atlantis/Artifacts/BraggartsBow.cs +++ b/GameServer/quests/Atlantis/Artifacts/BraggartsBow.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/CrocodileTooth.cs b/GameServer/quests/Atlantis/Artifacts/CrocodileTooth.cs index d58e9d4946..1d15549cf1 100644 --- a/GameServer/quests/Atlantis/Artifacts/CrocodileTooth.cs +++ b/GameServer/quests/Atlantis/Artifacts/CrocodileTooth.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/CrownofZahur.cs b/GameServer/quests/Atlantis/Artifacts/CrownofZahur.cs index 94d74728bf..59f1a8e7a7 100644 --- a/GameServer/quests/Atlantis/Artifacts/CrownofZahur.cs +++ b/GameServer/quests/Atlantis/Artifacts/CrownofZahur.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/CyclopsEyeShield.cs b/GameServer/quests/Atlantis/Artifacts/CyclopsEyeShield.cs index 195656a628..77dbc6b022 100644 --- a/GameServer/quests/Atlantis/Artifacts/CyclopsEyeShield.cs +++ b/GameServer/quests/Atlantis/Artifacts/CyclopsEyeShield.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/EerieDarknessStone.cs b/GameServer/quests/Atlantis/Artifacts/EerieDarknessStone.cs index 6290b7fa47..37c6e70ab3 100644 --- a/GameServer/quests/Atlantis/Artifacts/EerieDarknessStone.cs +++ b/GameServer/quests/Atlantis/Artifacts/EerieDarknessStone.cs @@ -136,7 +136,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/EirenesHauberk.cs b/GameServer/quests/Atlantis/Artifacts/EirenesHauberk.cs index f2bdbda69e..1774978a30 100644 --- a/GameServer/quests/Atlantis/Artifacts/EirenesHauberk.cs +++ b/GameServer/quests/Atlantis/Artifacts/EirenesHauberk.cs @@ -149,7 +149,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory else { reply = String.Format("The magic of Eirene's Chestpiece is unlocked {0} {1}. {2} {3} {4} {5}, {1}!", - "and linked now to you,", player.CharacterClass.Name, + "and linked now to you,", player.Salutation, "Please know that if you lose or destroy this Chestpiece, it will be gone", "from you forever. I hope it will help you succeed in the trials.", "Bring glory to", GlobalConstants.RealmToName(player.Realm)); @@ -220,7 +220,7 @@ public override bool WhisperReceive(GameLiving source, GameLiving target, string if (Step == 1 && text.ToLower() == ArtifactID.ToLower()) { String reply = String.Format("There is powerful magic flowing through that artifact, {0}, {1} {2}", - player.CharacterClass.Name, + player.Salutation, "but I cannot release it without the spell hidden in the Journal. Please give me Eirene's", "Journal now. If you no longer have it, go and find the pages again. I will wait for you."); scholar.TurnTo(player); @@ -239,7 +239,7 @@ public override bool WhisperReceive(GameLiving source, GameLiving target, string if (GiveItem(scholar, player, ArtifactID, versions[version])) { String reply = String.Format("The magic of Eirene's Chestpiece is unlocked {0} {1}. {2} {3} {4} {5}, {1}!", - "and linked now to you,", player.CharacterClass.Name, + "and linked now to you,", player.Salutation, "Please know that if you lose or destroy this Chestpiece, it will be gone", "from you forever. I hope it will help you succeed in the trials.", "Bring glory to ", GlobalConstants.RealmToName(player.Realm)); diff --git a/GameServer/quests/Atlantis/Artifacts/FlamedancersBoots.cs b/GameServer/quests/Atlantis/Artifacts/FlamedancersBoots.cs index aa415e8e73..d8519ea923 100644 --- a/GameServer/quests/Atlantis/Artifacts/FlamedancersBoots.cs +++ b/GameServer/quests/Atlantis/Artifacts/FlamedancersBoots.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/FoolsBow.cs b/GameServer/quests/Atlantis/Artifacts/FoolsBow.cs index 602c5d30ea..ada5e9072b 100644 --- a/GameServer/quests/Atlantis/Artifacts/FoolsBow.cs +++ b/GameServer/quests/Atlantis/Artifacts/FoolsBow.cs @@ -136,7 +136,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/FoppishSleeves.cs b/GameServer/quests/Atlantis/Artifacts/FoppishSleeves.cs index 1a91cc376a..65a2c4b6c9 100644 --- a/GameServer/quests/Atlantis/Artifacts/FoppishSleeves.cs +++ b/GameServer/quests/Atlantis/Artifacts/FoppishSleeves.cs @@ -136,7 +136,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/GemofLostMemories.cs b/GameServer/quests/Atlantis/Artifacts/GemofLostMemories.cs index a8b575fef5..1a2a7d0991 100644 --- a/GameServer/quests/Atlantis/Artifacts/GemofLostMemories.cs +++ b/GameServer/quests/Atlantis/Artifacts/GemofLostMemories.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/GoldenScarabVest.cs b/GameServer/quests/Atlantis/Artifacts/GoldenScarabVest.cs index e42e42d6c2..ea29e6e6e2 100644 --- a/GameServer/quests/Atlantis/Artifacts/GoldenScarabVest.cs +++ b/GameServer/quests/Atlantis/Artifacts/GoldenScarabVest.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/GoldenSpear.cs b/GameServer/quests/Atlantis/Artifacts/GoldenSpear.cs index 5c8f3c1d80..f0071905d6 100644 --- a/GameServer/quests/Atlantis/Artifacts/GoldenSpear.cs +++ b/GameServer/quests/Atlantis/Artifacts/GoldenSpear.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/GuardOfValor.cs b/GameServer/quests/Atlantis/Artifacts/GuardOfValor.cs index c6581b00c3..44d469d1b8 100644 --- a/GameServer/quests/Atlantis/Artifacts/GuardOfValor.cs +++ b/GameServer/quests/Atlantis/Artifacts/GuardOfValor.cs @@ -145,9 +145,9 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory reply += "presented the gift to Nikolia, the magic in it bound to her. And now as "; reply += "I present it to you, the magic in it will bind itself to you, so that no "; reply += String.Format("other may wear it. I beg you, {0}, take care not to destroy ", - player.CharacterClass.Name); + player.Salutation); reply += String.Format("such a gift! It cannot be replaced! I wish you well, {0}.", - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); @@ -178,7 +178,7 @@ public override bool WhisperReceive(GameLiving source, GameLiving target, string if (Step == 1 && text.ToLower() == ArtifactID.ToLower()) { String reply = String.Format("Tell me, {0}, do you have any versions of the Love Story {1} {2} {3} {4}", - player.CharacterClass.Name, + player.Salutation, "to go with the Guard of Valor? I have found a few copies, but I am always looking", "for more. Each one has different information in them that helps me with", "my research. Please give me the Love Story now while I finish up with", diff --git a/GameServer/quests/Atlantis/Artifacts/MalicesAxe.cs b/GameServer/quests/Atlantis/Artifacts/MalicesAxe.cs index 15d57820e7..5b625c198c 100644 --- a/GameServer/quests/Atlantis/Artifacts/MalicesAxe.cs +++ b/GameServer/quests/Atlantis/Artifacts/MalicesAxe.cs @@ -140,7 +140,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory if (RemoveItem(player, item)) { String reply = String.Format("You now have a decision to make, {0}. {1} {2} {3} {4} {5}", - player.CharacterClass.Name, + player.Salutation, "I can unlock your Malice Axe so it uses [slashing] skills or so it uses", "[crushing] skills. In both cases, I can unlock it as a one-handed weapon", "or a two-handed one. All you must do is decide which kind of damage you", diff --git a/GameServer/quests/Atlantis/Artifacts/MariashasSharkskinGloves.cs b/GameServer/quests/Atlantis/Artifacts/MariashasSharkskinGloves.cs index b726bd4069..d92281422a 100644 --- a/GameServer/quests/Atlantis/Artifacts/MariashasSharkskinGloves.cs +++ b/GameServer/quests/Atlantis/Artifacts/MariashasSharkskinGloves.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/NailahsRobes.cs b/GameServer/quests/Atlantis/Artifacts/NailahsRobes.cs index 8df0e5d584..8318e4ed8f 100644 --- a/GameServer/quests/Atlantis/Artifacts/NailahsRobes.cs +++ b/GameServer/quests/Atlantis/Artifacts/NailahsRobes.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/OrionsBelt.cs b/GameServer/quests/Atlantis/Artifacts/OrionsBelt.cs index e74a5cc1e8..86255bf99f 100644 --- a/GameServer/quests/Atlantis/Artifacts/OrionsBelt.cs +++ b/GameServer/quests/Atlantis/Artifacts/OrionsBelt.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/PhoebusHarp.cs b/GameServer/quests/Atlantis/Artifacts/PhoebusHarp.cs index 3b40cd5917..8f83ff0fcf 100644 --- a/GameServer/quests/Atlantis/Artifacts/PhoebusHarp.cs +++ b/GameServer/quests/Atlantis/Artifacts/PhoebusHarp.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/RingofDances.cs b/GameServer/quests/Atlantis/Artifacts/RingofDances.cs index c869a7dc7f..58180930d1 100644 --- a/GameServer/quests/Atlantis/Artifacts/RingofDances.cs +++ b/GameServer/quests/Atlantis/Artifacts/RingofDances.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/ScepteroftheMeritorious.cs b/GameServer/quests/Atlantis/Artifacts/ScepteroftheMeritorious.cs index dd5e475740..8416c4deac 100644 --- a/GameServer/quests/Atlantis/Artifacts/ScepteroftheMeritorious.cs +++ b/GameServer/quests/Atlantis/Artifacts/ScepteroftheMeritorious.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/SnakecharmersWeapon.cs b/GameServer/quests/Atlantis/Artifacts/SnakecharmersWeapon.cs index d25860edc9..e775231723 100644 --- a/GameServer/quests/Atlantis/Artifacts/SnakecharmersWeapon.cs +++ b/GameServer/quests/Atlantis/Artifacts/SnakecharmersWeapon.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/SpearofKings.cs b/GameServer/quests/Atlantis/Artifacts/SpearofKings.cs index 024242ad53..ea927f8e75 100644 --- a/GameServer/quests/Atlantis/Artifacts/SpearofKings.cs +++ b/GameServer/quests/Atlantis/Artifacts/SpearofKings.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/TraitorsDagger.cs b/GameServer/quests/Atlantis/Artifacts/TraitorsDagger.cs index a54e6d507b..5abf289298 100644 --- a/GameServer/quests/Atlantis/Artifacts/TraitorsDagger.cs +++ b/GameServer/quests/Atlantis/Artifacts/TraitorsDagger.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/TraldorsOracle.cs b/GameServer/quests/Atlantis/Artifacts/TraldorsOracle.cs index 682cadd186..6d1c009f3b 100644 --- a/GameServer/quests/Atlantis/Artifacts/TraldorsOracle.cs +++ b/GameServer/quests/Atlantis/Artifacts/TraldorsOracle.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/WingedHelm.cs b/GameServer/quests/Atlantis/Artifacts/WingedHelm.cs index 2b836ef6db..e1e27be76b 100644 --- a/GameServer/quests/Atlantis/Artifacts/WingedHelm.cs +++ b/GameServer/quests/Atlantis/Artifacts/WingedHelm.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/quests/Atlantis/Artifacts/WingsDive.cs b/GameServer/quests/Atlantis/Artifacts/WingsDive.cs index 827c620011..0256f0fd80 100644 --- a/GameServer/quests/Atlantis/Artifacts/WingsDive.cs +++ b/GameServer/quests/Atlantis/Artifacts/WingsDive.cs @@ -135,7 +135,7 @@ public override bool ReceiveItem(GameLiving source, GameLiving target, Inventory "have access to its full power again. Take care of it and it shall aid you in", "the trials", ArtifactID, - player.CharacterClass.Name); + player.Salutation); scholar.TurnTo(player); scholar.SayTo(player, eChatLoc.CL_PopupWindow, reply); FinishQuest(); diff --git a/GameServer/realmabilities/handlers/BedazzlingAuraAbility.cs b/GameServer/realmabilities/handlers/BedazzlingAuraAbility.cs index 570cdfa886..989a4856f6 100644 --- a/GameServer/realmabilities/handlers/BedazzlingAuraAbility.cs +++ b/GameServer/realmabilities/handlers/BedazzlingAuraAbility.cs @@ -68,7 +68,7 @@ public override void Execute(GameLiving living) { //send spelleffect if (!target.IsAlive) continue; - if (target.CharacterClass.Name=="Vampiir" && SpellHandler.FindEffectOnTarget(target, "VampiirMagicResistance") != null ) continue; + if (target.CharacterClass.Equals(CharacterClass.Vampiir) && SpellHandler.FindEffectOnTarget(target, "VampiirMagicResistance") != null ) continue; success = !target.TempProperties.getProperty(BofBaSb, false); foreach (GamePlayer visPlayer in target.GetPlayersInRadius(WorldMgr.VISIBILITY_DISTANCE)) visPlayer.Out.SendSpellEffectAnimation(player, target, 7030, 0, false, CastSuccess(success)); diff --git a/GameServer/spells/Artifacts/Belt of Sun.cs b/GameServer/spells/Artifacts/Belt of Sun.cs index 4a6bce21af..5fca8a83b6 100644 --- a/GameServer/spells/Artifacts/Belt of Sun.cs +++ b/GameServer/spells/Artifacts/Belt of Sun.cs @@ -467,7 +467,7 @@ public BeltOfSun(GameLiving caster, Spell spell, SpellLine line) else { - player.Out.SendMessage("" + player.CharacterClass.Name + "'s cant Summon Light!", eChatType.CT_System, eChatLoc.CL_SystemWindow); + player.Out.SendMessage("" + player.Salutation + "'s cant Summon Light!", eChatType.CT_System, eChatLoc.CL_SystemWindow); return; } } diff --git a/GameServer/spells/Artifacts/RealmLore.cs b/GameServer/spells/Artifacts/RealmLore.cs index 404ef5deab..5fc07f6e5f 100644 --- a/GameServer/spells/Artifacts/RealmLore.cs +++ b/GameServer/spells/Artifacts/RealmLore.cs @@ -48,7 +48,7 @@ public override void OnDirectEffect(GameLiving target, double effectiveness) return; var text = new List(); - text.Add("Class: "+player.CharacterClass.Name); + text.Add("Class: "+player.Salutation); text.Add("Realmpoints: "+player.RealmPoints+" = "+string.Format("{0:#L#} {1}",player.RealmLevel+10,player.RealmRankTitle(player.Client.Account.Language))); text.Add("----------------------------------------------------"); text.Add("Str: "+player.Strength+" Dex: "+player.Dexterity+" Con: "+player.Constitution); diff --git a/GameServer/trainer/albion/FriarTrainer.cs b/GameServer/trainer/albion/FriarTrainer.cs index 748a4d3686..61b0f184f2 100644 --- a/GameServer/trainer/albion/FriarTrainer.cs +++ b/GameServer/trainer/albion/FriarTrainer.cs @@ -75,7 +75,7 @@ public override bool Interact(GamePlayer player) // perhaps player can be promoted if (CanPromotePlayer(player)) { - player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "FriarTrainer.Interact.Text1", this.Name, player.CharacterClass.Name), eChatType.CT_Say, eChatLoc.CL_PopupWindow); + player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "FriarTrainer.Interact.Text1", this.Name, player.Salutation), eChatType.CT_Say, eChatLoc.CL_PopupWindow); if (!player.IsLevelRespecUsed) { OfferRespecialize(player); diff --git a/GameServerScripts/quests/Albion/AFewRepairs.cs b/GameServerScripts/quests/Albion/AFewRepairs.cs index 72fe122f28..c1dee67681 100644 --- a/GameServerScripts/quests/Albion/AFewRepairs.cs +++ b/GameServerScripts/quests/Albion/AFewRepairs.cs @@ -349,7 +349,7 @@ protected static void TalkToBriceYarley(DOLEvent e, object sender, EventArgs arg else { //Player hasn't the quest: - briceYarley.SayTo(player, "Welcome to Cornwall, "+player.CharacterClass.Name+". My family has a bit of a [problem] and we would be grateful if you could lend a hand."); + briceYarley.SayTo(player, "Welcome to Cornwall, "+player.Salutation+". My family has a bit of a [problem] and we would be grateful if you could lend a hand."); return; } } diff --git a/GameServerScripts/quests/Albion/AMessageToTheManes.cs b/GameServerScripts/quests/Albion/AMessageToTheManes.cs index 3abe73ed3f..57ce284251 100644 --- a/GameServerScripts/quests/Albion/AMessageToTheManes.cs +++ b/GameServerScripts/quests/Albion/AMessageToTheManes.cs @@ -261,7 +261,7 @@ protected static void TalkToSirJerem(DOLEvent e, object sender, EventArgs args) else { //Player hasn't the quest: - sirJerem.SayTo(player, "Hello again, " + player.CharacterClass.Name + ". Pardon me for not taking note of your presence earlier, but I've been considering how best to approach a new problem. Albion has no lack of enemies, and we must be vigilant in our defence against [each]."); + sirJerem.SayTo(player, "Hello again, " + player.Salutation + ". Pardon me for not taking note of your presence earlier, but I've been considering how best to approach a new problem. Albion has no lack of enemies, and we must be vigilant in our defence against [each]."); return; } } diff --git a/GameServerScripts/quests/Albion/ANewHeroesWelcome.cs b/GameServerScripts/quests/Albion/ANewHeroesWelcome.cs index 01b3ca6dfb..c429e9eb6c 100644 --- a/GameServerScripts/quests/Albion/ANewHeroesWelcome.cs +++ b/GameServerScripts/quests/Albion/ANewHeroesWelcome.cs @@ -458,7 +458,7 @@ public override String Conclusion { get { - String text = String.Format(LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Alb.ANewHeroesWelcome.Conclusion.Text1", QuestPlayer.CharacterClass.Name)); + String text = String.Format(LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Alb.ANewHeroesWelcome.Conclusion.Text1", QuestPlayer.Salutation)); text += LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Alb.ANewHeroesWelcome.Conclusion.Text2"); return text; } diff --git a/GameServerScripts/quests/Albion/ArrowsForYettaFletcher.cs b/GameServerScripts/quests/Albion/ArrowsForYettaFletcher.cs index bc16ff8e54..e771100cf3 100644 --- a/GameServerScripts/quests/Albion/ArrowsForYettaFletcher.cs +++ b/GameServerScripts/quests/Albion/ArrowsForYettaFletcher.cs @@ -278,7 +278,7 @@ protected static void TalkToYettaFletcher(DOLEvent e, object sender, EventArgs a if (quest == null) { //Player is not doing the quest... - yettaFletcher.SayTo(player, "Greetings to you, young "+player.CharacterClass.Name+". I was wondering if I might have a few minutes of your time. I have [a matter] I need some help with. Unfortunately I have been unable to find anyone to help me so far."); + yettaFletcher.SayTo(player, "Greetings to you, young "+player.Salutation+". I was wondering if I might have a few minutes of your time. I have [a matter] I need some help with. Unfortunately I have been unable to find anyone to help me so far."); return; } else diff --git a/GameServerScripts/quests/Albion/BoulderlingBalm.cs b/GameServerScripts/quests/Albion/BoulderlingBalm.cs index a88c99c83a..a57c974c8a 100644 --- a/GameServerScripts/quests/Albion/BoulderlingBalm.cs +++ b/GameServerScripts/quests/Albion/BoulderlingBalm.cs @@ -338,7 +338,7 @@ protected static void TalkToBrotherMaynard(DOLEvent e, object sender, EventArgs case "some time": if (quest.Step == 1) { - brotherMaynard.SayTo(player, "To find the boulderlings, travel east to Prydwen Bridge and cross it. The boulderlings will be located on a hill just to the east of the road. Good luck, " + player.CharacterClass.Name + "."); + brotherMaynard.SayTo(player, "To find the boulderlings, travel east to Prydwen Bridge and cross it. The boulderlings will be located on a hill just to the east of the road. Good luck, " + player.Salutation + "."); quest.Step = 2; } break; diff --git a/GameServerScripts/quests/Albion/BuildingABetterBow.cs b/GameServerScripts/quests/Albion/BuildingABetterBow.cs index 74d9c7365f..8c6db84421 100644 --- a/GameServerScripts/quests/Albion/BuildingABetterBow.cs +++ b/GameServerScripts/quests/Albion/BuildingABetterBow.cs @@ -373,7 +373,7 @@ protected static void TalkToElvarIronhand(DOLEvent e, object sender, EventArgs a case "technique": if(quest.Step == 5) { - elvarIronhand.SayTo(player, "Thank you for your help, "+player.CharacterClass.Name+". Here's a bit of copper for your time. Keep your eyes open for a good source of horn in case the bone prototype doesn't work out."); + elvarIronhand.SayTo(player, "Thank you for your help, "+player.Salutation+". Here's a bit of copper for your time. Keep your eyes open for a good source of horn in case the bone prototype doesn't work out."); quest.FinishQuest(); } break; diff --git a/GameServerScripts/quests/Albion/CemmethsOrders.cs b/GameServerScripts/quests/Albion/CemmethsOrders.cs index 4092fa3143..0a9c5645ea 100644 --- a/GameServerScripts/quests/Albion/CemmethsOrders.cs +++ b/GameServerScripts/quests/Albion/CemmethsOrders.cs @@ -498,7 +498,7 @@ public override String Conclusion { get { - String text = String.Format(LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Alb.CemmethsOrders.Conclusion.Text1", QuestPlayer.CharacterClass.Name)); + String text = String.Format(LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Alb.CemmethsOrders.Conclusion.Text1", QuestPlayer.Salutation)); return text; } } diff --git a/GameServerScripts/quests/Albion/GreenerPastures.cs b/GameServerScripts/quests/Albion/GreenerPastures.cs index e79a47edc0..8ed65ce4c8 100644 --- a/GameServerScripts/quests/Albion/GreenerPastures.cs +++ b/GameServerScripts/quests/Albion/GreenerPastures.cs @@ -343,7 +343,7 @@ protected static void TalkToFarmerAsma(DOLEvent e, object sender, EventArgs args if (quest == null) { //Player is not doing the quest... - farmerAsma.SayTo(player, "Good night. I wish I had time to talk, "+player.CharacterClass.Name+", but I'm in the process of trying to find a new field to lease. I'd like to return to my life as a farmer. It's not that Cotswold isn't a nice village, but I feel more at home in the [field]."); + farmerAsma.SayTo(player, "Good night. I wish I had time to talk, "+player.Salutation+", but I'm in the process of trying to find a new field to lease. I'd like to return to my life as a farmer. It's not that Cotswold isn't a nice village, but I feel more at home in the [field]."); return; } else diff --git a/GameServerScripts/quests/Albion/HalfOgreAllMan.cs b/GameServerScripts/quests/Albion/HalfOgreAllMan.cs index 7846ba0667..966af5e7d0 100644 --- a/GameServerScripts/quests/Albion/HalfOgreAllMan.cs +++ b/GameServerScripts/quests/Albion/HalfOgreAllMan.cs @@ -853,7 +853,7 @@ protected static void TalkToSerawen(DOLEvent e, object sender, EventArgs args) { if(quest.Step == 1 || quest.Step == 3 || quest.Step == 4 || quest.Step == 5) { - serawen.SayTo(player, "Hello. I don't recognize you, "+player.CharacterClass.Name+". Are you looking for my father, [Arliss]?"); + serawen.SayTo(player, "Hello. I don't recognize you, "+player.Salutation+". Are you looking for my father, [Arliss]?"); } } } diff --git a/GameServerScripts/quests/Albion/LawrencesOil.cs b/GameServerScripts/quests/Albion/LawrencesOil.cs index c118ea3bdf..01fdbbfbe2 100644 --- a/GameServerScripts/quests/Albion/LawrencesOil.cs +++ b/GameServerScripts/quests/Albion/LawrencesOil.cs @@ -331,7 +331,7 @@ protected static void TalkToBrotherLawrence(DOLEvent e, object sender, EventArgs { if (quest.Step == 4) { - brotherLawrence.SayTo(player, "Welcome back, "+player.CharacterClass.Name+". I've almost finished making my preparations for the demonstration. May I have the flask of oil?"); + brotherLawrence.SayTo(player, "Welcome back, "+player.Salutation+". I've almost finished making my preparations for the demonstration. May I have the flask of oil?"); } return; } diff --git a/GameServerScripts/quests/Albion/RevengeTheOtherWhiteMeat.cs b/GameServerScripts/quests/Albion/RevengeTheOtherWhiteMeat.cs index e6d07efabc..0466752030 100644 --- a/GameServerScripts/quests/Albion/RevengeTheOtherWhiteMeat.cs +++ b/GameServerScripts/quests/Albion/RevengeTheOtherWhiteMeat.cs @@ -253,7 +253,7 @@ protected static void TalkToFarmerAsma(DOLEvent e, object sender, EventArgs args if (quest == null) { //Player is not doing the quest... - farmerAsma.SayTo(player, "Greetings, "+player.CharacterClass.Name+". You wouldn't believe how expensive it is to lease land here in the Camelot Hills area. Just the other day, I went to check out some fields, and the asking price is just too high. Things were better in the Black [Mountains]."); + farmerAsma.SayTo(player, "Greetings, "+player.Salutation+". You wouldn't believe how expensive it is to lease land here in the Camelot Hills area. Just the other day, I went to check out some fields, and the asking price is just too high. Things were better in the Black [Mountains]."); return; } else diff --git a/GameServerScripts/quests/Albion/ShakenSquire.cs b/GameServerScripts/quests/Albion/ShakenSquire.cs index 5b87d01275..2ffbd6e018 100644 --- a/GameServerScripts/quests/Albion/ShakenSquire.cs +++ b/GameServerScripts/quests/Albion/ShakenSquire.cs @@ -350,7 +350,7 @@ protected static void TalkToSirJerem(DOLEvent e, object sender, EventArgs args) if (quest == null) { //Player is not doing the quest... - sirJerem.SayTo(player, "Good day, "+player.CharacterClass.Name+". I'm sorry that I can't spare much time for idle chatter, but I've got a number of things on my mind right now. Keeping track of a keep full of squires certainly isn't easy [work]."); + sirJerem.SayTo(player, "Good day, "+player.Salutation+". I'm sorry that I can't spare much time for idle chatter, but I've got a number of things on my mind right now. Keeping track of a keep full of squires certainly isn't easy [work]."); return; } else diff --git a/GameServerScripts/quests/Albion/ToReachTheBreach.cs b/GameServerScripts/quests/Albion/ToReachTheBreach.cs index 2c229caf1c..f101d8ae1f 100644 --- a/GameServerScripts/quests/Albion/ToReachTheBreach.cs +++ b/GameServerScripts/quests/Albion/ToReachTheBreach.cs @@ -430,7 +430,7 @@ public override String Conclusion { get { - String text = String.Format(LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Alb.ToReachTheBreach.Conclusion.Text1", QuestPlayer.CharacterClass.Name)); + String text = String.Format(LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Alb.ToReachTheBreach.Conclusion.Text1", QuestPlayer.Salutation)); return text; } } diff --git a/GameServerScripts/quests/Albion/epic/Academy50.cs b/GameServerScripts/quests/Albion/epic/Academy50.cs index e3f4e17648..bc5933d842 100644 --- a/GameServerScripts/quests/Albion/epic/Academy50.cs +++ b/GameServerScripts/quests/Albion/epic/Academy50.cs @@ -1098,9 +1098,9 @@ protected static void PlayerEnterMorganaArea(DOLEvent e, object sender, EventArg quest.CreateMorgana(); if (player.Group != null) - Morgana.Yell("Ha, is this all the forces of Albion have to offer? I expected a whole army leaded by my brother Arthur, but what do they send a little group of adventurers lead by a poor " + player.CharacterClass.Name + "?"); + Morgana.Yell("Ha, is this all the forces of Albion have to offer? I expected a whole army leaded by my brother Arthur, but what do they send a little group of adventurers lead by a poor " + player.Salutation + "?"); else - Morgana.Yell("Ha, is this all the forces of Albion have to offer? I expected a whole army leaded by my brother Arthur, but what do they send a poor " + player.CharacterClass.Name + "?"); + Morgana.Yell("Ha, is this all the forces of Albion have to offer? I expected a whole army leaded by my brother Arthur, but what do they send a poor " + player.Salutation + "?"); foreach (GamePlayer visPlayer in Morgana.GetPlayersInRadius(WorldMgr.VISIBILITY_DISTANCE)) { @@ -1205,7 +1205,7 @@ protected static void TalkToFerowl(DOLEvent e, object sender, EventArgs args) Ferowl.SayTo(player, "Morgana is probably performing her rital at the fallen tower in Lyonesse. To get there follow the Telamon road past the majority of the Danaoian Farmers, until you see the [fallen tower]."); break; case "fallen tower": - Ferowl.SayTo(player, "Be wise and don't take any unneccessary risks by going directly on Morgana , you might be a strong " + player.CharacterClass.Name + ", but you are no match for Morgana herself. Kill her demons and return to me, we will then try to take care of the rest, once her time has come."); + Ferowl.SayTo(player, "Be wise and don't take any unneccessary risks by going directly on Morgana , you might be a strong " + player.Salutation + ", but you are no match for Morgana herself. Kill her demons and return to me, we will then try to take care of the rest, once her time has come."); break; // once the deomns are dead: diff --git a/GameServerScripts/quests/Albion/epic/Church50.cs b/GameServerScripts/quests/Albion/epic/Church50.cs index 930bd5fa11..b4f9f01320 100644 --- a/GameServerScripts/quests/Albion/epic/Church50.cs +++ b/GameServerScripts/quests/Albion/epic/Church50.cs @@ -826,7 +826,7 @@ protected static void TalkToRoben(DOLEvent e, object sender, EventArgs args) switch (wArgs.Text) { case "Lyonesse": - Roben.SayTo(player, "The cathedral that Axton speaks of lies deep at the heart of that land, behind the Pikeman, across from the Trees. Its remaining walls can be seen at great distances during the day so you should not miss it. I would travel with thee, but my services are required elswhere. Fare thee well " + player.CharacterClass.Name + "."); + Roben.SayTo(player, "The cathedral that Axton speaks of lies deep at the heart of that land, behind the Pikeman, across from the Trees. Its remaining walls can be seen at great distances during the day so you should not miss it. I would travel with thee, but my services are required elswhere. Fare thee well " + player.Salutation + "."); break; case "abort": diff --git a/GameServerScripts/quests/Hibernia/SearchForKnowledge.cs b/GameServerScripts/quests/Hibernia/SearchForKnowledge.cs index fa0ab26d5c..5e5e243534 100644 --- a/GameServerScripts/quests/Hibernia/SearchForKnowledge.cs +++ b/GameServerScripts/quests/Hibernia/SearchForKnowledge.cs @@ -464,7 +464,7 @@ public override String Conclusion { get { - String text = String.Format(LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Hib.SearchForKnowledge.Conclusion.Text1", QuestPlayer.CharacterClass.Name)); + String text = String.Format(LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Hib.SearchForKnowledge.Conclusion.Text1", QuestPlayer.Salutation)); return text; } } diff --git a/GameServerScripts/quests/Hibernia/ToReachTheBreach.cs b/GameServerScripts/quests/Hibernia/ToReachTheBreach.cs index 688bda7832..9d96e4e68c 100644 --- a/GameServerScripts/quests/Hibernia/ToReachTheBreach.cs +++ b/GameServerScripts/quests/Hibernia/ToReachTheBreach.cs @@ -448,7 +448,7 @@ public override String Conclusion { get { - String text = String.Format(LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Hib.ToReachTheBreach.Conclusion.Text1", QuestPlayer.CharacterClass.Name)); + String text = String.Format(LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Hib.ToReachTheBreach.Conclusion.Text1", QuestPlayer.Salutation)); return text; } } diff --git a/GameServerScripts/quests/Midgard/Frontiers.cs b/GameServerScripts/quests/Midgard/Frontiers.cs index 10b5dd4529..9a76fe40d0 100644 --- a/GameServerScripts/quests/Midgard/Frontiers.cs +++ b/GameServerScripts/quests/Midgard/Frontiers.cs @@ -793,7 +793,7 @@ protected static void TalkToIdora(DOLEvent e, object sender, EventArgs args) //Player is not doing the quest... if (quest.Step == 3 || quest.Step == 2) { - idora.SayTo(player, LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Mid.Frontiers.TalkToIdora.Talk1", player.CharacterClass.Name)); + idora.SayTo(player, LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Mid.Frontiers.TalkToIdora.Talk1", player.Salutation)); } else if (quest.Step == 4) { diff --git a/GameServerScripts/quests/Midgard/StolenEggs.cs b/GameServerScripts/quests/Midgard/StolenEggs.cs index c1721f1566..17e3365d5d 100644 --- a/GameServerScripts/quests/Midgard/StolenEggs.cs +++ b/GameServerScripts/quests/Midgard/StolenEggs.cs @@ -468,7 +468,7 @@ protected static void TalkToHyndla(DOLEvent e, object sender, EventArgs args) { if (quest != null) { - hyndla.SayTo(player, LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Mid.StolenEggs.TalkToHyndla.Talk1", player.CharacterClass.Name)); + hyndla.SayTo(player, LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Mid.StolenEggs.TalkToHyndla.Talk1", player.Salutation)); hyndla.SayTo(player, LanguageMgr.GetTranslation(ServerProperties.Properties.SERV_LANGUAGE, "Mid.StolenEggs.TalkToHyndla.Talk2")); } } diff --git a/GameServerScripts/web/WebUIGenerator.cs b/GameServerScripts/web/WebUIGenerator.cs index 20ce7aa5dc..fd3817998e 100644 --- a/GameServerScripts/web/WebUIGenerator.cs +++ b/GameServerScripts/web/WebUIGenerator.cs @@ -367,7 +367,7 @@ private static void InitJS() //Class m_js.Append("document.write(\"\")"); m_js.Append(nl.NewLine); - m_js.AppendFormat("document.write(\"{0}\")", plr.CharacterClass.Name); + m_js.AppendFormat("document.write(\"{0}\")", plr.Salutation); m_js.Append(nl.NewLine); m_js.Append("document.write(\"\")"); m_js.Append(nl.NewLine); diff --git a/GameServerScripts/web/XMLWebUIGenerator.cs b/GameServerScripts/web/XMLWebUIGenerator.cs index 8c19aa8545..0fb889d1cb 100644 --- a/GameServerScripts/web/XMLWebUIGenerator.cs +++ b/GameServerScripts/web/XMLWebUIGenerator.cs @@ -297,7 +297,7 @@ public static void Generate() pi.Name = plr.Name; pi.LastName = plr.LastName; - pi.Class = plr.CharacterClass.Name; + pi.Class = plr.Salutation; pi.Race = plr.RaceName; pi.Guild = plr.GuildName; pi.Level = plr.Level; From 1f826c994e311adc8375df3378aedf34645f98ee Mon Sep 17 00:00:00 2001 From: NetDwarf Date: Sat, 18 Feb 2023 12:18:49 +0100 Subject: [PATCH 4/5] Remove CharacterClass.Profession Replace CharacterClass.Profession with .GetProfessionTitle(GamePlayer) --- GameServer/gameobjects/CharacterClasses/CharacterClass.cs | 5 +++-- GameServer/gameobjects/CustomNPC/GameTrainer.cs | 2 +- GameServer/packets/Server/PacketLib168.cs | 2 +- GameServer/packets/Server/PacketLib175.cs | 2 +- GameServer/packets/Server/PacketLib179.cs | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/GameServer/gameobjects/CharacterClasses/CharacterClass.cs b/GameServer/gameobjects/CharacterClasses/CharacterClass.cs index c9f3ab0d44..5853fe8e1d 100644 --- a/GameServer/gameobjects/CharacterClasses/CharacterClass.cs +++ b/GameServer/gameobjects/CharacterClasses/CharacterClass.cs @@ -35,8 +35,6 @@ public class CharacterClass public ushort MaxPulsingSpells { get; private set; } public string BaseName => GetClass(baseClassID).name; - public string Profession - => LanguageMgr.TryTranslateOrDefault(player, ProfessionTranslationID, ProfessionTranslationID); public List EligibleRaces => eligibleRaces.ToList(); public int AdjustedSpecPointsMultiplier => SpecPointsMultiplier; @@ -94,6 +92,9 @@ public string GetSalutation(eGender gender) else return name; } + public string GetProfessionTitle(GamePlayer player) + => LanguageMgr.TryTranslateOrDefault(player, ProfessionTranslationID, ProfessionTranslationID); + public string GetTitle(GamePlayer player, int level) { if (!HasAdvancedFromBaseClass()) level = 0; diff --git a/GameServer/gameobjects/CustomNPC/GameTrainer.cs b/GameServer/gameobjects/CustomNPC/GameTrainer.cs index 72e7c67c85..0aff6a3dcf 100644 --- a/GameServer/gameobjects/CustomNPC/GameTrainer.cs +++ b/GameServer/gameobjects/CustomNPC/GameTrainer.cs @@ -405,7 +405,7 @@ public bool PromotePlayer(GamePlayer player, int classid, string messageToPlayer } // after gifts - player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameTrainer.PromotePlayer.Accepted", player.CharacterClass.Profession), eChatType.CT_Important, eChatLoc.CL_SystemWindow); + player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameTrainer.PromotePlayer.Accepted", player.CharacterClass.GetProfessionTitle(player)), eChatType.CT_Important, eChatLoc.CL_SystemWindow); Notify(GameTrainerEvent.PlayerPromoted, this, new PlayerPromotedEventArgs(player, oldClass)); diff --git a/GameServer/packets/Server/PacketLib168.cs b/GameServer/packets/Server/PacketLib168.cs index 129d0f2e63..fdf7508bc5 100644 --- a/GameServer/packets/Server/PacketLib168.cs +++ b/GameServer/packets/Server/PacketLib168.cs @@ -2195,7 +2195,7 @@ public virtual void SendUpdatePlayer() pak.WriteByte((byte) (player.MaxHealth >> 8)); // maxhealth high byte ? pak.WritePascalString(player.Salutation); // class name pak.WriteByte((byte) (player.MaxHealth & 0xFF)); // maxhealth low byte ? - pak.WritePascalString( /*"The "+*/player.CharacterClass.Profession); // Profession + pak.WritePascalString( /*"The "+*/player.CharacterClass.GetProfessionTitle(player)); // Profession pak.WriteByte(0x00); //unk pak.WritePascalString(player.CharacterClass.GetTitle(player, player.Level)); // player level diff --git a/GameServer/packets/Server/PacketLib175.cs b/GameServer/packets/Server/PacketLib175.cs index 54d7cd1187..e62811e708 100644 --- a/GameServer/packets/Server/PacketLib175.cs +++ b/GameServer/packets/Server/PacketLib175.cs @@ -145,7 +145,7 @@ public override void SendUpdatePlayer() pak.WritePascalString(player.Salutation); // class name pak.WriteByte((byte) (player.MaxHealth & 0xFF)); // maxhealth low byte ? - pak.WritePascalString( /*"The "+*/player.CharacterClass.Profession); // Profession + pak.WritePascalString( /*"The "+*/player.CharacterClass.GetProfessionTitle(player)); // Profession pak.WriteByte(0x00); //unk diff --git a/GameServer/packets/Server/PacketLib179.cs b/GameServer/packets/Server/PacketLib179.cs index 949aa4f9cd..bc77b718d0 100644 --- a/GameServer/packets/Server/PacketLib179.cs +++ b/GameServer/packets/Server/PacketLib179.cs @@ -60,7 +60,7 @@ public override void SendUpdatePlayer() pak.WriteByte((byte) (player.MaxHealth >> 8)); // maxhealth high byte ? pak.WritePascalString(player.Salutation); // class name pak.WriteByte((byte) (player.MaxHealth & 0xFF)); // maxhealth low byte ? - pak.WritePascalString( /*"The "+*/player.CharacterClass.Profession); // Profession + pak.WritePascalString( /*"The "+*/player.CharacterClass.GetProfessionTitle(player)); // Profession pak.WriteByte(0x00); //unk pak.WritePascalString(player.CharacterClass.GetTitle(player, player.Level)); // player level //todo make function to calcule realm rank From 3104c8e163dfbc65b11a8a519e2b5574374173cb Mon Sep 17 00:00:00 2001 From: NetDwarf Date: Sat, 18 Feb 2023 12:30:08 +0100 Subject: [PATCH 5/5] Remove CharacterClass.player member Remove CharacterClass.GetClass(GamePlayer,int) --- .../gameobjects/CharacterClasses/CharacterClass.cs | 9 --------- GameServer/gameobjects/GamePlayer.cs | 4 ++-- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/GameServer/gameobjects/CharacterClasses/CharacterClass.cs b/GameServer/gameobjects/CharacterClasses/CharacterClass.cs index 5853fe8e1d..62761db3ac 100644 --- a/GameServer/gameobjects/CharacterClasses/CharacterClass.cs +++ b/GameServer/gameobjects/CharacterClasses/CharacterClass.cs @@ -13,8 +13,6 @@ public class CharacterClass private static Dictionary allClasses = new Dictionary(); - private GamePlayer player; - private string name; private string femaleName; private IEnumerable eligibleRaces; @@ -117,13 +115,6 @@ public static CharacterClass GetClass(int classID) return characterClass; } - public static CharacterClass GetClass(GamePlayer player, int classID) - { - var charClass = GetClass(classID); - charClass.player = player; - return charClass; - } - public CharacterClass GetBaseClass() => GetClass(baseClassID); diff --git a/GameServer/gameobjects/GamePlayer.cs b/GameServer/gameobjects/GamePlayer.cs index dbcb61e4d8..e973ccc2ff 100644 --- a/GameServer/gameobjects/GamePlayer.cs +++ b/GameServer/gameobjects/GamePlayer.cs @@ -2812,7 +2812,7 @@ public override short Race [Obsolete("Use SetCharacterClass(CharacterClass) instead.")] public virtual bool SetCharacterClass(int id) { - var cl = GS.CharacterClass.GetClass(this, id); + var cl = GS.CharacterClass.GetClass(id); return SetCharacterClass(cl); } @@ -12472,7 +12472,7 @@ public override void LoadFromDatabase(DataObject obj) m_charStat[eStat.EMP - eStat._First] = (short)DBCharacter.Empathy; m_charStat[eStat.CHR - eStat._First] = (short)DBCharacter.Charisma; - SetCharacterClass(CharacterClass.GetClass(this, DBCharacter.Class)); + SetCharacterClass(CharacterClass.GetClass(DBCharacter.Class)); m_currentSpeed = 0; if (MaxSpeedBase == 0)