How can I add new attributes to the metals?
I want to add things like Mage Armor to any armour made from Valorite, etc those sorts of additions. How can I do it?
I've been trying for ages and still haven't been able to do it.
you can add your custom attributes in oreinfo.cs in the CraftAttributeInfo class that specifies what attributes are available and which are added for particular materials, but this doesnt automatically cause those attributes to be applied.
If you want armor to actually give attribute bonuses, then you have to explicitly add checks for the resource attributes in the appropriate scripts.
For example, resist bonuses are added in basearmor.cs like this
CODE |
public override int PhysicalResistance{ get{ return BasePhysicalResistance + GetProtOffset() + GetResourceAttrs().ArmorPhysicalResist + m_PhysicalBonus; } }
|
and armor durability bonuses are added like this
CODE |
public int GetDurabilityBonus() { int bonus = 0;
if ( m_Quality == ArmorQuality.Exceptional ) bonus += 20;
switch ( m_Durability ) { case ArmorDurabilityLevel.Durable: bonus += 20; break; case ArmorDurabilityLevel.Substantial: bonus += 50; break; case ArmorDurabilityLevel.Massive: bonus += 70; break; case ArmorDurabilityLevel.Fortified: bonus += 100; break; case ArmorDurabilityLevel.Indestructible: bonus += 120; break; }
if ( Core.AOS ) { bonus += m_AosArmorAttributes.DurabilityBonus;
CraftResourceInfo resInfo = CraftResources.GetInfo( m_Resource ); CraftAttributeInfo attrInfo = null;
if ( resInfo != null ) attrInfo = resInfo.AttributeInfo;
if ( attrInfo != null ) bonus += attrInfo.ArmorDurability; }
return bonus; }
|
so the bottom line is that after making the mods to oreinfo.cs to add your custom attributes, the additional mods that you would need to add to cause them to take effect would depend on what those attributes were and where they are normally used.
Ah ok, well I tried adding the MageArmor to crafting.
I added this to BaseArmor.cs
CODE |
//Added Bonuses public int GetMageArmorBonus() { int bonus = 0;
bonus += m_AosArmorAttributes.MageArmor;
CraftResourceInfo resInfo = CraftResources.GetInfo( m_Resource ); CraftAttributeInfo attrInfo = null;
if ( resInfo != null ) attrInfo = resInfo.AttributeInfo;
if ( attrInfo != null ) bonus += attrInfo.MageArmor;
return bonus; } //End
|
And these lines to OreInfo.cs
CODE |
private int m_MageArmor;
public int MageArmor{ get{ return m_MageArmor; } set{ m_MageArmor = value; } }
golden.MageArmor = 1;
|
However, if I make some amrour out of gold it still doesn't seem to have Mage Armor.
there isnt anything that calls GetMageArmorBonus by default. I assume that you just added that method.
You would need to add calls to that in scripts that currently just look at the MageArmor attribute, like in the armor GetProperties call
CODE |
if ( (prop = m_AosArmorAttributes.MageArmor) != 0 ) list.Add( 1060437 ); // mage armor
|
if that isnt changed, then it will continue to just display the base MageArmor attribute and will not reflect the resource bonus.
So if you changed it there, you would be able to see the resource bonus, but you would still have to find all of the places where it referred to the MageArmor attribute and change them to use your new bonus call.