Merge pull request #123 from DeKaN/game-attributes-refactoring

GameAttribute refactoring
This commit is contained in:
Lucca Faria Ferri 2023-02-10 19:41:33 -03:00 committed by GitHub
commit c5220396ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
202 changed files with 5324 additions and 5863 deletions

View File

@ -47,8 +47,8 @@ public class InfoCommand : CommandGroup
info.Add($"> Class: {playerInWorld.Value.Toon.Class.ToString()}");
info.Add($"> Level: {playerInWorld.Value.Toon.Level}");
info.Add(
$"> Health: {playerInWorld.Value.Attributes[GameAttribute.Hitpoints_Cur]} / {playerInWorld.Value.Attributes[GameAttribute.Hitpoints_Max]}");
info.Add($"> Damage: {playerInWorld.Value.Attributes[GameAttribute.Damage_Min, 0]}");
$"> Health: {playerInWorld.Value.Attributes[GameAttributes.Hitpoints_Cur]} / {playerInWorld.Value.Attributes[GameAttributes.Hitpoints_Max]}");
info.Add($"> Damage: {playerInWorld.Value.Attributes[GameAttributes.Damage_Min, 0]}");
info.Add("");
}

View File

@ -17,13 +17,13 @@ public class InvulnerableCommand : CommandGroup
if (player.Attributes.FixedMap.Contains(FixedAttribute.Invulnerable))
{
player.Attributes.FixedMap.Remove(FixedAttribute.Invulnerable);
player.Attributes[GameAttribute.Invulnerable] = false;
player.Attributes[GameAttributes.Invulnerable] = false;
player.Attributes.BroadcastChangedIfRevealed();
return "You are no longer invulnerable.";
}
player.Attributes.FixedMap.Add(FixedAttribute.Invulnerable,
attributes => { attributes[GameAttribute.Invulnerable] = true; });
attributes => { attributes[GameAttributes.Invulnerable] = true; });
player.Attributes.BroadcastChangedIfRevealed();
return "You are now invulnerable.";
}

View File

@ -28,13 +28,13 @@ public class LevelUpCommand : CommandGroup
for (var i = 0; i < amount; i++)
if (player.Level >= 70)
{
player.UpdateExp((int)player.Attributes[GameAttribute.Alt_Experience_Next_Lo]);
player.UpdateExp((int)player.Attributes[GameAttributes.Alt_Experience_Next_Lo]);
player.PlayEffect(Effect.ParagonLevelUp, null, false);
player.World.PowerManager.RunPower(player, 252038);
}
else
{
player.UpdateExp((int)player.Attributes[GameAttribute.Experience_Next_Lo]);
player.UpdateExp((int)player.Attributes[GameAttributes.Experience_Next_Lo]);
player.PlayEffect(Effect.LevelUp, null, false);
player.World.PowerManager.RunPower(player, 85954);
}

View File

@ -24,10 +24,10 @@ public class PowerfulCommand : CommandGroup
player.Attributes.FixedMap.Add(FixedAttribute.Powerful, (attributes) =>
{
attributes[GameAttribute.Damage_Delta, 0] = float.MaxValue;
attributes[GameAttribute.Damage_Min, 0] = float.MaxValue;
attributes[GameAttribute.Damage_Weapon_Delta, 0] = float.MaxValue;
attributes[GameAttribute.Damage_Weapon_Min, 0] = float.MaxValue;
attributes[GameAttributes.Damage_Delta, 0] = float.MaxValue;
attributes[GameAttributes.Damage_Min, 0] = float.MaxValue;
attributes[GameAttributes.Damage_Weapon_Delta, 0] = float.MaxValue;
attributes[GameAttributes.Damage_Weapon_Min, 0] = float.MaxValue;
});
player.Attributes.BroadcastChangedIfRevealed();

View File

@ -24,7 +24,7 @@ public class ResourcefulCommand : CommandGroup
player.Attributes.FixedMap.Add(FixedAttribute.Resourceful, (attributes) =>
{
attributes[GameAttribute.Resource_Cur, 1] = 100;
attributes[GameAttributes.Resource_Cur, 1] = 100;
});
player.Attributes.BroadcastChangedIfRevealed();

View File

@ -39,10 +39,10 @@ public class SpeedCommand : CommandGroup
if (speedValue <= baseSpeed) // Base Run Speed [Necrosummon]
{
playerSpeed[GameAttribute.Running_Rate] = baseSpeed;
playerSpeed[GameAttributes.Running_Rate] = baseSpeed;
return $"Speed reset to Base Speed ({baseSpeed:0.000}).";
}
playerSpeed.FixedMap.Add(FixedAttribute.Speed, attr => attr[GameAttribute.Running_Rate] = speedValue);
playerSpeed.FixedMap.Add(FixedAttribute.Speed, attr => attr[GameAttributes.Running_Rate] = speedValue);
playerSpeed.BroadcastChangedIfRevealed();
return $"Speed changed to {speedValue}";
}

View File

