Merge pull request #113 from goremykin/fix_possible_mistakes
Fixed possible mistakes, use PickRandom extension
This commit is contained in:
commit
c5cf8fa292
@ -1,4 +1,6 @@
|
|||||||
//Blizzless Project 2022
|
//Blizzless Project 2022
|
||||||
|
|
||||||
|
using System;
|
||||||
using DiIiS_NA.Core.Logging;
|
using DiIiS_NA.Core.Logging;
|
||||||
using DiIiS_NA.Core.Storage;
|
using DiIiS_NA.Core.Storage;
|
||||||
using DiIiS_NA.Core.Storage.AccountDataBase.Entities;
|
using DiIiS_NA.Core.Storage.AccountDataBase.Entities;
|
||||||
@ -167,7 +169,7 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
|||||||
crafting.DBGameAccount = dbGAcc;
|
crafting.DBGameAccount = dbGAcc;
|
||||||
crafting.isHardcore = hardcore;
|
crafting.isHardcore = hardcore;
|
||||||
crafting.isSeasoned = seasoned;
|
crafting.isSeasoned = seasoned;
|
||||||
crafting.LearnedRecipes = new byte[0];
|
crafting.LearnedRecipes = Array.Empty<byte>();
|
||||||
crafting.Level = 1;
|
crafting.Level = 1;
|
||||||
DBSessions.SessionSave(crafting);
|
DBSessions.SessionSave(crafting);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -263,7 +263,7 @@ namespace DiIiS_NA.LoginServer.Toons
|
|||||||
CurrentQuestId = 87700,
|
CurrentQuestId = 87700,
|
||||||
CurrentQuestStepId = -1,
|
CurrentQuestStepId = -1,
|
||||||
CurrentDifficulty = 0,
|
CurrentDifficulty = 0,
|
||||||
Lore = new byte[0],
|
Lore = Array.Empty<byte>(),
|
||||||
Stats = "0;0;0;0;0;0",
|
Stats = "0;0;0;0;0;0",
|
||||||
DBGameAccount = dbGameAccount,
|
DBGameAccount = dbGameAccount,
|
||||||
Cosmetic1 = -1,
|
Cosmetic1 = -1,
|
||||||
@ -424,7 +424,7 @@ namespace DiIiS_NA.LoginServer.Toons
|
|||||||
DBGameAccount = gaccount,
|
DBGameAccount = gaccount,
|
||||||
TimePlayed = 0,
|
TimePlayed = 0,
|
||||||
Stats = "",
|
Stats = "",
|
||||||
Lore = new byte[0],
|
Lore = Array.Empty<byte>(),
|
||||||
Deleted = false,
|
Deleted = false,
|
||||||
Archieved = false,
|
Archieved = false,
|
||||||
Cosmetic1 = -1,
|
Cosmetic1 = -1,
|
||||||
|
|||||||
@ -9,6 +9,7 @@ using Discord;
|
|||||||
using Discord.Commands;
|
using Discord.Commands;
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
using DiIiS_NA.Core.Discord.Services;
|
using DiIiS_NA.Core.Discord.Services;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
using DiIiS_NA.LoginServer.AccountsSystem;
|
using DiIiS_NA.LoginServer.AccountsSystem;
|
||||||
using DiIiS_NA.Core.Logging;
|
using DiIiS_NA.Core.Logging;
|
||||||
using DiIiS_NA.Core.Storage;
|
using DiIiS_NA.Core.Storage;
|
||||||
@ -226,9 +227,8 @@ namespace DiIiS_NA.Core.Discord
|
|||||||
var reactedUsers = await (message as IUserMessage).GetReactionUsersAsync(Emote.Parse("<:wolfRNG:607868292979490816>"), 100).FlattenAsync();
|
var reactedUsers = await (message as IUserMessage).GetReactionUsersAsync(Emote.Parse("<:wolfRNG:607868292979490816>"), 100).FlattenAsync();
|
||||||
var contestants = reactedUsers.Where(u => !u.IsBot).ToArray();
|
var contestants = reactedUsers.Where(u => !u.IsBot).ToArray();
|
||||||
|
|
||||||
if (contestants.Length > 0)
|
if (contestants.TryPickRandom(out var winner))
|
||||||
{
|
{
|
||||||
var winner = contestants[Helpers.Math.FastRandom.Instance.Next(0, contestants.Length - 1)];
|
|
||||||
winnerName = guild.GetUser(winner.Id).Nickname;
|
winnerName = guild.GetUser(winner.Id).Nickname;
|
||||||
await winner.SendMessageAsync("Congratulations! You have won **7 days of D3 Reflection Premium**!.\nYour account has already had its Premium prolonged. Have a nice game!");
|
await winner.SendMessageAsync("Congratulations! You have won **7 days of D3 Reflection Premium**!.\nYour account has already had its Premium prolonged. Have a nice game!");
|
||||||
var acc = AccountManager.GetAccountByDiscordId(winner.Id);
|
var acc = AccountManager.GetAccountByDiscordId(winner.Id);
|
||||||
|
|||||||
@ -195,7 +195,7 @@ namespace DiIiS_NA.GameServer.AchievementSystem
|
|||||||
{
|
{
|
||||||
DBGameAccount = client.Account.GameAccount.DBGameAccount,
|
DBGameAccount = client.Account.GameAccount.DBGameAccount,
|
||||||
AchievementId = achievementId,
|
AchievementId = achievementId,
|
||||||
Criteria = new byte[0],
|
Criteria = Array.Empty<byte>(),
|
||||||
IsHardcore = IsHardcore(achievementId),
|
IsHardcore = IsHardcore(achievementId),
|
||||||
CompleteTime = (int)DateTime.Now.ToUnixTime()
|
CompleteTime = (int)DateTime.Now.ToUnixTime()
|
||||||
};
|
};
|
||||||
|
|||||||
@ -71,7 +71,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
|||||||
{
|
{
|
||||||
_target = monsters[0];
|
_target = monsters[0];
|
||||||
int powerToUse = PickPowerToUse();
|
int powerToUse = PickPowerToUse();
|
||||||
if (powerToUse > 0) // FIXME: probably >= 0 as 0 can be a valid power?
|
if (powerToUse > 0)
|
||||||
{
|
{
|
||||||
PowerSystem.PowerScript power = PowerSystem.PowerLoader.CreateImplementationForPowerSNO(powerToUse);
|
PowerSystem.PowerScript power = PowerSystem.PowerLoader.CreateImplementationForPowerSNO(powerToUse);
|
||||||
power.User = Body;
|
power.User = Body;
|
||||||
@ -107,16 +107,10 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
|||||||
|
|
||||||
protected virtual int PickPowerToUse()
|
protected virtual int PickPowerToUse()
|
||||||
{
|
{
|
||||||
if (PresetPowers.Count > 0)
|
var implementedPowers = PresetPowers.Where(PowerSystem.PowerLoader.HasImplementationForPowerSNO);
|
||||||
{
|
return implementedPowers.TryPickRandom(out var randomPower)
|
||||||
var randomPower = PresetPowers.PickRandom();
|
? randomPower
|
||||||
|
: -1;
|
||||||
// should we try several times or pick random from implemented only powers?
|
|
||||||
if (PowerSystem.PowerLoader.HasImplementationForPowerSNO(randomPower))
|
|
||||||
return randomPower;
|
|
||||||
}
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddPresetPower(int powerSNO)
|
public void AddPresetPower(int powerSNO)
|
||||||
|
|||||||
@ -103,7 +103,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
|||||||
if (targets.Count != 0 && PowerMath.Distance2D(Body.Position, Owner.Position) < 80f)
|
if (targets.Count != 0 && PowerMath.Distance2D(Body.Position, Owner.Position) < 80f)
|
||||||
{
|
{
|
||||||
int powerToUse = PickPowerToUse();
|
int powerToUse = PickPowerToUse();
|
||||||
if (powerToUse > 0) // maybe >= 0 as 0 can be a valid power???
|
if (powerToUse > 0)
|
||||||
{
|
{
|
||||||
var elite = targets.FirstOrDefault(t => t is Champion or Rare or RareMinion);
|
var elite = targets.FirstOrDefault(t => t is Champion or Rare or RareMinion);
|
||||||
_target = elite ?? targets.First();
|
_target = elite ?? targets.First();
|
||||||
@ -151,17 +151,10 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
|||||||
protected virtual int PickPowerToUse()
|
protected virtual int PickPowerToUse()
|
||||||
{
|
{
|
||||||
// randomly used an implemented power
|
// randomly used an implemented power
|
||||||
if (PresetPowers.Count > 0)
|
var implementedPowers = PresetPowers.Where(PowerLoader.HasImplementationForPowerSNO);
|
||||||
{
|
return implementedPowers.TryPickRandom(out var randomPower)
|
||||||
var randomPower = PresetPowers.PickRandom();
|
? randomPower
|
||||||
|
: -1;
|
||||||
// should we try several times or pick random from implemented only powers?
|
|
||||||
if (PowerLoader.HasImplementationForPowerSNO(randomPower))
|
|
||||||
return randomPower;
|
|
||||||
}
|
|
||||||
|
|
||||||
// no usable power
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddPresetPower(int powerSNO)
|
public void AddPresetPower(int powerSNO)
|
||||||
|
|||||||
@ -83,7 +83,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
|||||||
//System.Console.Out.WriteLine("Enemy in range, use powers");
|
//System.Console.Out.WriteLine("Enemy in range, use powers");
|
||||||
//This will only attack when you and your minions are not moving..TODO: FIX.
|
//This will only attack when you and your minions are not moving..TODO: FIX.
|
||||||
int powerToUse = PickPowerToUse();
|
int powerToUse = PickPowerToUse();
|
||||||
if (powerToUse > 0) // maybe >= 0 as 0 can be a valid power?
|
if (powerToUse > 0)
|
||||||
{
|
{
|
||||||
PowerScript power = PowerLoader.CreateImplementationForPowerSNO(powerToUse);
|
PowerScript power = PowerLoader.CreateImplementationForPowerSNO(powerToUse);
|
||||||
power.User = Body;
|
power.User = Body;
|
||||||
@ -116,17 +116,10 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
|||||||
protected virtual int PickPowerToUse()
|
protected virtual int PickPowerToUse()
|
||||||
{
|
{
|
||||||
// randomly used an implemented power
|
// randomly used an implemented power
|
||||||
if (PresetPowers.Count > 0)
|
var implementedPowers = PresetPowers.Where(PowerLoader.HasImplementationForPowerSNO);
|
||||||
{
|
return implementedPowers.TryPickRandom(out var randomPower)
|
||||||
var randomPower = PresetPowers.PickRandom();
|
? randomPower
|
||||||
|
: -1;
|
||||||
// should we try several times or pick from implemented only?
|
|
||||||
if (PowerLoader.HasImplementationForPowerSNO(randomPower))
|
|
||||||
return randomPower;
|
|
||||||
}
|
|
||||||
|
|
||||||
// no usable power
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddPresetPower(int powerSNO)
|
public void AddPresetPower(int powerSNO)
|
||||||
|
|||||||
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
|
|
||||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||||
{
|
{
|
||||||
@ -31,7 +32,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
|||||||
_collapsed = true;
|
_collapsed = true;
|
||||||
|
|
||||||
World.Game.SideQuestGizmo = this;
|
World.Game.SideQuestGizmo = this;
|
||||||
World.Game.QuestManager.LaunchSideQuest(eventIds[DiIiS_NA.Core.Helpers.Math.FastRandom.Instance.Next(0, eventIds.Count)], true);
|
World.Game.QuestManager.LaunchSideQuest(eventIds.PickRandom(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||||
using DiIiS_NA.GameServer.MessageSystem;
|
using DiIiS_NA.GameServer.MessageSystem;
|
||||||
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||||
@ -35,7 +36,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
|||||||
_collapsed = true;
|
_collapsed = true;
|
||||||
|
|
||||||
World.Game.SideQuestGizmo = this;
|
World.Game.SideQuestGizmo = this;
|
||||||
World.Game.QuestManager.LaunchSideQuest(eventIds[DiIiS_NA.Core.Helpers.Math.FastRandom.Instance.Next(0, eventIds.Count)], true);
|
World.Game.QuestManager.LaunchSideQuest(eventIds.PickRandom(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Pet;
|
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Pet;
|
||||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||||
using DiIiS_NA.GameServer.MessageSystem;
|
using DiIiS_NA.GameServer.MessageSystem;
|
||||||
@ -207,10 +208,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
|||||||
{
|
{
|
||||||
if (ConversationList != null)
|
if (ConversationList != null)
|
||||||
{
|
{
|
||||||
var suitable_entries = ConversationList.AmbientConversationListEntries.Where(entry => entry.SpecialEventFlag == World.Game.CurrentAct).ToList();
|
var suitableEntries = ConversationList.AmbientConversationListEntries.Where(entry => entry.SpecialEventFlag == World.Game.CurrentAct).ToList();
|
||||||
if (suitable_entries.Count > 0)
|
if (suitableEntries.Count > 0)
|
||||||
{
|
{
|
||||||
var random_conv = suitable_entries[FastRandom.Instance.Next(suitable_entries.Count)];
|
var random_conv = suitableEntries.PickRandom();
|
||||||
player.Conversations.StartConversation(random_conv.SNOConversation);
|
player.Conversations.StartConversation(random_conv.SNOConversation);
|
||||||
if (ForceConversationSNO == Conversations[0].ConversationSNO) ForceConversationSNO = -1;
|
if (ForceConversationSNO == Conversations[0].ConversationSNO) ForceConversationSNO = -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,6 +21,7 @@ using System.Drawing;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
|
|
||||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||||
{
|
{
|
||||||
@ -1126,16 +1127,16 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
|||||||
var portals = GetActorsInRange<Portal>(5f).Where(p => p.Destination != null && p.Destination.DestLevelAreaSNO != -1).ToList();
|
var portals = GetActorsInRange<Portal>(5f).Where(p => p.Destination != null && p.Destination.DestLevelAreaSNO != -1).ToList();
|
||||||
if (portals.Count >= 2)
|
if (portals.Count >= 2)
|
||||||
{
|
{
|
||||||
var random_portal = portals[FastRandom.Instance.Next(portals.Count)];
|
var randomPortal = portals.PickRandom();
|
||||||
var bounty_portals = World.Game.QuestManager.Bounties.Where(b => !b.PortalSpawned).SelectMany(b => b.LevelAreaChecks).Intersect(portals.Select(p => p.Destination.DestLevelAreaSNO));
|
var bounty_portals = World.Game.QuestManager.Bounties.Where(b => !b.PortalSpawned).SelectMany(b => b.LevelAreaChecks).Intersect(portals.Select(p => p.Destination.DestLevelAreaSNO));
|
||||||
if (bounty_portals.Any())
|
if (bounty_portals.Any())
|
||||||
{
|
{
|
||||||
random_portal = portals.First(p => World.Game.QuestManager.Bounties.SelectMany(b => b.LevelAreaChecks).Where(w => w != -1).Contains(p.Destination.DestLevelAreaSNO));
|
randomPortal = portals.First(p => World.Game.QuestManager.Bounties.SelectMany(b => b.LevelAreaChecks).Where(w => w != -1).Contains(p.Destination.DestLevelAreaSNO));
|
||||||
World.Game.QuestManager.Bounties.First(b => b.LevelAreaChecks.Contains(random_portal.Destination.DestLevelAreaSNO)).PortalSpawned = true;
|
World.Game.QuestManager.Bounties.First(b => b.LevelAreaChecks.Contains(randomPortal.Destination.DestLevelAreaSNO)).PortalSpawned = true;
|
||||||
}
|
}
|
||||||
foreach (var portal in portals)
|
foreach (var portal in portals)
|
||||||
portal.randomed = false;
|
portal.randomed = false;
|
||||||
random_portal.randomed = true;
|
randomPortal.randomed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -948,7 +948,7 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.GameSystem
|
|||||||
if (QuestManager.Game.GetWorld(world).CheckLocationForFlag(point, Scene.NavCellFlags.AllowWalk))
|
if (QuestManager.Game.GetWorld(world).CheckLocationForFlag(point, Scene.NavCellFlags.AllowWalk))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
QuestManager.Game.GetWorld(world).SpawnMonster((ActorSno)GameServer.GSSystem.GeneratorsSystem.SpawnGenerator.Spawns[LevelArea].melee[FastRandom.Instance.Next(GameServer.GSSystem.GeneratorsSystem.SpawnGenerator.Spawns[LevelArea].melee.Count)], point);
|
QuestManager.Game.GetWorld(world).SpawnMonster((ActorSno)GameServer.GSSystem.GeneratorsSystem.SpawnGenerator.Spawns[LevelArea].melee.PickRandom(), point);
|
||||||
monsterCount++;
|
monsterCount++;
|
||||||
}
|
}
|
||||||
} // Need additional monster spawn, there are few of them
|
} // Need additional monster spawn, there are few of them
|
||||||
@ -978,8 +978,7 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.GameSystem
|
|||||||
scenes.Add(scene);
|
scenes.Add(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Probably RandomHelper.Next(0, scenes.Count)???
|
GameServer.Core.Types.Math.Vector3D scenePoint = scenes.PickRandom().Position;
|
||||||
GameServer.Core.Types.Math.Vector3D scenePoint = scenes[RandomHelper.Next(0, scenes.Count - 1)].Position;
|
|
||||||
GameServer.Core.Types.Math.Vector3D point = null;
|
GameServer.Core.Types.Math.Vector3D point = null;
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -563,8 +563,7 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
|||||||
List<Scene> scenes = world.Scenes.Values.ToList();
|
List<Scene> scenes = world.Scenes.Values.ToList();
|
||||||
if (levelArea != -1) scenes = scenes.Where(sc => sc.Specification.SNOLevelAreas[0] == levelArea && !sc.SceneSNO.Name.ToLower().Contains("filler")).ToList();
|
if (levelArea != -1) scenes = scenes.Where(sc => sc.Specification.SNOLevelAreas[0] == levelArea && !sc.SceneSNO.Name.ToLower().Contains("filler")).ToList();
|
||||||
else scenes = scenes.Where(sc => !sc.SceneSNO.Name.ToLower().Contains("filler")).ToList();
|
else scenes = scenes.Where(sc => !sc.SceneSNO.Name.ToLower().Contains("filler")).ToList();
|
||||||
int randomScene = RandomHelper.Next(0, scenes.Count - 1); // FIXME: probably RandomHelper.Next(0, scenes.Count)???
|
Vector3D SSV = scenes.PickRandom().Position;
|
||||||
Vector3D SSV = scenes[randomScene].Position;
|
|
||||||
Vector3D startingPoint = null;
|
Vector3D startingPoint = null;
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
@ -583,10 +582,10 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
|||||||
|
|
||||||
if (waypoints.Count > 1)
|
if (waypoints.Count > 1)
|
||||||
{
|
{
|
||||||
int RandomPoint = RandomHelper.Next(0, waypoints.Count - 1);
|
int randomPoint = RandomHelper.Next(0, waypoints.Count);
|
||||||
for (int i = 0; i < waypoints.Count; i++)
|
for (int i = 0; i < waypoints.Count; i++)
|
||||||
{
|
{
|
||||||
if (i != RandomPoint)
|
if (i != randomPoint)
|
||||||
waypoints[i].Destroy();
|
waypoints[i].Destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1675,7 +1674,7 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
|||||||
|
|
||||||
if (DRLGTemplate.Templates.ContainsKey(worldSNO))
|
if (DRLGTemplate.Templates.ContainsKey(worldSNO))
|
||||||
{
|
{
|
||||||
DRLGTemplate.DRLGLayout world_layout = DRLGTemplate.Templates[worldSNO][FastRandom.Instance.Next(DRLGTemplate.Templates[worldSNO].Count)];
|
DRLGTemplate.DRLGLayout world_layout = DRLGTemplate.Templates[worldSNO].PickRandom();
|
||||||
int coordY = 0;
|
int coordY = 0;
|
||||||
|
|
||||||
foreach (List<int> row in world_layout.map)
|
foreach (List<int> row in world_layout.map)
|
||||||
@ -2271,7 +2270,7 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
|||||||
{
|
{
|
||||||
var handle = new SNOHandle(207706);
|
var handle = new SNOHandle(207706);
|
||||||
if (handle == null || gizmoLocations.Count == 0) continue;
|
if (handle == null || gizmoLocations.Count == 0) continue;
|
||||||
LazyLoadActor(handle, gizmoLocations[FastRandom.Instance.Next(gizmoLocations.Count)], world, ((DiIiS_NA.Core.MPQ.FileFormats.Actor)handle.Target).TagMap);
|
LazyLoadActor(handle, gizmoLocations.PickRandom(), world, ((DiIiS_NA.Core.MPQ.FileFormats.Actor)handle.Target).TagMap);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
foreach (var location in gizmoLocations)
|
foreach (var location in gizmoLocations)
|
||||||
@ -2297,11 +2296,11 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
|||||||
|
|
||||||
if (gizmoLocations.Count > 0 && world.Game.MonsterLevel >= Program.MaxLevel && FastRandom.Instance.Next(100) < 30)
|
if (gizmoLocations.Count > 0 && world.Game.MonsterLevel >= Program.MaxLevel && FastRandom.Instance.Next(100) < 30)
|
||||||
{
|
{
|
||||||
var handle_chest = new SNOHandle(96993); //leg chest
|
var handleChest = new SNOHandle(96993); //leg chest
|
||||||
if (handle_chest == null) continue;
|
if (handleChest == null) continue;
|
||||||
var golden_chest = LoadActor(handle_chest, gizmoLocations[FastRandom.Instance.Next(0, gizmoLocations.Count - 1)], world, ((DiIiS_NA.Core.MPQ.FileFormats.Actor)handle_chest.Target).TagMap);
|
var goldenChest = LoadActor(handleChest, gizmoLocations.PickRandom(), world, ((DiIiS_NA.Core.MPQ.FileFormats.Actor)handleChest.Target).TagMap);
|
||||||
if (golden_chest > 0)
|
if (goldenChest > 0)
|
||||||
(world.GetActorByGlobalId(golden_chest) as LegendaryChest).ChestActive = true;
|
(world.GetActorByGlobalId(goldenChest) as LegendaryChest).ChestActive = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (world.DRLGEmuActive)
|
if (world.DRLGEmuActive)
|
||||||
@ -2323,8 +2322,8 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
|||||||
//unique spawn
|
//unique spawn
|
||||||
if (SpawnGenerator.Spawns.ContainsKey(wid) && SpawnGenerator.Spawns[wid].dangerous.Count > 0 && FastRandom.Instance.NextDouble() < 0.5)
|
if (SpawnGenerator.Spawns.ContainsKey(wid) && SpawnGenerator.Spawns[wid].dangerous.Count > 0 && FastRandom.Instance.NextDouble() < 0.5)
|
||||||
{
|
{
|
||||||
var randomUnique = new SNOHandle(SpawnGenerator.Spawns[wid].dangerous[FastRandom.Instance.Next(SpawnGenerator.Spawns[wid].dangerous.Count)]);
|
var randomUnique = new SNOHandle(SpawnGenerator.Spawns[wid].dangerous.PickRandom());
|
||||||
var scene = levelAreas.First().Value[FastRandom.Instance.Next(levelAreas.First().Value.Count)];
|
var scene = levelAreas.First().Value.PickRandom();
|
||||||
int x = FastRandom.Instance.Next(scene.NavMesh.SquaresCountX);
|
int x = FastRandom.Instance.Next(scene.NavMesh.SquaresCountX);
|
||||||
int y = FastRandom.Instance.Next(scene.NavMesh.SquaresCountY);
|
int y = FastRandom.Instance.Next(scene.NavMesh.SquaresCountY);
|
||||||
int threshold = 0;
|
int threshold = 0;
|
||||||
@ -2365,9 +2364,9 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
|||||||
//goblin spawn
|
//goblin spawn
|
||||||
if (SpawnGenerator.Spawns.ContainsKey(wid) && SpawnGenerator.Spawns[wid].can_spawn_goblin && FastRandom.Instance.NextDouble() < 0.5)
|
if (SpawnGenerator.Spawns.ContainsKey(wid) && SpawnGenerator.Spawns[wid].can_spawn_goblin && FastRandom.Instance.NextDouble() < 0.5)
|
||||||
{
|
{
|
||||||
var randomGoblin = new SNOHandle(Goblins[FastRandom.Instance.Next(Goblins.Count)]);
|
var randomGoblin = new SNOHandle(Goblins.PickRandom());
|
||||||
if (world.Game.IsHardcore) randomGoblin = new SNOHandle(3852);
|
if (world.Game.IsHardcore) randomGoblin = new SNOHandle(3852);
|
||||||
var scene = levelAreas.First().Value[FastRandom.Instance.Next(levelAreas.First().Value.Count)];
|
var scene = levelAreas.First().Value.PickRandom();
|
||||||
int x = FastRandom.Instance.Next(scene.NavMesh.SquaresCountX);
|
int x = FastRandom.Instance.Next(scene.NavMesh.SquaresCountX);
|
||||||
int y = FastRandom.Instance.Next(scene.NavMesh.SquaresCountY);
|
int y = FastRandom.Instance.Next(scene.NavMesh.SquaresCountY);
|
||||||
int threshold = 0;
|
int threshold = 0;
|
||||||
@ -2420,8 +2419,8 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
|||||||
//unique spawn
|
//unique spawn
|
||||||
if (SpawnGenerator.Spawns.ContainsKey(la) && SpawnGenerator.Spawns[la].dangerous.Count > 0 && FastRandom.Instance.NextDouble() < 0.5)
|
if (SpawnGenerator.Spawns.ContainsKey(la) && SpawnGenerator.Spawns[la].dangerous.Count > 0 && FastRandom.Instance.NextDouble() < 0.5)
|
||||||
{
|
{
|
||||||
var randomUnique = new SNOHandle(SpawnGenerator.Spawns[la].dangerous[FastRandom.Instance.Next(SpawnGenerator.Spawns[la].dangerous.Count)]);
|
var randomUnique = new SNOHandle(SpawnGenerator.Spawns[la].dangerous.PickRandom());
|
||||||
var scene = levelAreas[la][FastRandom.Instance.Next(levelAreas[la].Count)];
|
var scene = levelAreas[la].PickRandom();
|
||||||
int x = FastRandom.Instance.Next(scene.NavMesh.SquaresCountX);
|
int x = FastRandom.Instance.Next(scene.NavMesh.SquaresCountX);
|
||||||
int y = FastRandom.Instance.Next(scene.NavMesh.SquaresCountY);
|
int y = FastRandom.Instance.Next(scene.NavMesh.SquaresCountY);
|
||||||
int threshold = 0;
|
int threshold = 0;
|
||||||
@ -2462,9 +2461,9 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
|||||||
//goblin spawn
|
//goblin spawn
|
||||||
if (SpawnGenerator.Spawns.ContainsKey(la) && SpawnGenerator.Spawns[la].can_spawn_goblin && FastRandom.Instance.NextDouble() < 0.5)
|
if (SpawnGenerator.Spawns.ContainsKey(la) && SpawnGenerator.Spawns[la].can_spawn_goblin && FastRandom.Instance.NextDouble() < 0.5)
|
||||||
{
|
{
|
||||||
var randomGoblin = new SNOHandle(Goblins[FastRandom.Instance.Next(Goblins.Count)]);
|
var randomGoblin = new SNOHandle(Goblins.PickRandom());
|
||||||
if (world.Game.IsHardcore) randomGoblin = new SNOHandle(3852);
|
if (world.Game.IsHardcore) randomGoblin = new SNOHandle(3852);
|
||||||
var scene = levelAreas[la][FastRandom.Instance.Next(levelAreas[la].Count)];
|
var scene = levelAreas[la].PickRandom();
|
||||||
int x = FastRandom.Instance.Next(scene.NavMesh.SquaresCountX);
|
int x = FastRandom.Instance.Next(scene.NavMesh.SquaresCountX);
|
||||||
int y = FastRandom.Instance.Next(scene.NavMesh.SquaresCountY);
|
int y = FastRandom.Instance.Next(scene.NavMesh.SquaresCountY);
|
||||||
int threshold = 0;
|
int threshold = 0;
|
||||||
@ -2540,8 +2539,8 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
|||||||
#region elite spawn
|
#region elite spawn
|
||||||
int randomMeleeMonsterId = -1;
|
int randomMeleeMonsterId = -1;
|
||||||
int randomRangedMonsterId = -1;
|
int randomRangedMonsterId = -1;
|
||||||
if (SpawnGenerator.Spawns[la].melee.Count > 0) randomMeleeMonsterId = SpawnGenerator.Spawns[la].melee[FastRandom.Instance.Next(SpawnGenerator.Spawns[la].melee.Count)];
|
if (SpawnGenerator.Spawns[la].melee.Count > 0) randomMeleeMonsterId = SpawnGenerator.Spawns[la].melee.PickRandom();
|
||||||
if (SpawnGenerator.Spawns[la].range.Count > 0) randomRangedMonsterId = SpawnGenerator.Spawns[la].range[FastRandom.Instance.Next(SpawnGenerator.Spawns[la].range.Count)];
|
if (SpawnGenerator.Spawns[la].range.Count > 0) randomRangedMonsterId = SpawnGenerator.Spawns[la].range.PickRandom();
|
||||||
SNOHandle meleeMonsterHandle = (randomMeleeMonsterId == -1 ? null : new SNOHandle(randomMeleeMonsterId));
|
SNOHandle meleeMonsterHandle = (randomMeleeMonsterId == -1 ? null : new SNOHandle(randomMeleeMonsterId));
|
||||||
SNOHandle rangedMonsterHandle = (randomRangedMonsterId == -1 ? null : new SNOHandle(randomRangedMonsterId));
|
SNOHandle rangedMonsterHandle = (randomRangedMonsterId == -1 ? null : new SNOHandle(randomRangedMonsterId));
|
||||||
if (rangedMonsterHandle == null) rangedMonsterHandle = meleeMonsterHandle;
|
if (rangedMonsterHandle == null) rangedMonsterHandle = meleeMonsterHandle;
|
||||||
@ -2585,8 +2584,8 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
|||||||
{
|
{
|
||||||
int randomMeleeMonsterId = -1;
|
int randomMeleeMonsterId = -1;
|
||||||
int randomRangedMonsterId = -1;
|
int randomRangedMonsterId = -1;
|
||||||
if (SpawnGenerator.Spawns[la].melee.Count > 0) randomMeleeMonsterId = SpawnGenerator.Spawns[la].melee[FastRandom.Instance.Next(SpawnGenerator.Spawns[la].melee.Count)];
|
if (SpawnGenerator.Spawns[la].melee.Count > 0) randomMeleeMonsterId = SpawnGenerator.Spawns[la].melee.PickRandom();
|
||||||
if (SpawnGenerator.Spawns[la].range.Count > 0) randomRangedMonsterId = SpawnGenerator.Spawns[la].range[FastRandom.Instance.Next(SpawnGenerator.Spawns[la].range.Count)];
|
if (SpawnGenerator.Spawns[la].range.Count > 0) randomRangedMonsterId = SpawnGenerator.Spawns[la].range.PickRandom();
|
||||||
SNOHandle meleeMonsterHandle = (randomMeleeMonsterId == -1 ? null : new SNOHandle(randomMeleeMonsterId));
|
SNOHandle meleeMonsterHandle = (randomMeleeMonsterId == -1 ? null : new SNOHandle(randomMeleeMonsterId));
|
||||||
SNOHandle rangedMonsterHandle = (randomRangedMonsterId == -1 ? null : new SNOHandle(randomRangedMonsterId));
|
SNOHandle rangedMonsterHandle = (randomRangedMonsterId == -1 ? null : new SNOHandle(randomRangedMonsterId));
|
||||||
//int maxMobsInStack = (SpawnGenerator.IsMelee(la, randomMonsterId) ? 6 : (SpawnGenerator.IsDangerous(la, randomMonsterId) ? 1 : 3));
|
//int maxMobsInStack = (SpawnGenerator.IsMelee(la, randomMonsterId) ? 6 : (SpawnGenerator.IsDangerous(la, randomMonsterId) ? 1 : 3));
|
||||||
@ -2617,7 +2616,7 @@ namespace DiIiS_NA.GameServer.GSSystem.GeneratorsSystem
|
|||||||
else //spawn champions
|
else //spawn champions
|
||||||
#region champion spawn
|
#region champion spawn
|
||||||
{
|
{
|
||||||
SNOHandle championHandle = new SNOHandle(SpawnGenerator.Spawns[la].melee[FastRandom.Instance.Next(SpawnGenerator.Spawns[la].melee.Count)]);
|
SNOHandle championHandle = new SNOHandle(SpawnGenerator.Spawns[la].melee.PickRandom());
|
||||||
groupId = FastRandom.Instance.Next();
|
groupId = FastRandom.Instance.Next();
|
||||||
for (int n = 0; n < 4; n++)
|
for (int n = 0; n < 4; n++)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -226,7 +226,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
|||||||
if (item.AffixFamilies.Contains(affix_group.First().AffixFamily0)) continue;
|
if (item.AffixFamilies.Contains(affix_group.First().AffixFamily0)) continue;
|
||||||
int s = item.ItemDefinition.RequiredLevel;
|
int s = item.ItemDefinition.RequiredLevel;
|
||||||
|
|
||||||
bestDefinitions[affix_group.First().AffixFamily0] = affix_group.ToList()[FastRandom.Instance.Next(0, affix_group.Count())];
|
bestDefinitions[affix_group.First().AffixFamily0] = affix_group.PickRandom();
|
||||||
}
|
}
|
||||||
|
|
||||||
//if (bestDefinitions.Values.Where(a => a.Name.Contains("PoisonD")).Count() > 0) Logger.Debug("PoisonD in bestDefinitions");
|
//if (bestDefinitions.Values.Where(a => a.Name.Contains("PoisonD")).Count() > 0) Logger.Debug("PoisonD in bestDefinitions");
|
||||||
@ -363,8 +363,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
|||||||
if (suitable.Count() > 1 && i18 && !secondGroup && suitable.Where(a => a.Name.Contains("Secondary")).Count() > 0)
|
if (suitable.Count() > 1 && i18 && !secondGroup && suitable.Where(a => a.Name.Contains("Secondary")).Count() > 0)
|
||||||
suitable = suitable.Where(a => a.Name.Contains("Secondary"));*/
|
suitable = suitable.Where(a => a.Name.Contains("Secondary"));*/
|
||||||
|
|
||||||
if (suitable.Any())
|
if (suitable.TryPickRandom(out var randomAffix))
|
||||||
return suitable[FastRandom.Instance.Next(0, suitable.Length)].Hash;
|
return randomAffix.Hash;
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -504,7 +504,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
|||||||
bool itemIsPrefix = (FastRandom.Instance.Next(0, 2) > 0);
|
bool itemIsPrefix = (FastRandom.Instance.Next(0, 2) > 0);
|
||||||
var randomName = D3.Items.RareItemName.CreateBuilder()
|
var randomName = D3.Items.RareItemName.CreateBuilder()
|
||||||
.SetItemNameIsPrefix(itemIsPrefix)
|
.SetItemNameIsPrefix(itemIsPrefix)
|
||||||
.SetSnoAffixStringList(itemIsPrefix ? SuffixAffixLists[FastRandom.Instance.Next(0, SuffixAffixLists.Count)] : PrefixAffixLists[FastRandom.Instance.Next(0, PrefixAffixLists.Count)])
|
.SetSnoAffixStringList(itemIsPrefix ? SuffixAffixLists.PickRandom() : PrefixAffixLists.PickRandom())
|
||||||
.SetAffixStringListIndex(FastRandom.Instance.Next(0, 6))
|
.SetAffixStringListIndex(FastRandom.Instance.Next(0, 6))
|
||||||
.SetItemStringListIndex(FastRandom.Instance.Next(0, 6));
|
.SetItemStringListIndex(FastRandom.Instance.Next(0, 6));
|
||||||
return randomName.Build();
|
return randomName.Build();
|
||||||
|
|||||||
@ -1088,7 +1088,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
it = items[RandomHelper.Next(@base, @base + 1)]; // FIXME: this random always returns @base
|
it = items[RandomHelper.Next(@base, @base + 2)];
|
||||||
player.Inventory.PickUp(ItemGenerator.Cook(player, it));
|
player.Inventory.PickUp(ItemGenerator.Cook(player, it));
|
||||||
break;
|
break;
|
||||||
case -1249067448:
|
case -1249067448:
|
||||||
@ -1102,7 +1102,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
|||||||
"Unique_Shoulder_Set_09_x1", "Unique_Boots_Set_09_x1",
|
"Unique_Shoulder_Set_09_x1", "Unique_Boots_Set_09_x1",
|
||||||
"Unique_Shoulder_Set_06_x1", "Unique_Boots_Set_06_x1"
|
"Unique_Shoulder_Set_06_x1", "Unique_Boots_Set_06_x1"
|
||||||
};
|
};
|
||||||
it = items[RandomHelper.Next(@base, @base + 1)]; // FIXME: this random always returns @base
|
it = items[RandomHelper.Next(@base, @base + 2)];
|
||||||
player.Inventory.PickUp(ItemGenerator.Cook(player, it));
|
player.Inventory.PickUp(ItemGenerator.Cook(player, it));
|
||||||
break;
|
break;
|
||||||
case -1249067447:
|
case -1249067447:
|
||||||
@ -1116,7 +1116,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
|||||||
"Unique_Chest_Set_09_x1", "Unique_Pants_Set_09_x1",
|
"Unique_Chest_Set_09_x1", "Unique_Pants_Set_09_x1",
|
||||||
"Unique_Chest_Set_06_x1", "Unique_Pants_Set_06_x1"
|
"Unique_Chest_Set_06_x1", "Unique_Pants_Set_06_x1"
|
||||||
};
|
};
|
||||||
it = items[RandomHelper.Next(@base, @base + 1)]; // FIXME: this random always returns @base
|
it = items[RandomHelper.Next(@base, @base + 2)];
|
||||||
player.Inventory.PickUp(ItemGenerator.Cook(player, it));
|
player.Inventory.PickUp(ItemGenerator.Cook(player, it));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@ -3,6 +3,7 @@ using System.Collections.Concurrent;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
using NHibernate.Linq;
|
using NHibernate.Linq;
|
||||||
using DiIiS_NA.Core.Logging;
|
using DiIiS_NA.Core.Logging;
|
||||||
using DiIiS_NA.Core.Storage;
|
using DiIiS_NA.Core.Storage;
|
||||||
@ -1143,7 +1144,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
|||||||
|
|
||||||
public static Item GenerateRandomGem(ActorSystem.Actor player, int level, bool is_goblin)
|
public static Item GenerateRandomGem(ActorSystem.Actor player, int level, bool is_goblin)
|
||||||
{
|
{
|
||||||
string gemName = GemNames[FastRandom.Instance.Next(GemNames.Count)];
|
string gemName = GemNames.PickRandom();
|
||||||
|
|
||||||
int lvl = Math.Max(player.Attributes[GameAttribute.Level], 20);
|
int lvl = Math.Max(player.Attributes[GameAttribute.Level], 20);
|
||||||
int gem_grade = ((lvl - 10) / 8) + 1;
|
int gem_grade = ((lvl - 10) / 8) + 1;
|
||||||
@ -1225,7 +1226,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
|||||||
if (pool_filtered.Count == 0) return null;
|
if (pool_filtered.Count == 0) return null;
|
||||||
|
|
||||||
|
|
||||||
ItemTable selected = pool_filtered[FastRandom.Instance.Next(0, pool_filtered.Count() - 1)];
|
ItemTable selected = pool_filtered.PickRandom();
|
||||||
return selected;
|
return selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1264,7 +1265,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
|||||||
).ToList();
|
).ToList();
|
||||||
if (pool_filtered.Count == 0) return null;
|
if (pool_filtered.Count == 0) return null;
|
||||||
|
|
||||||
ItemTable selected = pool_filtered[FastRandom.Instance.Next(0, pool_filtered.Count() - 1)];
|
ItemTable selected = pool_filtered.PickRandom();
|
||||||
return selected;
|
return selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -187,8 +187,8 @@ namespace DiIiS_NA.GameServer.GSSystem.MapSystem
|
|||||||
Parent = parent;
|
Parent = parent;
|
||||||
Subscenes = new List<Scene>();
|
Subscenes = new List<Scene>();
|
||||||
Scale = 1.0f;
|
Scale = 1.0f;
|
||||||
AppliedLabels = new int[0];
|
AppliedLabels = Array.Empty<int>();
|
||||||
Field8 = new int[0];
|
Field8 = Array.Empty<int>();
|
||||||
Size = new Size(NavZone.V0.X * (int)NavZone.Float0, NavZone.V0.Y * (int)NavZone.Float0);
|
Size = new Size(NavZone.V0.X * (int)NavZone.Float0, NavZone.V0.Y * (int)NavZone.Float0);
|
||||||
Position = position;
|
Position = position;
|
||||||
World.AddScene(this); // add scene to the world.
|
World.AddScene(this); // add scene to the world.
|
||||||
|
|||||||
@ -4,6 +4,7 @@ using System.Collections.Generic;
|
|||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
using DiIiS_NA.Core.Helpers.Hash;
|
using DiIiS_NA.Core.Helpers.Hash;
|
||||||
using DiIiS_NA.Core.Helpers.Math;
|
using DiIiS_NA.Core.Helpers.Math;
|
||||||
using DiIiS_NA.Core.Logging;
|
using DiIiS_NA.Core.Logging;
|
||||||
@ -240,7 +241,7 @@ namespace DiIiS_NA.GameServer.GSSystem.MapSystem
|
|||||||
var scenes = new List<int> { 265624, 265655, 265678, 265693 };
|
var scenes = new List<int> { 265624, 265655, 265678, 265693 };
|
||||||
foreach (var scene in scenes)
|
foreach (var scene in scenes)
|
||||||
{
|
{
|
||||||
var wld = worlds[FastRandom.Instance.Next(worlds.Count)];
|
var wld = worlds.PickRandom();
|
||||||
PortalOverrides.Add(scene, wld);
|
PortalOverrides.Add(scene, wld);
|
||||||
worlds.Remove(wld);
|
worlds.Remove(wld);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -286,9 +286,9 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
|||||||
{
|
{
|
||||||
string itemType = originalItem.ItemDefinition.Name.Substring(3);
|
string itemType = originalItem.ItemDefinition.Name.Substring(3);
|
||||||
if (itemType.Contains("1HWeapon"))
|
if (itemType.Contains("1HWeapon"))
|
||||||
itemType = OneHandedWeapons[FastRandom.Instance.Next(OneHandedWeapons.Count)];
|
itemType = OneHandedWeapons.PickRandom();
|
||||||
if (itemType.Contains("2HWeapon"))
|
if (itemType.Contains("2HWeapon"))
|
||||||
itemType = TwoHandedWeapons[FastRandom.Instance.Next(TwoHandedWeapons.Count)];
|
itemType = TwoHandedWeapons.PickRandom();
|
||||||
if (itemType.Contains("Pants"))
|
if (itemType.Contains("Pants"))
|
||||||
itemType = "Legs";
|
itemType = "Legs";
|
||||||
_inventoryGrid.AddItem(ItemGenerator.GetRandomItemOfType(_owner, ItemGroup.FromString(itemType)));
|
_inventoryGrid.AddItem(ItemGenerator.GetRandomItemOfType(_owner, ItemGroup.FromString(itemType)));
|
||||||
@ -1212,7 +1212,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
|||||||
if (Item.AffixFamilies.Contains(affix_group.First().AffixFamily0)) continue;
|
if (Item.AffixFamilies.Contains(affix_group.First().AffixFamily0)) continue;
|
||||||
int s = Item.ItemDefinition.RequiredLevel;
|
int s = Item.ItemDefinition.RequiredLevel;
|
||||||
|
|
||||||
bestDefinitions[affix_group.First().AffixFamily0] = affix_group.ToList()[FastRandom.Instance.Next(0, 1)];
|
bestDefinitions[affix_group.First().AffixFamily0] = affix_group.ToList()[FastRandom.Instance.Next(0, 1)]; // FIXME: random always returns 0
|
||||||
}
|
}
|
||||||
|
|
||||||
var SocketsAffixs = AffixGenerator.AllAffix.Where(a => a.Name.ToLower().Contains("1xx_socket") && itemTypes.ContainsAtLeastOne(a.ItemGroup)).ToList();
|
var SocketsAffixs = AffixGenerator.AllAffix.Where(a => a.Name.ToLower().Contains("1xx_socket") && itemTypes.ContainsAtLeastOne(a.ItemGroup)).ToList();
|
||||||
|
|||||||
@ -5681,13 +5681,10 @@ public class Player : Actor, IMessageConsumer, IUpdateable
|
|||||||
|
|
||||||
public Actor SpawnNephalemBoss(World world)
|
public Actor SpawnNephalemBoss(World world)
|
||||||
{
|
{
|
||||||
var Boss = world.SpawnMonster(
|
var boss = world.SpawnMonster(ActorSnoExtensions.nephalemPortalBosses.PickRandom(), Position);
|
||||||
ActorSnoExtensions.nephalemPortalBosses[
|
boss.Attributes[GameAttribute.Bounty_Objective] = true;
|
||||||
RandomHelper.Next(0, ActorSnoExtensions.nephalemPortalBosses.Length - 1)], Position);
|
boss.Attributes[GameAttribute.Is_Loot_Run_Boss] = true;
|
||||||
Boss.Attributes[GameAttribute.Bounty_Objective] = true;
|
boss.Attributes.BroadcastChangedIfRevealed();
|
||||||
Boss.Attributes[GameAttribute.Is_Loot_Run_Boss] = true;
|
|
||||||
Boss.Attributes.BroadcastChangedIfRevealed();
|
|
||||||
|
|
||||||
|
|
||||||
foreach (var plr in world.Players.Values)
|
foreach (var plr in world.Players.Values)
|
||||||
plr.InGameClient.SendMessage(new WorldSyncedDataMessage()
|
plr.InGameClient.SendMessage(new WorldSyncedDataMessage()
|
||||||
@ -5702,7 +5699,7 @@ public class Player : Actor, IMessageConsumer, IUpdateable
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
return Boss;
|
return boss;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool StartConversation(World world, int conversationId)
|
public bool StartConversation(World world, int conversationId)
|
||||||
|
|||||||
@ -13,6 +13,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
|
|
||||||
namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
||||||
{
|
{
|
||||||
@ -127,7 +128,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
|||||||
|
|
||||||
if (_tickTimer == null || _tickTimer.TimedOut)
|
if (_tickTimer == null || _tickTimer.TimedOut)
|
||||||
{
|
{
|
||||||
var monster = ActorFactory.Create(Target.World, Monsters[DiIiS_NA.Core.Helpers.Math.FastRandom.Instance.Next(0, Monsters.Count())], new TagMap());
|
var monster = ActorFactory.Create(Target.World, Monsters.PickRandom(), new TagMap());
|
||||||
monster.EnterWorld(RandomDirection(Target.Position, 5f, Radius));
|
monster.EnterWorld(RandomDirection(Target.Position, 5f, Radius));
|
||||||
monster.HasLoot = (Target.World.Game.CurrentAct == 3000);
|
monster.HasLoot = (Target.World.Game.CurrentAct == 3000);
|
||||||
monster.Unstuck();
|
monster.Unstuck();
|
||||||
@ -210,7 +211,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
|||||||
{
|
{
|
||||||
for (int i = 0; i < 10; i++)
|
for (int i = 0; i < 10; i++)
|
||||||
{
|
{
|
||||||
var monster = ActorFactory.Create(Target.World, Monsters[DiIiS_NA.Core.Helpers.Math.FastRandom.Instance.Next(0, Monsters.Count())], new TagMap());
|
var monster = ActorFactory.Create(Target.World, Monsters.PickRandom(), new TagMap());
|
||||||
monster.EnterWorld(RandomDirection(Target.Position, 5f, Radius));
|
monster.EnterWorld(RandomDirection(Target.Position, 5f, Radius));
|
||||||
monster.HasLoot = (Target.World.Game.CurrentAct == 3000);
|
monster.HasLoot = (Target.World.Game.CurrentAct == 3000);
|
||||||
monster.Unstuck();
|
monster.Unstuck();
|
||||||
|
|||||||
@ -16,6 +16,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
//Blizzless Project 2022
|
//Blizzless Project 2022
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
|
|
||||||
namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
||||||
{
|
{
|
||||||
@ -1098,20 +1099,21 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
|||||||
//once collision with target, RopeEffect up to ScriptFromula(5) times.
|
//once collision with target, RopeEffect up to ScriptFromula(5) times.
|
||||||
Actor curSource = hit;
|
Actor curSource = hit;
|
||||||
var enemies = GetEnemiesInRadius(curSource.Position, ScriptFormula(12)).Actors.Where(actor => actor != curSource).ToList();
|
var enemies = GetEnemiesInRadius(curSource.Position, ScriptFormula(12)).Actors.Where(actor => actor != curSource).ToList();
|
||||||
Actor curTarget = (enemies.Count > 0 ? enemies[DiIiS_NA.Core.Helpers.Math.FastRandom.Instance.Next(0, enemies.Count)] : null);
|
enemies.TryPickRandom(out var curTarget);
|
||||||
|
|
||||||
for (int i = 0; i <= ScriptFormula(5); i++)
|
for (int i = 0; i <= ScriptFormula(5); i++)
|
||||||
{
|
{
|
||||||
if (curTarget == null) break;
|
if (curTarget == null) break;
|
||||||
curSource.AddRopeEffect(166450, curTarget);
|
curSource.AddRopeEffect(166450, curTarget);
|
||||||
curSource = curTarget;
|
curSource = curTarget;
|
||||||
|
|
||||||
AttackPayload ricochet_attack = new AttackPayload(this);
|
AttackPayload ricochetAttack = new AttackPayload(this);
|
||||||
ricochet_attack.AddWeaponDamage(ScriptFormula(15), DamageType.Physical);
|
ricochetAttack.AddWeaponDamage(ScriptFormula(15), DamageType.Physical);
|
||||||
ricochet_attack.SetSingleTarget(curTarget);
|
ricochetAttack.SetSingleTarget(curTarget);
|
||||||
ricochet_attack.Apply();
|
ricochetAttack.Apply();
|
||||||
|
|
||||||
var next_enemies = GetEnemiesInRadius(curSource.Position, ScriptFormula(12)).Actors.Where(actor => actor != curSource).ToList();
|
var nextEnemies = GetEnemiesInRadius(curSource.Position, ScriptFormula(12)).Actors.Where(actor => actor != curSource).ToList();
|
||||||
curTarget = (next_enemies.Count > 0 ? next_enemies[DiIiS_NA.Core.Helpers.Math.FastRandom.Instance.Next(0, next_enemies.Count)] : null);
|
nextEnemies.TryPickRandom(out curTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Rune_D > 0)
|
if (Rune_D > 0)
|
||||||
|
|||||||
@ -1648,7 +1648,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
|||||||
Vector3D targetPosition = RandomDirection(Target.Position, ScriptFormula(2));
|
Vector3D targetPosition = RandomDirection(Target.Position, ScriptFormula(2));
|
||||||
var enemies = GetEnemiesInRadius(Target.Position, ScriptFormula(2)).Actors;
|
var enemies = GetEnemiesInRadius(Target.Position, ScriptFormula(2)).Actors;
|
||||||
if (enemies.Count > 0)
|
if (enemies.Count > 0)
|
||||||
targetPosition = enemies[FastRandom.Instance.Next(0, enemies.Count)].Position;
|
targetPosition = enemies.PickRandom().Position;
|
||||||
if (_damageTimer == null || _damageTimer.TimedOut)
|
if (_damageTimer == null || _damageTimer.TimedOut)
|
||||||
{
|
{
|
||||||
_damageTimer = WaitSeconds(1f / 4f);
|
_damageTimer = WaitSeconds(1f / 4f);
|
||||||
@ -1698,11 +1698,11 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
|||||||
var targets = GetEnemiesInRadius(Target.Position, ScriptFormula(2));
|
var targets = GetEnemiesInRadius(Target.Position, ScriptFormula(2));
|
||||||
if (targets.Actors.Count > 0)
|
if (targets.Actors.Count > 0)
|
||||||
{
|
{
|
||||||
Vector3D nearby_position = targets.Actors[FastRandom.Instance.Next(0, targets.Actors.Count)].Position;
|
Vector3D nearbyPosition = targets.Actors.PickRandom().Position;
|
||||||
// TODO: check projectile actor
|
// TODO: check projectile actor
|
||||||
var rocket = new Projectile(this, ActorSno._dh_straferune_knives_knife, User.Position);
|
var rocket = new Projectile(this, ActorSno._dh_straferune_knives_knife, User.Position);
|
||||||
rocket.Position.Z += 6f;
|
rocket.Position.Z += 6f;
|
||||||
rocket.Launch(nearby_position, ScriptFormula(10));
|
rocket.Launch(nearbyPosition, ScriptFormula(10));
|
||||||
rocket.OnCollision = (hit) =>
|
rocket.OnCollision = (hit) =>
|
||||||
{
|
{
|
||||||
SpawnEffect(ActorSno._dh_strafe_sphereexplode, new Vector3D(hit.Position.X, hit.Position.Y, hit.Position.Z + 6f)); // impact effect (fix height)
|
SpawnEffect(ActorSno._dh_strafe_sphereexplode, new Vector3D(hit.Position.X, hit.Position.Y, hit.Position.Z + 6f)); // impact effect (fix height)
|
||||||
|
|||||||
@ -2588,8 +2588,8 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
|||||||
{
|
{
|
||||||
if (Rune_C > 0)
|
if (Rune_C > 0)
|
||||||
{
|
{
|
||||||
int[] Effects = { 47400, 474402, 474435, 474437, 474453, 474455, 474464, 474466 };
|
int[] effects = { 47400, 474402, 474435, 474437, 474453, 474455, 474464, 474466 };
|
||||||
Tar.PlayEffectGroup(Effects[RandomHelper.Next(0, 7)]); // FIXME: looks like we can't pick the last effect
|
Tar.PlayEffectGroup(effects.PickRandom());
|
||||||
yield return WaitSeconds(0.5f);
|
yield return WaitSeconds(0.5f);
|
||||||
WeaponDamage(Tar, Damage, DType);
|
WeaponDamage(Tar, Damage, DType);
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
|
|
||||||
namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
||||||
{
|
{
|
||||||
@ -236,7 +237,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
|||||||
for (int i = 0; i < frogs.Length; ++i)
|
for (int i = 0; i < frogs.Length; ++i)
|
||||||
{
|
{
|
||||||
if (frogs[i] == null) continue;
|
if (frogs[i] == null) continue;
|
||||||
var target = PowerMath.GenerateSpreadPositions(frogs[i].Position, PowerMath.TranslateDirection2D(User.Position, TargetPosition, frogs[i].Position, 10f), 30f, 3)[FastRandom.Instance.Next(0, 3)];
|
var target = PowerMath.GenerateSpreadPositions(frogs[i].Position, PowerMath.TranslateDirection2D(User.Position, TargetPosition, frogs[i].Position, 10f), 30f, 3).PickRandom();
|
||||||
//frogs[i].LaunchArc(new Vector3D(RandomDirection(frogs[i].Position, 5f, 10f)), 3f, -0.03f);
|
//frogs[i].LaunchArc(new Vector3D(RandomDirection(frogs[i].Position, 5f, 10f)), 3f, -0.03f);
|
||||||
frogs[i].LaunchArc(target, 3f, -0.03f);
|
frogs[i].LaunchArc(target, 3f, -0.03f);
|
||||||
}
|
}
|
||||||
@ -1035,7 +1036,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
|||||||
var targets = GetEnemiesInRadius(grenadeN.Position, ScriptFormula(11));
|
var targets = GetEnemiesInRadius(grenadeN.Position, ScriptFormula(11));
|
||||||
if (targets.Actors.Count > 0)
|
if (targets.Actors.Count > 0)
|
||||||
{
|
{
|
||||||
var target = targets.Actors[FastRandom.Instance.Next(0, targets.Actors.Count)];
|
var target = targets.Actors.PickRandom();
|
||||||
|
|
||||||
grenadeN.LaunchArc(PowerMath.TranslateDirection2D(grenadeN.Position, target.Position, grenadeN.Position, PowerMath.Distance2D(grenadeN.Position, target.Position)), height, ScriptFormula(2));
|
grenadeN.LaunchArc(PowerMath.TranslateDirection2D(grenadeN.Position, target.Position, grenadeN.Position, PowerMath.Distance2D(grenadeN.Position, target.Position)), height, ScriptFormula(2));
|
||||||
yield return grenadeN.ArrivalTime;
|
yield return grenadeN.ArrivalTime;
|
||||||
|
|||||||
@ -17,6 +17,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
|
|
||||||
namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
||||||
{
|
{
|
||||||
@ -1270,7 +1271,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
|||||||
SnapFacing = true,
|
SnapFacing = true,
|
||||||
AnimationTag = 69728,
|
AnimationTag = 69728,
|
||||||
});
|
});
|
||||||
TargetPosition = PowerMath.GenerateSpreadPositions(Twister.Position, TargetPosition, 20f, 3)[FastRandom.Instance.Next(0, 3)];
|
TargetPosition = PowerMath.GenerateSpreadPositions(Twister.Position, TargetPosition, 20f, 3).PickRandom();
|
||||||
|
|
||||||
if (Rune_B > 0) //Raging Storm
|
if (Rune_B > 0) //Raging Storm
|
||||||
{
|
{
|
||||||
@ -1299,7 +1300,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
|||||||
SnapFacing = true,
|
SnapFacing = true,
|
||||||
AnimationTag = 69728,
|
AnimationTag = 69728,
|
||||||
});
|
});
|
||||||
TargetPosition = PowerMath.GenerateSpreadPositions(bigTwister.Position, TargetPosition, 20f, 3)[FastRandom.Instance.Next(0, 3)];
|
TargetPosition = PowerMath.GenerateSpreadPositions(bigTwister.Position, TargetPosition, 20f, 3).PickRandom();
|
||||||
WeaponDamage(GetEnemiesInRadius(bigTwister.Position, 12f), bigMultiplier, DamageType.Arcane);
|
WeaponDamage(GetEnemiesInRadius(bigTwister.Position, 12f), bigMultiplier, DamageType.Arcane);
|
||||||
};
|
};
|
||||||
Twister.Destroy();
|
Twister.Destroy();
|
||||||
@ -2816,7 +2817,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
|||||||
if (!(Rune_B > 0 || Rune_C > 0))
|
if (!(Rune_B > 0 || Rune_C > 0))
|
||||||
proj.Destroy();
|
proj.Destroy();
|
||||||
};
|
};
|
||||||
var destination = ((Rune_B > 0 || Rune_C > 0) ? TargetPosition : PowerMath.GenerateSpreadPositions(User.Position, TargetPosition, 5f, 9)[FastRandom.Instance.Next(0, 9)]);
|
var destination = ((Rune_B > 0 || Rune_C > 0) ? TargetPosition : PowerMath.GenerateSpreadPositions(User.Position, TargetPosition, 5f, 9).PickRandom());
|
||||||
proj.Launch(destination, ScriptFormula(6));
|
proj.Launch(destination, ScriptFormula(6));
|
||||||
//WaitSeconds(ScriptFormula(25));
|
//WaitSeconds(ScriptFormula(25));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,7 @@ using DiIiS_NA.GameServer.MessageSystem;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
|
|
||||||
namespace DiIiS_NA.GameServer.GSSystem.QuestSystem
|
namespace DiIiS_NA.GameServer.GSSystem.QuestSystem
|
||||||
{
|
{
|
||||||
@ -380,7 +381,7 @@ namespace DiIiS_NA.GameServer.GSSystem.QuestSystem
|
|||||||
var world = Game.GetWorld(WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large);
|
var world = Game.GetWorld(WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large);
|
||||||
SetActorOperable(world, ActorSno._a2dun_aqd_godhead_door_largepuzzle, false);
|
SetActorOperable(world, ActorSno._a2dun_aqd_godhead_door_largepuzzle, false);
|
||||||
var spots = world.GetActorsBySNO(ActorSno._boxtrigger__one_shot_);
|
var spots = world.GetActorsBySNO(ActorSno._boxtrigger__one_shot_);
|
||||||
world.SpawnMonster(ActorSno._a2dun_aqd_act_lever_facepuzzle_01, spots[FastRandom.Instance.Next(spots.Count)].Position);
|
world.SpawnMonster(ActorSno._a2dun_aqd_act_lever_facepuzzle_01, spots.PickRandom().Position);
|
||||||
ListenInteract(ActorSno._a2dun_aqd_act_lever_facepuzzle_01, 1, new SideAdvance());
|
ListenInteract(ActorSno._a2dun_aqd_act_lever_facepuzzle_01, 1, new SideAdvance());
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@ -460,7 +461,7 @@ namespace DiIiS_NA.GameServer.GSSystem.QuestSystem
|
|||||||
var world = Game.GetWorld(WorldSno.a2dun_aqd_oasis_randomfacepuzzle_small);
|
var world = Game.GetWorld(WorldSno.a2dun_aqd_oasis_randomfacepuzzle_small);
|
||||||
SetActorOperable(world, ActorSno._a2dun_aqd_godhead_door, false);
|
SetActorOperable(world, ActorSno._a2dun_aqd_godhead_door, false);
|
||||||
var spots = world.GetActorsBySNO(ActorSno._boxtrigger__one_shot_);
|
var spots = world.GetActorsBySNO(ActorSno._boxtrigger__one_shot_);
|
||||||
world.SpawnMonster(ActorSno._a2dun_aqd_act_lever_facepuzzle_01, spots[FastRandom.Instance.Next(spots.Count)].Position);
|
world.SpawnMonster(ActorSno._a2dun_aqd_act_lever_facepuzzle_01, spots.PickRandom().Position);
|
||||||
ListenInteract(ActorSno._a2dun_aqd_act_lever_facepuzzle_01, 1, new SideAdvance());
|
ListenInteract(ActorSno._a2dun_aqd_act_lever_facepuzzle_01, 1, new SideAdvance());
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|||||||
@ -7,6 +7,7 @@ using DiIiS_NA.GameServer.MessageSystem;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
using DiIiS_NA.LoginServer.AccountsSystem;
|
using DiIiS_NA.LoginServer.AccountsSystem;
|
||||||
using DiIiS_NA.GameServer.GSSystem.QuestSystem.QuestEvents;
|
using DiIiS_NA.GameServer.GSSystem.QuestSystem.QuestEvents;
|
||||||
using DiIiS_NA.GameServer.Core.Types.Math;
|
using DiIiS_NA.GameServer.Core.Types.Math;
|
||||||
@ -47,10 +48,10 @@ namespace DiIiS_NA.GameServer.GSSystem.QuestSystem.QuestEvents.Implementations
|
|||||||
if (portals.Count == 0) return;
|
if (portals.Count == 0) return;
|
||||||
foreach (var dest in PortalDests)
|
foreach (var dest in PortalDests)
|
||||||
{
|
{
|
||||||
var random_portal = portals[FastRandom.Instance.Next(0, portals.Count - 1)];
|
var randomPortal = portals.PickRandom();
|
||||||
random_portal.Destination = dest;
|
randomPortal.Destination = dest;
|
||||||
//portal.EnterWorld(random_spot);
|
//portal.EnterWorld(random_spot);
|
||||||
portals.Remove(random_portal);
|
portals.Remove(randomPortal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ using DiIiS_NA.GameServer.MessageSystem;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using DiIiS_NA.Core.Extensions;
|
||||||
using DiIiS_NA.LoginServer.AccountsSystem;
|
using DiIiS_NA.LoginServer.AccountsSystem;
|
||||||
using DiIiS_NA.GameServer.GSSystem.QuestSystem.QuestEvents;
|
using DiIiS_NA.GameServer.GSSystem.QuestSystem.QuestEvents;
|
||||||
using DiIiS_NA.GameServer.Core.Types.Math;
|
using DiIiS_NA.GameServer.Core.Types.Math;
|
||||||
@ -56,9 +57,9 @@ namespace DiIiS_NA.GameServer.GSSystem.QuestSystem.QuestEvents.Implementations
|
|||||||
|
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
var rand_pos = ActorsVector3D[FastRandom.Instance.Next(ActorsVector3D.Count)];
|
var randPos = ActorsVector3D.PickRandom();
|
||||||
world.SpawnMonster(ActorSno._ghost_jail_prisoner, rand_pos);
|
world.SpawnMonster(ActorSno._ghost_jail_prisoner, randPos);
|
||||||
ActorsVector3D.Remove(rand_pos);
|
ActorsVector3D.Remove(randPos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -23,7 +23,7 @@ namespace DiIiS_NA.REST.Extensions
|
|||||||
if (instance == null)
|
if (instance == null)
|
||||||
{
|
{
|
||||||
ConstructorInfo constructorInfo = typeof(T).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null);
|
ConstructorInfo constructorInfo = typeof(T).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null);
|
||||||
instance = (T)constructorInfo.Invoke(new object[0]);
|
instance = (T)constructorInfo.Invoke(Array.Empty<object>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
user.block.title