; generates insults inspired by Hunter S. Thompson

; this program inspired by a perl program found at:
; https://www.perlmonks.org/?node_id=46151

(setf *random-state* (make-random-state t))
; get a fresh random state, we don't want to keep
; repeating the same gibberish over and over here

(defun HST-invective () ; constructs an invective from word lists
       (let* ((adjective-1 '("vicious" "rancid" "savage" "rotten"
                             "demented" "devious" "grisly" "myopic"
                             "halfwit" "filthy" "foetid" "deranged"
                              "warped" "raving" "cowardly" "wastrel"
                             "depraved" "incompetent" "flat-out"
                             "brutal" "brutish" "crazed" "sniveling"
                             "whining" "simpering" "merciless" "turncoat"
                             "twisted" "slavering" "feral" "ruthless"
                             "manipulative" "drug-addled" "gutless"
                             "goddamned" "putrid" "diabolical" "heinous"
                             "distorted" "lying" "furious" "malignant"
                             "malicious" "mindless" "remorseless"
                             "plastic" "stupefying" "vile" "black-minded"
                             "cheap" "mendacious" "foolish" "maddening"
                             "venomous" "abusive" "confused"
                             "repellent" "lazy" "half-wit"
                             "rapacious" "treacherous" "insipid" "degraded"
                             "bletcherous" "brainwashed"
                             "prattling" "noisome" "unspeakable" "lame"
                             "wanton"))
              (adjective-2 '("festering" "stinking" "drooling" "scamming"
                             "rabbit-punching" "knee-crawling" "scurvy"
                             "thieving" "crypto-fascist" "fascist" "pig-whipping"
                             "hellish" "wretched" "hag-ridden" "waterhead"
                             "loathsome" "cheapjack" "buggering" "slobbering"
                             "degenerate" "inhuman" "virulent" "ghoulish"
                             "subhuman"  "poisonous" "cannibal" "back-stabbing"
                             "decrepit" "cancerous" "chattering" "diseased"
                             "monstrous" "gibbering" "cocksucking" "flag-sucking"
                             "dilettante" "paranoid" "gibberish-spewing"
                             "yammering" "scheming" "greed-crazed"
                             "empty-headed" "skunk-sucking" "anal-compulsive"
                             "vapid" "egg-sucking" "empty-headed" "deadhead"
                             "sinister" "vacuous" "brainless" "braindead"
                             "half-mad" "soulless" "soul-sucking" "ungulate"
                             "psychotic" "blithering" "money-sucking"
                             "motherfucking" "vomitous" "hustling"))
              (noun-1 '("bastard" "little bastard" "swine" "scum"
                             "crook" "miscreant" "reptile" "fiend"
                             "psychopath" "geek" "mutant" "hoodlum"
                             "lunatic" "raving lunatic" "maniac" "parasite"
                             "soul-fucker" "cockroach" "little cockroach" "weasel"
                             "asshole" "fatback" "pervert" "lizard"
                             "thug" "sybarite" "traitor" "ward-heeler"
                             "slug" "leech" "little pervert" "snake"
                             "rat eater" "deviant" "jar of raccoon semen"
                             "roach" "troglodyte" "pigfucker" "pigfucker"
                             "vermin" "greedhead" "toad" "scumbag"
                             "invertebrate" "hammerhead" "hustler" "rube"
                             "animal" "brute" "reprobate" "creep"
                             "cretin")))
              (format t (concatenate 'string "~%~%" "you" " " (choose-word adjective-1) " "
                      (choose-word adjective-2) " "(choose-word noun-1) "!" "~%~%"))))

(defun choose-word (word-list) ; chooses a random word from a list
       (nth (random (length word-list)) word-list))

;   For every moment of triumph, for every instant of beauty, many souls
;   must be trampled.
;   (Hunter S. Thompson)

;   The 'jar of raccoon semen' is courtesy of Reddit user 'TheNightBench'
;   https://www.reddit.com/user/TheNightBench


; (format t "~%~% For every moment of triumph, for every instant of beauty, many souls must be trampled. ~% (Hunter S. Thompson) ~%~%")

(hst-invective)