underworld_core 0.6.3

Small library to either play a game or assist in generating rooms
Documentation
use rand::Rng;

use crate::utils::rolls::roll_percent_succeeds;

const CHANCE_UNNAMED: i32 = 10;

pub fn generate_name() -> Option<String> {
    let mut rng = rand::thread_rng();
    if roll_percent_succeeds(&mut rng, CHANCE_UNNAMED) {
        return None;
    }

    let num_parts: usize = rng.gen_range(1..=3);

    let mut all_name_parts = name_parts();
    let name_parts: Vec<&str> = (0..num_parts)
        .map(|_| {
            let index = rng.gen_range(0..all_name_parts.len());
            all_name_parts.remove(index)
        })
        .collect();

    Some(name_parts.join(""))
}

fn name_parts() -> Vec<&'static str> {
    vec![
        "gon", "gro", "grub", "num", "gorg", "zerg", "and", "por", "mer", "mog", "og", "zola",
        "mar", "ar", "la", "zo", "mank", "mang", "grap", "log", "lorg", "glor", "bor", "bob",
        "plo", "nor", "norn", "mac", "oor", "onk", "rok", "ron", "car", "toe", "pan", "flick",
        "lerg", "wod", "saw", "grum", "crum", "rin", "bal", "rog",
    ]
}