Acme-ConspiracyTheory-Random

 view release on metacpan or  search on metacpan

lib/Acme/ConspiracyTheory/Random.pm  view on Meta::CPAN

		if ($mcp) {
			$is = 'are';
			$has = 'have';
			$was = 'were';
		}
		push @x, (
			"everybody knows $mc $is real",
			sub { "$mc $has been researched by ${ \ shady_group($redstring) } $time" },
			sub { "$mc $was used to conceal ${ \ shady_group($redstring) } $time" },
			sub { "$mc $was used to infiltrate ${ \ shady_group($redstring) }" },
		);
	}

	if ( my $ft = $redstring->{future_time} ) {
		push @x, (
			"some of the few people still alive $ft time-travelled back to tell us",
			"the people still alive $ft sent us hidden messages in ${ \ fiction() }",
			"it will all become clear $ft",
		);
	}

	if ( my $d = $redstring->{disease} ) {
		push @x, (
			"patients with $d keep disappearing from hospitals",
			"patients with $d are being silenced by the government",
			"doctors working on $d are being killed",
			"$d probably isn't even a real disease",
			"nobody has ever died of $d",
		);
	}

	if ( my $f = $redstring->{food} ) {
		push @x, (
			"$f don't taste like they used to",
			"$f smell funny",
			"$f make me feel sick",
			"I don't like $f",
		);
	}

	if ( my $chem = $redstring->{chemicals} ) {
		push @x, (
			"$chem isn't on the periodic table",
			"$chem isn't real",
			"$chem isn't natural",
			"you'd have to be stupid to think $chem is real",
		);
	}

	if ( my $r = $redstring->{precious_resource} ) {
		my ( $bad, $are, $r_are );
		$redstring->{shady_group}{name} or shady_group( $redstring );
		foreach ( qw/ antagonist protagonist shady_group / ) {
			if ( $redstring->{$_}{name} ) {
				$bad = $redstring->{$_}{name};
				$are = $redstring->{$_}{plural} ? 'are' : 'is';
				$r_are = ($r =~ /s$/) ? 'are' : 'is';
			}
		}
		push @x, (
			"the Wikipedia entry for $r keeps getting edited by $bad",
			"$bad keeps buying $r secretly on the stock market",
			"the global supply of $r is at an all time low",
			"have you ever seen $r for real with your own eyes",
			"$r $r_are so damn expensive",
			"$r $r_are really rare",
			"Alex Jones says $bad $are linked to $r",
		);
	}

	if ( my $topic = $redstring->{topic} ) {
		my $topicname = $topic->{name};
		my $have      = $topic->{plural} ? 'have' : 'has';
		push @x, (
			"there's hidden clues in the Wikipedia page about $topicname",
			"THEY let it slip during an edit war in a Wikipedia page about $topicname",
			"Bible numerology has clues about $topicname",
			"the Voynich manuscript has clues about $topicname",
			"$topicname $have always been suspicious",
			"$topicname $have connections to THEM",
			"nobody really understands $topicname",
			"all my posts about $topicname keep getting taken down by Tumblr",
		);
	}

	if ( my $p = $redstring->{random_place} // $redstring->{bad_place} ) {
		my $bad = $redstring->{antagonist}{name}
			// $redstring->{protagonist}{name}
			// $redstring->{shady_group}{name}
			// shady_group( $redstring );
		push @x, (
			"the Wikipedia entry for $p keeps getting edited by $bad",
			# This has singular/plural problems - how to solve?
			"$bad has ties to $p",
			"$p probably isn't a real place anyway",
			"$p isn't shown on any maps",
		);
	}

	for my $actor ( qw/ protagonists antagonists / ) {
		next unless $redstring->{$actor}{name};
		
		my $name   = $redstring->{$actor}{shortname} // $redstring->{$actor}{name};
		my $have   = splural( $redstring->{$actor} ) ? 'have' : 'has';
		my $are    = splural( $redstring->{$actor} ) ? 'are'  : 'is';
		my $s      = splural( $redstring->{$actor} ) ? ''     : 's';
		my $ies    = splural( $redstring->{$actor} ) ? 'y'    : 'ies';
		
		( my $fbname = $name ) =~ s/^the //i;
		$fbname = _UCFIRST_ $fbname;

		my $lies = lies();
		
		push @x, (
			"$name $have included it in their manifesto",
			"$name $have been strangely quiet about it",
			"$name $are always untrustworthy",
			"$name $are controlling everything",
			"if you Google for $name there's loads of info",
			"the '$fbname Truth' Facebook page says so",
			"the '$fbname Exposed' website says so",
			"$name even admit$s it",
			"$name den$ies it but that is $lies",
		);
		
		if ( my $animal = $redstring->{real_animal} // $redstring->{fake_animal} ) {
			push @x, "$name $have a picture of the $animal on their Wikipedia entry";
		}
		
		if ( my $place  = $redstring->{random_place} ) {
			push @x, "$name $have a secret base in $place";
		}
		
		if ( my $topic = $redstring->{topic} ) {
			my $topicname = $topic->{name};
			push @x, (
				"$name ${( $redstring->{$actor}{plural} ? \'keep' : \'keeps' )} editing the Wikipedia page about $topicname",
				"$name $are known to have ties to $topicname",
				"'$name' is almost an anagram of '$topicname'",
				"'$name' is the Hebrew word for '$topicname'",
				"'$name' is an anagram of '$topicname' (if you spell it wrong)",
			);
		}
	}

	my @evidences = List::Util::uniq( map { _RANDOM_(@x) } 1..2 );
	
	if ( @evidences == 2 ) {
		my ( $e1, $e2 ) = @evidences;
		return _RANDOM_(
			"You can tell this is the truth because $e1, and $e2.",
			( ( "I know because $e1, and $e2." ) x 6 ),
			"You just need to connect the dots. " . _UCFIRST_( "$e1 and $e2." ),
			"I used to be asleep like you, but then I saw the clues. " . _UCFIRST_( "$e1, and $e2. WAKE UP!" ),
			"THEY HIDE THE TRUTH IN PLAIN SIGHT. " . _UCFIRST_( "$e1, and $e2." ),
			"You won't believe how deep the rabbit hole goes. " . _UCFIRST_( "$e1, and $e2." ),
			sub { _UCFIRST_("$e1, and $e2. " . fatuous()) },
			sub {
				my $e3 = uc _RANDOM_(@x);
				my $fatuous = fatuous();
				_UCFIRST_( "$e1, and $e2. $fatuous $e3!" );
			},
			sub {
				my $e3 = uc _RANDOM_(@x);
				_UCFIRST_( "$e1, and $e2. They leave clues to mock us! $e3! MOCK! MOCK!" );
			},
			sub {
				my $t = {};
				theory($t);
				_UCFIRST_( "$e1, and $e2. Isn't it obvious? Also: " . $t->{base_theory} );
			},
		);
	}
	elsif ( @evidences == 1 ) {
		my ( $e1 ) = @evidences;
		return _RANDOM_(
			"You can tell the truth because $e1.",
			_UCFIRST_("$e1 and that reveals the truth."),
			"The truth is obvious if you're not a sheep, $e1.",
		);
	}
	
	return _RANDOM_(
		'The truth is plain to see.',
		"You're blind if you can't see the truth.",
		"The truth is obvious if you're not a sheep.",
	);
}

sub hidden_truth {
	my $redstring = shift // {};
	
	my $truth = _RANDOM_(
		sub { # wrap classics in a sub so they don't come up too often
			_RANDOM_(
				sub {
					$redstring->{topic} = { name => 'geology', plural => 0 };



( run in 1.340 second using v1.01-cache-2.11-cpan-d7f47b0818f )