! --------------[ Inform Shakespearean Insult Generator v1.0]----------------
! Possibly the most gratiutiously vulgar, flatulent use of Inform yet devised!
! ---------------------------------------------------------------------------
! This routine is based roughly on a "shakespearean insult" scheme posted on
! usenet created by Jerry McGuire (a high school English teacher, no less).
! There are several WWW pages that feature the use of this "algorithm"....
! ---------------------------------------------------------------------------
! Warning: Extremely sloppy code follows! I have to admit, i scarcely have
! any idea what I'm doing. I coded this in Pascal first, and then, largely
! by a semi-painful process of trial and error, transmogrified it into Inform
! code that actually works! It is of course a very silly thing, but perhaps
! some my find it more amusing (for a few minutes) than sawing at their wrists
! with saftey razors that they have frantically and desperately smashed free
! with their shaving mirror.... um... Anyone that has far too little content
! in their Inform adventures, and is looking for more totally vacuous filler
! material, is free to use any of this code they can manage to steal....
! ---------------------------------------------------------------------------
! You'll probably need to use $BUFFER_LENGTH=3000 on commmandline to compile.
! --------------------[ Tim Middleton
[email protected] ]--------------------
Switches dsv5x;
Constant DEBUG;
Constant Story "Shakespearean Insult-o-Rondez-Vous-with-Rama^";
Constant Headline "^";
Include "Parser";
Object LibraryMessages "lm" ! patch library messages...
with
before
[; Prompt: sh_insult("^What now, ", "> "); rtrue;
];
Include "VerbLib";
Global Sh_Ads table "artless" "base-court" ! table of insult adjectives
"bawdy" "bat-fowling"
"beslubbering" "beef-witted" ! number of entries is read
"bootless" "beetle-headed" ! from sh_ads-->0
"churlish" "boil-brained"
"cockered" "clapper-clawed"
"clouted" "clay-brained"
"craven" "common-kissing"
"currish" "crook-pated"
"dankish" "dismal-dreaming"
"dissembling" "dizzy-eyed"
"droning" "doghearted"
"errant" "dread-bolted"
"fawning" "earth-vexing"
"fobbing" "elf-skinned"
"froward" "fat-kidneyed"
"frothy" "fen-sucked"
"gleeking" "flap-mouthed"
"goatish" "fly-bitten"
"gorbellied" "folly-fallen"
"impertinent" "fool-born"
"infectious" "full-gorged"
"jarring" "guts-griping"
"loggerheaded" "half-faced"
"lumpish" "hasty-witted"
"mammering" "hedge-born"
"mangled" "hell-hated"
"mewling" "idle-headed"
"paunchy" "ill-breeding"
"pribbling" "ill-nurtured"
"puking" "knotty-pated"
"puny" "milk-livered"
"quailing" "motley-minded"
"rank" "onion-eyed"
"reeky" "plume-plucked"
"roguish" "pottle-deep"
"ruttish" "pox-marked"
"saucy" "reeling-ripe"
"spleeny" "rough-hewn"
"spongy" "rude-growing"
"surly" "rump-fed"
"tottering" "shard-borne"
"unmuzzled" "sheep-biting"
"vain" "spur-galled"
"venomed" "swag-bellied"
"villainous" "tardy-gaited"
"warped" "tickle-brained"
"wayward" "toad-spotted"
"weedy" "unchin-snouted"
"yeasty" "weather-bitten";
Global Sh_Nms table ! table of insult names
"apple-john"
"baggage"
"barnacle"
"bladder"
"boar-pig"
"bugbear"
"bum-bailey"
"canker-blossom"
"clack-dish"
"clotpole"
"coxcomb"
"codpiece"
"death-token"
"dewberry"
"flap-dragon"
"flax-wench"
"flirt-gill"
"foot-licker"
"fustilarian"
"giglet"
"gudgeon"
"haggard"
"harpy"
"hedge-pig"
"horn-beast"
"hugger-mugger"
"jolthead"
"lewdster"
"lout"
"maggot-pie"
"malt-worm"
"mammet"
"measle"
"minnow"
"miscreant"
"moldwarp"
"mumble-news"
"nut-hook"
"pigeon-egg"
"pignut"
"puttock"
"pumpion"
"ratsbane"
"scut"
"skainsmate"
"strumpet"
"varlot"
"vassal"
"whey-face"
"wagtail";
Global sh_ar -> 0 0 0; ! temp array to hold adjs.
! note: *3* maximum.
object Room "A Room" ! A room to be insulted in.
with
description "Not much here...", ! Doesn't take much to be
has light; ! insulted. (-:
nearby Chair "chair" ! better sit down for this.
with
name "chair" "seat" "throne",
description "Looks sittable!",
has supporter; ! or can be thrown around...
[ sh_dupe_chk an l ret; ! filter duplicate insults.
ret=random(sh_ads-->0); ! random adjective to try.
if (an>0) { ! more than one adj to check?
for (l=0:l<an:l++) { ! loop though picked adjs.
if (sh_ar ->l == ret) return -1; ! duplicate found... exit.
}
}
return ret; ! no duplicate, return value.
];
[ sh_insult pre post an y c; ! generate insult.
c = random(3); ! 1 to *3* adjectives.
for (an=0:an<c:an++) { ! loop to pick adjectives.
do { y=sh_dupe_chk(an) } until (y>-1); ! loop until adj unique.
sh_ar ->an = y; ! add adj value to tmp array.
}
if (pre~=0) print (string) pre; ! address the victim!
for (an=0:an<c:an++) { ! loop through picked adjs.
print (string) sh_ads-->(sh_ar->an), " "; ! print adjectives, then
} ! ....
y = random(sh_nms-->0); ! pick the vile sobriquet
print (string) sh_nms-->(y); ! and print it...
if (post~=0) print (string) post; ! with post string, if any.
];
[ sh_insSub; sh_insult("Thou ", "!^"); ]; ! for the insult command...
! note the space, and ^....
[ Initialise;
Location = Room; ! here we are.
print "^^";
style bold; ! bold colour print mode.
sh_insult("Wherefore art thou, thou ", "?!^"); ! A pet name for Romeo...?
style roman; ! back to normal printing.
print " --Romeo And Juliet, II.ii.35 (paraphrased)^^";
return 2; ! Don't print game banner
];
Include "Grammar";
verb "insult" "ins" * -> sh_ins; ! make a quick insult cmd
! ************************************************************************
! My humble apologies to all Shakespeare fans and admirers everywhere!!!
! What would the Immortal Bard say if he could see this!? Shameful!! (-;
! ************************************************************************