small changes to SessionService.cs and Toon.cs

This commit is contained in:
Lucca Faria Ferri 2023-02-20 03:49:38 -08:00
parent 011c82ac38
commit fa93771a47
2 changed files with 56 additions and 84 deletions

View File

@ -38,8 +38,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
public override void DestroySession(IRpcController controller, DestroySessionRequest request, Action<NoData> done) public override void DestroySession(IRpcController controller, DestroySessionRequest request, Action<NoData> done)
{ {
Logger.MethodTrace(""); Logger.MethodTrace($"Destroying game session for client {((HandlerController) controller).Client}");
Logger.Trace("Destroying game session for client {0}", ((HandlerController) controller).Client);
if (controller is HandlerController handlerController) if (controller is HandlerController handlerController)
{ {
DisconnectClient(handlerController); DisconnectClient(handlerController);

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq; using System.Linq;
using DiIiS_NA.Core.MPQ; using DiIiS_NA.Core.MPQ;
using DiIiS_NA.Core.Storage; using DiIiS_NA.Core.Storage;
@ -467,11 +468,9 @@ namespace DiIiS_NA.LoginServer.Toons
{ {
get get
{ {
if (_paragonLevelChanged || !LoginServerConfig.Instance.Enabled) if (!_paragonLevelChanged && LoginServerConfig.Instance.Enabled) return _cachedParagonLevel;
{ _cachedParagonLevel = GameAccount.DBGameAccount.ParagonLevel;
_cachedParagonLevel = GameAccount.DBGameAccount.ParagonLevel; _paragonLevelChanged = false;
_paragonLevelChanged = false;
}
return _cachedParagonLevel; return _cachedParagonLevel;
} }
@ -690,17 +689,7 @@ namespace DiIiS_NA.LoginServer.Toons
/// </summary> /// </summary>
public ulong CollectedGold public ulong CollectedGold
{ {
get get => IsHardcore ? GameAccount.DBGameAccount.HardTotalGold : GameAccount.DBGameAccount.TotalGold;
{
if (IsHardcore)
{
return GameAccount.DBGameAccount.HardTotalGold;
}
else
{
return GameAccount.DBGameAccount.TotalGold;
}
}
set set
{ {
var dbGAcc = GameAccount.DBGameAccount; var dbGAcc = GameAccount.DBGameAccount;
@ -816,8 +805,7 @@ namespace DiIiS_NA.LoginServer.Toons
} }
else else
{ {
IEnumerable<DBQuestHistory> _dbQuests = null; var dbQuests = DBSessions.SessionQueryWhere<DBQuestHistory>(dbi => dbi.DBToon.Id == PersistentID);
_dbQuests = DBSessions.SessionQueryWhere<DBQuestHistory>(dbi => dbi.DBToon.Id == PersistentID);
#if DEBUG #if DEBUG
digest digest
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
@ -842,7 +830,7 @@ namespace DiIiS_NA.LoginServer.Toons
.SetSnoQuest(72801)) .SetSnoQuest(72801))
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
.SetSnoQuest(136656)) .SetSnoQuest(136656))
//2 Акт //2 act
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
.SetSnoQuest(80322)) .SetSnoQuest(80322))
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
@ -863,7 +851,7 @@ namespace DiIiS_NA.LoginServer.Toons
.SetSnoQuest(121792)) .SetSnoQuest(121792))
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
.SetSnoQuest(57339)) .SetSnoQuest(57339))
//3 Акт //3 act
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
.SetSnoQuest(93595)) .SetSnoQuest(93595))
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
@ -878,7 +866,7 @@ namespace DiIiS_NA.LoginServer.Toons
.SetSnoQuest(101750)) .SetSnoQuest(101750))
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
.SetSnoQuest(101758)) .SetSnoQuest(101758))
//4 Акт //4 act
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
.SetSnoQuest(112498)) .SetSnoQuest(112498))
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
@ -887,7 +875,7 @@ namespace DiIiS_NA.LoginServer.Toons
.SetSnoQuest(114795)) .SetSnoQuest(114795))
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
.SetSnoQuest(114901)) .SetSnoQuest(114901))
//5 Акт //5 act
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
.SetSnoQuest(251355)) .SetSnoQuest(251355))
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
@ -920,9 +908,7 @@ namespace DiIiS_NA.LoginServer.Toons
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(80322)) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(80322))
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(93595)) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(93595))
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(112498)) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(112498))
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(251355)) .AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(251355));
;
#endif #endif
} }
@ -939,17 +925,17 @@ namespace DiIiS_NA.LoginServer.Toons
get get
{ {
var itemList = D3.Items.ItemList.CreateBuilder(); var itemList = D3.Items.ItemList.CreateBuilder();
List<DBInventory> heroInventoryItems = var heroInventoryItems =
DBSessions.SessionQueryWhere<DBInventory>(dbi => dbi.DBToon.Id == PersistentID); DBSessions.SessionQueryWhere<DBInventory>(dbi => dbi.DBToon.Id == PersistentID).ToImmutableArray();
//* //*
foreach (var invItem in heroInventoryItems) foreach (var invItem in heroInventoryItems)
{ {
if ((invItem.EquipmentSlot) == 0 || (invItem.EquipmentSlot == 15)) continue; if (invItem.EquipmentSlot is 0 or 15) continue;
var item = D3.Items.SavedItem.CreateBuilder() var item = D3.Items.SavedItem.CreateBuilder()
.SetId(D3.OnlineService.ItemId.CreateBuilder().SetIdLow(0) .SetId(D3.OnlineService.ItemId.CreateBuilder().SetIdLow(0)
.SetIdHigh(0x3C000002517A293 + (ulong)invItem.Id)) .SetIdHigh(0x3C000002517A293 + invItem.Id))
.SetHirelingClass(0) .SetHirelingClass(0)
.SetItemSlot(272 + (invItem.EquipmentSlot * 16)) .SetItemSlot(272 + invItem.EquipmentSlot * 16)
.SetOwnerEntityId(D3EntityID) .SetOwnerEntityId(D3EntityID)
.SetSquareIndex(0) .SetSquareIndex(0)
.SetUsedSocketCount(0); .SetUsedSocketCount(0);
@ -973,8 +959,7 @@ namespace DiIiS_NA.LoginServer.Toons
generator.SetItemQualityLevel(invItem.Quality); generator.SetItemQualityLevel(invItem.Quality);
foreach (string affix in affixes) foreach (string affix in affixes)
{ {
int result = 0; Int32.TryParse(affix, out var result);
Int32.TryParse(affix, out result);
generator.AddBaseAffixes(result); generator.AddBaseAffixes(result);
} }
@ -1065,17 +1050,23 @@ namespace DiIiS_NA.LoginServer.Toons
var dbActiveSkills = DBActiveSkills; var dbActiveSkills = DBActiveSkills;
var skills = new[] var skills = new[]
{ {
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill0) D3.Profile.SkillWithRune.CreateBuilder()
.SetSkill(dbActiveSkills.Skill0)
.SetRuneType(dbActiveSkills.Rune0).Build(), .SetRuneType(dbActiveSkills.Rune0).Build(),
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill1) D3.Profile.SkillWithRune.CreateBuilder()
.SetSkill(dbActiveSkills.Skill1)
.SetRuneType(dbActiveSkills.Rune1).Build(), .SetRuneType(dbActiveSkills.Rune1).Build(),
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill2) D3.Profile.SkillWithRune.CreateBuilder()
.SetSkill(dbActiveSkills.Skill2)
.SetRuneType(dbActiveSkills.Rune2).Build(), .SetRuneType(dbActiveSkills.Rune2).Build(),
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill3) D3.Profile.SkillWithRune.CreateBuilder()
.SetSkill(dbActiveSkills.Skill3)
.SetRuneType(dbActiveSkills.Rune3).Build(), .SetRuneType(dbActiveSkills.Rune3).Build(),
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill4) D3.Profile.SkillWithRune.CreateBuilder()
.SetSkill(dbActiveSkills.Skill4)
.SetRuneType(dbActiveSkills.Rune4).Build(), .SetRuneType(dbActiveSkills.Rune4).Build(),
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill5) D3.Profile.SkillWithRune.CreateBuilder()
.SetSkill(dbActiveSkills.Skill5)
.SetRuneType(dbActiveSkills.Rune5).Build() .SetRuneType(dbActiveSkills.Rune5).Build()
}; };
var passives = new[] var passives = new[]
@ -1107,41 +1098,24 @@ namespace DiIiS_NA.LoginServer.Toons
get get
{ {
if (!GameAccount.IsOnline) return false; if (!GameAccount.IsOnline) return false;
else if (GameAccount.CurrentToon != null)
{ return GameAccount.CurrentToon == this;
if (GameAccount.CurrentToon != null) return false;
return GameAccount.CurrentToon == this;
else
return false;
}
} }
} }
public int ClassID public int ClassID =>
{ Class switch
get
{ {
switch (Class) ToonClass.Barbarian => 0x4FB91EE2,
{ ToonClass.Crusader => unchecked((int)0xBE27DC19),
case ToonClass.Barbarian: ToonClass.DemonHunter => unchecked((int)0xC88B9649),
return 0x4FB91EE2; ToonClass.Monk => 0x3DAC15,
case ToonClass.Crusader: ToonClass.WitchDoctor => 0x343C22A,
return unchecked((int)0xBE27DC19); ToonClass.Wizard => 0x1D4681B1,
case ToonClass.DemonHunter: ToonClass.Necromancer => unchecked((int)0x8D4D94ED),
return unchecked((int)0xC88B9649); _ => 0x0
case ToonClass.Monk: };
return 0x3DAC15;
case ToonClass.WitchDoctor:
return 0x343C22A;
case ToonClass.Wizard:
return 0x1D4681B1;
case ToonClass.Necromancer:
return unchecked((int)0x8D4D94ED);
}
return 0x0;
}
}
// Used for Conversations // Used for Conversations
public int VoiceClassID => public int VoiceClassID =>
@ -1163,8 +1137,7 @@ namespace DiIiS_NA.LoginServer.Toons
public readonly Core.MPQ.FileFormats.GameBalance.HeroTable HeroTable; public readonly Core.MPQ.FileFormats.GameBalance.HeroTable HeroTable;
private readonly Dictionary<int, int> _visualToSlotMapping = new Dictionary<int, int> private readonly Dictionary<int, int> _visualToSlotMapping = new() { { 1, 0 }, { 2, 1 }, { 7, 2 }, { 5, 3 }, { 4, 4 }, { 3, 5 }, { 8, 6 }, { 9, 7 } };
{ { 1, 0 }, { 2, 1 }, { 7, 2 }, { 5, 3 }, { 4, 4 }, { 3, 5 }, { 8, 6 }, { 9, 7 } };
private static readonly Core.MPQ.FileFormats.GameBalance HeroData = private static readonly Core.MPQ.FileFormats.GameBalance HeroData =
(Core.MPQ.FileFormats.GameBalance)MPQStorage.Data.Assets[SNOGroup.GameBalance][19740].Data; (Core.MPQ.FileFormats.GameBalance)MPQStorage.Data.Assets[SNOGroup.GameBalance][19740].Data;
@ -1254,17 +1227,17 @@ namespace DiIiS_NA.LoginServer.Toons
public override List<bgs.protocol.presence.v1.FieldOperation> GetSubscriptionNotifications() public override List<bgs.protocol.presence.v1.FieldOperation> GetSubscriptionNotifications()
{ {
var operationList = new List<bgs.protocol.presence.v1.FieldOperation>(); return new List<bgs.protocol.presence.v1.FieldOperation>
operationList.Add(HeroClassField.GetFieldOperation()); {
operationList.Add(HeroLevelField.GetFieldOperation()); HeroClassField.GetFieldOperation(),
operationList.Add(HeroParagonLevelField.GetFieldOperation()); HeroLevelField.GetFieldOperation(),
operationList.Add(HeroVisualEquipmentField.GetFieldOperation()); HeroParagonLevelField.GetFieldOperation(),
operationList.Add(HeroFlagsField.GetFieldOperation()); HeroVisualEquipmentField.GetFieldOperation(),
operationList.Add(HeroNameField.GetFieldOperation()); HeroFlagsField.GetFieldOperation(),
operationList.Add(HighestUnlockedAct.GetFieldOperation()); HeroNameField.GetFieldOperation(),
operationList.Add(HighestUnlockedDifficulty.GetFieldOperation()); HighestUnlockedAct.GetFieldOperation(),
HighestUnlockedDifficulty.GetFieldOperation()
return operationList; };
} }
#endregion #endregion