Fixes dupe exception (#258)
- [X] Cleans up ActivatorUtil - [X] Fixes dupe exception - [X] Fixes a bug in BasePotion - [X] Fixes a few possible memory leaks Bumps release version
This commit is contained in:
parent
4d6e584b6c
commit
e9c1e4cbba
66 changed files with 597 additions and 496 deletions
|
|
@ -842,7 +842,7 @@ namespace Server.Items
|
|||
|
||||
try
|
||||
{
|
||||
item = ActivatorUtil.CreateInstance(m_Decorations[random]) as Item;
|
||||
item = m_Decorations[random].CreateInstance<Item>();
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
|
|
|||
|
|
@ -594,7 +594,7 @@ namespace Server.Items
|
|||
{
|
||||
try
|
||||
{
|
||||
var res = (Item)ActivatorUtil.CreateInstance(CraftResources.GetInfo(m_Resource).ResourceTypes[0]);
|
||||
var res = CraftResources.GetInfo(m_Resource).ResourceTypes[0].CreateInstance<Item>();
|
||||
|
||||
ScissorHelper(from, res, PlayerConstructed ? item.Resources[0].Amount / 2 : 1);
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ namespace Server.Items
|
|||
|
||||
var resourceType = info.ResourceTypes?[0] ?? item.Resources[0].ItemType;
|
||||
|
||||
var res = (Item)ActivatorUtil.CreateInstance(resourceType);
|
||||
var res = resourceType.CreateInstance<Item>();
|
||||
|
||||
ScissorHelper(from, res, PlayerConstructed ? item.Resources[0].Amount / 2 : 1);
|
||||
|
||||
|
|
|
|||
|
|
@ -88,8 +88,7 @@ namespace Server.Items
|
|||
_ => 0.0
|
||||
};
|
||||
|
||||
var resourceType = info.ResourceTypes[0];
|
||||
var ingot = (Item)ActivatorUtil.CreateInstance(resourceType);
|
||||
var ingot = info.ResourceTypes[0].CreateInstance<Item>();
|
||||
|
||||
if (item is DragonBardingDeed || item is BaseArmor armor && armor.PlayerConstructed ||
|
||||
item is BaseWeapon weapon && weapon.PlayerConstructed ||
|
||||
|
|
|
|||
|
|
@ -304,7 +304,7 @@ namespace Server.Items
|
|||
|
||||
if (level == 6 && Core.AOS)
|
||||
{
|
||||
cont.DropItem((Item)ActivatorUtil.CreateInstance(Artifacts.RandomElement()));
|
||||
cont.DropItem(Artifacts.RandomElement().CreateInstance<Item>());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -346,7 +346,7 @@ namespace Server.Items
|
|||
|
||||
public Item CreateInstance()
|
||||
{
|
||||
var item = (Item)ActivatorUtil.CreateInstance(Type);
|
||||
var item = Type.CreateInstance<Item>();
|
||||
|
||||
if (Hue > 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -245,7 +245,7 @@ namespace Server.Items
|
|||
|
||||
try
|
||||
{
|
||||
bc = (BaseCreature)ActivatorUtil.CreateInstance(m_SpawnTypes[level].RandomElement());
|
||||
bc = m_SpawnTypes[level].RandomElement().CreateInstance<BaseCreature>();
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
|
|
|||
|
|
@ -174,8 +174,7 @@ namespace Server.Items
|
|||
if (NextSpawn < DateTime.UtcNow)
|
||||
{
|
||||
var map = Map;
|
||||
var bc =
|
||||
(BaseCreature)ActivatorUtil.CreateInstance(Creatures.RandomElement());
|
||||
var bc = Creatures.RandomElement().CreateInstance<BaseCreature>();
|
||||
|
||||
var spawnLoc = GetSpawnPosition();
|
||||
|
||||
|
|
|
|||
|
|
@ -72,8 +72,14 @@ namespace Server.Items
|
|||
bool ICommodity.IsDeedable => Core.ML;
|
||||
|
||||
public int OnCraft(
|
||||
int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool,
|
||||
CraftItem craftItem, int resHue
|
||||
int quality,
|
||||
bool makersMark,
|
||||
Mobile from,
|
||||
CraftSystem craftSystem,
|
||||
Type typeRes,
|
||||
BaseTool tool,
|
||||
CraftItem craftItem,
|
||||
int resHue
|
||||
)
|
||||
{
|
||||
if (craftSystem is DefAlchemy)
|
||||
|
|
@ -151,11 +157,11 @@ namespace Server.Items
|
|||
{
|
||||
if (this is BaseExplosionPotion && Amount > 1)
|
||||
{
|
||||
var pot = (BasePotion)ActivatorUtil.CreateInstance(GetType());
|
||||
var pot = GetType().CreateInstance<BaseExplosionPotion>();
|
||||
|
||||
Amount--;
|
||||
|
||||
if (from.Backpack?.Deleted != false)
|
||||
if (from.Backpack?.Deleted == false)
|
||||
{
|
||||
from.Backpack.DropItem(pot);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ namespace Server.Items
|
|||
{
|
||||
if (weapon.UsesRemaining > 0)
|
||||
{
|
||||
var ammo = ActivatorUtil.CreateInstance(weapon.AmmoType, weapon.UsesRemaining) as Item;
|
||||
var ammo = weapon.AmmoType.CreateInstance<Item>(weapon.UsesRemaining);
|
||||
|
||||
if (ammo is INinjaAmmo ninaAmmo)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -451,18 +451,18 @@ namespace Server.Items
|
|||
|
||||
if (type != null)
|
||||
{
|
||||
object obj;
|
||||
IEntity entity;
|
||||
|
||||
try
|
||||
{
|
||||
obj = ActivatorUtil.CreateInstance(type);
|
||||
entity = type.CreateInstance<IEntity>();
|
||||
}
|
||||
catch
|
||||
{
|
||||
obj = null;
|
||||
entity = null;
|
||||
}
|
||||
|
||||
if (obj is Item item)
|
||||
if (entity is Item item)
|
||||
{
|
||||
var count = 1;
|
||||
|
||||
|
|
@ -492,7 +492,7 @@ namespace Server.Items
|
|||
|
||||
if (i + 1 < count)
|
||||
{
|
||||
item = ActivatorUtil.CreateInstance(type) as Item;
|
||||
item = type.CreateInstance<Item>();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -513,7 +513,7 @@ namespace Server.Items
|
|||
from.SendLocalizedMessage(1074853, m_Summoner.Name.ToString()); // You have been given ~1_name~
|
||||
}
|
||||
}
|
||||
else if (obj is BaseCreature mob)
|
||||
else if (entity is BaseCreature mob)
|
||||
{
|
||||
if (m_Creature?.Deleted == false || from.Followers + mob.ControlSlots > from.FollowersMax)
|
||||
{
|
||||
|
|
@ -536,6 +536,10 @@ namespace Server.Items
|
|||
|
||||
m_Creature = mob;
|
||||
}
|
||||
else
|
||||
{
|
||||
entity?.Delete();
|
||||
}
|
||||
|
||||
OnAfterUse(from);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue