Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $data_path = "./data/";
- $data_ext = ".csv";
- $data["character_names"] = $data_path . "character_names" . $data_ext;
- $data["city_names"] = $data_path . "city_names" . $data_ext;
- $data["tavern_names"] = $data_path . "tavern_names" . $data_ext;
- $data["character_motivations"] = $data_path . "character_motivations" . $data_ext;
- $data["character_professions"] = $data_path . "character_professions" . $data_ext;
- $data["character_adjectives"] = $data_path . "character_adjectives" . $data_ext;
- $data["menu"] = $data_path . "menu" . $data_ext;
- function get_list($dataset, $search) {
- // this function will get a list of all rows containing $search from the given dataset.
- $dataset = fopen($dataset, "r");
- // first get headings
- $keys = fgetcsv($dataset, 0, "\t", '"');
- // then build an assoc array using the headings as keys.
- while (!feof($dataset)) {
- $csvLine = fgetcsv($dataset, 0, "\t", '"');
- if ($csvLine !== false) {
- $list[] = array_combine($keys, $csvLine);
- }
- }
- $relevant_list = array();
- // loop through list finding relevant matches
- foreach($search as $search_key=>$search_tag) {
- foreach($list as $list_item) {
- if (isset($list_item[$search_key])) {
- // if a field has multiple comma delimited entries, deal with them first
- if (strpos($list_item[$search_key], ',')) {
- $list_item_split = str_replace($list_item[$search_key], ', ', ',');
- $list_item_split = explode(',', $list_item[$search_key]);
- foreach ($list_item_split as $item) {
- $item = strtolower(trim($item));
- if ($item == $search_tag) {
- $relevant_list[] = $list_item;
- }
- }
- } else {
- $item = strtolower(trim($list_item[$search_key]));
- if ($item == $search_tag) {
- $relevant_list[] = $list_item;
- }
- }
- }
- }
- $list = $relevant_list;
- $relevant_list = "";
- }
- return $list;
- }
- function get_rand($dataset, $search) {
- // this function returns a random item from a list.
- $list = get_list($dataset, $search);
- foreach($list as $item) {
- $new_list[] = $item['main_content'];
- }
- srand(make_seed());
- return $new_list[array_rand($new_list)];
- }
- function odds($val) {
- srand(make_seed());
- return rand(0, 100)<$val;
- }
- function multi_append(&$arr, $val, $num) {
- for ($i=0; $i<$num; $i++) {
- array_push($arr, $val);
- }
- return $arr;
- }
- function make_seed()
- {
- list($usec, $sec) = explode(' ', microtime());
- return $sec + $usec * 1000000;
- }
- function generate_settlement_name($search, $json) {
- global $data;
- $search_tags['type'] = 'description';
- $prefix = get_rand($data["city_names"], $search_tags);
- $search_tags = array('type'=>'feature');
- if ($search != "any") { $search_tags['subtype'] = $search; }
- $suffix = get_rand($data["city_names"], $search_tags);
- if ($json == true) {
- $res = array("settlement_name" => $prefix.$suffix);
- return json_encode($res);
- }
- else { return $prefix.$suffix; }
- }
- function generate_drink() {
- global $data;
- $search_tags['type'] = 'drink type';
- $drink_type = get_rand($data["menu"], $search_tags);
- $search_tags['type'] = 'drink flavor';
- $drink_flavor = get_rand($data["menu"], $search_tags);
- $res = array("drink" => "$drink_flavor $drink_type");
- return json_encode($res);
- }
- function generate_meal($quality) {
- global $data;
- //if ($quality != "any") $search_tags['quality'] = $quality;
- $search_tags['type'] = "main";
- $main = get_rand($data["menu"], $search_tags);
- $search_tags['type'] = "side";
- $side = get_rand($data["menu"], $search_tags);
- $search_tags['type'] = "dessert type";
- $dessert_type = get_rand($data["menu"], $search_tags);
- $search_tags['type'] = "dessert flavor";
- $dessert_flavor = get_rand($data["menu"], $search_tags);
- $search_tags['type'] = "dessert oneword";
- $dessert_oneword = get_rand($data["menu"], $search_tags);
- if (odds(50)) { $dessert = $dessert_oneword; }
- else { $dessert = $dessert_flavor." ".$dessert_type;}
- $res = array("main" => $main, "side" => $side, "dessert" => $dessert, "quality" => $quality);
- return json_encode($res);
- }
- function generate_character_motivation() {
- global $data;
- if (odds(80)) { $search_tags['type'] = 'simple'; }
- else { $search_tags['type'] = 'complex'; }
- return get_rand($data["character_motivations"], $search_tags);
- }
- function generate_character_adjective() {
- global $data;
- $search_tags = array();
- return get_rand($data["character_adjectives"], $search_tags);
- }
- function generate_character_profession() {
- global $data;
- $search_tags = array();
- return get_rand($data["character_professions"], $search_tags);
- }
- function generate_settlement_type() {
- $types = array("hamlet", "village", "town", "city", "capital city");
- shuffle($types);
- $res = array("settlement_type" => $types[0]);
- return json_encode($res);
- }
- function generate_race() {
- $races = array("human", "dwarf", "elf", "halfling", "gnome", "half-orc");
- shuffle($races);
- return $races[0];
- }
- function generate_tavern_name() {
- global $data;
- $search_tags['type'] = 'style';
- $style = ucfirst(get_rand($data["tavern_names"], $search_tags));
- $search_tags['type'] = 'descriptor';
- $descriptor = ucfirst(get_rand($data["tavern_names"], $search_tags));
- $search_tags['type'] = 'subject';
- $subject = ucfirst(get_rand($data["tavern_names"], $search_tags));
- $subject2 = ucfirst(get_rand($data["tavern_names"], $search_tags));
- $owner = generate_character(generate_race(), "any", false);
- $owner = explode(" ", $owner);
- $first = $owner[0];
- $taverns = array();
- multi_append($taverns, "The $descriptor $subject", 10);
- multi_append($taverns, "The $descriptor $subject $style", 10);
- multi_append($taverns, "The $style of the $descriptor $subject", 10);
- multi_append($taverns, "The $subject and the $subject2", 10);
- multi_append($taverns, "The $subject and the $descriptor $subject2", 10);
- multi_append($taverns, "$first"."'s $style", 10);
- multi_append($taverns, "$first"."'s $descriptor $subject", 10);
- srand(make_seed());
- shuffle($taverns);
- $res = array("tavern_name" => $taverns[0]);
- return json_encode($res);
- }
- function generate_character($race, $gender, $json) {
- global $data;
- if ($race == "any") {
- $race_list = array("human", "dwarf", "elf", "halfling", "gnome", "orc");
- $race = $race_list[array_rand($race_list)];
- }
- $search_tags = array('race'=>$race);
- if ($gender != "any") {$search_tags['gender'] = $gender;}
- # dwarf
- if ($race == "dwarf") {
- $search_tags['type'] = "given";
- $search_tags['part'] = "prefix";
- $given_prefix = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "given";
- $search_tags['part'] = "suffix";
- $given_suffix = get_rand($data["character_names"], $search_tags);
- $search_tags['type'] = "byname";
- $search_tags['part'] = "full";
- $byname_full = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "description";
- $byname_description = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "thing";
- $byname_thing = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "family";
- $search_tags['part'] = "prefix";
- $family_prefix = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "family";
- $search_tags['part'] = "suffix";
- $family_suffix = get_rand($data["character_names"], $search_tags);
- $homeland = ucfirst(generate_settlement_name("relief", false));
- $given = $given_prefix.$given_suffix;
- $family = $family_prefix.$family_suffix;
- $bynames = array("the ".$byname_full, "the ".$byname_description." ".$byname_thing);
- srand(make_seed());
- shuffle($bynames);
- $byname = $bynames[0];
- $names = array();
- //multi_append ($names, $given." ".$family, 100);
- $simple_name = $given." ".$family;
- multi_append ($names, $given." of clan ".$family, 20);
- multi_append ($names, $given." ".$family." of ".$homeland, 20);
- multi_append ($names, $given." ".$byname, 5);
- multi_append ($names, $given." ".$family." ".$byname, 10);
- multi_append ($names, $given." ".$byname." of clan ".$family, 5);
- multi_append ($names, $given." ".$byname." of ".$homeland, 10);
- srand(make_seed());
- shuffle($names);
- $name = $names[0];
- }
- if ($race == "elf") {
- $search_tags['type'] = "given";
- $search_tags['part'] = "prefix";
- $given_prefix = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "given";
- $search_tags['part'] = "suffix";
- $given_suffix = get_rand($data["character_names"], $search_tags);
- $search_tags['type'] = "byname";
- $search_tags['part'] = "full";
- $byname_full = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "description";
- $byname_description = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "thing";
- $byname_thing = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "family";
- $search_tags['part'] = "prefix";
- $family_prefix = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "family";
- $search_tags['part'] = "suffix";
- $family_suffix = get_rand($data["character_names"], $search_tags);
- $homeland = ucfirst(generate_settlement_name("vegetation", false));
- $given = $given_prefix.$given_suffix;
- $family = $family_prefix.$family_suffix;
- $bynames = array("the ".$byname_full, "the ".$byname_description." ".$byname_thing);
- srand(make_seed());
- shuffle($bynames);
- $byname = $bynames[0];
- $names = array();
- //multi_append ($names, $given." ".$family, 60);
- $simple_name = $given." ".$family;
- multi_append ($names, $given." ".$family." of the ".$homeland, 20);
- multi_append ($names, $given." ".$family." of ".$homeland, 20);
- multi_append ($names, $given." ".$byname, 5);
- multi_append ($names, $given." ".$family." ".$byname, 10);
- multi_append ($names, $given." ".$byname." of the ".$homeland, 10);
- multi_append ($names, $given." ".$byname." of ".$homeland, 10);
- srand(make_seed());
- shuffle($names);
- $name = $names[0];
- }
- if ($race == "human") {
- $search_tags['type'] = "given";
- $search_tags['part'] = "prefix";
- $given_prefix = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "full";
- $byname_full = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "description";
- $byname_description = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "thing";
- $byname_thing = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "family";
- $search_tags['part'] = "prefix";
- $family_prefix = ucfirst(get_rand($data["character_names"], $search_tags));
- $homeland = ucfirst(generate_settlement_name("vegetation", false));
- $given = $given_prefix;
- $family = $family_prefix;
- $bynames = array("the ".$byname_full, "the ".$byname_description." ".$byname_thing);
- srand(make_seed());
- shuffle($bynames);
- $byname = $bynames[0];
- $names = array();
- //multi_append ($names, $given." ".$family, 60);
- $simple_name = $given." ".$family;
- multi_append ($names, $given." ".$family." of the ".$homeland, 20);
- multi_append ($names, $given." ".$family." of ".$homeland, 20);
- multi_append ($names, $given." ".$byname, 5);
- multi_append ($names, $given." ".$family." ".$byname, 10);
- multi_append ($names, $given." ".$byname." of the ".$homeland, 10);
- multi_append ($names, $given." ".$byname." of ".$homeland, 10);
- multi_append ($names, $given." ".$family." of the tribe of ".$byname, 5);
- srand(make_seed());
- shuffle($names);
- $name = $names[0];
- }
- if ($race == "halfling") {
- $search_tags['type'] = "given";
- $search_tags['part'] = "prefix";
- $given_prefix = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "full";
- $byname_full = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "description";
- $byname_description = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "thing";
- $byname_thing = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "family";
- $search_tags['part'] = "prefix";
- $family_prefix = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "family";
- $search_tags['part'] = "suffix";
- $family_suffix = get_rand($data["character_names"], $search_tags);
- $homeland = ucfirst(generate_settlement_name("vegetation", false));
- $given = $given_prefix;
- $family = $family_prefix.$family_suffix;
- $bynames = array("the ".$byname_full, "the ".$byname_description." ".$byname_thing);
- srand(make_seed());
- shuffle($bynames);
- $byname = $bynames[0];
- $names = array();
- //multi_append ($names, $given." ".$family, 100);
- $simple_name = $given." ".$family;
- multi_append ($names, $given." ".$family." of the ".$homeland, 20);
- multi_append ($names, $given." ".$family." of ".$homeland, 20);
- multi_append ($names, $given." ".$byname, 5);
- multi_append ($names, $given." ".$family." ".$byname, 5);
- multi_append ($names, $given." ".$byname." of the ".$homeland, 5);
- multi_append ($names, $given." ".$byname." of ".$homeland, 5);
- srand(make_seed());
- shuffle($names);
- $name = $names[0];
- }
- if ($race == "gnome") {
- $search_tags['type'] = "given";
- $search_tags['part'] = "prefix";
- $given_prefix = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "given";
- $search_tags['part'] = "suffix";
- $given_suffix = get_rand($data["character_names"], $search_tags);
- $search_tags['type'] = "byname";
- $search_tags['part'] = "full";
- $byname_full = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "description";
- $byname_description = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "thing";
- $byname_thing = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "family";
- $search_tags['part'] = "prefix";
- $family_prefix = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "family";
- $search_tags['part'] = "suffix";
- $family_suffix = get_rand($data["character_names"], $search_tags);
- $homeland = ucfirst(generate_settlement_name("relief", false));
- $given = $given_prefix.$given_suffix;
- $family = $family_prefix.$family_suffix;
- $bynames = array("the ".$byname_full, "the ".$byname_description." ".$byname_thing);
- srand(make_seed());
- shuffle($bynames);
- $byname = $bynames[0];
- $names = array();
- //multi_append ($names, $given." ".$family, 100);
- $simple_name = $given." ".$family;
- multi_append ($names, $given." ".$family." of the ".$homeland, 20);
- multi_append ($names, $given." ".$family." of ".$homeland, 20);
- multi_append ($names, $given." ".$byname, 5);
- multi_append ($names, $given." ".$family." ".$byname, 10);
- multi_append ($names, $given." ".$byname." of the ".$homeland, 10);
- multi_append ($names, $given." ".$byname." of ".$homeland, 10);
- multi_append ($names, $given." ".$family." of the tribe of ".$byname, 5);
- srand(make_seed());
- shuffle($names);
- $name = $names[0];
- }
- if ($race == "half-orc") {
- $search_tags['type'] = "given";
- $search_tags['part'] = "prefix";
- $given_prefix = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "given";
- $search_tags['part'] = "suffix";
- $given_suffix = get_rand($data["character_names"], $search_tags);
- $search_tags['type'] = "byname";
- $search_tags['part'] = "full";
- $byname_full = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "description";
- $byname_description = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "byname";
- $search_tags['part'] = "thing";
- $byname_thing = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "family";
- $search_tags['part'] = "prefix";
- $family_prefix = ucfirst(get_rand($data["character_names"], $search_tags));
- $search_tags['type'] = "family";
- $search_tags['part'] = "suffix";
- $family_suffix = get_rand($data["character_names"], $search_tags);
- $homeland = ucfirst(generate_settlement_name("any", false));
- $given = $given_prefix.$given_suffix;
- $family = $family_prefix.$family_suffix;
- $bynames = array("the ".$byname_full, "the ".$byname_description." ".$byname_thing);
- srand(make_seed());
- shuffle($bynames);
- $byname = $bynames[0];
- $names = array();
- //multi_append ($names, $given." ".$family, 50);
- $simple_name = $given." ".$family;
- multi_append ($names, $given." ".$family." of the ".$homeland, 20);
- multi_append ($names, $given." ".$family." of ".$homeland, 20);
- multi_append ($names, $given." ".$byname, 50);
- multi_append ($names, $given." ".$family." ".$byname, 50);
- multi_append ($names, $given." ".$byname." of the ".$homeland, 40);
- multi_append ($names, $given." ".$byname." of ".$homeland, 30);
- multi_append ($names, $given." ".$family." of the tribe of ".$byname, 10);
- multi_append ($names, $given." ".$family." of the clan of ".$byname, 10);
- srand(make_seed());
- shuffle($names);
- $name = $names[0];
- }
- $minage = 1000; $maxage = 3000;
- switch ($race) {
- case "dwarf":
- $minage = 50; $maxage = 300;
- break;
- case "elf":
- $minage = 100; $maxage = 700;
- break;
- case "human":
- $minage = 17; $maxage = 80;
- break;
- case "halfling":
- $minage = 20; $maxage = 220;
- break;
- case "gnome":
- $minage = 40; $maxage = 350;
- break;
- case "half-orc":
- $minage = 14; $maxage = 70;
- break;
- }
- srand(make_seed());
- $age = rand($minage, $maxage);
- $motivation = generate_character_motivation();
- if ($json) {
- $res = array("name" => $simple_name, "title" => $name, "gender" => $gender, "race" => $race, "byname" => $byname, "homeland" => $homeland, "age" => $age, "motivation" => $motivation);
- return json_encode($res);
- }
- else { return $simple_name; }
- }
- if (!isset($_GET["g"])) { echo "Please use the provided generator page."; exit();}
- if ($_GET["g"] == "tavern") {
- $response = generate_tavern_name();
- }
- if ($_GET["g"] == "character") {
- if (isset($_GET["race"])) { $race = $_GET["race"]; }
- else $race = generate_race();
- if (isset($_GET["gender"])) { $gender = $_GET["gender"]; }
- else $gender = "any";
- $response = generate_character($race, $gender, true);
- }
- if ($_GET["g"] == "place") {
- if (isset($_GET["s"])) { $search = $_GET["s"]; }
- else {$search = "any"; }
- $response = generate_settlement_name($search, true);
- }
- if ($_GET["g"] == "drink") {
- $response = generate_drink();
- }
- if ($_GET["g"] == "meal") {
- if (isset($_GET["quality"])) { $quality = $_GET["quality"]; }
- else {$quality = "common";}
- $response = generate_meal($quality);
- }
- echo $response;
- exit();
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement