Enchantment EnchantmentDesc::generate(id_t equipment_id, Generated const& gen) const { RNG rng = noise_coord(math::vec<2,noise_coord_t>({equipment_id,gen.gen_id()})); QDValue qd; Attributes base(m_attributes.base); for(unsigned i = rlrpgenumcount(Attr); i--;) base.flat[i] += rng.roll_dice(m_attributes.range.flat[i] +1); for(unsigned i = rlrpgenumcount(Attr); i--;) base.relative[i] += rng.roll_dice(m_attributes.range.relative[i] +1); return Enchantment( gen, qd, equipment_id, m_id, base); }