diff --git a/Source/Framework/Database/Databases/CharacterDatabase.cs b/Source/Framework/Database/Databases/CharacterDatabase.cs index ed067c624..6392e9dcb 100644 --- a/Source/Framework/Database/Databases/CharacterDatabase.cs +++ b/Source/Framework/Database/Databases/CharacterDatabase.cs @@ -77,9 +77,8 @@ namespace Framework.Database PrepareStatement(CharStatements.SEL_CHARACTER, "SELECT c.guid, account, name, race, class, gender, level, xp, money, skin, face, hairStyle, hairColor, facialStyle, customDisplay1, customDisplay2, customDisplay3, inventorySlots, bankSlots, restState, playerFlags, playerFlagsEx, " + "position_x, position_y, position_z, map, orientation, taximask, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, " + "resettalents_time, primarySpecialization, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, dungeonDifficulty, " + - "totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, " + - "health, power1, power2, power3, power4, power5, power6, instance_id, activeTalentGroup, lootSpecId, exploredZones, knownTitles, actionBars, grantableLevels, raidDifficulty, legacyRaidDifficulty, fishingSteps, " + - "honor, honorLevel, honorRestState, honorRestBonus " + + "totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, health, power1, power2, power3, power4, power5, power6, instance_id, activeTalentGroup, lootSpecId, exploredZones, " + + "knownTitles, actionBars, raidDifficulty, legacyRaidDifficulty, fishingSteps, honor, honorLevel, honorRestState, honorRestBonus " + "FROM characters c LEFT JOIN character_fishingsteps cfs ON c.guid = cfs.guid WHERE c.guid = ?"); PrepareStatement(CharStatements.SEL_GROUP_MEMBER, "SELECT guid FROM group_member WHERE memberGuid = ?"); @@ -419,14 +418,14 @@ namespace Framework.Database "map, instance_id, dungeonDifficulty, raidDifficulty, legacyRaidDifficulty, position_x, position_y, position_z, orientation, trans_x, trans_y, trans_z, trans_o, transguid, " + "taximask, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, resettalents_time, primarySpecialization, " + "extra_flags, stable_slots, at_login, zone, death_expire_time, taxi_path, totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, health, power1, power2, power3, " + - "power4, power5, power6, latency, activeTalentGroup, lootSpecId, exploredZones, equipmentCache, knownTitles, actionBars, grantableLevels, lastLoginBuild) VALUES " + - "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); + "power4, power5, power6, latency, activeTalentGroup, lootSpecId, exploredZones, equipmentCache, knownTitles, actionBars, lastLoginBuild) VALUES " + + "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); PrepareStatement(CharStatements.UPD_CHARACTER, "UPDATE characters SET name=?,race=?,class=?,gender=?,level=?,xp=?,money=?,skin=?,face=?,hairStyle=?,hairColor=?,facialStyle=?,customDisplay1=?,customDisplay2=?,customDisplay3=?,inventorySlots=?,bankSlots=?,restState=?,playerFlags=?,playerFlagsEx=?," + "map=?,instance_id=?,dungeonDifficulty=?,raidDifficulty=?,legacyRaidDifficulty=?,position_x=?,position_y=?,position_z=?,orientation=?,trans_x=?,trans_y=?,trans_z=?,trans_o=?,transguid=?,taximask=?,cinematic=?,totaltime=?,leveltime=?,rest_bonus=?," + "logout_time=?,is_logout_resting=?,resettalents_cost=?,resettalents_time=?,primarySpecialization=?,extra_flags=?,stable_slots=?,at_login=?,zone=?,death_expire_time=?,taxi_path=?," + "totalKills=?,todayKills=?,yesterdayKills=?,chosenTitle=?," + "watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,latency=?,activeTalentGroup=?,lootSpecId=?,exploredZones=?," + - "equipmentCache=?,knownTitles=?,actionBars=?,grantableLevels=?,online=?,honor=?,honorLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=? WHERE guid=?"); + "equipmentCache=?,knownTitles=?,actionBars=?,online=?,honor=?,honorLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=? WHERE guid=?"); PrepareStatement(CharStatements.UPD_ADD_AT_LOGIN_FLAG, "UPDATE characters SET at_login = at_login | ? WHERE guid = ?"); PrepareStatement(CharStatements.UPD_REM_AT_LOGIN_FLAG, "UPDATE characters set at_login = at_login & ~ ? WHERE guid = ?"); diff --git a/Source/Game/Entities/Player/Player.DB.cs b/Source/Game/Entities/Player/Player.DB.cs index bb72b56a1..f467b5723 100644 --- a/Source/Game/Entities/Player/Player.DB.cs +++ b/Source/Game/Entities/Player/Player.DB.cs @@ -2458,7 +2458,7 @@ namespace Game.Entities // set which actionbars the client has active - DO NOT REMOVE EVER AGAIN (can be changed though, if it does change fieldwise) SetMultiActionBars(result.Read(68)); - m_fishingSteps = result.Read(72); + m_fishingSteps = result.Read(71); InitDisplayIds(); @@ -2493,8 +2493,8 @@ namespace Game.Entities var RelocateToHomebind = new Action(() => { mapId = homebind.GetMapId(); instanceId = 0; Relocate(homebind); }); SetDungeonDifficultyID(CheckLoadedDungeonDifficultyID((Difficulty)result.Read(49))); - SetRaidDifficultyID(CheckLoadedRaidDifficultyID((Difficulty)result.Read(70))); - SetLegacyRaidDifficultyID(CheckLoadedLegacyRaidDifficultyID((Difficulty)result.Read(71))); + SetRaidDifficultyID(CheckLoadedRaidDifficultyID((Difficulty)result.Read(69))); + SetLegacyRaidDifficultyID(CheckLoadedLegacyRaidDifficultyID((Difficulty)result.Read(70))); string taxi_nodes = result.Read(48); @@ -3020,13 +3020,9 @@ namespace Game.Entities } // RaF stuff. - m_grantableLevels = result.Read(69); if (GetSession().IsARecruiter() || (GetSession().GetRecruiterId() != 0)) AddDynamicFlag(UnitDynFlags.ReferAFriend); - if (m_grantableLevels > 0) - SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.GrantableLevels), (byte)1); - _LoadDeclinedNames(holder.GetResult(PlayerLoginQueryLoad.DeclinedNames)); _LoadEquipmentSets(holder.GetResult(PlayerLoginQueryLoad.EquipmentSets)); @@ -3042,9 +3038,9 @@ namespace Game.Entities holder.GetResult(PlayerLoginQueryLoad.GarrisonFollowerAbilities))) _garrison = garrison; - _InitHonorLevelOnLoadFromDB(result.Read(73), result.Read(74)); + _InitHonorLevelOnLoadFromDB(result.Read(72), result.Read(73)); - _restMgr.LoadRestBonus(RestTypes.Honor, (PlayerRestState)result.Read(75), result.Read(76)); + _restMgr.LoadRestBonus(RestTypes.Honor, (PlayerRestState)result.Read(74), result.Read(75)); if (time_diff > 0) { //speed collect rest bonus in offline, in logout, far from tavern, city (section/in hour) @@ -3224,7 +3220,6 @@ namespace Game.Entities stmt.AddValue(index++, ss.ToString()); stmt.AddValue(index++, (byte)m_activePlayerData.MultiActionBars); - stmt.AddValue(index++, m_grantableLevels); stmt.AddValue(index++, Global.RealmMgr.GetMinorMajorBugfixVersionForBuild(Global.WorldMgr.GetRealm().Build)); } else @@ -3373,7 +3368,6 @@ namespace Game.Entities stmt.AddValue(index++, ss.ToString()); stmt.AddValue(index++, (byte)m_activePlayerData.MultiActionBars); - stmt.AddValue(index++, m_grantableLevels); stmt.AddValue(index++, IsInWorld && !GetSession().PlayerLogout() ? 1 : 0); stmt.AddValue(index++, (uint)m_activePlayerData.Honor); diff --git a/Source/Game/Entities/Player/Player.Fields.cs b/Source/Game/Entities/Player/Player.Fields.cs index 8b88547ce..ddecaedc4 100644 --- a/Source/Game/Entities/Player/Player.Fields.cs +++ b/Source/Game/Entities/Player/Player.Fields.cs @@ -218,7 +218,6 @@ namespace Game.Entities uint m_zoneUpdateTimer; uint m_ChampioningFaction; - byte m_grantableLevels; byte m_fishingSteps; // Recall position diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index c53621d10..375a86477 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -5398,20 +5398,6 @@ namespace Game.Entities UpdateCriteria(CriteriaTypes.ReachLevel); - // Refer-A-Friend - if (GetSession().GetRecruiterId() != 0) - { - if (level < WorldConfig.GetIntValue(WorldCfg.MaxRecruitAFriendBonusPlayerLevel)) - { - if (level % 2 == 0) - { - ++m_grantableLevels; - - SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.GrantableLevels), (byte)1); - } - } - } - Global.ScriptMgr.OnPlayerLevelChanged(this, (byte)oldLevel); } @@ -6987,8 +6973,6 @@ namespace Game.Entities GetSession().SendDoFlight(mountDisplayId, path, startNode); } - public byte GetGrantableLevels() { return m_grantableLevels; } - public void SetGrantableLevels(int val) { m_grantableLevels = (byte)val; } public bool GetsRecruitAFriendBonus(bool forXP) { bool recruitAFriend = false; diff --git a/Source/Game/Handlers/RAFHandler.cs b/Source/Game/Handlers/RAFHandler.cs index ca36612f6..46206bb7b 100644 --- a/Source/Game/Handlers/RAFHandler.cs +++ b/Source/Game/Handlers/RAFHandler.cs @@ -24,63 +24,5 @@ namespace Game { public partial class WorldSession { - //[WorldPacketHandler(ClientOpcodes.GrantLevel)] - void HandleGrantLevel(GrantLevel grantLevel) - { - Player target = Global.ObjAccessor.GetPlayer(GetPlayer(), grantLevel.Target); - - // check cheating - byte levels = GetPlayer().GetGrantableLevels(); - ReferAFriendError error = 0; - if (!target) - error = ReferAFriendError.NoTarget; - if (levels == 0) - error = ReferAFriendError.InsufficientGrantableLevels; - else if (GetRecruiterId() != target.GetSession().GetAccountId()) - error = ReferAFriendError.NotReferredBy; - else if (target.GetTeamId() != GetPlayer().GetTeamId()) - error = ReferAFriendError.DifferentFaction; - else if (target.GetLevel() >= GetPlayer().GetLevel()) - error = ReferAFriendError.TargetTooHigh; - else if (target.GetLevel() >= WorldConfig.GetIntValue(WorldCfg.MaxRecruitAFriendBonusPlayerLevel)) - error = ReferAFriendError.GrantLevelMaxI; - else if (target.GetGroup() != GetPlayer().GetGroup()) - error = ReferAFriendError.NotInGroup; - else if (target.GetLevel() >= Global.ObjectMgr.GetMaxLevelForExpansion(target.GetSession().GetExpansion())) - error = ReferAFriendError.InsufExpanLvl; - - if (error != 0) - { - ReferAFriendFailure failure = new ReferAFriendFailure(); - failure.Reason = error; - if (error == ReferAFriendError.NotInGroup) - failure.Str = target.GetName(); - - SendPacket(failure); - return; - } - - //ProposeLevelGrant proposeLevelGrant = new ProposeLevelGrant(); - //proposeLevelGrant.Sender = GetPlayer().GetGUID(); - //target.SendPacket(proposeLevelGrant); - } - - //[WorldPacketHandler(ClientOpcodes.AcceptLevelGrant)] - void HandleAcceptGrantLevel(AcceptLevelGrant acceptLevelGrant) - { - Player other = Global.ObjAccessor.GetPlayer(GetPlayer(), acceptLevelGrant.Granter); - if (!(other && other.GetSession() != null)) - return; - - if (GetAccountId() != other.GetSession().GetRecruiterId()) - return; - - if (other.GetGrantableLevels() != 0) - other.SetGrantableLevels(other.GetGrantableLevels() - 1); - else - return; - - GetPlayer().GiveLevel(GetPlayer().GetLevel() + 1); - } } } diff --git a/Source/Game/Network/Packets/ReferAFriendPackets.cs b/Source/Game/Network/Packets/ReferAFriendPackets.cs index 709b27747..b642fe660 100644 --- a/Source/Game/Network/Packets/ReferAFriendPackets.cs +++ b/Source/Game/Network/Packets/ReferAFriendPackets.cs @@ -21,42 +21,6 @@ using System; namespace Game.Network.Packets { - public class AcceptLevelGrant : ClientPacket - { - public AcceptLevelGrant(WorldPacket packet) : base(packet) { } - - public override void Read() - { - Granter = _worldPacket.ReadPackedGuid(); - } - - public ObjectGuid Granter; - } - - public class GrantLevel : ClientPacket - { - public GrantLevel(WorldPacket packet) : base(packet) { } - - public override void Read() - { - Target = _worldPacket.ReadPackedGuid(); - } - - public ObjectGuid Target; - } - - /*public class ProposeLevelGrant : ServerPacket - { - public ProposeLevelGrant() : base(ServerOpcodes.ProposeLevelGrant) { } - - public override void Write() - { - _worldPacket.WritePackedGuid(Sender); - } - - public ObjectGuid Sender; - }*/ - public class ReferAFriendFailure : ServerPacket { public ReferAFriendFailure() : base(ServerOpcodes.ReferAFriendFailure) { } diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index cc1bda295..eff92f48b 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -1725,7 +1725,6 @@ CREATE TABLE `characters` ( `equipmentCache` longtext, `knownTitles` longtext, `actionBars` tinyint(3) unsigned NOT NULL DEFAULT '0', - `grantableLevels` tinyint(3) unsigned NOT NULL DEFAULT '0', `deleteInfos_Account` int(10) unsigned DEFAULT NULL, `deleteInfos_Name` varchar(12) DEFAULT NULL, `deleteDate` int(10) unsigned DEFAULT NULL, @@ -3570,7 +3569,8 @@ INSERT INTO `updates` VALUES ('2019_06_25_00_characters.sql','B8CBF79DEE02B40B01424327D31E52C70335BEC6','RELEASED','2019-06-25 22:40:37',0), ('2019_07_15_00_characters.sql','E1C77F604FB2A2FE8B32258CD0C9EC71BEA4F0FF','RELEASED','2019-06-25 22:40:37',0), ('2019_10_26_00_characters.sql','F1090ACDEB876A7BB5ED8829373F6305A217949A','RELEASED','2019-10-25 23:04:42',0), -('2019_10_26_01_characters.sql','59D5860930D02AB77D2AAA704C564957A9143760','RELEASED','2019-10-26 22:04:46',0); +('2019_10_26_01_characters.sql','59D5860930D02AB77D2AAA704C564957A9143760','RELEASED','2019-10-26 22:04:46',0), +('2019_11_03_00_characters.sql','DC789597F85B890E9A7901B4443DAD9CAEE2A02A','RELEASED','2019-11-03 14:13:27',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/characters/master/2019_11_03_00_characters.sql b/sql/updates/characters/master/2019_11_03_00_characters.sql new file mode 100644 index 000000000..2cdfefe0e --- /dev/null +++ b/sql/updates/characters/master/2019_11_03_00_characters.sql @@ -0,0 +1 @@ +ALTER TABLE `characters` DROP `grantableLevels`;