private int CalculateArmorVarEquipId(ModelPart modelPart, int actorVal)
{
if (actorVal == 0) { return 0; }
int subModelId = actorVal >> 10;
int texture = (actorVal >> 5) & 0x1F;
int variation = actorVal & 0x1F;
int varEquipId = 0;
var modelType = (DatDigger.Xml.Format.ModelType)(this.BaseModel / 10000);
switch (modelType)
{
case DatDigger.Xml.Format.ModelType.Monster:
varEquipId += 1000000000;
varEquipId += this.BaseModelFolder * 1000000;
varEquipId += subModelId * 1000;
varEquipId += texture * 10;
varEquipId += variation;
switch (modelPart)
{
case ModelPart.Top:
varEquipId += 0;
break;
case ModelPart.Dwn:
varEquipId += 200;
break;
case ModelPart.Glv:
varEquipId += 300;
break;
case ModelPart.Sho:
varEquipId += 400;
break;
case ModelPart.Met:
varEquipId += 600;
break;
default:
throw new System.InvalidOperationException("Unexpected Model Part " + modelPart);
}
break;
case DatDigger.Xml.Format.ModelType.PC:
varEquipId = 100000000;
varEquipId += subModelId * 100000;
varEquipId += texture * 100;
varEquipId += variation;
switch (modelPart)
{
case ModelPart.Top:
varEquipId += 10000;
break;
case ModelPart.Dwn:
varEquipId += 20000;
break;
case ModelPart.Glv:
varEquipId += 30000;
break;
case ModelPart.Sho:
varEquipId += 40000;
break;
case ModelPart.Met:
varEquipId += 60000;
break;
default:
throw new System.InvalidOperationException("Unexpected Model Part " + modelPart);
}
break;
case DatDigger.Xml.Format.ModelType.BgObject:
case DatDigger.Xml.Format.ModelType.Weapon:
varEquipId = 0;
break;
default:
throw new InvalidOperationException("Unknown Model Type: " + modelType);
}
return varEquipId;
}