126 lines
No EOL
2.8 KiB
C#
126 lines
No EOL
2.8 KiB
C#
using System;
|
|
using Server.Mobiles;
|
|
|
|
namespace Server
|
|
{
|
|
public class OppositionGroup
|
|
{
|
|
private Type[][] m_Types;
|
|
|
|
public OppositionGroup(Type[][] types)
|
|
{
|
|
m_Types = types;
|
|
}
|
|
|
|
public static OppositionGroup TerathansAndOphidians{ get; } = new OppositionGroup(new[]
|
|
{
|
|
new[]
|
|
{
|
|
typeof(TerathanAvenger),
|
|
typeof(TerathanDrone),
|
|
typeof(TerathanMatriarch),
|
|
typeof(TerathanWarrior)
|
|
},
|
|
new[]
|
|
{
|
|
typeof(OphidianArchmage),
|
|
typeof(OphidianKnight),
|
|
typeof(OphidianMage),
|
|
typeof(OphidianMatriarch),
|
|
typeof(OphidianWarrior)
|
|
}
|
|
});
|
|
|
|
public static OppositionGroup SavagesAndOrcs{ get; } = new OppositionGroup(new[]
|
|
{
|
|
new[]
|
|
{
|
|
typeof(Orc),
|
|
typeof(OrcBomber),
|
|
typeof(OrcBrute),
|
|
typeof(OrcCaptain),
|
|
typeof(OrcishLord),
|
|
typeof(OrcishMage),
|
|
typeof(SpawnedOrcishLord)
|
|
},
|
|
new[]
|
|
{
|
|
typeof(Savage),
|
|
typeof(SavageRider),
|
|
typeof(SavageRidgeback),
|
|
typeof(SavageShaman)
|
|
}
|
|
});
|
|
|
|
public static OppositionGroup FeyAndUndead{ get; } = 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(LichLord),
|
|
typeof(Shade),
|
|
typeof(Spectre),
|
|
typeof(Wraith),
|
|
typeof(BoneKnight),
|
|
typeof(Ghoul),
|
|
typeof(Mummy),
|
|
typeof(SkeletalKnight),
|
|
typeof(Skeleton),
|
|
typeof(Zombie),
|
|
typeof(ShadowKnight),
|
|
typeof(DarknightCreeper),
|
|
typeof(RevenantLion),
|
|
typeof(LadyOfTheSnow),
|
|
typeof(RottingCorpse),
|
|
typeof(SkeletalDragon),
|
|
typeof(Lich)
|
|
}
|
|
});
|
|
|
|
public bool IsEnemy(object from, object target)
|
|
{
|
|
int fromGroup = IndexOf(from);
|
|
int targGroup = IndexOf(target);
|
|
|
|
return fromGroup != -1 && targGroup != -1 && fromGroup != targGroup;
|
|
}
|
|
|
|
public int IndexOf(object obj)
|
|
{
|
|
if (obj == null)
|
|
return -1;
|
|
|
|
Type type = obj.GetType();
|
|
|
|
for (int i = 0; i < m_Types.Length; ++i)
|
|
{
|
|
Type[] group = m_Types[i];
|
|
|
|
bool contains = false;
|
|
|
|
for (int j = 0; !contains && j < group.Length; ++j)
|
|
contains = group[j].IsAssignableFrom(type);
|
|
|
|
if (contains)
|
|
return i;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
}
|
|
} |