@ -165,7 +165,7 @@ namespace DiIiS_NA.GameServer.Core
List<Item> baseItems = Items.Values.Where(i => i.GBHandle.GBID == GBid).ToList();
int have = 0;
foreach (var itm in baseItems)
have += itm.Attributes[GameAttribute.ItemStackQuantityLo];
have += itm.Attributes[GameAttributes.ItemStackQuantityLo];
Logger.MethodTrace($"gbid {GBid}, count {have}");
@ -177,7 +177,7 @@ namespace DiIiS_NA.GameServer.Core
List<Item> baseItems = Items.Values.Where(i => i.GBHandle.GBID == GBid).ToList();
int have = 0;
foreach (var itm in baseItems)
have += itm.Attributes[GameAttribute.ItemStackQuantityLo];
have += itm.Attributes[GameAttributes.ItemStackQuantityLo];
return have;
}
@ -189,14 +189,14 @@ namespace DiIiS_NA.GameServer.Core
List<Item> consumed = new List<Item>();
foreach (var itm in baseItems)
{
if (itm.Attributes[GameAttribute.ItemStackQuantityLo] > estimate)
if (itm.Attributes[GameAttributes.ItemStackQuantityLo] > estimate)
{
itm.UpdateStackCount(itm.Attributes[GameAttribute.ItemStackQuantityLo] - estimate);
itm.UpdateStackCount(itm.Attributes[GameAttributes.ItemStackQuantityLo] - estimate);
break;
}
else
{
estimate -= itm.Attributes[GameAttribute.ItemStackQuantityLo];
estimate -= itm.Attributes[GameAttributes.ItemStackQuantityLo];
consumed.Add(itm);
}
}
@ -261,9 +261,9 @@ namespace DiIiS_NA.GameServer.Core
List<Item> baseItems = Items.Values.Where(i => i.GBHandle.GBID == item.GBHandle.GBID).ToList();
foreach (Item baseItem in baseItems)
{
if (baseItem.Attributes[GameAttribute.ItemStackQuantityLo] + item.Attributes[GameAttribute.ItemStackQuantityLo] <= baseItem.ItemDefinition.MaxStackSize)
if (baseItem.Attributes[GameAttributes.ItemStackQuantityLo] + item.Attributes[GameAttributes.ItemStackQuantityLo] <= baseItem.ItemDefinition.MaxStackSize)
{
baseItem.UpdateStackCount(baseItem.Attributes[GameAttribute.ItemStackQuantityLo] + item.Attributes[GameAttribute.ItemStackQuantityLo]);
baseItem.UpdateStackCount(baseItem.Attributes[GameAttributes.ItemStackQuantityLo] + item.Attributes[GameAttributes.ItemStackQuantityLo]);
baseItem.Attributes.SendChangedMessage((_owner as Player).InGameClient);
return;

View File

@ -1,5 +1,4 @@
using DiIiS_NA.Core.Helpers.Math;
using DiIiS_NA.Core.MPQ;
using DiIiS_NA.Core.MPQ;
using DiIiS_NA.GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.ActorSystem;
@ -7,11 +6,8 @@ using DiIiS_NA.GameServer.GSSystem.ActorSystem.Actions;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Movement;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DiIiS_NA.Core.Extensions;
namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
@ -42,10 +38,10 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
public override void Think(int tickCounter)
{
if (Body.Attributes[GameAttribute.Frozen] ||
Body.Attributes[GameAttribute.Stunned] ||
Body.Attributes[GameAttribute.Blind] ||
Body.Attributes[GameAttribute.Webbed] ||
if (Body.Attributes[GameAttributes.Frozen] ||
Body.Attributes[GameAttributes.Stunned] ||
Body.Attributes[GameAttributes.Blind] ||
Body.Attributes[GameAttributes.Webbed] ||
Body.Disable ||
Body.World.BuffManager.GetFirstBuff<PowerSystem.Implementations.KnockbackBuff>(Body) != null)
{

View File

@ -3,9 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using DiIiS_NA.Core.Extensions;
using DiIiS_NA.Core.Helpers.Math;
using DiIiS_NA.Core.MPQ;
using DiIiS_NA.GameServer.Core.Types.Math;
using DiIiS_NA.GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.ActorSystem;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Actions;
@ -54,10 +52,10 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
if (Body.World.Game.Paused) return;
// check if in disabled state, if so cancel any action then do nothing
if (Body.Attributes[GameAttribute.Frozen] ||
Body.Attributes[GameAttribute.Stunned] ||
Body.Attributes[GameAttribute.Blind] ||
Body.Attributes[GameAttribute.Webbed] ||
if (Body.Attributes[GameAttributes.Frozen] ||
Body.Attributes[GameAttributes.Stunned] ||
Body.Attributes[GameAttributes.Blind] ||
Body.Attributes[GameAttributes.Webbed] ||
Body.Disable ||
Body.World.BuffManager.GetFirstBuff<KnockbackBuff>(Body) != null)
{
@ -71,7 +69,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
return;
}
if (Body.Attributes[GameAttribute.Feared])
if (Body.Attributes[GameAttributes.Feared])
{
if (!Feared || CurrentAction == null)
{

View File

@ -5,16 +5,11 @@ using DiIiS_NA.Core.Helpers.Math;
using DiIiS_NA.Core.MPQ;
using DiIiS_NA.GameServer.Core.Types.Math;
using DiIiS_NA.GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.ActorSystem;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Actions;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Movement;
using DiIiS_NA.GameServer.GSSystem.ItemsSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Base;
@ -72,7 +67,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
WorldID = Body.World.GlobalID,
},
Amount = item.Attributes[GameAttribute.ItemStackQuantityLo],
Amount = item.Attributes[GameAttributes.ItemStackQuantityLo],
Type = FloatingAmountMessage.FloatType.Gold,
});
@ -101,7 +96,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
WorldID = Body.World.GlobalID,
},
Amount = item.Attributes[GameAttribute.ItemStackQuantityLo],
Amount = item.Attributes[GameAttributes.ItemStackQuantityLo],
Type = FloatingAmountMessage.FloatType.BloodStone,
});

View File

@ -11,7 +11,6 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.ActorSystem;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Actions;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Movement;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
@ -65,10 +64,10 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
if (Body.World.Game.Paused) return;
// check if in disabled state, if so cancel any action then do nothing
if (Body.Attributes[GameAttribute.Frozen] ||
Body.Attributes[GameAttribute.Stunned] ||
Body.Attributes[GameAttribute.Blind] ||
Body.Attributes[GameAttribute.Webbed] ||
if (Body.Attributes[GameAttributes.Frozen] ||
Body.Attributes[GameAttributes.Stunned] ||
Body.Attributes[GameAttributes.Blind] ||
Body.Attributes[GameAttributes.Webbed] ||
Body.Disable ||
Body.World.BuffManager.GetFirstBuff<KnockbackBuff>(Body) != null)
{
@ -82,7 +81,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
return;
}
if (Body.Attributes[GameAttribute.Feared])
if (Body.Attributes[GameAttributes.Feared])
{
if (!Feared || CurrentAction == null)
{
@ -119,7 +118,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
.Cast<Actor>()
.ToList();
if (Body.World.Game.PvP)
targets = (Body as Minion).Master.GetObjectsInRange<Player>(30f).Where(p => p.GlobalID != (Body as Minion).Master.GlobalID && p.Attributes[GameAttribute.TeamID] != (Body as Minion).Master.Attributes[GameAttribute.TeamID]).Cast<Actor>().ToList();
targets = (Body as Minion).Master.GetObjectsInRange<Player>(30f).Where(p => p.GlobalID != (Body as Minion).Master.GlobalID && p.Attributes[GameAttributes.TeamID] != (Body as Minion).Master.Attributes[GameAttributes.TeamID]).Cast<Actor>().ToList();
if (Body.World.IsPvP)
targets = (Body as Minion).Master.GetObjectsInRange<Player>(30f).Where(p => p.GlobalID != (Body as Minion).Master.GlobalID).Cast<Actor>().ToList();

View File

@ -88,7 +88,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
if (Body.Hidden)
return;
if (CurrentAction != null && PriorityTarget != null && PriorityTarget.Attributes[GameAttribute.Is_Helper] == true)
if (CurrentAction != null && PriorityTarget != null && PriorityTarget.Attributes[GameAttributes.Is_Helper] == true)
{
PriorityTarget = null;
CurrentAction.Cancel(tickCounter);
@ -103,12 +103,12 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
if (!Body.Visible || Body.Dead) return;
if (Body.World.Game.Paused) return;
if (Body.Attributes[GameAttribute.Disabled]) return;
if (Body.Attributes[GameAttributes.Disabled]) return;
if (Body.Attributes[GameAttribute.Frozen] ||
Body.Attributes[GameAttribute.Stunned] ||
Body.Attributes[GameAttribute.Blind] ||
Body.Attributes[GameAttribute.Webbed] ||
if (Body.Attributes[GameAttributes.Frozen] ||
Body.Attributes[GameAttributes.Stunned] ||
Body.Attributes[GameAttributes.Blind] ||
Body.Attributes[GameAttributes.Webbed] ||
Body.Disable ||
Body.World.BuffManager.GetFirstBuff<KnockbackBuff>(Body) != null ||
Body.World.BuffManager.GetFirstBuff<SummonedBuff>(Body) != null)
@ -123,7 +123,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
return;
}
if (Body.Attributes[GameAttribute.Feared])
if (Body.Attributes[GameAttributes.Feared])
{
if (!Feared || CurrentAction == null)
{
@ -161,15 +161,15 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
{
Actor[] targets;
if (Body.Attributes[GameAttribute.Team_Override] == 1)
if (Body.Attributes[GameAttributes.Team_Override] == 1)
targets = Body.GetObjectsInRange<Monster>(60f)
.Where(p => !p.Dead)
.OrderBy((monster) => PowerMath.Distance2D(monster.Position, Body.Position))
.ToArray();
else
targets = 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<ActorGhostedBuff>(p) == null)
|| ((p is Minion) && !p.Dead && p.Attributes[GameAttribute.Is_Helper] == false)
.Where(p => ((p is Player) && !p.Dead && p.Attributes[GameAttributes.Loading] == false && p.Attributes[GameAttributes.Is_Helper] == false && p.World.BuffManager.GetFirstBuff<ActorGhostedBuff>(p) == null)
|| ((p is Minion) && !p.Dead && p.Attributes[GameAttributes.Is_Helper] == false)
|| (p is DesctructibleLootContainer && p.SNO.IsDoorOrBarricade())
|| ((p is Hireling) && !p.Dead)
)

View File

@ -1,16 +1,12 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using DiIiS_NA.Core.Extensions;
using DiIiS_NA.Core.Helpers.Math;
using DiIiS_NA.Core.MPQ;
using DiIiS_NA.GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.ActorSystem;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Actions;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Movement;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
@ -50,10 +46,10 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
//if (this.Body is NPC) return;
// check if in disabled state, if so cancel any action then do nothing
if (Body.Attributes[GameAttribute.Frozen] ||
Body.Attributes[GameAttribute.Stunned] ||
Body.Attributes[GameAttribute.Blind] ||
Body.Attributes[GameAttribute.Webbed] ||
if (Body.Attributes[GameAttributes.Frozen] ||
Body.Attributes[GameAttributes.Stunned] ||
Body.Attributes[GameAttributes.Blind] ||
Body.Attributes[GameAttributes.Webbed] ||
Body.Disable ||
Body.World.BuffManager.GetFirstBuff<KnockbackBuff>(Body) != null)
{

View File

@ -249,7 +249,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
if (ActorData.TagMap.ContainsKey(ActorKeys.TeamID))
{
Attributes[GameAttribute.TeamID] = ActorData.TagMap[ActorKeys.TeamID];
Attributes[GameAttributes.TeamID] = ActorData.TagMap[ActorKeys.TeamID];
//Logger.Debug("Actor {0} has TeamID {1}", this.ActorSNO.Name, this.Attributes[GameAttribute.TeamID]);
}
Spawned = false;
@ -362,12 +362,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
if (world.IsPvP)
{
//this.GlobalIDOverride = World.NewActorPvPID;
Attributes[GameAttribute.Team_Override] = 10;
Attributes[GameAttributes.Team_Override] = 10;
}
else
{
//this.GlobalIDOverride = 0;
Attributes[GameAttribute.Team_Override] = -1;
Attributes[GameAttributes.Team_Override] = -1;
}
World?.Enter(this); // let him enter first.
@ -476,8 +476,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
plr.RevealActorsToPlayer();
plr.ReRevealPlayersToPlayer();
Attributes[GameAttribute.Looping_Animation_Start_Time] = -1;
Attributes[GameAttribute.Looping_Animation_End_Time] = -1;
Attributes[GameAttributes.Looping_Animation_Start_Time] = -1;
Attributes[GameAttributes.Looping_Animation_End_Time] = -1;
Attributes.BroadcastChangedIfRevealed();
//Refresh Inventory
plr.Inventory.RefreshInventoryToClient();
@ -711,7 +711,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
public void NotifyConversation(int status)
{
//0 - turn off, 1 - yellow "!", 2 - yellow "?", 3 - "*", 4 - bubble, 5 - silver "!", 6 - none (spams errors)
Attributes[GameAttribute.Conversation_Icon, 0] = status + 1;
Attributes[GameAttributes.Conversation_Icon, 0] = status + 1;
//this.Attributes[GameAttribute.MinimapIconOverride] = (status > 0) ? 120356 : -1;
Attributes.BroadcastChangedIfRevealed();
@ -719,7 +719,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
public void AddPercentHP(int percentage, bool GuidingLight = false)
{
float quantity = percentage * Attributes[GameAttribute.Hitpoints_Max_Total] / 100;
float quantity = percentage * Attributes[GameAttributes.Hitpoints_Max_Total] / 100;
AddHP(quantity, GuidingLight);
}
@ -727,19 +727,19 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
{
if (quantity > 0)
{
if (Attributes[GameAttribute.Hitpoints_Cur] < Attributes[GameAttribute.Hitpoints_Max_Total])
if (Attributes[GameAttributes.Hitpoints_Cur] < Attributes[GameAttributes.Hitpoints_Max_Total])
{
Attributes[GameAttribute.Hitpoints_Cur] = Math.Min(
Attributes[GameAttribute.Hitpoints_Cur] + quantity,
Attributes[GameAttribute.Hitpoints_Max_Total]);
Attributes[GameAttributes.Hitpoints_Cur] = Math.Min(
Attributes[GameAttributes.Hitpoints_Cur] + quantity,
Attributes[GameAttributes.Hitpoints_Max_Total]);
Attributes.BroadcastChangedIfRevealed();
}
}
else
{
Attributes[GameAttribute.Hitpoints_Cur] = Math.Max(
Attributes[GameAttribute.Hitpoints_Cur] + quantity,
Attributes[GameAttributes.Hitpoints_Cur] = Math.Max(
Attributes[GameAttributes.Hitpoints_Cur] + quantity,
0);
Attributes.BroadcastChangedIfRevealed();
@ -772,13 +772,13 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
public void SetUsable(bool activated)
{
Attributes[GameAttribute.Team_Override] = activated ? -1 : 2;
Attributes[GameAttribute.Untargetable] = !activated;
Attributes[GameAttribute.NPC_Is_Operatable] = activated;
Attributes[GameAttribute.Operatable] = activated;
Attributes[GameAttribute.Operatable_Story_Gizmo] = activated;
Attributes[GameAttribute.Disabled] = !activated;
Attributes[GameAttribute.Immunity] = !activated;
Attributes[GameAttributes.Team_Override] = activated ? -1 : 2;
Attributes[GameAttributes.Untargetable] = !activated;
Attributes[GameAttributes.NPC_Is_Operatable] = activated;
Attributes[GameAttributes.Operatable] = activated;
Attributes[GameAttributes.Operatable_Story_Gizmo] = activated;
Attributes[GameAttributes.Disabled] = !activated;
Attributes[GameAttributes.Immunity] = !activated;
Attributes.BroadcastChangedIfRevealed();
}
@ -906,7 +906,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
if (this is Monster)
{
Attributes[GameAttribute.Hitpoints_Cur] += 0.001f;
Attributes[GameAttributes.Hitpoints_Cur] += 0.001f;
Attributes.BroadcastChangedIfRevealed();
}

View File

@ -1,22 +1,16 @@
using DiIiS_NA.Core.Helpers.Hash;
using DiIiS_NA.Core.Logging;
using DiIiS_NA.Core.Logging;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Encounter;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Map;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Portal;
//using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Portal;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Portal;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
{
@ -46,8 +40,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
{
Field2 = 0x9;//16;
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttribute.Untargetable] = false;
Attributes[GameAttributes.MinimapActive] = true;
Attributes[GameAttributes.Untargetable] = false;
var bossEncounter = ((ActorSNO.Target as DiIiS_NA.Core.MPQ.FileFormats.ActorData).TagMap[MarkerKeys.BossEncounter].Target as DiIiS_NA.Core.MPQ.FileFormats.BossEncounter);
DestWorld = bossEncounter.Worlds[0];
switch (DestWorld)
@ -189,13 +183,13 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
if (actor == null)
return false;
actor.Attributes[GameAttribute.Team_Override] = (status ? -1 : 2);
actor.Attributes[GameAttribute.Untargetable] = !status;
actor.Attributes[GameAttribute.NPC_Is_Operatable] = status;
actor.Attributes[GameAttribute.Operatable] = status;
actor.Attributes[GameAttribute.Operatable_Story_Gizmo] = status;
actor.Attributes[GameAttribute.Disabled] = !status;
actor.Attributes[GameAttribute.Immunity] = !status;
actor.Attributes[GameAttributes.Team_Override] = (status ? -1 : 2);
actor.Attributes[GameAttributes.Untargetable] = !status;
actor.Attributes[GameAttributes.NPC_Is_Operatable] = status;
actor.Attributes[GameAttributes.Operatable] = status;
actor.Attributes[GameAttributes.Operatable_Story_Gizmo] = status;
actor.Attributes[GameAttributes.Disabled] = !status;
actor.Attributes[GameAttributes.Immunity] = !status;
actor.Attributes.BroadcastChangedIfRevealed();
return true;
}

View File

@ -20,8 +20,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
Field2 = 0x9;//16;
Field7 = 0x00000001;
//this.CollFlags = 1; // this.CollFlags = 0; a hack for passing through blockers /fasbat
if (Attributes[GameAttribute.TeamID] == 10) Attributes[GameAttribute.TeamID] = 1; //fix for bugged gizmos
Attributes[GameAttribute.Hitpoints_Cur] = 1;
if (Attributes[GameAttributes.TeamID] == 10) Attributes[GameAttributes.TeamID] = 1; //fix for bugged gizmos
Attributes[GameAttributes.Hitpoints_Cur] = 1;
//this.Attributes[GameAttribute.MinimapActive] = true;
}
@ -34,7 +34,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
public override void OnTargeted(Player player, TargetMessage message)
{
if (Attributes[GameAttribute.Disabled] == true) return;
if (Attributes[GameAttributes.Disabled] == true) return;
Logger.Trace("(OnTargeted) Gizmo has been activated! Id: {0}, Type: {1}", SNO, ActorData.TagMap[ActorKeys.GizmoGroup]);
//handling quest triggers

View File

@ -49,8 +49,8 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.ActorSystem.Implementations.Artisans
public ArtisanShortcut(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.MinimapActive] = false;
Attributes[GameAttribute.Conversation_Icon, 0] = 0;
Attributes[GameAttributes.MinimapActive] = false;
Attributes[GameAttributes.Conversation_Icon, 0] = 0;
}
public override void OnTargeted(Player player, TargetMessage message)

View File

@ -19,7 +19,7 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.ActorSystem.Implementations.Artisans
public void OnAddSocket(Player player, Item item)
{
// TODO: Animate Jeweler? Who knows. /fasbat
item.Attributes[GameAttribute.Sockets] += 1;
item.Attributes[GameAttributes.Sockets] += 1;
// Why this not work? :/
item.Attributes.SendChangedMessage(player.InGameClient);
}

View File

@ -14,7 +14,7 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.ActorSystem.Implementations.Artisans
public Nephalem(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.In_Tiered_Loot_Run_Level] = 0;
Attributes[GameAttributes.In_Tiered_Loot_Run_Level] = 0;
//this.Attributes[GameAttribute.Conversation_Icon] = 2;
//this.ForceConversationSNO =
}

View File

@ -12,7 +12,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
class Banner : Gizmo
{
private static readonly Dictionary<int, ActorSno[]> bannerActors = new Dictionary<int, ActorSno[]>()
private static readonly Dictionary<int, ActorSno[]> bannerActors = new()
{
[0] = new ActorSno[] {
ActorSno._banner_player_1,
@ -72,7 +72,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
}
//if banner has been disabled for events like active greater active swarm /advocaite
if(!player.Attributes[GameAttribute.Banner_Usable])
if(!player.Attributes[GameAttributes.Banner_Usable])
{
return;
}

View File

@ -2,11 +2,6 @@
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.MessageSystem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DiIiS_NA.Core.Logging;
using DiIiS_NA.Core.MPQ.FileFormats;
@ -74,15 +69,15 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
: base(world, sno, tags)
{
if (sno == ActorSno._zoltunkulle && world.SNO == WorldSno.a2dun_zolt_lobby) SetVisible(false);
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttributes.MinimapActive] = true;
//this.Attributes[GameAttribute.Immune_To_Charm] = true;
Attributes[GameAttribute.using_Bossbar] = true;
Attributes[GameAttribute.InBossEncounter] = true;
Attributes[GameAttribute.Hitpoints_Max] *= GameServerConfig.Instance.BossHealthMultiplier;
Attributes[GameAttribute.Damage_Weapon_Min, 0] *= GameServerConfig.Instance.BossDamageMultiplier;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] *= GameServerConfig.Instance.BossDamageMultiplier;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttribute.TeamID] = 10;
Attributes[GameAttributes.using_Bossbar] = true;
Attributes[GameAttributes.InBossEncounter] = true;
Attributes[GameAttributes.Hitpoints_Max] *= GameServerConfig.Instance.BossHealthMultiplier;
Attributes[GameAttributes.Damage_Weapon_Min, 0] *= GameServerConfig.Instance.BossDamageMultiplier;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] *= GameServerConfig.Instance.BossDamageMultiplier;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttributes.TeamID] = 10;
WalkSpeed *= 0.5f;
if (Brain is MonsterBrain monsterBrain)

View File

@ -13,8 +13,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public CR_Glass(MapSystem.World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttributes.TeamID] = 2;
Attributes[GameAttributes.MinimapActive] = true;
Attributes.BroadcastChangedIfRevealed();
}

View File

@ -7,7 +7,6 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Base;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
using System;
using System.Linq;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
@ -35,10 +34,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
Type = FloatingNumberMessage.FloatType.White
}, this);
Attributes[GameAttribute.Hitpoints_Cur] = Math.Max(Attributes[GameAttribute.Hitpoints_Cur] - damage, 0);
Attributes[GameAttributes.Hitpoints_Cur] = Math.Max(Attributes[GameAttributes.Hitpoints_Cur] - damage, 0);
Attributes.BroadcastChangedIfRevealed();
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !SNO.IsUndestroyable())
if (Attributes[GameAttributes.Hitpoints_Cur] == 0 && !SNO.IsUndestroyable())
Die(source);
}
@ -68,11 +67,11 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
}, this);
Attributes[GameAttribute.Deleted_On_Server] = true;
Attributes[GameAttribute.Could_Have_Ragdolled] = true;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 5f;
Attributes[GameAttributes.Deleted_On_Server] = true;
Attributes[GameAttributes.Could_Have_Ragdolled] = true;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 5f;
Attributes.BroadcastChangedIfRevealed();
Task.Delay(1500).ContinueWith(delegate

View File

@ -7,7 +7,6 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Base;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
using System;
using System.Linq;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
@ -34,10 +33,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
Type = FloatingNumberMessage.FloatType.White
}, this);
Attributes[GameAttribute.Hitpoints_Cur] = Math.Max(Attributes[GameAttribute.Hitpoints_Cur] - damage, 0);
Attributes[GameAttributes.Hitpoints_Cur] = Math.Max(Attributes[GameAttributes.Hitpoints_Cur] - damage, 0);
Attributes.BroadcastChangedIfRevealed();
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !SNO.IsUndestroyable())
if (Attributes[GameAttributes.Hitpoints_Cur] == 0 && !SNO.IsUndestroyable())
Die(source);
}
@ -67,11 +66,11 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
}, this);
Attributes[GameAttribute.Deleted_On_Server] = true;
Attributes[GameAttribute.Could_Have_Ragdolled] = true;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 5f;
Attributes[GameAttributes.Deleted_On_Server] = true;
Attributes[GameAttributes.Could_Have_Ragdolled] = true;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 5f;
Attributes.BroadcastChangedIfRevealed();
Task.Delay(1400).ContinueWith(delegate

View File

@ -6,10 +6,6 @@ using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.ACD;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
@ -20,8 +16,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public ChallengeObelisk(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttributes.TeamID] = 2;
Attributes[GameAttributes.MinimapActive] = true;
Attributes.BroadcastChangedIfRevealed();
}
@ -30,13 +26,13 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
bool activated = false;
PlayAnimation(5, (AnimationSno)AnimationSet.TagMapAnimDefault[AnimationSetKeys.Opening]);
Attributes[GameAttribute.Team_Override] = (activated ? -1 : 2);
Attributes[GameAttribute.Untargetable] = !activated;
Attributes[GameAttribute.NPC_Is_Operatable] = activated;
Attributes[GameAttribute.Operatable] = activated;
Attributes[GameAttribute.Operatable_Story_Gizmo] = activated;
Attributes[GameAttribute.Disabled] = !activated;
Attributes[GameAttribute.Immunity] = !activated;
Attributes[GameAttributes.Team_Override] = (activated ? -1 : 2);
Attributes[GameAttributes.Untargetable] = !activated;
Attributes[GameAttributes.NPC_Is_Operatable] = activated;
Attributes[GameAttributes.Operatable] = activated;
Attributes[GameAttributes.Operatable_Story_Gizmo] = activated;
Attributes[GameAttributes.Disabled] = !activated;
Attributes[GameAttributes.Immunity] = !activated;
Attributes.BroadcastChangedIfRevealed();
CollFlags = 0;
@ -61,7 +57,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
if (!base.Reveal(player))
return false;
if (!Attributes[GameAttribute.Operatable])
if (!Attributes[GameAttributes.Operatable])
{
var actor = World.GetActorBySNO(ActorSno._x1_openworld_challenge_rifts_portal);
actor.SetVisible(false);

View File

@ -1,6 +1,5 @@
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.GeneratorsSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
@ -17,15 +16,15 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public Champion(MapSystem.World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Hitpoints_Max] *= 4.0f;
Attributes[GameAttribute.Immune_To_Charm] = true;
Attributes[GameAttribute.Damage_Weapon_Min, 0] *= 2.5f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] *= 2.5f;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttributes.Hitpoints_Max] *= 4.0f;
Attributes[GameAttributes.Immune_To_Charm] = true;
Attributes[GameAttributes.Damage_Weapon_Min, 0] *= 2.5f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] *= 2.5f;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
//MonsterAffixGenerator.Generate(this, this.World.Game.Difficulty + 1);
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.3f;
NamePrefix = MonsterAffixGenerator.GeneratePrefixName();
NameSuffix = MonsterAffixGenerator.GenerateSuffixName();

