Merge pull request #42 from DeKaN/extract-actor-sno
Extract Actor SNO into enum
This commit is contained in:
commit
662dcde210
File diff suppressed because it is too large
Load Diff
@ -90,7 +90,7 @@ namespace DiIiS_NA.GameServer.CommandManager
|
||||
player.Position.Y + (float)RandomHelper.NextDouble() * 20f,
|
||||
player.Position.Z);
|
||||
|
||||
var monster = player.World.SpawnMonster(actorSNO, position);
|
||||
var monster = player.World.SpawnMonster((ActorSno)actorSNO, position);
|
||||
|
||||
}
|
||||
return string.Format("Spawned {0} mobs with ActorSNO: {1}", amount, actorSNO);
|
||||
@ -889,7 +889,7 @@ namespace DiIiS_NA.GameServer.CommandManager
|
||||
var matches = invokerClient.InGameClient.Player.World.StartingPoints;
|
||||
|
||||
return matches.Aggregate(matches.Count >= 1 ? "Starting Points:\n" : "No match found.",
|
||||
(current, match) => current + string.Format("[{0}] {1} - {2}\n", match.GlobalID.ToString("D6"), match.ActorSNO.Name, match.TargetId));
|
||||
(current, match) => current + string.Format("[{0}] {1} - {2}\n", match.GlobalID.ToString("D6"), match.Name, match.TargetId));
|
||||
}
|
||||
|
||||
[Command("weather", "Allows you to search for a Weather.\nUsage: lookup weather <pattern>")]
|
||||
|
@ -325,7 +325,7 @@ namespace DiIiS_NA.GameServer.Core
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Error("Can't find slot in backpack to add item {0}", item.ActorSNO);
|
||||
Logger.Error("Can't find slot in backpack to add item {0}", item.SNO);
|
||||
if (_owner is Player)
|
||||
_owner.World.DropItem((_owner as Player), item);
|
||||
return false;
|
||||
@ -342,7 +342,7 @@ namespace DiIiS_NA.GameServer.Core
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Error("Can't find slot in backpack to add item {0}", item.ActorSNO);
|
||||
Logger.Error("Can't find slot in backpack to add item {0}", item.SNO);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
21218
src/DiIiS-NA/D3-GameServer/Core/Types/SNO/ActorSno.cs
Normal file
21218
src/DiIiS-NA/D3-GameServer/Core/Types/SNO/ActorSno.cs
Normal file
File diff suppressed because it is too large
Load Diff
@ -8,6 +8,7 @@ using System.Linq;
|
||||
using DiIiS_NA.Core.Helpers.Math;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.Math;
|
||||
//Blizzless Project 2022
|
||||
@ -128,11 +129,12 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
|
||||
if (_powerDelay.TimedOut)
|
||||
{
|
||||
List<Actor> targets = (this.Body as Minion).Master.GetObjectsInRange<Monster>(40f).Where(m => !m.Dead &&
|
||||
m.Visible &&
|
||||
!m.ActorSNO.Name.ToLower().Contains("spawner") &&
|
||||
!m.ActorSNO.Name.ToLower().Contains("_vo") &&
|
||||
!m.ActorSNO.Name.ToLower().Contains("voiceo")).OrderBy(m => PowerMath.Distance2D(m.Position, this.Body.Position)).Cast<Actor>().ToList();
|
||||
List<Actor> targets = (this.Body as Minion).Master
|
||||
.GetObjectsInRange<Monster>(40f)
|
||||
.Where(m => !m.Dead && m.Visible && m.SNO.IsTargetable())
|
||||
.OrderBy(m => PowerMath.Distance2D(m.Position, this.Body.Position))
|
||||
.Cast<Actor>()
|
||||
.ToList();
|
||||
if (this.Body.World.Game.PvP)
|
||||
targets = (this.Body as Minion).Master.GetObjectsInRange<Player>(30f).Where(p => p.GlobalID != (this.Body as Minion).Master.GlobalID && p.Attributes[GameAttribute.TeamID] != (this.Body as Minion).Master.Attributes[GameAttribute.TeamID]).Cast<Actor>().ToList();
|
||||
if (this.Body.World.IsPvP)
|
||||
@ -211,7 +213,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
{
|
||||
if (!_warnedNoPowers && this.PresetPowers.Count == 0)
|
||||
{
|
||||
Logger.Debug("Minion \"{0}\" has no usable powers. ", this.Body.ActorSNO.Name);
|
||||
Logger.Debug("Minion \"{0}\" has no usable powers. ", this.Body.Name);
|
||||
_warnedNoPowers = true;
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@ using System.Linq;
|
||||
using DiIiS_NA.Core.Helpers.Math;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -85,9 +86,9 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
|
||||
public override void Think(int tickCounter)
|
||||
{
|
||||
if (this.Body.ActorSNO.Id == 255623 ||
|
||||
this.Body.ActorSNO.Id == 210120 ||
|
||||
this.Body.ActorSNO.Id == 208561)
|
||||
if (this.Body.SNO == ActorSno._uber_siegebreakerdemon ||
|
||||
this.Body.SNO == ActorSno._a4dun_garden_corruption_monster ||
|
||||
this.Body.SNO == ActorSno._a4dun_garden_hellportal_pillar)
|
||||
return;
|
||||
//if(AttackedBy != null && TimeoutAttacked == null)
|
||||
// TimeoutAttacked = new SecondsTickTimer(this.Body.World.Game, 3.0f);
|
||||
@ -97,8 +98,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
// TimeoutAttacked = null;
|
||||
// AttackedBy = null;
|
||||
// }
|
||||
if (this.Body.ActorSNO.Id == 114527 //BelialVoiceover
|
||||
)
|
||||
if (this.Body.SNO == ActorSno._belialvoiceover) //BelialVoiceover
|
||||
return;
|
||||
if (this.Body.Hidden == true)
|
||||
return;
|
||||
@ -128,8 +128,8 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
this.Body.Attributes[GameAttribute.Blind] ||
|
||||
this.Body.Attributes[GameAttribute.Webbed] ||
|
||||
this.Body.Disable ||
|
||||
this.Body.World.BuffManager.GetFirstBuff<PowerSystem.Implementations.KnockbackBuff>(this.Body) != null ||
|
||||
this.Body.World.BuffManager.GetFirstBuff<PowerSystem.Implementations.SummonedBuff>(this.Body) != null)
|
||||
this.Body.World.BuffManager.GetFirstBuff<KnockbackBuff>(this.Body) != null ||
|
||||
this.Body.World.BuffManager.GetFirstBuff<SummonedBuff>(this.Body) != null)
|
||||
{
|
||||
if (this.CurrentAction != null)
|
||||
{
|
||||
@ -195,9 +195,9 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
.ToList();
|
||||
else
|
||||
targets = this.Body.GetActorsInRange(50f)
|
||||
.Where(p => ((p is Player) && !p.Dead && p.Attributes[GameAttribute.Loading] == false && p.Attributes[GameAttribute.Is_Helper] == false && p.World.BuffManager.GetFirstBuff<PowerSystem.Implementations.ActorGhostedBuff>(p) == null)
|
||||
.Where(p => ((p is Player) && !p.Dead && p.Attributes[GameAttribute.Loading] == false && p.Attributes[GameAttribute.Is_Helper] == false && p.World.BuffManager.GetFirstBuff<ActorGhostedBuff>(p) == null)
|
||||
|| ((p is Minion) && !p.Dead && p.Attributes[GameAttribute.Is_Helper] == false)
|
||||
|| (p is DesctructibleLootContainer && (p.ActorSNO.Name.ToLower().Contains("door") || p.ActorSNO.Name.ToLower().Contains("barricade")))
|
||||
|| (p is DesctructibleLootContainer && p.SNO.IsDoorOrBarricade())
|
||||
|| ((p is Hireling) && !p.Dead)
|
||||
)
|
||||
.OrderBy((actor) => PowerMath.Distance2D(actor.Position, this.Body.Position))
|
||||
@ -241,7 +241,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
}
|
||||
else if (this.Body.WalkSpeed != 0)
|
||||
{
|
||||
if (this.Body.ActorSNO.Name.ToLower().Contains("woodwraith") || this.Body.ActorSNO.Name.ToLower().Contains("wasp"))
|
||||
if (this.Body.SNO.IsWoodwraithOrWasp())
|
||||
{
|
||||
Logger.Trace("MoveToPointAction to target");
|
||||
this.CurrentAction = new MoveToPointAction(
|
||||
@ -268,9 +268,9 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (this.Body.ActorSNO.Id)
|
||||
switch (this.Body.SNO)
|
||||
{
|
||||
case 89579:
|
||||
case ActorSno._a1dun_leor_firewall2:
|
||||
powerToUse = 223284;
|
||||
break;
|
||||
}
|
||||
@ -309,7 +309,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
targets = this.Body.GetActorsInRange(50f)
|
||||
.Where(p => ((p is LorathNahr_NPC) && !p.Dead)
|
||||
|| ((p is CaptainRumford) && !p.Dead)
|
||||
|| (p is DesctructibleLootContainer && (p.ActorSNO.Name.ToLower().Contains("door") || p.ActorSNO.Name.ToLower().Contains("barricade")))
|
||||
|| (p is DesctructibleLootContainer && p.SNO.IsDoorOrBarricade())
|
||||
|| ((p is Cain) && !p.Dead))
|
||||
.OrderBy((actor) => PowerMath.Distance2D(actor.Position, this.Body.Position))
|
||||
.Cast<Actor>()
|
||||
@ -340,7 +340,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
_target = targets.First();
|
||||
}
|
||||
foreach (var tar in targets)
|
||||
if (tar is DesctructibleLootContainer && (tar.ActorSNO.Name.ToLower().Contains("door") || tar.ActorSNO.Name.ToLower().Contains("barricade")) && tar.ActorSNO.Id != 81699)
|
||||
if (tar is DesctructibleLootContainer && tar.SNO.IsDoorOrBarricade() && tar.SNO != ActorSno._trout_wagon_barricade)
|
||||
{ _target = tar; break; }
|
||||
}
|
||||
else
|
||||
@ -386,7 +386,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
}
|
||||
else if (this.Body.WalkSpeed != 0)
|
||||
{
|
||||
if (this.Body.ActorSNO.Name.ToLower().Contains("woodwraith") || this.Body.ActorSNO.Name.ToLower().Contains("wasp"))
|
||||
if (this.Body.SNO.IsWoodwraithOrWasp())
|
||||
{
|
||||
Logger.Trace("MoveToPointAction to target");
|
||||
this.CurrentAction = new MoveToPointAction(
|
||||
@ -466,8 +466,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
{
|
||||
if (!_warnedNoPowers && this.PresetPowers.Count == 0)
|
||||
{
|
||||
Logger.Info("Monster \"{0}\" has no usable powers. {1} are defined in mpq data.",
|
||||
this.Body.ActorSNO.Name, _mpqPowerCount);
|
||||
Logger.Info("Monster \"{0}\" has no usable powers. {1} are defined in mpq data.", this.Body.Name, _mpqPowerCount);
|
||||
_warnedNoPowers = true;
|
||||
}
|
||||
|
||||
|
@ -62,6 +62,16 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
/// ActorSNO.
|
||||
/// </summary>
|
||||
public SNOHandle ActorSNO { get; private set; }
|
||||
|
||||
public ActorSno SNO
|
||||
{
|
||||
get { return (ActorSno)ActorSNO.Id; }
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return ActorSNO.Name; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the sno of the actor used to identify the actor to the player
|
||||
@ -69,7 +79,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
/// There are few exceptions though like the Inn_Zombies that have both.
|
||||
/// Used by ACDEnterKnown to name the actor.
|
||||
/// </summary>
|
||||
public int NameSNOId { get; set; }
|
||||
public ActorSno NameSNO { get; set; }
|
||||
|
||||
public bool Disable = false;
|
||||
|
||||
@ -191,7 +201,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return (DiIiS_NA.Core.MPQ.FileFormats.Actor)DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.Actor][this.ActorSNO.Id].Data;
|
||||
return (DiIiS_NA.Core.MPQ.FileFormats.Actor)DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.Actor][(int)this.SNO].Data;
|
||||
}
|
||||
}
|
||||
|
||||
@ -236,9 +246,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
/// Creates a new actor.
|
||||
/// </summary>
|
||||
/// <param name="world">The world that initially belongs to.</param>
|
||||
/// <param name="snoId">SNOId of the actor.</param>
|
||||
/// <param name="sno">SNOId of the actor.</param>
|
||||
/// <param name="tags">TagMapEntry dictionary read for the actor from MPQ's..</param>
|
||||
protected Actor(World world, int snoId, TagMap tags, bool isMarker = false)
|
||||
protected Actor(World world, ActorSno sno, TagMap tags, bool isMarker = false)
|
||||
: base(world, world.IsPvP ? World.NewActorPvPID : world.Game.NewActorGameID)
|
||||
{
|
||||
this.Tags = tags;
|
||||
@ -255,8 +265,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
// if (this.ActorData.AnimSetSNO != -1)
|
||||
// this.AnimationSet = (Mooege.Common.MPQ.FileFormats.AnimSet)Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.AnimSet][this.ActorData.AnimSetSNO].Data;
|
||||
|
||||
this.ActorSNO = new SNOHandle(SNOGroup.Actor, snoId);
|
||||
this.NameSNOId = snoId;
|
||||
this.ActorSNO = new SNOHandle(SNOGroup.Actor, (int)sno);
|
||||
this.NameSNO = sno;
|
||||
//Logger.Info("Loaded actor {0}, id {1}, type {2}", this.ActorSNO.Name, this.DynamicID, this.ActorData.Type);
|
||||
this.Quality = 0;
|
||||
this.HasLoot = true;
|
||||
@ -283,9 +293,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
/// Creates a new actor.
|
||||
/// </summary>
|
||||
/// <param name="world">The world that initially belongs to.</param>
|
||||
/// <param name="snoId">SNOId of the actor.</param>
|
||||
protected Actor(World world, int snoId)
|
||||
: this(world, snoId, null)
|
||||
/// <param name="sno">SNOId of the actor.</param>
|
||||
protected Actor(World world, ActorSno sno)
|
||||
: this(world, sno, null)
|
||||
{ }
|
||||
|
||||
protected virtual void quest_OnQuestProgress() // erekose changed from protected to public
|
||||
@ -306,7 +316,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
/// </summary>
|
||||
public override void Destroy()
|
||||
{
|
||||
if (this.ActorSNO.Id == 454066)
|
||||
if (this.SNO == ActorSno._p6_necro_corpse_flesh)
|
||||
if (World != null)
|
||||
foreach (var plr in World.Game.Players.Values)
|
||||
if (plr.SkillSet.HasPassive(208594) && DiIiS_NA.Core.Helpers.Math.RandomHelper.Next(0,100) > 45)
|
||||
@ -328,15 +338,16 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
|
||||
public virtual void EnterWorld(Vector3D position)
|
||||
{
|
||||
var Quest = DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[Core.Types.SNO.SNOGroup.Quest][74128];
|
||||
var Quest = DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.Quest][74128];
|
||||
|
||||
if (this.World != null)
|
||||
if (this.World.GetActorsBySNO(this.ActorSNO.Id).Count > 0)
|
||||
{
|
||||
int count = this.World.GetActorsBySNO(this.ActorSNO.Id).Count;
|
||||
{
|
||||
int count = this.World.GetActorsBySNO(this.SNO).Count;
|
||||
if (count > 0)
|
||||
NumberInWorld = count;
|
||||
}
|
||||
if (this.Spawned)
|
||||
}
|
||||
|
||||
if (this.Spawned)
|
||||
return;
|
||||
|
||||
this.Position = position;
|
||||
@ -423,7 +434,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
(minion as Minion).Brain.DeActivate();
|
||||
(this as Player).Followers.Remove(fol);
|
||||
minion.ChangeWorld(world, position);
|
||||
(this as Player).Followers.Add(minion.GlobalID, minion.ActorSNO.Id);
|
||||
(this as Player).Followers.Add(minion.GlobalID, minion.SNO);
|
||||
(minion as Minion).Brain.Activate();
|
||||
}
|
||||
}
|
||||
@ -823,14 +834,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
return new ACDEnterKnownMessage
|
||||
{
|
||||
ActorID = this.DynamicID(plr),
|
||||
ActorSNOId = this.ActorSNO.Id,
|
||||
ActorSNOId = (int)this.SNO,
|
||||
Flags = this.Field2,
|
||||
LocationType = this.HasWorldLocation ? 0 : 1,
|
||||
WorldLocation = this.HasWorldLocation ? this.WorldLocationMessage() : null,
|
||||
InventoryLocation = this.HasWorldLocation ? null : this.InventoryLocationMessage(plr),
|
||||
GBHandle = this.GBHandle,
|
||||
snoGroup = this.Field7,
|
||||
snoHandle = this.NameSNOId,
|
||||
snoHandle = (int)this.NameSNO,
|
||||
Quality = this.Quality,
|
||||
LookLinkIndex = this.Field10,
|
||||
snoAmbientOcclusionOverrideTex = null,
|
||||
@ -861,25 +872,21 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
WorldSno.trdun_crypt_skeletonkingcrown_02,
|
||||
};
|
||||
//Leave Miriam in Crypt
|
||||
if (this.ActorSNO.Id == 175310 && mysticHiddenWorlds.Contains(World.SNO)) return false;
|
||||
if (this.SNO == ActorSno._pt_mystic_novendor_nonglobalfollower && mysticHiddenWorlds.Contains(World.SNO)) return false;
|
||||
|
||||
|
||||
//Destroy Bonewall and Jondar if Exit_S on Second Level of Cathedral
|
||||
if (World.SNO == WorldSno.a1trdun_level04 && (this.ActorSNO.Id == 109209 || this.ActorSNO.Id == 86624)) return false;
|
||||
if (World.SNO == WorldSno.a1trdun_level04 && (this.SNO == ActorSno._trdun_cath_bonewall_a_door || this.SNO == ActorSno._adventurer_d_templarintrounique)) return false;
|
||||
|
||||
if (this.ActorSNO.Name.Contains("Uber") && !this.World.SNO.IsUberWorld()) return false;
|
||||
if (this.ActorSNO.Name.Contains("AdventureMode") && this.World.Game.CurrentAct != 3000) return false;
|
||||
if (this.ActorSNO.Name.Contains("ScriptedSequenceOnly")) return false;
|
||||
if (this.SNO.IsUberWorldActor() && !this.World.SNO.IsUberWorld()) return false;
|
||||
if (this.SNO.IsAdventureModeActor() && this.World.Game.CurrentAct != 3000) return false;
|
||||
if (this.SNO == ActorSno._x1_adria_boss_scriptedsequenceonly) return false;
|
||||
|
||||
if (player.RevealedObjects.ContainsKey(this.GlobalID)) return false; // already revealed
|
||||
|
||||
if (player.World == null) return false;
|
||||
|
||||
if (this.ActorSNO.Id == 218339)
|
||||
if (this.World.SNO == WorldSno.trout_town)
|
||||
if (this.CurrentScene.SceneSNO.Id == 33348)
|
||||
if (this.Position.X < 2896)
|
||||
return false;
|
||||
if (this.SNO == ActorSno._zombieskinny_custom_a && this.World.SNO == WorldSno.trout_town && this.CurrentScene.SceneSNO.Id == 33348 && this.Position.X < 2896) return false;
|
||||
|
||||
|
||||
if (!(this is Item) && player.World.GlobalID != this.World.GlobalID) return false;
|
||||
@ -946,7 +953,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
TrickleMessage Trickle = new TrickleMessage()
|
||||
{
|
||||
ActorId = this.DynamicID(player),
|
||||
ActorSNO = this.ActorSNO.Id,
|
||||
ActorSNO = (int)this.SNO,
|
||||
WorldLocation = new WorldPlace()
|
||||
{
|
||||
WorldID = this.World.GlobalID,
|
||||
@ -982,66 +989,66 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
this.PlayActionAnimation(11514);
|
||||
}
|
||||
//Задаём идл для работяг
|
||||
else if (this.World.SNO == WorldSno.trout_tristram_inn & this.ActorSNO.Id == 84529)
|
||||
else if (this.World.SNO == WorldSno.trout_tristram_inn && this.SNO == ActorSno._omninpc_tristram_male_a)
|
||||
this.PlayActionAnimation(102329);
|
||||
else if (this.ActorSNO.Id == 4580)
|
||||
else if (this.SNO == ActorSno._leah)
|
||||
player.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Inventory.VisualInventoryMessage()
|
||||
{
|
||||
ActorID = this.DynamicID(player),
|
||||
EquipmentList = new MessageSystem.Message.Fields.VisualEquipment()
|
||||
EquipmentList = new VisualEquipment()
|
||||
{
|
||||
Equipment = new MessageSystem.Message.Fields.VisualItem[]
|
||||
Equipment = new VisualItem[]
|
||||
{
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = unchecked((int)-2091504072),
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,//0x6C3B0389,
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,
|
||||
DyeType = 0,
|
||||
@ -1329,20 +1336,20 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
int snoQuestRange = Tags[MarkerKeys.QuestRange].Id;
|
||||
if (DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.QuestRange].ContainsKey(snoQuestRange))
|
||||
_questRange = DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.QuestRange][snoQuestRange].Data as DiIiS_NA.Core.MPQ.FileFormats.QuestRange;
|
||||
else Logger.Debug("Actor {0} GlobalID {1} is tagged with unknown QuestRange {2}", NameSNOId, GlobalID, snoQuestRange);
|
||||
else Logger.Debug("Actor {0} GlobalID {1} is tagged with unknown QuestRange {2}", NameSNO, GlobalID, snoQuestRange);
|
||||
}
|
||||
|
||||
if (Tags.ContainsKey(MarkerKeys.ConversationList) && WorldGenerator.DefaultConversationLists.ContainsKey(this.ActorSNO.Id))
|
||||
if (Tags.ContainsKey(MarkerKeys.ConversationList) && WorldGenerator.DefaultConversationLists.ContainsKey((int)this.SNO))
|
||||
{
|
||||
int snoConversationList = WorldGenerator.DefaultConversationLists[this.ActorSNO.Id];//Tags[MarkerKeys.ConversationList].Id;
|
||||
int snoConversationList = WorldGenerator.DefaultConversationLists[(int)this.SNO];//Tags[MarkerKeys.ConversationList].Id;
|
||||
|
||||
Logger.Trace(" (ReadTags) actor {0} GlobalID {2} has a conversation list {1}", NameSNOId, snoConversationList, GlobalID);
|
||||
Logger.Trace(" (ReadTags) actor {0} GlobalID {2} has a conversation list {1}", NameSNO, snoConversationList, GlobalID);
|
||||
|
||||
if (DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.ConversationList].ContainsKey(snoConversationList))
|
||||
ConversationList = DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.ConversationList][snoConversationList].Data as DiIiS_NA.Core.MPQ.FileFormats.ConversationList;
|
||||
else
|
||||
if (snoConversationList != -1)
|
||||
Logger.Warn("Actor {0} - Conversation list {1} not found!", NameSNOId, snoConversationList);
|
||||
Logger.Warn("Actor {0} - Conversation list {1} not found!", NameSNO, snoConversationList);
|
||||
}
|
||||
|
||||
|
||||
@ -1402,7 +1409,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("[Actor] [Type: {0}] SNOId:{1} GlobalId: {2} Position: {3} Name: {4}", this.ActorType, this.ActorSNO.Id, this.GlobalID, this.Position, this.ActorSNO.Name);
|
||||
return string.Format("[Actor] [Type: {0}] SNOId:{1} GlobalId: {2} Position: {3} Name: {4}", this.ActorType, this.SNO, this.GlobalID, this.Position, this.Name);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.Logging;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.Math;
|
||||
//Blizzless Project 2022
|
||||
@ -25,45 +26,47 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
public static class ActorFactory
|
||||
{
|
||||
private static readonly Dictionary<int, Type> SNOHandlers = new Dictionary<int, Type>();
|
||||
private static readonly Dictionary<ActorSno, Type> SNOHandlers = new Dictionary<ActorSno, Type>();
|
||||
private static Logger Logger = new Logger("ActorFactory");
|
||||
|
||||
static ActorFactory()
|
||||
{
|
||||
LoadSNOHandlers();
|
||||
}
|
||||
SNOHandlers = Assembly.GetExecutingAssembly().GetTypes()
|
||||
.Where(x => x.IsSubclassOf(typeof(Actor)))
|
||||
.Select(x => new { Type = x, Attribute = x.GetCustomAttributes<HandledSNOAttribute>(true).FirstOrDefault() })
|
||||
.Where(x => x.Attribute != null)
|
||||
.SelectMany(x => x.Attribute.SNOIds.Select(a => new { x.Type, Sno = a }))
|
||||
.ToDictionary(x => x.Sno, x => x.Type);
|
||||
}
|
||||
|
||||
public static void LazyCreate(World world, int snoId, TagMap tags, Vector3D spawn, Action<Actor, Vector3D> OnCreate)
|
||||
public static void LazyCreate(World world, ActorSno sno, TagMap tags, Vector3D spawn, Action<Actor, Vector3D> OnCreate)
|
||||
{
|
||||
var actor = Create(world, snoId, tags);
|
||||
var actor = Create(world, sno, tags);
|
||||
if (actor != null)
|
||||
OnCreate.Invoke(actor, spawn);
|
||||
}
|
||||
|
||||
public static Actor Create(World world, int snoId, TagMap tags)
|
||||
public static Actor Create(World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
if (!MPQStorage.Data.Assets[SNOGroup.Actor].ContainsKey(snoId))
|
||||
if (!MPQStorage.Data.Assets[SNOGroup.Actor].ContainsKey((int)sno))
|
||||
{
|
||||
//Logger.Warn("Actor asset not found, Id: {0}", snoId);
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (snoId)
|
||||
switch (sno)
|
||||
{
|
||||
case 6572:
|
||||
case 139454:
|
||||
case 139456:
|
||||
case 170324:
|
||||
case 170325:
|
||||
case 495:
|
||||
case 496:
|
||||
int variable = DiIiS_NA.Core.Helpers.Math.RandomHelper.Next(0, 3);
|
||||
switch (variable)
|
||||
case ActorSno._woodwraith_a_01:
|
||||
case ActorSno._woodwraith_a_02:
|
||||
case ActorSno._woodwraith_a_03:
|
||||
case ActorSno._woodwraith_b_01:
|
||||
case ActorSno._woodwraith_b_02:
|
||||
case ActorSno._woodwraith_b_03:
|
||||
case ActorSno._woodwraith_unique_a:
|
||||
switch (DiIiS_NA.Core.Helpers.Math.RandomHelper.Next(0, 3) / 2)
|
||||
{
|
||||
case 0: snoId = 470241; break;
|
||||
case 1: snoId = 470241; break;
|
||||
case 2: snoId = 430928; break;
|
||||
case 3: snoId = 430928; break;
|
||||
case 0: sno = ActorSno._ls_woodwraith; break;
|
||||
case 1: sno = ActorSno._p4_woodwraith_a; break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -78,23 +81,23 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
if (world.Game.CurrentAct == 3000 && !world.IsPvP
|
||||
&& tags.ContainsKey(MarkerKeys.StoryModeOnly)
|
||||
&& tags[MarkerKeys.StoryModeOnly] == 1
|
||||
&& snoId != 6442) //only-Adventure Mode
|
||||
&& sno != ActorSno._waypoint) //only-Adventure Mode
|
||||
return null;
|
||||
|
||||
if (tags.ContainsKey(MarkerKeys.RiftOnly) && tags[MarkerKeys.RiftOnly] == 1) //Rift Mode
|
||||
return null;
|
||||
|
||||
var actorAsset = MPQStorage.Data.Assets[SNOGroup.Actor][snoId];
|
||||
var actorAsset = MPQStorage.Data.Assets[SNOGroup.Actor][(int)sno];
|
||||
var actorData = actorAsset.Data as DiIiS_NA.Core.MPQ.FileFormats.Actor;
|
||||
if (actorData == null)
|
||||
{
|
||||
Logger.Warn("Actor data not found, Id: {0}", snoId);
|
||||
Logger.Warn("Actor data not found, Id: {0}", sno);
|
||||
return null;
|
||||
}
|
||||
|
||||
if (actorData.Type == ActorType.Invalid)
|
||||
{
|
||||
Logger.Warn("Actor type is Invalid, Id: {0}", snoId);
|
||||
Logger.Warn("Actor type is Invalid, Id: {0}", sno);
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -104,14 +107,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
}
|
||||
|
||||
// see if we have an implementation for actor.
|
||||
if (SNOHandlers.ContainsKey(snoId))
|
||||
return (Actor)Activator.CreateInstance(SNOHandlers[snoId], new object[] { world, snoId, tags });
|
||||
if (SNOHandlers.ContainsKey(sno))
|
||||
return (Actor)Activator.CreateInstance(SNOHandlers[sno], new object[] { world, sno, tags });
|
||||
|
||||
switch (actorData.Type)
|
||||
{
|
||||
case ActorType.Monster:
|
||||
if (tags.ContainsKey(MarkerKeys.ConversationList))
|
||||
return new InteractiveNPC(world, snoId, tags);
|
||||
return new InteractiveNPC(world, sno, tags);
|
||||
else
|
||||
if (!MPQStorage.Data.Assets[SNOGroup.Monster].ContainsKey(actorData.MonsterSNO))
|
||||
return null;
|
||||
@ -119,29 +122,29 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
var monsterAsset = MPQStorage.Data.Assets[SNOGroup.Monster][actorData.MonsterSNO];
|
||||
var monsterData = monsterAsset.Data as DiIiS_NA.Core.MPQ.FileFormats.Monster;
|
||||
if (monsterData.Type == DiIiS_NA.Core.MPQ.FileFormats.Monster.MonsterType.Breakable)
|
||||
return new Gizmo(world, snoId, tags);
|
||||
return new Gizmo(world, sno, tags);
|
||||
if (monsterData.Type == DiIiS_NA.Core.MPQ.FileFormats.Monster.MonsterType.Ally ||
|
||||
monsterData.Type == DiIiS_NA.Core.MPQ.FileFormats.Monster.MonsterType.Helper ||
|
||||
monsterData.Type == DiIiS_NA.Core.MPQ.FileFormats.Monster.MonsterType.Scenery)
|
||||
return new NPC(world, snoId, tags);
|
||||
return new NPC(world, sno, tags);
|
||||
else
|
||||
if (actorAsset.Name.ToLower().Contains("unique"))
|
||||
return new Unique(world, snoId, tags);
|
||||
return new Unique(world, sno, tags);
|
||||
else
|
||||
return new Monster(world, snoId, tags);
|
||||
return new Monster(world, sno, tags);
|
||||
case ActorType.Gizmo:
|
||||
switch (actorData.TagMap[ActorKeys.GizmoGroup])
|
||||
{
|
||||
case GizmoGroup.LootContainer:
|
||||
return new LootContainer(world, snoId, tags);
|
||||
return new LootContainer(world, sno, tags);
|
||||
case GizmoGroup.Door:
|
||||
return new Door(world, snoId, tags);
|
||||
return new Door(world, sno, tags);
|
||||
case GizmoGroup.DestructibleLootContainer:
|
||||
return new DesctructibleLootContainer(world, snoId, true, tags);
|
||||
return new DesctructibleLootContainer(world, sno, true, tags);
|
||||
case GizmoGroup.Destructible:
|
||||
case GizmoGroup.Passive:
|
||||
case GizmoGroup.Barricade:
|
||||
return new DesctructibleLootContainer(world, snoId, false, tags);
|
||||
return new DesctructibleLootContainer(world, sno, false, tags);
|
||||
case GizmoGroup.Portal:
|
||||
//Prevent Development Hell portal from showing
|
||||
if (tags.ContainsKey(MarkerKeys.DestinationWorld) && tags[MarkerKeys.DestinationWorld].Id == 222591)
|
||||
@ -149,37 +152,37 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
if (tags.ContainsKey(MarkerKeys.DestinationWorld) && tags[MarkerKeys.DestinationWorld].Id == 443346)
|
||||
return null;
|
||||
else
|
||||
return new Portal(world, snoId, tags);
|
||||
return new Portal(world, sno, tags);
|
||||
case GizmoGroup.BossPortal:
|
||||
return new BossPortal(world, snoId, tags);
|
||||
return new BossPortal(world, sno, tags);
|
||||
case GizmoGroup.Readable:
|
||||
return new Readable(world, snoId, tags);
|
||||
return new Readable(world, sno, tags);
|
||||
case GizmoGroup.Banner:
|
||||
return new Banner(world, snoId, tags);
|
||||
return new Banner(world, sno, tags);
|
||||
case GizmoGroup.CheckPoint:
|
||||
return new Checkpoint(world, snoId, tags);
|
||||
return new Checkpoint(world, sno, tags);
|
||||
case GizmoGroup.Waypoint:
|
||||
return new Waypoint(world, snoId, tags);
|
||||
return new Waypoint(world, sno, tags);
|
||||
case GizmoGroup.Savepoint:
|
||||
return new Savepoint(world, snoId, tags);
|
||||
return new Savepoint(world, sno, tags);
|
||||
case GizmoGroup.ProximityTriggered:
|
||||
return new ProximityTriggeredGizmo(world, snoId, tags);
|
||||
return new ProximityTriggeredGizmo(world, sno, tags);
|
||||
case GizmoGroup.Shrine:
|
||||
return new Shrine(world, snoId, tags);
|
||||
return new Shrine(world, sno, tags);
|
||||
case GizmoGroup.Healthwell:
|
||||
return new Healthwell(world, snoId, tags);
|
||||
return new Healthwell(world, sno, tags);
|
||||
case GizmoGroup.ExpPool:
|
||||
return new XPPool(world, snoId, tags);
|
||||
return new XPPool(world, sno, tags);
|
||||
case GizmoGroup.StartLocations:
|
||||
return new StartingPoint(world, snoId, tags);
|
||||
return new StartingPoint(world, sno, tags);
|
||||
case GizmoGroup.HearthPortal:
|
||||
return new HearthPortal(world, snoId, tags);
|
||||
return new HearthPortal(world, sno, tags);
|
||||
case GizmoGroup.DungeonStonePortal:
|
||||
return new DungeonStonePortal(world, snoId, tags);
|
||||
return new DungeonStonePortal(world, sno, tags);
|
||||
case GizmoGroup.Headstone:
|
||||
return new Headstone(world, snoId, tags);
|
||||
return new Headstone(world, sno, tags);
|
||||
case GizmoGroup.Spawner:
|
||||
return new Spawner(world, snoId, tags);
|
||||
return new Spawner(world, sno, tags);
|
||||
|
||||
case GizmoGroup.GateGizmo:
|
||||
case GizmoGroup.ActChangeTempObject:
|
||||
@ -194,30 +197,30 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
case GizmoGroup.ScriptObject:
|
||||
case GizmoGroup.LootRunObelisk:
|
||||
case GizmoGroup.Unknown:
|
||||
return CreateGizmo(world, snoId, tags);
|
||||
return CreateGizmo(world, sno, tags);
|
||||
default:
|
||||
#if DEBUG
|
||||
Logger.Warn("Unknown gizmo group {0}, id {1}", actorData.TagMap[ActorKeys.GizmoGroup], snoId);
|
||||
Logger.Warn("Unknown gizmo group {0}, id {1}", actorData.TagMap[ActorKeys.GizmoGroup], sno);
|
||||
#else
|
||||
|
||||
#endif
|
||||
return CreateGizmo(world, snoId, tags);
|
||||
return CreateGizmo(world, sno, tags);
|
||||
}
|
||||
case ActorType.ServerProp:
|
||||
return new ServerProp(world, snoId, tags);
|
||||
return new ServerProp(world, sno, tags);
|
||||
case ActorType.Environment:
|
||||
return new Environment(world, snoId, tags);
|
||||
return new Environment(world, sno, tags);
|
||||
case ActorType.Item:
|
||||
return new StaticItem(world, snoId, tags);
|
||||
return new StaticItem(world, sno, tags);
|
||||
case ActorType.Player:
|
||||
return new InteractiveNPC(world, snoId, tags);
|
||||
return new InteractiveNPC(world, sno, tags);
|
||||
default:
|
||||
//Logger.Warn("Unknown Actor type {0}, Id: {1}", actorData.Type, snoId);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static Actor CreateGizmo(World world, int snoId, TagMap tags)
|
||||
private static Actor CreateGizmo(World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
//if (tags.ContainsKey(MarkerKeys.DestinationWorld)) //trying to spawn all portals
|
||||
//{
|
||||
@ -225,24 +228,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
//return new Portal(world, snoId, tags);
|
||||
//}
|
||||
|
||||
return new Gizmo(world, snoId, tags);
|
||||
}
|
||||
|
||||
public static void LoadSNOHandlers()
|
||||
{
|
||||
foreach (var type in Assembly.GetExecutingAssembly().GetTypes())
|
||||
{
|
||||
if (!type.IsSubclassOf(typeof(Actor))) continue;
|
||||
|
||||
var attributes = (HandledSNOAttribute[])type.GetCustomAttributes(typeof(HandledSNOAttribute), true);
|
||||
if (attributes.Length == 0) continue;
|
||||
|
||||
foreach (var sno in attributes.First().SNOIds)
|
||||
{
|
||||
if (!SNOHandlers.ContainsKey(sno))
|
||||
SNOHandlers.Add(sno, type);
|
||||
}
|
||||
}
|
||||
return new Gizmo(world, sno, tags);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Logging;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -37,6 +38,15 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
static readonly Logger Logger = LogManager.CreateLogger();
|
||||
|
||||
// "EventPortal" actors
|
||||
private static readonly ActorSno[] eventPortals = new ActorSno[]
|
||||
{
|
||||
ActorSno._x1_westmhub_scoundreleventportal,
|
||||
ActorSno._x1_westmhub_templareventportal,
|
||||
ActorSno._x1_westmhub_enchantresseventportal,
|
||||
ActorSno._x1_westmhub_jewelereventportal,
|
||||
};
|
||||
|
||||
public override ActorType ActorType { get { return ActorType.Gizmo; } }
|
||||
|
||||
private int Encounter;
|
||||
@ -45,8 +55,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
private int DestPoint;
|
||||
private ResolvedPortalDestination Destination { get; set; }
|
||||
|
||||
public BossPortal(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public BossPortal(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field2 = 0x9;//16;
|
||||
|
||||
@ -103,75 +113,75 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
}
|
||||
DestPoint = bossEncounter.I11;
|
||||
//get EncounterSNO
|
||||
switch (this.ActorSNO.Id)
|
||||
switch (this.SNO)
|
||||
{
|
||||
case 168932: //CainIntro
|
||||
case ActorSno._boss_portal_cainintro: //CainIntro
|
||||
this.Encounter = 168925;
|
||||
break;
|
||||
case 159573: //Leoric
|
||||
case ActorSno._boss_portal_skeletonking: //Leoric
|
||||
this.Encounter = 159592;
|
||||
break;
|
||||
case 183032: //SpiderQueen
|
||||
case ActorSno._boss_portal_spiderqueen: //SpiderQueen
|
||||
this.Encounter = 181436;
|
||||
break;
|
||||
case 158944: //Butcher
|
||||
case ActorSno._boss_portal_butcher: //Butcher
|
||||
this.Encounter = 158915;
|
||||
break;
|
||||
case 195234: //Maghda
|
||||
case ActorSno._boss_portal_maghda: //Maghda
|
||||
this.Encounter = 195226;
|
||||
break;
|
||||
case 159578: //Cain Death
|
||||
case ActorSno._boss_portal_binkleshulkout: //Cain Death
|
||||
this.Encounter = 159591;
|
||||
break;
|
||||
//case 159578: //Belial Audience
|
||||
//this.Encounter = 162231;
|
||||
//break;
|
||||
case 159580: //Adria Rescue
|
||||
case ActorSno._boss_portal_adriasewer: //Adria Rescue
|
||||
this.Encounter = 159584;
|
||||
break;
|
||||
case 159581: //Zoltun Kulle
|
||||
case ActorSno._boss_portal_blacksoulstone: //Zoltun Kulle
|
||||
this.Encounter = 159586;
|
||||
break;
|
||||
case 159574: //Belial
|
||||
case ActorSno._boss_portal_belial: //Belial
|
||||
this.Encounter = 159585;
|
||||
break;
|
||||
case 226784: //SiegeBreaker
|
||||
case ActorSno._boss_portal_siegebreaker: //SiegeBreaker
|
||||
this.Encounter = 226716;
|
||||
break;
|
||||
case 161278: //Cydaea
|
||||
case ActorSno._boss_portal_mistressofpain: //Cydaea
|
||||
this.Encounter = 161246;
|
||||
break;
|
||||
case 159575: //Azmodan
|
||||
case ActorSno._boss_portal_azmodan: //Azmodan
|
||||
this.Encounter = 159582;
|
||||
break;
|
||||
case 159576: //Adria_Betrayal
|
||||
case ActorSno._boss_portal_adriabetrayal: //Adria_Betrayal
|
||||
this.Encounter = 159583;
|
||||
break;
|
||||
case 182963: //Iskatu
|
||||
case ActorSno._boss_portal_1000monsterfight: //Iskatu
|
||||
this.Encounter = 182960;
|
||||
break;
|
||||
case 161276: //Rakanoth
|
||||
case ActorSno._boss_portal_despair: //Rakanoth
|
||||
this.Encounter = 161247;
|
||||
break;
|
||||
case 220551: //Imperius_Spire
|
||||
case ActorSno._bossportal_imperius_spirebase: //Imperius_Spire
|
||||
this.Encounter = 220541;
|
||||
break;
|
||||
case 161279: //Diablo
|
||||
case ActorSno._boss_portal_diablo: //Diablo
|
||||
this.Encounter = 161280;
|
||||
break;
|
||||
case 309883: //Urzael
|
||||
case ActorSno._x1_urzael_bossportal: //Urzael
|
||||
this.Encounter = 298128;
|
||||
break;
|
||||
case 293005: //Adria
|
||||
case ActorSno._x1_boss_portal_adria: //Adria
|
||||
this.Encounter = 293007;
|
||||
break;
|
||||
case 296314: //BatteringRam
|
||||
case ActorSno._x1_boss_portal_batteringram: //BatteringRam
|
||||
this.Encounter = 296315;
|
||||
break;
|
||||
case 374257: //Malthael
|
||||
case ActorSno._x1_fortress_malthael_boss_portal: //Malthael
|
||||
this.Encounter = 278965;
|
||||
break;
|
||||
case 380766:
|
||||
case ActorSno._boss_portal_greed:
|
||||
this.Encounter = 380760;
|
||||
break;
|
||||
default:
|
||||
@ -186,9 +196,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
StartingPointActorTag = DestPoint
|
||||
};
|
||||
}
|
||||
public static bool setActorOperable(World world, Int32 snoId, bool status)
|
||||
public static bool SetActorOperable(World world, ActorSno sno, bool status)
|
||||
{
|
||||
var actor = world.GetActorBySNO(snoId);
|
||||
var actor = world.GetActorBySNO(sno);
|
||||
|
||||
if (actor == null)
|
||||
return false;
|
||||
@ -205,7 +215,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
}
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (this.ActorSNO.Name.EndsWith("EventPortal")) return false;
|
||||
if (eventPortals.Contains(this.SNO)) return false;
|
||||
if (!base.Reveal(player))
|
||||
return false;
|
||||
/*
|
||||
@ -220,7 +230,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
}
|
||||
});
|
||||
//*/
|
||||
player.InGameClient.SendMessage(new DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Portal.PortalSpecifierMessage()
|
||||
player.InGameClient.SendMessage(new PortalSpecifierMessage()
|
||||
{
|
||||
ActorID = this.DynamicID(player),
|
||||
Destination = this.Destination
|
||||
@ -235,7 +245,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
Logger.Trace("(OnTargeted) BossPortal has been activated, Id: {0}", this.ActorSNO.Id);
|
||||
Logger.Trace("(OnTargeted) BossPortal has been activated, Id: {0}", this.SNO);
|
||||
if (this.Encounter == 0) return;
|
||||
//if (this.World.Game.CurrentEncounter.activated) return;
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -9,8 +10,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
public override ActorType ActorType { get { return ActorType.Environment; } }
|
||||
|
||||
public Environment(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Environment(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field2 = 0x10;//16;
|
||||
this.Field7 = 0x00000000;
|
||||
|
@ -2,6 +2,7 @@
|
||||
using System;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Logging;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -20,8 +21,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
public override ActorType ActorType { get { return ActorType.Gizmo; } }
|
||||
protected Logger Logger = new Logger("Gizmo");
|
||||
|
||||
public Gizmo(World world, int snoId, TagMap tags, bool is_marker = false)
|
||||
: base(world, snoId, tags, is_marker)
|
||||
public Gizmo(World world, ActorSno sno, TagMap tags, bool is_marker = false)
|
||||
: base(world, sno, tags, is_marker)
|
||||
{
|
||||
this.Field2 = 0x9;//16;
|
||||
this.Field7 = 0x00000001;
|
||||
@ -41,16 +42,16 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
if (this.Attributes[GameAttribute.Disabled] == true) return;
|
||||
Logger.Trace("(OnTargeted) Gizmo has been activated! Id: {0}, Type: {1}", this.ActorSNO.Id, this.ActorData.TagMap[ActorKeys.GizmoGroup]);
|
||||
Logger.Trace("(OnTargeted) Gizmo has been activated! Id: {0}, Type: {1}", this.SNO, this.ActorData.TagMap[ActorKeys.GizmoGroup]);
|
||||
|
||||
//handling quest triggers
|
||||
if (this.World.Game.QuestProgress.QuestTriggers.ContainsKey(this.ActorSNO.Id))
|
||||
if (this.World.Game.QuestProgress.QuestTriggers.ContainsKey((int)this.SNO))
|
||||
{
|
||||
var trigger = this.World.Game.QuestProgress.QuestTriggers[this.ActorSNO.Id];
|
||||
var trigger = this.World.Game.QuestProgress.QuestTriggers[(int)this.SNO];
|
||||
if (trigger.triggerType == DiIiS_NA.Core.MPQ.FileFormats.QuestStepObjectiveType.InteractWithActor)
|
||||
{
|
||||
this.World.Game.QuestProgress.UpdateCounter(this.ActorSNO.Id);
|
||||
if (trigger.count == this.World.Game.QuestProgress.QuestTriggers[this.ActorSNO.Id].counter)
|
||||
this.World.Game.QuestProgress.UpdateCounter((int)this.SNO);
|
||||
if (trigger.count == this.World.Game.QuestProgress.QuestTriggers[(int)this.SNO].counter)
|
||||
try
|
||||
{
|
||||
trigger.questEvent.Execute(this.World); // launch a questEvent
|
||||
@ -61,27 +62,27 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (this.World.Game.SideQuestProgress.QuestTriggers.ContainsKey(this.ActorSNO.Id))
|
||||
else if (this.World.Game.SideQuestProgress.QuestTriggers.ContainsKey((int)this.SNO))
|
||||
{
|
||||
var trigger = this.World.Game.SideQuestProgress.QuestTriggers[this.ActorSNO.Id];
|
||||
var trigger = this.World.Game.SideQuestProgress.QuestTriggers[(int)this.SNO];
|
||||
if (trigger.triggerType == DiIiS_NA.Core.MPQ.FileFormats.QuestStepObjectiveType.InteractWithActor)
|
||||
{
|
||||
this.World.Game.SideQuestProgress.UpdateSideCounter(this.ActorSNO.Id);
|
||||
if (trigger.count == this.World.Game.SideQuestProgress.QuestTriggers[this.ActorSNO.Id].counter)
|
||||
this.World.Game.SideQuestProgress.UpdateSideCounter((int)this.SNO);
|
||||
if (trigger.count == this.World.Game.SideQuestProgress.QuestTriggers[(int)this.SNO].counter)
|
||||
trigger.questEvent.Execute(this.World); // launch a questEvent
|
||||
}
|
||||
}
|
||||
if (this.World.Game.SideQuestProgress.GlobalQuestTriggers.ContainsKey(this.ActorSNO.Id))
|
||||
if (this.World.Game.SideQuestProgress.GlobalQuestTriggers.ContainsKey((int)this.SNO))
|
||||
{
|
||||
var trigger = this.World.Game.SideQuestProgress.GlobalQuestTriggers[this.ActorSNO.Id];
|
||||
var trigger = this.World.Game.SideQuestProgress.GlobalQuestTriggers[(int)this.SNO];
|
||||
if (trigger.triggerType == DiIiS_NA.Core.MPQ.FileFormats.QuestStepObjectiveType.InteractWithActor)
|
||||
{
|
||||
this.World.Game.SideQuestProgress.UpdateGlobalCounter(this.ActorSNO.Id);
|
||||
if (trigger.count == this.World.Game.SideQuestProgress.GlobalQuestTriggers[this.ActorSNO.Id].counter)
|
||||
this.World.Game.SideQuestProgress.UpdateGlobalCounter((int)this.SNO);
|
||||
if (trigger.count == this.World.Game.SideQuestProgress.GlobalQuestTriggers[(int)this.SNO].counter)
|
||||
try
|
||||
{
|
||||
trigger.questEvent.Execute(this.World); // launch a questEvent
|
||||
this.World.Game.SideQuestProgress.GlobalQuestTriggers.Remove(this.ActorSNO.Id);
|
||||
this.World.Game.SideQuestProgress.GlobalQuestTriggers.Remove((int)this.SNO);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -2,17 +2,18 @@
|
||||
using System;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
|
||||
public sealed class HandledSNOAttribute : Attribute
|
||||
{
|
||||
public List<int> SNOIds { get; private set; }
|
||||
public List<ActorSno> SNOIds { get; private set; }
|
||||
|
||||
public HandledSNOAttribute(params int[] snoIds)
|
||||
public HandledSNOAttribute(params ActorSno[] snoIds)
|
||||
{
|
||||
this.SNOIds = new List<int>();
|
||||
this.SNOIds = new List<ActorSno>();
|
||||
this.SNOIds.AddRange(snoIds);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Interactions;
|
||||
@ -25,8 +26,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
public class Artisan : InteractiveNPC
|
||||
{
|
||||
public Artisan(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Artisan(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
Interactions.Add(new CraftInteraction());
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
@ -9,15 +10,16 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
[HandledSNO(0x0002FA63 /* PT_Blacksmith_ForgeWeaponShortcut.acr */,
|
||||
0x0002FA64 /*PT_Blacksmith_ForgeArmorShortcut.acr */,
|
||||
0x0002FA62 /*PT_Blacksmith_RepairShortcut.acr */,
|
||||
212519 /* Actor PT_Jeweler_AddSocketShortcut */,
|
||||
212517 /* Actor PT_Jeweler_CombineShortcut */,
|
||||
212521 /* Actor PT_Jeweler_RemoveGemShortcut */,
|
||||
212511 /* Actor PT_Mystic_EnhanceShortcut */,
|
||||
212510 /* Actor PT_Mystic_IdentifyShortcut */,
|
||||
439975 /* KanaiCube_Stand */)]
|
||||
[HandledSNO(
|
||||
ActorSno._pt_blacksmith_forgeweaponshortcut /* PT_Blacksmith_ForgeWeaponShortcut.acr */,
|
||||
ActorSno._pt_blacksmith_forgearmorshortcut /*PT_Blacksmith_ForgeArmorShortcut.acr */,
|
||||
ActorSno._pt_blacksmith_repairshortcut /*PT_Blacksmith_RepairShortcut.acr */,
|
||||
ActorSno._pt_jeweler_addsocketshortcut /* Actor PT_Jeweler_AddSocketShortcut */,
|
||||
ActorSno._pt_jeweler_combineshortcut /* Actor PT_Jeweler_CombineShortcut */,
|
||||
ActorSno._pt_jeweler_removegemshortcut /* Actor PT_Jeweler_RemoveGemShortcut */,
|
||||
ActorSno._pt_mystic_enhanceshortcut /* Actor PT_Mystic_EnhanceShortcut */,
|
||||
ActorSno._pt_mystic_identifyshortcut /* Actor PT_Mystic_IdentifyShortcut */
|
||||
)]
|
||||
public class ArtisanShortcut : InteractiveNPC
|
||||
{
|
||||
/*
|
||||
@ -42,79 +44,60 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
[442282] kanai_Cube_Wash
|
||||
[138979] NephalemCube
|
||||
//*/
|
||||
public ArtisanShortcut(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public ArtisanShortcut(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Attributes[GameAttribute.MinimapActive] = false;
|
||||
Attributes[GameAttribute.Conversation_Icon, 0] = 0;
|
||||
switch (this.ActorSNO.Id)
|
||||
{
|
||||
case 0x0002FA62:
|
||||
case 0x0002FA63:
|
||||
case 0x0002FA64:
|
||||
break;
|
||||
case 212517:
|
||||
case 212519:
|
||||
case 212521:
|
||||
break;
|
||||
case 212510:
|
||||
case 212511:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
player.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Misc.ANNDataMessage(Opcodes.OpenArtisanWindowMessage) { ActorID = this.DynamicID(player) });
|
||||
switch (this.ActorSNO.Id)
|
||||
switch (this.SNO)
|
||||
{
|
||||
case 0x0002FA62:
|
||||
case 0x0002FA63:
|
||||
case 0x0002FA64:
|
||||
case ActorSno._pt_blacksmith_repairshortcut:
|
||||
case ActorSno._pt_blacksmith_forgeweaponshortcut:
|
||||
case ActorSno._pt_blacksmith_forgearmorshortcut:
|
||||
player.ArtisanInteraction = "Blacksmith";
|
||||
break;
|
||||
case 212517:
|
||||
case 212519:
|
||||
case 212521:
|
||||
case ActorSno._pt_jeweler_combineshortcut:
|
||||
case ActorSno._pt_jeweler_addsocketshortcut:
|
||||
case ActorSno._pt_jeweler_removegemshortcut:
|
||||
player.ArtisanInteraction = "Jeweler";
|
||||
break;
|
||||
case 212510:
|
||||
case 212511:
|
||||
case ActorSno._pt_mystic_identifyshortcut:
|
||||
case ActorSno._pt_mystic_enhanceshortcut:
|
||||
player.ArtisanInteraction = "Mystic";
|
||||
break;
|
||||
case 439975:
|
||||
player.ArtisanInteraction = "Cube";
|
||||
break;
|
||||
}
|
||||
}
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if(this.World.Game.CurrentAct != 3000)
|
||||
switch (this.ActorSNO.Id)
|
||||
if (this.World.Game.CurrentAct != 3000)
|
||||
{
|
||||
case 0x0002FA62:
|
||||
case 0x0002FA63:
|
||||
case 0x0002FA64:
|
||||
if (!player.BlacksmithUnlocked)
|
||||
return false;
|
||||
break;
|
||||
case 212517:
|
||||
case 212519:
|
||||
case 212521:
|
||||
if (!player.JewelerUnlocked)
|
||||
return false;
|
||||
break;
|
||||
case 212510:
|
||||
case 212511:
|
||||
if (!player.MysticUnlocked)
|
||||
return false;
|
||||
break;
|
||||
switch (this.SNO)
|
||||
{
|
||||
case ActorSno._pt_blacksmith_repairshortcut:
|
||||
case ActorSno._pt_blacksmith_forgeweaponshortcut:
|
||||
case ActorSno._pt_blacksmith_forgearmorshortcut:
|
||||
if (!player.BlacksmithUnlocked)
|
||||
return false;
|
||||
break;
|
||||
case ActorSno._pt_jeweler_combineshortcut:
|
||||
case ActorSno._pt_jeweler_addsocketshortcut:
|
||||
case ActorSno._pt_jeweler_removegemshortcut:
|
||||
if (!player.JewelerUnlocked)
|
||||
return false;
|
||||
break;
|
||||
case ActorSno._pt_mystic_identifyshortcut:
|
||||
case ActorSno._pt_mystic_enhanceshortcut:
|
||||
if (!player.MysticUnlocked)
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (this.ActorSNO.Id == 439975)
|
||||
if (!player.KanaiUnlocked)
|
||||
return false;
|
||||
|
||||
return base.Reveal(player);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -21,11 +22,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
[HandledSNO(56947 /* PT_Blacksmith.acr */)]
|
||||
[HandledSNO(ActorSno._pt_blacksmith /* PT_Blacksmith.acr */)]
|
||||
public class Blacksmith : Artisan
|
||||
{
|
||||
public Blacksmith(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Blacksmith(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
// TODO add all blacksmith functionality? /fasbat
|
||||
//this.Attributes[GameAttribute.TeamID] = 0;
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.ItemsSystem;
|
||||
@ -13,11 +14,11 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Misc;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
[HandledSNO(56949 /* PT_Jewler.acr */)]
|
||||
[HandledSNO(ActorSno._pt_jeweler /* PT_Jewler.acr */)]
|
||||
public class Jeweler : Artisan
|
||||
{
|
||||
public Jeweler(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Jeweler(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.ItemsSystem;
|
||||
@ -13,11 +14,11 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Misc;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
[HandledSNO(56948 /* PT_Mystic.acr */)]
|
||||
[HandledSNO(ActorSno._pt_mystic /* PT_Mystic.acr */)]
|
||||
public class Mystic : Artisan
|
||||
{
|
||||
public Mystic(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Mystic(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.ItemsSystem;
|
||||
@ -15,11 +16,11 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Quest;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
[HandledSNO(398682 /* P1_LR_TieredRift_Nephalem.acr */)]
|
||||
[HandledSNO(ActorSno._p1_lr_tieredrift_nephalem /* P1_LR_TieredRift_Nephalem.acr */)]
|
||||
public class Nephalem : Artisan
|
||||
{
|
||||
public Nephalem(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Nephalem(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.NPC_Is_Operatable] = true;
|
||||
this.Attributes[GameAttribute.Is_NPC] = true;
|
||||
|
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Storage;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -21,17 +22,17 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
[HandledSNO(429005)] //Zoltun
|
||||
[HandledSNO(ActorSno._p2_hq_zoltunkulle)] //Zoltun
|
||||
//[HandledSNO(431095)] //Wardrobe
|
||||
public class ZoltunNPC : Artisan
|
||||
{
|
||||
public ZoltunNPC(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public ZoltunNPC(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
if (world.Game.CurrentAct == 3000)
|
||||
{
|
||||
|
||||
this.Conversations.Add(new ActorSystem.Interactions.ConversationInteraction(430146));
|
||||
this.Conversations.Add(new ConversationInteraction(430146));
|
||||
//[430335] [Worlds] a3dun_ruins_frost_city_a_02
|
||||
//[428493] [Worlds] a3dun_ruins_frost_city_a_01
|
||||
//this.Attributes[GameAttribute.Conversation_Icon, 0] = 1;
|
||||
@ -39,7 +40,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnTargeted(PlayerSystem.Player player, MessageSystem.Message.Definitions.World.TargetMessage message)
|
||||
public override void OnTargeted(Player player, MessageSystem.Message.Definitions.World.TargetMessage message)
|
||||
{
|
||||
base.OnTargeted(player, message);//player.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Misc.ANNDataMessage(MessageSystem.Opcodes.OpenArtisanWindowMessage) { ActorID = this.DynamicID });
|
||||
player.ArtisanInteraction = "KanaiCube";
|
||||
@ -47,7 +48,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (this.ActorSNO.Id == 439975)
|
||||
if (this.SNO == ActorSno._kanaicube_stand)
|
||||
if (!player.KanaiUnlocked)
|
||||
Interactions.Clear();
|
||||
else
|
||||
@ -59,18 +60,17 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
}
|
||||
}
|
||||
|
||||
[HandledSNO(
|
||||
439975 /* Actor KanaiCube_Stand */)]
|
||||
[HandledSNO(ActorSno._kanaicube_stand /* Actor KanaiCube_Stand */)]
|
||||
public class CubeShortcut : InteractiveNPC
|
||||
{
|
||||
public CubeShortcut(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CubeShortcut(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Attributes[GameAttribute.MinimapActive] = true;
|
||||
Attributes[GameAttribute.Conversation_Icon, 0] = 0;
|
||||
}
|
||||
|
||||
public override void OnTargeted(PlayerSystem.Player player, MessageSystem.Message.Definitions.World.TargetMessage message)
|
||||
public override void OnTargeted(Player player, MessageSystem.Message.Definitions.World.TargetMessage message)
|
||||
{
|
||||
player.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Misc.ANNDataMessage(Opcodes.OpenArtisanWindowMessage) { ActorID = this.DynamicID(player) });
|
||||
player.ArtisanInteraction = "Cube";
|
||||
|
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
//Blizzless Project 2022
|
||||
using System.Linq;
|
||||
//Blizzless Project 2022
|
||||
@ -10,32 +11,54 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
class Banner : Gizmo
|
||||
{
|
||||
public Banner(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
private static readonly Dictionary<int, ActorSno[]> bannerActors = new Dictionary<int, ActorSno[]>()
|
||||
{
|
||||
if (this.ActorSNO.Name.Contains("Player_2"))
|
||||
this.BannerPlayerIndex = 1;
|
||||
else if (this.ActorSNO.Name.Contains("Player_3"))
|
||||
this.BannerPlayerIndex = 2;
|
||||
else if (this.ActorSNO.Name.Contains("Player_4"))
|
||||
this.BannerPlayerIndex = 3;
|
||||
[0] = new ActorSno[] {
|
||||
ActorSno._banner_player_1,
|
||||
ActorSno._emotebanner_player_1,
|
||||
ActorSno._banner_player_1_act2,
|
||||
ActorSno._emotebanner_player_1_lit,
|
||||
ActorSno._banner_player_1_act5,
|
||||
},
|
||||
[1] = new ActorSno[] {
|
||||
ActorSno._banner_player_2,
|
||||
ActorSno._emotebanner_player_2,
|
||||
ActorSno._banner_player_2_act2,
|
||||
ActorSno._banner_player_2_act5,
|
||||
},
|
||||
[2] = new ActorSno[] {
|
||||
ActorSno._banner_player_3,
|
||||
ActorSno._emotebanner_player_3,
|
||||
ActorSno._banner_player_3_act2,
|
||||
ActorSno._banner_player_3_act5,
|
||||
},
|
||||
[3] = new ActorSno[] {
|
||||
ActorSno._banner_player_4,
|
||||
ActorSno._emotebanner_player_4,
|
||||
ActorSno._banner_player_4_act2,
|
||||
ActorSno._banner_player_4_act5,
|
||||
},
|
||||
};
|
||||
public Banner(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.BannerPlayerIndex = bannerActors.FirstOrDefault(x => x.Value.Contains(this.SNO)).Key;
|
||||
}
|
||||
|
||||
public int BannerPlayerIndex = 0;
|
||||
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (!base.Reveal(player))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
return base.Reveal(player);
|
||||
}
|
||||
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
Logger.Trace("(OnTargeted) Banner has been activated ");
|
||||
|
||||
|
@ -19,65 +19,65 @@ using System.Threading.Tasks;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(
|
||||
5350, //Leoric King
|
||||
51341, //Aranea
|
||||
3526, //Butcher
|
||||
6031, //Maghda
|
||||
80509, //Zoltun Kulle
|
||||
62975, //Belial (small)
|
||||
3349, //Belial (big)
|
||||
87642, //Gluttony
|
||||
96192, //Siegebreaker
|
||||
95250, //Cydaea
|
||||
89690, //Azmodan
|
||||
148449, //Izual
|
||||
196102, //Iskatu
|
||||
4630, //Despair (Rakanoth)
|
||||
114917, //Diablo
|
||||
133562, //Diablo's shadow
|
||||
291368, //Urzael
|
||||
279394, //Adria
|
||||
297730, //Malthael
|
||||
//Nephalem Bosses
|
||||
358429, //X1_LR_Boss_MistressofPain
|
||||
358489, //X1_LR_Boss_Angel_Corrupt_A
|
||||
358614, //X1_LR_Boss_creepMob_A
|
||||
359094, //X1_LR_Boss_SkeletonSummoner_C
|
||||
359688, //X1_LR_Boss_Succubus_A
|
||||
360281, //X1_LR_Boss_Snakeman_Melee_Belial
|
||||
360636, //X1_LR_Boss_TerrorDemon_A
|
||||
434201, //P4_LR_Boss_Sandmonster_Turret
|
||||
343743, //x1_LR_Boss_SkeletonKing
|
||||
343751, //x1_LR_Boss_Gluttony
|
||||
343759, //x1_LR_Boss_Despair
|
||||
343767, //x1_LR_Boss_MalletDemon
|
||||
344119, //X1_LR_Boss_morluSpellcaster_Ice
|
||||
344389, //X1_LR_Boss_SandMonster
|
||||
345004, //X1_LR_Boss_morluSpellcaster_Fire
|
||||
346563, //X1_LR_Boss_DeathMaiden
|
||||
353517, //X1_LR_Boss_Secret_Cow
|
||||
353535, //X1_LR_Boss_Squigglet
|
||||
353823, //X1_LR_Boss_sniperAngel
|
||||
353874, //X1_LR_Boss_westmarchBrute
|
||||
354050, //X1_LR_Boss_Dark_Angel
|
||||
354144, //X1_LR_Boss_BigRed_Izual
|
||||
354652, //X1_LR_Boss_demonFlyerMega
|
||||
426943, //X1_LR_Boss_RatKing_A
|
||||
428323, //X1_LR_Boss_RatKing_A_UI
|
||||
429010, //X1_LR_Boss_TerrorDemon_A_BreathMinion
|
||||
357917, //x1_LR_Boss_Butcher
|
||||
358208, //X1_LR_Boss_ZoltunKulle
|
||||
360766, //X1_LR_Boss_Minion_shadowVermin_A
|
||||
360794, //X1_LR_Boss_Minion_TerrorDemon_Clone_C
|
||||
360327, //X1_LR_Boss_Minion_Swarm_A
|
||||
360329 //X1_LR_Boss_Minion_electricEel_B
|
||||
ActorSno._skeletonking, //Leoric King
|
||||
ActorSno._spiderqueen, //Aranea
|
||||
ActorSno._butcher, //Butcher
|
||||
ActorSno._maghda, //Maghda
|
||||
ActorSno._zoltunkulle, //Zoltun Kulle
|
||||
ActorSno._belial_trueform, //Belial (small)
|
||||
ActorSno._belial, //Belial (big)
|
||||
ActorSno._gluttony, //Gluttony
|
||||
ActorSno._siegebreakerdemon, //Siegebreaker
|
||||
ActorSno._mistressofpain, //Cydaea
|
||||
ActorSno._azmodan, //Azmodan
|
||||
ActorSno._bigred_izual, //Izual
|
||||
ActorSno._terrordemon_a_unique_1000monster, //Iskatu
|
||||
ActorSno._despair, //Despair (Rakanoth)
|
||||
ActorSno._diablo, //Diablo
|
||||
ActorSno._terrordiablo, //Diablo's shadow
|
||||
ActorSno._x1_urzael_boss, //Urzael
|
||||
ActorSno._x1_adria_boss, //Adria
|
||||
ActorSno._x1_malthael_boss, //Malthael
|
||||
//Nephalem Bosses
|
||||
ActorSno._x1_lr_boss_mistressofpain, //X1_LR_Boss_MistressofPain
|
||||
ActorSno._x1_lr_boss_angel_corrupt_a, //X1_LR_Boss_Angel_Corrupt_A
|
||||
ActorSno._x1_lr_boss_creepmob_a, //X1_LR_Boss_creepMob_A
|
||||
ActorSno._x1_lr_boss_skeletonsummoner_c, //X1_LR_Boss_SkeletonSummoner_C
|
||||
ActorSno._x1_lr_boss_succubus_a, //X1_LR_Boss_Succubus_A
|
||||
ActorSno._x1_lr_boss_snakeman_melee_belial, //X1_LR_Boss_Snakeman_Melee_Belial
|
||||
ActorSno._x1_lr_boss_terrordemon_a, //X1_LR_Boss_TerrorDemon_A
|
||||
ActorSno._p4_lr_boss_sandmonster_turret, //P4_LR_Boss_Sandmonster_Turret
|
||||
ActorSno._x1_lr_boss_skeletonking, //x1_LR_Boss_SkeletonKing
|
||||
ActorSno._x1_lr_boss_gluttony, //x1_LR_Boss_Gluttony
|
||||
ActorSno._x1_lr_boss_despair, //x1_LR_Boss_Despair
|
||||
ActorSno._x1_lr_boss_malletdemon, //x1_LR_Boss_MalletDemon
|
||||
ActorSno._x1_lr_boss_morluspellcaster_ice, //X1_LR_Boss_morluSpellcaster_Ice
|
||||
ActorSno._x1_lr_boss_sandmonster, //X1_LR_Boss_SandMonster
|
||||
ActorSno._x1_lr_boss_morluspellcaster_fire, //X1_LR_Boss_morluSpellcaster_Fire
|
||||
ActorSno._x1_lr_boss_deathmaiden, //X1_LR_Boss_DeathMaiden
|
||||
ActorSno._x1_lr_boss_secret_cow, //X1_LR_Boss_Secret_Cow
|
||||
ActorSno._x1_lr_boss_squigglet, //X1_LR_Boss_Squigglet
|
||||
ActorSno._x1_lr_boss_sniperangel, //X1_LR_Boss_sniperAngel
|
||||
ActorSno._x1_lr_boss_westmarchbrute, //X1_LR_Boss_westmarchBrute
|
||||
ActorSno._x1_lr_boss_dark_angel, //X1_LR_Boss_Dark_Angel
|
||||
ActorSno._x1_lr_boss_bigred_izual, //X1_LR_Boss_BigRed_Izual
|
||||
ActorSno._x1_lr_boss_demonflyermega, //X1_LR_Boss_demonFlyerMega
|
||||
ActorSno._x1_lr_boss_ratking_a, //X1_LR_Boss_RatKing_A
|
||||
ActorSno._x1_lr_boss_ratking_a_ui, //X1_LR_Boss_RatKing_A_UI
|
||||
ActorSno._x1_lr_boss_terrordemon_a_breathminion, //X1_LR_Boss_TerrorDemon_A_BreathMinion
|
||||
ActorSno._x1_lr_boss_butcher, //x1_LR_Boss_Butcher
|
||||
ActorSno._x1_lr_boss_zoltunkulle, //X1_LR_Boss_ZoltunKulle
|
||||
ActorSno._x1_lr_boss_minion_shadowvermin_a, //X1_LR_Boss_Minion_shadowVermin_A
|
||||
ActorSno._x1_lr_boss_minion_terrordemon_clone_c, //X1_LR_Boss_Minion_TerrorDemon_Clone_C
|
||||
ActorSno._x1_lr_boss_minion_swarm_a, //X1_LR_Boss_Minion_Swarm_A
|
||||
ActorSno._x1_lr_boss_minion_electriceel_b //X1_LR_Boss_Minion_electricEel_B
|
||||
)/*Act Bosses*/]
|
||||
public sealed class Boss : Monster
|
||||
{
|
||||
public Boss(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Boss(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
if (snoId == 80509 && world.SNO == WorldSno.a2dun_zolt_lobby) this.SetVisible(false);
|
||||
if (sno == ActorSno._zoltunkulle && world.SNO == WorldSno.a2dun_zolt_lobby) this.SetVisible(false);
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
//this.Attributes[GameAttribute.Immune_To_Charm] = true;
|
||||
this.Attributes[GameAttribute.//Blizzless Project 2022
|
||||
@ -90,13 +90,14 @@ using_Bossbar] = true;
|
||||
this.Attributes[GameAttribute.TeamID] = 10;
|
||||
|
||||
this.WalkSpeed *= 0.5f;
|
||||
switch (snoId)
|
||||
MonsterBrain monsterBrain = (Brain as MonsterBrain);
|
||||
switch (sno)
|
||||
{
|
||||
case 114917: //Diablo
|
||||
//(Brain as MonsterBrain).RemovePresetPower(30592);
|
||||
//(Brain as MonsterBrain).AddPresetPower(136189); //[136189] Diablo_ClawRip
|
||||
(Brain as MonsterBrain).AddPresetPower(136223); //Diablo_RingOfFire
|
||||
(Brain as MonsterBrain).AddPresetPower(136226); //Diablo_HellSpikes
|
||||
case ActorSno._diablo: //Diablo
|
||||
//(Brain as MonsterBrain).RemovePresetPower(30592);
|
||||
//(Brain as MonsterBrain).AddPresetPower(136189); //[136189] Diablo_ClawRip
|
||||
monsterBrain.AddPresetPower(136223); //Diablo_RingOfFire
|
||||
monsterBrain.AddPresetPower(136226); //Diablo_HellSpikes
|
||||
;
|
||||
|
||||
/*
|
||||
@ -155,30 +156,30 @@ using_Bossbar] = true;
|
||||
|
||||
*/
|
||||
break;
|
||||
case 5350://Leoric King
|
||||
(Brain as MonsterBrain).RemovePresetPower(30592);
|
||||
(Brain as MonsterBrain).AddPresetPower(30496);
|
||||
(Brain as MonsterBrain).AddPresetPower(30504);
|
||||
(Brain as MonsterBrain).AddPresetPower(73824);
|
||||
(Brain as MonsterBrain).AddPresetPower(79334);
|
||||
case ActorSno._skeletonking://Leoric King
|
||||
monsterBrain.RemovePresetPower(30592);
|
||||
monsterBrain.AddPresetPower(30496);
|
||||
monsterBrain.AddPresetPower(30504);
|
||||
monsterBrain.AddPresetPower(73824);
|
||||
monsterBrain.AddPresetPower(79334);
|
||||
break;
|
||||
case 3526://Butcher
|
||||
(Brain as MonsterBrain).AddPresetPower(83008);
|
||||
case ActorSno._butcher://Butcher
|
||||
monsterBrain.AddPresetPower(83008);
|
||||
break;
|
||||
case 62975://Belial (small)
|
||||
case ActorSno._belial_trueform://Belial (small)
|
||||
this.HasLoot = false;
|
||||
break;
|
||||
case 3349://Belial (big)
|
||||
(Brain as MonsterBrain).AddPresetPower(152540);
|
||||
case ActorSno._belial://Belial (big)
|
||||
monsterBrain.AddPresetPower(152540);
|
||||
break;
|
||||
case 6031://Maghda
|
||||
(Brain as MonsterBrain).AddPresetPower(131744); //summon berserker
|
||||
//(Brain as MonsterBrain).AddPresetPower(131745); //mothDust
|
||||
(Brain as MonsterBrain).AddPresetPower(131749); //teleport
|
||||
case ActorSno._maghda://Maghda
|
||||
monsterBrain.AddPresetPower(131744); //summon berserker
|
||||
//(Brain as MonsterBrain).AddPresetPower(131745); //mothDust
|
||||
monsterBrain.AddPresetPower(131749); //teleport
|
||||
break;
|
||||
case 87642://Gluttony
|
||||
(Brain as MonsterBrain).AddPresetPower(93676); //gas cloud
|
||||
(Brain as MonsterBrain).AddPresetPower(211292); //slime spawn
|
||||
case ActorSno._gluttony://Gluttony
|
||||
monsterBrain.AddPresetPower(93676); //gas cloud
|
||||
monsterBrain.AddPresetPower(211292); //slime spawn
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -202,7 +203,7 @@ using_Bossbar] = true;
|
||||
|
||||
public override bool Reveal(PlayerSystem.Player player)
|
||||
{
|
||||
if (this.ActorSNO.Id == 196102)
|
||||
if (this.SNO == ActorSno._terrordemon_a_unique_1000monster)
|
||||
{
|
||||
this.Destroy();
|
||||
return false;
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
@ -11,11 +12,11 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(460429)]
|
||||
[HandledSNO(ActorSno._challenge_rift_inspect_armorrack)]
|
||||
class CR_Glass : Gizmo
|
||||
{
|
||||
public CR_Glass(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CR_Glass(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
@ -22,21 +23,20 @@ using System.Threading.Tasks;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
//5747
|
||||
[HandledSNO(5744, 89503 // trDun_cath_Chandilier_Trap.acr
|
||||
[HandledSNO(
|
||||
ActorSno._trdun_cath_chandelier_trap, ActorSno._trdun_cath_braizer_trap // trDun_cath_Chandilier_Trap.acr
|
||||
)]
|
||||
class CathedralLamp : Gizmo
|
||||
{
|
||||
public CathedralLamp(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CathedralLamp(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private int[] Unbreakables = new int[] { 81699, 5744, 89503 };
|
||||
|
||||
public void ReceiveDamage(Actor source, float damage)
|
||||
{
|
||||
if (this.ActorSNO.Id == 225252 && this.World.Game.CurrentSideQuest != 225253) return;
|
||||
if (this.SNO == ActorSno._trout_highlands_goatman_totem_gharbad && this.World.Game.CurrentSideQuest != 225253) return;
|
||||
|
||||
World.BroadcastIfRevealed(plr => new FloatingNumberMessage
|
||||
{
|
||||
@ -48,7 +48,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
Attributes[GameAttribute.Hitpoints_Cur] = Math.Max(Attributes[GameAttribute.Hitpoints_Cur] - damage, 0);
|
||||
Attributes.BroadcastChangedIfRevealed();
|
||||
|
||||
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !this.Unbreakables.Contains(this.ActorSNO.Id))
|
||||
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !this.SNO.IsUndestroyable())
|
||||
Die(source);
|
||||
}
|
||||
|
||||
@ -56,7 +56,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
base.OnTargeted(null, null);
|
||||
|
||||
Logger.Trace("Breaked barricade, id: {0}", this.ActorSNO.Id);
|
||||
Logger.Trace("Breaked barricade, id: {0}", this.SNO);
|
||||
|
||||
if (this.AnimationSet.TagMapAnimDefault.ContainsKey(AnimationSetKeys.DeathDefault))
|
||||
World.BroadcastIfRevealed(plr => new PlayAnimationMessage
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
@ -21,21 +22,20 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(5786 // trDun_cath_Chandilier_Trap.acr
|
||||
[HandledSNO(
|
||||
ActorSno._trdun_cath_wallcollapse_01// trDun_cath_Chandilier_Trap.acr
|
||||
)]
|
||||
class CathedralWall : Gizmo
|
||||
{
|
||||
public CathedralWall(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CathedralWall(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private int[] Unbreakables = new int[] { 81699, 5744, 89503 };
|
||||
|
||||
public void ReceiveDamage(Actor source, float damage)
|
||||
{
|
||||
if (this.ActorSNO.Id == 225252 && this.World.Game.CurrentSideQuest != 225253) return;
|
||||
if (this.SNO == ActorSno._trout_highlands_goatman_totem_gharbad && this.World.Game.CurrentSideQuest != 225253) return;
|
||||
|
||||
World.BroadcastIfRevealed(plr => new FloatingNumberMessage
|
||||
{
|
||||
@ -47,7 +47,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
Attributes[GameAttribute.Hitpoints_Cur] = Math.Max(Attributes[GameAttribute.Hitpoints_Cur] - damage, 0);
|
||||
Attributes.BroadcastChangedIfRevealed();
|
||||
|
||||
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !this.Unbreakables.Contains(this.ActorSNO.Id))
|
||||
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !this.SNO.IsUndestroyable())
|
||||
Die(source);
|
||||
}
|
||||
|
||||
@ -55,7 +55,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
base.OnTargeted(null, null);
|
||||
|
||||
Logger.Trace("Breaked barricade, id: {0}", this.ActorSNO.Id);
|
||||
Logger.Trace("Breaked barricade, id: {0}", this.SNO);
|
||||
|
||||
if (this.AnimationSet.TagMapAnimDefault.ContainsKey(AnimationSetKeys.DeathDefault))
|
||||
World.BroadcastIfRevealed(plr => new PlayAnimationMessage
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -25,11 +26,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(416137 /* x1_OpenWorld_LootRunObelisk_B.acr */)]
|
||||
[HandledSNO(ActorSno._p2_weeklychallenge_obelisk /* x1_OpenWorld_LootRunObelisk_B.acr */)]
|
||||
public sealed class ChallengeObelisk : Gizmo
|
||||
{
|
||||
public ChallengeObelisk(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public ChallengeObelisk(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
@ -52,11 +53,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
CollFlags = 0;
|
||||
|
||||
TickTimer Timeout = new SecondsTickTimer(this.World.Game, 3.5f);
|
||||
var Boom = System.Threading.Tasks.Task<bool>.Factory.StartNew(() => WaitToSpawn(Timeout));
|
||||
var Boom = Task<bool>.Factory.StartNew(() => WaitToSpawn(Timeout));
|
||||
Boom.ContinueWith(delegate
|
||||
{
|
||||
this.World.GetActorBySNO(473334).SetVisible(true);
|
||||
this.World.GetActorBySNO(473334).Reveal(player);
|
||||
var actor = this.World.GetActorBySNO(ActorSno._x1_openworld_challenge_rifts_portal);
|
||||
actor.SetVisible(true);
|
||||
actor.Reveal(player);
|
||||
|
||||
World.BroadcastIfRevealed(plr => new ACDCollFlagsMessage()
|
||||
{
|
||||
@ -73,8 +75,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
return false;
|
||||
if (!Attributes[GameAttribute.Operatable])
|
||||
{
|
||||
this.World.GetActorBySNO(473334).SetVisible(false);
|
||||
this.World.GetActorBySNO(473334).Unreveal(player);
|
||||
var actor = this.World.GetActorBySNO(ActorSno._x1_openworld_challenge_rifts_portal);
|
||||
actor.SetVisible(false);
|
||||
actor.Unreveal(player);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
@ -19,8 +20,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
private int NamePrefix = -1;
|
||||
private int NameSuffix = -1;
|
||||
|
||||
public Champion(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Champion(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.Hitpoints_Max] *= 4.0f;
|
||||
this.Attributes[GameAttribute.Immune_To_Charm] = true;
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -13,8 +14,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
private bool _checkpointReached = false;
|
||||
|
||||
public Checkpoint(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags, false)
|
||||
public Checkpoint(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags, false)
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
@ -15,11 +16,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(364559, 365097)]
|
||||
[HandledSNO(ActorSno._x1_global_chest_cursedchest, ActorSno._x1_global_chest_cursedchest_b)]
|
||||
class CursedChest : Gizmo
|
||||
{
|
||||
public CursedChest(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CursedChest(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Attributes[GameAttribute.MinimapActive] = true;
|
||||
}
|
||||
|
@ -12,14 +12,19 @@ using DiIiS_NA.GameServer.MessageSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Misc;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(364601, 368169)]
|
||||
[HandledSNO(
|
||||
//364601, 368169 - not found, possible values below
|
||||
ActorSno._p4_bountygrounds_cursedshrine,
|
||||
ActorSno._p4_bountygrounds_cursedshrine_a5
|
||||
)]
|
||||
class CursedShrine : Gizmo
|
||||
{
|
||||
public CursedShrine(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CursedShrine(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Attributes[GameAttribute.MinimapActive] = true;
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Math;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -29,22 +30,28 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
class DesctructibleLootContainer : Gizmo
|
||||
{
|
||||
private static readonly ActorSno[] tombs = new ActorSno[]
|
||||
{
|
||||
ActorSno._trout_oldtristramtombstonedestructiblea,
|
||||
ActorSno._trout_oldtristramtombstonedestructibled,
|
||||
ActorSno._trout_oldtristramtombstonedestructiblee,
|
||||
ActorSno._trout_oldtristramtombstonedestructibleb,
|
||||
ActorSno._tombstone_a_wilderness_trout_wilderness,
|
||||
ActorSno._tombstone_c_wilderness_trout_wilderness,
|
||||
ActorSno._tombstone_b_wilderness_trout_wilderness
|
||||
};
|
||||
|
||||
private bool haveDrop;
|
||||
|
||||
public DesctructibleLootContainer(World world, int snoId, bool haveDrop, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public DesctructibleLootContainer(World world, ActorSno sno, bool haveDrop, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.haveDrop = haveDrop;
|
||||
}
|
||||
|
||||
private List<int> tombs = new List<int>() { 6155, 6158, 6159, 6156, 74909, 75023, 75132 };
|
||||
|
||||
private int[] Unbreakables = new int[] { 81699, 5744, 89503 };
|
||||
|
||||
public void ReceiveDamage(Actor source, float damage /* critical, type */)
|
||||
{
|
||||
if (this.ActorSNO.Id == 225252 && this.World.Game.CurrentSideQuest != 225253) return;
|
||||
if (this.SNO == ActorSno._trout_highlands_goatman_totem_gharbad && this.World.Game.CurrentSideQuest != 225253) return;
|
||||
|
||||
World.BroadcastIfRevealed(plr => new FloatingNumberMessage
|
||||
{
|
||||
@ -58,7 +65,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
Attributes.BroadcastChangedIfRevealed();
|
||||
|
||||
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !this.Unbreakables.Contains(this.ActorSNO.Id))
|
||||
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !this.SNO.IsUndestroyable())
|
||||
{
|
||||
Die(source);
|
||||
}
|
||||
@ -92,9 +99,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
}
|
||||
}
|
||||
|
||||
Logger.Trace("Breaked barricade, id: {0}", this.ActorSNO.Id);
|
||||
Logger.Trace("Breaked barricade, id: {0}", this.SNO);
|
||||
|
||||
if (source != null && source is Player && this.tombs.Contains(this.ActorSNO.Id))
|
||||
if (source != null && source is Player && tombs.Contains(this.SNO))
|
||||
{
|
||||
(source as Player).AddAchievementCounter(74987243307171, 1);
|
||||
}
|
||||
@ -124,28 +131,28 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
Attributes.BroadcastChangedIfRevealed();
|
||||
|
||||
//handling quest triggers
|
||||
if (this.World.Game.QuestProgress.QuestTriggers.ContainsKey(this.ActorSNO.Id))
|
||||
if (this.World.Game.QuestProgress.QuestTriggers.ContainsKey((int)this.SNO))
|
||||
{
|
||||
var trigger = this.World.Game.QuestProgress.QuestTriggers[this.ActorSNO.Id];
|
||||
var trigger = this.World.Game.QuestProgress.QuestTriggers[(int)this.SNO];
|
||||
if (trigger.triggerType == DiIiS_NA.Core.MPQ.FileFormats.QuestStepObjectiveType.KillMonster)
|
||||
{
|
||||
this.World.Game.QuestProgress.UpdateCounter(this.ActorSNO.Id);
|
||||
if (trigger.count == this.World.Game.QuestProgress.QuestTriggers[this.ActorSNO.Id].counter)
|
||||
this.World.Game.QuestProgress.UpdateCounter((int)this.SNO);
|
||||
if (trigger.count == this.World.Game.QuestProgress.QuestTriggers[(int)this.SNO].counter)
|
||||
trigger.questEvent.Execute(this.World); // launch a questEvent
|
||||
}
|
||||
else
|
||||
if (trigger.triggerType == DiIiS_NA.Core.MPQ.FileFormats.QuestStepObjectiveType.MonsterFromGroup)
|
||||
{
|
||||
this.World.Game.QuestProgress.UpdateCounter(this.ActorSNO.Id);
|
||||
this.World.Game.QuestProgress.UpdateCounter((int)this.SNO);
|
||||
}
|
||||
}
|
||||
else if (this.World.Game.SideQuestProgress.QuestTriggers.ContainsKey(this.ActorSNO.Id))
|
||||
else if (this.World.Game.SideQuestProgress.QuestTriggers.ContainsKey((int)this.SNO))
|
||||
{
|
||||
var trigger = this.World.Game.SideQuestProgress.QuestTriggers[this.ActorSNO.Id];
|
||||
var trigger = this.World.Game.SideQuestProgress.QuestTriggers[(int)this.SNO];
|
||||
if (trigger.triggerType == DiIiS_NA.Core.MPQ.FileFormats.QuestStepObjectiveType.KillMonster)
|
||||
{
|
||||
this.World.Game.SideQuestProgress.UpdateSideCounter(this.ActorSNO.Id);
|
||||
if (trigger.count == this.World.Game.SideQuestProgress.QuestTriggers[this.ActorSNO.Id].counter)
|
||||
this.World.Game.SideQuestProgress.UpdateSideCounter((int)this.SNO);
|
||||
if (trigger.count == this.World.Game.SideQuestProgress.QuestTriggers[(int)this.SNO].counter)
|
||||
trigger.questEvent.Execute(this.World); // launch a questEvent
|
||||
}
|
||||
}
|
||||
|
@ -28,13 +28,13 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(175810)]
|
||||
[HandledSNO(ActorSno._caout_stingingwinds_khamsin_gate)]
|
||||
class Door : Gizmo
|
||||
{
|
||||
public bool isOpened = false;
|
||||
public Portal NearestPortal = null;
|
||||
public Door(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Door(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
var Portals = GetObjectsInRange<Portal>(10f);
|
||||
if (Portals.Count > 0)
|
||||
@ -49,14 +49,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (this.ActorSNO.Id == 167185) return false;
|
||||
if (this.ActorSNO.Id == 207615 && this.World.SNO != WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large) return false; //dakab door
|
||||
if (this.ActorSNO.Id == 153836 && this.World.SNO == WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large) return false; //not dakab door
|
||||
if (this.SNO == ActorSno._trout_cultists_summoning_portal_b) return false;
|
||||
if (this.SNO == ActorSno._a2dun_aqd_godhead_door_largepuzzle && this.World.SNO != WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large) return false; //dakab door
|
||||
if (this.SNO == ActorSno._a2dun_aqd_godhead_door && this.World.SNO == WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large) return false; //not dakab door
|
||||
|
||||
if (this.ActorSNO.Id == 220337) //Treasure Room door
|
||||
if (this.SNO == ActorSno._a2dun_zolt_random_portal_timed) //Treasure Room door
|
||||
this.isOpened = true;
|
||||
|
||||
if (this.ActorSNO.Id == 178161 && (float)DiIiS_NA.Core.Helpers.Math.FastRandom.Instance.NextDouble() < 0.3f) //Mysterious Cave door
|
||||
if (this.SNO == ActorSno._caout_oasis_mine_entrance_a && (float)DiIiS_NA.Core.Helpers.Math.FastRandom.Instance.NextDouble() < 0.3f) //Mysterious Cave door
|
||||
this.isOpened = true;
|
||||
|
||||
if (!base.Reveal(player))
|
||||
|
@ -30,8 +30,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
private ResolvedPortalDestination Destination { get; set; }
|
||||
|
||||
public DungeonStonePortal(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public DungeonStonePortal(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
|
||||
//this.Field2 = 0x9;//16;
|
||||
@ -79,7 +79,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
StartingPoint NeededStartingPoint = world.GetStartingPointById(this.Destination.StartingPointActorTag);
|
||||
var DestWorld = world.Game.GetWorld((WorldSno)this.Destination.WorldSNO);
|
||||
var StartingPoints = DestWorld.GetActorsBySNO(5502);
|
||||
var StartingPoints = DestWorld.GetActorsBySNO(ActorSno._start_location_0);
|
||||
foreach (var ST in StartingPoints)
|
||||
{
|
||||
if (ST.CurrentScene.SceneSNO.Id == this.Destination.StartingPointActorTag)
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
@ -21,11 +22,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(451547)] //EquipmentManagerTest
|
||||
[HandledSNO(ActorSno._equipmentmanagertest)] //EquipmentManagerTest
|
||||
class EquipmentManager : InteractiveNPC
|
||||
{
|
||||
public EquipmentManager(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public EquipmentManager(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -8,20 +9,20 @@ using DiIiS_NA.GameServer.MessageSystem;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(
|
||||
129345, //maghda
|
||||
5360, //Leoric ghost
|
||||
211014, //Maghda event
|
||||
215247, //Diablo_EndGame
|
||||
186130, //DemonVoiceover
|
||||
321479, 321451, 321454, //A5 voice actors
|
||||
175310, //PT_Mystic_NoVendor_NonGlobalFollower
|
||||
340101, //x1_Urzael_Invisible
|
||||
373456 //Malthael ghost
|
||||
ActorSno._maghda_a_tempprojection, //maghda
|
||||
ActorSno._skeletonking_ghost, //Leoric ghost
|
||||
ActorSno._maghda_nolaugh, //Maghda event
|
||||
ActorSno._diablo_endgame, //Diablo_EndGame
|
||||
ActorSno._demonvoiceover, //DemonVoiceover
|
||||
ActorSno._x1_westm_heroworship03_vo, ActorSno._x1_westm_heroworship01_vo, ActorSno._x1_westm_heroworship02_vo, //A5 voice actors
|
||||
ActorSno._pt_mystic_novendor_nonglobalfollower, //PT_Mystic_NoVendor_NonGlobalFollower
|
||||
ActorSno._x1_urzael_invisible, //x1_Urzael_Invisible
|
||||
ActorSno._x1_malthael_deathorbevent //Malthael ghost
|
||||
)]
|
||||
public class Ghost : InteractiveNPC
|
||||
{
|
||||
public Ghost(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Ghost(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.CollFlags = 0;
|
||||
this.WalkSpeed = 0;
|
||||
|
@ -19,15 +19,14 @@ using System;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(
|
||||
5984, //treasureGoblin_A
|
||||
5985, //treasureGoblin_B
|
||||
5987, //treasureGoblin_C
|
||||
5988 //treasureGoblin_D
|
||||
ActorSno._treasuregoblin_a, //treasureGoblin_A
|
||||
ActorSno._treasuregoblin_b, //treasureGoblin_B
|
||||
ActorSno._treasuregoblin_c //treasureGoblin_C
|
||||
)]
|
||||
public class Goblin : Monster
|
||||
{
|
||||
public Goblin(World world, int snoId, TagMap tags)//, int level = 1)
|
||||
: base(world, snoId, tags)
|
||||
public Goblin(World world, ActorSno sno, TagMap tags)//, int level = 1)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
// Override minimap icon in markerset tags
|
||||
this.WalkSpeed = 0;
|
||||
|
@ -1,6 +1,7 @@
|
||||
|
||||
//Blizzless Project 2022
|
||||
using System.Linq;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -12,13 +13,13 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(4860 /* PlayerHeadstone.acr */)]
|
||||
[HandledSNO(ActorSno._playerheadstone /* PlayerHeadstone.acr */)]
|
||||
class Headstone : Gizmo
|
||||
{
|
||||
public int playerIndex { get; set; }
|
||||
|
||||
public Headstone(World world, int snoId, TagMap tags, int playerIndex = -1)
|
||||
: base(world, snoId, tags)
|
||||
public Headstone(World world, ActorSno sno, TagMap tags, int playerIndex = -1)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.playerIndex = playerIndex;
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
|
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using System.Linq;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -11,11 +12,16 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(141246, 226343, 226345, 309879)]
|
||||
[HandledSNO(
|
||||
ActorSno._priest_male_b_nolook,
|
||||
ActorSno._priest_caldeum,
|
||||
ActorSno._priest_bastionskeep_healer,
|
||||
ActorSno._x1_a5_westmhub_healer
|
||||
)]
|
||||
public sealed class Healer : InteractiveNPC
|
||||
{
|
||||
public Healer(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Healer(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.TeamID] = 0;
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -21,8 +22,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
class Healthwell : Gizmo
|
||||
{
|
||||
public Healthwell(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Healthwell(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Attributes[GameAttribute.MinimapActive] = true;
|
||||
Attributes[GameAttribute.Gizmo_State] = 0;
|
||||
|
@ -32,8 +32,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
public Player Owner = null;
|
||||
|
||||
public HearthPortal(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public HearthPortal(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
this.SetVisible(false);
|
||||
|
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Math;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -23,13 +24,34 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(81610, 105372, 81609, 107419, 106354, 115928, 144328, 176826)]
|
||||
[HandledSNO(
|
||||
ActorSno._a1_genericvendor_tinker,
|
||||
ActorSno._a1_uniquevendor_alchemist,
|
||||
ActorSno._a1_uniquevendor_armorer,
|
||||
ActorSno._a1_uniquevendor_curios,
|
||||
ActorSno._a1_uniquevendor_weaponsmith,
|
||||
ActorSno._a2_uniquevendor_event_mapvendor,
|
||||
ActorSno._a2_uniquevendor_tinker,
|
||||
ActorSno._a3_uniquevendor_alchemist
|
||||
)]
|
||||
public class HiddenVendor : Vendor
|
||||
{
|
||||
// TODO: extract
|
||||
private static readonly Dictionary<ActorSno, ulong> criteria = new Dictionary<ActorSno, ulong>
|
||||
{
|
||||
[ActorSno._a1_genericvendor_tinker] = 74987243309911,
|
||||
[ActorSno._a1_uniquevendor_alchemist] = 74987243309912,
|
||||
[ActorSno._a1_uniquevendor_armorer] = 74987243309913,
|
||||
[ActorSno._a1_uniquevendor_curios] = 74987243309914,
|
||||
[ActorSno._a1_uniquevendor_weaponsmith] = 74987243309915,
|
||||
[ActorSno._a2_uniquevendor_event_mapvendor] = 74987243309918,
|
||||
[ActorSno._a2_uniquevendor_tinker] = 74987243309920,
|
||||
[ActorSno._a3_uniquevendor_alchemist] = 74987243309922
|
||||
};
|
||||
private bool Enabled = false;
|
||||
|
||||
public HiddenVendor(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public HiddenVendor(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Enabled = (FastRandom.Instance.Next(100) < 40);
|
||||
}
|
||||
@ -57,33 +79,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
public override void OnTargeted(PlayerSystem.Player player, TargetMessage message)
|
||||
{
|
||||
base.OnTargeted(player, message);
|
||||
switch (this.ActorSNO.Id)
|
||||
{
|
||||
case 81610:
|
||||
player.GrantCriteria(74987243309911);
|
||||
break;
|
||||
case 105372:
|
||||
player.GrantCriteria(74987243309912);
|
||||
break;
|
||||
case 81609:
|
||||
player.GrantCriteria(74987243309913);
|
||||
break;
|
||||
case 107419:
|
||||
player.GrantCriteria(74987243309914);
|
||||
break;
|
||||
case 106354:
|
||||
player.GrantCriteria(74987243309915);
|
||||
break;
|
||||
case 115928:
|
||||
player.GrantCriteria(74987243309918);
|
||||
break;
|
||||
case 144328:
|
||||
player.GrantCriteria(74987243309920);
|
||||
break;
|
||||
case 176826:
|
||||
player.GrantCriteria(74987243309922);
|
||||
break;
|
||||
}
|
||||
if (criteria.ContainsKey(SNO))
|
||||
player.GrantCriteria(criteria[SNO]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,26 +10,27 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.Core.Storage.AccountDataBase.Entities;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
{
|
||||
[HandledSNO(4062 /* Enchantress.acr */)]
|
||||
[HandledSNO(ActorSno._enchantress /* Enchantress.acr */)]
|
||||
public class Enchantress : Hireling
|
||||
{
|
||||
public Enchantress(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Enchantress(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
mainSNO = 4062;
|
||||
hirelingSNO = 4482;
|
||||
proxySNO = 192942;
|
||||
mainSNO = ActorSno._enchantress;
|
||||
hirelingSNO = ActorSno._hireling_enchantress;
|
||||
proxySNO = ActorSno._hireling_enchantress_proxy;
|
||||
skillKit = 484938;
|
||||
hirelingGBID = StringHashHelper.HashItemName("Enchantress");
|
||||
this.Attributes[GameAttribute.Hireling_Class] = 3;
|
||||
}
|
||||
|
||||
public override Hireling CreateHireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
public override Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
return new Enchantress(world, snoId, tags);
|
||||
return new Enchantress(world, sno, tags);
|
||||
}
|
||||
|
||||
public void SetSkill(Player player, int SkillSNOId)
|
||||
|
@ -36,14 +36,15 @@ using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
using DiIiS_NA.GameServer.GSSystem.ItemsSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Hireling;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
{
|
||||
public class Hireling : InteractiveNPC, IUpdateable
|
||||
{
|
||||
protected int mainSNO = -1;
|
||||
protected int hirelingSNO = -1;
|
||||
protected int proxySNO = -1;
|
||||
protected ActorSno mainSNO = ActorSno.__NONE;
|
||||
protected ActorSno hirelingSNO = ActorSno.__NONE;
|
||||
protected ActorSno proxySNO = ActorSno.__NONE;
|
||||
protected int skillKit = -1;
|
||||
protected int hirelingGBID = -1;
|
||||
|
||||
@ -51,15 +52,15 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
// Resource generation timing
|
||||
private int _lastResourceUpdateTick;
|
||||
|
||||
public bool IsProxy { get { return ActorSNO.Id == proxySNO; } }
|
||||
public bool IsHireling { get { return ActorSNO.Id == hirelingSNO; } }
|
||||
public bool HasHireling { get { return this.hirelingSNO != -1; } }
|
||||
public bool HasProxy { get { return this.proxySNO != -1; } }
|
||||
public bool IsProxy { get { return SNO == proxySNO; } }
|
||||
public bool IsHireling { get { return SNO == hirelingSNO; } }
|
||||
public bool HasHireling { get { return this.hirelingSNO != ActorSno.__NONE; } }
|
||||
public bool HasProxy { get { return this.proxySNO != ActorSno.__NONE; } }
|
||||
public int PetType { get { return IsProxy ? 22 : 0; } }
|
||||
private Dictionary<Player, Dictionary<int, Item>> _equipment = new Dictionary<Player, Dictionary<int, Item>>();
|
||||
|
||||
public Hireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Hireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
Interactions.Add(new HireInteraction());
|
||||
@ -156,7 +157,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
|
||||
}
|
||||
|
||||
public virtual Hireling CreateHireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
public virtual Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
@ -231,7 +232,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
|
||||
public override void OnHire(Player player)
|
||||
{
|
||||
if (hirelingSNO == -1)
|
||||
if (hirelingSNO == ActorSno.__NONE)
|
||||
return;
|
||||
|
||||
if (this.World.Game.Players.Count > 1) return;
|
||||
@ -274,7 +275,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
}
|
||||
if (player.ActiveHireling == null)
|
||||
return;
|
||||
if (proxySNO == -1)
|
||||
if (proxySNO == ActorSno.__NONE)
|
||||
return;
|
||||
|
||||
if (IsHireling || IsProxy)
|
||||
@ -447,7 +448,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
Owner = player.PlayerIndex,
|
||||
Index = 10,
|
||||
PetId = this.DynamicID(player),
|
||||
Type = this.ActorSNO.Id == 274457 ? 29 : 0,
|
||||
Type = this.SNO == ActorSno._x1_malthael_npc ? 29 : 0,
|
||||
});
|
||||
|
||||
return true;
|
||||
|
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -21,15 +22,16 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
{
|
||||
//[HandledSNO(144681 /* Leah_Party.acr */)]
|
||||
public class Leah : Hireling
|
||||
// TODO: Check for copy-paste from Scoundrel
|
||||
//[HandledSNO(144681 /* Leah_Party.acr */)]
|
||||
public class Leah : Hireling
|
||||
{
|
||||
public Leah(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Leah(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
mainSNO = 4580;
|
||||
hirelingSNO = 52694;
|
||||
proxySNO = 192941;
|
||||
mainSNO = ActorSno._leah;
|
||||
hirelingSNO = ActorSno._hireling_scoundrel;
|
||||
proxySNO = ActorSno._hireling_scoundrel_proxy;
|
||||
skillKit = 0x8AFE;
|
||||
hirelingGBID = StringHashHelper.HashItemName("Scoundrel");
|
||||
Attributes[GameAttribute.Hireling_Class] = 4;
|
||||
@ -49,9 +51,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
|
||||
}
|
||||
|
||||
public override Hireling CreateHireling(World world, int snoId, TagMap tags)
|
||||
public override Hireling CreateHireling(World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
return new Leah(world, snoId, tags);
|
||||
return new Leah(world, sno, tags);
|
||||
}
|
||||
|
||||
public override bool Reveal(Player player)
|
||||
|
@ -10,18 +10,19 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.Core.Storage.AccountDataBase.Entities;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
{
|
||||
public class MalthaelHireling : Hireling
|
||||
{
|
||||
public MalthaelHireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public MalthaelHireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
//Brain = new AISystem.Brains.HirelingBrain(this);
|
||||
mainSNO = 365908;
|
||||
hirelingSNO = 274457;
|
||||
proxySNO = 0x0002F1AC;
|
||||
mainSNO = ActorSno._x1_malthael_npc_nocollision;
|
||||
hirelingSNO = ActorSno._x1_malthael_npc;
|
||||
proxySNO = ActorSno._hireling_templar_proxy;
|
||||
skillKit = 484941;
|
||||
hirelingGBID = StringHashHelper.HashItemName("Templar");
|
||||
this.Attributes[GameAttribute.Hireling_Class] = 0;
|
||||
@ -29,9 +30,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
this.Attributes[GameAttribute.Team_Override] = 2;
|
||||
}
|
||||
|
||||
public override Hireling CreateHireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
public override Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
return new MalthaelHireling(world, snoId, tags);
|
||||
return new MalthaelHireling(world, sno, tags);
|
||||
}
|
||||
|
||||
public void SetSkill(Player player, int SkillSNOId)
|
||||
|
@ -10,26 +10,27 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.Core.Storage.AccountDataBase.Entities;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
{
|
||||
[HandledSNO(4644 /* Scoundrel.acr */)]
|
||||
[HandledSNO(ActorSno._scoundrel /* Scoundrel.acr */)]
|
||||
public class Scoundrel : Hireling
|
||||
{
|
||||
public Scoundrel(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Scoundrel(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
mainSNO = 4644;
|
||||
hirelingSNO = 52694;
|
||||
proxySNO = 192941;
|
||||
mainSNO = ActorSno._scoundrel;
|
||||
hirelingSNO = ActorSno._hireling_scoundrel;
|
||||
proxySNO = ActorSno._hireling_scoundrel_proxy;
|
||||
skillKit = 484937;
|
||||
hirelingGBID = StringHashHelper.HashItemName("Scoundrel");
|
||||
Attributes[GameAttribute.Hireling_Class] = 2;
|
||||
}
|
||||
|
||||
public override Hireling CreateHireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
public override Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
return new Scoundrel(world, snoId, tags);
|
||||
return new Scoundrel(world, sno, tags);
|
||||
}
|
||||
|
||||
public void SetSkill(Player player, int SkillSNOId)
|
||||
|
@ -10,26 +10,27 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.Core.Storage.AccountDataBase.Entities;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
{
|
||||
[HandledSNO(4538 /* Templar.acr */)]
|
||||
[HandledSNO(ActorSno._templar /* Templar.acr */)]
|
||||
public class Templar : Hireling
|
||||
{
|
||||
public Templar(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Templar(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
mainSNO = 4538;
|
||||
hirelingSNO = 0x0000CDD5;
|
||||
proxySNO = 0x0002F1AC;
|
||||
mainSNO = ActorSno._templar;
|
||||
hirelingSNO = ActorSno._hireling_templar;
|
||||
proxySNO = ActorSno._hireling_templar_proxy;
|
||||
skillKit = 484941;
|
||||
hirelingGBID = StringHashHelper.HashItemName("Templar");
|
||||
this.Attributes[GameAttribute.Hireling_Class] = 1;
|
||||
}
|
||||
|
||||
public override Hireling CreateHireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
public override Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
return new Templar(world, snoId, tags);
|
||||
return new Templar(world, sno, tags);
|
||||
}
|
||||
|
||||
public void SetSkill(Player player, int SkillSNOId)
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using System;
|
||||
@ -15,20 +16,20 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(
|
||||
//act 1
|
||||
109467,
|
||||
ActorSno._trout_barkeep,
|
||||
//act 2
|
||||
180291,
|
||||
ActorSno._a2_uniquevendor_innkeeper,
|
||||
//act 3
|
||||
181473,
|
||||
ActorSno._a3_uniquevendor_innkeeper,
|
||||
//act 4
|
||||
182413,
|
||||
ActorSno._a4_uniquevendor_innkeeper,
|
||||
//act 5
|
||||
309718
|
||||
)]
|
||||
ActorSno._x1_a5_uniquevendor_innkeeper
|
||||
)]
|
||||
public class Innkeeper : Vendor
|
||||
{
|
||||
public Innkeeper(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Innkeeper(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using System;
|
||||
@ -13,37 +14,36 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(361241)]
|
||||
[HandledSNO(ActorSno._x1_randomitemnpc)]
|
||||
public class Kadala : Vendor
|
||||
{
|
||||
public Kadala(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
private static readonly int[] itemGbIds = new int[]
|
||||
{
|
||||
-1492848355,
|
||||
-594428401,
|
||||
2050033703,
|
||||
-2026108002,
|
||||
-537237168,
|
||||
-1493063970,
|
||||
-2010009315,
|
||||
1281756953,
|
||||
-1492484569,
|
||||
1816611999,
|
||||
-767866790,
|
||||
-1099096773,
|
||||
-1780286480,
|
||||
215071258,
|
||||
-1492657844,
|
||||
-1843121997
|
||||
};
|
||||
public Kadala(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
}
|
||||
|
||||
protected override List<ItemsSystem.Item> GetVendorItems()
|
||||
{
|
||||
var list = new List<ItemsSystem.Item>
|
||||
{
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1492848355), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-594428401), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(2050033703), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-2026108002), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-537237168), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1493063970), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-2010009315), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(1281756953), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1492484569), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(1816611999), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-767866790), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1099096773), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1780286480), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(215071258), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1492657844), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1843121997), 1, false)
|
||||
};
|
||||
|
||||
return list;
|
||||
return itemGbIds.Select(x => ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(x), 1, false)).ToList();
|
||||
}
|
||||
|
||||
public override bool Reveal(PlayerSystem.Player player)
|
||||
|
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Math;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -31,26 +32,26 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(96993)]
|
||||
[HandledSNO(ActorSno._a1dun_cath_chest_rare)]
|
||||
class LegendaryChest : LootContainer
|
||||
{
|
||||
public bool ChestActive = false;
|
||||
|
||||
public LegendaryChest(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public LegendaryChest(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.NameSNOId = 108122;
|
||||
this.NameSNO = ActorSno._caout_stingingwinds_chest;
|
||||
this.Field7 = 1;
|
||||
}
|
||||
|
||||
public override bool Reveal(PlayerSystem.Player player)
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (!this.ChestActive) return false;
|
||||
return base.Reveal(player);
|
||||
}
|
||||
|
||||
|
||||
public override void OnTargeted(PlayerSystem.Player player, TargetMessage message)
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
if (this.Attributes[GameAttribute.Disabled]) return;
|
||||
|
||||
|
@ -35,32 +35,32 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
private bool haveDrop = false;
|
||||
public bool rewardChestAvailable = true;
|
||||
|
||||
public LootContainer(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public LootContainer(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
if (this.ActorSNO.Id == 200872) this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
if (this.SNO == ActorSno._a3dunrmpt_interactives_signal_fire_a_prop) this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
|
||||
if (this.ActorSNO.Name.ToLower().Contains("chest") || this.ActorSNO.Name.ToLower().Contains("corpse")) haveDrop = true;
|
||||
if (this.SNO.IsChest() || this.SNO.IsCorpse()) haveDrop = true;
|
||||
|
||||
switch (snoId)
|
||||
switch (sno)
|
||||
{
|
||||
case 79319: //bloody
|
||||
case ActorSno._trout_highlands_chest_bloody: //bloody
|
||||
this.Quality = 1;
|
||||
break;
|
||||
case 62860: //rare
|
||||
case 101500: //Zolt_rare
|
||||
case 363725: //event
|
||||
case ActorSno._trout_fields_chest_rare: //rare
|
||||
case ActorSno._a2dun_zolt_chest_rare: //Zolt_rare
|
||||
case ActorSno._x1_global_chest_startsclean: //event
|
||||
this.Quality = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (snoId == 363725) rewardChestAvailable = false;
|
||||
if (sno == ActorSno._x1_global_chest_startsclean) rewardChestAvailable = false;
|
||||
}
|
||||
|
||||
public override bool Reveal(PlayerSystem.Player player)
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (this.ActorSNO.Id == 190524 && this.World.SNO != WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large) return false; //dakab chest
|
||||
if (this.ActorSNO.Id == 190708 && this.World.SNO == WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large) return false; //not dakab chest
|
||||
if (this.SNO == ActorSno._a2dun_aqd_chest_special_facepuzzle_large && this.World.SNO != WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large) return false; //dakab chest
|
||||
if (this.SNO == ActorSno._a2dun_aqd_chest_rare_facepuzzlesmall && this.World.SNO == WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large) return false; //not dakab chest
|
||||
|
||||
if (!rewardChestAvailable) return false; //event reward chest
|
||||
|
||||
@ -79,143 +79,139 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
|
||||
|
||||
public override void OnTargeted(PlayerSystem.Player player, TargetMessage message)
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
if (this.ActorSNO.Id == 450254)
|
||||
if (this.SNO == ActorSno._p4_setdung_totem_cru_thorns)
|
||||
return;
|
||||
|
||||
if (this.Attributes[GameAttribute.Disabled]) return;
|
||||
|
||||
base.OnTargeted(player, message);
|
||||
|
||||
player.AddAchievementCounter(74987243307152, 1);
|
||||
|
||||
if (ActorData.TagMap.ContainsKey(ActorKeys.Lore))
|
||||
Logger.Debug("Lore detected: {0}", ActorData.TagMap[ActorKeys.Lore].Id);
|
||||
|
||||
if (this.SNO == ActorSno._trout_highlands_manor_firewood) //Leor bone
|
||||
{
|
||||
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
this.World.SpawnItem(this, plr, -629520052);
|
||||
}
|
||||
if (this.SNO == ActorSno._trout_newtristram_adria_blackmushroom) //Black Mushroom
|
||||
{
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
this.World.SpawnItem(this, plr, -1993550104);
|
||||
}
|
||||
if (this.SNO == ActorSno._caout_oasis_chest_rare_mapvendorcave) //Rainbow Chest
|
||||
{
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
this.World.SpawnItem(this, plr, 725082635);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.Attributes[GameAttribute.Disabled]) return;
|
||||
|
||||
base.OnTargeted(player, message);
|
||||
|
||||
player.AddAchievementCounter(74987243307152, 1);
|
||||
|
||||
if (ActorData.TagMap.ContainsKey(ActorKeys.Lore))
|
||||
Logger.Debug("Lore detected: {0}", ActorData.TagMap[ActorKeys.Lore].Id);
|
||||
|
||||
if (this.ActorSNO.Id == 213905) //Leor bone
|
||||
{
|
||||
if (haveDrop)
|
||||
{
|
||||
var dropRates = this.World.Game.IsHardcore ? LootManager.GetSeasonalDropRates((int)this.Quality, Program.MaxLevel) : LootManager.GetDropRates((int)this.Quality, Program.MaxLevel);
|
||||
foreach (var rate in dropRates)
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
this.World.SpawnItem(this, plr, -629520052);
|
||||
}
|
||||
if (this.ActorSNO.Id == 172948) //Black Mushroom
|
||||
{
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
this.World.SpawnItem(this, plr, -1993550104);
|
||||
}
|
||||
if (this.ActorSNO.Id == 207706) //Rainbow Chest
|
||||
{
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
this.World.SpawnItem(this, plr, 725082635);
|
||||
}
|
||||
|
||||
if (haveDrop)
|
||||
{
|
||||
var dropRates = this.World.Game.IsHardcore ? LootManager.GetSeasonalDropRates((int)this.Quality, Program.MaxLevel) : LootManager.GetDropRates((int)this.Quality, Program.MaxLevel);
|
||||
foreach (var rate in dropRates)
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
{
|
||||
float seed = (float)FastRandom.Instance.NextDouble();
|
||||
if (seed < 0.8f)
|
||||
this.World.SpawnGold(this, plr);
|
||||
if (seed < 0.6f)
|
||||
this.World.SpawnGold(this, plr);
|
||||
if (seed < 0.5f)
|
||||
this.World.SpawnRandomCraftItem(this, plr);
|
||||
if (seed < 0.2f)
|
||||
this.World.SpawnRandomCraftItem(this, plr);
|
||||
if (seed < 0.07f)
|
||||
this.World.SpawnRandomGem(this, plr);
|
||||
if (seed < 0.04f)
|
||||
this.World.SpawnRandomGem(this, plr);
|
||||
if (seed < 0.10f)
|
||||
this.World.SpawnRandomPotion(this, plr);
|
||||
if (seed < (rate * (1f + plr.Attributes[GameAttribute.Magic_Find])))
|
||||
{
|
||||
float seed = (float)FastRandom.Instance.NextDouble();
|
||||
if (seed < 0.8f)
|
||||
this.World.SpawnGold(this, plr);
|
||||
if (seed < 0.6f)
|
||||
this.World.SpawnGold(this, plr);
|
||||
if (seed < 0.5f)
|
||||
this.World.SpawnRandomCraftItem(this, plr);
|
||||
if (seed < 0.2f)
|
||||
this.World.SpawnRandomCraftItem(this, plr);
|
||||
if (seed < 0.07f)
|
||||
this.World.SpawnRandomGem(this, plr);
|
||||
if (seed < 0.04f)
|
||||
this.World.SpawnRandomGem(this, plr);
|
||||
if (seed < 0.10f)
|
||||
this.World.SpawnRandomPotion(this, plr);
|
||||
if (seed < (rate * (1f + plr.Attributes[GameAttribute.Magic_Find])))
|
||||
{
|
||||
var lootQuality = this.World.Game.IsHardcore ? LootManager.GetSeasonalLootQuality((int)this.Quality, this.World.Game.Difficulty) : LootManager.GetLootQuality((int)this.Quality, this.World.Game.Difficulty);
|
||||
this.World.SpawnRandomEquip(plr, plr, lootQuality);
|
||||
}
|
||||
else
|
||||
break;
|
||||
var lootQuality = this.World.Game.IsHardcore ? LootManager.GetSeasonalLootQuality((int)this.Quality, this.World.Game.Difficulty) : LootManager.GetLootQuality((int)this.Quality, this.World.Game.Difficulty);
|
||||
this.World.SpawnRandomEquip(plr, plr, lootQuality);
|
||||
}
|
||||
}
|
||||
|
||||
if (GeneratorsSystem.LoreRegistry.Lore.ContainsKey(this.World.SNO) && GeneratorsSystem.LoreRegistry.Lore[this.World.SNO].chests_lore.ContainsKey(this.ActorSNO.Id))
|
||||
foreach (var p in this.GetPlayersInRange(30))
|
||||
foreach (int loreId in GeneratorsSystem.LoreRegistry.Lore[this.World.SNO].chests_lore[this.ActorSNO.Id])
|
||||
if (!p.HasLore(loreId))
|
||||
{
|
||||
World.DropItem(this, null, ItemGenerator.CreateLore(p, loreId));
|
||||
break;
|
||||
}
|
||||
|
||||
World.BroadcastIfRevealed(plr => new PlayAnimationMessage
|
||||
{
|
||||
ActorID = this.DynamicID(plr),
|
||||
AnimReason = 5,
|
||||
UnitAniimStartTime = 0,
|
||||
tAnim = new PlayAnimationMessageSpec[]
|
||||
{
|
||||
new PlayAnimationMessageSpec()
|
||||
{
|
||||
Duration = 50,
|
||||
AnimationSNO = AnimationSet.TagMapAnimDefault[AnimationSetKeys.Opening],
|
||||
PermutationIndex = 0,
|
||||
AnimationTag = 0,
|
||||
Speed = 1
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}, this);
|
||||
if (GeneratorsSystem.LoreRegistry.Lore.ContainsKey(this.World.SNO) && GeneratorsSystem.LoreRegistry.Lore[this.World.SNO].chests_lore.ContainsKey(this.SNO))
|
||||
foreach (var p in this.GetPlayersInRange(30))
|
||||
foreach (int loreId in GeneratorsSystem.LoreRegistry.Lore[this.World.SNO].chests_lore[this.SNO])
|
||||
if (!p.HasLore(loreId))
|
||||
{
|
||||
World.DropItem(this, null, ItemGenerator.CreateLore(p, loreId));
|
||||
break;
|
||||
}
|
||||
|
||||
World.BroadcastIfRevealed(plr => new SetIdleAnimationMessage
|
||||
World.BroadcastIfRevealed(plr => new PlayAnimationMessage
|
||||
{
|
||||
ActorID = this.DynamicID(plr),
|
||||
AnimReason = 5,
|
||||
UnitAniimStartTime = 0,
|
||||
tAnim = new PlayAnimationMessageSpec[]
|
||||
{
|
||||
ActorID = this.DynamicID(plr),
|
||||
AnimationSNO = AnimationSetKeys.Open.ID
|
||||
}, this);
|
||||
|
||||
this.Attributes[GameAttribute.Gizmo_Has_Been_Operated] = true;
|
||||
//this.Attributes[GameAttribute.Gizmo_Operator_ACDID] = unchecked((int)player.DynamicID);
|
||||
this.Attributes[GameAttribute.Chest_Open, 0xFFFFFF] = true;
|
||||
Attributes.BroadcastChangedIfRevealed();
|
||||
|
||||
this.Attributes[GameAttribute.Disabled] = true;
|
||||
|
||||
if (this.ActorSNO.Id == 5747)
|
||||
new PlayAnimationMessageSpec()
|
||||
{
|
||||
var lamp = this.GetActorsInRange(50f).Where(x => x.ActorSNO.Id == 5744 || x.ActorSNO.Id == 89503).First();
|
||||
if (lamp != null)
|
||||
(lamp as CathedralLamp).Die();
|
||||
Duration = 50,
|
||||
AnimationSNO = AnimationSet.TagMapAnimDefault[AnimationSetKeys.Opening],
|
||||
PermutationIndex = 0,
|
||||
AnimationTag = 0,
|
||||
Speed = 1
|
||||
}
|
||||
}
|
||||
|
||||
if (this.ActorSNO.Id == 2975)
|
||||
{
|
||||
if (this.World.SNO == WorldSno.a2dun_zolt_level01)
|
||||
foreach (var plr in this.World.Game.Players.Values)
|
||||
plr.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
{
|
||||
snoQuest = 57337,
|
||||
snoLevelArea = -1,
|
||||
StepID = 35,
|
||||
TaskIndex = 0,
|
||||
Counter = 1,
|
||||
Checked = 1,
|
||||
});
|
||||
else
|
||||
foreach (var plr in this.World.Game.Players.Values)
|
||||
plr.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
{
|
||||
snoQuest = 57337,
|
||||
snoLevelArea = -1,
|
||||
StepID = 35,
|
||||
TaskIndex = 1,
|
||||
Counter = 1,
|
||||
Checked = 1,
|
||||
});
|
||||
}
|
||||
}, this);
|
||||
|
||||
World.BroadcastIfRevealed(plr => new SetIdleAnimationMessage
|
||||
{
|
||||
ActorID = this.DynamicID(plr),
|
||||
AnimationSNO = AnimationSetKeys.Open.ID
|
||||
}, this);
|
||||
|
||||
this.Attributes[GameAttribute.Gizmo_Has_Been_Operated] = true;
|
||||
//this.Attributes[GameAttribute.Gizmo_Operator_ACDID] = unchecked((int)player.DynamicID);
|
||||
this.Attributes[GameAttribute.Chest_Open, 0xFFFFFF] = true;
|
||||
Attributes.BroadcastChangedIfRevealed();
|
||||
|
||||
this.Attributes[GameAttribute.Disabled] = true;
|
||||
|
||||
if (this.SNO == ActorSno._trdun_cath_chandelier_trap_switch2)
|
||||
{
|
||||
var lamp = this.GetActorsInRange(50f).Where(x => x.SNO == ActorSno._trdun_cath_chandelier_trap || x.SNO == ActorSno._trdun_cath_braizer_trap).First();
|
||||
if (lamp != null)
|
||||
(lamp as CathedralLamp).Die();
|
||||
}
|
||||
|
||||
if (this.SNO == ActorSno._a2dun_zolt_centerpiece_a)
|
||||
{
|
||||
if (this.World.SNO == WorldSno.a2dun_zolt_level01)
|
||||
foreach (var plr in this.World.Game.Players.Values)
|
||||
plr.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
{
|
||||
snoQuest = 57337,
|
||||
snoLevelArea = -1,
|
||||
StepID = 35,
|
||||
TaskIndex = 0,
|
||||
Counter = 1,
|
||||
Checked = 1,
|
||||
});
|
||||
else
|
||||
foreach (var plr in this.World.Game.Players.Values)
|
||||
plr.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
{
|
||||
snoQuest = 57337,
|
||||
snoLevelArea = -1,
|
||||
StepID = 35,
|
||||
TaskIndex = 1,
|
||||
Counter = 1,
|
||||
Checked = 1,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,14 +32,14 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(345935)]
|
||||
[HandledSNO(ActorSno._x1_openworld_lootrunportal)]
|
||||
public class LootRunPortal : Portal
|
||||
{
|
||||
static readonly Logger Logger = LogManager.CreateLogger();
|
||||
private int MinimapIcon;
|
||||
|
||||
public LootRunPortal(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public LootRunPortal(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Destination = new ResolvedPortalDestination
|
||||
{
|
||||
@ -79,7 +79,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
Logger.Debug("(OnTargeted) Portal has been activated, Id: {0}, LevelArea: {1}, World: {2}", this.ActorSNO.Id, this.Destination.DestLevelAreaSNO, this.Destination.WorldSNO);
|
||||
Logger.Debug("(OnTargeted) Portal has been activated, Id: {0}, LevelArea: {1}, World: {2}", (int)this.SNO, this.Destination.DestLevelAreaSNO, this.Destination.WorldSNO);
|
||||
|
||||
var world = this.World.Game.GetWorld((WorldSno)this.Destination.WorldSNO);
|
||||
|
||||
@ -93,7 +93,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
if (startingPoint != null)
|
||||
{
|
||||
if (this.ActorSNO.Id == 230751) //a2 timed event
|
||||
if (this.SNO == ActorSno._a2dun_zolt_portal_timedevent) //a2 timed event
|
||||
{
|
||||
if (!this.World.Game.QuestManager.SideQuests[120396].Completed)
|
||||
player.ShowConfirmation(this.DynamicID(player), (() => {
|
||||
|
@ -12,6 +12,7 @@ using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -20,7 +21,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public AncientKorlic(World world, PowerContext context, int AncientsID)
|
||||
: base(world, 90443, context.User, null)
|
||||
: base(world, ActorSno._barbarian_calloftheancients_1, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
@ -47,8 +48,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
if (this.Master is Player)
|
||||
{
|
||||
if ((this.Master as Player).Followers.Values.Count(a => a == 90443) > 1)
|
||||
(this.Master as Player).DestroyFollower(90443);
|
||||
if ((this.Master as Player).Followers.Values.Count(a => a == SNO) > 1)
|
||||
(this.Master as Player).DestroyFollower(SNO);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -20,7 +21,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public AncientMawdawc(World world, PowerContext context, int AncientsID)
|
||||
: base(world, 90536, context.User, null)
|
||||
: base(world, ActorSno._barbarian_calloftheancients_3, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
@ -47,8 +48,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
if (this.Master is Player)
|
||||
{
|
||||
if ((this.Master as Player).Followers.Values.Count(a => a == 90536) > 1)
|
||||
(this.Master as Player).DestroyFollower(90536);
|
||||
if ((this.Master as Player).Followers.Values.Count(a => a == SNO) > 1)
|
||||
(this.Master as Player).DestroyFollower(SNO);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -20,7 +21,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public AncientTalic(World world, PowerContext context, int AncientsID)
|
||||
: base(world, 90535, context.User, null)
|
||||
: base(world, ActorSno._barbarian_calloftheancients_2, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
@ -47,8 +48,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
if (this.Master is Player)
|
||||
{
|
||||
if ((this.Master as Player).Followers.Values.Count(a => a == 90535) > 1)
|
||||
(this.Master as Player).DestroyFollower(90535);
|
||||
if ((this.Master as Player).Followers.Values.Count(a => a == SNO) > 1)
|
||||
(this.Master as Player).DestroyFollower(SNO);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,13 +12,14 @@ using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
class AvatarMelee : Minion
|
||||
{
|
||||
public AvatarMelee(World world, PowerContext context, int AvatarID, float damageMult, TickTimer lifeTime)
|
||||
: base(world, 345682, context.User, null)
|
||||
: base(world, ActorSno._x1_crusader_phalanx, context.User, null)
|
||||
{
|
||||
Scale = 1.2f;
|
||||
WalkSpeed *= 5;
|
||||
@ -42,7 +43,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
class AvatarRanged : Minion
|
||||
{
|
||||
public AvatarRanged(World world, PowerContext context, int AvatarID, float damageMult, TickTimer lifeTime)
|
||||
: base(world, 369795, context.User, null)
|
||||
: base(world, ActorSno._x1_crusader_phalanxarcher, context.User, null)
|
||||
{
|
||||
Scale = 1f;
|
||||
WalkSpeed *= 5;
|
||||
|
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -24,10 +25,17 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public static List<int> Companions = new List<int>() { 133741, 173827, 181748, 159098, 159102, 178664 };
|
||||
private static readonly List<ActorSno> Companions = new List<ActorSno>() {
|
||||
ActorSno._dh_companion,
|
||||
ActorSno._dh_companion_spider,
|
||||
ActorSno._dh_companion_boar,
|
||||
ActorSno._dh_companion_runec,
|
||||
ActorSno._dh_companion_runed,
|
||||
ActorSno._dh_companion_ferret
|
||||
};
|
||||
|
||||
public CompanionMinion(World world, PowerContext context, int CompanionSNOId)
|
||||
: base(world, CompanionSNOId, context.User, null)
|
||||
public CompanionMinion(World world, PowerContext context, ActorSno CompanionSNO)
|
||||
: base(world, CompanionSNO, context.User, null)
|
||||
{
|
||||
Scale = 1.2f;
|
||||
if (context.User.Attributes[GameAttribute.Rune_B, 0x000592ff] > 0) Scale = 2f; //Boar
|
||||
@ -38,7 +46,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
this.Attributes[GameAttribute.Invulnerable] = true;
|
||||
this.Attributes[GameAttribute.Is_Helper] = true;
|
||||
this.Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
|
||||
if (CompanionSNOId == 178664)
|
||||
if (CompanionSNO == ActorSno._dh_companion_ferret)
|
||||
SetBrain(new LooterBrain(this, false));
|
||||
else
|
||||
{
|
||||
|
@ -12,6 +12,7 @@ using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -19,8 +20,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
//107031, 106731, 106749, 107067, 107107, 107112
|
||||
|
||||
public CorpseSpider(World world, PowerContext context, int snoId, int SpiderID)
|
||||
: base(world, snoId, context.User, null)
|
||||
public CorpseSpider(World world, PowerContext context, ActorSno sno, int SpiderID)
|
||||
: base(world, sno, context.User, null)
|
||||
{
|
||||
Scale = 0.7f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
|
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -24,7 +25,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public CorpseSpiderQueen(World world, PowerContext context, int SpiderID)
|
||||
: base(world, 106749, context.User, null)
|
||||
: base(world, ActorSno._witchdoctor_corpsespider_indigorune, context.User, null)
|
||||
{
|
||||
Scale = 0.7f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
@ -54,7 +55,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
var rem = new List<uint>();
|
||||
foreach (var fol in (this.Master as Player).Followers)
|
||||
if (fol.Value == 106749 && fol.Key != this.GlobalID)
|
||||
if (fol.Value == SNO && fol.Key != this.GlobalID)
|
||||
rem.Add(fol.Key);
|
||||
foreach (var rm in rem)
|
||||
(this.Master as Player).DestroyFollowerById(rm);
|
||||
|
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -21,7 +22,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
//Melee - 87189, 89933 - ranged, 90320 - shaman, skeleton? - 89934
|
||||
public FetishHunter(World world, PowerContext context, int FetishID)
|
||||
: base(world, 89933, context.User, null)
|
||||
: base(world, ActorSno._fetish_ranged_a, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
|
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -21,7 +22,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
//Melee - 87189, 89933 - ranged, 90320 - shaman, skeleton? - 89934
|
||||
public FetishMelee(World world, PowerContext context, int FetishID)
|
||||
: base(world, 87189, context.User, null)
|
||||
: base(world, ActorSno._fetish_melee_a, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
|
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -21,7 +22,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
//Melee - 87189, 89933 - ranged, 90320 - shaman, skeleton? - 89934
|
||||
public FetishShaman(World world, PowerContext context, int FetishID)
|
||||
: base(world, 90320, context.User, null)
|
||||
: base(world, ActorSno._fetish_shaman_a, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
|
@ -14,13 +14,14 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
class GargantuanMinion : Minion
|
||||
{
|
||||
public GargantuanMinion(World world, PowerContext context, int GargID)
|
||||
: base(world, 122305, context.User, null)
|
||||
: base(world, ActorSno._wd_gargantuan, context.User, null)
|
||||
{
|
||||
Scale = 1f;
|
||||
//TODO: get a proper value for this.
|
||||
@ -58,7 +59,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
var rem = new List<uint>();
|
||||
foreach (var fol in (this.Master as Player).Followers)
|
||||
if (fol.Value == 122305 && fol.Key != this.GlobalID)
|
||||
if (fol.Value == SNO && fol.Key != this.GlobalID)
|
||||
rem.Add(fol.Key);
|
||||
foreach (var rm in rem)
|
||||
(this.Master as Player).DestroyFollowerById(rm);
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
@ -33,8 +34,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
//[460042] [Actor] p6_BloodGolem
|
||||
public class BaseGolem : Minion
|
||||
{
|
||||
public BaseGolem(MapSystem.World world, ActorSystem.Actor master)
|
||||
: base(world, 471947, master, null)
|
||||
public BaseGolem(World world, Actor master)
|
||||
: base(world, ActorSno._p6_necro_revive_golem, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
@ -53,8 +54,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
}
|
||||
public class ConsumeFleshGolem : Minion
|
||||
{
|
||||
public ConsumeFleshGolem(MapSystem.World world, ActorSystem.Actor master)
|
||||
: base(world, 471646, master, null)
|
||||
public ConsumeFleshGolem(World world, Actor master)
|
||||
: base(world, ActorSno._p6_consumefleshgolem, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
@ -73,7 +74,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
}
|
||||
public class IceGolem : Minion
|
||||
{
|
||||
public IceGolem(MapSystem.World world, ActorSystem.Actor master) : base(world, 471647, master, null)
|
||||
public IceGolem(World world, Actor master)
|
||||
: base(world, ActorSno._p6_icegolem, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
@ -92,7 +94,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
}
|
||||
public class BoneGolem : Minion
|
||||
{
|
||||
public BoneGolem(MapSystem.World world, ActorSystem.Actor master) : base(world, 465239, master, null)
|
||||
public BoneGolem(World world, Actor master)
|
||||
: base(world, ActorSno._p6_bonegolem, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
@ -110,7 +113,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
}
|
||||
public class DecayGolem : Minion
|
||||
{
|
||||
public DecayGolem(MapSystem.World world, ActorSystem.Actor master) : base(world, 471619, master, null)
|
||||
public DecayGolem(World world, Actor master)
|
||||
: base(world, ActorSno._p6_decaygolem, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
@ -129,7 +133,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
}
|
||||
public class BloodGolem : Minion
|
||||
{
|
||||
public BloodGolem(MapSystem.World world, ActorSystem.Actor master) : base(world, 460042, master, null)
|
||||
public BloodGolem(World world, Actor master)
|
||||
: base(world, ActorSno._p6_bloodgolem, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
|
@ -14,13 +14,14 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
class HexMinion : Minion
|
||||
{
|
||||
public HexMinion(World world, PowerContext context, int HexID)
|
||||
: base(world, 107826, context.User, null)
|
||||
: base(world, ActorSno._fetish_hex, context.User, null)
|
||||
{
|
||||
Scale = 1f;
|
||||
//TODO: get a proper value for this.
|
||||
|
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -22,7 +23,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public LooterPetAnniversary(World world, Actor master)
|
||||
: base(world, 4093, master, null)
|
||||
: base(world, ActorSno._fallenlunatic_a, master, null)
|
||||
{
|
||||
Scale = 0.75f;
|
||||
this.WalkSpeed *= 5;
|
||||
|
@ -14,13 +14,14 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
class MirrorImageMinion : Minion
|
||||
{
|
||||
public MirrorImageMinion(World world, PowerContext context, int ImageID, float lifetime)
|
||||
: base(world, 98010, context.User, null) //male Mirror images
|
||||
: base(world, ActorSno._wizard_mirrorimage_female, context.User, null) //female Mirror images
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
@ -41,13 +42,13 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
|
||||
LifeTime = TickTimer.WaitSeconds(world.Game, lifetime);
|
||||
|
||||
if (this.Master != null && context.ScriptFormula(1) < (this.Master as Player).Followers.Values.Where(f => f == 98010).Count())
|
||||
if (this.Master != null && context.ScriptFormula(1) < (this.Master as Player).Followers.Values.Where(f => f == SNO).Count())
|
||||
{
|
||||
if (this.Master is Player)
|
||||
{
|
||||
var rem = new List<uint>();
|
||||
foreach (var fol in (this.Master as Player).Followers.Where(f => f.Key != this.GlobalID).Take((this.Master as Player).Followers.Values.Where(f => f == 98010).Count() - (int)context.ScriptFormula(1)))
|
||||
if (fol.Value == 98010)
|
||||
foreach (var fol in (this.Master as Player).Followers.Where(f => f.Key != this.GlobalID).Take((this.Master as Player).Followers.Values.Where(f => f == SNO).Count() - (int)context.ScriptFormula(1)))
|
||||
if (fol.Value == SNO)
|
||||
rem.Add(fol.Key);
|
||||
foreach (var rm in rem)
|
||||
(this.Master as Player).DestroyFollowerById(rm);
|
||||
|
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -21,7 +22,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public MysticAllyMinion(World world, PowerContext context, int MysticAllyID)
|
||||
public MysticAllyMinion(World world, PowerContext context, ActorSno MysticAllyID)
|
||||
: base(world, MysticAllyID, context.User, null)
|
||||
{
|
||||
Scale = 1.35f; //they look cooler bigger :)
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
@ -25,8 +26,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
class NecromancerSkeleton_A : Minion
|
||||
{
|
||||
public NecromancerSkeleton_A(MapSystem.World world, int snoId, ActorSystem.Actor master)
|
||||
: base(world, snoId, master, null)
|
||||
public NecromancerSkeleton_A(MapSystem.World world, ActorSno sno, ActorSystem.Actor master)
|
||||
: base(world, sno, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
|
||||
|
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -22,10 +23,18 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
//Changes creature with each rune,
|
||||
//RuneSelect(141402, 168815, 150024, 150025, 150026, 150027)
|
||||
|
||||
public static List<int> Sentries = new List<int>() { 141402, 168815, 150024, 150025, 150026, 150027 };
|
||||
public static readonly List<ActorSno> Sentries = new List<ActorSno>()
|
||||
{
|
||||
ActorSno._dh_sentry,
|
||||
ActorSno._dh_sentry_tether,
|
||||
ActorSno._dh_sentry_addsduration,
|
||||
ActorSno._dh_sentry_addsmissiles,
|
||||
ActorSno._dh_sentry_addsheals,
|
||||
ActorSno._dh_sentry_addsshield
|
||||
};
|
||||
|
||||
public SentryMinion(World world, PowerContext context, int SentrySNOId)
|
||||
: base(world, SentrySNOId, context.User, null)
|
||||
public SentryMinion(World world, PowerContext context, ActorSno SentrySNO)
|
||||
: base(world, SentrySNO, context.User, null)
|
||||
{
|
||||
Scale = 1.2f;
|
||||
//TODO: get a proper value for this.
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -25,7 +26,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
public bool Rune_Flesh = false;
|
||||
//Melee - 87189, 89933 - ranged, 90320 - shaman, skeleton? - 89934
|
||||
public SkeletalMage(World world, PowerContext context, int FetishID, int SNO)
|
||||
public SkeletalMage(World world, PowerContext context, int FetishID, ActorSno SNO)
|
||||
: base(world, SNO, context.User, null)
|
||||
{
|
||||
Scale = 1.2f;
|
||||
|
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -22,7 +23,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 10;
|
||||
|
||||
public WallCreeper(World world, PowerContext context, int creeperID)
|
||||
: base(world, 146534, context.User, null)
|
||||
: base(world, ActorSno._wd_wallofzombiesrune_spawn, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
|
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -22,7 +23,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 4;
|
||||
|
||||
public ZombieDog(World world, Actor master, int dogID, float mul = 1f)
|
||||
: base(world, 51353, master, null)
|
||||
: base(world, ActorSno._wd_zombiedog, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
|
@ -8,6 +8,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
//Blizzless Project 2022
|
||||
using System.Threading.Tasks;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -20,11 +21,11 @@ using DiIiS_NA.GameServer.MessageSystem;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
|
||||
{
|
||||
#region Unique_CaptainDaltyn
|
||||
[HandledSNO(156801)]
|
||||
[HandledSNO(ActorSno._unique_captaindaltyn)]
|
||||
public class Unique_CaptainDaltyn : Monster
|
||||
{
|
||||
public Unique_CaptainDaltyn(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Unique_CaptainDaltyn(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
this.Attributes[GameAttribute.Immune_To_Charm] = true;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
@ -20,11 +21,11 @@ using System.Threading.Tasks;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
|
||||
{
|
||||
//89578 GlobalId: 1015703058 Position: x:338 y:320.78137 z:-11.422008 Name: a1dun_leor_firewall1
|
||||
[HandledSNO(89578)]
|
||||
public class a1dun_firewall : Monster
|
||||
[HandledSNO(ActorSno._a1dun_leor_firewall1, ActorSno._a1dun_leor_firewall2)]
|
||||
public class A1dun_firewall : Monster
|
||||
{
|
||||
public a1dun_firewall(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public A1dun_firewall(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field2 = 0x8;
|
||||
this.CollFlags = 0;
|
||||
|
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ.FileFormats;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -19,11 +20,11 @@ using MonsterFF = DiIiS_NA.Core.MPQ.FileFormats.Monster;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
[HandledSNO(5998)]
|
||||
[HandledSNO(ActorSno._tristramgateguardr)]
|
||||
class ArrowGuardian : NPC, IUpdateable
|
||||
{
|
||||
public ArrowGuardian(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public ArrowGuardian(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Brain = new AggressiveNPCBrain(this); // erekose
|
||||
|
||||
|
@ -10,14 +10,15 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(435707)] //px_Ruins_Frost_Camp_BarbNPC
|
||||
[HandledSNO(ActorSno._px_ruins_frost_camp_barbnpc)] //px_Ruins_Frost_Camp_BarbNPC
|
||||
public class BarbarianNPC : InteractiveNPC
|
||||
{
|
||||
public BarbarianNPC(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public BarbarianNPC(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{ }
|
||||
|
||||
protected override void ReadTags()
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
@ -19,11 +20,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(470782)] //SNO - 470782, Name - P6_ChallengeRift_Nephalem
|
||||
[HandledSNO(ActorSno._p6_challengerift_nephalem)] //SNO - 470782, Name - P6_ChallengeRift_Nephalem
|
||||
class CR_Nephalem : InteractiveNPC
|
||||
{
|
||||
public CR_Nephalem(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CR_Nephalem(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Conversations.Clear();
|
||||
Conversations.Add(new Interactions.ConversationInteraction(471065));
|
||||
|
@ -12,14 +12,15 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(3533)] //Cain
|
||||
[HandledSNO(ActorSno._cain)] //Cain
|
||||
public class Cain : InteractiveNPC
|
||||
{
|
||||
public Cain(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Cain(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.Invulnerable] = true;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ.FileFormats;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -19,11 +20,25 @@ using MonsterFF = DiIiS_NA.Core.MPQ.FileFormats.Monster;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(3739, 174436, 205189, 3546, 164195, 181857, 181858, 362323, 362440, 284568, 378363, 361670, 256248, 275409)]
|
||||
[HandledSNO(
|
||||
ActorSno._captainrumfoord,
|
||||
ActorSno._angel_trooper_a,
|
||||
ActorSno._bastionskeepguard_melee_a_01_stationedguard,
|
||||
ActorSno._caldeumguard_cleaver_a,
|
||||
ActorSno._caldeumguard_cleaver_a_jarulf,
|
||||
ActorSno._caldeumguard_cleaver_a_town,
|
||||
ActorSno._caldeumguard_spear_imperial_town,
|
||||
ActorSno._x1_westmhub_guardnohelmunarmed,
|
||||
ActorSno._x1_westmhub_guard_patrol,
|
||||
ActorSno._x1_westmhub_guard,
|
||||
ActorSno._x1_westmhub_guardnohelm,
|
||||
ActorSno._x1_malthael,
|
||||
ActorSno._x1_imperius
|
||||
)]
|
||||
class CaptainRumford : InteractiveNPC, IUpdateable
|
||||
{
|
||||
public CaptainRumford(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public CaptainRumford(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Brain = new AggressiveNPCBrain(this); // erekose
|
||||
|
||||
@ -48,9 +63,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
}
|
||||
|
||||
base.ReadTags();
|
||||
|
||||
if (this.ActorSNO.Id == 256248)
|
||||
this.Attributes[GameAttribute.TeamID] = 0;
|
||||
}
|
||||
|
||||
public void Update(int tickCounter)
|
||||
|
@ -1,15 +1,16 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(112768)]
|
||||
[HandledSNO(ActorSno._fate)]
|
||||
class Fate : InteractiveNPC
|
||||
{
|
||||
public Fate(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Fate(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
@ -1,15 +1,24 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(196900, 196901, 196902, 196903, 196904, 196905)] //Ghosts
|
||||
[HandledSNO(
|
||||
ActorSno._a4dun_aspect_ghost_01,
|
||||
ActorSno._a4dun_aspect_ghost_02,
|
||||
ActorSno._a4dun_aspect_ghost_03,
|
||||
ActorSno._a4dun_aspect_ghost_04,
|
||||
ActorSno._a4dun_aspect_ghost_05,
|
||||
ActorSno._a4dun_aspect_ghost_06,
|
||||
ActorSno._a4dun_aspect_ghost_07
|
||||
)] //Ghosts
|
||||
public class GhostOnSpire : InteractiveNPC
|
||||
{
|
||||
public GhostOnSpire(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public GhostOnSpire(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ.FileFormats;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -21,8 +22,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
class HirelingNPC : InteractiveNPC, IUpdateable
|
||||
{
|
||||
public HirelingNPC(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public HirelingNPC(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Brain = new AggressiveNPCBrain(this); // erekose
|
||||
|
||||
@ -47,9 +48,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
}
|
||||
|
||||
base.ReadTags();
|
||||
|
||||
if (this.ActorSNO.Id == 256248)
|
||||
this.Attributes[GameAttribute.TeamID] = 0;
|
||||
}
|
||||
|
||||
public void Update(int tickCounter)
|
||||
|
@ -1,15 +1,16 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(114074)]
|
||||
[HandledSNO(ActorSno._hope)]
|
||||
class Hope : InteractiveNPC
|
||||
{
|
||||
public Hope(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Hope(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
@ -8,18 +8,19 @@ using DiIiS_NA.GameServer.MessageSystem;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(308474, //X1_WestM_Intro_Human_Male
|
||||
309191, //X1_WestM_Intro_Human_Male2
|
||||
181563, //vizjereiMale_A_Town
|
||||
210087, //Zakarum_Female_Wealthy_Gates
|
||||
190390, //A3_Hub_SacrificeLadyNew
|
||||
378376 //x1_WestmHub_Guard_NoLoS_KnownWithScene
|
||||
)]
|
||||
[HandledSNO(
|
||||
ActorSno._x1_westm_intro_human_male, //X1_WestM_Intro_Human_Male
|
||||
ActorSno._x1_westm_intro_human_male2, //X1_WestM_Intro_Human_Male2
|
||||
ActorSno._vizjereimale_a_town, //vizjereiMale_A_Town
|
||||
ActorSno._zakarum_female_wealthy_gates, //Zakarum_Female_Wealthy_Gates
|
||||
ActorSno._a3_hub_sacrificeladynew, //A3_Hub_SacrificeLadyNew
|
||||
ActorSno._x1_westmhub_guard_nolos_knownwithscene //x1_WestmHub_Guard_NoLoS_KnownWithScene
|
||||
)]
|
||||
class Humans : NPC
|
||||
{
|
||||
private bool _collapsed = false;
|
||||
public Humans(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Humans(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
@ -44,20 +45,25 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
_collapsed = true;
|
||||
|
||||
if (this.World.SNO == WorldSno.x1_westm_intro)
|
||||
switch (this.ActorSNO.Id)
|
||||
switch (this.SNO)
|
||||
{
|
||||
case 308474:
|
||||
case ActorSno._x1_westm_intro_human_male:
|
||||
if (this.Position.X > 1440)
|
||||
StartConversation(this.World, 311433);
|
||||
else
|
||||
{
|
||||
foreach (var man in this.World.GetActorsBySNO(308474)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(309191)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(310653)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(310631)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(
|
||||
ActorSno._x1_westm_intro_human_male,
|
||||
ActorSno._x1_westm_intro_human_male2,
|
||||
ActorSno._x1_westm_intro_human_female,
|
||||
ActorSno._x1_westmarchfemale_deathmaidenkill
|
||||
))
|
||||
{
|
||||
if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 309191:
|
||||
case ActorSno._x1_westm_intro_human_male2:
|
||||
if (this.Position.X > 1300 & this.Position.Y > 440)
|
||||
{
|
||||
StartConversation(this.World, 311435);
|
||||
@ -73,9 +79,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
+ [5] {70976 = 328782} DiIiS_NA.GameServer.Core.Types.TagMap.TagMapEntry
|
||||
+ [6] {98304 = 330015} DiIiS_NA.GameServer.Core.Types.TagMap.TagMapEntry
|
||||
*/
|
||||
foreach (var man in this.World.GetActorsBySNO(308474)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(309191)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(310653)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(
|
||||
ActorSno._x1_westm_intro_human_male,
|
||||
ActorSno._x1_westm_intro_human_male2,
|
||||
ActorSno._x1_westm_intro_human_female
|
||||
))
|
||||
{
|
||||
if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -10,16 +10,17 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
//[ Info] [AttackPayload]: Игрок с индесом: 0 - задамажил: ID: 449323 Name: Barbarian_KKG_Event, NumInWorld: 0
|
||||
//[ Info] [AttackPayload]: Игрок с индесом: 0 - задамажил: ID: 435818 Name: Barbarian_KKG, NumInWorld: 0
|
||||
[HandledSNO(435818, 449323)] //Barbarian_KKG
|
||||
[HandledSNO(ActorSno._barbarian_kkg, ActorSno._barbarian_kkg_event)] //Barbarian_KKG
|
||||
public class Barbarian_KKG : NPC
|
||||
{
|
||||
public Barbarian_KKG(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Barbarian_KKG(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.PlayActionAnimation(449259);
|
||||
}
|
||||
|
@ -10,16 +10,17 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
//[ Info] [AttackPayload]: Игрок с индесом: 0 - задамажил: ID: 437089 Name: Barbarian_KKG_Follower_NPC, NumInWorld: 0
|
||||
[HandledSNO(437089)] //Barbarian_KKG_Follower_NPC
|
||||
[HandledSNO(ActorSno._barbarian_kkg_follower_npc)] //Barbarian_KKG_Follower_NPC
|
||||
public class Barbarian_KKG_Follower_NPC : NPC
|
||||
{
|
||||
private bool _collapsed = false;
|
||||
public Barbarian_KKG_Follower_NPC(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Barbarian_KKG_Follower_NPC(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
//{[Actor] [Type: Monster] SNOId:437089 GlobalId: 1017303615 Position: x:348.598 y:853.68604 z:5.41089 Name: Barbarian_KKG_Follower_NPC}
|
||||
//437394 - Рык
|
||||
@ -53,7 +54,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
_collapsed = true;
|
||||
this.PlayActionAnimation(439753);
|
||||
|
||||
var Cube = World.GetActorBySNO(437895);
|
||||
var Cube = World.GetActorBySNO(ActorSno._p4_ruins_frost_kanaicube_altar);
|
||||
Cube.PlayActionAnimation(441642);
|
||||
//{[Actor] [Type: Gizmo] SNOId:437895 GlobalId: 1017303610 Position: x:331.9304 y:867.761 z:5.41071 Name: p4_Ruins_Frost_KanaiCube_Altar}
|
||||
foreach (var plr in player.InGameClient.Game.Players.Values)
|
||||
|
@ -10,15 +10,16 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(437073)] //p2_HQ_ZoltunKulle_NPC
|
||||
public class p2_HQ_ZoltunKulle_NPC : NPC
|
||||
[HandledSNO(ActorSno._p2_hq_zoltunkulle_npc)] //p2_HQ_ZoltunKulle_NPC
|
||||
public class P2_HQ_ZoltunKulle_NPC : NPC
|
||||
{
|
||||
|
||||
public p2_HQ_ZoltunKulle_NPC(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public P2_HQ_ZoltunKulle_NPC(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Hidden = true;
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
@ -15,11 +16,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(138271)]
|
||||
[HandledSNO(ActorSno._leah_afterevent31_exit)]
|
||||
class LeahNPC : InteractiveNPC
|
||||
{
|
||||
public LeahNPC(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public LeahNPC(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
@ -21,11 +21,11 @@ using MonsterFF = DiIiS_NA.Core.MPQ.FileFormats.Monster;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
//{[Actor] [Type: Monster] SNOId:284530 GlobalId: 1017400498 Position: x:593.36835 y:489.5003 z:-4.8999996 Name: x1_NPC_LorathNahr}
|
||||
[HandledSNO(284530)]
|
||||
[HandledSNO(ActorSno._x1_npc_lorathnahr)]
|
||||
class LorathNahr_NPC : InteractiveNPC, IUpdateable
|
||||
{
|
||||
public LorathNahr_NPC(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public LorathNahr_NPC(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Brain = new AggressiveNPCBrain(this); // erekose
|
||||
|
||||
@ -59,9 +59,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
}
|
||||
|
||||
base.ReadTags();
|
||||
|
||||
if (this.ActorSNO.Id == 256248)
|
||||
this.Attributes[GameAttribute.TeamID] = 0;
|
||||
}
|
||||
|
||||
public void Update(int tickCounter)
|
||||
|
@ -12,14 +12,15 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(61524)] //PT_Mystic_NoVendor
|
||||
[HandledSNO(ActorSno._pt_mystic_novendor)] //PT_Mystic_NoVendor
|
||||
public class MysticNoVendor : InteractiveNPC
|
||||
{
|
||||
public MysticNoVendor(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public MysticNoVendor(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.Invulnerable] = true;
|
||||
}
|
||||
@ -30,11 +31,11 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
base.ReadTags();
|
||||
}
|
||||
}
|
||||
[HandledSNO(87037)] //PT_Mystic_NoVendor
|
||||
[HandledSNO(ActorSno._templarnpc)]
|
||||
public class TemplarNPC : InteractiveNPC
|
||||
{
|
||||
public TemplarNPC(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public TemplarNPC(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.Invulnerable] = true;
|
||||
}
|
||||
|
@ -4,14 +4,15 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
[HandledSNO(453600)]
|
||||
[HandledSNO(ActorSno._p43_ad_cow)]
|
||||
class Cow : NPC
|
||||
{
|
||||
public Cow(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Cow(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
@ -4,14 +4,15 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(453551)]
|
||||
[HandledSNO(ActorSno._p43_ad_farnham)]
|
||||
class Farnham : InteractiveNPC
|
||||
{
|
||||
public Farnham(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Farnham(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
@ -4,14 +4,15 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(453553)]
|
||||
[HandledSNO(ActorSno._p43_ad_griswold)]
|
||||
class Griswold : InteractiveNPC
|
||||
{
|
||||
public Griswold(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Griswold(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
@ -4,14 +4,15 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(453554)]
|
||||
[HandledSNO(ActorSno._p43_ad_ogden)]
|
||||
class Ogden : InteractiveNPC
|
||||
{
|
||||
public Ogden(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Ogden(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
@ -4,14 +4,15 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(453555)]
|
||||
[HandledSNO(ActorSno._p43_ad_pepin)]
|
||||
class Pepin : InteractiveNPC
|
||||
{
|
||||
public Pepin(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Pepin(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ.FileFormats;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -19,11 +20,11 @@ using MonsterFF = DiIiS_NA.Core.MPQ.FileFormats.Monster;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(4580)]
|
||||
[HandledSNO(ActorSno._leah)]
|
||||
class TownLeah : InteractiveNPC, IUpdateable
|
||||
{
|
||||
public TownLeah(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public TownLeah(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Brain = new AggressiveNPCBrain(this);
|
||||
(Brain as AggressiveNPCBrain).PresetPowers.Clear();
|
||||
@ -48,9 +49,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
}
|
||||
|
||||
base.ReadTags();
|
||||
|
||||
if (this.ActorSNO.Id == 256248)
|
||||
this.Attributes[GameAttribute.TeamID] = 0;
|
||||
}
|
||||
|
||||
public void Update(int tickCounter)
|
||||
|
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ.FileFormats;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -19,11 +20,11 @@ using MonsterFF = DiIiS_NA.Core.MPQ.FileFormats.Monster;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(6353)]
|
||||
[HandledSNO(ActorSno._tyrael)]
|
||||
class Tyrael : InteractiveNPC, IUpdateable
|
||||
{
|
||||
public Tyrael(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public Tyrael(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Brain = new AggressiveNPCBrain(this); // erekose
|
||||
|
||||
@ -48,9 +49,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
}
|
||||
|
||||
base.ReadTags();
|
||||
|
||||
if (this.ActorSNO.Id == 256248)
|
||||
this.Attributes[GameAttribute.TeamID] = 0;
|
||||
}
|
||||
|
||||
public void Update(int tickCounter)
|
||||
|
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Logging;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -8,11 +9,11 @@ using DiIiS_NA.GameServer.MessageSystem;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
|
||||
[HandledSNO(454066)]
|
||||
[HandledSNO(ActorSno._p6_necro_corpse_flesh)]
|
||||
class NecromancerFlesh : Gizmo
|
||||
{
|
||||
public NecromancerFlesh(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public NecromancerFlesh(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field2 = 16;//16;
|
||||
this.Field7 = 0x00000001;
|
||||
|
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -23,11 +24,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(364715 /* x1_OpenWorld_LootRunObelisk_B.acr */)]
|
||||
[HandledSNO(ActorSno._x1_openworld_lootrunobelisk_b /* x1_OpenWorld_LootRunObelisk_B.acr */)]
|
||||
public sealed class NephalemStone : Gizmo
|
||||
{
|
||||
public NephalemStone(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public NephalemStone(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user