#!/usr/pkg/bin/perl

use CGI;
srand;

&get_players;
&get_conspiracies;
&make_truth;
&tell_truth;

sub log {

	open LOG, ">>log.txt";
	select LOG;
	print "-- ",$ENV{"REMOTE_ADDR"}," --\n";
	foreach (sort keys %players) {
		if ($players{$_} ne "random") {
			print "$_: $players{$_}\n";
		}
	}
	select STDOUT;
	close LOG;

}

sub get_players {

	$players=new CGI;
	$players{'v1'}=(defined $players->param('v1') && $players->param('v1') !~/^\s*$/)?$players->param('v1'):"random";
	$players{'v2'}=(defined $players->param('v2') && $players->param('v2') !~/^\s*$/)?$players->param('v2'):"random";
	$players{'c1'}=(defined $players->param('c1') && $players->param('c1') !~/^\s*$/)?$players->param('c1'):"random";
	$players{'c2'}=(defined $players->param('c2') && $players->param('c2') !~/^\s*$/)?$players->param('c2'):"random";
	$players{'a1'}=(defined $players->param('a1') && $players->param('a1') !~/^\s*$/)?$players->param('a1'):"random";
	$players{'a2'}=(defined $players->param('a2') && $players->param('a2') !~/^\s*$/)?$players->param('a2'):"random";
	$players{'l1'}=(defined $players->param('l1') && $players->param('l1') !~/^\s*$/)?$players->param('l1'):"random";
	$players{'l2'}=(defined $players->param('l2') && $players->param('l2') !~/^\s*$/)?$players->param('l2'):"random";
	$players{'h1'}=(defined $players->param('h1') && $players->param('h1') !~/^\s*$/)?$players->param('h1'):"random";
	$players{'h2'}=(defined $players->param('h2') && $players->param('h2') !~/^\s*$/)?$players->param('h2'):"random";

# &log;

	open PLAY, "./players.data" or die ("Can't open players.data\n");
	while ($line=<PLAY>) {
		chomp $line;
		if ($line=~/(^\w$)/) {
			$play=$1;
		} else {
			$randoms{$play}.=$line.",";
		}
	}
	close PLAY;
	foreach $a (keys %randoms) {
		$i=-1;
		$j=-1;
		chop $randoms{$a};
		@r=split(/,/,$randoms{$a});
		$subsc=$a."1";
		if ($players{$subsc} eq "random") {
			$i=int(rand scalar @r);
			$players{$subsc}=$r[$i];
		}
		$subsc=$a."2";
		if ($players{$subsc} eq "random") {
			$j=int(rand scalar @r);
			until ($j != $i) {
				$j=int(rand scalar @r);
			}
			$players{$subsc}=$r[$j];
		}
	}

}

sub get_conspiracies {

	$i=0;
	open CONSP, "./conspiracies.data";
	while ($line=<CONSP>) {
		if ($line=~/^-*\n$/) {
			$i++;
		} else {
			chomp $line;
			$consp[$i].=$line." ";
		}
	}
	close CONSP;

}

sub make_truth {

	$i=int(rand scalar @consp);
	$consp[$i]=~s/\[(\w\w)\]/$players{$1}/g;	
	while ($consp[$i]=~/\{(.*?)\}/) {
		$list=$1;
		@bits=split(/\//,$list);
		$ran=int(rand scalar @bits);
		$choice=$bits[$ran];
		$consp[$i]=~s/\{$list\}/$choice/;
	}

}

sub tell_truth {

	print ("content-type: text/html\n\n");
	open TEMPLT, "./conspiracy.template";
	while ($line=<TEMPLT>) {
		if ($line=~/\*\*CONSPIRATOR\*\*/) {
			print $players{'c1'};
		} elsif ($line=~/\*\*THEORY\*\*/) {
			print ("\"",$consp[$i],"\"");
		} else {
			print $line;
		}
	}
	close TEMPLT;

}