View File

@ -30,7 +30,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
});
player.CheckPointPosition = Position;
player.Attributes[GameAttribute.Corpse_Resurrection_Charges] = 3; // Reset corpse resurrection charges
player.Attributes[GameAttributes.Corpse_Resurrection_Charges] = 3; // Reset corpse resurrection charges
}
}

View File

@ -1,11 +1,8 @@
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.MessageSystem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DiIiS_NA.Core.Extensions;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
@ -16,7 +13,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public CursedChest(MapSystem.World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttributes.MinimapActive] = true;
}
private bool _collapsed = false;

View File

@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using DiIiS_NA.Core.Extensions;
using DiIiS_NA.GameServer.Core.Types.TagMap;
@ -20,7 +19,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public CursedShrine(MapSystem.World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttributes.MinimapActive] = true;
}
private bool _collapsed = false;
@ -93,9 +92,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
}
break;
}
Attributes[GameAttribute.Gizmo_Has_Been_Operated] = true;
Attributes[GameAttributes.Gizmo_Has_Been_Operated] = true;
//this.Attributes[GameAttribute.Gizmo_Operator_ACDID] = unchecked((int)player.DynamicID);
Attributes[GameAttribute.Gizmo_State] = 1;
Attributes[GameAttributes.Gizmo_State] = 1;
Attributes.BroadcastChangedIfRevealed();
var rewardChests = GetActorsInRange<LootContainer>(20f).Where(c => c.rewardChestAvailable == false).ToList();

View File

@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using DiIiS_NA.Core.Helpers.Math;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
@ -47,12 +46,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
Type = FloatingNumberMessage.FloatType.White
}, this);
Attributes[GameAttribute.Hitpoints_Cur] = Math.Max(Attributes[GameAttribute.Hitpoints_Cur] - damage, 0);
Attributes[GameAttributes.Hitpoints_Cur] = Math.Max(Attributes[GameAttributes.Hitpoints_Cur] - damage, 0);
//Attributes[GameAttribute.Last_Damage_ACD] = unchecked((int)source.DynamicID);
Attributes.BroadcastChangedIfRevealed();
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !SNO.IsUndestroyable())
if (Attributes[GameAttributes.Hitpoints_Cur] == 0 && !SNO.IsUndestroyable())
{
Die(source);
}
@ -76,7 +75,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
World.SpawnRandomGem(this, plr);
if (seed < 0.10f)
World.SpawnRandomPotion(this, plr);
if (seed < (rate * (1f + plr.Attributes[GameAttribute.Magic_Find])))
if (seed < (rate * (1f + plr.Attributes[GameAttributes.Magic_Find])))
{
var lootQuality = World.Game.IsHardcore ? LootManager.GetSeasonalLootQuality((int)Quality, World.Game.Difficulty) : LootManager.GetLootQuality((int)Quality, World.Game.Difficulty);
World.SpawnRandomEquip(plr, plr, lootQuality);
@ -113,8 +112,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
}, this);
Attributes[GameAttribute.Deleted_On_Server] = true;
Attributes[GameAttribute.Could_Have_Ragdolled] = true;
Attributes[GameAttributes.Deleted_On_Server] = true;
Attributes[GameAttributes.Could_Have_Ragdolled] = true;
Attributes.BroadcastChangedIfRevealed();
//handling quest triggers

View File

@ -7,10 +7,6 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.ACD;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Animation;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
@ -107,9 +103,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
AnimationSNO = AnimationSetKeys.Open.ID
}, this);
Attributes[GameAttribute.Gizmo_Has_Been_Operated] = true;
Attributes[GameAttributes.Gizmo_Has_Been_Operated] = true;
//this.Attributes[GameAttribute.Gizmo_Operator_ACDID] = unchecked((int)player.DynamicID);
Attributes[GameAttribute.Gizmo_State] = 1;
Attributes[GameAttributes.Gizmo_State] = 1;
CollFlags = 0;
isOpened = true;
@ -130,11 +126,11 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public override void OnTargeted(Player player, TargetMessage message)
{
if (Attributes[GameAttribute.Disabled]) return;
if (Attributes[GameAttributes.Disabled]) return;
Open();
base.OnTargeted(player, message);
Attributes[GameAttribute.Disabled] = true;
Attributes[GameAttributes.Disabled] = true;
}
private bool WaitToSpawn(TickerSystem.TickTimer timer)

View File

@ -1,5 +1,4 @@
using System;
using System.Linq;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
@ -25,7 +24,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
//this.Field2 = 0x9;//16;
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttributes.MinimapActive] = true;
//this.Attributes[GameAttribute.MinimapIconOverride] = 218394;
if (World.SNO.IsDungeon())
{

View File

@ -4,11 +4,6 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Misc;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
@ -18,7 +13,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public EquipmentManager(MapSystem.World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttributes.MinimapActive] = true;
}
public override void OnTargeted(Player player, TargetMessage message)

View File

@ -23,7 +23,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
CollFlags = 0;
WalkSpeed = 0;
Attributes[GameAttribute.Invulnerable] = true;
Attributes[GameAttributes.Invulnerable] = true;
}
}
}

View File

@ -1,12 +1,9 @@
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.GeneratorsSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Misc;
using System;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
@ -23,13 +20,13 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
// Override minimap icon in markerset tags
WalkSpeed = 0;
Brain = new MonsterBrain(this);
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttributes.MinimapActive] = true;
//this.Attributes[GameAttribute.MinimapIconOverride] = 123152;
Attributes[GameAttribute.Hitpoints_Max] *= 3f;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttributes.Hitpoints_Max] *= 3f;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
//this.Attributes[GameAttribute.Immune_To_Charm] = true;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 0f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 0f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 0f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 0f;
//(this.Brain as MonsterBrain).AddPresetPower(54055); //TreasureGoblinPause
(Brain as MonsterBrain).AddPresetPower(105371); //TreasureGoblin_Escape
}

View File

@ -17,10 +17,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
: base(world, sno, tags)
{
this.playerIndex = playerIndex;
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttribute.Headstone_Player_ANN] = 1;
Attributes[GameAttribute.TeamID] = 1;
if (World.Game.PvP) Attributes[GameAttribute.Disabled] = true;
Attributes[GameAttributes.MinimapActive] = true;
Attributes[GameAttributes.Headstone_Player_ANN] = 1;
Attributes[GameAttributes.TeamID] = 1;
if (World.Game.PvP) Attributes[GameAttributes.Disabled] = true;
}

View File

@ -1,5 +1,4 @@
using System.Linq;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.MessageSystem;
@ -18,8 +17,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public Healer(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.TeamID] = 0;
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttributes.TeamID] = 0;
Attributes[GameAttributes.MinimapActive] = true;
}
public override void OnTargeted(PlayerSystem.Player player, TargetMessage message)

View File

@ -3,11 +3,6 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
@ -16,8 +11,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public Healthwell(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttribute.Gizmo_State] = 0;
Attributes[GameAttributes.MinimapActive] = true;
Attributes[GameAttributes.Gizmo_State] = 0;
}
@ -25,9 +20,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
//Logger.Warn("Healthwell has no function, Powers not implemented");
Attributes[GameAttribute.Gizmo_Has_Been_Operated] = true;
Attributes[GameAttributes.Gizmo_Has_Been_Operated] = true;
//this.Attributes[GameAttribute.Gizmo_Operator_ACDID] = unchecked((int)player.DynamicID);
Attributes[GameAttribute.Gizmo_State] = 1;
Attributes[GameAttributes.Gizmo_State] = 1;
Attributes.BroadcastChangedIfRevealed();
player.AddPercentageHP(50);
player.AddAchievementCounter(74987243307169, 1);

View File

@ -5,11 +5,6 @@ using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
@ -24,7 +19,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public HearthPortal(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttributes.MinimapActive] = true;
SetVisible(false);
}

View File

@ -5,11 +5,7 @@ using DiIiS_NA.GameServer.GSSystem.ItemsSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
@ -52,7 +48,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
for (int i = 0; i < 9; i++)
{
var itm = ItemGenerator.GenerateRandomEquip(this, level, 6, 7);
itm.Attributes[GameAttribute.Item_Cost_Percent_Bonus] = 3f;
itm.Attributes[GameAttributes.Item_Cost_Percent_Bonus] = 3f;
list.Add(itm);
}

View File

@ -19,7 +19,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
proxySNO = ActorSno._hireling_enchantress_proxy;
skillKit = 484938;
hirelingGBID = StringHashHelper.HashItemName("Enchantress");
Attributes[GameAttribute.Hireling_Class] = 3;
Attributes[GameAttributes.Hireling_Class] = 3;
}
public override Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
@ -35,8 +35,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 102057:
case 101969:
player.HirelingInfo[3].Skill1SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 102057 ? 101969 : 102057)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 102057 ? 101969 : 102057)] = 0;
Attributes.BroadcastChangedIfRevealed();
dbhireling.Skill1SNOId = SkillSNOId;
@ -45,8 +45,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 102133:
case 101461:
player.HirelingInfo[3].Skill2SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 102133 ? 101461 : 102133)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 102133 ? 101461 : 102133)] = 0;
Attributes.BroadcastChangedIfRevealed();
dbhireling.Skill2SNOId = SkillSNOId;
@ -55,8 +55,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 101990:
case 220872:
player.HirelingInfo[3].Skill3SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 101990 ? 220872 : 101990)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 101990 ? 220872 : 101990)] = 0;
Attributes.BroadcastChangedIfRevealed();
dbhireling.Skill3SNOId = SkillSNOId;
@ -65,8 +65,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 101425:
case 201524:
player.HirelingInfo[3].Skill4SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 101425 ? 201524 : 101425)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 101425 ? 201524 : 101425)] = 0;
Attributes.BroadcastChangedIfRevealed();
dbhireling.Skill4SNOId = SkillSNOId;
@ -91,14 +91,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
player.HirelingInfo[3].Skill3SNOId = -1;
player.HirelingInfo[3].Skill4SNOId = -1;
Attributes[GameAttribute.Skill, 102057] = 0;
Attributes[GameAttribute.Skill, 101969] = 0;
Attributes[GameAttribute.Skill, 102133] = 0;
Attributes[GameAttribute.Skill, 101461] = 0;
Attributes[GameAttribute.Skill, 101990] = 0;
Attributes[GameAttribute.Skill, 220872] = 0;
Attributes[GameAttribute.Skill, 101425] = 0;
Attributes[GameAttribute.Skill, 201524] = 0;
Attributes[GameAttributes.Skill, 102057] = 0;
Attributes[GameAttributes.Skill, 101969] = 0;
Attributes[GameAttributes.Skill, 102133] = 0;
Attributes[GameAttributes.Skill, 101461] = 0;
Attributes[GameAttributes.Skill, 101990] = 0;
Attributes[GameAttributes.Skill, 220872] = 0;
Attributes[GameAttributes.Skill, 101425] = 0;
Attributes[GameAttributes.Skill, 201524] = 0;
Attributes.SendChangedMessage(player.InGameClient);
}

View File

