small changes to SessionService.cs and Toon.cs
This commit is contained in:
parent
011c82ac38
commit
fa93771a47
@ -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);
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
user.block.title