#!/usr/bin/perl

# GnuTrout v.3.27 for XChat
#
# By Apollon Koutlides ( apollon@peftoulas.org )
#
# Latest version can be usually found at http://gnutrout.peftoulas.org
# 
# This is actually a heavily modified version of XTrout v1.24 - XChat edition 
# by core_dump ( www.coredumpcentral.org )
#
# Thanks to C. Ricudis for the slaps, sizes and trouts additions to the
# greeklish version. He also maintains the irssi version of GNUtrout.
#
# To use, just place it in your .xchat/ directory. Read the messages
# while XChat starts. SLAP YOUR HEART OUT! (don't forget to chmod ug+rx)

# Usage: /slap nick

$vnum ="3.27";
$vdate="Mar 25, 2003";
	@Gslaps = ("baraei", "kopanaei", "xtupaei", "kopanei", "sfaliarizei", 
		"skampilizei", "tsakizei", "sapatakiazei", "anaskolopizei", 
		"3epatwnei", "anaftoumpourdizei", "3eftilizei", "anagomwnei", 
		"upoba8mizei", "tapeinwnei", "slapernei", "apaytwnei", 
		"mpalamoutiazei", "sfyrixtrwnei", "3ekokkalizei", 
		"mpouzouriazei", "dernei", "3anteriazei", "mpogiatizei", 
		"karfwnei ston toixo", "kremaei sthn kremastra", "koutoupwnei",
		"xamoureyei", "bidwnei", "kontrapaksimadwnei", "sodomizei",
		"xastoukompoukwnei", "karfokwliazei", "psiloxastoukizei",
		"diamelizei", "apoka8hlwnei", "epimorfwnei", "katastrefei",
		"bombardizei", "molwpizei", "tzartzarei", "markarei"
	);
	@Gsizes = ("ena megalo", "ena mikro", "ena mesaio", "ena apaisio", 
		"ena periergo", "ena musthrio", "ena pardalo", "ena ashmanto", 
		"ena panubaro", "ena ogkwdes", "ena terastio", "ena TERAStio", 
		"ena TERAAAAASTIO", "ena tosodouli", "ena mikroskopiko", 
		"ena anepanalhpto", "ena uperoxo", "ena uperogko", 
		"ena uperbaro", "ena analato", "ena anosto", "ena lussariko", 
		"ena kafriko", "ena tria3oniko", "ena mwb", "ena kokkino", 
		"ena prasino", "ena wxro", "ena faiokitrino", "ena gloiwdes", 
		"ena kourniaxto", "ena fwliasmeno", "ena makigiarismeno", 
		"ena freskobammeno", "ena triplokaylwmeno", "miso", 
		"tria tetarta apo ena", "tessera kila", "ena trypio", 
		"ena tetragwno", "ena stroggylo", "ena makroulo", 
		"ena mouxliasmeno", "ena mprountzino", "ena tumpanismeno",
		"ena xrysopoikilto kai triploganwmeno", "ena mesaiwniko",
		"ena panakribo", "ena monadiko ki anepanalhpto",
		"polla kila", "mia preza", "duo doseis", "125ml",
		"thn akrh apo ena", "ena ricudi mesa se ena", "pente kommatia",
		"duo koutes me", "5-6 merides", "ena trifyllo gemismeno me",
		"miso paketo", "mia pita me tzatziki kai", "efta okades",
		"tesseris pikoteratonous", "ena taper",
		"mia kapota gemismenh me","dyo phrounies","45 kilowatt",
		"mia mpougatsa me", "mia mpougatsa me krema kai",
		"ena dipito me", "ena pentapito me jester kai"
	);
	@Gtrouts = ("gatopsaro", "poustopsaro", "xeli", "kouneli", "loukaniko", 
		"ntomperman", "pikatsou", "xelwnonintzaki", 
		"50kilo egxeiridio unix", "ricudi", "krom", "sivito", 
		"GnuLxUsr", "amoni", "3ifos", "spa8i", "gati", 
		"fountwto gataki", "sobietiko maxhtiko aeroskafos", "k0d", 
		"thanasonic", "hacker_rapper", "xortofago zompi", 
		"ptwma", "lexotanil", "pausipono", "kati", "tipota", 
		"agio diskopothro", "kolumph8ro3ulo", "UltraSparc", 
		"elkos stomaxou", "katitis", "tipitis", "porneio", "greekman", 
		"nautaki", "arisg", "mpourdelo", "upnodwmatio", "kangkourw", 
		"koala", "matzaflari", "Duke", "gkoumoutsoeides ergaleio", 
		"demonmass", "fulaxto", "masturbix", "emfuteuma silikonhs", 
		"daneiko buzompalo", "ska8ari", "kumbalo alalazon", 
		"kleidokumbalo", "piato", "piatini", "pagwto", "psugeio", 
		"sfageio", "foreio", "arkoudi", "nekrotafeio", "profulaktiko", 
		"LGU post", "kontaki epanalhptikhs karampinas", "pretenterh", 
		"baltoxionokotopoulo", "prionokordelini", "orni8oprwktometro", 
		"trikyklo", "soutzoukaki", "seed", "VAX", "UPS",
		"ageladopsaro", "xelidonoskylo", "gatopardo", 
		"periptero", "tsimpoukopsaro", 
		"xnoudwto mwb ricudi", "e8niko ypo8hkofylakeio", 
		"e8niko kapotofylakeio", "typografeio", "kourkoumpini", 
		"touloumpaki", "ekmek pagwto", "soublaki", "soutzoukaki", 
		"gyro", "fileto", "kanapedotsaperdoni", "donhth elefantwn", 
		"dipito me guro", "kaylitzeki", "giatagani", "thgani", 
		"tabano3ulo", "tabanoskylo", "mpardakoboulwma", "mousxar", 
		"outi", "biolontselo", "mpaso fender", "piano me oura", 
		"sosoni", "kasoni", "karxarini", 
		"kwloby8ometro anthxhshs mikrokymatwn", "tourloumpouki", 
		"apokomma epitaghs apo th syntaksh toy GnuLxUsr", 
		"kanapedokrebbato", "krebbatokanapedo", "dapedolwma", 
		"mini bus", "stratopedo", "pistoni", "papadopaidi",
		"melitzanontolmadaki", "arxidi ippokampou", 
		"karoto", "trifasiko donhth splhnas", 
		"empros8ogemes oplopolybolo", "kerato", 
		"diafano kapaki toualetas me louloudakia", "monitor", 
		"psygeio", "grafeio", "ploio", "kagiak", "kanw", 
		"dwdekametro istioforo", "katamaran", "almpouro", "bitzirello", 
		"ntoko", "stoko", "mploko", "floko", "kwlo maimous", 
		"sourkouflouti", "tzartzamouti", "kourloumpouti", 
		"xlourmpouflouti", "skourloumpouki", "gkournoulouki", 
		"tzartzano", "aggouri", "rapanaki", 
		"gourounoskylo", "kotogourouno", "elefantodonto", 
		"elefantopsaro", "maimoudogourouno", "alepoudopsaro", 
		"oxtaintso pyrobolo", "dekapentametro ricudopswlo", "mpouti", 
		"magnhtofwno me enswmatwmeno araph toy xarlem", "CISCO 7500", 
		"ippopotamoploio", "psuxopa8es kotopoulo", "CD player",
		"kounoupidi", "laxanoruzo", "smuridopano", "gualoxarto",
		"mu3oxarto", "e3apterugo", "xeroubeim", "paranufaki",
		"8ampogualo", "8ermometro", "ugrometro", "upo8eto", "klusma",
		"kouti mpiskota", "metewrologiko aerostato", "aeroskato",
		"salami aeros", "parizaki NIKAS", "agioklhma", "klado elaias",
		"markoutsi", "skampoudaki", "matsouki", "rabdi", "aplikater",
		"pistwtiko orio", "trapeziko embasma", "aneurusma",
		"apoli8wmeno dasos", "apoli8wmeno prasso", "apoli8wmeno peos",
		"boreio selas", "selaxi", "mparmpounokwlosfyrixtrwto mprokolo",
		"mprokolo", "brwmokwli", "diamanti tou neilou",
		"daxtulidi monopetro", "mhtsotakiko spasmo ths wmoplaths",
		"purkaulo", "hlektriko probato", "kalampaliki", "matsakwni",
		"skatotriftaki", "mousaki", "misologo", "tsifliki", "mpimpiki",
		"tsoulaki", "brwmero xnwto", "amerikaniko oplo akribeias",
		"tsou re laki", "3efoustixo laskwto", "tsibiliki",
		"sumboulio asfaleias", "maxi single", "mpostani",
		"tsopanoskylo", "asterisk", "shell account", "benzinadiko",
		"guradiko", "aerio enterou", "linux syscall", "press room",
		"mugoxesma", "tsagero", "spamoulo", "erkontision", "plunthrio",
		"kineziko plunthrio", "eirhneutiko swma",
		"swma kai aima kuriou", "mhlo3udo", "kotayro",
		"ippopotamosxari", "mpekaltsone", "gkousgkounh",
		"baltoxionokotopoutso", "drakotopoulo", "kanarinokero",
		"loukanikerato", "kourampiedokanape", "pswloxymezeki",
		"sivitzeki", "o tempora, o mores",
		"oloswmo omoiwma ths monserrat camballe", "karmpyrater",
		"mpyrokoutalo", "mpurokoili", "donhth ths christiane amanpour", 
		"irakino biologiko oplo", "irakino xhmiko oplo",
		"trikampouro kamhloprobato", "strou8okampo", "ippobatraxo",
		"kibwtio me efta tomous ths sobietikhs egkyklopaideias",
		"stratopedo ths 101hs aerometaferomenhs merarxias",
		"an8yposmhnago ths 32hs ilhs ippikou",
		"reservoir profylaktikou", "reservoir podhlatou",
		"trifasiko enallakth me mpataria rologiou",
		"kapaki apo mpoukali ouisky me ayth th malakia poy bazoun panw gia na mhn ksanagemizei",
		"psarobarkoulini", "epitaxunth tou CERN xwris httpd",
		"knowledge base tou galois",
		"remake tou the beauty and the beast me thn zwzw sapountzakh kai ton bella lugosi",
		"xrhsimopoihmeno spiral ths lianas kannelh",
		"mpastardo gio tou Saddam Hussain",
		"thleoptiko diaggelma tou Saddam Hussain",
		"elikoptero Apache me mod_perl",
		"aristero arxidi tou Mammwna", "kampine tou doktoros Calligari",
		"barews metaxeirismeno tampon TAMPAX", "en8umio tou Umm Qasr"
	);
	@Gamounts = ("ligaki", "kamposo", "arketa", "3ana kai mana", "aberta", 
		"agriws", "aberta kouberta",  "kai pali kai 3ana kai dwstou", 
		"af8onws", "oso pataei h gata", "oso pataei o elefantas", 
		"mia pi8amh", "dyo pi8ames", "miso litro"
	);
	@Gmanners = ("gurw trigurw", "agria", "xwris fobo kai pa8os", 
		"xwris anasa", "xwris salio", "meta periskepsews", "asustola", 
		"filosofhmena", "prosektika", "karateristika", "katakoutela", 
		"katakefala", "sta paparia", "piswplata", "atsala", 
		"sta moulwxta", "sta or8ia", "kanontas pirouetes", "banausa", 
		"trufera" , "xwris anastoles", "gluka", "me mprio", 
		"piswkollhta", "ntropala", "sto mati", "sto doksapatri", 
		"kourasmena", "anhsyxa", "en8ousiwdws", "maniokata8liptikws", 
		"ysterika", "en mesw fobikhs krishs kata DSM-IV", "anapoda",
		"sfaliaristera", "me akribeia tomahawk", "pitsikato"
	);

	#English version data

	@slaps = ("slaps", "spanks", "bitchslaps", "cockslaps", "molests",
		"karaslaps", "karaspanks", "superslaps", "violates",
		"terminates", "kills", "murders", "caresses", "humps",
		"dislocates", "deforms", "compiles", "configures",
		"dissects", "implements", "intoxicates", "stomps"
	);
	@sizes = ("a large", "a big", "a humongous", "an enormous", "a huge", 
		"a monstrous", "a smelly", "a giant", "a large, smelly", 
		"a bloody", "a disgusting", "a bloody, disgusting", 
		"a large, smelly, disgusting", "a mutant", "a", "an average", 
		"a rotting", "a fresh", "a stale", "a frosted", 
		"a disintegrating", "an obscene", "one helluva", "a groovin'", 
		"a dripping", "a sweaty", "an armored", "a slippery", 
		"a horny", "a cuddlesome", "a nonessential", "a darling", 
		"a tiny", "a mini", "a supermini", "a maxi", "a midi", 
		"a curious", "an elven", "an ogrish", "a ghastly", 
		"a nondescript", "a terse", "a verbose", "an intermediate",
		"an educated", "an abolished", "an illegal",
		"a malfunctioning", "an unbearable", "an immense"
	);
	@trouts = ("trout", "bass", "salmon", "largemouth bass", 
		"smallmouth bass", "sunfish", "bluegill", "walleye", 
		"pickerel", "crappie", "pike", "SHARK!!!", "carp", 
		"mackerel", "slimefish", "striped slimefish", "cherubfish", 
		"wimplefish", "hawkfish", "longnosed hawkfish", "boxfish", 
		"spiny boxfish", "eel", "blue-ribbon eel", "jawfish", 
		"yelloheaded jawfish", "cowfish", "longhorned cowfish", 
		"porkfish", "ribbonfish", "turkeyfish", "lionfish", 
		"stonefish", "crescent bass", "tiger bass", "whale", "cod", 
		"'68 Fender telecaster", "cursed +2 swordfish", "pikachu", 
		"dust puppy", "mutant philosopher", "ninja turtle", 
		"spiderman clone", "50lb unix manual", "ricudis", "krom", 
		"sivitos", "GnuLxUsr", "priest of Ptah", "anvil", 
		"chinese room argument", "historian", "bastard sword", 
		"scimitar", "soviet fighter aircraft", "Schroedinger's cat", 
		"Lara Croft", "k0d", "thanasonic", "hacker_rapper", 
		"Bjorn Borg zombie", "Jim Morrison corpse", "lexotanil", 
		"painkiller", "something", "nothing", "holy grail", 
		"monty python", "Alan Cox", "UltraSparc", "stomach ulcer", 
		"placenta", "whorehouse", "greekman", "nautaki", "arisg", 
		"archmage spellbook", "bedroom", "kangaroo", "koala", 
		"yosemite some", "thingummajig", "sexy cockfish", "Duke",
		"religious asshole", "Request For Comments", "salesman",
		"saleswoman", "bartender", "demonmass", "gauntlet of power",
		"amulet of invisibility", "pelican brief", "squicki",
		"masturbix", "floppy disk", "sloppy disk", "teapot",
		"buttplug", "silicon implant", "transvestite", "beetle",
		"cymbal", "bass drum", "lightness of being", "Groucho Marx",
		"Richard M. Stallman", "Eric S. Raymond", "cathedral",
		"GNUism", "paki", "anti-frost refrigerator", "wolf",
		"wolverine", "she-bear", "barnyard", "graveyard", "condom",
		"belly dance", "Mpougas", "b00gatsa", "heart of steel",
		"pretense", "Noam Chomsky", "LGU post"
	);
	@amounts = ("a bit", "a lot", "a few times", "several times", 
		"many times", "infinitely", "repeatedly", "continuously", "", 
		"persistently", "casually", "violently", "carefully", 
		"bravely", "prudently", "shamelessly", "brutally", 
		"murderously", "unstoppably", "like mad", "self-righteously", 
		"discriminantly", "handsomely", "massively", "heartily", 
		"terminally", "scornfully", "deliberately", "harshly", 
		"scrutinously", "obscenely", "through and through", 
		"remorsefuly", "painstakingly", "against all odds", 
		"intermittently", "tenderly", "sweetly", "honorably", 
		"sensuously"
	);
	@manners = ("around", "away", "right between the eyes", 
		"out of the way", "all the way down", "to kingdom come", 
		"to and fro", "up and down", "against the wall", 
		"right through the ceiling", "to the moon and back"
	);