@ -4,11 +4,8 @@ using System.Linq;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Pet;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using DiIiS_NA.GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.ObjectsSystem;
using DiIiS_NA.GameServer.GSSystem.ActorSystem;
using DiIiS_NA.Core.MPQ.FileFormats;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Interactions;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Inventory;
@ -43,25 +40,25 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
public Hireling(MapSystem.World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttributes.TeamID] = 2;
Interactions.Add(new HireInteraction());
Interactions.Add(new InventoryInteraction());
if (skillKit != -1)
Attributes[GameAttribute.SkillKit] = skillKit;
Attributes[GameAttributes.SkillKit] = skillKit;
}
public void SetUpAttributes(Player player)
{
owner = player;
var info = player.HirelingInfo[Attributes[GameAttribute.Hireling_Class]];
var info = player.HirelingInfo[Attributes[GameAttributes.Hireling_Class]];
//*
// TODO: fix this hardcoded crap
if (!IsProxy)
Attributes[GameAttribute.Buff_Visual_Effect, 0x000FFFFF] = true;
Attributes[GameAttributes.Buff_Visual_Effect, 0x000FFFFF] = true;
Attributes[GameAttribute.Level] = player.Level;
Attributes[GameAttribute.Experience_Next_Lo] = 0;
Attributes[GameAttributes.Level] = player.Level;
Attributes[GameAttributes.Experience_Next_Lo] = 0;
if (!IsHireling && !IsProxy) // original doesn't need more attribs
return;
@ -69,70 +66,70 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
if (info.Skill1SNOId != -1)
{
//scripted //this.Attributes[GameAttribute.Skill_Total, info.Skill1SNOId] = 1;
Attributes[GameAttribute.Skill, info.Skill1SNOId] = 1;
Attributes[GameAttributes.Skill, info.Skill1SNOId] = 1;
}
if (info.Skill2SNOId != -1)
{
//scripted //this.Attributes[GameAttribute.Skill_Total, info.Skill2SNOId] = 1;
Attributes[GameAttribute.Skill, info.Skill2SNOId] = 1;
Attributes[GameAttributes.Skill, info.Skill2SNOId] = 1;
}
if (info.Skill3SNOId != -1)
{
//scripted //this.Attributes[GameAttribute.Skill_Total, info.Skill3SNOId] = 1;
Attributes[GameAttribute.Skill, info.Skill3SNOId] = 1;
Attributes[GameAttributes.Skill, info.Skill3SNOId] = 1;
}
if (info.Skill4SNOId != -1)
{
//scripted //this.Attributes[GameAttribute.Skill_Total, info.Skill4SNOId] = 1;
Attributes[GameAttribute.Skill, info.Skill4SNOId] = 1;
Attributes[GameAttributes.Skill, info.Skill4SNOId] = 1;
}
/**/
_lastResourceUpdateTick = 0;
Attributes[GameAttribute.SkillKit] = skillKit;
Attributes[GameAttributes.SkillKit] = skillKit;
WalkSpeed = 0.45f;
#region hardcoded attribs :/
//*
Attributes[GameAttribute.Attacks_Per_Second] = 1f;
Attributes[GameAttribute.Attacks_Per_Second_Item] = 1.199219f;
Attributes[GameAttribute.Casting_Speed] = 1;
Attributes[GameAttribute.Damage_Delta, 0] = 1f;
Attributes[GameAttribute.Damage_Min, 0] = 1f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 2f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 6f;
Attributes[GameAttribute.General_Cooldown] = 0;
Attributes[GameAttribute.Hit_Chance] = 1;
Attributes[GameAttribute.Hitpoints_Factor_Vitality] = 10f + Math.Max(Attributes[GameAttribute.Level] - 35, 0);
Attributes[GameAttribute.Hitpoints_Max] = 276f;
Attributes[GameAttribute.Hitpoints_Cur] = 1f;
Attributes[GameAttribute.Level_Cap] = 70;
Attributes[GameAttribute.Movement_Scalar] = 1;
Attributes[GameAttribute.Resource_Max, 0] = 1.0f;
Attributes[GameAttribute.Resource_Cur, 0] = 1.0f;
Attributes[GameAttribute.Resource_Type_Primary] = 0;
Attributes[GameAttribute.Running_Rate] = 0.3598633f;
Attributes[GameAttribute.Sprinting_Rate] = 0.3598633f;
Attributes[GameAttribute.Strafing_Rate] = 0.1799316f;
Attributes[GameAttribute.Walking_Rate] = 0.3598633f;
Attributes[GameAttributes.Attacks_Per_Second] = 1f;
Attributes[GameAttributes.Attacks_Per_Second_Item] = 1.199219f;
Attributes[GameAttributes.Casting_Speed] = 1;
Attributes[GameAttributes.Damage_Delta, 0] = 1f;
Attributes[GameAttributes.Damage_Min, 0] = 1f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 2f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 6f;
Attributes[GameAttributes.General_Cooldown] = 0;
Attributes[GameAttributes.Hit_Chance] = 1;
Attributes[GameAttributes.Hitpoints_Factor_Vitality] = 10f + Math.Max(Attributes[GameAttributes.Level] - 35, 0);
Attributes[GameAttributes.Hitpoints_Max] = 276f;
Attributes[GameAttributes.Hitpoints_Cur] = 1f;
Attributes[GameAttributes.Level_Cap] = 70;
Attributes[GameAttributes.Movement_Scalar] = 1;
Attributes[GameAttributes.Resource_Max, 0] = 1.0f;
Attributes[GameAttributes.Resource_Cur, 0] = 1.0f;
Attributes[GameAttributes.Resource_Type_Primary] = 0;
Attributes[GameAttributes.Running_Rate] = 0.3598633f;
Attributes[GameAttributes.Sprinting_Rate] = 0.3598633f;
Attributes[GameAttributes.Strafing_Rate] = 0.1799316f;
Attributes[GameAttributes.Walking_Rate] = 0.3598633f;
if (IsProxy)
return;
Attributes[GameAttribute.Callout_Cooldown, 0x000FFFFF] = 0x00000797;
Attributes[GameAttribute.Buff_Visual_Effect, 0x000FFFFF] = true;
Attributes[GameAttribute.Buff_Icon_Count0, 0x000075C1] = 1;
Attributes[GameAttribute.Buff_Exclusive_Type_Active, 0x000075C1] = true;
Attributes[GameAttribute.Conversation_Icon, 0] = 1;
Attributes[GameAttribute.Buff_Exclusive_Type_Active, 0x20c51] = true;
Attributes[GameAttribute.Buff_Icon_End_Tick0, 0x00020C51] = 0x00000A75;
Attributes[GameAttribute.Buff_Icon_Start_Tick0, 0x00020C51] = 0x00000375;
Attributes[GameAttribute.Buff_Icon_Count0, 0x00020C51] = 3;
Attributes[GameAttribute.Callout_Cooldown, 0x1618a] = 743;
Attributes[GameAttribute.Callout_Cooldown, 0x01CAB6] = 743;
Attributes[GameAttributes.Callout_Cooldown, 0x000FFFFF] = 0x00000797;
Attributes[GameAttributes.Buff_Visual_Effect, 0x000FFFFF] = true;
Attributes[GameAttributes.Buff_Icon_Count0, 0x000075C1] = 1;
Attributes[GameAttributes.Buff_Exclusive_Type_Active, 0x000075C1] = true;
Attributes[GameAttributes.Conversation_Icon, 0] = 1;
Attributes[GameAttributes.Buff_Exclusive_Type_Active, 0x20c51] = true;
Attributes[GameAttributes.Buff_Icon_End_Tick0, 0x00020C51] = 0x00000A75;
Attributes[GameAttributes.Buff_Icon_Start_Tick0, 0x00020C51] = 0x00000375;
Attributes[GameAttributes.Buff_Icon_Count0, 0x00020C51] = 3;
Attributes[GameAttributes.Callout_Cooldown, 0x1618a] = 743;
Attributes[GameAttributes.Callout_Cooldown, 0x01CAB6] = 743;
//*/
#endregion
@ -150,59 +147,59 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
//*
try
{
Attributes[GameAttribute.Vitality] = 5f + (Attributes[GameAttribute.Level] * 2) + (GetItemBonus(GameAttribute.Vitality_Item));// * 2.5f);
Attributes[GameAttribute.Strength] = 5f + (Attributes[GameAttribute.Level] * (this is Templar ? 3 : 1)) + (GetItemBonus(GameAttribute.Strength_Item));// * 2.5f);
Attributes[GameAttribute.Dexterity] = 5f + (Attributes[GameAttribute.Level] * (this is Scoundrel ? 3 : 1)) + (GetItemBonus(GameAttribute.Dexterity_Item));// * 2.5f);
Attributes[GameAttribute.Intelligence] = 5f + (Attributes[GameAttribute.Level] * (this is Enchantress ? 3 : 1)) + (GetItemBonus(GameAttribute.Intelligence_Item));// * 2.5f);
Attributes[GameAttributes.Vitality] = 5f + (Attributes[GameAttributes.Level] * 2) + (GetItemBonus(GameAttributes.Vitality_Item));// * 2.5f);
Attributes[GameAttributes.Strength] = 5f + (Attributes[GameAttributes.Level] * (this is Templar ? 3 : 1)) + (GetItemBonus(GameAttributes.Strength_Item));// * 2.5f);
Attributes[GameAttributes.Dexterity] = 5f + (Attributes[GameAttributes.Level] * (this is Scoundrel ? 3 : 1)) + (GetItemBonus(GameAttributes.Dexterity_Item));// * 2.5f);
Attributes[GameAttributes.Intelligence] = 5f + (Attributes[GameAttributes.Level] * (this is Enchantress ? 3 : 1)) + (GetItemBonus(GameAttributes.Intelligence_Item));// * 2.5f);
Attributes[GameAttribute.Attacks_Per_Second_Item] = GetItemBonus(GameAttribute.Attacks_Per_Second_Item);
Attributes[GameAttributes.Attacks_Per_Second_Item] = GetItemBonus(GameAttributes.Attacks_Per_Second_Item);
//*
Attributes[GameAttribute.Crit_Percent_Bonus_Capped] = GetItemBonus(GameAttribute.Crit_Percent_Bonus_Capped);
Attributes[GameAttribute.Weapon_Crit_Chance] = GetItemBonus(GameAttribute.Weapon_Crit_Chance);
Attributes[GameAttribute.Crit_Damage_Percent] = 0.5f + GetItemBonus(GameAttribute.Crit_Damage_Percent);
Attributes[GameAttribute.Crit_Percent_Bonus_Uncapped] = GetItemBonus(GameAttribute.Crit_Percent_Bonus_Uncapped);
Attributes[GameAttributes.Crit_Percent_Bonus_Capped] = GetItemBonus(GameAttributes.Crit_Percent_Bonus_Capped);
Attributes[GameAttributes.Weapon_Crit_Chance] = GetItemBonus(GameAttributes.Weapon_Crit_Chance);
Attributes[GameAttributes.Crit_Damage_Percent] = 0.5f + GetItemBonus(GameAttributes.Crit_Damage_Percent);
Attributes[GameAttributes.Crit_Percent_Bonus_Uncapped] = GetItemBonus(GameAttributes.Crit_Percent_Bonus_Uncapped);
Attributes[GameAttribute.Armor_Item] = GetItemBonus(GameAttribute.Armor_Item);
Attributes[GameAttributes.Armor_Item] = GetItemBonus(GameAttributes.Armor_Item);
//*
for (int i = 0; i < 7; i++)
{
Attributes[GameAttribute.Damage_Weapon_Min, i] = Math.Max(GetItemBonus(GameAttribute.Damage_Weapon_Min, i), 2f) + GetItemBonus(GameAttribute.Damage_Min, i);
Attributes[GameAttribute.Damage_Weapon_Delta, i] = Math.Max(GetItemBonus(GameAttribute.Damage_Weapon_Delta_Total, i), 2f) + GetItemBonus(GameAttribute.Damage_Delta, i);
Attributes[GameAttribute.Damage_Weapon_Bonus_Min, i] = GetItemBonus(GameAttribute.Damage_Weapon_Bonus_Min, i);
Attributes[GameAttribute.Damage_Weapon_Bonus_Delta, i] = GetItemBonus(GameAttribute.Damage_Weapon_Bonus_Delta, i);
Attributes[GameAttribute.Resistance, i] = GetItemBonus(GameAttribute.Resistance, i);
Attributes[GameAttributes.Damage_Weapon_Min, i] = Math.Max(GetItemBonus(GameAttributes.Damage_Weapon_Min, i), 2f) + GetItemBonus(GameAttributes.Damage_Min, i);
Attributes[GameAttributes.Damage_Weapon_Delta, i] = Math.Max(GetItemBonus(GameAttributes.Damage_Weapon_Delta_Total, i), 2f) + GetItemBonus(GameAttributes.Damage_Delta, i);
Attributes[GameAttributes.Damage_Weapon_Bonus_Min, i] = GetItemBonus(GameAttributes.Damage_Weapon_Bonus_Min, i);
Attributes[GameAttributes.Damage_Weapon_Bonus_Delta, i] = GetItemBonus(GameAttributes.Damage_Weapon_Bonus_Delta, i);
Attributes[GameAttributes.Resistance, i] = GetItemBonus(GameAttributes.Resistance, i);
}
//*/
Attributes[GameAttribute.Resistance_All] = GetItemBonus(GameAttribute.Resistance_All);
Attributes[GameAttribute.Resistance_Percent_All] = GetItemBonus(GameAttribute.Resistance_Percent_All);
Attributes[GameAttribute.Damage_Percent_Reduction_From_Melee] = GetItemBonus(GameAttribute.Damage_Percent_Reduction_From_Melee);
Attributes[GameAttribute.Damage_Percent_Reduction_From_Ranged] = GetItemBonus(GameAttribute.Damage_Percent_Reduction_From_Ranged);
Attributes[GameAttributes.Resistance_All] = GetItemBonus(GameAttributes.Resistance_All);
Attributes[GameAttributes.Resistance_Percent_All] = GetItemBonus(GameAttributes.Resistance_Percent_All);
Attributes[GameAttributes.Damage_Percent_Reduction_From_Melee] = GetItemBonus(GameAttributes.Damage_Percent_Reduction_From_Melee);
Attributes[GameAttributes.Damage_Percent_Reduction_From_Ranged] = GetItemBonus(GameAttributes.Damage_Percent_Reduction_From_Ranged);
Attributes[GameAttribute.Thorns_Fixed] = GetItemBonus(GameAttribute.Thorns_Fixed, 0);
Attributes[GameAttributes.Thorns_Fixed] = GetItemBonus(GameAttributes.Thorns_Fixed, 0);
Attributes[GameAttribute.Steal_Health_Percent] = GetItemBonus(GameAttribute.Steal_Health_Percent);
Attributes[GameAttribute.Hitpoints_On_Hit] = GetItemBonus(GameAttribute.Hitpoints_On_Hit);
Attributes[GameAttribute.Hitpoints_On_Kill] = GetItemBonus(GameAttribute.Hitpoints_On_Kill);
Attributes[GameAttributes.Steal_Health_Percent] = GetItemBonus(GameAttributes.Steal_Health_Percent);
Attributes[GameAttributes.Hitpoints_On_Hit] = GetItemBonus(GameAttributes.Hitpoints_On_Hit);
Attributes[GameAttributes.Hitpoints_On_Kill] = GetItemBonus(GameAttributes.Hitpoints_On_Kill);
Attributes[GameAttribute.Magic_Find] = GetItemBonus(GameAttribute.Magic_Find);
Attributes[GameAttribute.Gold_Find] = GetItemBonus(GameAttribute.Gold_Find);
Attributes[GameAttributes.Magic_Find] = GetItemBonus(GameAttributes.Magic_Find);
Attributes[GameAttributes.Gold_Find] = GetItemBonus(GameAttributes.Gold_Find);
Attributes[GameAttribute.Dodge_Chance_Bonus] = GetItemBonus(GameAttribute.Dodge_Chance_Bonus);
Attributes[GameAttributes.Dodge_Chance_Bonus] = GetItemBonus(GameAttributes.Dodge_Chance_Bonus);
Attributes[GameAttribute.Block_Amount_Item_Min] = GetItemBonus(GameAttribute.Block_Amount_Item_Min);
Attributes[GameAttribute.Block_Amount_Item_Delta] = GetItemBonus(GameAttribute.Block_Amount_Item_Delta);
Attributes[GameAttribute.Block_Amount_Bonus_Percent] = GetItemBonus(GameAttribute.Block_Amount_Bonus_Percent);
Attributes[GameAttribute.Block_Chance] = GetItemBonus(GameAttribute.Block_Chance_Item_Total);
Attributes[GameAttributes.Block_Amount_Item_Min] = GetItemBonus(GameAttributes.Block_Amount_Item_Min);
Attributes[GameAttributes.Block_Amount_Item_Delta] = GetItemBonus(GameAttributes.Block_Amount_Item_Delta);
Attributes[GameAttributes.Block_Amount_Bonus_Percent] = GetItemBonus(GameAttributes.Block_Amount_Bonus_Percent);
Attributes[GameAttributes.Block_Chance] = GetItemBonus(GameAttributes.Block_Chance_Item_Total);
//*/
Attributes[GameAttribute.Hitpoints_Max_Percent_Bonus_Item] = GetItemBonus(GameAttribute.Hitpoints_Max_Percent_Bonus_Item);
Attributes[GameAttribute.Hitpoints_Max_Bonus] = GetItemBonus(GameAttribute.Hitpoints_Max_Bonus);
Attributes[GameAttribute.Hitpoints_Factor_Vitality] = 10f + Math.Max(Attributes[GameAttribute.Level] - 35, 0);
Attributes[GameAttribute.Hitpoints_Regen_Per_Second] = GetItemBonus(GameAttribute.Hitpoints_Regen_Per_Second) + 10f + (10f * Attributes[GameAttribute.Level]);
Attributes[GameAttributes.Hitpoints_Max_Percent_Bonus_Item] = GetItemBonus(GameAttributes.Hitpoints_Max_Percent_Bonus_Item);
Attributes[GameAttributes.Hitpoints_Max_Bonus] = GetItemBonus(GameAttributes.Hitpoints_Max_Bonus);
Attributes[GameAttributes.Hitpoints_Factor_Vitality] = 10f + Math.Max(Attributes[GameAttributes.Level] - 35, 0);
Attributes[GameAttributes.Hitpoints_Regen_Per_Second] = GetItemBonus(GameAttributes.Hitpoints_Regen_Per_Second) + 10f + (10f * Attributes[GameAttributes.Level]);
Attributes[GameAttribute.Core_Attributes_From_Item_Bonus_Multiplier] = 1;
Attributes[GameAttribute.Hitpoints_Max_Percent_Bonus_Multiplicative] = 1;
Attributes[GameAttribute.Hitpoints_Max] = 276f; //+ (this.Attributes[GameAttribute.Vitality] * (10f + Math.Max(this.Attributes[GameAttribute.Level] - 35, 0)));
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttributes.Core_Attributes_From_Item_Bonus_Multiplier] = 1;
Attributes[GameAttributes.Hitpoints_Max_Percent_Bonus_Multiplicative] = 1;
Attributes[GameAttributes.Hitpoints_Max] = 276f; //+ (this.Attributes[GameAttribute.Vitality] * (10f + Math.Max(this.Attributes[GameAttribute.Level] - 35, 0)));
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
/**/
}
catch { }
@ -227,11 +224,11 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
hireling.GBHandle.Type = 4;
hireling.GBHandle.GBID = hirelingGBID;
hireling.Attributes[GameAttribute.Pet_Creator] = player.PlayerIndex + 1;
hireling.Attributes[GameAttribute.Pet_Type] = 1;
hireling.Attributes[GameAttribute.Pet_Owner] = player.PlayerIndex + 1;
hireling.Attributes[GameAttribute.Untargetable] = false;
hireling.Attributes[GameAttribute.NPC_Is_Escorting] = true;
hireling.Attributes[GameAttributes.Pet_Creator] = player.PlayerIndex + 1;
hireling.Attributes[GameAttributes.Pet_Type] = 1;
hireling.Attributes[GameAttributes.Pet_Owner] = player.PlayerIndex + 1;
hireling.Attributes[GameAttributes.Untargetable] = false;
hireling.Attributes[GameAttributes.NPC_Is_Escorting] = true;
hireling.RotationW = RotationW;
hireling.RotationAxis = RotationAxis;
@ -262,21 +259,21 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
if (IsHireling || IsProxy)
return;
if (player.ActiveHireling.Attributes[GameAttribute.Hireling_Class] == Attributes[GameAttribute.Hireling_Class])
if (player.ActiveHireling.Attributes[GameAttributes.Hireling_Class] == Attributes[GameAttributes.Hireling_Class])
return;
var hireling = CreateHireling(World, proxySNO, Tags);
hireling.SetUpAttributes(player);
hireling.GBHandle.Type = 4;
hireling.GBHandle.GBID = hirelingGBID;
hireling.Attributes[GameAttribute.Is_NPC] = false;
hireling.Attributes[GameAttribute.NPC_Is_Operatable] = false;
hireling.Attributes[GameAttribute.NPC_Has_Interact_Options, 0] = false;
hireling.Attributes[GameAttribute.Buff_Visual_Effect, 0x00FFFFF] = false;
hireling.Attributes[GameAttributes.Is_NPC] = false;
hireling.Attributes[GameAttributes.NPC_Is_Operatable] = false;
hireling.Attributes[GameAttributes.NPC_Has_Interact_Options, 0] = false;
hireling.Attributes[GameAttributes.Buff_Visual_Effect, 0x00FFFFF] = false;
hireling.Attributes[GameAttribute.Pet_Creator] = player.PlayerIndex + 1;
hireling.Attributes[GameAttribute.Pet_Type] = 1;
hireling.Attributes[GameAttribute.Pet_Owner] = player.PlayerIndex + 1;
hireling.Attributes[GameAttributes.Pet_Creator] = player.PlayerIndex + 1;
hireling.Attributes[GameAttributes.Pet_Type] = 1;
hireling.Attributes[GameAttributes.Pet_Owner] = player.PlayerIndex + 1;
hireling.RotationW = RotationW;
hireling.RotationAxis = RotationAxis;
@ -301,7 +298,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
{
float tickSeconds = 1f / 60f * (World.Game.TickCounter - _lastResourceUpdateTick);
_lastResourceUpdateTick = World.Game.TickCounter;
float quantity = tickSeconds * Attributes[GameAttribute.Hitpoints_Regen_Per_Second];
float quantity = tickSeconds * Attributes[GameAttributes.Hitpoints_Regen_Per_Second];
AddHP(quantity);
}
@ -313,11 +310,11 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
if (quantity == 0) return;
if (quantity > 0)
{
if (Attributes[GameAttribute.Hitpoints_Cur] < Attributes[GameAttribute.Hitpoints_Max_Total])
if (Attributes[GameAttributes.Hitpoints_Cur] < Attributes[GameAttributes.Hitpoints_Max_Total])
{
Attributes[GameAttribute.Hitpoints_Cur] = Math.Min(
Attributes[GameAttribute.Hitpoints_Cur] + quantity,
Attributes[GameAttribute.Hitpoints_Max_Total]);
Attributes[GameAttributes.Hitpoints_Cur] = Math.Min(
Attributes[GameAttributes.Hitpoints_Cur] + quantity,
Attributes[GameAttributes.Hitpoints_Max_Total]);
Attributes.BroadcastChangedIfRevealed();
}
@ -402,7 +399,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
if (World.Game.Players.Count > 1)
return false;
if (!IsHireling && ((player.ActiveHireling != null && Attributes[GameAttribute.Hireling_Class] == player.ActiveHireling.Attributes[GameAttribute.Hireling_Class])))// || (player.HirelingId != null && this.Attributes[GameAttribute.Hireling_Class] == player.HirelingId)))
if (!IsHireling && ((player.ActiveHireling != null && Attributes[GameAttributes.Hireling_Class] == player.ActiveHireling.Attributes[GameAttributes.Hireling_Class])))// || (player.HirelingId != null && this.Attributes[GameAttribute.Hireling_Class] == player.HirelingId)))
return false;
if (owner == null)
@ -448,12 +445,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
public void LoadInventory(Player player)
{
_equipment.Add(player, new Dictionary<int, Item>());
var inventory_list = World.Game.GameDbSession.SessionQueryWhere<DBInventory>(dbi => dbi.DBToon.Id == player.Toon.PersistentID && dbi.HirelingId != 0 && dbi.HirelingId == Attributes[GameAttribute.Hireling_Class]);
var inventory_list = World.Game.GameDbSession.SessionQueryWhere<DBInventory>(dbi => dbi.DBToon.Id == player.Toon.PersistentID && dbi.HirelingId != 0 && dbi.HirelingId == Attributes[GameAttributes.Hireling_Class]);
foreach (var inv_item in inventory_list)
{
Item item = ItemGenerator.LoadFromDB(player, inv_item);
item.Owner = this;
item.Attributes[GameAttribute.Item_Equipped] = true;
item.Attributes[GameAttributes.Item_Equipped] = true;
item.SetInventoryLocation(inv_item.EquipmentSlot, 0, 0);
if (!_equipment[player].ContainsKey(inv_item.EquipmentSlot))
_equipment[player].Add(inv_item.EquipmentSlot, item);
@ -472,12 +469,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
item.Owner = this;
item.SetInventoryLocation(slot, 0, 0);
item.DBInventory.HirelingId = Attributes[GameAttribute.Hireling_Class];
item.DBInventory.HirelingId = Attributes[GameAttributes.Hireling_Class];
item.DBInventory.EquipmentSlot = slot;
item.DBInventory.LocationX = 0;
item.DBInventory.LocationY = 0;
World.Game.GameDbSession.SessionUpdate(item.DBInventory);
item.Attributes[GameAttribute.Item_Equipped] = true;
item.Attributes[GameAttributes.Item_Equipped] = true;
_equipment[owner].Add(slot, item);
RefreshEquipment(owner);
UpdateAttributes();
@ -497,7 +494,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
World.Game.GameDbSession.SessionDelete(item.DBInventory);
owner.Inventory.PickUp(item);
item.Unreveal(owner);
item.Attributes[GameAttribute.Item_Equipped] = false;
item.Attributes[GameAttributes.Item_Equipped] = false;
item.Reveal(owner);
RefreshEquipment(owner);
UpdateAttributes();
@ -538,10 +535,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
public float GetItemBonus(GameAttributeF attributeF)
{
var stats = GetEquippedItems(owner)
.Where(item => item.Attributes[GameAttribute.Durability_Cur] > 0 ||
item.Attributes[GameAttribute.Durability_Max] == 0);
.Where(item => item.Attributes[GameAttributes.Durability_Cur] > 0 ||
item.Attributes[GameAttributes.Durability_Max] == 0);
if (attributeF == GameAttribute.Attacks_Per_Second_Item)
if (attributeF == GameAttributes.Attacks_Per_Second_Item)
{
return stats.Any()
? stats.Select(item => item.Attributes[attributeF]).Where(a => a > 0f).Aggregate(1f, (x, y) => x * y)
@ -552,7 +549,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
public int GetItemBonus(GameAttributeI attributeI)
{
return GetEquippedItems(owner).Where(item => item.Attributes[GameAttribute.Durability_Cur] > 0 || item.Attributes[GameAttribute.Durability_Max] == 0).Sum(item => item.Attributes[attributeI]);
return GetEquippedItems(owner).Where(item => item.Attributes[GameAttributes.Durability_Cur] > 0 || item.Attributes[GameAttributes.Durability_Max] == 0).Sum(item => item.Attributes[attributeI]);
}
public bool GetItemBonus(GameAttributeB attributeB)
@ -562,12 +559,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
public float GetItemBonus(GameAttributeF attributeF, int attributeKey)
{
return GetEquippedItems(owner).Where(item => item.Attributes[GameAttribute.Durability_Cur] > 0 || item.Attributes[GameAttribute.Durability_Max] == 0).Sum(item => item.Attributes[attributeF, attributeKey]);
return GetEquippedItems(owner).Where(item => item.Attributes[GameAttributes.Durability_Cur] > 0 || item.Attributes[GameAttributes.Durability_Max] == 0).Sum(item => item.Attributes[attributeF, attributeKey]);
}
public int GetItemBonus(GameAttributeI attributeI, int attributeKey)
{
return GetEquippedItems(owner).Where(item => item.Attributes[GameAttribute.Durability_Cur] > 0 || item.Attributes[GameAttribute.Durability_Max] == 0).Sum(item => item.Attributes[attributeI, attributeKey]);
return GetEquippedItems(owner).Where(item => item.Attributes[GameAttributes.Durability_Cur] > 0 || item.Attributes[GameAttributes.Durability_Max] == 0).Sum(item => item.Attributes[attributeI, attributeKey]);
}
#endregion
}

View File

@ -4,11 +4,6 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
{
@ -24,20 +19,20 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
proxySNO = ActorSno._hireling_scoundrel_proxy;
skillKit = 0x8AFE;
hirelingGBID = StringHashHelper.HashItemName("Scoundrel");
Attributes[GameAttribute.Hireling_Class] = 4;
var MS = Attributes[GameAttribute.Movement_Scalar];
var RS = Attributes[GameAttribute.Run_Speed_Granted];
var MSRP = Attributes[GameAttribute.Movement_Scalar_Reduction_Percent];
Attributes[GameAttribute.Movement_Scalar] = 3f;
Attributes[GameAttribute.Run_Speed_Granted] = 3f;
Attributes[GameAttributes.Hireling_Class] = 4;
var MS = Attributes[GameAttributes.Movement_Scalar];
var RS = Attributes[GameAttributes.Run_Speed_Granted];
var MSRP = Attributes[GameAttributes.Movement_Scalar_Reduction_Percent];
Attributes[GameAttributes.Movement_Scalar] = 3f;
Attributes[GameAttributes.Run_Speed_Granted] = 3f;
//this.Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.3f; Attributes[GameAttribute.Hitpoints_Max] = 9999f;
var HPM = Attributes[GameAttribute.Hitpoints_Max];
var HPMT = Attributes[GameAttribute.Hitpoints_Max_Total];
WalkSpeed = 0.3f; Attributes[GameAttributes.Hitpoints_Max] = 9999f;
var HPM = Attributes[GameAttributes.Hitpoints_Max];
var HPMT = Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttribute.Hitpoints_Max_Percent_Bonus_Multiplicative] = 1;
Attributes[GameAttributes.Hitpoints_Max_Percent_Bonus_Multiplicative] = 1;
Attributes[GameAttribute.Hitpoints_Max] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttributes.Hitpoints_Max] = Attributes[GameAttributes.Hitpoints_Max_Total];
}
@ -117,7 +112,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
}
}
});
Attributes[GameAttribute.Conversation_Icon, 0] = 1;
Attributes[GameAttributes.Conversation_Icon, 0] = 1;
Attributes.BroadcastChangedIfRevealed();
return true;

