<!-- RUBY-BACKUP · part 459 -->
h other.',
  'No problem at all.', 'I got plenty.', 'Happy to help.',
  'We are all in this together.', 'Just pass it on.'
];
function generateKindCall(){
  var opener = KIND_OPENERS[Math.floor(Math.random()*KIND_OPENERS.length)];
  var item = KIND_ITEMS[Math.floor(Math.random()*KIND_ITEMS.length)];
  var context = KIND_CONTEXTS[Math.floor(Math.random()*KIND_CONTEXTS.length)];
  var response = KIND_RESPONSES[Math.floor(Math.random()*KIND_RESPONSES.length)];
  var followup = KIND_FOLLOWUPS[Math.floor(Math.random()*KIND_FOLLOWUPS.length)];
  /* build natural phrasing */
  var a;
  if(opener.indexOf('did you need')>=0 || opener.indexOf('Do you want')>=0 || opener.indexOf('look like')>=0){
    a = opener+' '+item+'? '+context.charAt(0).toUpperCase()+context.slice(1)+'.';
  }else if(opener.indexOf('saved you')>=0){
    a = opener+' '+item+'. '+context.charAt(0).toUpperCase()+context.slice(1)+'.';
  }else{
    a = opener+' '+item+'.';
  }
  return {a: a, b: response, c: followup};
}

/* FLIRTY — adult mode only */
var FLIRTY_OPENERS = [
  'Is it hot here or is it just you?',
  'Do you come to this plaza often?',
  'I noticed you from across the city.',
  'You have a beautiful laugh.',
  'Can I buy you a drink at the market?',
  'Yo check out that little shorty over there bruh, she lity'
];
var FLIRTY_FOLLOWUPS_EXTRA = [
  'I would not mind taking her to see her zodiac signs.'
];
var FLIRTY_RESPONSES = [
  'Smooth. I like that.',
  'Are you flirting with me?',
  'Maybe. Keep talking.',
  'You are cute. I will give you that.',
  'Is that your best line?'
];
var FLIRTY_FOLLOWUPS = [
  'It worked, did it not?',
  'Only with you.',
  'I try my best.',
  'Wait until you hear my second line.',
  'Let me take you to dinner and find out.'
];
function generateFlirtyCall(){
  var a = FLIRTY_OPENERS[Math.floor(Math.random()*FLIRTY_OPENERS.length)];
  var b = FLIRTY_RESPONSES[Math.floor(Math.random()*FLIRTY_RESPONSES.length)];
  var cc;
  /* the street guy finishes with the zodiac line */
  if(a.indexOf('shorty')>=0){
    cc = 'I would not mind taking her to see her zodiac signs.';
    b = 'Bruh, she heard you.';
  }else{
    cc = FLIRTY_FOLLOWUPS[Math.floor(Math.random()*FLIRTY_FOLLOWUPS.length)];
  }
  return {a: a, b: b, c: cc, flirty: true};
}

/* THE WOMAN AT THE DOOR — adult mode */
function womanAtDoor(){
  try{
    if(typeof isAdult==='function' && !isAdult()){
      codeStatus('18+ only');
      return;
    }
  }catch(e){}
  var div = document.createElement('div');
  div.id = 'woman-door';
  div.style.cssText = 'position:fixed;top:0;left:0;width:100%;height:100%;z-index:20000;background:rgba(15,5,15,0.97);display:flex;flex-direction:column;justify-content:center;align-items:center;color:#fff;font-family:Georgia,serif;text-align:center;';
  div.innerHTML = '<div style="font-size:14px;color:#888;letter-spacing:2px;margin-bottom:15px;">18+ ENCOUNTER</div>'
    + '<div id="door-words" style="font-style:italic;font-size:18px;line-height:2;max-width:600px;min-height:200px;"></div>'
    + '<div id="door-choices" style="margin-top:20px;"></div>';
  document.body.appendChild(div);
  var words = [
    'A woman walks into the room you are in.',
    'She looks at you.',
    'She turns and walks out the door.',
    'You follow. She is waiting outside.',
    'She looks you up and down and says:',
    '<span style="color:#ff66aa;font-size:20px;">"Hey. Do you have a girlfriend?"</span>'
  ];
  var w = document.getElementById('door-words');
  var i = 0;
  var wt = setInterval(function(){
    if(i < words.length){
      w.innerHTML += '<div style="margin:10px 0;opacity:0;animation:fadein 1s forwards;">'+words[i]+'</div>';
      i++;
    }else{
      clearInterval(wt);
      document.getElementById('door-choices').innerHTML =
        '<button onclick="doorAnswer(0)" style="margin:0 10px;padding:12px 30px;background:transparent;border:2px solid #ff66aa;color:#ff66aa;font-size:16px;border-radius:6px;cursor:pointer;">No</button>'
        + '<button onclick="doorAnswer(1)" style="margin:0 10px;padding:12px 30px;background:transparent;border:2px solid #ff66aa;color:#ff66aa;font-size:16px;border-radius:6px;cursor:pointer;">Yes</button>';
    }
  }, 1600);
}
function doorAnswer(yes){
  var w = document.getElementById('door-words');
  var ch = document.getElementById('door-choices');
  if(ch) ch.innerHTML = '';
  if(!yes){
    /* no girlfriend */
    w.innerHTML += '<div style="margin:12px 0;opacity:0;animation:fadein 1s forwards;"><span style="color:#ff66aa;">"What the hell? That is a shame."</span></div>';
    setTimeout(function(){
      w.innerHTML += '<div style="margin:12px 0;opacity:0;animation:fadein 1s forwards;">She hands you a code. <span style="color:#00ffff;">"Take my code. Click me later."</span></div>';
      setTimeout(function(){
        /* she gives a continuum code */
        try{
          var codes = JSON.parse(localStorage.getItem('ruby-codes')||'[]');
          codes.push('her-code-'+Dat