procgen  Diff

Differences From Artifact [b5c9249601]:

To Artifact [c18b15fcb7]:


    28     28   let range min max = (Random.int (max-min)) + min
    29     29   let chance n = range 0 n = 0
    30     30   let pick (r: 'a array) : 'a = r.(range 0 (Array.length r));;
    31     31   let prefixes = [| "crack"; "crystal"; "powdered"; "raw"; "pure"; "liquid"; "street";
    32     32   	"super"; "electric"; "diced"; "homemade"; "traditional"; "old-school"; "purified";
    33     33   	"high-caliber"; "high-octane"; "old-fashioned"; "good old"; "honest-to-god";
    34     34   	"weapons-grade"; "soviet"; "american"; "canadian"; "british"; "russian";
    35         -	"synthetic"; "french"; "cyber"; |]
           35  +    "synthetic"; "french"; "cyber"; "dank"; "dinky"; "dismal"; "fire"; "wild"; "wacky"; "snazzy"; "sleazy"; "skanky"; "sexy"; "screwy"; "funky"; "queer"; "kinky"; "fascist"; "nazi"; |]
    36     36   let word () = (if chance 3 then (pick prefixes) ^ " " else "") ^
    37     37   	(if chance 5 then "" else pick initials) ^
    38     38   	(pick nuclei) ^
    39     39   	(pick finals)
    40     40   	
    41     41   let greets = [| "hey"; "whassup"; "what's up"; "what up"; "yo"; "hey there"; "what's shakin'" |]
    42     42   let names = [| "dude"; "bro"; "man"; "babe"; "sweetheart"; "honey"; "baby"; "hottie"; "girl"; |]
    43     43   let questions = [| "wanna"; "want to"; "shall we"; "how about we"; |]
    44     44   let exhorts = [| "we oughta"; "you oughta"; "we ought to"; "you ought to"; "we should";
    45     45   	"you should"; "let's"; |]
    46         -type component = Invariant of string | Numbered of string * string | Poss
    47         -type state = Plain of string | Compound of component list
           46  +type component = Invariant of string | Numbered of string * string | Poss |Obl | Nom | Refl
           47  +type state = Plain of string | Compound of component list 
    48     48   let states = [|
    49     49   	Plain "high";
    50     50   	Compound[Invariant "out of"; Poss; Numbered("mind","minds")];
    51     51   	Compound[Invariant "outta"; Poss; Numbered("mind","minds")];
    52         -	Plain "fucked up";
    53         -	Plain "wrecked";
    54         -	Plain "hammered";
    55         -	Plain "buzzed";
    56         -	Plain "tweaked";
    57         -	Plain "whacked";
    58         -	Plain "whacked out";
    59         -	Plain "smacked";
    60         -	Plain "smacked out";
    61         -	Plain "tipsy";
    62         -	Plain "snazzy";
    63         -	Plain "spooky";
    64         -	Plain "crazy";
    65         -	Plain "messed up";
    66         -	Plain "far out";
    67         -	Plain "horny";
    68         -	Plain "psycho";
    69         -	Plain "loony";
    70         -	Plain "wacky";
    71         -	Plain "silly";
    72         -	Plain "creepy";
    73         -	Plain "frazzled";
    74         -	Plain "dazzling";
    75         -	Plain "wired";
    76         -	Plain "peppy";
    77         -	Plain "hoovered";
    78         -	Plain "turnt";
    79         -	Plain "turnt up";
    80         -	Plain "tits-up";
    81         -	Plain "toasted";
    82         -	Plain "roasted";
    83         -	Plain "cooked";
    84         -	Plain "baked";
    85         -	Plain "basted";
    86         -	Plain "flunked";
    87         -	Plain "flunked out";
    88         -	Plain "crazed";
    89         -	Plain "stewed";
    90         -	Plain "framed for war crimes";
    91         -	Plain "ruined";
    92         -	Plain "totally ruined";
    93         -	Plain "whacked out";
    94         -	Plain "creeped out";
    95         -	Plain "spunky";
    96         -	Plain "spiffy";
    97         -	Plain "nifty";
    98         -	Plain "wicked";
    99         -	Plain "slutty";
   100         -	Plain "jazzed";
   101         -	Plain "jazzy";
   102         -	Plain "fried";
   103         -	Plain "hecked";
   104         -	Plain "hecked up";
   105         -	Plain "hecked out";
   106         -	Plain "screwed";
   107         -	Plain "screwed up";
   108         -	Plain "ousted";
   109         -	Plain "thrown out of the mall";
   110         -	Plain "cyber";
   111         -	Plain "totally online";
   112         -	Plain "cybered";
   113         -	Plain "downloaded";
           52  +	Compound[Invariant "put out of"; Poss; Invariant "misery"];
           53  +	Compound[Invariant "put outta"; Poss; Invariant "misery"];
           54  +	Compound[Invariant "an APB on"; Poss; Numbered("ass","asses")];
           55  +	Compound[Invariant "a cop on"; Poss; Invariant "tail"];
           56  +	Plain "fucked";					Plain "bailed out";
           57  +	Plain "fucked up";				Plain "slobbered";
           58  +	Plain "fucked off";				Plain "slobbered out";
           59  +	Plain "fucked out";				Plain "honked";
           60  +	Plain "fucked away";			Plain "honked out";
           61  +	Plain "wrecked";				Plain "honked off";
           62  +	Plain "hammered";				Plain "honked away";
           63  +	Plain "buzzed";					Plain "tweeted";
           64  +	Plain "tweaked";				Plain "tweeted at";
           65  +	Plain "whacked";				Plain "subtweeted";
           66  +	Plain "whacked out";			Plain "slagged";
           67  +	Plain "whacked off";			Plain "razzed";
           68  +	Plain "smacked";				Plain "thrashed";
           69  +	Plain "smacked out";			Plain "flogged";
           70  +	Plain "tipsy";					Plain "jacked";
           71  +	Plain "snazzy";					Plain "jacked up";
           72  +	Plain "spooky";					Plain "jacked off";
           73  +	Plain "crazy";					Plain "exiled";
           74  +	Plain "messed up";				Plain "sentenced to death";
           75  +	Plain "far out";				Plain "jailed";
           76  +	Plain "horny";					Plain "orbital";
           77  +	Plain "psycho";					Plain "radical";
           78  +	Plain "loony";					Plain "dialectical";
           79  +	Plain "wacky";					Plain "shagged";
           80  +	Plain "silly";					Plain "snubbed";
           81  +	Plain "creepy";					Plain "glued";
           82  +	Plain "frazzled";				Plain "glued off";
           83  +	Plain "dazzling";				Plain "glued out";
           84  +	Plain "wired";					Plain "sneezy";
           85  +	Plain "peppy";					Plain "grumpy";
           86  +	Plain "hoovered";				Plain "wild";
           87  +	Plain "turnt";					Plain "outta this world";
           88  +	Plain "turnt up";				Plain "out of this world";
           89  +	Plain "tits-up";				Plain "junked";
           90  +	Plain "toasted";				Plain "trashed";
           91  +	Plain "roasted";				Plain "recycled";
           92  +	Plain "cooked";					Plain "fragged";
           93  +	Plain "baked";					Plain "dematerialized";
           94  +	Plain "basted";					Plain "degenerate";
           95  +	Plain "flunked";				Plain "biblical";
           96  +	Plain "flunked out";			Plain "mystical";
           97  +	Plain "crazed";					Plain "mythical";
           98  +	Plain "stewed";					Plain "twisted";
           99  +	Plain "framed for war crimes";	Plain "stabbed";
          100  +	Plain "ruined";					Plain "stapled";
          101  +	Plain "totally ruined";			Plain "cucked";
          102  +	Plain "whacked out";			Plain "cucked up";
          103  +	Plain "creeped out";			Plain "cucked out";
          104  +	Plain "spunky";					Plain "cucked off";
          105  +	Plain "spiffy";					Plain "bamboozled";
          106  +	Plain "nifty";					Plain "baffled";
          107  +	Plain "wicked";					Plain "baffled";
          108  +	Plain "slutty";					Plain "logged on";
          109  +	Plain "jazzed";					Plain "logged off";
          110  +	Plain "jazzy";					Plain "hauled";
          111  +	Plain "fried";					Plain "hauled away";
          112  +	Plain "hecked";					Plain "hauled off";
          113  +	Plain "hecked up";				Plain "rehabilitated";
          114  +	Plain "hecked out";				Plain "disappeared";
          115  +	Plain "screwed";				Plain "counterrevolutionary";
          116  +	Plain "screwed up";				Plain "gulagged";
          117  +	Plain "ousted";					Plain "grinched";
          118  +	Plain "thrown out of the mall";	Plain "redacted";
          119  +	Plain "cyber";					Plain "razed";
          120  +	Plain "totally online";			Plain "sludged";
          121  +	Plain "cybered";			    Plain "clawed up";
          122  +	Plain "downloaded";			    Plain "clawed off";
          123  +	Plain "slurped out";		    Plain "dragged";
          124  +	Plain "sucked off";			    Plain "dragged away";
          125  +	Plain "sporked";			    Plain "dragged away screaming";
          126  +	Plain "sporked up";			    Plain "kidnapped";
          127  +	Plain "sleazy";				    Plain "hazed";
          128  +	Plain "sleazed up";			    Plain "glazed";
          129  +	Plain "sleazed up";			    Plain "shot";
          130  +	Plain "sledged";			    Plain "shot at";
          131  +	Plain "sledged out";		    Plain "spherical";
          132  +	Plain "sledged up";			    Plain "authoritarian";
          133  +	Plain "sickled";			    Plain "totalitarian";
          134  +	Plain "hammered and sickled";   Plain "fascist";
          135  +	Plain "strung out";			    Plain "nationalized";
          136  +	Plain "strung up";			    Plain "flayed";
          137  +	Plain "strung along";		    Plain "thumped";
          138  +	Plain "blown";				    Plain "thumped off";
          139  +	Plain "blown up";			    Plain "humped";
          140  +	Plain "blown out";			    Plain "messy";
          141  +	Plain "blown away";			    Plain "conical";
          142  +	Plain "blazed";				    Plain "chunked";
          143  +	Plain "dredged";			    Plain "chunky";
          144  +	Plain "dredged up";			    Plain "hucked";
          145  +    Plain "bailed";                 Plain "zucked";
          146  +    Plain "zucked up";              Plain "zucked off";
          147  +    Plain "zucked out";             Plain "benched";
          148  +    Plain "drafted";                Plain "conscripted";
          149  +    Plain "killed";                 Plain "killed";
          150  +    Plain "hanged";                 Plain "hung";
          151  +    Plain "hung out to dry";        Plain "janky";
          152  +    Plain "hacked";                 Plain "hacked into";
          153  +    Plain "hacked off";             Plain "hacked out";
          154  +    Plain "judged";                 Plain "found guilty";
          155  +    Plain "empaneled";              Plain "impaled";
          156  +    Plain "acquitted";              Plain "shucked";
          157  +    Plain "banksy";                 Plain "persecuted";
          158  +    Plain "desegregated";           Plain "hauled";
          159  +    Plain "hauled into court";      Plain "trumped up";
          160  +    Plain "gendered";               Plain "ghouled";
          161  +    Plain "slugged";                Plain "slagged";
          162  +    Plain "frayed";                 Plain "stupid";
          163  +    Plain "girly";                  Plain "manly";
          164  +    Plain "comical";                Plain "satirical";
          165  +    Plain "mocked";                 Plain "funny";
          166  +    Plain "arrested";               Plain "molested";
          167  +    Plain "assaulted";              Plain "convicted";
          168  +    Plain "traumatized";            Plain "ravished";
          169  +    Plain "violated";               Plain "sexy";
          170  +    Plain "beaten";                 Plain "used";
          171  +    Plain "bruised";                Plain "battered";
          172  +    Plain "bloody";                 Plain "abused";
          173  +    Plain "neglected";              Plain "gaslit";
          174  +    Plain "lied to";                Plain "deceived";
          175  +    Plain "fooled";                 Plain "foolish";
          176  +    Plain "dense";                  Plain "arboreal";
          177  +    Plain "chucked";                Plain "got";
          178  +    Plain "done";                   Plain "had";
          179  +    Plain "duped";                  Plain "dropped";
          180  +    Plain "drunk";                  Plain "busted";
          181  +    Plain "buxom";                  Plain "bothered";
          182  +    Plain "hot";                    Plain "cold";
          183  +    Plain "joshed";                 Plain "surrounded";
          184  +    Plain "sharp";                  Plain "spun";
          185  +    Plain "spun up";                Plain "spun out";
          186  +    Plain "spun along";             Plain "dragged along";
          187  +    Plain "long";                   Plain "weird";
          188  +    Plain "corporate";              Plain "enterprise";
          189  +    Plain "electronic";             Plain "electric";
          190  +    Plain "tortured";               Plain "shivved";
          191  +    Plain "shanked";                Plain "skanky";
          192  +    Plain "skanked";                Plain "skanked up";
          193  +    Plain "skanked out";            Plain "skanked off";
          194  +    Plain "skanked away";           Plain "whored";
          195  +    Plain "whored out";             Plain "whored off";
          196  +    Plain "sold";                   Plain "sold off";
          197  +    Plain "sold out";               Plain "spanked";
          198  +    Plain "slapped";                Plain "stunk";
          199  +    Plain "stinky";                 Plain "stung";
          200  +    Plain "stabled";                Plain "stuck";
          201  +    Plain "topped";                 Plain "bottomed";
          202  +    Plain "trawled";                Plain "trawled for";
          203  +    Plain "wanked";                 Plain "wanked out";
          204  +    Plain "strapped";               Plain "butchered";
          205  +    Plain "invaded";                Plain "liberated";
          206  +    Plain "greeted as liberators";  Plain "defiled";
          207  +    Plain "desecrated";             Plain "lost";
          208  +    Plain "scolded";                Plain "slabbed";
          209  +    Plain "snagged";                Plain "flabby";
          210  +    Plain "fracked";                Plain "wobbled";
          211  +    Plain "mobbed";                 Plain "floppy";
          212  +    Plain "slinky";                 Plain "sloppy";
          213  +    Plain "snooty";                 Plain "twee";
          214  +    Plain "rich";                   Plain "poor";
          215  +    Plain "addicted";               Plain "hooked";
          216  +    Plain "clammed up";             Plain "quiet";
          217  +    Plain "chafed";                 Plain "chewed up";
          218  +    Plain "chewed out";             Plain "green";
          219  +    Plain "purple";                 Plain "pink";
          220  +    Plain "white";                  Plain "douched";
          221  +    Plain "douchey";                Plain "douched out";
          222  +    Plain "douched up";             Plain "douched off";
          223  +    Plain "dank";                   Plain "humped up";
          224  +    Plain "humped off";             Plain "funky";
          225  +    Plain "funked";                 Plain "funked up";
          226  +    Plain "funked off";             Plain "funked out";
          227  +    Plain "sad";                    Plain "depressed";
          228  +    Plain "dehumanized";            Plain "demeaned";
          229  +    Plain "dropped out";            Plain "queer";
          230  +    Plain "gay";                    Plain "kinky";
          231  +    Plain "cranked";                Plain "cranked out";
          232  +    Plain "cranked up";             Plain "cranked off";
          233  +    Plain "cranked away";           Plain "kicked";
          234  +    Plain "booted";                 Plain "kinked";
          235  +    Plain "sucked off";             Plain "boggled";
          236  +    Plain "branded";                Plain "rebranded";
          237  +    Plain "compliant";              Plain "obedient";
          238  +    Plain "scammed";                Plain "legal";
          239  +    Plain "outlawed";               Plain "banned";
          240  +    Plain "banished";               Plain "baled";
          241  +    Plain "blooded";                Plain "blasted";
          242  +    Plain "blasted out";            Plain "blasted off";
          243  +    Plain "blasted up";             Plain "blasted down";
          244  +    Plain "slammed";                Plain "slammed down";
          245  +    Plain "memed";                  Plain "memetic";
          246  +    Plain "elected";                Plain "bought out";
          247  +    Plain "bought up";              Plain "bought";
          248  +    Plain "bagged";                 Plain "bugged";
          249  +    Plain "blurry";                 Plain "blurred";
          250  +    Plain "blobbed";                Plain "cubed";
          251  +    Plain "orbed";                  Plain "squared";
          252  +    Plain "[REDACTED]";             Plain "wrangled";
          253  +    Plain "wrassled";               Plain "glib";
          254  +    Plain "maudlin";                Plain "schooled";
   114    255   |]
   115    256   let roas = [| "on"; "shooting up"; "using"; "mainlining"; "snorting"; "vaping"; "smoking"; "cybering";
   116         -	"sucking down"; "gargling"; "doing"; "trying"; "guzzling"; "popping"; "downing"; "chewing"; 
   117         -	"crunching"; "sniffing"; "zapping"; "downloading"; "dropping"; "cooking up"; "freebasing"|]
   118         -let vroas = [| "shoot up"; "mainline"; "snort"; "vape"; "smoke"; "freebase";
   119         -	"suck down"; "gargle"; "do"; "try"; "guzzle"; "pop"; "down"; "chew"; "crunch";
   120         -	"sniff"; "zap"; "download"; "drop"; "cyber"; "cook up"; |]
          257  +    "sucking down"; "gargling"; "doing"; "trying"; "slurping"; "guzzling"; "popping"; "downing"; "chewing"; "pooping"; "shitting"; "pissing";
          258  +    "crunching"; "sniffing"; "zapping"; "downloading"; "dropping"; "cooking up"; "freebasing"; "hooting"; "tooting"; "blasting"; "blazing";
          259  +    "tweeting"; "honking"; "plugging"; "plugging in"; "hooking up"; "turning on"; "boofing"; "whacking"; "choking"; "ravishing"; "looting"; "slaughtering";
          260  +    "drinking"; "eating"; "slugging"; "ghouling" |]
          261  +let vroas = [| "shoot up"; "mainline"; "snort"; "vape"; "smoke"; "slurp"; 
          262  +    "suck down"; "gargle"; "do"; "try"; "guzzle"; "pop"; "down"; "chew"; "crunch"; "poop"; "shit"; "piss"; "blast"; "blaze";
          263  +    "sniff"; "zap"; "download"; "drop"; "cyber"; "cook up"; "toot"; "hoot"; "plug"; "plug in";
          264  +    "hook up"; "turn on"; "boof"; "whack"; "choke"; "drink"; "eat"; "slug"; "ghoul"; "freebase"; "ravish"; "loot"; "slaughter";|]
   121    265   module Pronoun = struct
   122    266   	type t = {
   123    267   		nom : string; obl : string; gen : string;
   124    268   		refl : string; cop : string; brevcop : string;
   125    269   		pl : bool;
   126    270   	}
   127    271   	let you = {nom = "you"; obl = "you"; gen = "your"; refl = "yourself";
................................................................................
   142    286   end
   143    287   let cop p = Pronoun.(if chance 4 then p.nom ^ " " ^ p.cop else p.nom^p.brevcop)
   144    288   let makestate p s = 
   145    289   	let eval c = match c with
   146    290   		| Invariant i -> i
   147    291   		| Numbered(sg,pl) -> if p.Pronoun.pl then pl else sg
   148    292   		| Poss -> p.Pronoun.gen
          293  +		| Nom -> p.Pronoun.nom
          294  +		| Obl -> p.Pronoun.obl
          295  +		| Refl -> p.Pronoun.refl
   149    296   	in match s with
   150    297   		| Plain t -> t
   151    298   		| Compound l -> List.fold_left (fun a t -> if a = "" then a^(eval t) else a^" "^(eval t)) "" l 
   152         -let gethigh p = (cop p) ^ (pick [|" getting "; " gonna get "; " "|]) ^ (pick [|"";"so "|])
   153         -	^ (makestate p (pick states)) ^ " on " ^ (word ());;
   154         -let cantwait p = p.Pronoun.nom ^ " can't wait to get " ^ (makestate p (pick states)) ^ " on " ^ (word ());;
          299  +let gethigh p =
          300  +    let pickstate () =
          301  +        (makestate p (pick states)) ^
          302  +            (if chance 3 then
          303  +                " and " ^ (makestate p (pick states))
          304  +            else "")
          305  +    in (cop p) ^ (pick [|" getting "; " gonna get "; " "|]) ^ (pick[| ""; p.Pronoun.refl ^ " " |]) ^ (pick [|"";"so "; "all "; "way "; "super "; "totally "|])
          306  +	^ (pickstate ()) ^ " on " ^ (word ());;
          307  +let cantwait p = p.Pronoun.nom ^ " can't wait to get " ^ (pick[| ""; p.Pronoun.refl ^ " " |]) ^ (makestate p (pick states)) ^ " on " ^ (word ());;
   155    308   let affecting p =
   156    309   	if chance 2 then 
   157    310   		(pick [|
   158    311   			"it's got"; "it's getting"; "it got"; "it has";
   159    312   			"it's making"; "it's gonna get"; "it's gonna make"
   160    313   		|]) ^ " " ^ p.Pronoun.obl
   161    314   	else Pronoun.(pick [|
   162    315   		p.nom ^ " got";
   163    316   		(cop p) ^ " getting";
   164    317   		(cop p) ^ " gonna get";
   165    318   		(cop p);
   166    319   	|]);;
   167    320   let gotso p = (affecting p) ^ (pick [|" ";" so "|]) ^ (makestate p (pick states));;
   168         -let ison p = (cop p) ^ " " ^ (pick roas) ^ " " ^ (pick [|"so much ";"too much ";"way too much ";"a lotta ";"a lot of "; "a ton of "; "a whole lotta "; "a whole lot of ";"";""|]) ^ (word ());;
          321  +let ison p = (cop p) ^ " " ^ (pick roas) ^ " " ^ (pick [|"so much ";"too much ";"way too much ";"a lotta ";"a lot of "; "a ton of "; "a whole lotta "; "a whole lot of ";"some ";"a little ";"some of this ";"some of that ";"a bit of ";"my ";"your ";"this ";"that ";"that there ";"all this ";"some of her ";"some of his ";"some of our ";"all this ";"all of this ";"her ";"his ";"our ";"";"";""|]) ^ (word ());;
   169    322   let isonand p = (ison p) ^ " and " ^ (gotso p)
   170    323   
   171    324   let offer p name (* haaaack *) = (pick greets) ^ " " ^ name ^ (pick [|"! "; ", "; ". "; " - ";|]) ^
   172    325   	if chance 2 then
   173    326   		(pick questions) ^ (pick [|" go "; " "|]) ^ (pick vroas) ^ (pick [|" some "; " "|]) ^
   174    327   		(word ()) ^ (if chance 2 then " and get " ^ (makestate p (pick states)) else "") ^ "?"
   175    328   	else