View File

@ -19,9 +19,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
proxySNO = ActorSno._hireling_templar_proxy;
skillKit = 484941;
hirelingGBID = StringHashHelper.HashItemName("Templar");
Attributes[GameAttribute.Hireling_Class] = 0;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttribute.Team_Override] = 2;
Attributes[GameAttributes.Hireling_Class] = 0;
Attributes[GameAttributes.TeamID] = 2;
Attributes[GameAttributes.Team_Override] = 2;
}
public override Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
@ -37,8 +37,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 102057:
case 101969:
player.HirelingInfo[3].Skill1SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 102057 ? 101969 : 102057)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 102057 ? 101969 : 102057)] = 0;
Attributes.BroadcastChangedIfRevealed();
dbhireling.Skill1SNOId = SkillSNOId;
@ -47,8 +47,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 102133:
case 101461:
player.HirelingInfo[3].Skill2SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 102133 ? 101461 : 102133)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 102133 ? 101461 : 102133)] = 0;
Attributes.BroadcastChangedIfRevealed();
dbhireling.Skill2SNOId = SkillSNOId;
@ -57,8 +57,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 101990:
case 220872:
player.HirelingInfo[3].Skill3SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 101990 ? 220872 : 101990)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 101990 ? 220872 : 101990)] = 0;
Attributes.BroadcastChangedIfRevealed();
dbhireling.Skill3SNOId = SkillSNOId;
@ -67,8 +67,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 101425:
case 201524:
player.HirelingInfo[3].Skill4SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 101425 ? 201524 : 101425)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 101425 ? 201524 : 101425)] = 0;
Attributes.BroadcastChangedIfRevealed();
dbhireling.Skill4SNOId = SkillSNOId;
@ -93,14 +93,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
player.HirelingInfo[3].Skill3SNOId = -1;
player.HirelingInfo[3].Skill4SNOId = -1;
Attributes[GameAttribute.Skill, 102057] = 0;
Attributes[GameAttribute.Skill, 101969] = 0;
Attributes[GameAttribute.Skill, 102133] = 0;
Attributes[GameAttribute.Skill, 101461] = 0;
Attributes[GameAttribute.Skill, 101990] = 0;
Attributes[GameAttribute.Skill, 220872] = 0;
Attributes[GameAttribute.Skill, 101425] = 0;
Attributes[GameAttribute.Skill, 201524] = 0;
Attributes[GameAttributes.Skill, 102057] = 0;
Attributes[GameAttributes.Skill, 101969] = 0;
Attributes[GameAttributes.Skill, 102133] = 0;
Attributes[GameAttributes.Skill, 101461] = 0;
Attributes[GameAttributes.Skill, 101990] = 0;
Attributes[GameAttributes.Skill, 220872] = 0;
Attributes[GameAttributes.Skill, 101425] = 0;
Attributes[GameAttributes.Skill, 201524] = 0;
Attributes.SendChangedMessage(player.InGameClient);
}

View File

@ -19,7 +19,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
proxySNO = ActorSno._hireling_scoundrel_proxy;
skillKit = 484937;
hirelingGBID = StringHashHelper.HashItemName("Scoundrel");
Attributes[GameAttribute.Hireling_Class] = 2;
Attributes[GameAttributes.Hireling_Class] = 2;
}
public override Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
@ -35,8 +35,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 95675:
case 30460:
player.HirelingInfo[2].Skill1SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 95675 ? 30460 : 95675)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 95675 ? 30460 : 95675)] = 0;
Attributes.SendChangedMessage(player.InGameClient);
dbhireling.Skill1SNOId = SkillSNOId;
@ -45,8 +45,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 97436:
case 30464:
player.HirelingInfo[2].Skill2SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 97436 ? 30464 : 97436)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 97436 ? 30464 : 97436)] = 0;
Attributes.SendChangedMessage(player.InGameClient);
dbhireling.Skill2SNOId = SkillSNOId;
@ -55,8 +55,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 95690:
case 30458:
player.HirelingInfo[2].Skill3SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 95690 ? 30458 : 95690)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 95690 ? 30458 : 95690)] = 0;
Attributes.SendChangedMessage(player.InGameClient);
dbhireling.Skill3SNOId = SkillSNOId;
@ -65,8 +65,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 200169:
case 30454:
player.HirelingInfo[2].Skill4SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 200169 ? 30454 : 200169)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 200169 ? 30454 : 200169)] = 0;
Attributes.SendChangedMessage(player.InGameClient);
dbhireling.Skill4SNOId = SkillSNOId;
@ -91,14 +91,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
player.HirelingInfo[2].Skill3SNOId = -1;
player.HirelingInfo[2].Skill4SNOId = -1;
Attributes[GameAttribute.Skill, 95675] = 0;
Attributes[GameAttribute.Skill, 30460] = 0;
Attributes[GameAttribute.Skill, 97436] = 0;
Attributes[GameAttribute.Skill, 30464] = 0;
Attributes[GameAttribute.Skill, 95690] = 0;
Attributes[GameAttribute.Skill, 30458] = 0;
Attributes[GameAttribute.Skill, 200169] = 0;
Attributes[GameAttribute.Skill, 30454] = 0;
Attributes[GameAttributes.Skill, 95675] = 0;
Attributes[GameAttributes.Skill, 30460] = 0;
Attributes[GameAttributes.Skill, 97436] = 0;
Attributes[GameAttributes.Skill, 30464] = 0;
Attributes[GameAttributes.Skill, 95690] = 0;
Attributes[GameAttributes.Skill, 30458] = 0;
Attributes[GameAttributes.Skill, 200169] = 0;
Attributes[GameAttributes.Skill, 30454] = 0;
Attributes.SendChangedMessage(player.InGameClient);
}

