Index: botsoc.scm ================================================================== --- botsoc.scm +++ botsoc.scm @@ -71,11 +71,11 @@ ("teenage") ("Lacanian") ("intersectional")) (rule (trait) ("power") ("influence") ("wealth") ("solidarity") ("hope") ("conviction") ("autonomy") ("freedom") - ("liberty") ("faith")) + ("liberty") ("faith") ("humanity") ("sapience")) (rule (necessity) ("sex") ("water") ("food") ("money") ("wealth") ("income") ("welfare") ("tea") ("therapy") ("pain relief") ("medical care") Index: bottist.ml ================================================================== --- bottist.ml +++ bottist.ml @@ -1,18 +1,24 @@ let adjs = [| "queer"; "electric"; "space"; "super"; "discount"; "extreme"; "far-left"; - "far-right"; "unreconstructed"; "modern"; "eternal"; "original"; "historical"; "tankie"; "mystical"; "arcane"; "catholic"; "protestant"; "irish"; "dialectical"; "confucian"; "orbital"; "suborbital"; "martian"; "minimalist"; "moist"; "dire"; "trotskyite"; "trotskyist"; "supreme"; |] + "far-right"; "unreconstructed"; "modern"; "eternal"; "original"; "historical"; "tankie"; "mystical"; "arcane"; "catholic"; "protestant"; "irish"; "dialectical"; "confucian"; "orbital"; "suborbital"; "martian"; "minimalist"; "moist"; "dire"; "trotskyite"; "trotskyist"; "supreme"; "objective"; "object-oriented"; "moist"; "authentic"; "nazi"; "anti-revisionist"; "revisionist"; "revolutionary"; "counter-revolutionary"; "populist"; "de-leonist"; "lexical"; "armed"; "unarmed"; "people's"; "sectarian"; "israeli"; "palestinian"; "american"; "mexican"; "russian"; "soviet"; "reformist"; "canadian"; "automatic"; "automated"; "luxury"; "deluxe"; "gay"; "full"; "islamic"; "christian"; "visionary"; |] let prefixes = [|"neo"; "post"; "retro"; "anti"; "counter"; "pre"; "paleo"; "femino"; "anarcho"; "oligo"; "meta"; "diabolo"; "theo"; "petro"; "sado"; "arachno"; "psycho"; "eroto"; "nano"; "mini"; "xeno"; "astro"; "femto"; "electro"; "endo"; "arch"; "macro"; "cardio"; "mesmo"; "chrono"; "nycto"; "megalo"; "lesbo"; "masculo"; "ultra"; "urtla"; "proto"; "weebo"; "thanato"; "volcano"; "strangulo"; "quasi"; "pseudo"; "procto"; - "copro"; "hydro"; "gastro"; "thermo"; "mystico"; "arcano"; "disastro"; "vagino"; "dino"; "nympho"; "pharma"; |] -let ists = [| "plurali"; "femini"; "activi"; "sociali"; "marxi"; "lenini"; "stalini"; "fasci"; "sadi"; "stirneri"; "masochi"; "imperiali"; "arcani"; "syndicali"; "masturbati"; "pedantici"; "posadi"; "hoxhai"; "maoi"; "papi"; "catholici"; "protestanti"; "coloniali"; "francoi"; "materiali"; "immateriali"; "sexuali"; "stallmani"; "minarchi"; "totalitariani"; "authoritariani"; "revisioni"; "legali"; "supremaci"; "masculi"; "primitivi"; |] + "copro"; "hydro"; "gastro"; "thermo"; "mystico"; "arcano"; "disastro"; "vagino"; "dino"; + "nympho"; "pharma"; "macho"; "tele"; "bio"; "cryo"; "homo"; "hetero"; "auto"; "arachno"; + "christo"; "islamo";|] +let ists = [| "plurali"; "femini"; "activi"; "sociali"; "marxi"; "lenini"; "stalini"; "fasci"; "sadi"; "stirneri"; "masochi"; "imperiali"; "arcani"; "syndicali"; "masturbati"; "pedantici"; "posadi"; "hoxhai"; "maoi"; "papi"; "catholici"; "protestanti"; "coloniali"; "francoi"; "materiali"; "immateriali"; "sexuali"; "stallmani"; "minarchi"; "totalitariani"; "authoritariani"; "revisioni"; "legali"; "supremaci"; "masculi"; "primitivi"; "brezhnevi"; "populi"; "kautskyi"; "hitleri"; "pacifi"; "zioni"; "reformi"; "canadiani"; "tribadi"; "automati"; "autonomi"; "luddi"; "libertariani"; "capitali"; "chauvini"; "anarchi"; |] let range min max = (Random.int (max-min)) + min let chance n = range 0 n = 0 let pick (r: 'a array) : 'a = r.(range 0 (Array.length r));; let rec accumulate fn times = fn () ^ if times = 0 then "" else " "^(accumulate fn (times-1)) let makeist () = (if chance 2 then (pick prefixes)^"-" else "") ^ (pick ists)^(pick [|"st"; "te"|]) -let ideology () = (if chance 3 then (if chance 4 then (pick prefixes) else "") ^ (pick adjs)^" " else "" ) ^ (accumulate makeist (range 0 2)) ^ " " ^ (if chance 2 then ((if chance 3 then pick prefixes else "") ^"anarchism") else (pick [|"anarcho-";"arachno-"|])^(pick ists)^"sm") +let ideology () = (if chance 3 then (if chance 4 then (pick prefixes) else "") ^ (pick adjs)^" " else "" ) + ^ (accumulate makeist (range 0 2)) ^ " " + ^ (if chance 3 then (pick prefixes)^"-" else "") ^ (pick ists) ^ "sm" + (* original "mock the anarchists" mode: + ^ (if chance 2 then ((if chance 3 then pick prefixes else "") ^"anarchism") else (pick [|"anarcho-";"arachno-"|])^(pick ists)^"sm") *) let () = Random.self_init (); print_string (ideology ()) Index: cclg.ml ================================================================== --- cclg.ml +++ cclg.ml @@ -28,11 +28,12 @@ Vf(A "met","a"); Inv(A "neo"); Vf(An "ocul","o"); Vf(A "strangul","o"); Vf(A "dendr","o"); Vf(A "matr","i"); Vf(A "patr","i"); Vf(A "lesb","o"); Vf(A "hom","o"); Vf(A "heter","o"); Vf(A "prot","o"); Vf(An "ect","o"); Vf(A "weeb","o"); Vf(A "fung","i"); Vf(A "per","i"); Vf(A "petr","i"); Vf(A "sad","o"); Vf(A "femin","i"); Vf(A "mascul","o"); Vf(A "claustr","o"); - Vf(A "neur","o"); Vf(A "norm","o"); Inv (A "eu"); + Vf(A "neur","o"); Vf(A "norm","o"); Inv (A "eu"); Vf(A "sten","o"); + Vf(A "stegan","o"); Vf(An "agor","a"); Vf(A "thanat","o"); Vf(A "vagin","o"); Vf(A "bi","o"); Vf(A "blog","o"); Vf(A "prometh","eo"); Vf(An "anesthes", "io"); Vf(A "din","o"); Vf(A "medic","o"); |] Index: crime.ml ================================================================== --- crime.ml +++ crime.ml @@ -14,52 +14,52 @@ let chance n = range 0 n = 0 let pick (r: 'a array) : 'a = r.(range 0 (Array.length r));; module CrimeDrug = struct -let frics = [| "f"; "sh"; "th"; |] -let vfrics = [| "z"; "v"; "zh"; |] -let stops = [| "t"; "p"; "k"; "c"; |] -let vstops = [| "d"; "b"; "g"; "gh"; |] -let withglide r f = Array.map (fun i -> i^f) r -let withonset r o = Array.map (fun i -> o^i) r -let consonants = Array.concat [ - frics; vfrics; stops; vstops; - withonset stops "s"; - [| "w"; "r"; "rh"; "s"; "l"; "ch"; "n"; "m"; |]; -] -let initials = Array.concat [ - consonants; - withglide frics "r"; withglide frics "l"; withglide frics "w"; - withglide stops "r"; withglide vstops "r"; withglide vstops "w"; - [| "qu"; "spr"; "spl"; "str"; "scr"; "scl"; "squ"; "bl"; "gl"; "sn"; "sm"; "j"; "h"; "sph"; "ph";|]; -] -let nuclei = [| "e"; "ee"; "i"; "a"; "ou"; "u"; "oo"; "ea"; "oa"; "ai"; "oi"; "ie";|] -let finals = Array.concat [ - vstops; - withonset stops "s"; withonset stops "r"; withonset stops "l"; - withonset vstops "r"; withonset vstops "l"; - [| "gh"; "ck"; "ce"; "ss"; "se"; "nd"; "mb"; "mph"; "nk"; "tch"; "ke"; "ght"; - "ff"; "ll"; "zz"; "t"; "p"; "th"; "rth"; "lth"; "dge"; "nge"; "ng"; "ft"; "ckle"; "ngle"; "rkle"; - "scht"; "ze"; "x"; "sh"; "rsh"; "lsh"; "ggle"; "ddle"; "bble"; "pple"; "rge"; "lge"; "ve"; "rve"; - "lve"; "ffle"; "ttle"; "kle"; "sch"; "m"; "n"; "rm"; "lm"; "rn"; "ln";|] -] -let prefixes = [| A "crack"; A "crystal"; A "powdered"; A"raw"; A "pure"; A "liquid"; - A"street"; A "super"; An "electric"; A "diced"; A "homemade"; A "traditional"; - An "old-school"; A "purified"; A "high-caliber"; A "high-octane"; An "old-fashioned"; - A "good old"; A "honest-to-god"; A "weapons-grade"; A "soviet"; An "american"; - A "canadian"; A "british"; A "russian"; A "synthetic"; A "french"; A "cyber"; |] + let frics = [| "f"; "sh"; "th"; |] + let vfrics = [| "z"; "v"; "zh"; |] + let stops = [| "t"; "p"; "k"; "c"; |] + let vstops = [| "d"; "b"; "g"; "gh"; |] + let withglide r f = Array.map (fun i -> i^f) r + let withonset r o = Array.map (fun i -> o^i) r + let consonants = Array.concat [ + frics; vfrics; stops; vstops; + withonset stops "s"; + [| "w"; "r"; "rh"; "s"; "l"; "ch"; "n"; "m"; |]; + ] + let initials = Array.concat [ + consonants; + withglide frics "r"; withglide frics "l"; withglide frics "w"; + withglide stops "r"; withglide vstops "r"; withglide vstops "w"; + [| "qu"; "spr"; "spl"; "str"; "scr"; "scl"; "squ"; "bl"; "gl"; "sn"; "sm"; "j"; "h"; "sph"; "ph";|]; + ] + let nuclei = [| "e"; "ee"; "i"; "a"; "ou"; "u"; "oo"; "ea"; "oa"; "ai"; "oi"; "ie";|] + let finals = Array.concat [ + vstops; + withonset stops "s"; withonset stops "r"; withonset stops "l"; + withonset vstops "r"; withonset vstops "l"; + [| "gh"; "ck"; "ce"; "ss"; "se"; "nd"; "mb"; "mph"; "nk"; "tch"; "ke"; "ght"; + "ff"; "ll"; "zz"; "t"; "p"; "th"; "rth"; "lth"; "dge"; "nge"; "ng"; "ft"; "ckle"; "ngle"; "rkle"; + "scht"; "ze"; "x"; "sh"; "rsh"; "lsh"; "ggle"; "ddle"; "bble"; "pple"; "rge"; "lge"; "ve"; "rve"; + "lve"; "ffle"; "ttle"; "kle"; "sch"; "m"; "n"; "rm"; "lm"; "rn"; "ln";|] + ] + let prefixes = [| A "crack"; A "crystal"; A "powdered"; A"raw"; A "pure"; A "liquid"; + A"street"; A "super"; An "electric"; A "diced"; A "homemade"; A "traditional"; + An "old-school"; A "purified"; A "high-caliber"; A "high-octane"; An "old-fashioned"; + A "good old"; A "honest-to-god"; A "weapons-grade"; A "soviet"; An "american"; + A "canadian"; A "british"; A "russian"; A "synthetic"; A "french"; A "cyber"; |] -let makeA i x = A(i ^ x) -let makeAn x = An x -let maybeConcat x y = match x with - | Some t -> wconcat t y - | None -> y -let gen () : word = maybeConcat (if chance 3 then Some (pick prefixes) else None) - ((if chance 5 then makeAn else makeA (pick initials)) - ((pick nuclei) ^ (pick finals))) - + let makeA i x = A(i ^ x) + let makeAn x = An x + let maybeConcat x y = match x with + | Some t -> wconcat t y + | None -> y + let gen () : word = maybeConcat (if chance 3 then Some (pick prefixes) else None) + ((if chance 5 then makeAn else makeA (pick initials)) + ((pick nuclei) ^ (pick finals))) + end let rec crime = R [| Tv "arson"; T "murder"; @@ -137,10 +137,14 @@ T "cybercrime"; T "espionage"; T "hijacking"; T "hooliganism"; T "perjury"; + T "snakes"; + T "perpetuation of a ruckus"; + T "perpetuation of a nuisance"; + T "perpetuation of a public nuisance"; T "refusal to serve in a public office"; B [ T "failure to appear before"; Indef; profession ]; B [ T "refusal to serve as"; Indef; profession ]; B [ T "stalking"; O(T"of"); Indef; profession ]; B [ T "solicitation of"; Indef; profession ]; @@ -192,35 +196,48 @@ T "being horny"; T "marketing"; T "advertising"; T "unlawful restraint"; T "trespassing"; + T "creating a nuisance"; + T "creating a public nuisance"; + T "causing a ruckus"; |] and doing = R [| Tv "entering"; T "decorating"; Tv "invoking"; Tv "evoking"; Tv "insulting"; Tv "advertising"; - Tv "mentoring"; - Tv "bantering"; - Tv "yiffing"; - Tv "posting"; - Tv "tweeting"; - Tv "blogging"; + T "mentoring"; + T "bantering"; + T "yiffing"; + T "posting"; + T "tweeting"; + T "blogging"; + T "hollering"; + T "yelling"; + T "bartering"; + T "matriculating"; + T "berating"; + T "bothering"; + T "irritating"; + T "copulating"; + T "titillating"; + T "aggravating"; |] and practice = R [| T "falconry"; T "dentistry"; T "philosophy"; T "linguistics"; T "conjuration"; - T "illusion"; + Tv "illusion"; T "mathematics"; T "set theory"; T "math"; T "physics"; - T "astrophysics"; + Tv "astrophysics"; T "natural philosophy"; T "chemistry"; T "engineering"; T "marketing"; T "advertising"; @@ -233,51 +250,56 @@ T "piano"; Tv "oboe"; T "flute"; T "violin"; |] and thing = R [| - T "clarinet"; - T "piano"; - T "deadly weapon"; - T "firearm"; - T "weapon"; - T "sex doll"; - T "rhinocerous"; - T "farm animal"; - T "landmine"; - T "rocket launcher"; - T "rocket-propelled grenade"; - T "grenade"; - T "ballistic missile"; - T "ICBM"; - T "rifle"; - T "vibrator"; + T "clarinet"; + T "piano"; + T "deadly weapon"; + T "dread weapon"; + T "firearm"; + T "weapon"; + T "sex doll"; + T "rhinocerous"; + T "farm animal"; + T "landmine"; + T "rocket launcher"; + T "rocket-propelled grenade"; + T "grenade"; + T "ballistic missile"; + T "ICBM"; + T "rifle"; + T "vibrator"; Tv "assault rifle"; Tv "assault weapon"; Tv "automatic weapon"; Tv "artifact"; + Tv "dread artifact"; + Tv "cursed artifact"; Tv "orb"; - T "cursed object"; + T "cursed object"; Tv "infectious disease"; - T "nuclear weapon"; - T "bioweapon"; - T "chemical weapon"; - T "memetic hazard"; - T "metaphor"; - T "simile"; + T "nuclear weapon"; + T "bioweapon"; + T "chemical weapon"; + T "memetic hazard"; + T "metaphor"; + T "simile"; Tv "analogy"; - T "turkey baster"; - T "rolling pin"; - T "household item"; + T "turkey baster"; + T "rolling pin"; + T "household item"; Tv "appliance"; - T "blog"; - T "post"; - T "tweet"; + T "blog"; + T "post"; + T "tweet"; + T "snake"; |] and thingp = R [| T "clarinets"; T "pianos"; T "deadly weapons"; + T "dread weapons"; T "firearms"; T "weapons"; T "sex dolls"; T "rhinoceri"; T "farm animals"; @@ -292,10 +314,12 @@ T "handcuffs"; Tv "assault rifles"; Tv "assault weapons"; Tv "automatic weapons"; Tv "artifacts"; + Tv "dread artifacts"; + Tv "cursed artifacts"; Tv "orbs"; T "hazardous materials"; T "gender"; T "cursed objects"; Tv "infectious diseases"; @@ -316,10 +340,11 @@ Tv "appliances"; T "stolen property"; T "blogs"; T "posts"; T "tweets"; + T "snakes"; |] and profession = R [| T "public official"; Tv "officer of the law"; T "justice of the peace"; T "locksmith"; @@ -375,10 +400,11 @@ T "culpable and reckless"; T "criminal"; T "illegal"; T "forcible"; T "fractal"; + T "obnoxious"; |] and suffix = R [| B [ T "with intent to commit"; crime ]; T "in a public place"; T "in a court of law"; T "on public transit"; @@ -499,25 +525,27 @@ R[| T "you"; T "the defendant"; T "the accused party";|]; ]; |]; T "to"; ] +let determiner = [| T "your"; T "your own"; T "the"; |] +let sdet = R (Array.concat [ determiner; [| T "a"; T "this"; T "that"; |] ]) +let pdet = R (Array.concat [ determiner; [| T "these"; T "those"; |] ]) let condemnation = B[ sentence; R[| - B[ - T "die"; + B[ T "die"; O(T "screaming"); O(T "in agony"); O(B[ T "by"; O(T "prolonged"); O(T "ritual"); O(T "public"); R[| T "beheading"; T "strangulation"; T "torture"; T "industrial negligence"; T "slow slicing"; T "lethal injection"; - T "disembowelment"; T "drowning"; T "burning"; + T "disembowelment"; T "drowning"; T "drowning at sea"; T "burning"; T "burning at the stake"; T "emasculation"; T "irradiation"; T "stabbing"; T "poisoning"; T "flaying"; T "roasting"; T "boiling"; T "boiling in oil"; T "boiling in acid"; T "crucifixion"; |] ]); @@ -525,16 +553,29 @@ T "hang"; T "hang until dead"; T "hang until you are dead"; T "be drawn and quartered"; T "drown"; + T "drown at sea"; T "burn"; T "burn at the stake"; T "be burned"; T "be burned at the stake"; T "be broken on the wheel"; T "be torn apart by wild horses"; + T "snakes"; + B[ R[| + T "forfeit"; + T "be deprived of"; + T "be given"; + T "be subjected to"; + |]; + R[| + B[ O(pdet); thingp; ]; + B[ sdet; thing; ]; + |] + ] |]; O(R[| B[ T "at"; R[| @@ -546,10 +587,11 @@ T "by day's end"; |]) ] let imprisonment = B[ sentence; + O( T "spend" ); R[| B[ R[|T "two"; T "three"; T "four"; T "five"; T "six"; T "seven"; Tv "eight"; T "nine"; T "ten";|]; R[|T "seconds"; T "minutes"; T "days"; T "weeks"; T "years"; T "decades"; T "millennia"; @@ -669,11 +711,11 @@ |]; T "to"; R[| B[T "perform"; R[|T "one"; numbers;|]; T "hundred jumping jacks"]; T "make amends"; - T "beg forgiveness"; + T "beg for forgiveness"; T "do the right thing"; T "bleed"; T "sacrifice your firstborn"; T "forever quit the land of your birth"; B[ @@ -748,11 +790,11 @@ P ","; ]); R[| B[court; O(T "hereby"); - R[| T "finds"; T "declares"; T "proclaims"; T "pronounces"; T "judges"; Tv "adjuges";|]; + R[| T "finds"; T "declares"; T "proclaims"; T "pronounces"; T "judges"; Tv "adjudges";|]; ]; B[Tv "I"; O(T "hereby"); R[| T "find"; T "declare"; T "proclaim"; T "pronounce"; T "judge"; Tv "adjudge"|]; ] Index: drug.ml ================================================================== --- drug.ml +++ drug.ml @@ -30,11 +30,13 @@ let pick (r: 'a array) : 'a = r.(range 0 (Array.length r));; let prefixes = [| "crack"; "crystal"; "powdered"; "raw"; "pure"; "liquid"; "street"; "super"; "electric"; "diced"; "homemade"; "traditional"; "old-school"; "purified"; "high-caliber"; "high-octane"; "old-fashioned"; "good old"; "honest-to-god"; "weapons-grade"; "soviet"; "american"; "canadian"; "british"; "russian"; - "synthetic"; "french"; "cyber"; "dank"; "dinky"; "dismal"; "fire"; "wild"; "wacky"; "snazzy"; "sleazy"; "skanky"; "sexy"; "screwy"; "funky"; "queer"; "kinky"; "fascist"; "nazi"; |] + "synthetic"; "french"; "cyber"; "dank"; "dinky"; "dismal"; "fire"; "wild"; "wacky"; + "snazzy"; "sleazy"; "skanky"; "sexy"; "screwy"; "funky"; "queer"; "kinky"; "fascist"; + "irish"; "nazi"; |] let word () = (if chance 3 then (pick prefixes) ^ " " else "") ^ (if chance 5 then "" else pick initials) ^ (pick nuclei) ^ (pick finals) @@ -250,10 +252,17 @@ Plain "blobbed"; Plain "cubed"; Plain "orbed"; Plain "squared"; Plain "[REDACTED]"; Plain "wrangled"; Plain "wrassled"; Plain "glib"; Plain "maudlin"; Plain "schooled"; + Plain "flailed"; Plain "whaled"; + Plain "sloshed"; Plain "sprayed"; + Plain "spayed"; Plain "prayed to"; + Plain "prayed out"; Plain "prayed off"; + Plain "prayed for"; Plain "prayed away"; + Plain "snacked"; Plain "snacked up"; + Plain "snacked out"; Plain "snacked away"; |] let roas = [| "on"; "shooting up"; "using"; "mainlining"; "snorting"; "vaping"; "smoking"; "cybering"; "sucking down"; "gargling"; "doing"; "trying"; "slurping"; "guzzling"; "popping"; "downing"; "chewing"; "pooping"; "shitting"; "pissing"; "crunching"; "sniffing"; "zapping"; "downloading"; "dropping"; "cooking up"; "freebasing"; "hooting"; "tooting"; "blasting"; "blazing"; "tweeting"; "honking"; "plugging"; "plugging in"; "hooking up"; "turning on"; "boofing"; "whacking"; "choking"; "ravishing"; "looting"; "slaughtering";