Improved some commands, cleanup,...
This commit is contained in:
parent
e76fcb31ec
commit
8b442f9db8
@ -15,14 +15,63 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
public class Toon : PersistentRPCObject
|
||||
{
|
||||
#region Cosmetics
|
||||
public int Cosmetic1 { get => DBToon.Cosmetic1;
|
||||
set { lock (DBToon) { var dbToon = DBToon; dbToon.Cosmetic1 = value; DBSessions.SessionUpdate(dbToon); } } }
|
||||
public int Cosmetic2 { get => DBToon.Cosmetic2;
|
||||
set { lock (DBToon) { var dbToon = DBToon; dbToon.Cosmetic2 = value; DBSessions.SessionUpdate(dbToon); } } }
|
||||
public int Cosmetic3 { get => DBToon.Cosmetic3;
|
||||
set { lock (DBToon) { var dbToon = DBToon; dbToon.Cosmetic3 = value; DBSessions.SessionUpdate(dbToon); } } }
|
||||
public int Cosmetic4 { get => DBToon.Cosmetic4;
|
||||
set { lock (DBToon) { var dbToon = DBToon; dbToon.Cosmetic4 = value; DBSessions.SessionUpdate(dbToon); } } }
|
||||
|
||||
public int Cosmetic1
|
||||
{
|
||||
get => DBToon.Cosmetic1;
|
||||
set
|
||||
{
|
||||
lock (DBToon)
|
||||
{
|
||||
var dbToon = DBToon;
|
||||
dbToon.Cosmetic1 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int Cosmetic2
|
||||
{
|
||||
get => DBToon.Cosmetic2;
|
||||
set
|
||||
{
|
||||
lock (DBToon)
|
||||
{
|
||||
var dbToon = DBToon;
|
||||
dbToon.Cosmetic2 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int Cosmetic3
|
||||
{
|
||||
get => DBToon.Cosmetic3;
|
||||
set
|
||||
{
|
||||
lock (DBToon)
|
||||
{
|
||||
var dbToon = DBToon;
|
||||
dbToon.Cosmetic3 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int Cosmetic4
|
||||
{
|
||||
get => DBToon.Cosmetic4;
|
||||
set
|
||||
{
|
||||
lock (DBToon)
|
||||
{
|
||||
var dbToon = DBToon;
|
||||
dbToon.Cosmetic4 = value;
|
||||
DBSessions.SessionUpdate(dbToon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public DBToon DBToon
|
||||
@ -49,10 +98,7 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
|
||||
public DBActiveSkills DBActiveSkills
|
||||
{
|
||||
get
|
||||
{
|
||||
return DBSessions.SessionQuerySingle<DBActiveSkills>(s => s.DBToon.Id == PersistentID);
|
||||
}
|
||||
get { return DBSessions.SessionQuerySingle<DBActiveSkills>(s => s.DBToon.Id == PersistentID); }
|
||||
set { }
|
||||
}
|
||||
|
||||
@ -60,7 +106,8 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
{
|
||||
get
|
||||
{
|
||||
var val = new IntPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 1, 0, ClassID);
|
||||
var val = new IntPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 1, 0,
|
||||
ClassID);
|
||||
return val;
|
||||
}
|
||||
}
|
||||
@ -69,7 +116,8 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
{
|
||||
get
|
||||
{
|
||||
var val = new IntPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 2, 0, Level);
|
||||
var val = new IntPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 2, 0,
|
||||
Level);
|
||||
return val;
|
||||
}
|
||||
}
|
||||
@ -80,23 +128,27 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
{
|
||||
var tFlags = Flags;
|
||||
if (IsHardcore) tFlags |= ToonFlags.Hardcore;
|
||||
var val = new IntPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 4, 0, (int)tFlags);
|
||||
var val = new IntPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 4, 0,
|
||||
(int)tFlags);
|
||||
return val;
|
||||
}
|
||||
}
|
||||
|
||||
public IntPresenceField HighestUnlockedAct = new IntPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 6, 0, 3000);
|
||||
public IntPresenceField HighestUnlockedAct =
|
||||
new IntPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 6, 0, 3000);
|
||||
|
||||
public IntPresenceField HeroParagonLevelField
|
||||
{
|
||||
get
|
||||
{
|
||||
var val = new IntPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 8, 0, ParagonLevel);
|
||||
var val = new IntPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 8, 0,
|
||||
ParagonLevel);
|
||||
return val;
|
||||
}
|
||||
}
|
||||
|
||||
public StringPresenceField HeroNameField => new StringPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 5, 0, _heroName);
|
||||
public StringPresenceField HeroNameField => new StringPresenceField(FieldKeyHelper.Program.D3,
|
||||
FieldKeyHelper.OriginatingClass.Hero, 5, 0, _heroName);
|
||||
|
||||
private D3.Hero.VisualEquipment _visualEquipment = null;
|
||||
public bool _visualEquipmentChanged = true;
|
||||
@ -125,15 +177,17 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
D3.Hero.VisualCosmeticItem.CreateBuilder().SetGbid(Cosmetic3).Build(), // Pet
|
||||
D3.Hero.VisualCosmeticItem.CreateBuilder().SetGbid(Cosmetic4).Build(), // Frame
|
||||
};
|
||||
var visibleEquipment = DBSessions.SessionQueryWhere<DBInventory>(inv => inv.DBToon.Id == PersistentID && inv.EquipmentSlot > 0 && inv.EquipmentSlot < 15 && inv.ForSale == false);
|
||||
var visibleEquipment = DBSessions.SessionQueryWhere<DBInventory>(inv =>
|
||||
inv.DBToon.Id == PersistentID && inv.EquipmentSlot > 0 && inv.EquipmentSlot < 15 &&
|
||||
inv.ForSale == false);
|
||||
|
||||
foreach (var inv in visibleEquipment)
|
||||
{
|
||||
var slot = inv.EquipmentSlot;
|
||||
if (!visualToSlotMapping.ContainsKey(slot))
|
||||
if (!_visualToSlotMapping.ContainsKey(slot))
|
||||
continue;
|
||||
// decode vislual slot from equipment slot
|
||||
slot = visualToSlotMapping[slot];
|
||||
slot = _visualToSlotMapping[slot];
|
||||
visualItems[slot] = D3.Hero.VisualItem.CreateBuilder()
|
||||
.SetGbid(inv.TransmogGBID == -1 ? inv.GbId : inv.TransmogGBID)
|
||||
.SetDyeType(inv.DyeType)
|
||||
@ -141,14 +195,18 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
.Build();
|
||||
}
|
||||
|
||||
_visualEquipment = D3.Hero.VisualEquipment.CreateBuilder().AddRangeVisualItem(visualItems).AddRangeCosmeticItem(CosmeticItems).Build();
|
||||
_visualEquipment = D3.Hero.VisualEquipment.CreateBuilder().AddRangeVisualItem(visualItems)
|
||||
.AddRangeCosmeticItem(CosmeticItems).Build();
|
||||
_visualEquipmentChanged = false;
|
||||
}
|
||||
return new ByteStringPresenceField<D3.Hero.VisualEquipment>(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 3, 0, _visualEquipment);
|
||||
|
||||
return new ByteStringPresenceField<D3.Hero.VisualEquipment>(FieldKeyHelper.Program.D3,
|
||||
FieldKeyHelper.OriginatingClass.Hero, 3, 0, _visualEquipment);
|
||||
}
|
||||
}
|
||||
|
||||
public IntPresenceField HighestUnlockedDifficulty => new IntPresenceField(FieldKeyHelper.Program.D3, FieldKeyHelper.OriginatingClass.Hero, 7, 0, 9);
|
||||
public IntPresenceField HighestUnlockedDifficulty => new IntPresenceField(FieldKeyHelper.Program.D3,
|
||||
FieldKeyHelper.OriginatingClass.Hero, 7, 0, 9);
|
||||
|
||||
/// <summary>
|
||||
/// D3 EntityID encoded id.
|
||||
@ -172,11 +230,7 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsSeasoned
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool IsSeasoned { get; set; }
|
||||
|
||||
public int SeasonCreated
|
||||
{
|
||||
@ -241,7 +295,8 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
{
|
||||
get
|
||||
{
|
||||
return DBSessions.SessionQueryWhere<DBBonusSets>(dbi => dbi.SetId == 6 && dbi.ClaimedToon.Id == PersistentID).Any();
|
||||
return DBSessions
|
||||
.SessionQueryWhere<DBBonusSets>(dbi => dbi.SetId == 6 && dbi.ClaimedToon.Id == PersistentID).Any();
|
||||
}
|
||||
|
||||
set { }
|
||||
@ -374,6 +429,7 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
|
||||
private byte _cachedLevel = 0;
|
||||
private bool _levelChanged = true;
|
||||
|
||||
/// <summary>
|
||||
/// Toon's level.
|
||||
/// </summary>
|
||||
@ -386,6 +442,7 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
_cachedLevel = DBToon.Level;
|
||||
_levelChanged = false;
|
||||
}
|
||||
|
||||
return _cachedLevel;
|
||||
}
|
||||
private set
|
||||
@ -415,6 +472,7 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
_cachedParagonLevel = GameAccount.DBGameAccount.ParagonLevel;
|
||||
_paragonLevelChanged = false;
|
||||
}
|
||||
|
||||
return _cachedParagonLevel;
|
||||
}
|
||||
private set
|
||||
@ -544,24 +602,31 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
/// <summary>
|
||||
/// Killed monsters(total for account)
|
||||
/// </summary>
|
||||
public ulong TotalKilled {
|
||||
public ulong TotalKilled
|
||||
{
|
||||
get => GameAccount.DBGameAccount.TotalKilled;
|
||||
set {
|
||||
set
|
||||
{
|
||||
var dbGA = GameAccount.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
lock (dbGA)
|
||||
{
|
||||
dbGA.TotalKilled = value;
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Killed elites(total for account)
|
||||
/// </summary>
|
||||
public ulong ElitesKilled {
|
||||
public ulong ElitesKilled
|
||||
{
|
||||
get => GameAccount.DBGameAccount.ElitesKilled;
|
||||
set {
|
||||
set
|
||||
{
|
||||
var dbGA = GameAccount.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
lock (dbGA)
|
||||
{
|
||||
dbGA.ElitesKilled = value;
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
@ -571,24 +636,33 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
/// <summary>
|
||||
/// Bounties completed(total for account)
|
||||
/// </summary>
|
||||
public int TotalBounties {
|
||||
get {
|
||||
if (IsHardcore) {
|
||||
public int TotalBounties
|
||||
{
|
||||
get
|
||||
{
|
||||
if (IsHardcore)
|
||||
{
|
||||
return GameAccount.DBGameAccount.TotalBountiesHardcore;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
return GameAccount.DBGameAccount.TotalBounties;
|
||||
}
|
||||
}
|
||||
set {
|
||||
set
|
||||
{
|
||||
var dbGA = GameAccount.DBGameAccount;
|
||||
lock (dbGA) {
|
||||
if (IsHardcore) {
|
||||
lock (dbGA)
|
||||
{
|
||||
if (IsHardcore)
|
||||
{
|
||||
dbGA.TotalBountiesHardcore = value;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
dbGA.TotalBounties = value;
|
||||
}
|
||||
|
||||
DBSessions.SessionUpdate(dbGA);
|
||||
}
|
||||
}
|
||||
@ -614,24 +688,33 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
/// <summary>
|
||||
/// Total collected Gold(total for account)
|
||||
/// </summary>
|
||||
public ulong CollectedGold {
|
||||
get {
|
||||
if (IsHardcore) {
|
||||
public ulong CollectedGold
|
||||
{
|
||||
get
|
||||
{
|
||||
if (IsHardcore)
|
||||
{
|
||||
return GameAccount.DBGameAccount.HardTotalGold;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
return GameAccount.DBGameAccount.TotalGold;
|
||||
}
|
||||
}
|
||||
set {
|
||||
set
|
||||
{
|
||||
var dbGAcc = GameAccount.DBGameAccount;
|
||||
lock (dbGAcc) {
|
||||
if (IsHardcore) {
|
||||
lock (dbGAcc)
|
||||
{
|
||||
if (IsHardcore)
|
||||
{
|
||||
dbGAcc.HardTotalGold = value;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
dbGAcc.TotalGold = value;
|
||||
}
|
||||
|
||||
DBSessions.SessionUpdate(dbGAcc);
|
||||
}
|
||||
}
|
||||
@ -685,6 +768,7 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
/// Settings for toon.
|
||||
/// </summary>
|
||||
private D3.Client.ToonSettings _settings = D3.Client.ToonSettings.CreateBuilder().Build();
|
||||
|
||||
public D3.Client.ToonSettings Settings
|
||||
{
|
||||
get => D3.Client.ToonSettings.CreateBuilder().SetUiFlags(0xFFFFFFFF).Build(); //this._settings;
|
||||
@ -736,50 +820,90 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
_dbQuests = DBSessions.SessionQueryWhere<DBQuestHistory>(dbi => dbi.DBToon.Id == PersistentID);
|
||||
#if DEBUG
|
||||
digest
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(87700))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(72095))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(72221))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(72061))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(117779))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(72738))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(72738))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(73236))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(72546))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(72801))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(136656))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(87700))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(72095))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(72221))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(72061))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(117779))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(72738))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(72738))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(73236))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(72546))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(72801))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(136656))
|
||||
//2 Акт
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(80322))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(93396))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(74128))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(57331))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(78264))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(78266))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(57335))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(57337))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(121792))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(57339))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(80322))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(93396))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(74128))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(57331))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(78264))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(78266))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(57335))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(57337))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(121792))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(57339))
|
||||
//3 Акт
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(93595))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(93684))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(93697))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(203595))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(101756))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(101750))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(101758))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(93595))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(93684))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(93697))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(203595))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(101756))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(101750))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(101758))
|
||||
//4 Акт
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(112498))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(113910))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(114795))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(114901))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(112498))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(113910))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(114795))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(114901))
|
||||
//5 Акт
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(251355))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(284683))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(285098))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(257120))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(263851))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(273790))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(269552))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0).SetSnoQuest(273408))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(251355))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(284683))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(285098))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(257120))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(263851))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(273790))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(269552))
|
||||
.AddQuestHistory(D3.Hero.QuestHistoryEntry.CreateBuilder().SetDifficultyDeprecated(0)
|
||||
.SetSnoQuest(273408))
|
||||
;
|
||||
#else
|
||||
foreach (var inv in _dbQuests)
|
||||
@ -801,9 +925,11 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
return digest.Build();
|
||||
}
|
||||
}
|
||||
|
||||
//*/
|
||||
/// <summary>
|
||||
/// Hero Profile.
|
||||
@ -813,13 +939,15 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
get
|
||||
{
|
||||
var itemList = D3.Items.ItemList.CreateBuilder();
|
||||
List<DBInventory> heroInventoryItems = DBSessions.SessionQueryWhere<DBInventory>(dbi => dbi.DBToon.Id == PersistentID);
|
||||
List<DBInventory> heroInventoryItems =
|
||||
DBSessions.SessionQueryWhere<DBInventory>(dbi => dbi.DBToon.Id == PersistentID);
|
||||
//*
|
||||
foreach (var invItem in heroInventoryItems)
|
||||
{
|
||||
if ((invItem.EquipmentSlot) == 0 || (invItem.EquipmentSlot == 15)) continue;
|
||||
var item = D3.Items.SavedItem.CreateBuilder()
|
||||
.SetId(D3.OnlineService.ItemId.CreateBuilder().SetIdLow(0).SetIdHigh(0x3C000002517A293 + (ulong)invItem.Id))
|
||||
.SetId(D3.OnlineService.ItemId.CreateBuilder().SetIdLow(0)
|
||||
.SetIdHigh(0x3C000002517A293 + (ulong)invItem.Id))
|
||||
.SetHirelingClass(0)
|
||||
.SetItemSlot(272 + (invItem.EquipmentSlot * 16))
|
||||
.SetOwnerEntityId(D3EntityID)
|
||||
@ -830,12 +958,17 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
.SetGbHandle(D3.GameBalance.Handle.CreateBuilder().SetGbid(invItem.GbId).SetGameBalanceType(2))
|
||||
.SetStackSize(0)
|
||||
.SetDyeType((uint)invItem.DyeType)
|
||||
.SetFlags((uint)((invItem.Version == 1 || GameServer.GSSystem.ItemsSystem.ItemGenerator.IsCrafted(invItem.Attributes)) ? 2147483647 : 10633))
|
||||
.SetFlags((uint)((invItem.Version == 1 ||
|
||||
GameServer.GSSystem.ItemsSystem.ItemGenerator.IsCrafted(invItem.Attributes))
|
||||
? 2147483647
|
||||
: 10633))
|
||||
.SetSeed((uint)GameServer.GSSystem.ItemsSystem.ItemGenerator.GetSeed(invItem.Attributes))
|
||||
.SetTransmogGbid(invItem.TransmogGBID)
|
||||
.SetDurability(509);
|
||||
if (invItem.RareItemName != null) generator.SetRareItemName(D3.Items.RareItemName.ParseFrom(invItem.RareItemName));
|
||||
List<string> affixes = invItem.Affixes.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
if (invItem.RareItemName != null)
|
||||
generator.SetRareItemName(D3.Items.RareItemName.ParseFrom(invItem.RareItemName));
|
||||
List<string> affixes = invItem.Affixes.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
|
||||
.ToList();
|
||||
//if (affixes.Count() > 3 ) generator.SetFlags(10633);
|
||||
generator.SetItemQualityLevel(invItem.Quality);
|
||||
foreach (string affix in affixes)
|
||||
@ -844,12 +977,16 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
Int32.TryParse(affix, out result);
|
||||
generator.AddBaseAffixes(result);
|
||||
}
|
||||
|
||||
#region gems
|
||||
|
||||
if (invItem.FirstGem != -1)
|
||||
generator.AddContents(D3.Items.EmbeddedGenerator.CreateBuilder()
|
||||
.SetId(D3.OnlineService.ItemId.CreateBuilder().SetIdLow(0).SetIdHigh(0x3C000002517A293 + (ulong)invItem.Id))
|
||||
.SetId(D3.OnlineService.ItemId.CreateBuilder().SetIdLow(0)
|
||||
.SetIdHigh(0x3C000002517A293 + (ulong)invItem.Id))
|
||||
.SetGenerator(D3.Items.Generator.CreateBuilder()
|
||||
.SetGbHandle(D3.GameBalance.Handle.CreateBuilder().SetGbid(invItem.FirstGem).SetGameBalanceType(2))
|
||||
.SetGbHandle(D3.GameBalance.Handle.CreateBuilder().SetGbid(invItem.FirstGem)
|
||||
.SetGameBalanceType(2))
|
||||
.SetFlags(2147483647)
|
||||
.SetSeed(0)
|
||||
.SetDurability(509)
|
||||
@ -859,9 +996,11 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
|
||||
if (invItem.SecondGem != -1)
|
||||
generator.AddContents(D3.Items.EmbeddedGenerator.CreateBuilder()
|
||||
.SetId(D3.OnlineService.ItemId.CreateBuilder().SetIdLow(0).SetIdHigh(0x3C000002517A293 + (ulong)invItem.Id))
|
||||
.SetId(D3.OnlineService.ItemId.CreateBuilder().SetIdLow(0)
|
||||
.SetIdHigh(0x3C000002517A293 + (ulong)invItem.Id))
|
||||
.SetGenerator(D3.Items.Generator.CreateBuilder()
|
||||
.SetGbHandle(D3.GameBalance.Handle.CreateBuilder().SetGbid(invItem.SecondGem).SetGameBalanceType(2))
|
||||
.SetGbHandle(D3.GameBalance.Handle.CreateBuilder().SetGbid(invItem.SecondGem)
|
||||
.SetGameBalanceType(2))
|
||||
.SetFlags(2147483647)
|
||||
.SetSeed(0)
|
||||
.SetDurability(509)
|
||||
@ -871,20 +1010,24 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
|
||||
if (invItem.ThirdGem != -1)
|
||||
generator.AddContents(D3.Items.EmbeddedGenerator.CreateBuilder()
|
||||
.SetId(D3.OnlineService.ItemId.CreateBuilder().SetIdLow(0).SetIdHigh(0x3C000002517A293 + (ulong)invItem.Id))
|
||||
.SetId(D3.OnlineService.ItemId.CreateBuilder().SetIdLow(0)
|
||||
.SetIdHigh(0x3C000002517A293 + (ulong)invItem.Id))
|
||||
.SetGenerator(D3.Items.Generator.CreateBuilder()
|
||||
.SetGbHandle(D3.GameBalance.Handle.CreateBuilder().SetGbid(invItem.ThirdGem).SetGameBalanceType(2))
|
||||
.SetGbHandle(D3.GameBalance.Handle.CreateBuilder().SetGbid(invItem.ThirdGem)
|
||||
.SetGameBalanceType(2))
|
||||
.SetFlags(2147483647)
|
||||
.SetSeed(0)
|
||||
.SetDurability(509)
|
||||
.SetStackSize(0)
|
||||
)
|
||||
);
|
||||
|
||||
#endregion
|
||||
|
||||
item.SetGenerator(generator);
|
||||
itemList.AddItems(item.Build());
|
||||
}
|
||||
|
||||
//*/
|
||||
var dbToon = DBToon;
|
||||
string[] stats = dbToon.Stats.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
@ -920,21 +1063,31 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
if (DBActiveSkills != null)
|
||||
{
|
||||
var dbActiveSkills = DBActiveSkills;
|
||||
var skills = new[]{
|
||||
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill0).SetRuneType(dbActiveSkills.Rune0).Build(),
|
||||
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill1).SetRuneType(dbActiveSkills.Rune1).Build(),
|
||||
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill2).SetRuneType(dbActiveSkills.Rune2).Build(),
|
||||
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill3).SetRuneType(dbActiveSkills.Rune3).Build(),
|
||||
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill4).SetRuneType(dbActiveSkills.Rune4).Build(),
|
||||
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill5).SetRuneType(dbActiveSkills.Rune5).Build()
|
||||
var skills = new[]
|
||||
{
|
||||
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill0)
|
||||
.SetRuneType(dbActiveSkills.Rune0).Build(),
|
||||
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill1)
|
||||
.SetRuneType(dbActiveSkills.Rune1).Build(),
|
||||
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill2)
|
||||
.SetRuneType(dbActiveSkills.Rune2).Build(),
|
||||
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill3)
|
||||
.SetRuneType(dbActiveSkills.Rune3).Build(),
|
||||
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill4)
|
||||
.SetRuneType(dbActiveSkills.Rune4).Build(),
|
||||
D3.Profile.SkillWithRune.CreateBuilder().SetSkill(dbActiveSkills.Skill5)
|
||||
.SetRuneType(dbActiveSkills.Rune5).Build()
|
||||
};
|
||||
var passives = new[]{
|
||||
dbActiveSkills.Passive0, dbActiveSkills.Passive1, dbActiveSkills.Passive2, dbActiveSkills.Passive3
|
||||
var passives = new[]
|
||||
{
|
||||
dbActiveSkills.Passive0, dbActiveSkills.Passive1, dbActiveSkills.Passive2,
|
||||
dbActiveSkills.Passive3
|
||||
};
|
||||
profile.SetSnoActiveSkills(D3.Profile.SkillsWithRunes.CreateBuilder().AddRangeRunes(skills));
|
||||
profile.SetSnoTraits(D3.Profile.PassiveSkills.CreateBuilder().AddRangeSnoTraits(passives));
|
||||
|
||||
}
|
||||
|
||||
profile.SetLegendaryPowers(D3.Profile.LegendaryPowers.CreateBuilder()
|
||||
.AddGbidLegendaryPowers(-1)
|
||||
.AddGbidLegendaryPowers(-1)
|
||||
@ -985,48 +1138,42 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
case ToonClass.Necromancer:
|
||||
return unchecked((int)0x8D4D94ED);
|
||||
}
|
||||
|
||||
return 0x0;
|
||||
}
|
||||
}
|
||||
|
||||
// Used for Conversations
|
||||
public int VoiceClassID
|
||||
public int VoiceClassID =>
|
||||
Class switch
|
||||
{
|
||||
get
|
||||
{
|
||||
switch (Class)
|
||||
{
|
||||
case ToonClass.DemonHunter:
|
||||
return 0;
|
||||
case ToonClass.Barbarian:
|
||||
return 1;
|
||||
case ToonClass.Wizard:
|
||||
return 2;
|
||||
case ToonClass.WitchDoctor:
|
||||
return 3;
|
||||
case ToonClass.Monk:
|
||||
return 4;
|
||||
case ToonClass.Crusader:
|
||||
return 5;
|
||||
case ToonClass.Necromancer:
|
||||
return 6;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
ToonClass.DemonHunter => 0,
|
||||
ToonClass.Barbarian => 1,
|
||||
ToonClass.Wizard => 2,
|
||||
ToonClass.WitchDoctor => 3,
|
||||
ToonClass.Monk => 4,
|
||||
ToonClass.Crusader => 5,
|
||||
ToonClass.Necromancer => 6,
|
||||
_ => 0
|
||||
};
|
||||
|
||||
public int Gender => (int)(Flags & ToonFlags.Female);
|
||||
|
||||
#region c-tor and setfields
|
||||
|
||||
public readonly Core.MPQ.FileFormats.GameBalance.HeroTable HeroTable;
|
||||
private readonly Dictionary<int, int> visualToSlotMapping = new Dictionary<int, int> { { 1, 0 }, { 2, 1 }, { 7, 2 }, { 5, 3 }, { 4, 4 }, { 3, 5 }, { 8, 6 }, { 9, 7 } };
|
||||
private static readonly Core.MPQ.FileFormats.GameBalance HeroData = (Core.MPQ.FileFormats.GameBalance)MPQStorage.Data.Assets[SNOGroup.GameBalance][19740].Data;
|
||||
|
||||
private readonly Dictionary<int, int> _visualToSlotMapping = new Dictionary<int, int>
|
||||
{ { 1, 0 }, { 2, 1 }, { 7, 2 }, { 5, 3 }, { 4, 4 }, { 3, 5 }, { 8, 6 }, { 9, 7 } };
|
||||
|
||||
private static readonly Core.MPQ.FileFormats.GameBalance HeroData =
|
||||
(Core.MPQ.FileFormats.GameBalance)MPQStorage.Data.Assets[SNOGroup.GameBalance][19740].Data;
|
||||
|
||||
public Toon(DBToon dbToon, GameDBSession DBSession = null)
|
||||
: base(dbToon.Id)
|
||||
{
|
||||
D3EntityID = D3.OnlineService.EntityId.CreateBuilder().SetIdHigh((ulong)EntityIdHelper.HighIdType.ToonId).SetIdLow(PersistentID).Build();
|
||||
D3EntityID = D3.OnlineService.EntityId.CreateBuilder().SetIdHigh((ulong)EntityIdHelper.HighIdType.ToonId)
|
||||
.SetIdLow(PersistentID).Build();
|
||||
_heroName = dbToon.Name;
|
||||
_flags = dbToon.Flags;
|
||||
GameAccountId = dbToon.DBGameAccount.Id;
|
||||
@ -1053,7 +1200,12 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
GameAccount.ChangedFields.SetIntPresenceFieldValue(HeroParagonLevelField);
|
||||
}
|
||||
|
||||
private List<int> _allQuests = new List<int>() { 87700, 72095, 72221, 72061, 117779, 72738, 73236, 72546, 72801, 136656, 80322, 93396, 74128, 57331, 78264, 78266, 57335, 57337, 121792, 57339, 93595, 93684, 93697, 203595, 101756, 101750, 101758, 112498, 113910, 114795, 114901, 251355, 284683, 285098, 257120, 263851, 273790, 269552, 273408 };
|
||||
private readonly List<int> _allQuests = new()
|
||||
{
|
||||
87700, 72095, 72221, 72061, 117779, 72738, 73236, 72546, 72801, 136656, 80322, 93396, 74128, 57331, 78264,
|
||||
78266, 57335, 57337, 121792, 57339, 93595, 93684, 93697, 203595, 101756, 101750, 101758, 112498, 113910,
|
||||
114795, 114901, 251355, 284683, 285098, 257120, 263851, 273790, 269552, 273408
|
||||
};
|
||||
|
||||
public void UnlockAllQuests()
|
||||
{
|
||||
@ -1061,18 +1213,20 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
|
||||
foreach (var quest in _allQuests)
|
||||
{
|
||||
if (!questList.Any(qh => qh.QuestId == quest))
|
||||
if (questList.All(qh => qh.QuestId != quest))
|
||||
{
|
||||
var questHistory = new DBQuestHistory();
|
||||
questHistory.DBToon = DBToon;
|
||||
questHistory.QuestId = quest;
|
||||
questHistory.QuestStep = -1;
|
||||
questHistory.isCompleted = true;
|
||||
var questHistory = new DBQuestHistory
|
||||
{
|
||||
DBToon = DBToon,
|
||||
QuestId = quest,
|
||||
QuestStep = -1,
|
||||
isCompleted = true
|
||||
};
|
||||
DBSessions.SessionSave(questHistory);
|
||||
}
|
||||
else
|
||||
{
|
||||
var questHistory = questList.Where(qh => qh.QuestId == quest).First();
|
||||
var questHistory = questList.First(qh => qh.QuestId == quest);
|
||||
questHistory.isCompleted = true;
|
||||
DBSessions.SessionUpdate(questHistory);
|
||||
}
|
||||
@ -1085,6 +1239,7 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
_paragonLevelChanged = true;
|
||||
_visualEquipmentChanged = true;
|
||||
}
|
||||
|
||||
#region Notifications
|
||||
|
||||
//hero class generated
|
||||
@ -1133,17 +1288,19 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
case unchecked((int)0x8D4D94ED):
|
||||
return ToonClass.Necromancer;
|
||||
}
|
||||
|
||||
return ToonClass.Barbarian;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return String.Format("{{ Toon: {0} [lowId: {1}] }}", Name, D3EntityID.IdLow);
|
||||
return $"{{ Toon: {Name} [lowId: {D3EntityID.IdLow}] }}";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#region Definitions and Enums
|
||||
|
||||
//Order is important as actor voices and saved data is based on enum index
|
||||
public enum ToonClass // : uint
|
||||
{
|
||||
@ -1165,6 +1322,7 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
Female = 0x02,
|
||||
Fallen = 0x08,
|
||||
NeedRename = 0x20000000,
|
||||
|
||||
// TODO: These two need to be figured out still.. /plash
|
||||
//Unknown1 = 0x20,
|
||||
Unknown2 = 0x40,
|
||||
@ -1172,5 +1330,6 @@ namespace DiIiS_NA.LoginServer.Toons
|
||||
Unknown4 = 0x2000000,
|
||||
AllUnknowns = Unknown2 | Unknown3 | Unknown4
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@ -85,7 +85,7 @@ namespace DiIiS_NA.Core.MPQ
|
||||
{
|
||||
foreach (var mpq in pair.Value)
|
||||
{
|
||||
Logger.Trace("MPQ: {0}, added to the system.", System.IO.Path.GetFileName(mpq));
|
||||
Logger.Debug("MPQ: {0}, added to the system.", System.IO.Path.GetFileName(mpq));
|
||||
this.FileSystem.Archives.Add(new MpqArchive(new FileStream(mpq, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), true));
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ public class DropCommand : CommandGroup
|
||||
var amount = 1;
|
||||
if (@params != null && @params.Any())
|
||||
if (!int.TryParse(@params[0], out amount))
|
||||
amount = 1;
|
||||
return "Invalid amount.";
|
||||
|
||||
amount = amount switch
|
||||
{
|
||||
|
||||
@ -35,6 +35,7 @@ public class InfoCommand : CommandGroup
|
||||
foreach (var world in game.Worlds)
|
||||
{
|
||||
info.Add($"World: {world.SNO.ToString()} - {(int)world.SNO}");
|
||||
info.Add($"World Id: {world.GlobalID}");
|
||||
info.Add($"Players: {world.Players.Count}");
|
||||
info.Add($"Monsters: {world.Monsters.Count}");
|
||||
info.Add($"{world.Monsters.Count} players in world: ");
|
||||
|
||||
@ -275,9 +275,8 @@ namespace DiIiS_NA.GameServer.Core
|
||||
}
|
||||
|
||||
item.Owner = _owner;
|
||||
if (_owner is Player)
|
||||
if (_owner is Player ownerPlayer)
|
||||
{
|
||||
var ownerPlayer = _owner as Player;
|
||||
item.SetInventoryLocation(EquipmentSlot, column, row);
|
||||
if (EquipmentSlot == 15)
|
||||
ownerPlayer.Inventory.SaveItemToDB(ownerPlayer.Toon.GameAccount.DBGameAccount, null, EquipmentSlotId.Stash, item);
|
||||
@ -416,8 +415,7 @@ namespace DiIiS_NA.GameServer.Core
|
||||
|
||||
public Item GetItem(uint itemId)
|
||||
{
|
||||
Item item;
|
||||
if (!Items.TryGetValue(itemId, out item))
|
||||
if (!Items.TryGetValue(itemId, out var item))
|
||||
return null;
|
||||
return item;
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ namespace DiIiS_NA.GameServer.Core.Types.TagMap
|
||||
public class PowerKeys
|
||||
{
|
||||
#region compile a dictionary to access keys from ids. If you need a readable name for a TagID, look up its key and get its name
|
||||
private static Dictionary<int, TagKey> tags = new Dictionary<int, TagKey>();
|
||||
private static Dictionary<int, TagKey> tags = new();
|
||||
|
||||
public static TagKey GetKey(int index)
|
||||
{
|
||||
@ -24,483 +24,483 @@ namespace DiIiS_NA.GameServer.Core.Types.TagMap
|
||||
}
|
||||
#endregion
|
||||
|
||||
public static TagKeyInt TurnsIntoBasicMeleeAttack = new TagKeyInt(328386);
|
||||
public static TagKeyInt ReuseScriptState = new TagKeyInt(274432);
|
||||
public static TagKeyInt CastTargetEnemies = new TagKeyInt(328113);
|
||||
public static TagKeyInt CustomTargetUnaffectedOnly = new TagKeyInt(328800);
|
||||
public static TagKeyInt IsUsableInTown = new TagKeyInt(328080);
|
||||
public static TagKeyInt TurnsIntoBasicRangedAttack = new TagKeyInt(328385);
|
||||
public static TagKeyInt IsPrimary = new TagKeyInt(327776);
|
||||
public static TagKeyScript IsInvulnerableDuring = new TagKeyScript(328609);
|
||||
public static TagKeyInt OffhandAnimationTag_fordualwield = new TagKeyInt(262663);
|
||||
public static TagKeyInt IsPassive = new TagKeyInt(328592);
|
||||
public static TagKeyInt AnimationTag2 = new TagKeyInt(262658);
|
||||
public static TagKeyInt AnimationTag = new TagKeyInt(262656);
|
||||
public static TagKeyScript IsUntargetableDuring = new TagKeyScript(633616);
|
||||
public static TagKeyScript IsUninterruptableDuring = new TagKeyScript(328610);
|
||||
public static TagKeyScript BaseDamageScalar = new TagKeyScript(329840);
|
||||
public static TagKeyInt AlwaysHits = new TagKeyInt(327904);
|
||||
public static TagKeySNO CastingEffectGroup_Female = new TagKeySNO(264273);
|
||||
public static TagKeySNO CastingEffectGroup_Male = new TagKeySNO(262660);
|
||||
public static TagKeyInt Buff0ShowDuration = new TagKeyInt(271104);
|
||||
public static TagKeyScript CooldownTime = new TagKeyScript(327768);
|
||||
public static TagKeySNO Buff1EffectGroup = new TagKeySNO(270337);
|
||||
public static TagKeySNO Buff0EffectGroup = new TagKeySNO(270336);
|
||||
public static TagKeyInt CastTargetAllies = new TagKeyInt(328097);
|
||||
public static TagKeyInt RequiresTarget = new TagKeyInt(328432);
|
||||
public static TagKeyInt Buff3IsHarmful = new TagKeyInt(270851);
|
||||
public static TagKeyScript ResourceCost = new TagKeyScript(329616);
|
||||
public static TagKeyInt IconMouseover = new TagKeyInt(329488);
|
||||
public static TagKeyInt IconNormal = new TagKeyInt(329472);
|
||||
public static TagKeyInt IconPushed = new TagKeyInt(329504);
|
||||
public static TagKeyInt Buff3Icon = new TagKeyInt(270595);
|
||||
public static TagKeyInt Buff2ShowDuration = new TagKeyInt(271106);
|
||||
public static TagKeyInt IsMouseAssignable = new TagKeyInt(328048);
|
||||
public static TagKeyInt IsHotbarAssignable = new TagKeyInt(328064);
|
||||
public static TagKeyInt IsOffensive = new TagKeyInt(327840);
|
||||
public static TagKeyInt IsDisplayed = new TagKeyInt(327824);
|
||||
public static TagKeyInt Template = new TagKeyInt(327680);
|
||||
public static TagKeyInt CannotLMBAssign = new TagKeyInt(327920);
|
||||
public static TagKeyInt Buff2Icon = new TagKeyInt(270594);
|
||||
public static TagKeyInt Buff1Icon = new TagKeyInt(270593);
|
||||
public static TagKeyScript ScriptFormula10 = new TagKeyScript(266752);
|
||||
public static TagKeyScript ScriptFormula11 = new TagKeyScript(266768);
|
||||
public static TagKeyScript ScriptFormula12 = new TagKeyScript(266784);
|
||||
public static TagKeyScript ScriptFormula13 = new TagKeyScript(266800);
|
||||
public static TagKeyScript ScriptFormula14 = new TagKeyScript(266816);
|
||||
public static TagKeyInt Buff0PlayerCanCancel = new TagKeyInt(271360);
|
||||
public static TagKeyInt IconInactive = new TagKeyInt(329512);
|
||||
public static TagKeyInt Buff0Icon = new TagKeyInt(270592);
|
||||
public static TagKeyScript ScriptFormula0 = new TagKeyScript(266496);
|
||||
public static TagKeyScript ScriptFormula2 = new TagKeyScript(266528);
|
||||
public static TagKeyScript ScriptFormula3 = new TagKeyScript(266544);
|
||||
public static TagKeyScript ScriptFormula4 = new TagKeyScript(266560);
|
||||
public static TagKeyScript ScriptFormula5 = new TagKeyScript(266576);
|
||||
public static TagKeyScript ScriptFormula7 = new TagKeyScript(266608);
|
||||
public static TagKeyInt Buff3ShowDuration = new TagKeyInt(271107);
|
||||
public static TagKeyInt Buff2PlayerCanCancel = new TagKeyInt(271362);
|
||||
public static TagKeyScript FailsIfStunned = new TagKeyScript(328322);
|
||||
public static TagKeyScript BreaksFear = new TagKeyScript(681987);
|
||||
public static TagKeyScript BreaksStun = new TagKeyScript(681986);
|
||||
public static TagKeyScript BreaksSnare = new TagKeyScript(681985);
|
||||
public static TagKeyScript BreaksRoot = new TagKeyScript(681984);
|
||||
public static TagKeyScript FailsIfFeared = new TagKeyScript(328325);
|
||||
public static TagKeySNO ContactFrameEffectGroup_Male = new TagKeySNO(264192);
|
||||
public static TagKeySNO ContactFrameEffectGroup_Female = new TagKeySNO(264275);
|
||||
public static TagKeyInt SpellFunc0 = new TagKeyInt(327712);
|
||||
public static TagKeyInt CastTargetMustBeInTeleportableArea = new TagKeyInt(328083);
|
||||
public static TagKeySNO GenericEffectGroup0 = new TagKeySNO(262661);
|
||||
public static TagKeyScript ConcentrationDuration = new TagKeyScript(333088);
|
||||
public static TagKeyScript SlowTimeDuration = new TagKeyScript(332928);
|
||||
public static TagKeyScript RingofFrostRingLifetime = new TagKeyScript(332896);
|
||||
public static TagKeyScript DodgeDuration = new TagKeyScript(332848);
|
||||
public static TagKeyScript DamageAuraDuration = new TagKeyScript(332832);
|
||||
public static TagKeyScript RootDuration = new TagKeyScript(332816);
|
||||
public static TagKeyScript CurseDuration = new TagKeyScript(332800);
|
||||
public static TagKeyScript PaladinDeadTimeUntilResurrect = new TagKeyScript(332784);
|
||||
public static TagKeyScript BuffDurationMin = new TagKeyScript(332736);
|
||||
public static TagKeyScript ThunderingCryBuffDuration = new TagKeyScript(332720);
|
||||
public static TagKeyScript ThunderstormDuration = new TagKeyScript(332704);
|
||||
public static TagKeyScript TornadoLifeDurationMin = new TagKeyScript(332656);
|
||||
public static TagKeySNO EndingEffectGroup = new TagKeySNO(262662);
|
||||
public static TagKeyScript AttackSpeed = new TagKeyScript(329824);
|
||||
public static TagKeyScript ScriptFormula23 = new TagKeyScript(267056);
|
||||
public static TagKeyScript ScriptFormula22 = new TagKeyScript(267040);
|
||||
public static TagKeyScript ScriptFormula20 = new TagKeyScript(267008);
|
||||
public static TagKeyScript ScriptFormula21 = new TagKeyScript(267024);
|
||||
public static TagKeyScript EscapeAttackRadius = new TagKeyScript(329744);
|
||||
public static TagKeyScript AttackRadius = new TagKeyScript(329808);
|
||||
public static TagKeyInt IgnoresRangeOnShiftClick = new TagKeyInt(328600);
|
||||
public static TagKeyInt AutoAssignLocation = new TagKeyInt(328049);
|
||||
public static TagKeyInt CanSteer = new TagKeyInt(327937);
|
||||
public static TagKeyInt TurnsIntoBasicAttack = new TagKeyInt(328384);
|
||||
public static TagKeyInt ItemTypeRequirement = new TagKeyInt(328960);
|
||||
public static TagKeyInt SpecialDeathType = new TagKeyInt(328534);
|
||||
public static TagKeyScript ResourceCostMinToCast = new TagKeyScript(329617);
|
||||
public static TagKeyInt ControllerAutoTargets = new TagKeyInt(622592);
|
||||
public static TagKeyScript ControllerMinRange = new TagKeyScript(622593);
|
||||
public static TagKeyInt TargetGroundOnly = new TagKeyInt(328160);
|
||||
public static TagKeyInt TurnsIntoWalk = new TagKeyInt(327936);
|
||||
public static TagKeyInt IsAimedAtGround = new TagKeyInt(327888);
|
||||
public static TagKeyScript ScriptFormula19 = new TagKeyScript(266896);
|
||||
public static TagKeyScript ScriptFormula18 = new TagKeyScript(266880);
|
||||
public static TagKeyScript ScriptFormula17 = new TagKeyScript(266864);
|
||||
public static TagKeyScript ScriptFormula16 = new TagKeyScript(266848);
|
||||
public static TagKeyScript ScriptFormula15 = new TagKeyScript(266832);
|
||||
public static TagKeyInt UsesAttackWarmupTime = new TagKeyInt(328606);
|
||||
public static TagKeyInt AlternatesAnims = new TagKeyInt(328501);
|
||||
public static TagKeyFloat SpecialDeathChance = new TagKeyFloat(328532);
|
||||
public static TagKeyScript ScriptFormula9 = new TagKeyScript(266640);
|
||||
public static TagKeyScript ScriptFormula8 = new TagKeyScript(266624);
|
||||
public static TagKeyScript ScriptFormula1 = new TagKeyScript(266512);
|
||||
public static TagKeyScript ScriptFormula6 = new TagKeyScript(266592);
|
||||
public static TagKeyInt ContactFrameType = new TagKeyInt(328224);
|
||||
public static TagKeyScript PayloadParam0 = new TagKeyScript(329776);
|
||||
public static TagKeyInt PayloadType = new TagKeyInt(329760);
|
||||
public static TagKeyInt TargetEnemies = new TagKeyInt(328112);
|
||||
public static TagKeyInt SpellFunc1 = new TagKeyInt(327728);
|
||||
public static TagKeyScript ProjectileSpeed = new TagKeyScript(331184);
|
||||
public static TagKeyScript ChargedBoltNumBolts = new TagKeyScript(331056);
|
||||
public static TagKeySNO ProjectileActor = new TagKeySNO(262400);
|
||||
public static TagKeyScript ProcCooldownTime = new TagKeyScript(680768);
|
||||
public static TagKeyScript LightningDamageDelta = new TagKeyScript(330128);
|
||||
public static TagKeyScript LightningDamageMin = new TagKeyScript(330112);
|
||||
public static TagKeyInt CastTargetIgnoreWreckables = new TagKeyInt(328169);
|
||||
public static TagKeyInt TargetIgnoreWreckables = new TagKeyInt(328168);
|
||||
public static TagKeyScript ColdDamageMin = new TagKeyScript(330176);
|
||||
public static TagKeyScript ColdDamageDelta = new TagKeyScript(330192);
|
||||
public static TagKeyInt Buff1ShowDuration = new TagKeyInt(271105);
|
||||
public static TagKeyInt AutoPurchaseLevel = new TagKeyInt(329520);
|
||||
public static TagKeyInt Buff1PlayerCanCancel = new TagKeyInt(271361);
|
||||
public static TagKeyScript ImmuneToKnockback = new TagKeyScript(328352);
|
||||
public static TagKeyScript ImmuneToRecoil = new TagKeyScript(328336);
|
||||
public static TagKeyInt NeverUpdatesFacing = new TagKeyInt(328000);
|
||||
public static TagKeyInt ContactFreezesFacing = new TagKeyInt(327984);
|
||||
public static TagKeyInt IsBasicAttack = new TagKeyInt(327808);
|
||||
public static TagKeyInt SpellFuncBegin = new TagKeyInt(327696);
|
||||
public static TagKeyInt SpellFuncInterrupted = new TagKeyInt(327745);
|
||||
public static TagKeyScript NumCryptKidsToSpawnOnCorpulentExplosion = new TagKeyScript(332480);
|
||||
public static TagKeyInt TargetAllies = new TagKeyInt(328096);
|
||||
public static TagKeyInt NeverCausesRecoil = new TagKeyInt(327968);
|
||||
public static TagKeyScript MonsterCritDamageScalar = new TagKeyScript(684918);
|
||||
public static TagKeyScript PlayerCritDamageScalar = new TagKeyScript(684917);
|
||||
public static TagKeyInt Buff0IsHarmful = new TagKeyInt(270848);
|
||||
public static TagKeyInt DoesntCenter = new TagKeyInt(328032);
|
||||
public static TagKeyInt IsTranslate = new TagKeyInt(327856);
|
||||
public static TagKeyInt SpellFuncEnd = new TagKeyInt(327744);
|
||||
public static TagKeyScript SpecialWalkTrajectoryHeight = new TagKeyScript(332320);
|
||||
public static TagKeyScript SpecialWalkTrajectoryGravity = new TagKeyScript(332336);
|
||||
public static TagKeyInt SpecialWalkPerturbDestination = new TagKeyInt(332360);
|
||||
public static TagKeyInt IsChannelled = new TagKeyInt(328400);
|
||||
public static TagKeyInt InfiniteAnimTiming = new TagKeyInt(328208);
|
||||
public static TagKeyInt CustomTargetFunc = new TagKeyInt(328736);
|
||||
public static TagKeyInt CustomTargetPlayersOnly = new TagKeyInt(328752);
|
||||
public static TagKeyScript CustomTargetMinRange = new TagKeyScript(328768);
|
||||
public static TagKeyInt SnapsToFacing = new TagKeyInt(328021);
|
||||
public static TagKeyScript ManaPercentToReserve = new TagKeyScript(331600);
|
||||
public static TagKeyInt ComboAnimation1 = new TagKeyInt(262912);
|
||||
public static TagKeyScript ScriptFormula26 = new TagKeyScript(267104);
|
||||
public static TagKeyScript ScriptFormula28 = new TagKeyScript(267136);
|
||||
public static TagKeyScript ScriptFormula29 = new TagKeyScript(267152);
|
||||
public static TagKeyScript EscapeAttackAngle = new TagKeyScript(329745);
|
||||
public static TagKeyScript ComboAttackRadius1 = new TagKeyScript(329809);
|
||||
public static TagKeyInt ComboAnimation2 = new TagKeyInt(262913);
|
||||
public static TagKeyScript ComboAttackSpeed1 = new TagKeyScript(329825);
|
||||
public static TagKeySNO Buff3EffectGroup = new TagKeySNO(270339);
|
||||
public static TagKeyScript ComboAttackRadius2 = new TagKeyScript(329810);
|
||||
public static TagKeyScript ComboAttackSpeed2 = new TagKeyScript(329826);
|
||||
public static TagKeySNO Buff2EffectGroup = new TagKeySNO(270338);
|
||||
public static TagKeyScript ComboAttackRadius3 = new TagKeyScript(329811);
|
||||
public static TagKeyScript ComboAttackSpeed3 = new TagKeyScript(329827);
|
||||
public static TagKeyInt IsComboPower = new TagKeyInt(264448);
|
||||
public static TagKeyInt Buff3PlayerCanCancel = new TagKeyInt(271363);
|
||||
public static TagKeyInt ComboAnimation3 = new TagKeyInt(262914);
|
||||
public static TagKeySNO Combo1CastingEffectGroup_Male = new TagKeySNO(264289);
|
||||
public static TagKeySNO Combo1CastingEffectGroup_Female = new TagKeySNO(264321);
|
||||
public static TagKeyInt AffectedByDualWield = new TagKeyInt(328448);
|
||||
public static TagKeySNO Combo0CastingEffectGroup_Male = new TagKeySNO(264288);
|
||||
public static TagKeySNO Combo0CastingEffectGroup_Female = new TagKeySNO(264320);
|
||||
public static TagKeySNO Combo2CastingEffectGroup_Male = new TagKeySNO(264290);
|
||||
public static TagKeySNO Combo2CastingEffectGroup_Female = new TagKeySNO(264322);
|
||||
public static TagKeyScript ScriptFormula30 = new TagKeyScript(267264);
|
||||
public static TagKeyScript ScriptFormula31 = new TagKeyScript(267280);
|
||||
public static TagKeyScript ScriptFormula32 = new TagKeyScript(267296);
|
||||
public static TagKeyScript ScriptFormula33 = new TagKeyScript(267312);
|
||||
public static TagKeyScript ScriptFormula34 = new TagKeyScript(267328);
|
||||
public static TagKeyScript ScriptFormula35 = new TagKeyScript(267344);
|
||||
public static TagKeyScript ScriptFormula36 = new TagKeyScript(267360);
|
||||
public static TagKeyScript ScriptFormula37 = new TagKeyScript(267376);
|
||||
public static TagKeyScript ScriptFormula58 = new TagKeyScript(267904);
|
||||
public static TagKeyScript ScriptFormula59 = new TagKeyScript(267920);
|
||||
public static TagKeyScript SpiritGained = new TagKeyScript(684928);
|
||||
public static TagKeyScript CurseDamageAmplifyPercent = new TagKeyScript(331536);
|
||||
public static TagKeyInt Buff4Icon = new TagKeyInt(270596);
|
||||
public static TagKeyInt Buff4ShowDuration = new TagKeyInt(271108);
|
||||
public static TagKeySNO Buff4EffectGroup = new TagKeySNO(270340);
|
||||
public static TagKeyScript FailsIfSilenced = new TagKeyScript(328321);
|
||||
public static TagKeyInt Buff4PlayerCanCancel = new TagKeyInt(271364);
|
||||
public static TagKeyInt IsPhysical = new TagKeyInt(328624);
|
||||
public static TagKeyInt HitsoundOverride = new TagKeyInt(262433);
|
||||
public static TagKeyScript ScriptFormula25 = new TagKeyScript(267088);
|
||||
public static TagKeyInt Requires2HItem = new TagKeyInt(328992);
|
||||
public static TagKeyInt Buff2IsHarmful = new TagKeyInt(270850);
|
||||
public static TagKeyInt RequiresActorTarget = new TagKeyInt(328240);
|
||||
public static TagKeyInt ClipsTargetToAttackRadius = new TagKeyInt(684848);
|
||||
public static TagKeyInt CastTargetNeutral = new TagKeyInt(328145);
|
||||
public static TagKeyInt LOSCheck = new TagKeyInt(328720);
|
||||
public static TagKeyScript AttackRating = new TagKeyScript(329888);
|
||||
public static TagKeyScript DestructableObjectDamageDelay = new TagKeyScript(618496);
|
||||
public static TagKeyInt TargetNeutral = new TagKeyInt(328144);
|
||||
public static TagKeySNO ExplosionActor = new TagKeySNO(262401);
|
||||
public static TagKeyScript StunChance = new TagKeyScript(330816);
|
||||
public static TagKeyScript StunDurationMin = new TagKeyScript(330784);
|
||||
public static TagKeyScript PhysicalDamageDelta = new TagKeyScript(330000);
|
||||
public static TagKeyScript PhysicalDamageMin = new TagKeyScript(329984);
|
||||
public static TagKeyInt IsItemPower = new TagKeyInt(328601);
|
||||
public static TagKeyInt CastTargetCorpse = new TagKeyInt(328129);
|
||||
public static TagKeyScript SummonedActorLevel = new TagKeyScript(331136);
|
||||
public static TagKeyInt TargetContactPlaneOnly = new TagKeyInt(328162);
|
||||
public static TagKeyInt DontWalkCloserIfOutOfRange = new TagKeyInt(328256);
|
||||
public static TagKeyScript ResourceGainedOnFirstHit = new TagKeyScript(329627);
|
||||
public static TagKeyInt LocksActorsWhileSweeping = new TagKeyInt(328420);
|
||||
public static TagKeyInt Buff1IsHarmful = new TagKeyInt(270849);
|
||||
public static TagKeyScript FailsIfImmobilized = new TagKeyScript(328320);
|
||||
public static TagKeyInt StartWalkAfterIntro = new TagKeyInt(328288);
|
||||
public static TagKeyInt RollToDestination = new TagKeyInt(328368);
|
||||
public static TagKeyInt PickupItemsWhileMoving = new TagKeyInt(655984);
|
||||
public static TagKeyScript WalkingSpeedMultiplier = new TagKeyScript(331952);
|
||||
public static TagKeyScript SpecialWalkPlayerEndAnimScalar = new TagKeyScript(328536);
|
||||
public static TagKeyInt NeverUpdatesFacingStarting = new TagKeyInt(328016);
|
||||
public static TagKeyInt RequiresSkillPoint = new TagKeyInt(328248);
|
||||
public static TagKeyInt IsKnockbackMovement = new TagKeyInt(327860);
|
||||
public static TagKeyInt SpecialWalkIsKnockback = new TagKeyInt(332362);
|
||||
public static TagKeyScript BreaksImmobilize = new TagKeyScript(328304);
|
||||
public static TagKeyScript ImmunetoFearduring = new TagKeyScript(682243);
|
||||
public static TagKeyScript ImmunetoRootduring = new TagKeyScript(682240);
|
||||
public static TagKeyScript ImmunetoSnareduring = new TagKeyScript(682241);
|
||||
public static TagKeyScript ImmunetoStunduring = new TagKeyScript(682242);
|
||||
public static TagKeyInt CastTargetNormalMonstersOnly = new TagKeyInt(328617);
|
||||
public static TagKeyInt CausesClosingCooldown = new TagKeyInt(328632);
|
||||
public static TagKeyInt CastTargetIgnoreLargeMonsters = new TagKeyInt(328616);
|
||||
public static TagKeyScript CustomTargetMaxRange = new TagKeyScript(328784);
|
||||
public static TagKeySNO CustomTargetBuffPowerSNO = new TagKeySNO(328802);
|
||||
public static TagKeyScript FireDamageDelta = new TagKeyScript(330064);
|
||||
public static TagKeyScript FireDamageMin = new TagKeyScript(330048);
|
||||
public static TagKeyInt DisplaysNoDamage = new TagKeyInt(327829);
|
||||
public static TagKeyScript SkillPointCost = new TagKeyScript(329312);
|
||||
public static TagKeyInt CannotLockOntoActors = new TagKeyInt(328416);
|
||||
public static TagKeyInt ChannelledLocksActors = new TagKeyInt(328401);
|
||||
public static TagKeyInt NoAffectedACD = new TagKeyInt(328176);
|
||||
public static TagKeyScript ResourceCostReductionCoefficient = new TagKeyScript(329625);
|
||||
public static TagKeyInt TargetNavMeshOnly = new TagKeyInt(328163);
|
||||
public static TagKeySNO HitEffect = new TagKeySNO(684034);
|
||||
public static TagKeyInt OverrideHitEffects = new TagKeyInt(684032);
|
||||
public static TagKeyInt AnimationTagRuneE = new TagKeyInt(262677);
|
||||
public static TagKeyScript LifestealPercent = new TagKeyScript(331224);
|
||||
public static TagKeyScript CritChance = new TagKeyScript(331008);
|
||||
public static TagKeyScript GhostSoulsiphonMaxChannellingDistance = new TagKeyScript(365056);
|
||||
public static TagKeySNO Source_DestEffectGroup = new TagKeySNO(262659);
|
||||
public static TagKeyScript GhostSoulsiphonMaxChannellingTime = new TagKeyScript(364800);
|
||||
public static TagKeyScript GhostSoulsiphonSlowMultiplier = new TagKeyScript(364544);
|
||||
public static TagKeyScript GhostSoulsiphonDamagePerSecond = new TagKeyScript(365312);
|
||||
public static TagKeyInt CastTargetAllowDeadTargets = new TagKeyInt(328620);
|
||||
public static TagKeyScript BuffDurationDelta = new TagKeyScript(332752);
|
||||
public static TagKeyScript SlowMovementSpeedMultiplier = new TagKeyScript(692224);
|
||||
public static TagKeyScript FireDuration = new TagKeyScript(329976);
|
||||
public static TagKeyInt IsCancellable = new TagKeyInt(328544);
|
||||
public static TagKeyScript StunDurationDelta = new TagKeyScript(330800);
|
||||
public static TagKeySNO Rope = new TagKeySNO(262432);
|
||||
public static TagKeyScript LoopingAnimationTime = new TagKeyScript(263296);
|
||||
public static TagKeyInt ClassRestriction = new TagKeyInt(329648);
|
||||
public static TagKeyInt AlwaysKnown = new TagKeyInt(329536);
|
||||
public static TagKeyScript ScriptFormula38 = new TagKeyScript(267392);
|
||||
public static TagKeyScript ScriptFormula39 = new TagKeyScript(267408);
|
||||
public static TagKeyInt GenericBuffAttribute2 = new TagKeyInt(655648);
|
||||
public static TagKeyInt GenericBuffAttribute3 = new TagKeyInt(655664);
|
||||
public static TagKeyInt GenericBuffAttribute1 = new TagKeyInt(655632);
|
||||
public static TagKeyInt GenericBuffAttribute0 = new TagKeyInt(655616);
|
||||
public static TagKeyScript GenericBuffAttribute2Formula = new TagKeyScript(655649);
|
||||
public static TagKeyScript GenericBuffAttribute3Formula = new TagKeyScript(655665);
|
||||
public static TagKeyScript GenericBuffAttribute1Formula = new TagKeyScript(655633);
|
||||
public static TagKeyScript GenericBuffAttribute0Formula = new TagKeyScript(655617);
|
||||
public static TagKeyInt CallAIUpdateImmediatelyUponTermination = new TagKeyInt(328604);
|
||||
public static TagKeyInt ChecksVerticalMovement = new TagKeyInt(327864);
|
||||
public static TagKeyInt DoesntPreplayAnimation = new TagKeyInt(328611);
|
||||
public static TagKeyInt IsCompletedWhenWalkingStops = new TagKeyInt(328608);
|
||||
public static TagKeyScript DelayBeforeSettingTarget = new TagKeyScript(328539);
|
||||
public static TagKeyScript KnockbackMagnitude = new TagKeyScript(331696);
|
||||
public static TagKeyScript WhirlwindKnockbackMagnitude = new TagKeyScript(331664);
|
||||
public static TagKeyScript RetaliationKnockbackMagnitude = new TagKeyScript(331648);
|
||||
public static TagKeyInt ScaledAnimTiming = new TagKeyInt(328192);
|
||||
public static TagKeyInt IsADodgePower = new TagKeyInt(328480);
|
||||
public static TagKeyScript DodgeTravelDistanceMin = new TagKeyScript(332384);
|
||||
public static TagKeyScript DodgeTravelSpeed = new TagKeyScript(331936);
|
||||
public static TagKeyScript DodgeTravelAngleOffset = new TagKeyScript(332544);
|
||||
public static TagKeyInt TargetDoesntRequireActor = new TagKeyInt(328615);
|
||||
public static TagKeyInt CancelsOtherPowers = new TagKeyInt(328560);
|
||||
public static TagKeyInt NoInterruptTimer = new TagKeyInt(684880);
|
||||
public static TagKeyScript FuryCoefficient = new TagKeyScript(332180);
|
||||
public static TagKeyInt BrainActionType = new TagKeyInt(328704);
|
||||
public static TagKeyScript AIActionDurationMin = new TagKeyScript(332864);
|
||||
public static TagKeyScript WhirlwindDurationMin = new TagKeyScript(361504);
|
||||
public static TagKeyScript WhirlwindMovementSpeed = new TagKeyScript(361521);
|
||||
public static TagKeyScript KnockbackGravityMin = new TagKeyScript(331708);
|
||||
public static TagKeyScript KnockbackHeightMin = new TagKeyScript(331704);
|
||||
public static TagKeyScript HitpointsGrantedByHeal = new TagKeyScript(331264);
|
||||
public static TagKeySNO ChildPower = new TagKeySNO(327760);
|
||||
public static TagKeyScript HearthTime = new TagKeyScript(643072);
|
||||
public static TagKeyScript MovementSpeedPercentIncreaseMin = new TagKeyScript(332000);
|
||||
public static TagKeyScript AttackSpeedPercentIncreaseMin = new TagKeyScript(331968);
|
||||
public static TagKeyScript DamagePercentAll = new TagKeyScript(330752);
|
||||
public static TagKeySNO ProjectileWallFloorExplosion = new TagKeySNO(262410);
|
||||
public static TagKeyInt OnlyFreeCast = new TagKeyInt(329633);
|
||||
public static TagKeyInt ProcTargetsSelf = new TagKeyInt(328440);
|
||||
public static TagKeyScript ScriptFormula24 = new TagKeyScript(267072);
|
||||
public static TagKeyScript HealthCost = new TagKeyScript(329632);
|
||||
public static TagKeyScript WalkingDistanceMin = new TagKeyScript(331960);
|
||||
public static TagKeyInt AnimationTagRuneC = new TagKeyInt(262675);
|
||||
public static TagKeyScript IsInvisibleDuring = new TagKeyScript(340141);
|
||||
public static TagKeyInt SetTargetAfterIntro = new TagKeyInt(328292);
|
||||
public static TagKeyScript MinWalkDuration = new TagKeyScript(328535);
|
||||
public static TagKeyScript ScriptFormula27 = new TagKeyScript(267120);
|
||||
public static TagKeyInt AnimationTagRuneB = new TagKeyInt(262674);
|
||||
public static TagKeyInt AnimationTagRuneA = new TagKeyInt(262673);
|
||||
public static TagKeyScript AIActionDurationDelta = new TagKeyScript(332880);
|
||||
public static TagKeyInt UsesWeaponRange = new TagKeyInt(328607);
|
||||
public static TagKeySNO Combo1ContactFrameEffectGroup_Male = new TagKeySNO(264305);
|
||||
public static TagKeySNO Combo1ContactFrameEffectGroup_Female = new TagKeySNO(264337);
|
||||
public static TagKeySNO Combo0ContactFrameEffectGroup_Male = new TagKeySNO(264304);
|
||||
public static TagKeySNO Combo0ContactFrameEffectGroup_Female = new TagKeySNO(264336);
|
||||
public static TagKeySNO Combo2ContactFrameEffectGroup_Male = new TagKeySNO(264306);
|
||||
public static TagKeySNO Combo2ContactFrameEffectGroup_Female = new TagKeySNO(264338);
|
||||
public static TagKeyInt Requires1HItem = new TagKeyInt(328976);
|
||||
public static TagKeyScript SkeletonSummonMaxTotalCount = new TagKeyScript(332450);
|
||||
public static TagKeyScript SkeletonSummonCountPerSummon = new TagKeyScript(332448);
|
||||
public static TagKeyInt PlaySummonedByMonsterAnimation = new TagKeyInt(331137);
|
||||
public static TagKeyScript SkeletonSummonMaxCount = new TagKeyScript(332449);
|
||||
public static TagKeyScript SummonedActorLifeDuration = new TagKeyScript(331120);
|
||||
public static TagKeySNO ContactFrameEffectGroup_Male2 = new TagKeySNO(264194);
|
||||
public static TagKeySNO ContactFrameEffectGroup_Female2 = new TagKeySNO(264277);
|
||||
public static TagKeyInt ArcMoveUntilDestHeight = new TagKeyInt(328296);
|
||||
public static TagKeyScript RunInFrontDistance = new TagKeyScript(565248);
|
||||
public static TagKeyScript SpecialWalkHeightIsRelativeToMax = new TagKeyScript(332338);
|
||||
public static TagKeyScript SpecialWalkTrajectoryGravityDelta = new TagKeyScript(332337);
|
||||
public static TagKeyScript SpecialWalkTrajectoryHeightDelta = new TagKeyScript(332321);
|
||||
public static TagKeyScript PierceChance = new TagKeyScript(331040);
|
||||
public static TagKeyInt CanPathDuringWalk = new TagKeyInt(328272);
|
||||
public static TagKeyScript UseSpecialWalkSteering = new TagKeyScript(328538);
|
||||
public static TagKeyInt UsesAnimTag2IfBuffExists = new TagKeyInt(266240);
|
||||
public static TagKeyInt IsEmote = new TagKeyInt(264704);
|
||||
public static TagKeySNO EmoteConversationSNO = new TagKeySNO(264720);
|
||||
public static TagKeyInt SpellFuncCreate = new TagKeyInt(327697);
|
||||
public static TagKeyScript NovaDelay = new TagKeyScript(655985);
|
||||
public static TagKeyScript AuraAffectedRadius = new TagKeyScript(331840);
|
||||
public static TagKeyScript BuffDurationBetweenPulses = new TagKeyScript(332768);
|
||||
public static TagKeyScript PowerGainedPerSecond = new TagKeyScript(700435);
|
||||
public static TagKeyScript ManaGainedPerSecond = new TagKeyScript(331520);
|
||||
public static TagKeyScript FuryGenerationBonusPercent = new TagKeyScript(700434);
|
||||
public static TagKeyScript SpiritGenerationBonusPercent = new TagKeyScript(700433);
|
||||
public static TagKeyScript ArcanumGainedPerSecond = new TagKeyScript(700432);
|
||||
public static TagKeyScript PoisonDamageDelta = new TagKeyScript(330256);
|
||||
public static TagKeyScript PoisonDamageMin = new TagKeyScript(330240);
|
||||
public static TagKeyScript PoisonCloudNumIntervals = new TagKeyScript(330992);
|
||||
public static TagKeyScript PoisonCloudIntervalDuration = new TagKeyScript(330976);
|
||||
public static TagKeySNO TargetImpactParticle = new TagKeySNO(262405);
|
||||
public static TagKeyInt IsPunch = new TagKeyInt(327792);
|
||||
public static TagKeyInt Buff5ShowDuration = new TagKeyInt(271109);
|
||||
public static TagKeyInt Buff5PlayerCanCancel = new TagKeyInt(271365);
|
||||
public static TagKeyInt Buff6ShowDuration = new TagKeyInt(271110);
|
||||
public static TagKeyInt Buff6PlayerCanCancel = new TagKeyInt(271366);
|
||||
public static TagKeyInt Buff6Icon = new TagKeyInt(270598);
|
||||
public static TagKeyInt Buff5Icon = new TagKeyInt(270597);
|
||||
public static TagKeyInt SnapsToGround = new TagKeyInt(328496);
|
||||
public static TagKeyInt CanUseWhenDead = new TagKeyInt(328528);
|
||||
public static TagKeyScript BlindDurationMin = new TagKeyScript(684577);
|
||||
public static TagKeyScript PayloadParam1 = new TagKeyScript(329792);
|
||||
public static TagKeyScript BlindDurationDelta = new TagKeyScript(684578);
|
||||
public static TagKeyScript CanUseWhenFeared = new TagKeyScript(328512);
|
||||
public static TagKeyScript ResurrectionBuffTime = new TagKeyScript(647168);
|
||||
public static TagKeyScript ResurrectionHealthMultiplierToStart = new TagKeyScript(651264);
|
||||
public static TagKeyScript ProjectileCount = new TagKeyScript(331193);
|
||||
public static TagKeyScript ProjectileJitter = new TagKeyScript(331196);
|
||||
public static TagKeySNO RootGrabPower = new TagKeySNO(606208);
|
||||
public static TagKeyScript RootTimerModificationPerStruggle = new TagKeyScript(360960);
|
||||
public static TagKeyScript PercentofDamageThatShieldCanAbsorb = new TagKeyScript(332641);
|
||||
public static TagKeyScript AnatomyCritBonusPercent = new TagKeyScript(413696);
|
||||
public static TagKeyScript VanishDuration = new TagKeyScript(458752);
|
||||
public static TagKeyScript HitpointsThatShieldCanAbsorb = new TagKeyScript(332640);
|
||||
public static TagKeyScript ShrineBuffRadius = new TagKeyScript(633603);
|
||||
public static TagKeyInt ShrineBuffAllies = new TagKeyInt(633602);
|
||||
public static TagKeyScript ScaleBonus = new TagKeyScript(332024);
|
||||
public static TagKeyScript DefensePercentAll = new TagKeyScript(330768);
|
||||
public static TagKeyScript BonusHitpointPercent = new TagKeyScript(331568);
|
||||
public static TagKeyScript ShrineBuffBonus = new TagKeyScript(633601);
|
||||
public static TagKeyInt SummonedAnimationTag = new TagKeyInt(332451);
|
||||
public static TagKeyScript ArcaneDamageMin = new TagKeyScript(330304);
|
||||
public static TagKeyScript ArcaneDamageDelta = new TagKeyScript(330320);
|
||||
public static TagKeyScript BlizzardInitialImpactDelay = new TagKeyScript(332080);
|
||||
public static TagKeySNO ChainRope = new TagKeySNO(262403);
|
||||
public static TagKeyScript ImmobilizeDurationDelta = new TagKeyScript(330880);
|
||||
public static TagKeyScript WebDurationDelta = new TagKeyScript(330848);
|
||||
public static TagKeyScript ImmobilizeDurationMin = new TagKeyScript(330864);
|
||||
public static TagKeyScript WebDurationMin = new TagKeyScript(330832);
|
||||
public static TagKeyInt IsToggleable = new TagKeyInt(327952);
|
||||
public static TagKeyScript SlowDurationMin = new TagKeyScript(330896);
|
||||
public static TagKeyInt IsUsableInCombat = new TagKeyInt(328081);
|
||||
public static TagKeyInt CastTargetGroundOnly = new TagKeyInt(328161);
|
||||
public static TagKeyInt CausesKnockback = new TagKeyInt(331697);
|
||||
public static TagKeyInt ClientControlsFacing = new TagKeyInt(328022);
|
||||
public static TagKeyScript DisintegrateBeamWidth = new TagKeyScript(332304);
|
||||
public static TagKeyScript DisintegrateTimeBetweenUpdates = new TagKeyScript(332688);
|
||||
public static TagKeyInt CustomTargetBuffPowerSNOBuffIndex = new TagKeyInt(328801);
|
||||
public static TagKeyInt ProjectileThrowOverGuys = new TagKeyInt(262408);
|
||||
public static TagKeyInt IsLobbed = new TagKeyInt(327872);
|
||||
public static TagKeyScript DurationDelta = new TagKeyScript(684930);
|
||||
public static TagKeyScript DurationMin = new TagKeyScript(684929);
|
||||
public static TagKeyInt UsesWeaponProjectile = new TagKeyInt(262480);
|
||||
public static TagKeyScript ModalCursorRadius = new TagKeyScript(328069);
|
||||
public static TagKeyFloat ProjectileGravity = new TagKeyFloat(329872);
|
||||
public static TagKeyInt ProjectileScaleVelocity = new TagKeyInt(262435);
|
||||
public static TagKeyScript HeightAboveSource = new TagKeyScript(329880);
|
||||
public static TagKeyScript ProjectileSpreadAngle = new TagKeyScript(331194);
|
||||
public static TagKeyFloat CustomTargetNeedsHealHPPercent = new TagKeyFloat(328804);
|
||||
public static TagKeyScript EnergyShieldManaCostPerDamage = new TagKeyScript(332576);
|
||||
public static TagKeySNO SynergyPower = new TagKeySNO(327764);
|
||||
public static TagKeyInt IsUpgrade = new TagKeyInt(329216);
|
||||
public static TagKeyFloat AnimationTurnThreshold = new TagKeyFloat(263426);
|
||||
public static TagKeyInt AnimationTagTurnRight = new TagKeyInt(263425);
|
||||
public static TagKeyInt AnimationTagTurnLeft = new TagKeyInt(263424);
|
||||
public static TagKeyInt IsOnlyUsableInTownPortalAreas = new TagKeyInt(328082);
|
||||
public static TagKeyInt IsCancellableByWalking = new TagKeyInt(328546);
|
||||
public static TagKeyInt FollowWalkAnimTag = new TagKeyInt(561424);
|
||||
public static TagKeyInt FollowMatchTargetSpeed = new TagKeyInt(561408);
|
||||
public static TagKeyScript RunNearbyDistanceMin = new TagKeyScript(332416);
|
||||
public static TagKeyScript RunNearbyDistanceDelta = new TagKeyScript(332432);
|
||||
public static TagKeyScript FollowStartDistance = new TagKeyScript(561152);
|
||||
public static TagKeyScript FollowStopDistance = new TagKeyScript(557056);
|
||||
public static TagKeyInt Buff5IsHarmful = new TagKeyInt(270853);
|
||||
public static TagKeySNO Buff5EffectGroup = new TagKeySNO(270341);
|
||||
public static TagKeyInt Buff4IsHarmful = new TagKeyInt(270852);
|
||||
public static TagKeyScript HolyDamageMin = new TagKeyScript(330496);
|
||||
public static TagKeyScript HolyDamageDelta = new TagKeyScript(330512);
|
||||
public static TagKeyScript DestinationJitterAttempts = new TagKeyScript(360704);
|
||||
public static TagKeyScript DestinationJitterRadius = new TagKeyScript(360448);
|
||||
public static TagKeyInt RootEndFunc = new TagKeyInt(606464);
|
||||
public static TagKeySNO ConsumesItem = new TagKeySNO(329088);
|
||||
public static TagKeyScript DebuffDurationMin = new TagKeyScript(655680);
|
||||
public static TagKeyScript ProcChance = new TagKeyScript(680704);
|
||||
public static TagKeySNO Upgrade2 = new TagKeySNO(329264);
|
||||
public static TagKeySNO Upgrade1 = new TagKeySNO(329248);
|
||||
public static TagKeySNO Upgrade0 = new TagKeySNO(329232);
|
||||
public static TagKeyScript FreezeDamageDoneMin = new TagKeyScript(331232);
|
||||
public static TagKeyScript AttackRatingPercent = new TagKeyScript(329904);
|
||||
public static TagKeyScript SummoningMachineNodeIsInvulnerable = new TagKeyScript(704512);
|
||||
public static TagKeySNO DamageDisplayPower = new TagKeySNO(627456);
|
||||
public static TagKeySNO Buff6EffectGroup = new TagKeySNO(270342);
|
||||
public static TagKeyInt Buff6IsHarmful = new TagKeyInt(270854);
|
||||
public static TagKeyScript DodgeTravelDistanceDelta = new TagKeyScript(332400);
|
||||
public static TagKeySNO Buff7EffectGroup = new TagKeySNO(270343);
|
||||
public static TagKeyInt ComboAnimation1RuneA = new TagKeyInt(263185);
|
||||
public static TagKeyScript KnockbackGravityDelta = new TagKeyScript(331709);
|
||||
public static TagKeyScript KnockbackHeightDelta = new TagKeyScript(331705);
|
||||
public static TagKeyScript FuryAddPerInterval = new TagKeyScript(332178);
|
||||
public static TagKeyScript FuryDegenerationOutofCombat_persecond = new TagKeyScript(332177);
|
||||
public static TagKeyScript FuryGainedPerSecondOfAttack = new TagKeyScript(332097);
|
||||
public static TagKeyScript FuryTimeBetweenUpdates = new TagKeyScript(333056);
|
||||
public static TagKeyScript FuryDegenerationStart_inseconds = new TagKeyScript(332181);
|
||||
public static TagKeyScript FuryGainedPerPercentHealthLost = new TagKeyScript(332096);
|
||||
public static TagKeyScript FuryMaxDamageBonus = new TagKeyScript(332185);
|
||||
public static TagKeyScript SlowTimeAmount = new TagKeyScript(330944);
|
||||
public static TagKeyScript SlowAmount = new TagKeyScript(330928);
|
||||
public static TagKeyInt ComboAnimation1RuneC = new TagKeyInt(263187);
|
||||
public static TagKeyInt ComboAnimation1RuneE = new TagKeyInt(263189);
|
||||
public static TagKeyInt ComboAnimation1RuneD = new TagKeyInt(263188);
|
||||
public static TagKeyInt ComboAnimation1RuneB = new TagKeyInt(263186);
|
||||
public static TagKeyInt ComboAnimation3RuneC = new TagKeyInt(263219);
|
||||
public static TagKeyInt AnimationTagRuneD = new TagKeyInt(262676);
|
||||
public static TagKeyScript GenericBuffAttribute0AndParameter = new TagKeyScript(655618);
|
||||
public static TagKeyScript GenericBuffAttribute1AndParameter = new TagKeyScript(655634);
|
||||
public static TagKeyInt SpecialWalkGoThroughOccluded = new TagKeyInt(332341);
|
||||
public static TagKeyScript ProcCoefficient = new TagKeyScript(329983);
|
||||
public static TagKeyInt TurnsIntoBasicMeleeAttack = new(328386);
|
||||
public static TagKeyInt ReuseScriptState = new(274432);
|
||||
public static TagKeyInt CastTargetEnemies = new(328113);
|
||||
public static TagKeyInt CustomTargetUnaffectedOnly = new(328800);
|
||||
public static TagKeyInt IsUsableInTown = new(328080);
|
||||
public static TagKeyInt TurnsIntoBasicRangedAttack = new(328385);
|
||||
public static TagKeyInt IsPrimary = new(327776);
|
||||
public static TagKeyScript IsInvulnerableDuring = new(328609);
|
||||
public static TagKeyInt OffhandAnimationTag_fordualwield = new(262663);
|
||||
public static TagKeyInt IsPassive = new(328592);
|
||||
public static TagKeyInt AnimationTag2 = new(262658);
|
||||
public static TagKeyInt AnimationTag = new(262656);
|
||||
public static TagKeyScript IsUntargetableDuring = new(633616);
|
||||
public static TagKeyScript IsUninterruptableDuring = new(328610);
|
||||
public static TagKeyScript BaseDamageScalar = new(329840);
|
||||
public static TagKeyInt AlwaysHits = new(327904);
|
||||
public static TagKeySNO CastingEffectGroup_Female = new(264273);
|
||||
public static TagKeySNO CastingEffectGroup_Male = new(262660);
|
||||
public static TagKeyInt Buff0ShowDuration = new(271104);
|
||||
public static TagKeyScript CooldownTime = new(327768);
|
||||
public static TagKeySNO Buff1EffectGroup = new(270337);
|
||||
public static TagKeySNO Buff0EffectGroup = new(270336);
|
||||
public static TagKeyInt CastTargetAllies = new(328097);
|
||||
public static TagKeyInt RequiresTarget = new(328432);
|
||||
public static TagKeyInt Buff3IsHarmful = new(270851);
|
||||
public static TagKeyScript ResourceCost = new(329616);
|
||||
public static TagKeyInt IconMouseover = new(329488);
|
||||
public static TagKeyInt IconNormal = new(329472);
|
||||
public static TagKeyInt IconPushed = new(329504);
|
||||
public static TagKeyInt Buff3Icon = new(270595);
|
||||
public static TagKeyInt Buff2ShowDuration = new(271106);
|
||||
public static TagKeyInt IsMouseAssignable = new(328048);
|
||||
public static TagKeyInt IsHotbarAssignable = new(328064);
|
||||
public static TagKeyInt IsOffensive = new(327840);
|
||||
public static TagKeyInt IsDisplayed = new(327824);
|
||||
public static TagKeyInt Template = new(327680);
|
||||
public static TagKeyInt CannotLMBAssign = new(327920);
|
||||
public static TagKeyInt Buff2Icon = new(270594);
|
||||
public static TagKeyInt Buff1Icon = new(270593);
|
||||
public static TagKeyScript ScriptFormula10 = new(266752);
|
||||
public static TagKeyScript ScriptFormula11 = new(266768);
|
||||
public static TagKeyScript ScriptFormula12 = new(266784);
|
||||
public static TagKeyScript ScriptFormula13 = new(266800);
|
||||
public static TagKeyScript ScriptFormula14 = new(266816);
|
||||
public static TagKeyInt Buff0PlayerCanCancel = new(271360);
|
||||
public static TagKeyInt IconInactive = new(329512);
|
||||
public static TagKeyInt Buff0Icon = new(270592);
|
||||
public static TagKeyScript ScriptFormula0 = new(266496);
|
||||
public static TagKeyScript ScriptFormula2 = new(266528);
|
||||
public static TagKeyScript ScriptFormula3 = new(266544);
|
||||
public static TagKeyScript ScriptFormula4 = new(266560);
|
||||
public static TagKeyScript ScriptFormula5 = new(266576);
|
||||
public static TagKeyScript ScriptFormula7 = new(266608);
|
||||
public static TagKeyInt Buff3ShowDuration = new(271107);
|
||||
public static TagKeyInt Buff2PlayerCanCancel = new(271362);
|
||||
public static TagKeyScript FailsIfStunned = new(328322);
|
||||
public static TagKeyScript BreaksFear = new(681987);
|
||||
public static TagKeyScript BreaksStun = new(681986);
|
||||
public static TagKeyScript BreaksSnare = new(681985);
|
||||
public static TagKeyScript BreaksRoot = new(681984);
|
||||
public static TagKeyScript FailsIfFeared = new(328325);
|
||||
public static TagKeySNO ContactFrameEffectGroup_Male = new(264192);
|
||||
public static TagKeySNO ContactFrameEffectGroup_Female = new(264275);
|
||||
public static TagKeyInt SpellFunc0 = new(327712);
|
||||
public static TagKeyInt CastTargetMustBeInTeleportableArea = new(328083);
|
||||
public static TagKeySNO GenericEffectGroup0 = new(262661);
|
||||
public static TagKeyScript ConcentrationDuration = new(333088);
|
||||
public static TagKeyScript SlowTimeDuration = new(332928);
|
||||
public static TagKeyScript RingofFrostRingLifetime = new(332896);
|
||||
public static TagKeyScript DodgeDuration = new(332848);
|
||||
public static TagKeyScript DamageAuraDuration = new(332832);
|
||||
public static TagKeyScript RootDuration = new(332816);
|
||||
public static TagKeyScript CurseDuration = new(332800);
|
||||
public static TagKeyScript PaladinDeadTimeUntilResurrect = new(332784);
|
||||
public static TagKeyScript BuffDurationMin = new(332736);
|
||||
public static TagKeyScript ThunderingCryBuffDuration = new(332720);
|
||||
public static TagKeyScript ThunderstormDuration = new(332704);
|
||||
public static TagKeyScript TornadoLifeDurationMin = new(332656);
|
||||
public static TagKeySNO EndingEffectGroup = new(262662);
|
||||
public static TagKeyScript AttackSpeed = new(329824);
|
||||
public static TagKeyScript ScriptFormula23 = new(267056);
|
||||
public static TagKeyScript ScriptFormula22 = new(267040);
|
||||
public static TagKeyScript ScriptFormula20 = new(267008);
|
||||
public static TagKeyScript ScriptFormula21 = new(267024);
|
||||
public static TagKeyScript EscapeAttackRadius = new(329744);
|
||||
public static TagKeyScript AttackRadius = new(329808);
|
||||
public static TagKeyInt IgnoresRangeOnShiftClick = new(328600);
|
||||
public static TagKeyInt AutoAssignLocation = new(328049);
|
||||
public static TagKeyInt CanSteer = new(327937);
|
||||
public static TagKeyInt TurnsIntoBasicAttack = new(328384);
|
||||
public static TagKeyInt ItemTypeRequirement = new(328960);
|
||||
public static TagKeyInt SpecialDeathType = new(328534);
|
||||
public static TagKeyScript ResourceCostMinToCast = new(329617);
|
||||
public static TagKeyInt ControllerAutoTargets = new(622592);
|
||||
public static TagKeyScript ControllerMinRange = new(622593);
|
||||
public static TagKeyInt TargetGroundOnly = new(328160);
|
||||
public static TagKeyInt TurnsIntoWalk = new(327936);
|
||||
public static TagKeyInt IsAimedAtGround = new(327888);
|
||||
public static TagKeyScript ScriptFormula19 = new(266896);
|
||||
public static TagKeyScript ScriptFormula18 = new(266880);
|
||||
public static TagKeyScript ScriptFormula17 = new(266864);
|
||||
public static TagKeyScript ScriptFormula16 = new(266848);
|
||||
public static TagKeyScript ScriptFormula15 = new(266832);
|
||||
public static TagKeyInt UsesAttackWarmupTime = new(328606);
|
||||
public static TagKeyInt AlternatesAnims = new(328501);
|
||||
public static TagKeyFloat SpecialDeathChance = new(328532);
|
||||
public static TagKeyScript ScriptFormula9 = new(266640);
|
||||
public static TagKeyScript ScriptFormula8 = new(266624);
|
||||
public static TagKeyScript ScriptFormula1 = new(266512);
|
||||
public static TagKeyScript ScriptFormula6 = new(266592);
|
||||
public static TagKeyInt ContactFrameType = new(328224);
|
||||
public static TagKeyScript PayloadParam0 = new(329776);
|
||||
public static TagKeyInt PayloadType = new(329760);
|
||||
public static TagKeyInt TargetEnemies = new(328112);
|
||||
public static TagKeyInt SpellFunc1 = new(327728);
|
||||
public static TagKeyScript ProjectileSpeed = new(331184);
|
||||
public static TagKeyScript ChargedBoltNumBolts = new(331056);
|
||||
public static TagKeySNO ProjectileActor = new(262400);
|
||||
public static TagKeyScript ProcCooldownTime = new(680768);
|
||||
public static TagKeyScript LightningDamageDelta = new(330128);
|
||||
public static TagKeyScript LightningDamageMin = new(330112);
|
||||
public static TagKeyInt CastTargetIgnoreWreckables = new(328169);
|
||||
public static TagKeyInt TargetIgnoreWreckables = new(328168);
|
||||
public static TagKeyScript ColdDamageMin = new(330176);
|
||||
public static TagKeyScript ColdDamageDelta = new(330192);
|
||||
public static TagKeyInt Buff1ShowDuration = new(271105);
|
||||
public static TagKeyInt AutoPurchaseLevel = new(329520);
|
||||
public static TagKeyInt Buff1PlayerCanCancel = new(271361);
|
||||
public static TagKeyScript ImmuneToKnockback = new(328352);
|
||||
public static TagKeyScript ImmuneToRecoil = new(328336);
|
||||
public static TagKeyInt NeverUpdatesFacing = new(328000);
|
||||
public static TagKeyInt ContactFreezesFacing = new(327984);
|
||||
public static TagKeyInt IsBasicAttack = new(327808);
|
||||
public static TagKeyInt SpellFuncBegin = new(327696);
|
||||
public static TagKeyInt SpellFuncInterrupted = new(327745);
|
||||
public static TagKeyScript NumCryptKidsToSpawnOnCorpulentExplosion = new(332480);
|
||||
public static TagKeyInt TargetAllies = new(328096);
|
||||
public static TagKeyInt NeverCausesRecoil = new(327968);
|
||||
public static TagKeyScript MonsterCritDamageScalar = new(684918);
|
||||
public static TagKeyScript PlayerCritDamageScalar = new(684917);
|
||||
public static TagKeyInt Buff0IsHarmful = new(270848);
|
||||
public static TagKeyInt DoesntCenter = new(328032);
|
||||
public static TagKeyInt IsTranslate = new(327856);
|
||||
public static TagKeyInt SpellFuncEnd = new(327744);
|
||||
public static TagKeyScript SpecialWalkTrajectoryHeight = new(332320);
|
||||
public static TagKeyScript SpecialWalkTrajectoryGravity = new(332336);
|
||||
public static TagKeyInt SpecialWalkPerturbDestination = new(332360);
|
||||
public static TagKeyInt IsChannelled = new(328400);
|
||||
public static TagKeyInt InfiniteAnimTiming = new(328208);
|
||||
public static TagKeyInt CustomTargetFunc = new(328736);
|
||||
public static TagKeyInt CustomTargetPlayersOnly = new(328752);
|
||||
public static TagKeyScript CustomTargetMinRange = new(328768);
|
||||
public static TagKeyInt SnapsToFacing = new(328021);
|
||||
public static TagKeyScript ManaPercentToReserve = new(331600);
|
||||
public static TagKeyInt ComboAnimation1 = new(262912);
|
||||
public static TagKeyScript ScriptFormula26 = new(267104);
|
||||
public static TagKeyScript ScriptFormula28 = new(267136);
|
||||
public static TagKeyScript ScriptFormula29 = new(267152);
|
||||
public static TagKeyScript EscapeAttackAngle = new(329745);
|
||||
public static TagKeyScript ComboAttackRadius1 = new(329809);
|
||||
public static TagKeyInt ComboAnimation2 = new(262913);
|
||||
public static TagKeyScript ComboAttackSpeed1 = new(329825);
|
||||
public static TagKeySNO Buff3EffectGroup = new(270339);
|
||||
public static TagKeyScript ComboAttackRadius2 = new(329810);
|
||||
public static TagKeyScript ComboAttackSpeed2 = new(329826);
|
||||
public static TagKeySNO Buff2EffectGroup = new(270338);
|
||||
public static TagKeyScript ComboAttackRadius3 = new(329811);
|
||||
public static TagKeyScript ComboAttackSpeed3 = new(329827);
|
||||
public static TagKeyInt IsComboPower = new(264448);
|
||||
public static TagKeyInt Buff3PlayerCanCancel = new(271363);
|
||||
public static TagKeyInt ComboAnimation3 = new(262914);
|
||||
public static TagKeySNO Combo1CastingEffectGroup_Male = new(264289);
|
||||
public static TagKeySNO Combo1CastingEffectGroup_Female = new(264321);
|
||||
public static TagKeyInt AffectedByDualWield = new(328448);
|
||||
public static TagKeySNO Combo0CastingEffectGroup_Male = new(264288);
|
||||
public static TagKeySNO Combo0CastingEffectGroup_Female = new(264320);
|
||||
public static TagKeySNO Combo2CastingEffectGroup_Male = new(264290);
|
||||
public static TagKeySNO Combo2CastingEffectGroup_Female = new(264322);
|
||||
public static TagKeyScript ScriptFormula30 = new(267264);
|
||||
public static TagKeyScript ScriptFormula31 = new(267280);
|
||||
public static TagKeyScript ScriptFormula32 = new(267296);
|
||||
public static TagKeyScript ScriptFormula33 = new(267312);
|
||||
public static TagKeyScript ScriptFormula34 = new(267328);
|
||||
public static TagKeyScript ScriptFormula35 = new(267344);
|
||||
public static TagKeyScript ScriptFormula36 = new(267360);
|
||||
public static TagKeyScript ScriptFormula37 = new(267376);
|
||||
public static TagKeyScript ScriptFormula58 = new(267904);
|
||||
public static TagKeyScript ScriptFormula59 = new(267920);
|
||||
public static TagKeyScript SpiritGained = new(684928);
|
||||
public static TagKeyScript CurseDamageAmplifyPercent = new(331536);
|
||||
public static TagKeyInt Buff4Icon = new(270596);
|
||||
public static TagKeyInt Buff4ShowDuration = new(271108);
|
||||
public static TagKeySNO Buff4EffectGroup = new(270340);
|
||||
public static TagKeyScript FailsIfSilenced = new(328321);
|
||||
public static TagKeyInt Buff4PlayerCanCancel = new(271364);
|
||||
public static TagKeyInt IsPhysical = new(328624);
|
||||
public static TagKeyInt HitsoundOverride = new(262433);
|
||||
public static TagKeyScript ScriptFormula25 = new(267088);
|
||||
public static TagKeyInt Requires2HItem = new(328992);
|
||||
public static TagKeyInt Buff2IsHarmful = new(270850);
|
||||
public static TagKeyInt RequiresActorTarget = new(328240);
|
||||
public static TagKeyInt ClipsTargetToAttackRadius = new(684848);
|
||||
public static TagKeyInt CastTargetNeutral = new(328145);
|
||||
public static TagKeyInt LOSCheck = new(328720);
|
||||
public static TagKeyScript AttackRating = new(329888);
|
||||
public static TagKeyScript DestructableObjectDamageDelay = new(618496);
|
||||
public static TagKeyInt TargetNeutral = new(328144);
|
||||
public static TagKeySNO ExplosionActor = new(262401);
|
||||
public static TagKeyScript StunChance = new(330816);
|
||||
public static TagKeyScript StunDurationMin = new(330784);
|
||||
public static TagKeyScript PhysicalDamageDelta = new(330000);
|
||||
public static TagKeyScript PhysicalDamageMin = new(329984);
|
||||
public static TagKeyInt IsItemPower = new(328601);
|
||||
public static TagKeyInt CastTargetCorpse = new(328129);
|
||||
public static TagKeyScript SummonedActorLevel = new(331136);
|
||||
public static TagKeyInt TargetContactPlaneOnly = new(328162);
|
||||
public static TagKeyInt DontWalkCloserIfOutOfRange = new(328256);
|
||||
public static TagKeyScript ResourceGainedOnFirstHit = new(329627);
|
||||
public static TagKeyInt LocksActorsWhileSweeping = new(328420);
|
||||
public static TagKeyInt Buff1IsHarmful = new(270849);
|
||||
public static TagKeyScript FailsIfImmobilized = new(328320);
|
||||
public static TagKeyInt StartWalkAfterIntro = new(328288);
|
||||
public static TagKeyInt RollToDestination = new(328368);
|
||||
public static TagKeyInt PickupItemsWhileMoving = new(655984);
|
||||
public static TagKeyScript WalkingSpeedMultiplier = new(331952);
|
||||
public static TagKeyScript SpecialWalkPlayerEndAnimScalar = new(328536);
|
||||
public static TagKeyInt NeverUpdatesFacingStarting = new(328016);
|
||||
public static TagKeyInt RequiresSkillPoint = new(328248);
|
||||
public static TagKeyInt IsKnockbackMovement = new(327860);
|
||||
public static TagKeyInt SpecialWalkIsKnockback = new(332362);
|
||||
public static TagKeyScript BreaksImmobilize = new(328304);
|
||||
public static TagKeyScript ImmunetoFearduring = new(682243);
|
||||
public static TagKeyScript ImmunetoRootduring = new(682240);
|
||||
public static TagKeyScript ImmunetoSnareduring = new(682241);
|
||||
public static TagKeyScript ImmunetoStunduring = new(682242);
|
||||
public static TagKeyInt CastTargetNormalMonstersOnly = new(328617);
|
||||
public static TagKeyInt CausesClosingCooldown = new(328632);
|
||||
public static TagKeyInt CastTargetIgnoreLargeMonsters = new(328616);
|
||||
public static TagKeyScript CustomTargetMaxRange = new(328784);
|
||||
public static TagKeySNO CustomTargetBuffPowerSNO = new(328802);
|
||||
public static TagKeyScript FireDamageDelta = new(330064);
|
||||
public static TagKeyScript FireDamageMin = new(330048);
|
||||
public static TagKeyInt DisplaysNoDamage = new(327829);
|
||||
public static TagKeyScript SkillPointCost = new(329312);
|
||||
public static TagKeyInt CannotLockOntoActors = new(328416);
|
||||
public static TagKeyInt ChannelledLocksActors = new(328401);
|
||||
public static TagKeyInt NoAffectedACD = new(328176);
|
||||
public static TagKeyScript ResourceCostReductionCoefficient = new(329625);
|
||||
public static TagKeyInt TargetNavMeshOnly = new(328163);
|
||||
public static TagKeySNO HitEffect = new(684034);
|
||||
public static TagKeyInt OverrideHitEffects = new(684032);
|
||||
public static TagKeyInt AnimationTagRuneE = new(262677);
|
||||
public static TagKeyScript LifestealPercent = new(331224);
|
||||
public static TagKeyScript CritChance = new(331008);
|
||||
public static TagKeyScript GhostSoulsiphonMaxChannellingDistance = new(365056);
|
||||
public static TagKeySNO Source_DestEffectGroup = new(262659);
|
||||
public static TagKeyScript GhostSoulsiphonMaxChannellingTime = new(364800);
|
||||
public static TagKeyScript GhostSoulsiphonSlowMultiplier = new(364544);
|
||||
public static TagKeyScript GhostSoulsiphonDamagePerSecond = new(365312);
|
||||
public static TagKeyInt CastTargetAllowDeadTargets = new(328620);
|
||||
public static TagKeyScript BuffDurationDelta = new(332752);
|
||||
public static TagKeyScript SlowMovementSpeedMultiplier = new(692224);
|
||||
public static TagKeyScript FireDuration = new(329976);
|
||||
public static TagKeyInt IsCancellable = new(328544);
|
||||
public static TagKeyScript StunDurationDelta = new(330800);
|
||||
public static TagKeySNO Rope = new(262432);
|
||||
public static TagKeyScript LoopingAnimationTime = new(263296);
|
||||
public static TagKeyInt ClassRestriction = new(329648);
|
||||
public static TagKeyInt AlwaysKnown = new(329536);
|
||||
public static TagKeyScript ScriptFormula38 = new(267392);
|
||||
public static TagKeyScript ScriptFormula39 = new(267408);
|
||||
public static TagKeyInt GenericBuffAttribute2 = new(655648);
|
||||
public static TagKeyInt GenericBuffAttribute3 = new(655664);
|
||||
public static TagKeyInt GenericBuffAttribute1 = new(655632);
|
||||
public static TagKeyInt GenericBuffAttribute0 = new(655616);
|
||||
public static TagKeyScript GenericBuffAttribute2Formula = new(655649);
|
||||
public static TagKeyScript GenericBuffAttribute3Formula = new(655665);
|
||||
public static TagKeyScript GenericBuffAttribute1Formula = new(655633);
|
||||
public static TagKeyScript GenericBuffAttribute0Formula = new(655617);
|
||||
public static TagKeyInt CallAIUpdateImmediatelyUponTermination = new(328604);
|
||||
public static TagKeyInt ChecksVerticalMovement = new(327864);
|
||||
public static TagKeyInt DoesntPreplayAnimation = new(328611);
|
||||
public static TagKeyInt IsCompletedWhenWalkingStops = new(328608);
|
||||
public static TagKeyScript DelayBeforeSettingTarget = new(328539);
|
||||
public static TagKeyScript KnockbackMagnitude = new(331696);
|
||||
public static TagKeyScript WhirlwindKnockbackMagnitude = new(331664);
|
||||
public static TagKeyScript RetaliationKnockbackMagnitude = new(331648);
|
||||
public static TagKeyInt ScaledAnimTiming = new(328192);
|
||||
public static TagKeyInt IsADodgePower = new(328480);
|
||||
public static TagKeyScript DodgeTravelDistanceMin = new(332384);
|
||||
public static TagKeyScript DodgeTravelSpeed = new(331936);
|
||||
public static TagKeyScript DodgeTravelAngleOffset = new(332544);
|
||||
public static TagKeyInt TargetDoesntRequireActor = new(328615);
|
||||
public static TagKeyInt CancelsOtherPowers = new(328560);
|
||||
public static TagKeyInt NoInterruptTimer = new(684880);
|
||||
public static TagKeyScript FuryCoefficient = new(332180);
|
||||
public static TagKeyInt BrainActionType = new(328704);
|
||||
public static TagKeyScript AIActionDurationMin = new(332864);
|
||||
public static TagKeyScript WhirlwindDurationMin = new(361504);
|
||||
public static TagKeyScript WhirlwindMovementSpeed = new(361521);
|
||||
public static TagKeyScript KnockbackGravityMin = new(331708);
|
||||
public static TagKeyScript KnockbackHeightMin = new(331704);
|
||||
public static TagKeyScript HitpointsGrantedByHeal = new(331264);
|
||||
public static TagKeySNO ChildPower = new(327760);
|
||||
public static TagKeyScript HearthTime = new(643072);
|
||||
public static TagKeyScript MovementSpeedPercentIncreaseMin = new(332000);
|
||||
public static TagKeyScript AttackSpeedPercentIncreaseMin = new(331968);
|
||||
public static TagKeyScript DamagePercentAll = new(330752);
|
||||
public static TagKeySNO ProjectileWallFloorExplosion = new(262410);
|
||||
public static TagKeyInt OnlyFreeCast = new(329633);
|
||||
public static TagKeyInt ProcTargetsSelf = new(328440);
|
||||
public static TagKeyScript ScriptFormula24 = new(267072);
|
||||
public static TagKeyScript HealthCost = new(329632);
|
||||
public static TagKeyScript WalkingDistanceMin = new(331960);
|
||||
public static TagKeyInt AnimationTagRuneC = new(262675);
|
||||
public static TagKeyScript IsInvisibleDuring = new(340141);
|
||||
public static TagKeyInt SetTargetAfterIntro = new(328292);
|
||||
public static TagKeyScript MinWalkDuration = new(328535);
|
||||
public static TagKeyScript ScriptFormula27 = new(267120);
|
||||
public static TagKeyInt AnimationTagRuneB = new(262674);
|
||||
public static TagKeyInt AnimationTagRuneA = new(262673);
|
||||
public static TagKeyScript AIActionDurationDelta = new(332880);
|
||||
public static TagKeyInt UsesWeaponRange = new(328607);
|
||||
public static TagKeySNO Combo1ContactFrameEffectGroup_Male = new(264305);
|
||||
public static TagKeySNO Combo1ContactFrameEffectGroup_Female = new(264337);
|
||||
public static TagKeySNO Combo0ContactFrameEffectGroup_Male = new(264304);
|
||||
public static TagKeySNO Combo0ContactFrameEffectGroup_Female = new(264336);
|
||||
public static TagKeySNO Combo2ContactFrameEffectGroup_Male = new(264306);
|
||||
public static TagKeySNO Combo2ContactFrameEffectGroup_Female = new(264338);
|
||||
public static TagKeyInt Requires1HItem = new(328976);
|
||||
public static TagKeyScript SkeletonSummonMaxTotalCount = new(332450);
|
||||
public static TagKeyScript SkeletonSummonCountPerSummon = new(332448);
|
||||
public static TagKeyInt PlaySummonedByMonsterAnimation = new(331137);
|
||||
public static TagKeyScript SkeletonSummonMaxCount = new(332449);
|
||||
public static TagKeyScript SummonedActorLifeDuration = new(331120);
|
||||
public static TagKeySNO ContactFrameEffectGroup_Male2 = new(264194);
|
||||
public static TagKeySNO ContactFrameEffectGroup_Female2 = new(264277);
|
||||
public static TagKeyInt ArcMoveUntilDestHeight = new(328296);
|
||||
public static TagKeyScript RunInFrontDistance = new(565248);
|
||||
public static TagKeyScript SpecialWalkHeightIsRelativeToMax = new(332338);
|
||||
public static TagKeyScript SpecialWalkTrajectoryGravityDelta = new(332337);
|
||||
public static TagKeyScript SpecialWalkTrajectoryHeightDelta = new(332321);
|
||||
public static TagKeyScript PierceChance = new(331040);
|
||||
public static TagKeyInt CanPathDuringWalk = new(328272);
|
||||
public static TagKeyScript UseSpecialWalkSteering = new(328538);
|
||||
public static TagKeyInt UsesAnimTag2IfBuffExists = new(266240);
|
||||
public static TagKeyInt IsEmote = new(264704);
|
||||
public static TagKeySNO EmoteConversationSNO = new(264720);
|
||||
public static TagKeyInt SpellFuncCreate = new(327697);
|
||||
public static TagKeyScript NovaDelay = new(655985);
|
||||
public static TagKeyScript AuraAffectedRadius = new(331840);
|
||||
public static TagKeyScript BuffDurationBetweenPulses = new(332768);
|
||||
public static TagKeyScript PowerGainedPerSecond = new(700435);
|
||||
public static TagKeyScript ManaGainedPerSecond = new(331520);
|
||||
public static TagKeyScript FuryGenerationBonusPercent = new(700434);
|
||||
public static TagKeyScript SpiritGenerationBonusPercent = new(700433);
|
||||
public static TagKeyScript ArcanumGainedPerSecond = new(700432);
|
||||
public static TagKeyScript PoisonDamageDelta = new(330256);
|
||||
public static TagKeyScript PoisonDamageMin = new(330240);
|
||||
public static TagKeyScript PoisonCloudNumIntervals = new(330992);
|
||||
public static TagKeyScript PoisonCloudIntervalDuration = new(330976);
|
||||
public static TagKeySNO TargetImpactParticle = new(262405);
|
||||
public static TagKeyInt IsPunch = new(327792);
|
||||
public static TagKeyInt Buff5ShowDuration = new(271109);
|
||||
public static TagKeyInt Buff5PlayerCanCancel = new(271365);
|
||||
public static TagKeyInt Buff6ShowDuration = new(271110);
|
||||
public static TagKeyInt Buff6PlayerCanCancel = new(271366);
|
||||
public static TagKeyInt Buff6Icon = new(270598);
|
||||
public static TagKeyInt Buff5Icon = new(270597);
|
||||
public static TagKeyInt SnapsToGround = new(328496);
|
||||
public static TagKeyInt CanUseWhenDead = new(328528);
|
||||
public static TagKeyScript BlindDurationMin = new(684577);
|
||||
public static TagKeyScript PayloadParam1 = new(329792);
|
||||
public static TagKeyScript BlindDurationDelta = new(684578);
|
||||
public static TagKeyScript CanUseWhenFeared = new(328512);
|
||||
public static TagKeyScript ResurrectionBuffTime = new(647168);
|
||||
public static TagKeyScript ResurrectionHealthMultiplierToStart = new(651264);
|
||||
public static TagKeyScript ProjectileCount = new(331193);
|
||||
public static TagKeyScript ProjectileJitter = new(331196);
|
||||
public static TagKeySNO RootGrabPower = new(606208);
|
||||
public static TagKeyScript RootTimerModificationPerStruggle = new(360960);
|
||||
public static TagKeyScript PercentofDamageThatShieldCanAbsorb = new(332641);
|
||||
public static TagKeyScript AnatomyCritBonusPercent = new(413696);
|
||||
public static TagKeyScript VanishDuration = new(458752);
|
||||
public static TagKeyScript HitpointsThatShieldCanAbsorb = new(332640);
|
||||
public static TagKeyScript ShrineBuffRadius = new(633603);
|
||||
public static TagKeyInt ShrineBuffAllies = new(633602);
|
||||
public static TagKeyScript ScaleBonus = new(332024);
|
||||
public static TagKeyScript DefensePercentAll = new(330768);
|
||||
public static TagKeyScript BonusHitpointPercent = new(331568);
|
||||
public static TagKeyScript ShrineBuffBonus = new(633601);
|
||||
public static TagKeyInt SummonedAnimationTag = new(332451);
|
||||
public static TagKeyScript ArcaneDamageMin = new(330304);
|
||||
public static TagKeyScript ArcaneDamageDelta = new(330320);
|
||||
public static TagKeyScript BlizzardInitialImpactDelay = new(332080);
|
||||
public static TagKeySNO ChainRope = new(262403);
|
||||
public static TagKeyScript ImmobilizeDurationDelta = new(330880);
|
||||
public static TagKeyScript WebDurationDelta = new(330848);
|
||||
public static TagKeyScript ImmobilizeDurationMin = new(330864);
|
||||
public static TagKeyScript WebDurationMin = new(330832);
|
||||
public static TagKeyInt IsToggleable = new(327952);
|
||||
public static TagKeyScript SlowDurationMin = new(330896);
|
||||
public static TagKeyInt IsUsableInCombat = new(328081);
|
||||
public static TagKeyInt CastTargetGroundOnly = new(328161);
|
||||
public static TagKeyInt CausesKnockback = new(331697);
|
||||
public static TagKeyInt ClientControlsFacing = new(328022);
|
||||
public static TagKeyScript DisintegrateBeamWidth = new(332304);
|
||||
public static TagKeyScript DisintegrateTimeBetweenUpdates = new(332688);
|
||||
public static TagKeyInt CustomTargetBuffPowerSNOBuffIndex = new(328801);
|
||||
public static TagKeyInt ProjectileThrowOverGuys = new(262408);
|
||||
public static TagKeyInt IsLobbed = new(327872);
|
||||
public static TagKeyScript DurationDelta = new(684930);
|
||||
public static TagKeyScript DurationMin = new(684929);
|
||||
public static TagKeyInt UsesWeaponProjectile = new(262480);
|
||||
public static TagKeyScript ModalCursorRadius = new(328069);
|
||||
public static TagKeyFloat ProjectileGravity = new(329872);
|
||||
public static TagKeyInt ProjectileScaleVelocity = new(262435);
|
||||
public static TagKeyScript HeightAboveSource = new(329880);
|
||||
public static TagKeyScript ProjectileSpreadAngle = new(331194);
|
||||
public static TagKeyFloat CustomTargetNeedsHealHPPercent = new(328804);
|
||||
public static TagKeyScript EnergyShieldManaCostPerDamage = new(332576);
|
||||
public static TagKeySNO SynergyPower = new(327764);
|
||||
public static TagKeyInt IsUpgrade = new(329216);
|
||||
public static TagKeyFloat AnimationTurnThreshold = new(263426);
|
||||
public static TagKeyInt AnimationTagTurnRight = new(263425);
|
||||
public static TagKeyInt AnimationTagTurnLeft = new(263424);
|
||||
public static TagKeyInt IsOnlyUsableInTownPortalAreas = new(328082);
|
||||
public static TagKeyInt IsCancellableByWalking = new(328546);
|
||||
public static TagKeyInt FollowWalkAnimTag = new(561424);
|
||||
public static TagKeyInt FollowMatchTargetSpeed = new(561408);
|
||||
public static TagKeyScript RunNearbyDistanceMin = new(332416);
|
||||
public static TagKeyScript RunNearbyDistanceDelta = new(332432);
|
||||
public static TagKeyScript FollowStartDistance = new(561152);
|
||||
public static TagKeyScript FollowStopDistance = new(557056);
|
||||
public static TagKeyInt Buff5IsHarmful = new(270853);
|
||||
public static TagKeySNO Buff5EffectGroup = new(270341);
|
||||
public static TagKeyInt Buff4IsHarmful = new(270852);
|
||||
public static TagKeyScript HolyDamageMin = new(330496);
|
||||
public static TagKeyScript HolyDamageDelta = new(330512);
|
||||
public static TagKeyScript DestinationJitterAttempts = new(360704);
|
||||
public static TagKeyScript DestinationJitterRadius = new(360448);
|
||||
public static TagKeyInt RootEndFunc = new(606464);
|
||||
public static TagKeySNO ConsumesItem = new(329088);
|
||||
public static TagKeyScript DebuffDurationMin = new(655680);
|
||||
public static TagKeyScript ProcChance = new(680704);
|
||||
public static TagKeySNO Upgrade2 = new(329264);
|
||||
public static TagKeySNO Upgrade1 = new(329248);
|
||||
public static TagKeySNO Upgrade0 = new(329232);
|
||||
public static TagKeyScript FreezeDamageDoneMin = new(331232);
|
||||
public static TagKeyScript AttackRatingPercent = new(329904);
|
||||
public static TagKeyScript SummoningMachineNodeIsInvulnerable = new(704512);
|
||||
public static TagKeySNO DamageDisplayPower = new(627456);
|
||||
public static TagKeySNO Buff6EffectGroup = new(270342);
|
||||
public static TagKeyInt Buff6IsHarmful = new(270854);
|
||||
public static TagKeyScript DodgeTravelDistanceDelta = new(332400);
|
||||
public static TagKeySNO Buff7EffectGroup = new(270343);
|
||||
public static TagKeyInt ComboAnimation1RuneA = new(263185);
|
||||
public static TagKeyScript KnockbackGravityDelta = new(331709);
|
||||
public static TagKeyScript KnockbackHeightDelta = new(331705);
|
||||
public static TagKeyScript FuryAddPerInterval = new(332178);
|
||||
public static TagKeyScript FuryDegenerationOutofCombat_persecond = new(332177);
|
||||
public static TagKeyScript FuryGainedPerSecondOfAttack = new(332097);
|
||||
public static TagKeyScript FuryTimeBetweenUpdates = new(333056);
|
||||
public static TagKeyScript FuryDegenerationStart_inseconds = new(332181);
|
||||
public static TagKeyScript FuryGainedPerPercentHealthLost = new(332096);
|
||||
public static TagKeyScript FuryMaxDamageBonus = new(332185);
|
||||
public static TagKeyScript SlowTimeAmount = new(330944);
|
||||
public static TagKeyScript SlowAmount = new(330928);
|
||||
public static TagKeyInt ComboAnimation1RuneC = new(263187);
|
||||
public static TagKeyInt ComboAnimation1RuneE = new(263189);
|
||||
public static TagKeyInt ComboAnimation1RuneD = new(263188);
|
||||
public static TagKeyInt ComboAnimation1RuneB = new(263186);
|
||||
public static TagKeyInt ComboAnimation3RuneC = new(263219);
|
||||
public static TagKeyInt AnimationTagRuneD = new(262676);
|
||||
public static TagKeyScript GenericBuffAttribute0AndParameter = new(655618);
|
||||
public static TagKeyScript GenericBuffAttribute1AndParameter = new(655634);
|
||||
public static TagKeyInt SpecialWalkGoThroughOccluded = new(332341);
|
||||
public static TagKeyScript ProcCoefficient = new(329983);
|
||||
}
|
||||
}
|
||||
|
||||
@ -953,7 +953,7 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.GameSystem
|
||||
if (QuestManager.Game.GetWorld(world).CheckLocationForFlag(point, Scene.NavCellFlags.AllowWalk))
|
||||
break;
|
||||
}
|
||||
QuestManager.Game.GetWorld(world).SpawnMonster((ActorSno)GameServer.GSSystem.GeneratorsSystem.SpawnGenerator.Spawns[LevelArea].melee.PickRandom(), point);
|
||||
QuestManager.Game.GetWorld(world).SpawnMonster((ActorSno)GameServer.GSSystem.GeneratorsSystem.SpawnGenerator.Spawns[LevelArea].Melee.PickRandom(), point);
|
||||
monsterCount++;
|
||||
}
|
||||
} // Need additional monster spawn, there are few of them
|
||||
|
||||
@ -13,35 +13,36 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
|
||||
public class MonsterLayout
|
||||
{
|
||||
public bool lazy_load;
|
||||
public int additional_density;
|
||||
public bool can_spawn_goblin;
|
||||
public List<int> melee;
|
||||
public List<int> range;
|
||||
public List<int> dangerous;
|
||||
public bool LazyLoad { get; set; }
|
||||
public int AdditionalDensity { get; set; }
|
||||
public bool CanSpawnGoblin { get; set; }
|
||||
public List<int> Melee { get; set; }
|
||||
|
||||
public List<int> Range { get; set; }
|
||||
public List<int> Dangerous { get; set; }
|
||||
};
|
||||
|
||||
public static List<int> TotalMonsters(int la)
|
||||
{
|
||||
List<int> total = new List<int> { };
|
||||
total.AddRange(Spawns[la].melee);
|
||||
total.AddRange(Spawns[la].range);
|
||||
total.AddRange(Spawns[la].dangerous);
|
||||
total.AddRange(Spawns[la].Melee);
|
||||
total.AddRange(Spawns[la].Range);
|
||||
total.AddRange(Spawns[la].Dangerous);
|
||||
return total;
|
||||
}
|
||||
|
||||
public static bool IsMelee(int la, int monsterId) => Spawns[la].melee.Contains(monsterId);
|
||||
public static bool IsMelee(int la, int monsterId) => Spawns[la].Melee.Contains(monsterId);
|
||||
|
||||
public static bool IsRange(int la, int monsterId) => Spawns[la].range.Contains(monsterId);
|
||||
public static bool IsRange(int la, int monsterId) => Spawns[la].Range.Contains(monsterId);
|
||||
|
||||
public static bool IsDangerous(int la, int monsterId) => Spawns[la].dangerous.Contains(monsterId);
|
||||
public static bool IsDangerous(int la, int monsterId) => Spawns[la].Dangerous.Contains(monsterId);
|
||||
|
||||
public static void RegenerateDensity()
|
||||
{
|
||||
Logger.Info("Regenerating spawn density map...");
|
||||
foreach (var spawn in Spawns)
|
||||
{
|
||||
Spawns[spawn.Key].additional_density = FastRandom.Instance.Next(0, 6);
|
||||
Spawns[spawn.Key].AdditionalDensity = FastRandom.Instance.Next(0, 6);
|
||||
}
|
||||
}
|
||||
|
||||
@ -49,197 +50,197 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
public static readonly Dictionary<int, MonsterLayout> Spawns = new()
|
||||
{
|
||||
#region Act I
|
||||
{91324, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6652, 203121, 6644 }, range = new List<int>{ 219725 }, dangerous = new List<int>{ 218339 }}}, //REMOVED 4982 QUILL FIEND (OP damage) //road to Old Tristram ruins
|
||||
{101351, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6652, 203121, 6644 }, range = new List<int>{ 219725 }, dangerous = new List<int>{ 218345, 218431 }}}, //REMOVED 4982 QUILL FIEND (OP damage) //Old Tristram ruins
|
||||
{19933, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6652, 5393 }, range = new List<int>{ 5346 }, dangerous = new List<int>{ 218666, 218321 }}}, //Cath, outside
|
||||
{19954, new MonsterLayout{ lazy_load = true, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6652, 203121, 6632, 5393, 6653 }, range = new List<int>{ 219725, 3847, 6639 }, dangerous = new List<int>{ 218332, 85900 }}}, //REMOVED 4982 QUILL FIEND (OP damage) + 5235 SCAVENGER (jump mechanic nukes) //The Weeping Hollow
|
||||
{72712, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5393, 6653 }, range = new List<int>{ 5387 }, dangerous = new List<int>{ 220683 }}}, //Tristram Graveyard
|
||||
{83264, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5393, 3848, 5395, 5411, 6653, 4156 }, range = new List<int>{ 5346, 3847, 6639 }, dangerous = new List<int>{ 225502 }}}, // REMOVED ID 5235 SCAVENGER (OP jump mechanic) //Cursed crypt 1
|
||||
{83265, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5393, 3848, 5395, 5411, 6653, 4156 }, range = new List<int>{ 5346, 3847, 6639 }, dangerous = new List<int>{ 225502 }}}, // REMOVED ID 5235 SCAVENGER (OP jump mechanic) //Cursed crypt 2
|
||||
{154588, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5393, 3848, 5395, 5411, 6653 }, range = new List<int>{ 5346, 3847, 6639 }, dangerous = new List<int>{ 218348, 218351 }}}, // REMOVED ID 5235 SCAVENGER (OP jump mechanic) //Cursed crypt 3 (true)
|
||||
{102362, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5393 }, range = new List<int>{ 5387 }, dangerous = new List<int>{}}}, //Chancellor's Tomb
|
||||
{19952, new MonsterLayout{ lazy_load = true, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4282, 4285, 3337, 5236, 5235 }, range = new List<int>{ 4290, 4286 }, dangerous = new List<int>{ 218422, 218424, 218428 }}}, //Fields of Misery
|
||||
{19953, new MonsterLayout{ lazy_load = true, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5395, 4153, 4201, 5275 }, range = new List<int>{ 5347 }, dangerous = new List<int>{ 209553, 218444, 218441 }}}, //The Festering Woods
|
||||
{60397, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5395 }, range = new List<int>{ 5388 }, dangerous = new List<int>{}}}, //Crypt of the Ancients
|
||||
{60396, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5395 }, range = new List<int>{ 179343, 5347 }, dangerous = new List<int>{}}}, //Warrior's Rest
|
||||
{60398, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5276, 6025 }, range = new List<int>{ 5347, 5388 }, dangerous = new List<int>{}}}, //Drowned Temple
|
||||
{19780, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5275, 6652,4156, 6646, 6644 }, range = new List<int>{ 5346 }, dangerous = new List<int>{ 218307, 218308 }}}, //Cathedral, lvl. 1
|
||||
{19783, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5393, 5275, 6356, 4156 }, range = new List<int>{ 5346, 5387 }, dangerous = new List<int>{ 218656, 218356, 218362, 218364 }}}, //Cathedral, lvl. 2
|
||||
{87907, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5393, 6024, 5275 }, range = new List<int>{ 5387 }, dangerous = new List<int>{}}}, //Cathedral, lvl. 3 (Kormac)
|
||||
{19785, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5393, 3848, 5395, 5275, 4156, 3893 }, range = new List<int>{ 5346, 5387, 3847 }, dangerous = new List<int>{ 218396, 218405, }}}, //Cathedral, lvl. 4
|
||||
{19787, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5393, 5275 }, range = new List<int>{ 5346 }, dangerous = new List<int>{}}}, //The Royal Crypts
|
||||
{91324, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6652, 203121, 6644 }, Range = new List<int>{ 219725 }, Dangerous = new List<int>{ 218339 }}}, //REMOVED 4982 QUILL FIEND (OP damage) //road to Old Tristram ruins
|
||||
{101351, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6652, 203121, 6644 }, Range = new List<int>{ 219725 }, Dangerous = new List<int>{ 218345, 218431 }}}, //REMOVED 4982 QUILL FIEND (OP damage) //Old Tristram ruins
|
||||
{19933, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6652, 5393 }, Range = new List<int>{ 5346 }, Dangerous = new List<int>{ 218666, 218321 }}}, //Cath, outside
|
||||
{19954, new MonsterLayout{ LazyLoad = true, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6652, 203121, 6632, 5393, 6653 }, Range = new List<int>{ 219725, 3847, 6639 }, Dangerous = new List<int>{ 218332, 85900 }}}, //REMOVED 4982 QUILL FIEND (OP damage) + 5235 SCAVENGER (jump mechanic nukes) //The Weeping Hollow
|
||||
{72712, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5393, 6653 }, Range = new List<int>{ 5387 }, Dangerous = new List<int>{ 220683 }}}, //Tristram Graveyard
|
||||
{83264, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5393, 3848, 5395, 5411, 6653, 4156 }, Range = new List<int>{ 5346, 3847, 6639 }, Dangerous = new List<int>{ 225502 }}}, // REMOVED ID 5235 SCAVENGER (OP jump mechanic) //Cursed crypt 1
|
||||
{83265, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5393, 3848, 5395, 5411, 6653, 4156 }, Range = new List<int>{ 5346, 3847, 6639 }, Dangerous = new List<int>{ 225502 }}}, // REMOVED ID 5235 SCAVENGER (OP jump mechanic) //Cursed crypt 2
|
||||
{154588, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5393, 3848, 5395, 5411, 6653 }, Range = new List<int>{ 5346, 3847, 6639 }, Dangerous = new List<int>{ 218348, 218351 }}}, // REMOVED ID 5235 SCAVENGER (OP jump mechanic) //Cursed crypt 3 (true)
|
||||
{102362, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5393 }, Range = new List<int>{ 5387 }, Dangerous = new List<int>{}}}, //Chancellor's Tomb
|
||||
{19952, new MonsterLayout{ LazyLoad = true, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4282, 4285, 3337, 5236, 5235 }, Range = new List<int>{ 4290, 4286 }, Dangerous = new List<int>{ 218422, 218424, 218428 }}}, //Fields of Misery
|
||||
{19953, new MonsterLayout{ LazyLoad = true, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5395, 4153, 4201, 5275 }, Range = new List<int>{ 5347 }, Dangerous = new List<int>{ 209553, 218444, 218441 }}}, //The Festering Woods
|
||||
{60397, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5395 }, Range = new List<int>{ 5388 }, Dangerous = new List<int>{}}}, //Crypt of the Ancients
|
||||
{60396, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5395 }, Range = new List<int>{ 179343, 5347 }, Dangerous = new List<int>{}}}, //Warrior's Rest
|
||||
{60398, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5276, 6025 }, Range = new List<int>{ 5347, 5388 }, Dangerous = new List<int>{}}}, //Drowned Temple
|
||||
{19780, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5275, 6652,4156, 6646, 6644 }, Range = new List<int>{ 5346 }, Dangerous = new List<int>{ 218307, 218308 }}}, //Cathedral, lvl. 1
|
||||
{19783, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5393, 5275, 6356, 4156 }, Range = new List<int>{ 5346, 5387 }, Dangerous = new List<int>{ 218656, 218356, 218362, 218364 }}}, //Cathedral, lvl. 2
|
||||
{87907, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5393, 6024, 5275 }, Range = new List<int>{ 5387 }, Dangerous = new List<int>{}}}, //Cathedral, lvl. 3 (Kormac)
|
||||
{19785, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5393, 3848, 5395, 5275, 4156, 3893 }, Range = new List<int>{ 5346, 5387, 3847 }, Dangerous = new List<int>{ 218396, 218405, }}}, //Cathedral, lvl. 4
|
||||
{19787, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5393, 5275 }, Range = new List<int>{ 5346 }, Dangerous = new List<int>{}}}, //The Royal Crypts
|
||||
//{129795, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5393 }, range = new List<int>{ 5346 }, dangerous = new List<int>{}}}, //Wortham Rocks
|
||||
{78572, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5467, 5474, 4157, 4153 }, range = new List<int>{ 166726, 122367 }, dangerous = new List<int>{ 129439, 218462, 218458, 218456, 218448 }}}, //Caves of Aranea
|
||||
{93632, new MonsterLayout{ lazy_load = true, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4283, 5236 }, range = new List<int>{ 6500, 4287, 4290 }, dangerous = new List<int>{ 218469 }}}, //Highlands Crossing
|
||||
{19940, new MonsterLayout{ lazy_load = true, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4282, 4283, 4285, 3337, 3338, 5236 }, range = new List<int>{ 4287, 6500, 375, 4290, 4286, 6024 }, dangerous = new List<int>{ 218508, 218536, 218473, 111580, 76676 }}}, //Southern highlands
|
||||
{19941, new MonsterLayout{ lazy_load = true, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4282, 4283, 3338, 4154, 195747 }, range = new List<int>{ 4287, 375, 4290, 6500 }, dangerous = new List<int>{}}}, //Northern highlands
|
||||
{19774, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6042, 6052, 6024, 6359, 6654, 90453, 6647, 104424, 178300 }, range = new List<int>{ 6046 }, dangerous = new List<int>{ 218674, 218672, 218676, 105959 }}}, //Halls of Agony, lv. 1
|
||||
{19775, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6042, 6052, 6024, 6359, 6654, 90453, 6647, 104424, 178300 }, range = new List<int>{ 6046 }, dangerous = new List<int>{}}}, //Halls of Agony, lv. 2
|
||||
{94672, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4203, 3849, 434 }, range = new List<int>{ 5389 }, dangerous = new List<int>{}}}, //The Cursed Hold
|
||||
{19776, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6042, 6052, 6024, 6654, 90453, 6647, 104424, 178300 }, range = new List<int>{ 6046 }, dangerous = new List<int>{ 105620, 220034, 218678 }}}, //Halls of Agony, lv. 3
|
||||
{80116, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6052, 6024, 5395, 5275, 178300 }, range = new List<int>{ 5346, 5387 }, dangerous = new List<int>{}}}, //The Lyceum
|
||||
{82326, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6024, 4201, 5395, 434, 5276, 5393 }, range = new List<int>{ 5346 }, dangerous = new List<int>{}}}, //Watch Tower, lv. 1
|
||||
{82327, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6024, 4201, 5395, 434, 5276, 5393 }, range = new List<int>{ 5346 }, dangerous = new List<int>{}}}, //Watch Tower, lv. 2
|
||||
{78572, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5467, 5474, 4157, 4153 }, Range = new List<int>{ 166726, 122367 }, Dangerous = new List<int>{ 129439, 218462, 218458, 218456, 218448 }}}, //Caves of Aranea
|
||||
{93632, new MonsterLayout{ LazyLoad = true, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4283, 5236 }, Range = new List<int>{ 6500, 4287, 4290 }, Dangerous = new List<int>{ 218469 }}}, //Highlands Crossing
|
||||
{19940, new MonsterLayout{ LazyLoad = true, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4282, 4283, 4285, 3337, 3338, 5236 }, Range = new List<int>{ 4287, 6500, 375, 4290, 4286, 6024 }, Dangerous = new List<int>{ 218508, 218536, 218473, 111580, 76676 }}}, //Southern highlands
|
||||
{19941, new MonsterLayout{ LazyLoad = true, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4282, 4283, 3338, 4154, 195747 }, Range = new List<int>{ 4287, 375, 4290, 6500 }, Dangerous = new List<int>{}}}, //Northern highlands
|
||||
{19774, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6042, 6052, 6024, 6359, 6654, 90453, 6647, 104424, 178300 }, Range = new List<int>{ 6046 }, Dangerous = new List<int>{ 218674, 218672, 218676, 105959 }}}, //Halls of Agony, lv. 1
|
||||
{19775, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6042, 6052, 6024, 6359, 6654, 90453, 6647, 104424, 178300 }, Range = new List<int>{ 6046 }, Dangerous = new List<int>{}}}, //Halls of Agony, lv. 2
|
||||
{94672, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4203, 3849, 434 }, Range = new List<int>{ 5389 }, Dangerous = new List<int>{}}}, //The Cursed Hold
|
||||
{19776, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6042, 6052, 6024, 6654, 90453, 6647, 104424, 178300 }, Range = new List<int>{ 6046 }, Dangerous = new List<int>{ 105620, 220034, 218678 }}}, //Halls of Agony, lv. 3
|
||||
{80116, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6052, 6024, 5395, 5275, 178300 }, Range = new List<int>{ 5346, 5387 }, Dangerous = new List<int>{}}}, //The Lyceum
|
||||
{82326, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6024, 4201, 5395, 434, 5276, 5393 }, Range = new List<int>{ 5346 }, Dangerous = new List<int>{}}}, //Watch Tower, lv. 1
|
||||
{82327, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6024, 4201, 5395, 434, 5276, 5393 }, Range = new List<int>{ 5346 }, Dangerous = new List<int>{}}}, //Watch Tower, lv. 2
|
||||
|
||||
{135952, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6042,6052, 6024, 6359, 178300 }, range = new List<int>{ 6046 }, dangerous = new List<int>{}}}, //Highlands Cave
|
||||
{100854, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6042, 6024 }, range = new List<int>{ 6046 }, dangerous = new List<int>{ 218656, 218662, 218664 }}}, //Leoric's Manor
|
||||
{19935, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6052, 6025, 178300 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Wortham
|
||||
{87832, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6052, 6024, 6027, 4283, 178300 }, range = new List<int>{ 4287, 4290 }, dangerous = new List<int>{}}}, //Highlands Passage
|
||||
{1199, new MonsterLayout{ lazy_load = true, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6024, 4283, 3338 }, range = new List<int>{ 4287, 4290, 4286 }, dangerous = new List<int>{}}}, //Leoric's Hunting Grounds
|
||||
{119893, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6024, 178213, 4285 }, range = new List<int>{ 4286 }, dangerous = new List<int>{}}}, //Khazra Den
|
||||
{148551, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 51281 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Cells of the Condemned
|
||||
{19553, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4157, 5393, 136943, 370, 5395 }, range = new List<int>{ 4153, 5347 }, dangerous = new List<int>{ 209553, 218444, 218441 }}}, //The Festering Woods
|
||||
{82566, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4282, 4283, 5467 }, range = new List<int>{ 4287, 4290 }, dangerous = new List<int>{}}}, //Cave of the Moon Clan, Lv.1
|
||||
{82567, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4282, 4283, 5467 }, range = new List<int>{ 4287, 4290 }, dangerous = new List<int>{}}}, //Cave of the Moon Clan, Lv.2
|
||||
{179212, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4285, 5235 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Sheltered Cottage
|
||||
{82372, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5236, 6360, 4157, 4983 }, range = new List<int>{ 4153 }, dangerous = new List<int>{}}}, //Lost Mine, Lv.1
|
||||
{82373, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5236, 6360, 4157, 4983 }, range = new List<int>{ 4153 }, dangerous = new List<int>{}}}, //Lost Mine, Lv.2
|
||||
{81165, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5236, 4157, 4983 }, range = new List<int>{ 4153 }, dangerous = new List<int>{}}}, //Scavenger's Den, Lv.1
|
||||
{81175, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5236, 4157, 4983 }, range = new List<int>{ 4153 }, dangerous = new List<int>{}}}, //Scavenger's Den, Lv.2
|
||||
{135237, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5235, 4156, 6646, 4156, 4152, 4157 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Den of the Fallen, Lv.1
|
||||
{194232, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5235, 4156, 6646, 4156, 4152, 4157 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Den of the Fallen, Lv.2
|
||||
{102300, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6359, 6652, 4157, 5393 }, range = new List<int>{ 6638, 6359, 6356 }, dangerous = new List<int>{}}}, //Decaying Crypt, Lv.1
|
||||
{165798, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6652 }, range = new List<int>{ 6638 }, dangerous = new List<int>{}}}, //Decaying Crypt, Lv.2
|
||||
{161964, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6644, 6652 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //The Cave Under the Well
|
||||
{106756, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6644, 6652 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Dank Cellar
|
||||
{106757, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6644, 6652 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Damp Cellar
|
||||
{103202, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6644, 6652 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Dark Cellar
|
||||
{62968, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6644, 6652 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //The Hidden Cellar
|
||||
{107051, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6644, 6652, 128781 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Musty Cellar
|
||||
{211479, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 209087, 210502, 207378,207559, 207560, 192965 }, range = new List<int>{ }, dangerous = new List<int>{ 218804, 218807, 212667, 218802, 209506, 218806, 201679, 214948, 218808, 212664 }}}, //Whimsyshire
|
||||
{135952, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6042,6052, 6024, 6359, 178300 }, Range = new List<int>{ 6046 }, Dangerous = new List<int>{}}}, //Highlands Cave
|
||||
{100854, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6042, 6024 }, Range = new List<int>{ 6046 }, Dangerous = new List<int>{ 218656, 218662, 218664 }}}, //Leoric's Manor
|
||||
{19935, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6052, 6025, 178300 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Wortham
|
||||
{87832, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6052, 6024, 6027, 4283, 178300 }, Range = new List<int>{ 4287, 4290 }, Dangerous = new List<int>{}}}, //Highlands Passage
|
||||
{1199, new MonsterLayout{ LazyLoad = true, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6024, 4283, 3338 }, Range = new List<int>{ 4287, 4290, 4286 }, Dangerous = new List<int>{}}}, //Leoric's Hunting Grounds
|
||||
{119893, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6024, 178213, 4285 }, Range = new List<int>{ 4286 }, Dangerous = new List<int>{}}}, //Khazra Den
|
||||
{148551, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 51281 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Cells of the Condemned
|
||||
{19553, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4157, 5393, 136943, 370, 5395 }, Range = new List<int>{ 4153, 5347 }, Dangerous = new List<int>{ 209553, 218444, 218441 }}}, //The Festering Woods
|
||||
{82566, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4282, 4283, 5467 }, Range = new List<int>{ 4287, 4290 }, Dangerous = new List<int>{}}}, //Cave of the Moon Clan, Lv.1
|
||||
{82567, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4282, 4283, 5467 }, Range = new List<int>{ 4287, 4290 }, Dangerous = new List<int>{}}}, //Cave of the Moon Clan, Lv.2
|
||||
{179212, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4285, 5235 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Sheltered Cottage
|
||||
{82372, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5236, 6360, 4157, 4983 }, Range = new List<int>{ 4153 }, Dangerous = new List<int>{}}}, //Lost Mine, Lv.1
|
||||
{82373, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5236, 6360, 4157, 4983 }, Range = new List<int>{ 4153 }, Dangerous = new List<int>{}}}, //Lost Mine, Lv.2
|
||||
{81165, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5236, 4157, 4983 }, Range = new List<int>{ 4153 }, Dangerous = new List<int>{}}}, //Scavenger's Den, Lv.1
|
||||
{81175, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5236, 4157, 4983 }, Range = new List<int>{ 4153 }, Dangerous = new List<int>{}}}, //Scavenger's Den, Lv.2
|
||||
{135237, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5235, 4156, 6646, 4156, 4152, 4157 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Den of the Fallen, Lv.1
|
||||
{194232, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5235, 4156, 6646, 4156, 4152, 4157 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Den of the Fallen, Lv.2
|
||||
{102300, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6359, 6652, 4157, 5393 }, Range = new List<int>{ 6638, 6359, 6356 }, Dangerous = new List<int>{}}}, //Decaying Crypt, Lv.1
|
||||
{165798, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6652 }, Range = new List<int>{ 6638 }, Dangerous = new List<int>{}}}, //Decaying Crypt, Lv.2
|
||||
{161964, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6644, 6652 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //The Cave Under the Well
|
||||
{106756, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6644, 6652 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Dank Cellar
|
||||
{106757, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6644, 6652 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Damp Cellar
|
||||
{103202, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6644, 6652 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Dark Cellar
|
||||
{62968, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6644, 6652 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //The Hidden Cellar
|
||||
{107051, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6644, 6652, 128781 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Musty Cellar
|
||||
{211479, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 209087, 210502, 207378,207559, 207560, 192965 }, Range = new List<int>{ }, Dangerous = new List<int>{ 218804, 218807, 212667, 218802, 209506, 218806, 201679, 214948, 218808, 212664 }}}, //Whimsyshire
|
||||
|
||||
#endregion
|
||||
#region Act II
|
||||
{19839, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4080, 6053, 6028, 5199, 5209, 5396, 4541, 4550, 5208, 4551, 4542 }, range = new List<int>{ 4070 }, dangerous = new List<int>{ 59970, 5203 }}}, //Stinging Winds Desert
|
||||
{19835, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6060, 6027, 6061, 6044, 6053, 5209, 5208 }, range = new List<int>{ 6038 }, dangerous = new List<int>{ 218810, 221442, 221810 }}}, //Road to Alcarnus
|
||||
{19825, new MonsterLayout{ lazy_load = true, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6060, 6027, 6061, 6044, 6054 }, range = new List<int>{ 6038 }, dangerous = new List<int>{ 222003, 222001, 221981, 221999 }}}, //Alcarnus
|
||||
{144117, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6043, 6028, 5208, 5512 }, range = new List<int>{ 6047 }, dangerous = new List<int>{ 147155, 144400 }}}, //Deserted Cellar
|
||||
{141067, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6053, 6025 }, range = new List<int>{ }, dangerous = new List<int>{ 140947 }}}, //Hadi's Claim Mine
|
||||
{148905, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6053, 6054 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Town Cellar
|
||||
{102936, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6053, 6054 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Secret Altar
|
||||
{148904, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6054, 6028, 6027 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Sandy Cellar
|
||||
{102932, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6054, 6028, 6027 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Hidden Conclave
|
||||
{195998, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6028 }, range = new List<int>{ }, dangerous = new List<int>{ 195639 }}}, //Abandoned Cellar
|
||||
{148903, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6027, 4089 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Alcarnus Cellar
|
||||
{19836, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 6060, 5396, 4541, 4550, 5208, 4551, 4542, 4089 }, range = new List<int>{ 6027 }, dangerous = new List<int>{}}}, //Sundered Canyon
|
||||
{170118, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5199, 5208, 4541, 4551, 4542, 4550 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Black Canyon Bridge
|
||||
{19838, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5199, 4080, 5208, 5396 }, range = new List<int>{ 4070 }, dangerous = new List<int>{ 221406, 221402 }}}, //Black Canyon Mines
|
||||
{19837, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5199,4080, 5208, 4089, 5396, 4541, 4550, 4551 }, range = new List<int>{ 6028, 4070 }, dangerous = new List<int>{ 221377, 221379, 221367, 221372 }}}, //Howling Plateau
|
||||
{19794, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4080, 5208, 5512, 4550, 4541, 4551, 4542, 5432 }, range = new List<int>{ 4098, 5428 }, dangerous = new List<int>{}}}, //The Crumbling Vault
|
||||
{57425, new MonsterLayout{ lazy_load = true, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4080, 4083, 4093, 5434, 4094, 4083, 4542, 5432, 3384 }, range = new List<int>{ 4099, 4098, 3981, 4071, 5429, 5428 }, dangerous = new List<int>{ 222180, 215445, 208543, 140424, 113994, 115132, 140424 }}}, //Dahlgur Oasis
|
||||
{166127, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4080 }, range = new List<int>{ 4098 }, dangerous = new List<int>{ 166133 }}}, //The lost Caravan
|
||||
{175367, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4080, 5432 }, range = new List<int>{ 4098, 5428 }, dangerous = new List<int>{}}}, //Path to the Oasis
|
||||
{159897, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4080 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Storage Cellar
|
||||
{159899, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4080 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Storm Cellar
|
||||
{19798, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 231349, 4083, 231356, 5278, 5397, 4090, 137995, 137996, 208962, 204944, 208963, 5188, 5187, 5192, 368, 4196, 5468, 231355 }, range = new List<int>{ 231351, 5349, 5376, 5368, 5372, 5382 }, dangerous = new List<int>{ 222502, 222510, 222511, 222512 }}}, //The Storm Halls
|
||||
{19797, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 231349, 4083, 231356, 5278, 5397, 4090, 137994, 137992, 208832, 204944, 208963, 5188, 5187, 5192, 4196, 368, 5191, 231355 }, range = new List<int>{ 231351, 5349, 5368, 5372, 5382, 5376 }, dangerous = new List<int>{ 222427, 222413, 165602 }}}, //The Unknown Depths
|
||||
{175330, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4093, 4090, 5512, 4071 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Ancient Path
|
||||
{53834, new MonsterLayout{ lazy_load = true, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6655, 218795, 5210, 4105, 4104, 5396, 5188, 3385, 4542, 5191, 5513, 5512, 4093, 204256 }, range = new List<int>{ 5376 }, dangerous = new List<int>{ 222352, 222385, 219832, 217744, 111868, 222400, 222339, 218947 }}}, //Desolate Sands
|
||||
{62780, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4202, 5210, 4105, 56784, 4080, 5513, 4071, 4090, 4204 }, range = new List<int>{ 4155, 5381, 5429, 5428, 5430, 5277 }, dangerous = new List<int>{ 222236, 222238 }}}, //Eastern Channel
|
||||
{159588, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4204, 217308, 437, 5090 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Sirocco Caverns, Lv.1
|
||||
{220805, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4204, 217308, 437 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Sirocco Caverns, Lv.2
|
||||
{111667, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6238, 4202, 4158, 5088, 5238 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Cave of Burrowing Horror, Lv.1
|
||||
{218969, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6238, 4202, 4158, 5238 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Cave of Burrowing Horror, Lv.2
|
||||
{19791, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5396, 5277, 4104, 56784, 5513, 5432, 5512, 5381 }, range = new List<int>{ 5428 }, dangerous = new List<int>{ 219583, 222008, 222005, 156738, 156763, }}}, //Sewers of Caldeum
|
||||
{19795, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5396, 5412 }, range = new List<int>{ 5348, 5381, 5367 }, dangerous = new List<int>{}}}, //Chamber of the Lost Idol
|
||||
{62778, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4104, 4105, 56784, 4080, 5381, 5513, 5432 }, range = new List<int>{ 5430, 5428, 5277 }, dangerous = new List<int>{ 222186, 222189 }}}, //Western Channel
|
||||
{169494, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5396, 4197 }, range = new List<int>{ 5375 }, dangerous = new List<int>{}}}, //Mysterious Cave, Lv.1
|
||||
{194239, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5396, 4197 }, range = new List<int>{ 5375 }, dangerous = new List<int>{}}}, //Mysterious Cave, Lv.2
|
||||
{146838, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5396, 5277, 4104, 56784, 5512, 5432 }, range = new List<int>{ 5381, 5428 }, dangerous = new List<int>{}}}, //Ruined Cistern
|
||||
{196225, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5209, 4080 }, range = new List<int>{ 4070 }, dangerous = new List<int>{}}}, //Tunnels of the Rockworm
|
||||
{204629, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5396, 4158, 55135 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Cave of the Betrayer, Lv.1
|
||||
{204675, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5396, 4158 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Cave of the Betrayer, Lv.2
|
||||
{19801, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5396, 5432, 208962, 208963, 204944, 5512 }, range = new List<int>{ 5428 }, dangerous = new List<int>{}}}, //The Ruins, Lv.1
|
||||
{222577, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5396, 5432, 208962, 208963, 204944, 5512 }, range = new List<int>{}, dangerous = new List<int>{}}}, //The Ruins, Lv.2
|
||||
{111671, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5468, 4158, 4202, 5513, 5475, 5088 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Vile Cavern, Lv.1
|
||||
{218968, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5468, 4158, 4202 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Vile Cavern, Lv.2
|
||||
{123182, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 208962, 208832, 5375, 204944, 208963 }, range = new List<int>{ 3982 }, dangerous = new List<int>{}}}, //Vault of the Assassin, part 1
|
||||
{153714, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 208962, 208832, 5375, 204944, 208963 }, range = new List<int>{ 982 }, dangerous = new List<int>{}}}, //Vault of the Assassin, part 2
|
||||
{61632, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5396, 5188, 208962, 208832, 204944, 208963, 5193 }, range = new List<int>{ 5371, 5375 }, dangerous = new List<int>{}}}, //The Forgotten Ruins
|
||||
{19799, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5278, 5397, 4198 }, range = new List<int>{}, dangerous = new List<int>{}}}, //Halls of Dusk
|
||||
{80592, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 208962, 208832, 204944, 208963, 199478, 4198 }, range = new List<int>{ 5372, 5382 }, dangerous = new List<int>{ 222523 }}}, //Halls of Dusk
|
||||
{192689, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4105, 5433, 56784, 4080, 5513, 5432 }, range = new List<int>{ 5429, 5428 }, dangerous = new List<int>{}}}, //Hidden Aqueducts
|
||||
{158594, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4104, 56784, 5513, 5432 }, range = new List<int>{ 5428 }, dangerous = new List<int>{}}}, //Tomb of Khan Dakab
|
||||
{158384, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5513, 5432 }, range = new List<int>{ 5428 }, dangerous = new List<int>{}}}, //Tomb of Sardar
|
||||
{62575, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 56784, 5513, 368 }, range = new List<int>{ 5368 }, dangerous = new List<int>{}}}, //Ancient Cave, Lv.1
|
||||
{194242, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 56784, 5513, 368 }, range = new List<int>{ 5368 }, dangerous = new List<int>{}}}, //Ancient Cave, Lv.2
|
||||
{62574, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5468, 5475, 5088 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Flooded Cave, Lv.1
|
||||
{161105, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5468, 5475, 5088 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Flooded Cave, Lv.2
|
||||
{19839, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4080, 6053, 6028, 5199, 5209, 5396, 4541, 4550, 5208, 4551, 4542 }, Range = new List<int>{ 4070 }, Dangerous = new List<int>{ 59970, 5203 }}}, //Stinging Winds Desert
|
||||
{19835, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6060, 6027, 6061, 6044, 6053, 5209, 5208 }, Range = new List<int>{ 6038 }, Dangerous = new List<int>{ 218810, 221442, 221810 }}}, //Road to Alcarnus
|
||||
{19825, new MonsterLayout{ LazyLoad = true, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6060, 6027, 6061, 6044, 6054 }, Range = new List<int>{ 6038 }, Dangerous = new List<int>{ 222003, 222001, 221981, 221999 }}}, //Alcarnus
|
||||
{144117, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6043, 6028, 5208, 5512 }, Range = new List<int>{ 6047 }, Dangerous = new List<int>{ 147155, 144400 }}}, //Deserted Cellar
|
||||
{141067, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6053, 6025 }, Range = new List<int>{ }, Dangerous = new List<int>{ 140947 }}}, //Hadi's Claim Mine
|
||||
{148905, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6053, 6054 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Town Cellar
|
||||
{102936, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6053, 6054 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Secret Altar
|
||||
{148904, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6054, 6028, 6027 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Sandy Cellar
|
||||
{102932, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6054, 6028, 6027 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Hidden Conclave
|
||||
{195998, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6028 }, Range = new List<int>{ }, Dangerous = new List<int>{ 195639 }}}, //Abandoned Cellar
|
||||
{148903, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6027, 4089 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Alcarnus Cellar
|
||||
{19836, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 6060, 5396, 4541, 4550, 5208, 4551, 4542, 4089 }, Range = new List<int>{ 6027 }, Dangerous = new List<int>{}}}, //Sundered Canyon
|
||||
{170118, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5199, 5208, 4541, 4551, 4542, 4550 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Black Canyon Bridge
|
||||
{19838, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5199, 4080, 5208, 5396 }, Range = new List<int>{ 4070 }, Dangerous = new List<int>{ 221406, 221402 }}}, //Black Canyon Mines
|
||||
{19837, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5199,4080, 5208, 4089, 5396, 4541, 4550, 4551 }, Range = new List<int>{ 6028, 4070 }, Dangerous = new List<int>{ 221377, 221379, 221367, 221372 }}}, //Howling Plateau
|
||||
{19794, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4080, 5208, 5512, 4550, 4541, 4551, 4542, 5432 }, Range = new List<int>{ 4098, 5428 }, Dangerous = new List<int>{}}}, //The Crumbling Vault
|
||||
{57425, new MonsterLayout{ LazyLoad = true, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4080, 4083, 4093, 5434, 4094, 4083, 4542, 5432, 3384 }, Range = new List<int>{ 4099, 4098, 3981, 4071, 5429, 5428 }, Dangerous = new List<int>{ 222180, 215445, 208543, 140424, 113994, 115132, 140424 }}}, //Dahlgur Oasis
|
||||
{166127, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4080 }, Range = new List<int>{ 4098 }, Dangerous = new List<int>{ 166133 }}}, //The lost Caravan
|
||||
{175367, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4080, 5432 }, Range = new List<int>{ 4098, 5428 }, Dangerous = new List<int>{}}}, //Path to the Oasis
|
||||
{159897, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4080 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Storage Cellar
|
||||
{159899, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4080 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Storm Cellar
|
||||
{19798, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 231349, 4083, 231356, 5278, 5397, 4090, 137995, 137996, 208962, 204944, 208963, 5188, 5187, 5192, 368, 4196, 5468, 231355 }, Range = new List<int>{ 231351, 5349, 5376, 5368, 5372, 5382 }, Dangerous = new List<int>{ 222502, 222510, 222511, 222512 }}}, //The Storm Halls
|
||||
{19797, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 231349, 4083, 231356, 5278, 5397, 4090, 137994, 137992, 208832, 204944, 208963, 5188, 5187, 5192, 4196, 368, 5191, 231355 }, Range = new List<int>{ 231351, 5349, 5368, 5372, 5382, 5376 }, Dangerous = new List<int>{ 222427, 222413, 165602 }}}, //The Unknown Depths
|
||||
{175330, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4093, 4090, 5512, 4071 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Ancient Path
|
||||
{53834, new MonsterLayout{ LazyLoad = true, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6655, 218795, 5210, 4105, 4104, 5396, 5188, 3385, 4542, 5191, 5513, 5512, 4093, 204256 }, Range = new List<int>{ 5376 }, Dangerous = new List<int>{ 222352, 222385, 219832, 217744, 111868, 222400, 222339, 218947 }}}, //Desolate Sands
|
||||
{62780, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4202, 5210, 4105, 56784, 4080, 5513, 4071, 4090, 4204 }, Range = new List<int>{ 4155, 5381, 5429, 5428, 5430, 5277 }, Dangerous = new List<int>{ 222236, 222238 }}}, //Eastern Channel
|
||||
{159588, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4204, 217308, 437, 5090 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Sirocco Caverns, Lv.1
|
||||
{220805, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4204, 217308, 437 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Sirocco Caverns, Lv.2
|
||||
{111667, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6238, 4202, 4158, 5088, 5238 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Cave of Burrowing Horror, Lv.1
|
||||
{218969, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6238, 4202, 4158, 5238 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Cave of Burrowing Horror, Lv.2
|
||||
{19791, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5396, 5277, 4104, 56784, 5513, 5432, 5512, 5381 }, Range = new List<int>{ 5428 }, Dangerous = new List<int>{ 219583, 222008, 222005, 156738, 156763, }}}, //Sewers of Caldeum
|
||||
{19795, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5396, 5412 }, Range = new List<int>{ 5348, 5381, 5367 }, Dangerous = new List<int>{}}}, //Chamber of the Lost Idol
|
||||
{62778, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4104, 4105, 56784, 4080, 5381, 5513, 5432 }, Range = new List<int>{ 5430, 5428, 5277 }, Dangerous = new List<int>{ 222186, 222189 }}}, //Western Channel
|
||||
{169494, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5396, 4197 }, Range = new List<int>{ 5375 }, Dangerous = new List<int>{}}}, //Mysterious Cave, Lv.1
|
||||
{194239, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5396, 4197 }, Range = new List<int>{ 5375 }, Dangerous = new List<int>{}}}, //Mysterious Cave, Lv.2
|
||||
{146838, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5396, 5277, 4104, 56784, 5512, 5432 }, Range = new List<int>{ 5381, 5428 }, Dangerous = new List<int>{}}}, //Ruined Cistern
|
||||
{196225, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5209, 4080 }, Range = new List<int>{ 4070 }, Dangerous = new List<int>{}}}, //Tunnels of the Rockworm
|
||||
{204629, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5396, 4158, 55135 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Cave of the Betrayer, Lv.1
|
||||
{204675, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5396, 4158 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Cave of the Betrayer, Lv.2
|
||||
{19801, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5396, 5432, 208962, 208963, 204944, 5512 }, Range = new List<int>{ 5428 }, Dangerous = new List<int>{}}}, //The Ruins, Lv.1
|
||||
{222577, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5396, 5432, 208962, 208963, 204944, 5512 }, Range = new List<int>{}, Dangerous = new List<int>{}}}, //The Ruins, Lv.2
|
||||
{111671, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5468, 4158, 4202, 5513, 5475, 5088 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Vile Cavern, Lv.1
|
||||
{218968, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5468, 4158, 4202 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Vile Cavern, Lv.2
|
||||
{123182, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 208962, 208832, 5375, 204944, 208963 }, Range = new List<int>{ 3982 }, Dangerous = new List<int>{}}}, //Vault of the Assassin, part 1
|
||||
{153714, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 208962, 208832, 5375, 204944, 208963 }, Range = new List<int>{ 982 }, Dangerous = new List<int>{}}}, //Vault of the Assassin, part 2
|
||||
{61632, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5396, 5188, 208962, 208832, 204944, 208963, 5193 }, Range = new List<int>{ 5371, 5375 }, Dangerous = new List<int>{}}}, //The Forgotten Ruins
|
||||
{19799, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5278, 5397, 4198 }, Range = new List<int>{}, Dangerous = new List<int>{}}}, //Halls of Dusk
|
||||
{80592, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 208962, 208832, 204944, 208963, 199478, 4198 }, Range = new List<int>{ 5372, 5382 }, Dangerous = new List<int>{ 222523 }}}, //Halls of Dusk
|
||||
{192689, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4105, 5433, 56784, 4080, 5513, 5432 }, Range = new List<int>{ 5429, 5428 }, Dangerous = new List<int>{}}}, //Hidden Aqueducts
|
||||
{158594, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4104, 56784, 5513, 5432 }, Range = new List<int>{ 5428 }, Dangerous = new List<int>{}}}, //Tomb of Khan Dakab
|
||||
{158384, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5513, 5432 }, Range = new List<int>{ 5428 }, Dangerous = new List<int>{}}}, //Tomb of Sardar
|
||||
{62575, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 56784, 5513, 368 }, Range = new List<int>{ 5368 }, Dangerous = new List<int>{}}}, //Ancient Cave, Lv.1
|
||||
{194242, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 56784, 5513, 368 }, Range = new List<int>{ 5368 }, Dangerous = new List<int>{}}}, //Ancient Cave, Lv.2
|
||||
{62574, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5468, 5475, 5088 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Flooded Cave, Lv.1
|
||||
{161105, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5468, 5475, 5088 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Flooded Cave, Lv.2
|
||||
#endregion
|
||||
#region Act III
|
||||
{75436, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6055, 169456, 170763, 5397, 182285, 204232, 77796, 4985, 62736 }, range = new List<int>{ 170781 }, dangerous = new List<int>{ 220468, 220710, 220444, 220455 }}}, //The Keep Depths, Lv.1
|
||||
{93103, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6055,4095, 169456, 170763, 5397, 182285, 204232, 77796, 4985, 62736, 130794 }, range = new List<int>{ 170781 }, dangerous = new List<int>{ 220481, 220479, 220476 }}}, //The Keep Depths, Lv.2
|
||||
{136448, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 6055,4095, 169456, 170763, 5397, 182285, 204232, 77796, 62736 }, range = new List<int>{ 170781 }, dangerous = new List<int>{ 220499, 220491, 220485 }}}, //The Keep Depths, Lv.3
|
||||
{182258, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4084,4095, 4091, 4746, 130794 }, range = new List<int>{ 4100, 4072 }, dangerous = new List<int>{}}}, //The Barracks, lv. 1
|
||||
{221753, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4084,4095, 4091, 4746, 130794 }, range = new List<int>{ 4100, 4072 }, dangerous = new List<int>{}}}, //The Barracks, lv. 2
|
||||
{92960, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4084,4085, 4091, 4092, 77796, 62736, 221770, 130794 }, range = new List<int>{ 5581, 365, 4073 }, dangerous = new List<int>{ 220232 }}}, //Skycrown Battlements
|
||||
{69504, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4085, 4295, 141194, 4085, 221770, 130794 }, range = new List<int>{ 365, 4303, 4300, 5581, 4073 }, dangerous = new List<int>{ 220377, 220775, 220773, 220727 }}}, //Rakkis Crossing
|
||||
{119653, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4296, 4746 }, range = new List<int>{ 4300, 4304, 5508 }, dangerous = new List<int>{ 220857, 220853 }}}, //Tower of the Cursed, Lv.1
|
||||
{139274, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4296, 4746 }, range = new List<int>{ 4300, 4304, 5508 }, dangerous = new List<int>{ 220868 }}}, //Tower of the Cursed, Lv.2
|
||||
{75436, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6055, 169456, 170763, 5397, 182285, 204232, 77796, 4985, 62736 }, Range = new List<int>{ 170781 }, Dangerous = new List<int>{ 220468, 220710, 220444, 220455 }}}, //The Keep Depths, Lv.1
|
||||
{93103, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6055,4095, 169456, 170763, 5397, 182285, 204232, 77796, 4985, 62736, 130794 }, Range = new List<int>{ 170781 }, Dangerous = new List<int>{ 220481, 220479, 220476 }}}, //The Keep Depths, Lv.2
|
||||
{136448, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 6055,4095, 169456, 170763, 5397, 182285, 204232, 77796, 62736 }, Range = new List<int>{ 170781 }, Dangerous = new List<int>{ 220499, 220491, 220485 }}}, //The Keep Depths, Lv.3
|
||||
{182258, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4084,4095, 4091, 4746, 130794 }, Range = new List<int>{ 4100, 4072 }, Dangerous = new List<int>{}}}, //The Barracks, lv. 1
|
||||
{221753, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4084,4095, 4091, 4746, 130794 }, Range = new List<int>{ 4100, 4072 }, Dangerous = new List<int>{}}}, //The Barracks, lv. 2
|
||||
{92960, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4084,4085, 4091, 4092, 77796, 62736, 221770, 130794 }, Range = new List<int>{ 5581, 365, 4073 }, Dangerous = new List<int>{ 220232 }}}, //Skycrown Battlements
|
||||
{69504, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4085, 4295, 141194, 4085, 221770, 130794 }, Range = new List<int>{ 365, 4303, 4300, 5581, 4073 }, Dangerous = new List<int>{ 220377, 220775, 220773, 220727 }}}, //Rakkis Crossing
|
||||
{119653, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4296, 4746 }, Range = new List<int>{ 4300, 4304, 5508 }, Dangerous = new List<int>{ 220857, 220853 }}}, //Tower of the Cursed, Lv.1
|
||||
{139274, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4296, 4746 }, Range = new List<int>{ 4300, 4304, 5508 }, Dangerous = new List<int>{ 220868 }}}, //Tower of the Cursed, Lv.2
|
||||
//{119656, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 144315, 169615, 5467 }, range = new List<int>{ 5508 }, dangerous = new List<int>{}}}, //Heart of the Damned
|
||||
{191078, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 191592, 3342, 5239, 3850 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Icefall Caves, Lv.1
|
||||
{221703, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 3342, 5239, 3850 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Icefall Caves, Lv.2
|
||||
{189345, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5239, 4548, 4552, 4985 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Caverns of Frost, Lv.1
|
||||
{221702, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5239, 4548, 4552, 4985 }, range = new List<int>{ }, dangerous = new List<int>{ 212750 }}}, //Caverns of Frost, Lv.2
|
||||
{182274, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 170763, 182281, 182285, 62736, 221770, 130794 }, range = new List<int>{ 170781, 182279 }, dangerous = new List<int>{}}}, //Battlefield Stores, Lv.1
|
||||
{221754, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 170763, 182281, 182285, 62736, 221770, 130794 }, range = new List<int>{ 170781, 182279 }, dangerous = new List<int>{}}}, //Battlefield Stores, Lv.2
|
||||
{93173, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4085, 4091, 77796, 62736 }, range = new List<int>{ 5581 }, dangerous = new List<int>{ 220395, 220397 }}}, //Stonefort
|
||||
{112565, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4295, 4085, 221770, 4738, 130794 }, range = new List<int>{ 4303, 4300, 5581, 60722 }, dangerous = new List<int>{ 218566, 220705, 220708 }}}, //Fields of Slaughter
|
||||
{155048, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 4295, 4738 }, range = new List<int>{ 60722 }, dangerous = new List<int>{ 220699 }}}, //The Bridge of Korsikk
|
||||
{112548, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4295, 60722, 141194, 4738, 4106, 221770 }, range = new List<int>{ 4300, 5581 }, dangerous = new List<int>{ 220509, 220688, 220691 }}}, //The Battlefields
|
||||
{86080, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4296, 4085, 4738, 4747, 4746, 144315 }, range = new List<int>{ 189852, 4300, 5581, 365 }, dangerous = new List<int>{ 220777, 220381, 220795 }}}, // REMOVED 203048 (Horrible burrow animations) //Arreat Crater, Lv.1
|
||||
{119305, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 4296, 4085, 4738, 169615, 4747, 4746, 144315 }, range = new List<int>{ 4300, 5581, 365, 205767, 5508 }, dangerous = new List<int>{ 220853, 220850, 220851 }}}, // REMOVED 203048 (Horrible burrow animations) //Arreat Crater, Lv.2
|
||||
{80791, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 144315, 4085, 169615, 4747, 4746 }, range = new List<int>{ 365, 4073, 5508 }, dangerous = new List<int>{ 220810, 220783, 220435, 220806 }}}, //Tower of the Damned, Lv.1
|
||||
{80792, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 144315, 4085, 169615, 4747, 4746 }, range = new List<int>{ 365, 4073, 5508 }, dangerous = new List<int>{ 220817, 220814 }}}, //Tower of the Damned, Lv.2
|
||||
{119306, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 121353, 4747, 4746 }, range = new List<int>{ 5581, 5508 }, dangerous = new List<int>{ 220884, 220881, 220889 }}}, //The Core of Arreat
|
||||
{174666, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 141194, 62736, 5514, 221770, 4985, 4984, 4746, 130794 }, range = new List<int>{ 60722 }, dangerous = new List<int>{}}}, //Fortified Bunker, Lv.1
|
||||
{221752, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 141194, 62736, 221770, 4985, 4984, 4746, 130794 }, range = new List<int>{ 60722 }, dangerous = new List<int>{}}}, //Fortified Bunker, Lv.2
|
||||
{182502, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 141194, 60049, 5436, 62736, 130794, 106707 }, range = new List<int>{ 60722, 5508 }, dangerous = new List<int>{}}}, //The Foundry, Lv.1
|
||||
{221761, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 141194, 60049, 5436, 62736, 130794 }, range = new List<int>{ 60722, 5508 }, dangerous = new List<int>{}}}, //The Foundry, Lv.2
|
||||
{191078, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 191592, 3342, 5239, 3850 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Icefall Caves, Lv.1
|
||||
{221703, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 3342, 5239, 3850 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Icefall Caves, Lv.2
|
||||
{189345, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5239, 4548, 4552, 4985 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Caverns of Frost, Lv.1
|
||||
{221702, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5239, 4548, 4552, 4985 }, Range = new List<int>{ }, Dangerous = new List<int>{ 212750 }}}, //Caverns of Frost, Lv.2
|
||||
{182274, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 170763, 182281, 182285, 62736, 221770, 130794 }, Range = new List<int>{ 170781, 182279 }, Dangerous = new List<int>{}}}, //Battlefield Stores, Lv.1
|
||||
{221754, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 170763, 182281, 182285, 62736, 221770, 130794 }, Range = new List<int>{ 170781, 182279 }, Dangerous = new List<int>{}}}, //Battlefield Stores, Lv.2
|
||||
{93173, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4085, 4091, 77796, 62736 }, Range = new List<int>{ 5581 }, Dangerous = new List<int>{ 220395, 220397 }}}, //Stonefort
|
||||
{112565, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4295, 4085, 221770, 4738, 130794 }, Range = new List<int>{ 4303, 4300, 5581, 60722 }, Dangerous = new List<int>{ 218566, 220705, 220708 }}}, //Fields of Slaughter
|
||||
{155048, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 4295, 4738 }, Range = new List<int>{ 60722 }, Dangerous = new List<int>{ 220699 }}}, //The Bridge of Korsikk
|
||||
{112548, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4295, 60722, 141194, 4738, 4106, 221770 }, Range = new List<int>{ 4300, 5581 }, Dangerous = new List<int>{ 220509, 220688, 220691 }}}, //The Battlefields
|
||||
{86080, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4296, 4085, 4738, 4747, 4746, 144315 }, Range = new List<int>{ 189852, 4300, 5581, 365 }, Dangerous = new List<int>{ 220777, 220381, 220795 }}}, // REMOVED 203048 (Horrible burrow animations) //Arreat Crater, Lv.1
|
||||
{119305, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 4296, 4085, 4738, 169615, 4747, 4746, 144315 }, Range = new List<int>{ 4300, 5581, 365, 205767, 5508 }, Dangerous = new List<int>{ 220853, 220850, 220851 }}}, // REMOVED 203048 (Horrible burrow animations) //Arreat Crater, Lv.2
|
||||
{80791, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 144315, 4085, 169615, 4747, 4746 }, Range = new List<int>{ 365, 4073, 5508 }, Dangerous = new List<int>{ 220810, 220783, 220435, 220806 }}}, //Tower of the Damned, Lv.1
|
||||
{80792, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 144315, 4085, 169615, 4747, 4746 }, Range = new List<int>{ 365, 4073, 5508 }, Dangerous = new List<int>{ 220817, 220814 }}}, //Tower of the Damned, Lv.2
|
||||
{119306, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 121353, 4747, 4746 }, Range = new List<int>{ 5581, 5508 }, Dangerous = new List<int>{ 220884, 220881, 220889 }}}, //The Core of Arreat
|
||||
{174666, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 141194, 62736, 5514, 221770, 4985, 4984, 4746, 130794 }, Range = new List<int>{ 60722 }, Dangerous = new List<int>{}}}, //Fortified Bunker, Lv.1
|
||||
{221752, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 141194, 62736, 221770, 4985, 4984, 4746, 130794 }, Range = new List<int>{ 60722 }, Dangerous = new List<int>{}}}, //Fortified Bunker, Lv.2
|
||||
{182502, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 141194, 60049, 5436, 62736, 130794, 106707 }, Range = new List<int>{ 60722, 5508 }, Dangerous = new List<int>{}}}, //The Foundry, Lv.1
|
||||
{221761, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 141194, 60049, 5436, 62736, 130794 }, Range = new List<int>{ 60722, 5508 }, Dangerous = new List<int>{}}}, //The Foundry, Lv.2
|
||||
#endregion
|
||||
#region Act IV
|
||||
{109526, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 3361, 82764, 106712, 121353 }, range = new List<int>{ 106713 }, dangerous = new List<int>{}}}, //Hell Rift, lv.1
|
||||
{109531, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 82764, 106708, 3362, 106712, 121353 }, range = new List<int>{ 205767, 152679 }, dangerous = new List<int>{}}}, //Hell Rift, lv.2
|
||||
{109514, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 3361, 82764, 106708, 106712, 106711 }, range = new List<int>{ 106713, 136864, 152679 }, dangerous = new List<int>{ 219651, 219727, 219668 }}}, //Garden of Hope, lv.1
|
||||
{109516, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 106711, 134416, 82764, 4755, 106708, 60049, 3362, 106712, 106714 }, range = new List<int>{ 106713, 152679 }, dangerous = new List<int>{ 219925 }}}, //Garden of Hope, lv.2
|
||||
{201668, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 141196, 60049 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Blessed Chancel
|
||||
{201671, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 141196 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Sacellum of Virtue
|
||||
{201670, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 106711, 106708 }, range = new List<int>{ }, dangerous = new List<int>{ 223691 }}}, //Radiant Chapel
|
||||
{175738, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 136864 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Holy Sanctum
|
||||
{109538, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 106713, 136864, 106711, 82764, 4760, 4757, 137856, 106708, 199478, 106712, 106714 }, range = new List<int>{ 219673, 106709 }, dangerous = new List<int>{ 219847, 219893, 219916 }}}, //The Silver Spire, Lv.1
|
||||
{109540, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 136864, 3361, 106711, 106710, 82764, 4760, 4757, 106708, 199478, 106714 }, range = new List<int>{ 106709 }, dangerous = new List<int>{ 219949, 219960, 219985, 218873 }}}, //The Silver Spire, Lv.2
|
||||
{109542, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 106711, 82764, 199478, 106710, 82764, 199478, 134416 }, range = new List<int>{ 152679, 219673, 5508 }, dangerous = new List<int>{}}}, //The Silver Spire, Lv.4
|
||||
{210728, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 106713, 136864, 106711, 82764, 4760, 4757, 137856, 106708, 199478, 106712, 106714, 3361, 106710, 175614 }, range = new List<int>{ 219673, 106709 }, dangerous = new List<int>{}}}, //The Silver Spire, Lv.5
|
||||
{109526, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 3361, 82764, 106712, 121353 }, Range = new List<int>{ 106713 }, Dangerous = new List<int>{}}}, //Hell Rift, lv.1
|
||||
{109531, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 82764, 106708, 3362, 106712, 121353 }, Range = new List<int>{ 205767, 152679 }, Dangerous = new List<int>{}}}, //Hell Rift, lv.2
|
||||
{109514, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 3361, 82764, 106708, 106712, 106711 }, Range = new List<int>{ 106713, 136864, 152679 }, Dangerous = new List<int>{ 219651, 219727, 219668 }}}, //Garden of Hope, lv.1
|
||||
{109516, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 106711, 134416, 82764, 4755, 106708, 60049, 3362, 106712, 106714 }, Range = new List<int>{ 106713, 152679 }, Dangerous = new List<int>{ 219925 }}}, //Garden of Hope, lv.2
|
||||
{201668, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 141196, 60049 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Blessed Chancel
|
||||
{201671, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 141196 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Sacellum of Virtue
|
||||
{201670, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 106711, 106708 }, Range = new List<int>{ }, Dangerous = new List<int>{ 223691 }}}, //Radiant Chapel
|
||||
{175738, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 136864 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Holy Sanctum
|
||||
{109538, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 106713, 136864, 106711, 82764, 4760, 4757, 137856, 106708, 199478, 106712, 106714 }, Range = new List<int>{ 219673, 106709 }, Dangerous = new List<int>{ 219847, 219893, 219916 }}}, //The Silver Spire, Lv.1
|
||||
{109540, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 136864, 3361, 106711, 106710, 82764, 4760, 4757, 106708, 199478, 106714 }, Range = new List<int>{ 106709 }, Dangerous = new List<int>{ 219949, 219960, 219985, 218873 }}}, //The Silver Spire, Lv.2
|
||||
{109542, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 106711, 82764, 199478, 106710, 82764, 199478, 134416 }, Range = new List<int>{ 152679, 219673, 5508 }, Dangerous = new List<int>{}}}, //The Silver Spire, Lv.4
|
||||
{210728, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 106713, 136864, 106711, 82764, 4760, 4757, 137856, 106708, 199478, 106712, 106714, 3361, 106710, 175614 }, Range = new List<int>{ 219673, 106709 }, Dangerous = new List<int>{}}}, //The Silver Spire, Lv.5
|
||||
#endregion
|
||||
|
||||
#region Act V
|
||||
{261758, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 273417, 272330, 282027, 276309, 309114, 277203, 276495, 310894, 310893 }, range = new List<int>{ 282789, 310888 }, dangerous = new List<int>{ 360853, 360861, 369424, 309462 }}}, //Westmarch Commons
|
||||
{338946, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 341711, 297708, 262442, 342218, 342237, 309114, 051356, 342244, 334796, 334792, 334798 }, range = new List<int>{ }, dangerous = new List<int>{ 351183, 373821, 373819, 361417 }}}, //Briarthorn Cemetery
|
||||
{263493, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 273417, 272330, 262442, 330603, 282027, 276309, 277203, 288691, 310893, 298827, 299231 }, range = new List<int>{ 282789, 310888 }, dangerous = new List<int>{ 373830, 363986, 355667, 355672, 355680, 353443 }}}, //Westmarch Heights
|
||||
{282487, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 237333, 361665 }, range = new List<int>{ }, dangerous = new List<int>{}}}, //Overgrown Ruins
|
||||
{245964, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 239014, 237333, 239516, 361665 }, range = new List<int>{ }, dangerous = new List<int>{ 361755, 361771 }}}, //Blood Marsh
|
||||
{258142, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 239014, 237333, 363639, 289387, 254175, 246343, 005276, 239516, 237876 }, range = new List<int>{ 289388 }, dangerous = new List<int>{ 290453, 361991, 351179 }}}, //Paths of the Drowned
|
||||
{283553, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 276492, 343183, 347255, 345949, 283269, 351023 }, range = new List<int>{ }, dangerous = new List<int>{ 373881, 362303, 362299 }}}, //Passage to Corvus
|
||||
{283567, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 276492, 343183, 347255, 345949, 283269, 351023 }, range = new List<int>{ }, dangerous = new List<int>{ 342355, 362309, 362305, 373842 }}}, //Ruins of Corvus
|
||||
{338602, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 296283, 271579, 271806 }, range = new List<int>{ }, dangerous = new List<int>{ 363108, 363060, 373883, 362895, 362891, 341760, 363051, 363073 }}}, //REMOVED 275108 (horrible tunnel animation) //Battlefields of Eternity
|
||||
{271234, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 241288, 305579 }, range = new List<int>{ }, dangerous = new List<int>{ 363374, 363378, 363228, 363232, 363367 }}}, //Pandemonium Fortress lv. 1
|
||||
{360494, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 241288, 305579, 340920, 299231 }, range = new List<int>{ }, dangerous = new List<int>{ 360243, 360244, 360241, 363230 }}}, //Pandemonium Fortress lv. 2
|
||||
{261758, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 273417, 272330, 282027, 276309, 309114, 277203, 276495, 310894, 310893 }, Range = new List<int>{ 282789, 310888 }, Dangerous = new List<int>{ 360853, 360861, 369424, 309462 }}}, //Westmarch Commons
|
||||
{338946, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 341711, 297708, 262442, 342218, 342237, 309114, 051356, 342244, 334796, 334792, 334798 }, Range = new List<int>{ }, Dangerous = new List<int>{ 351183, 373821, 373819, 361417 }}}, //Briarthorn Cemetery
|
||||
{263493, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 273417, 272330, 262442, 330603, 282027, 276309, 277203, 288691, 310893, 298827, 299231 }, Range = new List<int>{ 282789, 310888 }, Dangerous = new List<int>{ 373830, 363986, 355667, 355672, 355680, 353443 }}}, //Westmarch Heights
|
||||
{282487, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 237333, 361665 }, Range = new List<int>{ }, Dangerous = new List<int>{}}}, //Overgrown Ruins
|
||||
{245964, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 239014, 237333, 239516, 361665 }, Range = new List<int>{ }, Dangerous = new List<int>{ 361755, 361771 }}}, //Blood Marsh
|
||||
{258142, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 239014, 237333, 363639, 289387, 254175, 246343, 005276, 239516, 237876 }, Range = new List<int>{ 289388 }, Dangerous = new List<int>{ 290453, 361991, 351179 }}}, //Paths of the Drowned
|
||||
{283553, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 276492, 343183, 347255, 345949, 283269, 351023 }, Range = new List<int>{ }, Dangerous = new List<int>{ 373881, 362303, 362299 }}}, //Passage to Corvus
|
||||
{283567, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 276492, 343183, 347255, 345949, 283269, 351023 }, Range = new List<int>{ }, Dangerous = new List<int>{ 342355, 362309, 362305, 373842 }}}, //Ruins of Corvus
|
||||
{338602, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 296283, 271579, 271806 }, Range = new List<int>{ }, Dangerous = new List<int>{ 363108, 363060, 373883, 362895, 362891, 341760, 363051, 363073 }}}, //REMOVED 275108 (horrible tunnel animation) //Battlefields of Eternity
|
||||
{271234, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 241288, 305579 }, Range = new List<int>{ }, Dangerous = new List<int>{ 363374, 363378, 363228, 363232, 363367 }}}, //Pandemonium Fortress lv. 1
|
||||
{360494, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 241288, 305579, 340920, 299231 }, Range = new List<int>{ }, Dangerous = new List<int>{ 360243, 360244, 360241, 363230 }}}, //Pandemonium Fortress lv. 2
|
||||
#endregion
|
||||
//x1_lr_tileset_Westmarch
|
||||
{331263, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 341711, 297708, 262442, 342218, 342237, 309114, 051356, 342244, 334796, 334792, 334798 }, range = new List<int>{ }, dangerous = new List<int>{ 351183, 373821, 373819, 361417 }}},
|
||||
{331263, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 341711, 297708, 262442, 342218, 342237, 309114, 051356, 342244, 334796, 334792, 334798 }, Range = new List<int>{ }, Dangerous = new List<int>{ 351183, 373821, 373819, 361417 }}},
|
||||
//_x1_lr_tileset_fortress_large
|
||||
{360797, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 241288, 305579, 340920, 299231 }, range = new List<int>{ }, dangerous = new List<int>{ 363374, 363378, 363228, 363232, 363367, 360243, 360244, 360241, 363230 }}},
|
||||
{360797, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 241288, 305579, 340920, 299231 }, Range = new List<int>{ }, Dangerous = new List<int>{ 363374, 363378, 363228, 363232, 363367, 360243, 360244, 360241, 363230 }}},
|
||||
//x1_lr_tileset_zoltruins
|
||||
{288823, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 5396, 5432, 208962, 208963, 204944, 5512 }, range = new List<int>{ 5428 }, dangerous = new List<int>{}}},
|
||||
{288823, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 5396, 5432, 208962, 208963, 204944, 5512 }, Range = new List<int>{ 5428 }, Dangerous = new List<int>{}}},
|
||||
//x1_lr_tileset_hexmaze
|
||||
{331389, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 241288, 305579, 340920, 299231 }, range = new List<int>{ }, dangerous = new List<int>{ 363374, 363378, 363228, 363232, 363367, 360243, 360244, 360241, 363230 }}},
|
||||
{331389, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 241288, 305579, 340920, 299231 }, Range = new List<int>{ }, Dangerous = new List<int>{ 363374, 363378, 363228, 363232, 363367, 360243, 360244, 360241, 363230 }}},
|
||||
|
||||
//x1_lr_tileset_icecave
|
||||
{275960, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 191592, 3342, 5239, 3850 }, range = new List<int>{ }, dangerous = new List<int>{}}},
|
||||
{275960, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 191592, 3342, 5239, 3850 }, Range = new List<int>{ }, Dangerous = new List<int>{}}},
|
||||
//x1_lr_tileset_crypt
|
||||
{275946, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = false, melee = new List<int>{ 5393, 3848, 5395, 5411, 6653 }, range = new List<int>{ 5346, 3847, 6639 }, dangerous = new List<int>{ 218348, 218351 }}},
|
||||
{275946, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = false, Melee = new List<int>{ 5393, 3848, 5395, 5411, 6653 }, Range = new List<int>{ 5346, 3847, 6639 }, Dangerous = new List<int>{ 218348, 218351 }}},
|
||||
//x1_lr_tileset_corruptspire
|
||||
{275926, new MonsterLayout{ lazy_load = false, additional_density = 0, can_spawn_goblin = true, melee = new List<int>{ 106711, 82764, 199478, 106710, 82764, 199478, 134416 }, range = new List<int>{ 152679, 219673, 5508 }, dangerous = new List<int>{}}},
|
||||
{275926, new MonsterLayout{ LazyLoad = false, AdditionalDensity = 0, CanSpawnGoblin = true, Melee = new List<int>{ 106711, 82764, 199478, 106710, 82764, 199478, 134416 }, Range = new List<int>{ 152679, 219673, 5508 }, Dangerous = new List<int>{}}},
|
||||
//
|
||||
|
||||
};
|
||||
|
||||
@ -70,7 +70,7 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
|
||||
public void CheckLevelArea(World world, int levelAreaSNO)
|
||||
{
|
||||
if (SpawnGenerator.Spawns.ContainsKey(levelAreaSNO) && SpawnGenerator.Spawns[levelAreaSNO].lazy_load)
|
||||
if (SpawnGenerator.Spawns.ContainsKey(levelAreaSNO) && SpawnGenerator.Spawns[levelAreaSNO].LazyLoad)
|
||||
if (!LoadedLevelAreas.Contains(levelAreaSNO))
|
||||
{
|
||||
LoadedLevelAreas.Add(levelAreaSNO);
|
||||
@ -2311,7 +2311,7 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
foreach (var scene in levelAreas.First().Value)
|
||||
{
|
||||
if (!SpawnGenerator.Spawns.ContainsKey(wid)) break;
|
||||
if (SpawnGenerator.Spawns[wid].lazy_load)
|
||||
if (SpawnGenerator.Spawns[wid].LazyLoad)
|
||||
{
|
||||
_lazyLevelAreas.Add(wid, levelAreas.First().Value);
|
||||
break;
|
||||
@ -2321,9 +2321,9 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
}
|
||||
#region unique spawn
|
||||
//unique spawn
|
||||
if (SpawnGenerator.Spawns.ContainsKey(wid) && SpawnGenerator.Spawns[wid].dangerous.Count > 0 && FastRandom.Instance.NextDouble() < 0.5)
|
||||
if (SpawnGenerator.Spawns.ContainsKey(wid) && SpawnGenerator.Spawns[wid].Dangerous.Count > 0 && FastRandom.Instance.NextDouble() < 0.5)
|
||||
{
|
||||
var randomUnique = new SNOHandle(SpawnGenerator.Spawns[wid].dangerous.PickRandom());
|
||||
var randomUnique = new SNOHandle(SpawnGenerator.Spawns[wid].Dangerous.PickRandom());
|
||||
var scene = levelAreas.First().Value.PickRandom();
|
||||
int x = FastRandom.Instance.Next(scene.NavMesh.SquaresCountX);
|
||||
int y = FastRandom.Instance.Next(scene.NavMesh.SquaresCountY);
|
||||
@ -2363,7 +2363,7 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
#endregion
|
||||
#region goblin spawn
|
||||
//goblin spawn
|
||||
if (SpawnGenerator.Spawns.ContainsKey(wid) && SpawnGenerator.Spawns[wid].can_spawn_goblin && FastRandom.Instance.NextDouble() < 0.5)
|
||||
if (SpawnGenerator.Spawns.ContainsKey(wid) && SpawnGenerator.Spawns[wid].CanSpawnGoblin && FastRandom.Instance.NextDouble() < 0.5)
|
||||
{
|
||||
var randomGoblin = new SNOHandle(Goblins.PickRandom());
|
||||
if (world.Game.IsHardcore) randomGoblin = new SNOHandle(3852);
|
||||
@ -2408,7 +2408,7 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
foreach (var scene in levelAreas[la])
|
||||
{
|
||||
if (!SpawnGenerator.Spawns.ContainsKey(la)) break;
|
||||
if (SpawnGenerator.Spawns[la].lazy_load)
|
||||
if (SpawnGenerator.Spawns[la].LazyLoad)
|
||||
{
|
||||
_lazyLevelAreas.Add(la, levelAreas[la]);
|
||||
break;
|
||||
@ -2418,9 +2418,9 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
}
|
||||
#region unique spawn
|
||||
//unique spawn
|
||||
if (SpawnGenerator.Spawns.ContainsKey(la) && SpawnGenerator.Spawns[la].dangerous.Count > 0 && FastRandom.Instance.NextDouble() < 0.5)
|
||||
if (SpawnGenerator.Spawns.ContainsKey(la) && SpawnGenerator.Spawns[la].Dangerous.Count > 0 && FastRandom.Instance.NextDouble() < 0.5)
|
||||
{
|
||||
var randomUnique = new SNOHandle(SpawnGenerator.Spawns[la].dangerous.PickRandom());
|
||||
var randomUnique = new SNOHandle(SpawnGenerator.Spawns[la].Dangerous.PickRandom());
|
||||
var scene = levelAreas[la].PickRandom();
|
||||
int x = FastRandom.Instance.Next(scene.NavMesh.SquaresCountX);
|
||||
int y = FastRandom.Instance.Next(scene.NavMesh.SquaresCountY);
|
||||
@ -2460,7 +2460,7 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
#endregion
|
||||
#region goblin spawn
|
||||
//goblin spawn
|
||||
if (SpawnGenerator.Spawns.ContainsKey(la) && SpawnGenerator.Spawns[la].can_spawn_goblin && FastRandom.Instance.NextDouble() < 0.5)
|
||||
if (SpawnGenerator.Spawns.ContainsKey(la) && SpawnGenerator.Spawns[la].CanSpawnGoblin && FastRandom.Instance.NextDouble() < 0.5)
|
||||
{
|
||||
var randomGoblin = new SNOHandle(Goblins.PickRandom());
|
||||
if (world.Game.IsHardcore) randomGoblin = new SNOHandle(3852);
|
||||
@ -2521,7 +2521,7 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
}
|
||||
|
||||
if (Game.Difficulty > 4)
|
||||
packs_count += SpawnGenerator.Spawns[la].additional_density;
|
||||
packs_count += SpawnGenerator.Spawns[la].AdditionalDensity;
|
||||
|
||||
var groupId = 0;
|
||||
|
||||
@ -2540,8 +2540,8 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
#region elite spawn
|
||||
int randomMeleeMonsterId = -1;
|
||||
int randomRangedMonsterId = -1;
|
||||
if (SpawnGenerator.Spawns[la].melee.Count > 0) randomMeleeMonsterId = SpawnGenerator.Spawns[la].melee.PickRandom();
|
||||
if (SpawnGenerator.Spawns[la].range.Count > 0) randomRangedMonsterId = SpawnGenerator.Spawns[la].range.PickRandom();
|
||||
if (SpawnGenerator.Spawns[la].Melee.Count > 0) randomMeleeMonsterId = SpawnGenerator.Spawns[la].Melee.PickRandom();
|
||||
if (SpawnGenerator.Spawns[la].Range.Count > 0) randomRangedMonsterId = SpawnGenerator.Spawns[la].Range.PickRandom();
|
||||
SNOHandle meleeMonsterHandle = (randomMeleeMonsterId == -1 ? null : new SNOHandle(randomMeleeMonsterId));
|
||||
SNOHandle rangedMonsterHandle = (randomRangedMonsterId == -1 ? null : new SNOHandle(randomRangedMonsterId));
|
||||
if (rangedMonsterHandle == null) rangedMonsterHandle = meleeMonsterHandle;
|
||||
@ -2585,8 +2585,8 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
{
|
||||
int randomMeleeMonsterId = -1;
|
||||
int randomRangedMonsterId = -1;
|
||||
if (SpawnGenerator.Spawns[la].melee.Count > 0) randomMeleeMonsterId = SpawnGenerator.Spawns[la].melee.PickRandom();
|
||||
if (SpawnGenerator.Spawns[la].range.Count > 0) randomRangedMonsterId = SpawnGenerator.Spawns[la].range.PickRandom();
|
||||
if (SpawnGenerator.Spawns[la].Melee.Count > 0) randomMeleeMonsterId = SpawnGenerator.Spawns[la].Melee.PickRandom();
|
||||
if (SpawnGenerator.Spawns[la].Range.Count > 0) randomRangedMonsterId = SpawnGenerator.Spawns[la].Range.PickRandom();
|
||||
SNOHandle meleeMonsterHandle = (randomMeleeMonsterId == -1 ? null : new SNOHandle(randomMeleeMonsterId));
|
||||
SNOHandle rangedMonsterHandle = (randomRangedMonsterId == -1 ? null : new SNOHandle(randomRangedMonsterId));
|
||||
//int maxMobsInStack = (SpawnGenerator.IsMelee(la, randomMonsterId) ? 6 : (SpawnGenerator.IsDangerous(la, randomMonsterId) ? 1 : 3));
|
||||
@ -2617,7 +2617,7 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
||||
else //spawn champions
|
||||
#region champion spawn
|
||||
{
|
||||
SNOHandle championHandle = new SNOHandle(SpawnGenerator.Spawns[la].melee.PickRandom());
|
||||
SNOHandle championHandle = new SNOHandle(SpawnGenerator.Spawns[la].Melee.PickRandom());
|
||||
groupId = FastRandom.Instance.Next();
|
||||
for (int n = 0; n < 4; n++)
|
||||
{
|
||||
|
||||
@ -297,8 +297,7 @@ namespace DiIiS_NA.GameServer.GSSystem.MapSystem
|
||||
{
|
||||
int index = (int)marker.Type - 50; // LocationA has id 50...
|
||||
|
||||
if (GizmoSpawningLocations[index] == null)
|
||||
GizmoSpawningLocations[index] = new List<PRTransform>();
|
||||
GizmoSpawningLocations[index] ??= new List<PRTransform>();
|
||||
|
||||
marker.PRTransform.Vector3D += Position;
|
||||
GizmoSpawningLocations[index].Add(marker.PRTransform);
|
||||
@ -380,10 +379,7 @@ namespace DiIiS_NA.GameServer.GSSystem.MapSystem
|
||||
/// </summary>
|
||||
/// <param name="player">The player.</param>
|
||||
/// <returns><see cref="bool"/></returns>
|
||||
public bool IsRevealedToPlayer(Player player)
|
||||
{
|
||||
return player.RevealedObjects.ContainsKey(GlobalID);
|
||||
}
|
||||
public bool IsRevealedToPlayer(Player player) => player.RevealedObjects.ContainsKey(GlobalID);
|
||||
|
||||
/// <summary>
|
||||
/// Reveal the scene to given player.
|
||||
|
||||
@ -145,10 +145,9 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
return;
|
||||
}
|
||||
|
||||
if (Context != null)
|
||||
if (Context.User is Player player) //Hitpoints_On_Kill
|
||||
if (player.Attributes[GameAttributes.Hitpoints_On_Kill] > 0)
|
||||
player.AddHP(player.Attributes[GameAttributes.Hitpoints_On_Kill]);
|
||||
if (Context?.User is Player plr) //Hitpoints_On_Kill
|
||||
if (plr.Attributes[GameAttributes.Hitpoints_On_Kill] > 0)
|
||||
plr.AddHP(plr.Attributes[GameAttributes.Hitpoints_On_Kill]);
|
||||
|
||||
// HACK: add to hackish list thats used to defer deleting actor and filter it from powers targetting
|
||||
if (!(Target is Boss))
|
||||
@ -175,7 +174,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
|
||||
if (Target is Minion minionTarget)
|
||||
{
|
||||
if (minionTarget.Master != null && minionTarget.Master is Player player)
|
||||
if (minionTarget.Master is Player player)
|
||||
{
|
||||
player.Followers.Remove(minionTarget.GlobalID);
|
||||
player.FreeFollowerIndex(minionTarget.SNO);
|
||||
@ -198,8 +197,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
// send this death payload to buffs
|
||||
Target.World.BuffManager.SendTargetPayload(Target, this);
|
||||
|
||||
if (Context != null)
|
||||
if (Context.User != null)
|
||||
if (Context?.User != null)
|
||||
Target.World.BuffManager.SendTargetPayload(Context.User, this);
|
||||
|
||||
Target.World.BroadcastIfRevealed(plr => new PlayEffectMessage()
|
||||
@ -405,95 +403,95 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
|
||||
// Spawn Random item and give exp for each player in range
|
||||
List<Player> players = Target.GetPlayersInRange(100f);
|
||||
foreach (Player plr in players)
|
||||
foreach (Player rangedPlayer in players)
|
||||
{
|
||||
int grantedExp = 0;
|
||||
if (plr.Attributes[GameAttributes.Level] <= Target.Attributes[GameAttributes.Level])
|
||||
grantedExp = (int)(Player.LevelBorders[plr.Attributes[GameAttributes.Level]] /
|
||||
if (rangedPlayer.Attributes[GameAttributes.Level] <= Target.Attributes[GameAttributes.Level])
|
||||
grantedExp = (int)(Player.LevelBorders[rangedPlayer.Attributes[GameAttributes.Level]] /
|
||||
(40 * Target.Attributes[GameAttributes.Level] * 0.85f) *
|
||||
(Target is Monster monster1 ? Math.Min(monster1.HpMultiplier, 3f) : 1f));
|
||||
else
|
||||
grantedExp = (int)(Player.LevelBorders[plr.Attributes[GameAttributes.Level]] /
|
||||
grantedExp = (int)(Player.LevelBorders[rangedPlayer.Attributes[GameAttributes.Level]] /
|
||||
(40 * Target.Attributes[GameAttributes.Level] * 0.85f) * (1 -
|
||||
Math.Abs(plr.Attributes[GameAttributes.Level] - Target.Attributes[GameAttributes.Level]) /
|
||||
Math.Abs(rangedPlayer.Attributes[GameAttributes.Level] - Target.Attributes[GameAttributes.Level]) /
|
||||
20));
|
||||
|
||||
grantedExp = (int)(grantedExp * (plr.Attributes[GameAttributes.Experience_Bonus_Percent] + 1));
|
||||
grantedExp += (int)plr.Attributes[GameAttributes.Experience_Bonus];
|
||||
grantedExp = (int)(grantedExp * (rangedPlayer.Attributes[GameAttributes.Experience_Bonus_Percent] + 1));
|
||||
grantedExp += (int)rangedPlayer.Attributes[GameAttributes.Experience_Bonus];
|
||||
|
||||
|
||||
|
||||
if (LootAndExp)
|
||||
{
|
||||
grantedExp = (int)(grantedExp * plr.World.Game.XpModifier);
|
||||
grantedExp = (int)(grantedExp * rangedPlayer.World.Game.XpModifier);
|
||||
|
||||
float tempExp = grantedExp * GameServerConfig.Instance.RateExp;
|
||||
|
||||
plr.UpdateExp(Math.Max((int)tempExp, 1));
|
||||
var a = (int)plr.Attributes[GameAttributes.Experience_Bonus];
|
||||
var a1 = (int)plr.Attributes[GameAttributes.Experience_Bonus_Percent];
|
||||
rangedPlayer.UpdateExp(Math.Max((int)tempExp, 1));
|
||||
var a = (int)rangedPlayer.Attributes[GameAttributes.Experience_Bonus];
|
||||
var a1 = (int)rangedPlayer.Attributes[GameAttributes.Experience_Bonus_Percent];
|
||||
|
||||
plr.KilledMonstersTempCount++;
|
||||
rangedPlayer.KilledMonstersTempCount++;
|
||||
}
|
||||
|
||||
if (Target is Champion or Rare or Boss or Unique)
|
||||
{
|
||||
plr.KilledElitesTempCount++;
|
||||
rangedPlayer.KilledElitesTempCount++;
|
||||
}
|
||||
|
||||
//achievements here
|
||||
if (Target is Monster monster)
|
||||
{
|
||||
if (plr.Toon.Class == ToonClass.DemonHunter)
|
||||
if (rangedPlayer.Toon.Class == ToonClass.DemonHunter)
|
||||
{
|
||||
if (monster.MonsterType == (int)DiIiS_NA.Core.MPQ.FileFormats.Monster.MonsterType.Demon)
|
||||
plr.AddAchievementCounter(74987243307065, 1);
|
||||
rangedPlayer.AddAchievementCounter(74987243307065, 1);
|
||||
|
||||
if (PowerMath.Distance2D(plr.Position, monster.Position) >= 45f)
|
||||
plr.AddAchievementCounter(74987243307061, 1);
|
||||
if (PowerMath.Distance2D(rangedPlayer.Position, monster.Position) >= 45f)
|
||||
rangedPlayer.AddAchievementCounter(74987243307061, 1);
|
||||
|
||||
if (monster.Attributes[GameAttributes.Feared])
|
||||
plr.AddAchievementCounter(74987243307064, 1);
|
||||
rangedPlayer.AddAchievementCounter(74987243307064, 1);
|
||||
|
||||
if (Context.PowerSNO == 75301)
|
||||
{
|
||||
plr.SpikeTrapsKilled++;
|
||||
if (plr.SpikeTrapsKilled >= 15)
|
||||
plr.GrantAchievement(74987243307060);
|
||||
rangedPlayer.SpikeTrapsKilled++;
|
||||
if (rangedPlayer.SpikeTrapsKilled >= 15)
|
||||
rangedPlayer.GrantAchievement(74987243307060);
|
||||
|
||||
plr.AddTimedAction(5f, new Action<int>((q) => plr.SpikeTrapsKilled--));
|
||||
rangedPlayer.AddTimedAction(5f, (_) => rangedPlayer.SpikeTrapsKilled--);
|
||||
}
|
||||
}
|
||||
|
||||
if (plr.Toon.Class == ToonClass.Monk)
|
||||
if (rangedPlayer.Toon.Class == ToonClass.Monk)
|
||||
{
|
||||
if (plr.Attributes[GameAttributes.Resource_Cur, 3] <
|
||||
plr.Attributes[GameAttributes.Resource_Max_Total, 3])
|
||||
plr.AddAchievementCounter(74987243307550, 1);
|
||||
if (rangedPlayer.Attributes[GameAttributes.Resource_Cur, 3] <
|
||||
rangedPlayer.Attributes[GameAttributes.Resource_Max_Total, 3])
|
||||
rangedPlayer.AddAchievementCounter(74987243307550, 1);
|
||||
}
|
||||
|
||||
if (plr.Toon.Class == ToonClass.Wizard)
|
||||
if (rangedPlayer.Toon.Class == ToonClass.Wizard)
|
||||
{
|
||||
if (monster.Attributes[GameAttributes.Frozen])
|
||||
plr.AddAchievementCounter(74987243307585, 1);
|
||||
rangedPlayer.AddAchievementCounter(74987243307585, 1);
|
||||
}
|
||||
|
||||
if (plr.Toon.Class == ToonClass.WitchDoctor)
|
||||
if (rangedPlayer.Toon.Class == ToonClass.WitchDoctor)
|
||||
{
|
||||
if (Context.User.Attributes[GameAttributes.Team_Override] == 1)
|
||||
plr.AddAchievementCounter(74987243307564, 1);
|
||||
rangedPlayer.AddAchievementCounter(74987243307564, 1);
|
||||
}
|
||||
|
||||
switch (monster)
|
||||
{
|
||||
case Champion:
|
||||
plr.CheckKillMonsterCriteria(monster.SNO, 1);
|
||||
rangedPlayer.CheckKillMonsterCriteria(monster.SNO, 1);
|
||||
break;
|
||||
case Rare:
|
||||
plr.CheckKillMonsterCriteria(monster.SNO, 2);
|
||||
rangedPlayer.CheckKillMonsterCriteria(monster.SNO, 2);
|
||||
break;
|
||||
case Unique:
|
||||
plr.CheckKillMonsterCriteria(monster.SNO, 4);
|
||||
rangedPlayer.CheckKillMonsterCriteria(monster.SNO, 4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -503,26 +501,26 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
if (LoreRegistry.Lore.ContainsKey(Target.World.SNO) &&
|
||||
LoreRegistry.Lore[Target.World.SNO].chests_lore.ContainsKey(Target.SNO))
|
||||
foreach (int loreId in LoreRegistry.Lore[Target.World.SNO].chests_lore[Target.SNO])
|
||||
if (!plr.HasLore(loreId))
|
||||
if (!rangedPlayer.HasLore(loreId))
|
||||
{
|
||||
Target.World.DropItem(Target, null, ItemGenerator.CreateLore(plr, loreId));
|
||||
Target.World.DropItem(Target, null, ItemGenerator.CreateLore(rangedPlayer, loreId));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (plr.SkillSet.HasPassive(218191) && PowerMath.Distance2D(plr.Position, Target.Position) <=
|
||||
20f + plr.Attributes[GameAttributes.Gold_PickUp_Radius]) //GraveInjustice (WD)
|
||||
if (rangedPlayer.SkillSet.HasPassive(218191) && PowerMath.Distance2D(rangedPlayer.Position, Target.Position) <=
|
||||
20f + rangedPlayer.Attributes[GameAttributes.Gold_PickUp_Radius]) //GraveInjustice (WD)
|
||||
{
|
||||
plr.AddHP(plr.Attributes[GameAttributes.Hitpoints_Max_Total] / 100f);
|
||||
plr.GeneratePrimaryResource(plr.Attributes[GameAttributes.Resource_Max_Total, 0] / 100f);
|
||||
foreach (var cdBuff in plr.World.BuffManager.GetBuffs<CooldownBuff>(plr))
|
||||
rangedPlayer.AddHP(rangedPlayer.Attributes[GameAttributes.Hitpoints_Max_Total] / 100f);
|
||||
rangedPlayer.GeneratePrimaryResource(rangedPlayer.Attributes[GameAttributes.Resource_Max_Total, 0] / 100f);
|
||||
foreach (var cdBuff in rangedPlayer.World.BuffManager.GetBuffs<CooldownBuff>(rangedPlayer))
|
||||
cdBuff.Reduce(60);
|
||||
}
|
||||
|
||||
if (plr.SkillSet.HasPassive(357218) &&
|
||||
PowerMath.Distance2D(plr.Position, Target.Position) <= 15f) //Fervor (Crusader)
|
||||
if (rangedPlayer.SkillSet.HasPassive(357218) &&
|
||||
PowerMath.Distance2D(rangedPlayer.Position, Target.Position) <= 15f) //Fervor (Crusader)
|
||||
{
|
||||
plr.World.BuffManager.AddBuff(plr, plr, new FervorBuff());
|
||||
rangedPlayer.World.BuffManager.AddBuff(rangedPlayer, rangedPlayer, new FervorBuff());
|
||||
}
|
||||
|
||||
if (Target.World.BuffManager.HasBuff<Leech.Rune_E_Buff>(Target))
|
||||
@ -541,14 +539,14 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
if (Target.World.BuffManager.GetFirstBuff<CrusaderJudgment.JudgedDebuffRooted>(Target).conversion)
|
||||
if (FastRandom.Instance.Next() < 0.2f)
|
||||
{
|
||||
var avatar = new AvatarMelee(plr.World, Context, 0, 1f, Context.WaitSeconds(7f));
|
||||
var avatar = new AvatarMelee(rangedPlayer.World, Context, 0, 1f, Context.WaitSeconds(7f));
|
||||
avatar.Brain.DeActivate();
|
||||
avatar.Position = PowerContext.RandomDirection(plr.Position, 3f, 8f);
|
||||
avatar.Position = PowerContext.RandomDirection(rangedPlayer.Position, 3f, 8f);
|
||||
avatar.Attributes[GameAttributes.Untargetable] = true;
|
||||
|
||||
avatar.EnterWorld(avatar.Position);
|
||||
|
||||
Task.Delay(1000).ContinueWith(d =>
|
||||
Task.Delay(1000).ContinueWith(_ =>
|
||||
{
|
||||
(avatar as Minion).Brain.Activate();
|
||||
avatar.Attributes[GameAttributes.Untargetable] = false;
|
||||
@ -556,20 +554,20 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
});
|
||||
}
|
||||
|
||||
if (plr.SkillSet.HasPassive(208571) &&
|
||||
PowerMath.Distance2D(plr.Position, Target.Position) <=
|
||||
12f + plr.Attributes[GameAttributes.Gold_PickUp_Radius] &&
|
||||
if (rangedPlayer.SkillSet.HasPassive(208571) &&
|
||||
PowerMath.Distance2D(rangedPlayer.Position, Target.Position) <=
|
||||
12f + rangedPlayer.Attributes[GameAttributes.Gold_PickUp_Radius] &&
|
||||
FastRandom.Instance.Next(100) < 5) //CircleOfLife (WD)
|
||||
{
|
||||
var dog = new ZombieDog(plr.World, plr, 0);
|
||||
var dog = new ZombieDog(rangedPlayer.World, rangedPlayer, 0);
|
||||
dog.Brain.DeActivate();
|
||||
dog.Position = PowerContext.RandomDirection(plr.Position, 3f, 8f);
|
||||
dog.Position = PowerContext.RandomDirection(rangedPlayer.Position, 3f, 8f);
|
||||
dog.Attributes[GameAttributes.Untargetable] = true;
|
||||
dog.EnterWorld(dog.Position);
|
||||
dog.PlayActionAnimation(AnimationSno.zombiedog_summon_01);
|
||||
Context.DogsSummoned++;
|
||||
|
||||
Task.Delay(1000).ContinueWith(d =>
|
||||
Task.Delay(1000).ContinueWith(_ =>
|
||||
{
|
||||
dog.Brain.Activate();
|
||||
dog.Attributes[GameAttributes.Untargetable] = false;
|
||||
@ -578,19 +576,19 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
});
|
||||
}
|
||||
|
||||
if (plr.SkillSet.HasPassive(341344)) //Dominance (Wiz)
|
||||
if (rangedPlayer.SkillSet.HasPassive(341344)) //Dominance (Wiz)
|
||||
{
|
||||
plr.World.BuffManager.AddBuff(plr, plr, new DominanceBuff());
|
||||
rangedPlayer.World.BuffManager.AddBuff(rangedPlayer, rangedPlayer, new DominanceBuff());
|
||||
}
|
||||
|
||||
if (plr.SkillSet.HasPassive(296572)) //Rampage (Burb)
|
||||
if (rangedPlayer.SkillSet.HasPassive(296572)) //Rampage (Burb)
|
||||
{
|
||||
plr.World.BuffManager.AddBuff(plr, plr, new RampageBuff());
|
||||
rangedPlayer.World.BuffManager.AddBuff(rangedPlayer, rangedPlayer, new RampageBuff());
|
||||
}
|
||||
|
||||
if (Context != null)
|
||||
if (Context.DogsSummoned >= 3)
|
||||
plr.GrantAchievement(74987243307567);
|
||||
rangedPlayer.GrantAchievement(74987243307567);
|
||||
}
|
||||
|
||||
Logger.Trace(
|
||||
@ -640,13 +638,13 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
Target.World.Game.ActiveNephalemProgress +=
|
||||
GameServerConfig.Instance.NephalemRiftProgressMultiplier * (Target.Quality + 1);
|
||||
Player master = null;
|
||||
foreach (var plr in Target.World.Game.Players.Values)
|
||||
foreach (var plr3 in Target.World.Game.Players.Values)
|
||||
{
|
||||
if (plr.PlayerIndex == 0)
|
||||
master = plr;
|
||||
if (plr3.PlayerIndex == 0)
|
||||
master = plr3;
|
||||
if (GameServerConfig.Instance.NephalemRiftAutoFinish && Target.World.Monsters.Count(s => !s.Dead) <= GameServerConfig.Instance.NephalemRiftAutoFinishThreshold) Target.World.Game.ActiveNephalemProgress = 651;
|
||||
plr.InGameClient.SendMessage(new SimpleMessage(Opcodes.KillCounterRefresh));
|
||||
plr.InGameClient.SendMessage(new FloatDataMessage(Opcodes.DungeonFinderProgressMessage)
|
||||
plr3.InGameClient.SendMessage(new SimpleMessage(Opcodes.KillCounterRefresh));
|
||||
plr3.InGameClient.SendMessage(new FloatDataMessage(Opcodes.DungeonFinderProgressMessage)
|
||||
{
|
||||
Field0 = Target.World.Game.ActiveNephalemProgress
|
||||
});
|
||||
@ -655,7 +653,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
Target.World.Game.ActiveNephalemKilledMobs = true;
|
||||
if (Target.World.Game.NephalemGreater)
|
||||
{
|
||||
plr.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
plr3.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
{
|
||||
snoQuest = 0x00052654,
|
||||
snoLevelArea = 0x000466E2,
|
||||
@ -664,7 +662,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
Checked = 1,
|
||||
Counter = 1
|
||||
});
|
||||
plr.InGameClient.SendMessage(new QuestUpdateMessage()
|
||||
plr3.InGameClient.SendMessage(new QuestUpdateMessage()
|
||||
{
|
||||
snoQuest = 0x00052654,
|
||||
snoLevelArea = 0x000466E2,
|
||||
@ -675,7 +673,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
}
|
||||
else
|
||||
{
|
||||
plr.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
plr3.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
{
|
||||
snoQuest = 0x00052654,
|
||||
snoLevelArea = 0x000466E2,
|
||||
@ -684,7 +682,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
Checked = 1,
|
||||
Counter = 1
|
||||
});
|
||||
plr.InGameClient.SendMessage(new QuestUpdateMessage()
|
||||
plr3.InGameClient.SendMessage(new QuestUpdateMessage()
|
||||
{
|
||||
snoQuest = 0x00052654,
|
||||
snoLevelArea = 0x000466E2,
|
||||
@ -694,21 +692,21 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
});
|
||||
}
|
||||
|
||||
plr.InGameClient.SendMessage(new PlayMusicMessage(Opcodes.PlayMusicMessage)
|
||||
plr3.InGameClient.SendMessage(new PlayMusicMessage(Opcodes.PlayMusicMessage)
|
||||
{
|
||||
SNO = 0x0005BBD8
|
||||
});
|
||||
|
||||
plr.InGameClient.SendMessage(new DisplayGameTextMessage(Opcodes.DisplayGameChatTextMessage)
|
||||
plr3.InGameClient.SendMessage(new DisplayGameTextMessage(Opcodes.DisplayGameChatTextMessage)
|
||||
{ Message = "Messages:LR_BossSpawned" });
|
||||
plr.InGameClient.SendMessage(new DisplayGameTextMessage(Opcodes.DisplayGameTextMessage)
|
||||
plr3.InGameClient.SendMessage(new DisplayGameTextMessage(Opcodes.DisplayGameTextMessage)
|
||||
{ Message = "Messages:LR_BossSpawned" });
|
||||
|
||||
StartConversation(Target.World, 366542);
|
||||
|
||||
if (plr.PlayerIndex == 0)
|
||||
if (plr3.PlayerIndex == 0)
|
||||
{
|
||||
plr.SpawnNephalemBoss(Target.World);
|
||||
plr3.SpawnNephalemBoss(Target.World);
|
||||
}
|
||||
|
||||
}
|
||||
@ -733,13 +731,13 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
if (Target.Attributes[GameAttributes.Is_Loot_Run_Boss])
|
||||
{
|
||||
Target.World.Game.ActiveNephalemKilledBoss = true;
|
||||
foreach (var plr in Target.World.Game.Players.Values)
|
||||
foreach (var plr3 in Target.World.Game.Players.Values)
|
||||
{
|
||||
//Enable banner /advocaite
|
||||
plr.Attributes[GameAttributes.Banner_Usable] = true;
|
||||
plr3.Attributes[GameAttributes.Banner_Usable] = true;
|
||||
if (Target.World.Game.NephalemGreater)
|
||||
{
|
||||
plr.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
plr3.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
{
|
||||
snoQuest = 0x00052654,
|
||||
snoLevelArea = 0x000466E2,
|
||||
@ -748,7 +746,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
Checked = 1,
|
||||
Counter = 1
|
||||
});
|
||||
plr.InGameClient.SendMessage(new QuestUpdateMessage()
|
||||
plr3.InGameClient.SendMessage(new QuestUpdateMessage()
|
||||
{
|
||||
snoQuest = 0x00052654,
|
||||
snoLevelArea = 0x000466E2,
|
||||
@ -757,35 +755,35 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
Failed = false
|
||||
});
|
||||
|
||||
plr.Attributes[GameAttributes.Jewel_Upgrades_Max] = 3;
|
||||
plr.Attributes[GameAttributes.Jewel_Upgrades_Used] = 0;
|
||||
plr.Attributes[GameAttributes.Jewel_Upgrades_Bonus] = 0;
|
||||
if (plr.Attributes[GameAttributes.Tiered_Loot_Run_Death_Count] == 0)
|
||||
plr.Attributes[GameAttributes.Jewel_Upgrades_Bonus]++;
|
||||
if (plr.InGameClient.Game.NephalemBuff)
|
||||
plr.Attributes[GameAttributes.Jewel_Upgrades_Bonus]++;
|
||||
plr3.Attributes[GameAttributes.Jewel_Upgrades_Max] = 3;
|
||||
plr3.Attributes[GameAttributes.Jewel_Upgrades_Used] = 0;
|
||||
plr3.Attributes[GameAttributes.Jewel_Upgrades_Bonus] = 0;
|
||||
if (plr3.Attributes[GameAttributes.Tiered_Loot_Run_Death_Count] == 0)
|
||||
plr3.Attributes[GameAttributes.Jewel_Upgrades_Bonus]++;
|
||||
if (plr3.InGameClient.Game.NephalemBuff)
|
||||
plr3.Attributes[GameAttributes.Jewel_Upgrades_Bonus]++;
|
||||
|
||||
plr.InGameClient.Game.LastTieredRiftTimeout =
|
||||
(int)((plr.InGameClient.Game.TiredRiftTimer.TimeoutTick -
|
||||
plr.InGameClient.Game.TickCounter) / plr.InGameClient.Game.TickRate /
|
||||
plr.InGameClient.Game.UpdateFrequency * 10f);
|
||||
plr.InGameClient.Game.TiredRiftTimer.Stop();
|
||||
plr.InGameClient.Game.TiredRiftTimer = null;
|
||||
plr3.InGameClient.Game.LastTieredRiftTimeout =
|
||||
(int)((plr3.InGameClient.Game.TiredRiftTimer.TimeoutTick -
|
||||
plr3.InGameClient.Game.TickCounter) / plr3.InGameClient.Game.TickRate /
|
||||
plr3.InGameClient.Game.UpdateFrequency * 10f);
|
||||
plr3.InGameClient.Game.TiredRiftTimer.Stop();
|
||||
plr3.InGameClient.Game.TiredRiftTimer = null;
|
||||
|
||||
plr.InGameClient.SendMessage(new DisplayGameTextMessage(Opcodes.DisplayGameTextMessage)
|
||||
plr3.InGameClient.SendMessage(new DisplayGameTextMessage(Opcodes.DisplayGameTextMessage)
|
||||
{
|
||||
Message = "Messages:TieredRift_Success",
|
||||
Param1 = plr.InGameClient.Game.LastTieredRiftTimeout / 60, //Minutes
|
||||
Param2 = plr.InGameClient.Game.LastTieredRiftTimeout % 60 //Seconds
|
||||
Param1 = plr3.InGameClient.Game.LastTieredRiftTimeout / 60, //Minutes
|
||||
Param2 = plr3.InGameClient.Game.LastTieredRiftTimeout % 60 //Seconds
|
||||
});
|
||||
plr.InGameClient.SendMessage(new SNODataMessage(Opcodes.TimedEventResetMessage)
|
||||
plr3.InGameClient.SendMessage(new SNODataMessage(Opcodes.TimedEventResetMessage)
|
||||
{
|
||||
Field0 = 0x0005D6EA
|
||||
});
|
||||
|
||||
Target.World.SpawnMonster(ActorSno._p1_lr_tieredrift_nephalem, Target.Position);
|
||||
|
||||
Target.World.SpawnRandomUniqueGem(Target, plr);
|
||||
Target.World.SpawnRandomUniqueGem(Target, plr3);
|
||||
|
||||
TagMap newTagMap = new TagMap();
|
||||
newTagMap.Add(new TagKeySNO(526850), new TagMapEntry(526850, 332336, 0)); //World
|
||||
@ -799,7 +797,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
}
|
||||
else
|
||||
{
|
||||
plr.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
plr3.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
{
|
||||
snoQuest = 0x00052654,
|
||||
snoLevelArea = 0x000466E2,
|
||||
@ -808,7 +806,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
Checked = 1,
|
||||
Counter = 1
|
||||
});
|
||||
plr.InGameClient.SendMessage(new QuestUpdateMessage()
|
||||
plr3.InGameClient.SendMessage(new QuestUpdateMessage()
|
||||
{
|
||||
snoQuest = 0x00052654,
|
||||
snoLevelArea = 0x000466E2,
|
||||
@ -818,7 +816,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
});
|
||||
}
|
||||
|
||||
plr.InGameClient.SendMessage(new WorldSyncedDataMessage()
|
||||
plr3.InGameClient.SendMessage(new WorldSyncedDataMessage()
|
||||
{
|
||||
WorldID = Target.World.GlobalID,
|
||||
SyncedData = new WorldSyncedData()
|
||||
@ -839,13 +837,13 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
orek.Attributes[GameAttributes.Conversation_Icon, 3] = 2;
|
||||
orek.Attributes.BroadcastChangedIfRevealed();
|
||||
// Unique spawn
|
||||
Target.World.SpawnBloodShards(Target, plr, RandomHelper.Next(10, 30));
|
||||
Target.World.SpawnGold(Target, plr);
|
||||
Target.World.SpawnGold(Target, plr);
|
||||
Target.World.SpawnGold(Target, plr);
|
||||
plr.Toon.GameAccount.BigPortalKey++;
|
||||
Target.World.SpawnBloodShards(Target, plr3, RandomHelper.Next(10, 30));
|
||||
Target.World.SpawnGold(Target, plr3);
|
||||
Target.World.SpawnGold(Target, plr3);
|
||||
Target.World.SpawnGold(Target, plr3);
|
||||
plr3.Toon.GameAccount.BigPortalKey++;
|
||||
Target.World.Game.ActiveNephalemProgress = 0f;
|
||||
plr.InGameClient.BnetClient.SendServerWhisper(
|
||||
plr3.InGameClient.BnetClient.SendServerWhisper(
|
||||
"You have completed the Nephalem Rift! You have been rewarded with a Big Portal Key and 10-30 Blood Shards!");
|
||||
}
|
||||
}
|
||||
@ -913,21 +911,21 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
}
|
||||
|
||||
//loot spawning
|
||||
foreach (var plr in Target.GetPlayersInRange(100))
|
||||
foreach (var lootSpawnPlayer in Target.GetPlayersInRange(100))
|
||||
{
|
||||
if (FastRandom.Instance.NextDouble() < 0.45)
|
||||
Target.World.SpawnGold(Target, plr);
|
||||
Target.World.SpawnGold(Target, lootSpawnPlayer);
|
||||
if (FastRandom.Instance.NextDouble() < 0.06)
|
||||
Target.World.SpawnRandomCraftItem(Target, plr);
|
||||
Target.World.SpawnRandomCraftItem(Target, lootSpawnPlayer);
|
||||
if (FastRandom.Instance.NextDouble() < 0.04)
|
||||
Target.World.SpawnRandomGem(Target, plr);
|
||||
Target.World.SpawnRandomGem(Target, lootSpawnPlayer);
|
||||
if (FastRandom.Instance.NextDouble() < 0.15)
|
||||
Target.World.SpawnRandomPotion(Target, plr);
|
||||
Target.World.SpawnRandomPotion(Target, lootSpawnPlayer);
|
||||
if (Target.World.Game.Difficulty > 1)
|
||||
if (FastRandom.Instance.NextDouble() < 0.15)
|
||||
Target.World.SpawnItem(Target, plr, 2087837753);
|
||||
Target.World.SpawnItem(Target, lootSpawnPlayer, 2087837753);
|
||||
if (FastRandom.Instance.NextDouble() < 0.04)
|
||||
Target.World.SpawnRandomGem(Target, plr);
|
||||
Target.World.SpawnRandomGem(Target, lootSpawnPlayer);
|
||||
//Logger.Debug("seed: {0}", seed);
|
||||
var dropRates = Target.World.Game.IsSeasoned
|
||||
? LootManager.GetSeasonalDropRates((int)Target.Quality,
|
||||
@ -939,7 +937,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
{
|
||||
// if seed is less than the drop rate, drop the item
|
||||
if (seed < rate * (1f
|
||||
+ plr.Attributes[GameAttributes.Magic_Find])
|
||||
+ lootSpawnPlayer.Attributes[GameAttributes.Magic_Find])
|
||||
* GameServerConfig.Instance.RateDrop)
|
||||
{
|
||||
//Logger.Debug("rate: {0}", rate);
|
||||
@ -947,22 +945,22 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
? LootManager.GetSeasonalLootQuality((int)Target.Quality,
|
||||
Target.World.Game.Difficulty)
|
||||
: LootManager.GetLootQuality((int)Target.Quality, Target.World.Game.Difficulty);
|
||||
Target.World.SpawnRandomEquip(Target, plr, lootQuality);
|
||||
Target.World.SpawnRandomEquip(Target, lootSpawnPlayer, lootQuality);
|
||||
if (Target is Goblin)
|
||||
Target.World.SpawnRandomGem(Target, plr);
|
||||
Target.World.SpawnRandomGem(Target, lootSpawnPlayer);
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
if ((int)Target.Quality >= 4 && plr.AdditionalLootItems > 0)
|
||||
for (int d = 0; d < plr.AdditionalLootItems; d++)
|
||||
if ((int)Target.Quality >= 4 && lootSpawnPlayer.AdditionalLootItems > 0)
|
||||
for (int d = 0; d < lootSpawnPlayer.AdditionalLootItems; d++)
|
||||
{
|
||||
var lootQuality = Target.World.Game.IsHardcore
|
||||
? LootManager.GetSeasonalLootQuality((int)Target.Quality,
|
||||
Target.World.Game.Difficulty)
|
||||
: LootManager.GetLootQuality((int)Target.Quality, Target.World.Game.Difficulty);
|
||||
Target.World.SpawnRandomEquip(Target, plr, lootQuality);
|
||||
Target.World.SpawnRandomEquip(Target, lootSpawnPlayer, lootQuality);
|
||||
}
|
||||
|
||||
if (Target is Champion or Rare or Unique or Boss)
|
||||
@ -970,7 +968,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
//if (FastRandom.Instance.NextDouble() < LootManager.GetEssenceDropChance(this.Target.World.Game.Difficulty))
|
||||
// this.Target.World.SpawnEssence(this.Target, plr);
|
||||
if (Target.World.Game.IsSeasoned)
|
||||
Target.World.SpawnBloodShards(Target, plr);
|
||||
Target.World.SpawnBloodShards(Target, lootSpawnPlayer);
|
||||
}
|
||||
|
||||
if (Target.World.Game.IsSeasoned)
|
||||
@ -978,16 +976,16 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
switch (Target.SNO)
|
||||
{
|
||||
case ActorSno._despair: //Rakanot
|
||||
plr.GrantCriteria(74987254022737);
|
||||
lootSpawnPlayer.GrantCriteria(74987254022737);
|
||||
break;
|
||||
case ActorSno._skeletonking: //Skillet King
|
||||
plr.GrantCriteria(74987252582955);
|
||||
lootSpawnPlayer.GrantCriteria(74987252582955);
|
||||
break;
|
||||
case ActorSno._siegebreakerdemon: //Siegebreaker - Make your choice
|
||||
plr.GrantCriteria(74987246511881);
|
||||
lootSpawnPlayer.GrantCriteria(74987246511881);
|
||||
break;
|
||||
case ActorSno._x1_adria_boss: //Adria - I become a star
|
||||
plr.GrantCriteria(74987252384014);
|
||||
lootSpawnPlayer.GrantCriteria(74987252384014);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -996,26 +994,26 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
{
|
||||
if (Target.SNO == ActorSno._lacunifemale_c_unique) //Chiltara
|
||||
if ((float)FastRandom.Instance.NextDouble() < 0.5f)
|
||||
Target.World.SpawnItem(Target, plr, -799974399);
|
||||
Target.World.SpawnItem(Target, lootSpawnPlayer, -799974399);
|
||||
if (Target.SNO == ActorSno._bigred_izual) //Izual
|
||||
if ((float)FastRandom.Instance.NextDouble() < 0.2f)
|
||||
{
|
||||
switch (Target.World.Game.Difficulty)
|
||||
{
|
||||
case 0:
|
||||
Target.World.SpawnItem(Target, plr, -1463195022);
|
||||
Target.World.SpawnItem(Target, lootSpawnPlayer, -1463195022);
|
||||
break;
|
||||
case 1:
|
||||
Target.World.SpawnItem(Target, plr, 645585264);
|
||||
Target.World.SpawnItem(Target, lootSpawnPlayer, 645585264);
|
||||
break;
|
||||
case 2:
|
||||
Target.World.SpawnItem(Target, plr, -501637898);
|
||||
Target.World.SpawnItem(Target, lootSpawnPlayer, -501637898);
|
||||
break;
|
||||
case 3:
|
||||
Target.World.SpawnItem(Target, plr, 253048194);
|
||||
Target.World.SpawnItem(Target, lootSpawnPlayer, 253048194);
|
||||
break;
|
||||
default:
|
||||
Target.World.SpawnItem(Target, plr, -1463195022);
|
||||
Target.World.SpawnItem(Target, lootSpawnPlayer, -1463195022);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1023,25 +1021,25 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
switch (Target.SNO)
|
||||
{
|
||||
case ActorSno._graverobber_a_ghost_unique_03:
|
||||
plr.GrantCriteria(74987243307212);
|
||||
lootSpawnPlayer.GrantCriteria(74987243307212);
|
||||
break;
|
||||
case ActorSno._gravedigger_b_ghost_unique_01:
|
||||
plr.GrantCriteria(74987243309859);
|
||||
lootSpawnPlayer.GrantCriteria(74987243309859);
|
||||
break;
|
||||
case ActorSno._graverobber_a_ghost_unique_01:
|
||||
plr.GrantCriteria(74987243309860);
|
||||
lootSpawnPlayer.GrantCriteria(74987243309860);
|
||||
break;
|
||||
case ActorSno._graverobber_a_ghost_unique_02:
|
||||
plr.GrantCriteria(74987243309861);
|
||||
lootSpawnPlayer.GrantCriteria(74987243309861);
|
||||
break;
|
||||
case ActorSno._ghost_a_unique_01:
|
||||
plr.GrantCriteria(74987243309862);
|
||||
lootSpawnPlayer.GrantCriteria(74987243309862);
|
||||
break;
|
||||
case ActorSno._ghost_d_unique01:
|
||||
plr.GrantCriteria(74987243309863);
|
||||
lootSpawnPlayer.GrantCriteria(74987243309863);
|
||||
break;
|
||||
case ActorSno._ghost_d_unique_01:
|
||||
plr.GrantCriteria(74987243309864);
|
||||
lootSpawnPlayer.GrantCriteria(74987243309864);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1073,103 +1071,90 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
|
||||
if (Target is not Boss) return;
|
||||
|
||||
foreach (Player plr in players)
|
||||
foreach (Player rangedPlayer in players)
|
||||
switch (Target.SNO)
|
||||
{
|
||||
case ActorSno._skeletonking: //Leoric
|
||||
if (Context.PowerSNO == 93885) //weapon throw
|
||||
plr.GrantAchievement(74987243307050);
|
||||
if (isCoop) plr.GrantAchievement(74987252301189);
|
||||
if (isHardcore) plr.GrantAchievement(74987243307489);
|
||||
else plr.GrantAchievement(74987249381288);
|
||||
rangedPlayer.GrantAchievement(74987243307050);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987252301189);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987243307489 : (ulong)74987249381288);
|
||||
break;
|
||||
case ActorSno._butcher: //Butcher
|
||||
if (Context.PowerSNO == 93885) //weapon throw
|
||||
plr.GrantAchievement(74987243307050);
|
||||
rangedPlayer.GrantAchievement(74987243307050);
|
||||
if (Context.PowerSNO == 71548) //spectral blade
|
||||
plr.GrantCriteria(74987243307946);
|
||||
if (isCoop) plr.GrantAchievement(74987252696819);
|
||||
if (isHardcore) plr.GrantAchievement(74987254551339);
|
||||
else plr.GrantAchievement(74987258164419);
|
||||
plr.SetProgress(1, Target.World.Game.Difficulty);
|
||||
rangedPlayer.GrantCriteria(74987243307946);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987252696819);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987254551339 : (ulong)74987258164419);
|
||||
rangedPlayer.SetProgress(1, Target.World.Game.Difficulty);
|
||||
break;
|
||||
case ActorSno._maghda: //Maghda
|
||||
if (Context.PowerSNO == 93885) //weapon throw
|
||||
plr.GrantAchievement(74987243307050);
|
||||
if (isCoop) plr.GrantAchievement(74987255855515);
|
||||
if (isHardcore) plr.GrantAchievement(74987243307507);
|
||||
else plr.GrantAchievement(74987246434969);
|
||||
rangedPlayer.GrantAchievement(74987243307050);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987255855515);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987243307507 : (ulong)74987246434969);
|
||||
break;
|
||||
case ActorSno._zoltunkulle: //Zoltun Kulle
|
||||
if (isCoop) plr.GrantAchievement(74987246137208);
|
||||
if (isHardcore) plr.GrantAchievement(74987243307509);
|
||||
else plr.GrantAchievement(74987252195665);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987246137208);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987243307509 : (ulong)74987252195665);
|
||||
break;
|
||||
case ActorSno._belial: //Belial (big)
|
||||
if (Context.PowerSNO == 93885) //weapon throw
|
||||
plr.GrantAchievement(74987243307050);
|
||||
rangedPlayer.GrantAchievement(74987243307050);
|
||||
if (Context.PowerSNO == 71548) //spectral blade
|
||||
plr.GrantCriteria(74987243310916);
|
||||
if (isCoop) plr.GrantAchievement(74987256826382);
|
||||
if (isHardcore) plr.GrantAchievement(74987244906887);
|
||||
else plr.GrantAchievement(74987244645044);
|
||||
plr.SetProgress(2, Target.World.Game.Difficulty);
|
||||
rangedPlayer.GrantCriteria(74987243310916);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987256826382);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987244906887 : (ulong)74987244645044);
|
||||
rangedPlayer.SetProgress(2, Target.World.Game.Difficulty);
|
||||
break;
|
||||
case ActorSno._gluttony: //Gluttony
|
||||
if (isCoop) plr.GrantAchievement(74987249112946);
|
||||
if (isHardcore) plr.GrantAchievement(74987243307519);
|
||||
else plr.GrantAchievement(74987259418615);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987249112946);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987243307519 : (ulong)74987259418615);
|
||||
break;
|
||||
case ActorSno._siegebreakerdemon: //Siegebreaker
|
||||
if (Context.PowerSNO == 93885) //weapon throw
|
||||
plr.GrantAchievement(74987243307050);
|
||||
if (isCoop) plr.GrantAchievement(74987253664242);
|
||||
if (isHardcore) plr.GrantAchievement(74987243307521);
|
||||
else plr.GrantAchievement(74987248255991);
|
||||
rangedPlayer.GrantAchievement(74987243307050);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987253664242);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987243307521 : (ulong)74987248255991);
|
||||
break;
|
||||
case ActorSno._mistressofpain: //Cydaea
|
||||
if (Context.PowerSNO == 93885) //weapon throw
|
||||
plr.GrantAchievement(74987243307050);
|
||||
if (isCoop) plr.GrantAchievement(74987257890442);
|
||||
if (isHardcore) plr.GrantAchievement(74987243307523);
|
||||
else plr.GrantAchievement(74987254675042);
|
||||
rangedPlayer.GrantAchievement(74987243307050);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987257890442);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987243307523 : (ulong)74987254675042);
|
||||
break;
|
||||
case ActorSno._azmodan: //Azmodan
|
||||
if (Context.PowerSNO == 93885) //weapon throw
|
||||
plr.GrantAchievement(74987243307050);
|
||||
rangedPlayer.GrantAchievement(74987243307050);
|
||||
if (Context.PowerSNO == 71548) //spectral blade
|
||||
plr.GrantCriteria(74987243310915);
|
||||
if (isCoop) plr.GrantAchievement(74987247100576);
|
||||
if (isHardcore) plr.GrantAchievement(74987251893684);
|
||||
else plr.GrantAchievement(74987247855713);
|
||||
plr.SetProgress(3, Target.World.Game.Difficulty);
|
||||
rangedPlayer.GrantCriteria(74987243310915);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987247100576);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987251893684 : (ulong)74987247855713);
|
||||
rangedPlayer.SetProgress(3, Target.World.Game.Difficulty);
|
||||
break;
|
||||
case ActorSno._terrordemon_a_unique_1000monster: //Iskatu
|
||||
if (isCoop) plr.GrantAchievement(74987255392558);
|
||||
if (isHardcore) plr.GrantAchievement(74987248632930);
|
||||
else plr.GrantAchievement(74987246017001);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987255392558);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987248632930 : (ulong)74987246017001);
|
||||
break;
|
||||
case ActorSno._despair: //Rakanoth
|
||||
if (Context.PowerSNO == 93885) //weapon throw
|
||||
plr.GrantAchievement(74987243307050);
|
||||
if (isCoop) plr.GrantAchievement(74987248781143);
|
||||
if (isHardcore) plr.GrantAchievement(74987243307533);
|
||||
else plr.GrantAchievement(74987256508058);
|
||||
rangedPlayer.GrantAchievement(74987243307050);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987248781143);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987243307533 : (ulong)74987256508058);
|
||||
break;
|
||||
case ActorSno._bigred_izual: //Izual
|
||||
if (isCoop) plr.GrantAchievement(74987254969009);
|
||||
if (isHardcore) plr.GrantAchievement(74987247989681);
|
||||
else plr.GrantAchievement(74987244988685);
|
||||
if (isSeasoned) plr.GrantCriteria(74987249642121);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987254969009);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987247989681 : (ulong)74987244988685);
|
||||
if (isSeasoned) rangedPlayer.GrantCriteria(74987249642121);
|
||||
break;
|
||||
case ActorSno._diablo: //Diablo
|
||||
if (Context.PowerSNO == 93885) //weapon throw
|
||||
plr.GrantAchievement(74987243307050);
|
||||
if (isCoop) plr.GrantAchievement(74987250386944);
|
||||
if (isHardcore) plr.GrantAchievement(74987250070969);
|
||||
else plr.GrantAchievement(74987248188984);
|
||||
plr.SetProgress(4, Target.World.Game.Difficulty);
|
||||
if (isSeasoned) plr.GrantCriteria(74987250915380);
|
||||
rangedPlayer.GrantAchievement(74987243307050);
|
||||
if (isCoop) rangedPlayer.GrantAchievement(74987250386944);
|
||||
rangedPlayer.GrantAchievement(isHardcore ? (ulong)74987250070969 : (ulong)74987248188984);
|
||||
rangedPlayer.SetProgress(4, Target.World.Game.Difficulty);
|
||||
if (isSeasoned) rangedPlayer.GrantCriteria(74987250915380);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -1237,7 +1222,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
player.Inventory.DecreaseDurability(0.1f);
|
||||
if (player.World.Game.IsHardcore)
|
||||
{
|
||||
player.AddTimedAction(3f, new Action<int>((q) => player.Revive(player.CheckPointPosition)));
|
||||
player.AddTimedAction(3f, (_) => player.Revive(player.CheckPointPosition));
|
||||
var toon = player.Toon.DBToon;
|
||||
toon.Deaths++;
|
||||
player.World.Game.GameDbSession.SessionUpdate(toon);
|
||||
@ -1289,20 +1274,18 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Payloads
|
||||
return AnimationSno._NONE;
|
||||
}
|
||||
|
||||
private static TagKeyInt GetTagForSpecialDeath(int specialDeathType)
|
||||
private static TagKeyInt GetTagForSpecialDeath(int specialDeathType) =>
|
||||
specialDeathType switch
|
||||
{
|
||||
switch (specialDeathType)
|
||||
{
|
||||
default: return null;
|
||||
case 1: return AnimationSetKeys.DeathDisintegration;
|
||||
case 2: return AnimationSetKeys.DeathPulverise;
|
||||
case 3: return AnimationSetKeys.DeathPlague;
|
||||
case 4: return AnimationSetKeys.DeathDismember;
|
||||
case 5: return AnimationSetKeys.DeathDecap;
|
||||
case 6: return AnimationSetKeys.DeathAcid;
|
||||
case 7: return AnimationSetKeys.DeathLava; // haven't seen lava used, but there's no other place for it
|
||||
case 8: return AnimationSetKeys.DeathSpirit;
|
||||
}
|
||||
}
|
||||
1 => AnimationSetKeys.DeathDisintegration,
|
||||
2 => AnimationSetKeys.DeathPulverise,
|
||||
3 => AnimationSetKeys.DeathPlague,
|
||||
4 => AnimationSetKeys.DeathDismember,
|
||||
5 => AnimationSetKeys.DeathDecap,
|
||||
6 => AnimationSetKeys.DeathAcid,
|
||||
7 => AnimationSetKeys.DeathLava, // haven't seen lava used, but there's no other place for it
|
||||
8 => AnimationSetKeys.DeathSpirit,
|
||||
_ => null
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
user.block.title