View File

@ -19,7 +19,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
proxySNO = ActorSno._hireling_templar_proxy;
skillKit = 484941;
hirelingGBID = StringHashHelper.HashItemName("Templar");
Attributes[GameAttribute.Hireling_Class] = 1;
Attributes[GameAttributes.Hireling_Class] = 1;
}
public override Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
@ -35,8 +35,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 1747:
case 93938:
player.HirelingInfo[1].Skill1SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 1747 ? 93938 : 1747)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 1747 ? 93938 : 1747)] = 0;
Attributes.SendChangedMessage(player.InGameClient);
dbhireling.Skill1SNOId = SkillSNOId;
@ -45,8 +45,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 30357:
case 93901:
player.HirelingInfo[1].Skill2SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 30357 ? 93901 : 30357)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 30357 ? 93901 : 30357)] = 0;
Attributes.SendChangedMessage(player.InGameClient);
dbhireling.Skill2SNOId = SkillSNOId;
@ -55,8 +55,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 30360:
case 93888:
player.HirelingInfo[1].Skill3SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 30360 ? 93888 : 30360)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 30360 ? 93888 : 30360)] = 0;
Attributes.SendChangedMessage(player.InGameClient);
dbhireling.Skill3SNOId = SkillSNOId;
@ -65,8 +65,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
case 30356:
case 30359:
player.HirelingInfo[1].Skill4SNOId = SkillSNOId;
Attributes[GameAttribute.Skill, SkillSNOId] = 1;
Attributes[GameAttribute.Skill, (SkillSNOId == 30356 ? 30359 : 30356)] = 0;
Attributes[GameAttributes.Skill, SkillSNOId] = 1;
Attributes[GameAttributes.Skill, (SkillSNOId == 30356 ? 30359 : 30356)] = 0;
Attributes.SendChangedMessage(player.InGameClient);
dbhireling.Skill4SNOId = SkillSNOId;
@ -91,14 +91,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
player.HirelingInfo[1].Skill3SNOId = -1;
player.HirelingInfo[1].Skill4SNOId = -1;
Attributes[GameAttribute.Skill, 1747] = 0;
Attributes[GameAttribute.Skill, 93938] = 0;
Attributes[GameAttribute.Skill, 30357] = 0;
Attributes[GameAttribute.Skill, 93901] = 0;
Attributes[GameAttribute.Skill, 30360] = 0;
Attributes[GameAttribute.Skill, 93888] = 0;
Attributes[GameAttribute.Skill, 30356] = 0;
Attributes[GameAttribute.Skill, 30359] = 0;
Attributes[GameAttributes.Skill, 1747] = 0;
Attributes[GameAttributes.Skill, 93938] = 0;
Attributes[GameAttributes.Skill, 30357] = 0;
Attributes[GameAttributes.Skill, 93901] = 0;
Attributes[GameAttributes.Skill, 30360] = 0;
Attributes[GameAttributes.Skill, 93888] = 0;
Attributes[GameAttributes.Skill, 30356] = 0;
Attributes[GameAttributes.Skill, 30359] = 0;
Attributes.SendChangedMessage(player.InGameClient);
}

View File

@ -8,12 +8,7 @@ using DiIiS_NA.GameServer.GSSystem.ItemsSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Animation;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Base;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Quest;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Text;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
@ -37,7 +32,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public override void OnTargeted(Player player, TargetMessage message)
{
if (Attributes[GameAttribute.Disabled]) return;
if (Attributes[GameAttributes.Disabled]) return;
int chance = World.Game.IsHardcore ? 99 : 25; //S4 special
/*

View File

@ -1,6 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq;
using DiIiS_NA.Core.Helpers.Math;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
@ -9,7 +7,6 @@ using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Animation;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Base;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Quest;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
@ -24,7 +21,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public LootContainer(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
if (SNO == ActorSno._a3dunrmpt_interactives_signal_fire_a_prop) Attributes[GameAttribute.MinimapActive] = true;
if (SNO == ActorSno._a3dunrmpt_interactives_signal_fire_a_prop) Attributes[GameAttributes.MinimapActive] = true;
if (SNO.IsChest() || SNO.IsCorpse()) haveDrop = true;
@ -52,7 +49,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
if (!base.Reveal(player))
return false;
if (Attributes[GameAttribute.Disabled])
if (Attributes[GameAttributes.Disabled])
{
player.InGameClient.SendMessage(new SetIdleAnimationMessage
{
@ -70,7 +67,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
if (SNO == ActorSno._p4_setdung_totem_cru_thorns)
return;
if (Attributes[GameAttribute.Disabled]) return;
if (Attributes[GameAttributes.Disabled]) return;
base.OnTargeted(player, message);
@ -116,7 +113,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
World.SpawnRandomGem(this, plr);
if (seed < 0.10f)
World.SpawnRandomPotion(this, plr);
if (seed < (rate * (1f + plr.Attributes[GameAttribute.Magic_Find])))
if (seed < (rate * (1f + plr.Attributes[GameAttributes.Magic_Find])))
{
var lootQuality = World.Game.IsHardcore ? LootManager.GetSeasonalLootQuality((int)Quality, World.Game.Difficulty) : LootManager.GetLootQuality((int)Quality, World.Game.Difficulty);
World.SpawnRandomEquip(plr, plr, lootQuality);
@ -160,12 +157,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
AnimationSNO = AnimationSetKeys.Open.ID
}, this);
Attributes[GameAttribute.Gizmo_Has_Been_Operated] = true;
Attributes[GameAttributes.Gizmo_Has_Been_Operated] = true;
//this.Attributes[GameAttribute.Gizmo_Operator_ACDID] = unchecked((int)player.DynamicID);
Attributes[GameAttribute.Chest_Open, 0xFFFFFF] = true;
Attributes[GameAttributes.Chest_Open, 0xFFFFFF] = true;
Attributes.BroadcastChangedIfRevealed();
Attributes[GameAttribute.Disabled] = true;
Attributes[GameAttributes.Disabled] = true;
if (SNO == ActorSno._trdun_cath_chandelier_trap_switch2)
{

View File

@ -27,13 +27,13 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.ActorSystem.Implementations.Minions
brain.AddPresetPower(power);
}
SetBrain(brain);
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = context.ScriptFormula(11) * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.ScriptFormula(11) * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = context.ScriptFormula(11) * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.ScriptFormula(11) * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
if (this.Master != null)

View File

@ -1,9 +1,7 @@
using System.Linq;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
@ -19,15 +17,15 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
DamageCoefficient = 4f; //Useless otherwise
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttribute.Hitpoints_Max] = context.User.Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttributes.Hitpoints_Max] = context.User.Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttribute.Damage_Weapon_Min, 0] = context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total] * damageMult;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total] * damageMult;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total] * damageMult;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total] * damageMult;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Pet_Type] = 0x8;
LifeTime = lifeTime;
}
@ -44,15 +42,15 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
SetBrain(new MinionBrain(this));
(Brain as MinionBrain).AddPresetPower(369807);
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttribute.Hitpoints_Max] = context.User.Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttributes.Hitpoints_Max] = context.User.Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttribute.Damage_Weapon_Min, 0] = context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total] * damageMult;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total] * damageMult;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total] * damageMult;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total] * damageMult;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Pet_Type] = 0x8;
LifeTime = lifeTime;
}

View File

@ -2,8 +2,6 @@
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using System.Collections.Generic;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
@ -30,14 +28,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
: base(world, CompanionSNO, context.User, null)
{
Scale = 1.2f;
if (context.User.Attributes[GameAttribute.Rune_B, 0x000592ff] > 0) Scale = 2f; //Boar
if (context.User.Attributes[GameAttribute.Rune_C, 0x000592ff] > 0) Scale = 2f; //Wolf
if (context.User.Attributes[GameAttributes.Rune_B, 0x000592ff] > 0) Scale = 2f; //Boar
if (context.User.Attributes[GameAttributes.Rune_C, 0x000592ff] > 0) Scale = 2f; //Wolf
//TODO: get a proper value for this.
WalkSpeed *= 5;
DamageCoefficient = context.ScriptFormula(0);
Attributes[GameAttribute.Invulnerable] = true;
Attributes[GameAttribute.Is_Helper] = true;
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Invulnerable] = true;
Attributes[GameAttributes.Is_Helper] = true;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
if (CompanionSNO == ActorSno._dh_companion_ferret)
SetBrain(new LooterBrain(this, false));
else
@ -45,23 +43,23 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
SetBrain(new MinionBrain(this));
(Brain as MinionBrain).AddPresetPower(169081); //melee_instant
if (context.User.Attributes[GameAttribute.Rune_A, 0x000592ff] > 0) //Spider
if (context.User.Attributes[GameAttributes.Rune_A, 0x000592ff] > 0) //Spider
(Brain as MinionBrain).AddPresetPower(133887); //cleave
if (context.User.Attributes[GameAttribute.Rune_B, 0x000592ff] > 0) //Boar
if (context.User.Attributes[GameAttributes.Rune_B, 0x000592ff] > 0) //Boar
(Brain as MinionBrain).AddPresetPower(133887); //cleave
if (context.User.Attributes[GameAttribute.Rune_C, 0x000592ff] > 0) //Wolf
if (context.User.Attributes[GameAttributes.Rune_C, 0x000592ff] > 0) //Wolf
(Brain as MinionBrain).AddPresetPower(133887); //cleave
//(Brain as MinionBrain).AddPresetPower(133887); //ChargeAttack
}
Attributes[GameAttribute.Attacks_Per_Second] = context.User.Attributes[GameAttribute.Attacks_Per_Second_Total];
Attributes[GameAttributes.Attacks_Per_Second] = context.User.Attributes[GameAttributes.Attacks_Per_Second_Total];
Attributes[GameAttribute.Damage_Weapon_Min, 0] = context.ScriptFormula(0) * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.ScriptFormula(0) * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = context.ScriptFormula(0) * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.ScriptFormula(0) * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
}
}

View File

@ -1,9 +1,7 @@
using System.Linq;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
@ -21,7 +19,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 5;
DamageCoefficient = context.ScriptFormula(16) * 2f;
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
(Brain as MinionBrain).AddPresetPower(30592); //melee_instant
//(Brain as MinionBrain).AddPresetPower(30005); //AINearby
if (context.Rune_C > 0)
@ -29,12 +27,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
//Attributes[GameAttribute.Hitpoints_Max] = 20f;
//Attributes[GameAttribute.Hitpoints_Cur] = 20f;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = context.ScriptFormula(16) * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.ScriptFormula(16) * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = context.ScriptFormula(16) * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.ScriptFormula(16) * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
LifeTime = TickTimer.WaitSeconds(world.Game, 5f);

View File

@ -1,5 +1,4 @@
using System.Linq;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
@ -24,7 +23,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 5;
DamageCoefficient = context.ScriptFormula(16) * 2f;
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
(Brain as MinionBrain).AddPresetPower(30592); //melee_instant
//(Brain as MinionBrain).AddPresetPower(30005); //AINearby
if (context.Rune_C > 0)
@ -35,10 +34,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
//Attributes[GameAttribute.Hitpoints_Cur] = 20f;
//Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = context.ScriptFormula(16) * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.ScriptFormula(16) * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = context.ScriptFormula(16) * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.ScriptFormula(16) * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
if (Master != null)

View File

@ -1,11 +1,8 @@
using System.Linq;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using System.Collections.Generic;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
@ -21,17 +18,17 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 5;
DamageCoefficient = context.ScriptFormula(14) * 2f;
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
(Brain as MinionBrain).AddPresetPower(119166); //fetisharmy_hunter.pow
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
//Attributes[GameAttribute.Hitpoints_Max] = 20f;
//Attributes[GameAttribute.Hitpoints_Cur] = 20f;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = context.ScriptFormula(14) * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.ScriptFormula(14) * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = context.ScriptFormula(14) * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.ScriptFormula(14) * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
LifeTime = TickTimer.WaitSeconds(world.Game, 20f);

View File

@ -18,16 +18,16 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 5;
DamageCoefficient = context.ScriptFormula(22) * 2f;
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
//Attributes[GameAttribute.Hitpoints_Max] = 20f;
//Attributes[GameAttribute.Hitpoints_Cur] = 20f;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = context.ScriptFormula(22) * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.ScriptFormula(22) * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = context.ScriptFormula(22) * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.ScriptFormula(22) * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
LifeTime = TickTimer.WaitSeconds(world.Game, 20f);

View File

@ -1,11 +1,8 @@
using System.Linq;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using System.Collections.Generic;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
@ -21,17 +18,17 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 5;
DamageCoefficient = context.ScriptFormula(11) * 2f;
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
(Brain as MinionBrain).AddPresetPower(118442); //fetisharmy_shaman.pow
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
//Attributes[GameAttribute.Hitpoints_Max] = 20f;
//Attributes[GameAttribute.Hitpoints_Cur] = 20f;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = context.ScriptFormula(11) * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.ScriptFormula(11) * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = context.ScriptFormula(11) * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.ScriptFormula(11) * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
LifeTime = TickTimer.WaitSeconds(world.Game, 20f);

View File

@ -1,8 +1,6 @@
using System.Linq;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using System.Collections.Generic;
@ -20,7 +18,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 5;
DamageCoefficient = context.ScriptFormula(24) * 2f;
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
//(Brain as MinionBrain).AddPresetPower(30005);
//(Brain as MinionBrain).AddPresetPower(30001);
(Brain as MinionBrain).AddPresetPower(30592);
@ -29,20 +27,20 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
(Brain as MinionBrain).AddPresetPower(121942); // Witchdoctor_Gargantuan_Cleave
if ((context.User as Player).SkillSet.HasPassive(208563)) //ZombieHandler (wd)
{
Attributes[GameAttribute.Hitpoints_Max] *= 1.2f;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttributes.Hitpoints_Max] *= 1.2f;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max];
}
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = context.ScriptFormula(24) * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.ScriptFormula(24) * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = context.ScriptFormula(24) * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.ScriptFormula(24) * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
if ((context.User as Player).SkillSet.HasPassive(340909)) //MidnightFeast (wd)
{
Attributes[GameAttribute.Damage_Weapon_Min, 0] *= 1.5f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] *= 1.5f;
}
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
if (Master != null)

View File

@ -1,16 +1,8 @@
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
{
@ -30,12 +22,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 3;
SetBrain(new MinionBrain(this));
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
Attributes[GameAttribute.Hitpoints_Max] = 3000f * (master as Player).Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Hitpoints_Cur] = 3000f * (master as Player).Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Hitpoints_Max] = 3000f * (master as Player).Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Hitpoints_Cur] = 3000f * (master as Player).Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f * (master as Player).Attributes[GameAttribute.Damage_Weapon_Min, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 3 * master.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0] * (master as Player).Toon.Level;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f * (master as Player).Attributes[GameAttributes.Damage_Weapon_Min, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 3 * master.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0] * (master as Player).Toon.Level;
}
@ -50,12 +42,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 3;
SetBrain(new MinionBrain(this));
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
Attributes[GameAttribute.Hitpoints_Max] = 3000f * (master as Player).Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Hitpoints_Cur] = 3000f * (master as Player).Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Hitpoints_Max] = 3000f * (master as Player).Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Hitpoints_Cur] = 3000f * (master as Player).Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f * (master as Player).Toon.Level;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 3 * master.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0] * (master as Player).Toon.Level;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f * (master as Player).Toon.Level;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 3 * master.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0] * (master as Player).Toon.Level;
//SNOSummons
}
@ -70,12 +62,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 3;
SetBrain(new MinionBrain(this));
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
Attributes[GameAttribute.Hitpoints_Max] = 3000f * (master as Player).Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Hitpoints_Cur] = 3000f * (master as Player).Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Hitpoints_Max] = 3000f * (master as Player).Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Hitpoints_Cur] = 3000f * (master as Player).Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f * (master as Player).Toon.Level;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 3 * master.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0] * (master as Player).Toon.Level;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f * (master as Player).Toon.Level;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 3 * master.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0] * (master as Player).Toon.Level;
}
@ -90,12 +82,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 3;
SetBrain(new MinionBrain(this));
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
Attributes[GameAttribute.Hitpoints_Max] = 3000f * (master as Player).Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Hitpoints_Cur] = 3000f * (master as Player).Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Hitpoints_Max] = 3000f * (master as Player).Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Hitpoints_Cur] = 3000f * (master as Player).Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f * (master as Player).Toon.Level;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 3 * master.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0] * (master as Player).Toon.Level;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f * (master as Player).Toon.Level;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 3 * master.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0] * (master as Player).Toon.Level;
}
}
@ -109,12 +101,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 3;
SetBrain(new MinionBrain(this));
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
Attributes[GameAttribute.Hitpoints_Max] = 3000f * (master as Player).Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Hitpoints_Cur] = 3000f * (master as Player).Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Hitpoints_Max] = 3000f * (master as Player).Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Hitpoints_Cur] = 3000f * (master as Player).Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f * (master as Player).Toon.Level;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 3 * master.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0] * (master as Player).Toon.Level;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f * (master as Player).Toon.Level;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 3 * master.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0] * (master as Player).Toon.Level;
}
@ -129,12 +121,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 3;
SetBrain(new MinionBrain(this));
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
Attributes[GameAttribute.Hitpoints_Max] = 3000f * (master as Player).Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Hitpoints_Cur] = 3000f * (master as Player).Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Hitpoints_Max] = 3000f * (master as Player).Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Hitpoints_Cur] = 3000f * (master as Player).Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f * (master as Player).Toon.Level;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 3 * master.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0] * (master as Player).Toon.Level;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f * (master as Player).Toon.Level;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 3 * master.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0] * (master as Player).Toon.Level;
}

View File

@ -1,11 +1,8 @@
using System.Linq;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using System.Collections.Generic;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
@ -20,7 +17,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 5;
SetBrain(new MinionBrain(this));
DamageCoefficient = 1f * 2f;
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
(Brain as MinionBrain).AddPresetPower(196974); //chicken_walk.pow
(Brain as MinionBrain).AddPresetPower(188442); //explode.pow
(Brain as MinionBrain).AddPresetPower(107301); //Fetish.pow
@ -28,12 +25,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
//Attributes[GameAttribute.Hitpoints_Max] = 5f;
//Attributes[GameAttribute.Hitpoints_Cur] = 5f;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 7f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 7f;
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
LifeTime = TickTimer.WaitSeconds(world.Game, 12f);
}

View File

@ -1,11 +1,7 @@
using System.Linq;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using System.Collections.Generic;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
@ -21,12 +17,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 5;
CollFlags = 0;
DamageCoefficient = 0;
Attributes[GameAttribute.Invulnerable] = true;
Attributes[GameAttribute.Is_Helper] = true;
Attributes[GameAttributes.Invulnerable] = true;
Attributes[GameAttributes.Is_Helper] = true;
SetBrain(new LooterBrain(this, true));
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
}

View File

@ -20,16 +20,16 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 5;
DamageCoefficient = context.ScriptFormula(11);
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
//Attributes[GameAttribute.Hitpoints_Max] = 20f;
//Attributes[GameAttribute.Hitpoints_Cur] = 20f;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = context.ScriptFormula(11) * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.ScriptFormula(11) * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = context.ScriptFormula(11) * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.ScriptFormula(11) * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
LifeTime = TickTimer.WaitSeconds(world.Game, lifetime);

View File

@ -1,11 +1,7 @@
using System.Linq;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using System.Collections.Generic;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
@ -22,7 +18,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 5;
DamageCoefficient = 5f;
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Summoned_By_SNO] = 0x00058676;
Attributes[GameAttributes.Summoned_By_SNO] = 0x00058676;
(Brain as MinionBrain).AddPresetPower(169081); //melee_instant
@ -35,14 +31,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
(Brain as MinionBrain).AddPresetPower(169715); //Earth Ally -> Boulder*/
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
Attributes[GameAttribute.Hitpoints_Max] = 5f * context.User.Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Attacks_Per_Second] = context.User.Attributes[GameAttribute.Attacks_Per_Second_Total];
Attributes[GameAttributes.Hitpoints_Max] = 5f * context.User.Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Attacks_Per_Second] = context.User.Attributes[GameAttributes.Attacks_Per_Second_Total];
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 2f * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 2f * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 2f * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 2f * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
}
}

