BFA Update (still lots of testing to do tho)
This commit is contained in:
@@ -28,10 +28,7 @@ namespace Game.Entities
|
||||
public uint Entry;
|
||||
public uint[] DifficultyEntry = new uint[SharedConst.MaxCreatureDifficulties];
|
||||
public uint[] KillCredit = new uint[SharedConst.MaxCreatureKillCredit];
|
||||
public uint ModelId1;
|
||||
public uint ModelId2;
|
||||
public uint ModelId3;
|
||||
public uint ModelId4;
|
||||
public List<CreatureModel> Models = new List<CreatureModel>();
|
||||
public string Name;
|
||||
public string FemaleName;
|
||||
public string SubName;
|
||||
@@ -91,75 +88,67 @@ namespace Game.Entities
|
||||
public CreatureFlagsExtra FlagsExtra;
|
||||
public uint ScriptID;
|
||||
|
||||
public uint GetRandomValidModelId()
|
||||
public CreatureModel GetModelByIdx(int idx)
|
||||
{
|
||||
byte c = 0;
|
||||
uint[] modelIDs = new uint[4];
|
||||
|
||||
if (ModelId1 != 0)
|
||||
modelIDs[c++] = ModelId1;
|
||||
if (ModelId2 != 0)
|
||||
modelIDs[c++] = ModelId2;
|
||||
if (ModelId3 != 0)
|
||||
modelIDs[c++] = ModelId3;
|
||||
if (ModelId4 != 0)
|
||||
modelIDs[c++] = ModelId4;
|
||||
|
||||
return c > 0 ? modelIDs[RandomHelper.IRand(0, c - 1)] : 0;
|
||||
}
|
||||
public uint GetFirstValidModelId()
|
||||
{
|
||||
if (ModelId1 != 0)
|
||||
return ModelId1;
|
||||
if (ModelId2 != 0)
|
||||
return ModelId2;
|
||||
if (ModelId3 != 0)
|
||||
return ModelId3;
|
||||
if (ModelId4 != 0)
|
||||
return ModelId4;
|
||||
return 0;
|
||||
return idx < Models.Count ? Models[idx] : null;
|
||||
}
|
||||
|
||||
public uint GetFirstInvisibleModel()
|
||||
public CreatureModel GetRandomValidModel()
|
||||
{
|
||||
CreatureModelInfo modelInfo = Global.ObjectMgr.GetCreatureModelInfo(ModelId1);
|
||||
if (modelInfo != null && modelInfo.IsTrigger)
|
||||
return ModelId1;
|
||||
if (Models.Empty())
|
||||
return null;
|
||||
|
||||
modelInfo = Global.ObjectMgr.GetCreatureModelInfo(ModelId2);
|
||||
if (modelInfo != null && modelInfo.IsTrigger)
|
||||
return ModelId2;
|
||||
// If only one element, ignore the Probability (even if 0)
|
||||
if (Models.Count == 1)
|
||||
return Models[0];
|
||||
|
||||
modelInfo = Global.ObjectMgr.GetCreatureModelInfo(ModelId3);
|
||||
if (modelInfo != null && modelInfo.IsTrigger)
|
||||
return ModelId3;
|
||||
var selectedItr = Models.SelectRandomElementByWeight(model =>
|
||||
{
|
||||
return model.Probability;
|
||||
});
|
||||
|
||||
modelInfo = Global.ObjectMgr.GetCreatureModelInfo(ModelId4);
|
||||
if (modelInfo != null && modelInfo.IsTrigger)
|
||||
return ModelId4;
|
||||
return selectedItr;
|
||||
}
|
||||
public CreatureModel GetFirstValidModel()
|
||||
{
|
||||
foreach (CreatureModel model in Models)
|
||||
if (model.CreatureDisplayID != 0)
|
||||
return model;
|
||||
|
||||
return 11686;
|
||||
return null;
|
||||
}
|
||||
|
||||
public uint GetFirstVisibleModel()
|
||||
public CreatureModel GetModelWithDisplayId(uint displayId)
|
||||
{
|
||||
CreatureModelInfo modelInfo = Global.ObjectMgr.GetCreatureModelInfo(ModelId1);
|
||||
if (modelInfo != null && !modelInfo.IsTrigger)
|
||||
return ModelId1;
|
||||
foreach (CreatureModel model in Models)
|
||||
if (displayId == model.CreatureDisplayID)
|
||||
return model;
|
||||
|
||||
modelInfo = Global.ObjectMgr.GetCreatureModelInfo(ModelId2);
|
||||
if (modelInfo != null && !modelInfo.IsTrigger)
|
||||
return ModelId2;
|
||||
return null;
|
||||
}
|
||||
|
||||
modelInfo = Global.ObjectMgr.GetCreatureModelInfo(ModelId3);
|
||||
if (modelInfo != null && !modelInfo.IsTrigger)
|
||||
return ModelId3;
|
||||
public CreatureModel GetFirstInvisibleModel()
|
||||
{
|
||||
foreach (CreatureModel model in Models)
|
||||
{
|
||||
CreatureModelInfo modelInfo = Global.ObjectMgr.GetCreatureModelInfo(model.CreatureDisplayID);
|
||||
if (modelInfo != null && modelInfo.IsTrigger)
|
||||
return model;
|
||||
}
|
||||
|
||||
modelInfo = Global.ObjectMgr.GetCreatureModelInfo(ModelId4);
|
||||
if (modelInfo != null && !modelInfo.IsTrigger)
|
||||
return ModelId4;
|
||||
return CreatureModel.DefaultInvisibleModel;
|
||||
}
|
||||
|
||||
return 17519;
|
||||
public CreatureModel GetFirstVisibleModel()
|
||||
{
|
||||
foreach (CreatureModel model in Models)
|
||||
{
|
||||
CreatureModelInfo modelInfo = Global.ObjectMgr.GetCreatureModelInfo(model.CreatureDisplayID);
|
||||
if (modelInfo != null && !modelInfo.IsTrigger)
|
||||
return model;
|
||||
}
|
||||
|
||||
return CreatureModel.DefaultVisibleModel;
|
||||
}
|
||||
|
||||
public SkillType GetRequiredLootSkill()
|
||||
@@ -314,6 +303,24 @@ namespace Game.Entities
|
||||
public bool IsTrigger;
|
||||
}
|
||||
|
||||
public class CreatureModel
|
||||
{
|
||||
public static CreatureModel DefaultInvisibleModel = new CreatureModel(11686, 1.0f, 1.0f);
|
||||
public static CreatureModel DefaultVisibleModel = new CreatureModel(17519, 1.0f, 1.0f);
|
||||
|
||||
public uint CreatureDisplayID;
|
||||
public float DisplayScale;
|
||||
public float Probability;
|
||||
|
||||
public CreatureModel() { }
|
||||
public CreatureModel(uint creatureDisplayID, float displayScale, float probability)
|
||||
{
|
||||
CreatureDisplayID = creatureDisplayID;
|
||||
DisplayScale = displayScale;
|
||||
Probability = probability;
|
||||
}
|
||||
}
|
||||
|
||||
public class CreatureAddon
|
||||
{
|
||||
public uint path_id;
|
||||
|
||||
Reference in New Issue
Block a user