// implements a rudimentary but working stacking penalty.  Currently only penalizes for stacking same item,
// but should penalize for modifying the same attribute, with some exceptions.  These exceptions are why
// it has not been implemented fully, as more data is needed and this is just a proof of concept.
// No module code will have to be changed to implement the fully functional stacking penalty
void ModifyShipAttributesComponent::_modifyShipAttributes(ShipRef ship, uint32 targetAttrID, uint32 sourceAttrID, EVECalculationType type)
{
    //first we must reset the attribute in order to properly recalculate the attribute
    ship->ResetAttribute(targetAttrID, false);

    //recalculate the attribute for the ship with the new modifier
    ship->SetAttribute(targetAttrID, _calculateNewValue(targetAttrID, sourceAttrID, type, m_Ship->GetStackedItems(m_Mod->typeID(), m_Mod->GetModulePowerLevel())));
}