92 lines
2.6 KiB
C#
92 lines
2.6 KiB
C#
#region References
|
|
using System;
|
|
|
|
using Server.Mobiles;
|
|
#endregion
|
|
|
|
namespace Server
|
|
{
|
|
public class OppositionGroup
|
|
{
|
|
private static readonly OppositionGroup m_TerathansAndOphidians = new OppositionGroup(
|
|
new[]
|
|
{
|
|
new[] {typeof(TerathanAvenger), typeof(TerathanDrone), typeof(TerathanMatriarch), typeof(TerathanWarrior)},
|
|
new[]
|
|
{
|
|
typeof(OphidianArchmage), typeof(OphidianKnight), typeof(OphidianMage), typeof(OphidianMatriarch),
|
|
typeof(OphidianWarrior)
|
|
}
|
|
});
|
|
|
|
private static readonly OppositionGroup m_SavagesAndOrcs = new OppositionGroup(
|
|
new[]
|
|
{
|
|
new[]
|
|
{
|
|
typeof(Orc), typeof(OrcBomber), typeof(OrcBrute), typeof(OrcCaptain), typeof(OrcChopper), typeof(OrcishLord),
|
|
typeof(OrcishMage), typeof(OrcScout), typeof(SpawnedOrcishLord)
|
|
},
|
|
new[] {typeof(Savage), typeof(SavageRider), typeof(SavageRidgeback), typeof(SavageShaman)}
|
|
});
|
|
|
|
private static readonly OppositionGroup m_FeyAndUndead = new OppositionGroup(
|
|
new[]
|
|
{
|
|
new[]
|
|
{
|
|
typeof(Centaur), typeof(EtherealWarrior), typeof(Kirin), typeof(LordOaks), typeof(Pixie), typeof(Silvani),
|
|
typeof(Unicorn), typeof(Wisp), typeof(Treefellow), typeof(MLDryad), typeof(Satyr)
|
|
},
|
|
new[]
|
|
{
|
|
typeof(AncientLich), typeof(Bogle), typeof(BoneKnight), typeof(BoneMagi), typeof(DarknightCreeper), typeof(Ghoul),
|
|
typeof(LadyOfTheSnow), typeof(Lich), typeof(LichLord), typeof(Mummy), typeof(RevenantLion), typeof(RottingCorpse),
|
|
typeof(Shade), typeof(ShadowKnight), typeof(SkeletalDragon), typeof(SkeletalDrake), typeof(SkeletalKnight),
|
|
typeof(SkeletalMage), typeof(Skeleton), typeof(Spectre), typeof(Wraith), typeof(Zombie)
|
|
}
|
|
});
|
|
|
|
private readonly Type[][] m_Types;
|
|
|
|
public OppositionGroup(Type[][] types)
|
|
{
|
|
m_Types = types;
|
|
}
|
|
|
|
public static OppositionGroup TerathansAndOphidians { get { return m_TerathansAndOphidians; } }
|
|
public static OppositionGroup SavagesAndOrcs { get { return m_SavagesAndOrcs; } }
|
|
public static OppositionGroup FeyAndUndead { get { return m_FeyAndUndead; } }
|
|
|
|
public bool IsEnemy(object from, object target)
|
|
{
|
|
var fromGroup = IndexOf(from);
|
|
var targGroup = IndexOf(target);
|
|
|
|
return (fromGroup != -1 && targGroup != -1 && fromGroup != targGroup);
|
|
}
|
|
|
|
public int IndexOf(object obj)
|
|
{
|
|
if (obj == null)
|
|
return -1;
|
|
|
|
var type = obj.GetType();
|
|
|
|
for (var i = 0; i < m_Types.Length; ++i)
|
|
{
|
|
var group = m_Types[i];
|
|
|
|
var contains = false;
|
|
|
|
for (var j = 0; !contains && j < group.Length; ++j)
|
|
contains = group[j].IsAssignableFrom(type);
|
|
|
|
if (contains)
|
|
return i;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
}
|
|
} |