core(fix): Fixes type aliasing, categorizations, and NPE (#444)

- [X] Fixes lookup of type aliases
- [X] Fixes categorization
- [X] Removes rebuild categorizations
- [X] Fixes an NPE with DoHarmful and Combatant

Closes #441
This commit is contained in:
Kamron Batman 2021-02-03 16:14:04 -08:00 committed by GitHub
parent 24ebdd0f90
commit 5d9ebf062f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 3821 additions and 4881 deletions

View file

@ -261,8 +261,12 @@ namespace Server
{
for (var j = 0; j < alias.Aliases.Length; j++)
{
addToRefs(i, alias.Aliases[j], nameMap);
addToRefs(i, alias.Aliases[j], nameMapInsensitive);
var fullName = alias.Aliases[j];
var name = fullName.Substring(fullName.LastIndexOf('.') + 1);
addToRefs(i, fullName, nameMap);
addToRefs(i, fullName.ToLower(), nameMapInsensitive);
addToRefs(i, name, nameMap);
addToRefs(i, name.ToLower(), nameMapInsensitive);
}
}
}

View file

@ -28,6 +28,13 @@ namespace Server.Json
throw new JsonException("The JSON value could not be converted to System.Type");
}
var typeName = reader.GetString();
var type = AssemblyHandler.FindTypeByName(typeName);
if (type == null)
{
Console.WriteLine("Invalid type {0} deserialized", typeName);
}
return AssemblyHandler.FindTypeByName(reader.GetString());
}

View file

@ -950,7 +950,7 @@ namespace Server
if (m_Combatant == null)
{
m_NetState?.SendChangeCombatant(Serial.Zero);
m_NetState.SendChangeCombatant(Serial.Zero);
m_ExpireCombatant?.Stop();
m_CombatTimer?.Stop();
@ -959,7 +959,7 @@ namespace Server
}
else
{
m_NetState?.SendChangeCombatant(m_Combatant.Serial);
m_NetState.SendChangeCombatant(m_Combatant.Serial);
m_ExpireCombatant ??= Timer.DelayCall(ExpireCombatantDelay, ExpireCombatant);
m_ExpireCombatant.Start();
@ -968,8 +968,8 @@ namespace Server
if (CanBeHarmful(m_Combatant, false))
{
DoHarmful(m_Combatant);
m_Combatant.PlaySound(m_Combatant.GetAngerSound());
DoHarmful(m_Combatant); // due to reflection, might make m_Combatant null
m_Combatant?.PlaySound(m_Combatant.GetAngerSound());
}
}
@ -8618,12 +8618,7 @@ namespace Server
}
}
public virtual void DoHarmful(Mobile target)
{
DoHarmful(target, false);
}
public virtual void DoHarmful(Mobile target, bool indirect)
public virtual void DoHarmful(Mobile target, bool indirect = false)
{
if (target == null || Deleted)
{