<?php

if (isset($_GET['sauce'])) { highlight_file(__FILE__); die(); }

// Data.

global $subjects, $actions;

// Subjects.
// 0 = male
// 1 = female
// 2 = genderless
// 3 = me
// -1 = random
$subjects = array(
  'i' => 3,
  'my little sister' => 1,
  'oniichan' => 0,
  'my childhood friend' => 1,
  'oneesama' => 1,
  'my pet dog' => -1,
  'imouto-chan' => 1,
  'my girlfriend' => 1,
  'my boyfriend' => 0,
  'society' => 2,
  'my personal maid' => 1,
  'princess newfag' => 1,
  'the student council leader' => -1,
  'sensei' => -1,
  'this idol i like' => 1,
  'my rock band\'s singer' => 0,
  'my imouto' => 1,
  'my little tsundere' => 1,
  'my burning terrorist' => 0,
  'my crossdressing friend' => -1,
  'that mysterious transfer student' => -1,
  'my grandmother' => 1,
  'my secret daughter' => 1,
  'my opposite sex clone' => -1,
  'ojou-sama' => 0,
  'my waifu' => 1,
  'my stalker' => -1,
  'the demon overlord' => 0,
  'the board moderator' => -1, 
);

// Actions.
// %o = object
// %p = pronoun
// %a = appropriate form of to be
// %h = appropriate form of to have
// %v[$m|$s|$p] = $m if subject is me, $s if singlar, $p if plural.
// %t($c,$p) = $c if tense is current, else $p.
//
// 0: no subject
// 1: subject
$actions = array(
  '%t(rape%s,raped) %o' => 1,
  '%t(sell%s,sold) %p body' => 1,
  '%a a CIA agent' => 1,
  '%t(work%s,worked) for the NSA' => 1,
  '%h inverted nipples' => 1,
  '%h an STD' => 1,
  '%t(write%s,wrote) H-fiction' => 1,
  '%t(%v[don\'t|doesn\'t|don\'t],didn\'t) realize it' => 1,
  '%a not toilet trained' => 1,
  '%t(hate%s,hated) me' => 1,
  '%a a misandrist vampire' => 1,
  '%a dead' => 1,
  '%t(can,could) read kanji' => 1,
  '%a a lovecraftian horror' => 1,
  '%t(molest%s,molested) people on the train' => 1,
  '%a kicked in the nuts' => 1,
  '%t(beat%s,beated) %p up every day' => 1,
  '%h a penis' => 1,
  '%a not toilet trained' => 1,
  '%t(hate%s,hated) me' => 1,
  '%t(browse%s,browsed) 2chan' => 1,
  '%t(write%s,wrote) a light novel' => 1,
  '%a addicted to eroge' => 1,
  '%a %v[the president|the president|navy officers]' => 1,
  '%a %v[a drug lord|a drug lord|drug lords]' => 1,
  'won\'t call %p master' => 1,
  '%a %v[a serial killer|a serial killer|serial killers]' => 1,
  '%a my new sibling' => 1,
  '%a dereDere' => 1,
  '%a secretly %v[a dragon|a dragon|a bunch of dragons]' => 1,
  '%a %v[a shitposter|a shitposter|a bunch of shitposters]' => 1,
  '%a %v[a reptilian|a reptilian|a bunch of reptilians]' => 1,
  '%a actually gay' => 1,
  'still %v[love|loves|love] %o' => 1,
  '%h to kill %o' => 1,
  '%a %v[a communist|a communist|a bunch of communists]' => 1,
  '%p ass is literally a penis' => 0,
  'that\'s %p fetish' => 0,
  'only %t(want%s,wanted) %p poop' => 1,
  '%a %v[an mi5 agent|an mi5 agent|a secret mi5 agent squad] to protect %p virginity' => 1
);

// Connectors.
// 0 = force past tense
// 1 = force present tense
// -1 = random
$connectors = array(
  'while' => 1,
  'because' => 1,
  'but only while' => 1,
  'but only because' => 1,
  'also' => -1,
  'and' => 1,
  'and now' => 1,
  'until' => 0,
  'but at least' => -1,
  'despite that' => -1,
  'so' => 1,
  'but only because' => -1,
  'but the fact remains' => 1
);


// !!! HERE BE DRAGONS !!!
function mksentence($prev = '', $prevgender = '', $tense = 1) {
  global $subjects, $actions;
  
  $res = '';
  if ($prevgender) {
    if (!rand(0, 3)) {
      $subject = array_rand($subjects);
      $gender = $subjects[$subject];
      if ($gender == -1) {
        $gender = rand(0, 1);
      }
    } else {
      $subject = ($prevgender == 0 ? 'he' : ($prevgender == 1 ? 'she' : ($prevgender == 2 ? 'they' : ($prevgender == 3 ? 'I' : ''))));
      $gender = $prevgender;
    }
  } else {
    if (rand(0, 3)) {
      $subject = array_rand($subjects);
    } else {
      $subject = 'i';
    }
    $gender = $subjects[$subject];
    if ($gender == -1) {
      $gender = rand(0, 1);
    }
  }
  
  do {
    $action = array_rand($actions);
    $orig = $action;
  } while ($action == $prev);
  if ($actions[$action]) {
      $res .= $subject;
  }

  $action = str_replace('%a', ($tense ? ($gender < 2 ? 'is' : ($gender == 3 ? 'am' : 'is')) : ($gender == 2 ? 'was' : 'was')), $action);
  $action = str_replace('%h', ($tense ? ($gender == 3 ? 'have' : 'has') : 'had'), $action);
  $action = str_replace('%p', $gender == 0 ? 'his' : ($gender == 1 ? 'her' : ($gender == 2 ? 'their' : ($gender == 3 ? 'my' : ''))), $action);
  $action = str_replace('%s', $gender == 3 || $gender == 2 ? '' : 's', $action);
  $action = preg_replace('/%v\[(.*?)\|(.*?)\|(.*?)\]/', $gender == 3 ? '$1' : ($gender == 2 ? '$3' : '$2'), $action);

  if (strstr($action, '%o')) {
    $osubject = array_rand($subjects);
    $action = str_replace('%o', $osubject, $action);
    if (rand(0, 1)) {
      $gender = $subjects[$osubject];
      if ($gender == -1) {
        $gender = rand(0, 1);
      }
    }
  }
  $res .= ' ' . $action;
  
  return array($res, $orig, $gender);
}

// Sentence forming
list($res, $prev, $prevgender) = mksentence();
$c = 1;
if (rand(0, 4)) {
  // Add another sentence.
  $connector = array_rand($connectors);
  $c = $connectors[$connector];
  if ($c == -1) {
    $c = rand(0, 1);
  }

  $res = trim($res) . ', ' . $connector . ' ' . mksentence($prev, $prevgender, $c)[0];
}
$res = preg_replace('/\%t\((.*?)\,(.*?)\)/', $c ? '$1' : '$2', $res);
$res = ucwords($res) . '!';

?>
<!--<h1 color="red">this version is ancient. go <a href="lncovers.php">here</a>.</h1>-->
<title>LN title generator</title>
<center>
<h1><?php echo htmlentities($res); ?></h1>
<p><a href="ln.php">F5</a></p>
</center>
