in rtfm/dynamics/item/armour/base_armour.py [0:0]
def get_random(cls, p_prefix=0.5, p_suffix=0.5, p_erosion=0.5):
candidate_classes = [c for c in cls.get_all_subclasses(cls) if not c.__name__.startswith('Base')]
C = random.choice(candidate_classes)
inst = C()
candidate_modifier_classes = [c for c in cls.get_all_subclasses(O.BaseArmourModifier) if not c.__name__.startswith('Base')]
candidate_suffix_classes = [c for c in candidate_modifier_classes if issubclass(c, O.BaseSuffixModifier)]
candidate_prefix_classes = [c for c in candidate_modifier_classes if issubclass(c, O.BasePrefixModifier)]
if inst.material.erosion and random.random() < p_erosion:
erosion_base = random.choice(list(inst.material.erosion))
candidate_erosion_classes = cls.get_all_subclasses(erosion_base)
erosion = random.choice(candidate_erosion_classes)
inst.add_erosion(erosion)
if random.random() < p_suffix:
suffix = random.choice(candidate_suffix_classes)
inst.add_suffix(suffix)
for i in range(cls.max_prefix):
if random.random() < p_prefix:
prefix = random.choice(candidate_prefix_classes)
inst.add_prefix(prefix)
return inst