View File

@ -1,15 +1,8 @@
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
{
@ -31,24 +24,24 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
DamageCoefficient = context.ScriptFormula(14) * 2f;
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Hitpoints_Max_Percent_Bonus_Item] = 1;
Attributes[GameAttribute.Hitpoints_Max_Bonus] = 1;
Attributes[GameAttribute.Hitpoints_Factor_Vitality] = 1f;
Attributes[GameAttribute.Hitpoints_Regen_Per_Second] = 0;
Attributes[GameAttributes.Hitpoints_Max_Percent_Bonus_Item] = 1;
Attributes[GameAttributes.Hitpoints_Max_Bonus] = 1;
Attributes[GameAttributes.Hitpoints_Factor_Vitality] = 1f;
Attributes[GameAttributes.Hitpoints_Regen_Per_Second] = 0;
Attributes[GameAttribute.Core_Attributes_From_Item_Bonus_Multiplier] = 1;
Attributes[GameAttribute.Hitpoints_Max] = 20f * ((Player) Master).Toon.Level;
Attributes[GameAttribute.Hitpoints_Max_Percent_Bonus_Multiplicative] = 1;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttributes.Core_Attributes_From_Item_Bonus_Multiplier] = 1;
Attributes[GameAttributes.Hitpoints_Max] = 20f * ((Player) Master).Toon.Level;
Attributes[GameAttributes.Hitpoints_Max_Percent_Bonus_Multiplicative] = 1;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Summoned_By_SNO] = 453801;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Summoned_By_SNO] = 453801;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 0.5f * context!.User!.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 0.5f * context!.User!.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 0.5f * context!.User!.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 0.5f * context!.User!.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
LifeTime = null;// TickTimer.WaitSeconds(world.Game, 6f);

View File

@ -1,5 +1,4 @@
using System.Linq;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
@ -37,12 +36,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
//Attributes[GameAttribute.Hitpoints_Max] = 20f;
//Attributes[GameAttribute.Hitpoints_Cur] = 20f;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = context.ScriptFormula(2) * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.ScriptFormula(2) * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = context.ScriptFormula(2) * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.ScriptFormula(2) * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
if (Master != null)

View File

@ -4,11 +4,6 @@ using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
{
@ -26,21 +21,21 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
Rune_Flesh = true;
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
//(Brain as MinionBrain).AddPresetPower(119166);
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
DamageCoefficient = context.ScriptFormula(14) * 2f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = (context.ScriptFormula(14) * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0]);
Attributes[GameAttributes.Damage_Weapon_Min, 0] = (context.ScriptFormula(14) * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0]);
//(UsedEssense * 3f)
if (context.Rune_B > 0)
{
UsedEssense = (context as PowerSystem.Implementations.SummonSkeletalMage).Count;
Attributes[GameAttribute.Damage_Weapon_Min, 0] += (Attributes[GameAttribute.Damage_Weapon_Min, 0] / 100 * 3) * UsedEssense;
Attributes[GameAttributes.Damage_Weapon_Min, 0] += (Attributes[GameAttributes.Damage_Weapon_Min, 0] / 100 * 3) * UsedEssense;
}
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = context.ScriptFormula(14) * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = context.ScriptFormula(14) * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
if (context.Rune_C > 0)
LifeTime = TickTimer.WaitSeconds(world.Game, 8f);

View File

@ -1,11 +1,8 @@
using System.Linq;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using System.Collections.Generic;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
@ -22,16 +19,16 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 2;
DamageCoefficient = 2f * 2f;
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
Attributes[GameAttributes.Summoned_By_SNO] = context.PowerSNO;
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
//Attributes[GameAttribute.Hitpoints_Max] = 20f;
//Attributes[GameAttribute.Hitpoints_Cur] = 20f;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 2f * context.User.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 2f * context.User.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 2f * context.User.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 2f * context.User.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
LifeTime = TickTimer.WaitSeconds(world.Game, 5f);

View File

@ -1,11 +1,7 @@
using System.Linq;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.PowerSystem;
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using System.Collections.Generic;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
@ -22,10 +18,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
WalkSpeed *= 5;
DamageCoefficient = mul * 2f;
SetBrain(new MinionBrain(this));
Attributes[GameAttribute.Summoned_By_SNO] = 102573;
Attributes[GameAttributes.Summoned_By_SNO] = 102573;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = master.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0];
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = master.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Min, 0] = master.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0];
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = master.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0];
//TODO: These values should most likely scale, but we don't know how yet, so just temporary values.
@ -33,22 +29,22 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
//Attributes[GameAttribute.Hitpoints_Cur] = 20f;
if ((master as Player).SkillSet.HasPassive(208563)) //ZombieHandler (wd)
{
Attributes[GameAttribute.Hitpoints_Max] *= 1.2f;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttributes.Hitpoints_Max] *= 1.2f;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max];
}
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = master.Attributes[GameAttribute.Damage_Weapon_Min_Total, 0] * mul;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = master.Attributes[GameAttribute.Damage_Weapon_Delta_Total, 0] * mul;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = master.Attributes[GameAttributes.Damage_Weapon_Min_Total, 0] * mul;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = master.Attributes[GameAttributes.Damage_Weapon_Delta_Total, 0] * mul;
if ((master as Player).SkillSet.HasPassive(340909)) //MidnightFeast (wd)
{
Attributes[GameAttribute.Damage_Weapon_Min, 0] *= 1.5f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] *= 1.5f;
}
Attributes[GameAttribute.Pet_Type] = 0x8;
Attributes[GameAttributes.Pet_Type] = 0x8;
//Pet_Owner and Pet_Creator seems to be 0
master.Attributes[GameAttribute.Free_Cast, SkillsSystem.Skills.WitchDoctor.Support.Sacrifice] = 1;
master.Attributes[GameAttributes.Free_Cast, SkillsSystem.Skills.WitchDoctor.Support.Sacrifice] = 1;
master.Attributes.BroadcastChangedIfRevealed();
}
}

View File

@ -1,11 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.MessageSystem;
@ -18,13 +12,13 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public Unique_CaptainDaltyn(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttribute.Immune_To_Charm] = true;
Attributes[GameAttribute.using_Bossbar] = true;
Attributes[GameAttribute.InBossEncounter] = true;
Attributes[GameAttributes.MinimapActive] = true;
Attributes[GameAttributes.Immune_To_Charm] = true;
Attributes[GameAttributes.using_Bossbar] = true;
Attributes[GameAttributes.InBossEncounter] = true;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttribute.TeamID] = 10;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttributes.TeamID] = 10;
WalkSpeed = 0.2f;

View File

@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
@ -54,9 +49,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public DarkCultists(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.3f;
}
}
@ -66,9 +61,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public DarkCultistsTownAttackMelee(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.3f;
}
}
@ -84,9 +79,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
: base(world, sno, tags)
{
(Brain as MonsterBrain).AddPresetPower(30570);
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 10f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 10f;
WalkSpeed = 0.15f;
}
}
@ -98,9 +93,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
{
(Brain as MonsterBrain).AddPresetPower(30547);
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.15f;
}
}
@ -112,9 +107,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
{
(Brain as MonsterBrain).AddPresetPower(30570);
(Brain as MonsterBrain).AddPresetPower(30547);
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.15f;
}
}
@ -126,9 +121,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public Shark(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.3f;
}
}
@ -146,9 +141,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public Lacuni(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.3f;
}
}
@ -165,9 +160,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public Fallens(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.3f;
}
}
@ -186,8 +181,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
CollFlags = 0;
WalkSpeed = 0;
Attributes[GameAttribute.Movement_Scalar] = 0f;
Attributes[GameAttribute.Run_Speed_Granted] = 0f;
Attributes[GameAttributes.Movement_Scalar] = 0f;
Attributes[GameAttributes.Run_Speed_Granted] = 0f;
Spawner = true;
}
@ -511,9 +506,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public TriuneCultist(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.3f;
}
}
@ -532,9 +527,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public TombGuardian(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
(Brain as MonsterBrain).AddPresetPower(30503);
(Brain as MonsterBrain).AddPresetPower(30543); //Summon Skeletons
}
@ -661,8 +656,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
CollFlags = 0;
WalkSpeed = 0;
Attributes[GameAttribute.Movement_Scalar] = 0f;
Attributes[GameAttribute.Run_Speed_Granted] = 0f;
Attributes[GameAttributes.Movement_Scalar] = 0f;
Attributes[GameAttributes.Run_Speed_Granted] = 0f;
Spawner = true;
}
@ -679,8 +674,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
(Brain as MonsterBrain).PresetPowers.Clear();
(Brain as MonsterBrain).AddPresetPower(117580);
Attributes[GameAttribute.Movement_Scalar] = 0f;
Attributes[GameAttribute.Run_Speed_Granted] = 0f;
Attributes[GameAttributes.Movement_Scalar] = 0f;
Attributes[GameAttributes.Run_Speed_Granted] = 0f;
WalkSpeed = 0f;
Spawner = true;
}
@ -771,9 +766,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public GoatmanMelee(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.2f;
}
}
@ -808,9 +803,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public TriuneWizard(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.35f;
(Brain as MonsterBrain).AddPresetPower(99077);
}
@ -829,9 +824,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public TriuneBerserker(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.35f;
(Brain as MonsterBrain).AddPresetPower(99077);
}
@ -1099,9 +1094,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public Wrath(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.3f;
}
}
@ -1113,9 +1108,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
public Spider_Elemental_Cold_tesla_A(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
WalkSpeed = 0.3f;
}
}

View File

@ -3,11 +3,6 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.MessageSystem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
{
@ -22,14 +17,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
CollFlags = 0;
WalkSpeed = 0;
Attributes[GameAttribute.Movement_Scalar] = 0f;
Attributes[GameAttribute.Run_Speed_Granted] = 0f;
Attributes[GameAttributes.Movement_Scalar] = 0f;
Attributes[GameAttributes.Run_Speed_Granted] = 0f;
Spawner = true;
Attributes[GameAttribute.Invulnerable] = true;
Attributes[GameAttributes.Invulnerable] = true;
CollFlags = 0;
WalkSpeed = 0;
Attributes[GameAttribute.Invulnerable] = true;
Attributes[GameAttributes.Invulnerable] = true;
(Brain as MonsterBrain).RemovePresetPower(30592);
//(Brain as MonsterBrain).AddPresetPower(96925);
(Brain as MonsterBrain).AddPresetPower(223284);

View File

@ -23,11 +23,11 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
var monsterLevels = (GameBalance)MPQStorage.Data.Assets[SNOGroup.GameBalance][19760].Data;
var monsterData = (Monster.Target as MonsterFF);
Attributes[GameAttribute.Hitpoints_Max] = 99999;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 5f;
Attributes[GameAttributes.Hitpoints_Max] = 99999;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 5f;
WalkSpeed = 0f; // TODO: this is probably multiplied by something erekose the 0.3 is because he is way too fast otherwise
}
@ -46,7 +46,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
if (!base.Reveal(player))
return false;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttributes.TeamID] = 2;
return true;
}

View File

@ -3,11 +3,6 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
@ -22,7 +17,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
Conversations.Add(new Interactions.ConversationInteraction(471076));
Field7 = 1;
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttributes.MinimapActive] = true;
}
public override void OnTargeted(Player player, TargetMessage message)

View File

@ -1,9 +1,5 @@
using System;
using System.Linq;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
@ -15,7 +11,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public Cain(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Invulnerable] = true;
Attributes[GameAttributes.Invulnerable] = true;
}
protected override void ReadTags()

View File

