From 32330d557c2e8f8fe76c4839be685999ecb6b54d Mon Sep 17 00:00:00 2001 From: Yogurt Date: Sat, 8 Jun 2019 21:11:51 -0700 Subject: [PATCH] Small command fixes fix "You learn [command]." message not printing the name of the command and enable message. Make database save the short version of command id in hotbar table --- FFXIVClassic Map Server/Database.cs | 6 +++--- FFXIVClassic Map Server/WorldManager.cs | 8 ++++---- .../actors/chara/player/Player.cs | 18 ++++++++---------- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/FFXIVClassic Map Server/Database.cs b/FFXIVClassic Map Server/Database.cs index a9577c3c..aebcfede 100644 --- a/FFXIVClassic Map Server/Database.cs +++ b/FFXIVClassic Map Server/Database.cs @@ -1247,7 +1247,7 @@ namespace FFXIVClassic_Map_Server } public static void EquipAbility(Player player, byte classId, ushort hotbarSlot, uint commandId, uint recastTime) { - commandId ^= 0xA0F00000; + commandId &= 0xFFFF; if (commandId > 0) { using (MySqlConnection conn = new MySqlConnection( @@ -2374,7 +2374,7 @@ namespace FFXIVClassic_Map_Server } } - public static void LoadGlobalBattleCommandList(Dictionary battleCommandDict, Dictionary, List> battleCommandIdByLevel) + public static void LoadGlobalBattleCommandList(Dictionary battleCommandDict, Dictionary, List> battleCommandIdByLevel) { using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) { @@ -2469,7 +2469,7 @@ namespace FFXIVClassic_Map_Server } else { - List list = new List() { id }; + List list = new List() { id }; battleCommandIdByLevel.Add(tuple, list); } count++; diff --git a/FFXIVClassic Map Server/WorldManager.cs b/FFXIVClassic Map Server/WorldManager.cs index 65b53d09..ba4ca7a0 100644 --- a/FFXIVClassic Map Server/WorldManager.cs +++ b/FFXIVClassic Map Server/WorldManager.cs @@ -33,7 +33,7 @@ namespace FFXIVClassic_Map_Server private Dictionary currentPlayerParties = new Dictionary(); //GroupId, Party object private Dictionary statusEffectList = new Dictionary(); private Dictionary battleCommandList = new Dictionary(); - private Dictionary, List> battleCommandIdByLevel = new Dictionary, List>();//Holds battle command ids keyed by class id and level (in that order) + private Dictionary, List> battleCommandIdByLevel = new Dictionary, List>();//Holds battle command ids keyed by class id and level (in that order) private Dictionary battleTraitList = new Dictionary(); private Dictionary> battleTraitIdsForClass = new Dictionary>(); private Dictionary battleNpcGenusMods = new Dictionary(); @@ -1967,10 +1967,10 @@ namespace FFXIVClassic_Map_Server return battleCommandList.TryGetValue((ushort)id, out battleCommand) ? battleCommand.Clone() : null; } - public List GetBattleCommandIdByLevel(byte classId, short level) + public List GetBattleCommandIdByLevel(byte classId, short level) { - List ids; - return battleCommandIdByLevel.TryGetValue(Tuple.Create(classId, level), out ids) ? ids : new List(); + List ids; + return battleCommandIdByLevel.TryGetValue(Tuple.Create(classId, level), out ids) ? ids : new List(); } public BattleTrait GetBattleTrait(ushort id) diff --git a/FFXIVClassic Map Server/actors/chara/player/Player.cs b/FFXIVClassic Map Server/actors/chara/player/Player.cs index 5c94d1d8..3eba884d 100644 --- a/FFXIVClassic Map Server/actors/chara/player/Player.cs +++ b/FFXIVClassic Map Server/actors/chara/player/Player.cs @@ -2060,7 +2060,7 @@ namespace FFXIVClassic_Map_Server.Actors public void EquipAbility(byte classId, uint commandId, ushort hotbarSlot, bool printMessage = true) { var ability = Server.GetWorldManager().GetBattleCommand(commandId); - uint trueCommandId = 0xA0F00000 + commandId; + uint trueCommandId = 0xA0F00000 | commandId; ushort lowHotbarSlot = (ushort)(hotbarSlot - charaWork.commandBorder); ushort maxRecastTime = (ushort)(ability != null ? ability.maxRecastTimeSeconds : 5); uint recastEnd = Utils.UnixTimeStampUTC() + maxRecastTime; @@ -2441,7 +2441,7 @@ namespace FFXIVClassic_Map_Server.Actors while (exp >= diff && GetLevel() < charaWork.battleSave.skillLevelCap[classId]) { //Level up - LevelUp(classId); + LevelUp(classId, actionList); leveled = true; //Reduce exp based on how much exp is needed to level exp -= diff; @@ -2459,8 +2459,6 @@ namespace FFXIVClassic_Map_Server.Actors expPropertyPacket2.AddProperty("charaWork.parameterSave.state_mainSkillLevel"); QueuePackets(expPropertyPacket2.Done()); QueuePackets(expPropertyPacket3.Done()); - //play levelup animation (do this outside LevelUp so that it only plays once if multiple levels are earned - //also i dunno how to do this Database.SetLevel(this, classId, GetLevel()); Database.SavePlayerCurrentClass(this); @@ -2486,13 +2484,13 @@ namespace FFXIVClassic_Map_Server.Actors charaWork.battleSave.skillLevel[classId - 1]++; charaWork.parameterSave.state_mainSkillLevel++; - //33909: You gain level [level] + //33909: You attain level [level]. if (actionList != null) - actionList.Add(new CommandResult(actorId, 33909, 0, (ushort) charaWork.battleSave.skillLevel[classId - 1])); + actionList.Add(new CommandResult(actorId, 33909, 0, (ushort)charaWork.battleSave.skillLevel[classId - 1])); //If there's any abilites that unlocks at this level, equip them. - List commandIds = Server.GetWorldManager().GetBattleCommandIdByLevel(classId, GetLevel()); - foreach(uint commandId in commandIds) + List commandIds = Server.GetWorldManager().GetBattleCommandIdByLevel(classId, GetLevel()); + foreach (ushort commandId in commandIds) { EquipAbilityInFirstOpenSlot(classId, commandId, false); byte jobId = ConvertClassIdToJobId(classId); @@ -2502,8 +2500,8 @@ namespace FFXIVClassic_Map_Server.Actors //33926: You learn [command]. if (actionList != null) { - if(classId == GetCurrentClassOrJob() || jobId == GetCurrentClassOrJob()) - actionList.Add(new CommandResult(actorId, 33926, commandId)); + if (classId == GetCurrentClassOrJob() || jobId == GetCurrentClassOrJob()) + actionList.Add(new CommandResult(actorId, 33926, 0, commandId)); } } }