IRC::add_command_handler("slap", "slap");
IRC::add_command_handler("bara", "bara");

IRC::print "GnuTrout v$vnum ($vdate) for XChat\nBy GnuLxUsr ( apollon\@vizzavi.gr )\n";
IRC::print "English Data: ".	scalar @slaps ." slaps, " .
				scalar @sizes ." sizes, ".
				scalar @manners ." manners, ".
				scalar @amounts . " amounts and ".
				scalar @trouts . " trouts.";
IRC::print "Usage: /slap nick\n";
IRC::print "\n";

IRC::print "Greeklish Data: ".	scalar @Gslaps ." slaps, " .
				scalar @Gsizes ." sizes, ".
				scalar @Gmanners ." manners, ".
				scalar @Gamounts . " amounts and ".
				scalar @Gtrouts . " trouts.";
IRC::print "Greeklish variant Usage: /bara nick\n";
IRC::print " --- Xtra TroutZ data by the infamous >ricudi<\n";

$rand1=$rand2=$rand3=$rand4=$rand5=0;

sub slap
{
	# Initialize just once
	if ($rand1==0) { srand; }
	# IRC::print("old:$rand1/$rand2/$rand3/$rand4");

	# Make sure we don't get the same value twice
	until ($rand1a!=$rand1 && $rand2a!=$rand2 && $rand3a!=$rand3 && $rand4a!=$rand4 && $rand5a!=$rand5) {
	  $rand1a = rand @amounts;
	  $rand2a = rand @manners;
	  $rand3a = rand @sizes;
	  $rand4a = rand @trouts;
	  $rand5a = rand @slaps;
	}

	$slap = @slaps[$rand5a];
	$amount = @amounts[$rand1a];
	$manner = @manners[$rand2a];
	$size = @sizes[$rand3a];
	$trout = @trouts[$rand4a];
	# IRC::print("new:$rand1a/$rand2a/$rand3a/$rand4a");

	# Save values so we can check for repetition
	$rand1=$rand1a;
	$rand2=$rand2a;
	$rand3=$rand3a;
	$rand4=$rand4a;
	$rand5=$rand5a;
	
	IRC::command("/me $slap @_ $manner $amount with $size $trout");
	return 1;
}

sub bara
{
	# Initialize just once
	if ($rand1==0) { srand; }
	# IRC::print("old:$rand1/$rand2/$rand3/$rand4");

	# Make sure we don't get the same value twice
	until ($rand1a!=$rand1 && $rand2a!=$rand2 && $rand3a!=$rand3 && $rand4a!=$rand4 && $rand5a!=$rand5) {
	  $rand1a = rand @Gamounts;
	  $rand2a = rand @Gmanners;
	  $rand3a = rand @Gsizes;
	  $rand4a = rand @Gtrouts;
	  $rand5a = rand @Gslaps;
	}

	$slap = @Gslaps[$rand5a];
	$amount = @Gamounts[$rand1a];
	$manner = @Gmanners[$rand2a];
	$size = @Gsizes[$rand3a];
	$trout = @Gtrouts[$rand4a];
	# IRC::print("new:$rand1a/$rand2a/$rand3a/$rand4a");

	# Save values so we can check for repetition
	$rand1=$rand1a;
	$rand2=$rand2a;
	$rand3=$rand3a;
	$rand4=$rand4a;
	$rand5=$rand5a;
	
	IRC::command("/me $slap to @_ $amount, $manner, me $size $trout");
	return 1;
}