@ -37,12 +37,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
var monsterLevels = (GameBalance)MPQStorage.Data.Assets[SNOGroup.GameBalance][19760].Data;
var monsterData = (Monster.Target as MonsterFF);
Attributes[GameAttribute.Level] = 1;
Attributes[GameAttribute.Hitpoints_Max] = 100000;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 5f;
Attributes[GameAttributes.Level] = 1;
Attributes[GameAttributes.Hitpoints_Max] = 100000;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 5f;
WalkSpeed = 0.3f * monsterData.AttributeModifiers[129]; // TODO: this is probably multiplied by something erekose the 0.3 is because he is way too fast otherwise
}

View File

@ -11,7 +11,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
: base(world, sno, tags)
{
Field7 = 1;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttributes.TeamID] = 2;
}
}

View File

@ -19,7 +19,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
: base(world, sno, tags)
{
Field7 = 1;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttributes.TeamID] = 2;
Attributes.BroadcastChangedIfRevealed();
}

View File

@ -22,12 +22,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
var monsterLevels = (GameBalance)MPQStorage.Data.Assets[SNOGroup.GameBalance][19760].Data;
var monsterData = (Monster.Target as MonsterFF);
Attributes[GameAttribute.Level] = 1;
Attributes[GameAttribute.Hitpoints_Max] = 100000;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 5f;
Attributes[GameAttributes.Level] = 1;
Attributes[GameAttributes.Hitpoints_Max] = 100000;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 5f;
WalkSpeed = 0.3f * monsterData.AttributeModifiers[129]; // TODO: this is probably multiplied by something erekose the 0.3 is because he is way too fast otherwise
}

View File

@ -11,7 +11,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
: base(world, sno, tags)
{
Field7 = 1;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttributes.TeamID] = 2;
}
}

View File

@ -20,8 +20,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
: base(world, sno, tags)
{
Field7 = 1;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttribute.NPC_Has_Interact_Options, 0] = false;
Attributes[GameAttributes.TeamID] = 2;
Attributes[GameAttributes.NPC_Has_Interact_Options, 0] = false;
}
public override bool Reveal(PlayerSystem.Player player)

View File

@ -1,11 +1,6 @@
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.MessageSystem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
@ -16,7 +11,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
: base(world, sno, tags)
{
Field7 = 1;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttributes.TeamID] = 2;
}
}

View File

@ -24,20 +24,20 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
var monsterLevels = (GameBalance)MPQStorage.Data.Assets[SNOGroup.GameBalance][19760].Data;
var monsterData = (Monster.Target as MonsterFF);
Attributes[GameAttribute.Level] = 1;
Attributes[GameAttribute.Hitpoints_Max] = 100000;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttribute.Invulnerable] = true;
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Level] = 1;
Attributes[GameAttributes.Hitpoints_Max] = 100000;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttributes.Invulnerable] = true;
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
if (world.SNO == WorldSno.x1_westmarch_overlook_d)
{
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 0f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 0f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 0f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 0f;
}
else
{
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 5f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 5f;
}
WalkSpeed = 0.3f * monsterData.AttributeModifiers[129]; // TODO: this is probably multiplied by something erekose the 0.3 is because he is way too fast otherwise
}

View File

@ -1,9 +1,5 @@
using System;
using System.Linq;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
@ -15,7 +11,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public MysticNoVendor(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Invulnerable] = true;
Attributes[GameAttributes.Invulnerable] = true;
}
protected override void ReadTags()
@ -30,7 +26,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public TemplarNPC(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Invulnerable] = true;
Attributes[GameAttributes.Invulnerable] = true;
}
protected override void ReadTags()

View File

@ -12,7 +12,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
: base(world, sno, tags)
{
Field7 = 1;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttributes.TeamID] = 2;
}
}
}

View File

@ -12,7 +12,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
: base(world, sno, tags)
{
Field7 = 1;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttributes.TeamID] = 2;
}
}
}

View File

@ -12,7 +12,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
: base(world, sno, tags)
{
Field7 = 1;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttributes.TeamID] = 2;
}
}
}

View File

@ -12,7 +12,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
: base(world, sno, tags)
{
Field7 = 1;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttributes.TeamID] = 2;
}
}
}

View File

@ -12,7 +12,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
: base(world, sno, tags)
{
Field7 = 1;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttributes.TeamID] = 2;
}
}
}

View File

@ -23,12 +23,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
var monsterLevels = (GameBalance)MPQStorage.Data.Assets[SNOGroup.GameBalance][19760].Data;
var monsterData = (Monster.Target as MonsterFF);
Attributes[GameAttribute.Level] = 1;
Attributes[GameAttribute.Hitpoints_Max] = 100000;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttribute.Attacks_Per_Second] = 1.2f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 5f;
Attributes[GameAttributes.Level] = 1;
Attributes[GameAttributes.Hitpoints_Max] = 100000;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttributes.Attacks_Per_Second] = 1.2f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 5f;
WalkSpeed = 0.3f * monsterData.AttributeModifiers[129];
}

View File

@ -23,12 +23,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
var monsterLevels = (GameBalance)MPQStorage.Data.Assets[SNOGroup.GameBalance][19760].Data;
var monsterData = (Monster.Target as MonsterFF);
Attributes[GameAttribute.Level] = 1;
Attributes[GameAttribute.Hitpoints_Max] = 100000;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 5f;
Attributes[GameAttributes.Level] = 1;
Attributes[GameAttributes.Hitpoints_Max] = 100000;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttributes.Attacks_Per_Second] = 1.0f;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = 5f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = 5f;
WalkSpeed = 0.3f * monsterData.AttributeModifiers[129]; // TODO: this is probably multiplied by something erekose the 0.3 is because he is way too fast otherwise
}

View File

@ -1,5 +1,4 @@
using DiIiS_NA.Core.Logging;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.MessageSystem;
@ -15,7 +14,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
Field2 = 16;//16;
Field7 = 0x00000001;
CollFlags = 1; // this.CollFlags = 0; a hack for passing through blockers /fasbat
Attributes[GameAttribute.Hitpoints_Cur] = 1;
Attributes[GameAttributes.Hitpoints_Cur] = 1;
}
}

View File

@ -14,11 +14,11 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public NephalemStone(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttribute.MinimapActive] = true;
Attributes[GameAttribute.Untargetable] = false;
Attributes[GameAttributes.TeamID] = 2;
Attributes[GameAttributes.MinimapActive] = true;
Attributes[GameAttributes.Untargetable] = false;
Attributes.BroadcastChangedIfRevealed();
Attributes[GameAttribute.MinimapIconOverride] = 221224;//327066;
Attributes[GameAttributes.MinimapIconOverride] = 221224;//327066;
}
public override void OnTargeted(Player player, TargetMessage message)
@ -31,7 +31,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
if (!base.Reveal(player))
return false;
var animationTag = Attributes[GameAttribute.Untargetable] ? AnimationSetKeys.Open : AnimationSetKeys.IdleDefault;
var animationTag = Attributes[GameAttributes.Untargetable] ? AnimationSetKeys.Open : AnimationSetKeys.IdleDefault;
var animation = (AnimationSno)AnimationSet.TagMapAnimDefault[animationTag];
PlayAnimation(5, animation);
SetIdleAnimation(animation);

View File

@ -5,10 +5,6 @@ using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.ACD;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Animation;
using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
@ -76,7 +72,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
CollFlags = 0
}, this);
Attributes[GameAttribute.Deleted_On_Server] = true;
Attributes[GameAttributes.Deleted_On_Server] = true;
Attributes.BroadcastChangedIfRevealed();
RelativeTickTimer destroy = new RelativeTickTimer(World.Game, duration, x => Destroy());

View File

@ -1,6 +1,5 @@
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.GeneratorsSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
@ -13,14 +12,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public Rare(MapSystem.World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Hitpoints_Max] *= 5f;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max_Total];
Attributes[GameAttribute.Immune_To_Charm] = true;
Attributes[GameAttribute.Damage_Weapon_Min, 0] *= 3.5f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] *= 3.5f;
Attributes[GameAttribute.Movement_Scalar] = Attributes[GameAttribute.Movement_Scalar] * 0.5f;
Attributes[GameAttribute.Run_Speed_Granted] = Attributes[GameAttribute.Run_Speed_Granted] * 0.5f;
Attributes[GameAttribute.Movement_Scalar_Reduction_Percent] -= 20f;
Attributes[GameAttributes.Hitpoints_Max] *= 5f;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max_Total];
Attributes[GameAttributes.Immune_To_Charm] = true;
Attributes[GameAttributes.Damage_Weapon_Min, 0] *= 3.5f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] *= 3.5f;
Attributes[GameAttributes.Movement_Scalar] = Attributes[GameAttributes.Movement_Scalar] * 0.5f;
Attributes[GameAttributes.Run_Speed_Granted] = Attributes[GameAttributes.Run_Speed_Granted] * 0.5f;
Attributes[GameAttributes.Movement_Scalar_Reduction_Percent] -= 20f;
NamePrefix = MonsterAffixGenerator.GeneratePrefixName();
NameSuffix = MonsterAffixGenerator.GenerateSuffixName();

View File

@ -1,12 +1,9 @@
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.GeneratorsSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Misc;
using System;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
@ -15,10 +12,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public RareMinion(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.Hitpoints_Max] *= 3.0f;
Attributes[GameAttribute.Hitpoints_Cur] = Attributes[GameAttribute.Hitpoints_Max];
Attributes[GameAttribute.Damage_Weapon_Min, 0] *= 1.5f;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] *= 1.5f;
Attributes[GameAttributes.Hitpoints_Max] *= 3.0f;
Attributes[GameAttributes.Hitpoints_Cur] = Attributes[GameAttributes.Hitpoints_Max];
Attributes[GameAttributes.Damage_Weapon_Min, 0] *= 1.5f;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] *= 1.5f;
//MonsterAffixGenerator.Generate(this, this.World.Game.Difficulty + 1);
}

View File

@ -1,16 +1,13 @@
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
using DiIiS_NA.GameServer.GSSystem.GeneratorsSystem;
using DiIiS_NA.GameServer.GSSystem.ItemsSystem;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Animation;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Misc;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
using System;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
{
@ -21,7 +18,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
public Readable(World world, ActorSno sno, TagMap tags)
: base(world, sno, tags)
{
Attributes[GameAttribute.TeamID] = 1;
Attributes[GameAttributes.TeamID] = 1;
}
@ -65,14 +62,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
}, this);
used = true;
Attributes[GameAttribute.Gizmo_Has_Been_Operated] = true;
Attributes[GameAttribute.TeamID] = 2;
Attributes[GameAttribute.Untargetable] = true;
Attributes[GameAttribute.Operatable] = false;
Attributes[GameAttribute.Operatable_Story_Gizmo] = false;
Attributes[GameAttribute.Disabled] = true;
Attributes[GameAttributes.Gizmo_Has_Been_Operated] = true;
Attributes[GameAttributes.TeamID] = 2;
Attributes[GameAttributes.Untargetable] = true;
Attributes[GameAttributes.Operatable] = false;
Attributes[GameAttributes.Operatable_Story_Gizmo] = false;
Attributes[GameAttributes.Disabled] = true;
//this.Attributes[GameAttribute.Gizmo_Operator_ACDID] = unchecked((int)player.DynamicID);
Attributes[GameAttribute.Chest_Open, 0xFFFFFF] = true;
Attributes[GameAttributes.Chest_Open, 0xFFFFFF] = true;
Attributes.BroadcastChangedIfRevealed();
base.OnTargeted(player, message);

View File

@ -2,10 +2,6 @@
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.MessageSystem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
@ -30,15 +26,15 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
DamageMin = World.Game.MonsterLevel * 120f;
float DamageDelta = DamageMin * 0.3f * World.Game.DmgModifier;
Attributes[GameAttribute.Damage_Weapon_Min, 0] = DamageMin * World.Game.DmgModifier;
Attributes[GameAttribute.Damage_Weapon_Delta, 0] = DamageDelta;
Attributes[GameAttributes.Damage_Weapon_Min, 0] = DamageMin * World.Game.DmgModifier;
Attributes[GameAttributes.Damage_Weapon_Delta, 0] = DamageDelta;
Attributes[GameAttribute.Team_Override] = 2;
Attributes[GameAttribute.Untargetable] = true;
Attributes[GameAttribute.NPC_Is_Operatable] = false;
Attributes[GameAttribute.Operatable] = false;
Attributes[GameAttribute.Operatable_Story_Gizmo] = false;
Attributes[GameAttribute.Immunity] = true;
Attributes[GameAttributes.Team_Override] = 2;
Attributes[GameAttributes.Untargetable] = true;
Attributes[GameAttributes.NPC_Is_Operatable] = false;
Attributes[GameAttributes.Operatable] = false;
Attributes[GameAttributes.Operatable_Story_Gizmo] = false;
Attributes[GameAttributes.Immunity] = true;
Attributes.BroadcastChangedIfRevealed();
}

View File

@ -42,9 +42,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.ScriptObjects
AnimationSNO = AnimationSetKeys.Open.ID
}, this);
Attributes[GameAttribute.Gizmo_Has_Been_Operated] = true;
Attributes[GameAttributes.Gizmo_Has_Been_Operated] = true;
//this.Attributes[GameAttribute.Gizmo_Operator_ACDID] = unchecked((int)player.DynamicID);
Attributes[GameAttribute.Gizmo_State] = 1;
Attributes[GameAttributes.Gizmo_State] = 1;
CollFlags = 0;
isOpened = true;
@ -53,11 +53,11 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.ScriptObjects
public override void OnTargeted(Player player, TargetMessage message)
{
if (Attributes[GameAttribute.Disabled]) return;
if (Attributes[GameAttributes.Disabled]) return;
Open();
base.OnTargeted(player, message);
Attributes[GameAttribute.Disabled] = true;
Attributes[GameAttributes.Disabled] = true;
}
}
}

View File

@ -3,10 +3,7 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Animation;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using DiIiS_NA.LoginServer.Toons;
using System.Drawing;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.ScriptObjects
{
@ -29,7 +26,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.ScriptObjects
{
CollFlags = 1;
WalkSpeed = 0;
Attributes[GameAttribute.Invulnerable] = true;
Attributes[GameAttributes.Invulnerable] = true;
//this.Attributes[GameAttribute.MinimapIconOverride] = 120356;
}

View File

@ -6,11 +6,6 @@ using DiIiS_NA.GameServer.MessageSystem;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Animation;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.ScriptObjects
{
@ -21,13 +16,13 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.ScriptObjects
: base(world, sno, tags)
{
bool Activated = false;
Attributes[GameAttribute.Team_Override] = (Activated ? -1 : 2);
Attributes[GameAttribute.Untargetable] = !Activated;
Attributes[GameAttribute.NPC_Is_Operatable] = Activated;
Attributes[GameAttribute.Operatable] = Activated;
Attributes[GameAttribute.Operatable_Story_Gizmo] = Activated;
Attributes[GameAttribute.Disabled] = !Activated;
Attributes[GameAttribute.Immunity] = !Activated;
Attributes[GameAttributes.Team_Override] = (Activated ? -1 : 2);
Attributes[GameAttributes.Untargetable] = !Activated;
Attributes[GameAttributes.NPC_Is_Operatable] = Activated;
Attributes[GameAttributes.Operatable] = Activated;
Attributes[GameAttributes.Operatable_Story_Gizmo] = Activated;
Attributes[GameAttributes.Disabled] = !Activated;
Attributes[GameAttributes.Immunity] = !Activated;
}

View File

@ -2,11 +2,6 @@
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.GSSystem.MapSystem;
using DiIiS_NA.GameServer.MessageSystem;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.ScriptObjects
{
@ -19,7 +14,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.ScriptObjects
Field2 = 0x8;
CollFlags = 0;
WalkSpeed = 0;
Attributes[GameAttribute.Invulnerable] = true;
Attributes[GameAttributes.Invulnerable] = true;
//Logger.Debug("Jondar, tagSNO: {0}", tags[MarkerKeys.OnActorSpawnedScript].Id);
}

Some files were not shown because too many files have changed in this diff Show More