soulmate

Checks which towns you shared with the other soul

目前为 2016-09-09 提交的版本。查看 最新版本

// ==UserScript==
// @name        soulmate
// @description Checks which towns you shared with the other soul
// @include     http://www.die2nite.com/*
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require     https://greasyfork.org/scripts/5392-waitforkeyelements/code/WaitForKeyElements.js?version=115012
// @grant       GM_addStyle
// @version 0.0.1.20160909003739
// @namespace https://greasyfork.org/users/64956
// ==/UserScript==

var twobj, uidtarget, cidade, sessao, extrato,ac,relink,ownId,season;
var prelink = "me?id=";
var poslink = ";sk=";
var colessaumlinks = [];

	
function alma () // changes soul page adding animated soul icon that will redirect to my town history (copying the uid of the target)
{
  $("div.score").append($('<a href="http://www.die2nite.com/#ghost/city?go=ghost/ingame;"><img src="http://data.die2nite.com/gfx/icons/item_soul_blue.gif" alt=""></a>'));
  uidtarget = ((document.URL).substring((document.URL.indexOf("d=")+2),document.URL.indexOf(";s")));
  twobj = $(".tid_user");
} 

function historia () // changes my previous towns page and does prior town filtering based on season difference between target and own soul
{
  if (twobj === undefined || uidtarget === "ttp://www.die2nite.com/#ghost/city?go=ghost/user"){}
  else{
   $(".side").width(470);
   $(".side > strong:nth-child(1)").append("'s towns shared with ");
   $(".side > strong:nth-child(1)").append(twobj);
   $(".side > strong:nth-child(1)").append("' soul");
   $(".side > strong:nth-child(1)").append($('<a class="button" id="botalma"><img src="http://data.twinoid.com/proxy/www.die2nite.com/img/icons/r_jsham.gif" alt=""> Analyse!</a>'));
   $("#botalma").click (analisarcidades);
   var tabela = document.getElementsByClassName("table")[0];
   sessao = document.URL.substring(document.URL.indexOf(";sk=")+4);
  
   ownId = $("a.tid_user:nth-child(2)").attr("href");
   ownId = ownId.substring((ownId.indexOf("d=")+2),ownId.indexOf(poslink));
        
   for (var i = 1, row; row = tabela.rows[i]; i++) {
     var colunazero = row.cells[0];
     if (parseFloat(colunazero.innerHTML) < knowseason(uidtarget)){
       $("tr:nth-child("+ (i+1) +")").hide();
       }
     else{
     var colunaum = row.cells[1];
     cidade = (colunaum.innerHTML).substring(colunaum.innerHTML.indexOf(prelink)+6,colunaum.innerHTML.indexOf(poslink));
     colessaumlinks.push(cidade);
     }
    }
  }
}

function analisarcidades() // server request + more deleting
{
  $('#botalma').removeClass('button');
  $('#botalma').addClass('button off');
  $('#botalma').off();
  
  alert("Our Shamans will work on your towns, please wait!");
    
    for (ac =0;ac<colessaumlinks.length;ac++){
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'http://www.die2nite.com/ghost/ingame?id='+
           colessaumlinks[ac]+';sk='+sessao+'' , false);
    xhr.setRequestHeader('X-Handler', 'js.XmlHttp');  
    xhr.send();
    extrato = xhr.response;
    if (extrato.contains(uidtarget) == true){ //adding soul icon and opeing on new tab function
      relink = "http://www.die2nite.com/#ghost/ingame?id="+colessaumlinks[ac]+";sk="+sessao;
      $("tr:nth-child("+ (ac+2) +") > td:nth-child(2) > a:nth-child(1)").replaceWith($('<a href="" target="_blank"><img src="http://data.die2nite.com/gfx/icons/item_soul_blue.gif" alt=""></a>'));
      $("tr:nth-child("+ (ac+2) +") > td:nth-child(2) > a:nth-child(1)").attr("href", relink);
    }
    else{
      $("tr:nth-child("+ (ac+2) +")").hide();
      }
}
  colessaumlinks = []; uidtarget ="";cidade="";sessao=""; //flushing some stuff
}

function knowseason (uidtarget) // function to detect which season the uid belongs
{
  if (parseFloat(uidtarget) < 37355){season= 0;}
  else if (parseFloat(uidtarget)<119425 && parseFloat(uidtarget)>37354){season =1;}
  else if (parseFloat(uidtarget)<156595 && parseFloat(uidtarget)>119425){season =2;}
  else if (parseFloat(uidtarget)<188375 && parseFloat(uidtarget)>156595){season =3;}
  else if (parseFloat(uidtarget)<221253 && parseFloat(uidtarget)>188375){season =4;}
  else if (parseFloat(uidtarget)<258960 && parseFloat(uidtarget)>221253){season =5;}
  else if (parseFloat(uidtarget)<278890 && parseFloat(uidtarget)>258960){season =6;}
  else if (parseFloat(uidtarget)<298610 && parseFloat(uidtarget)>278890){season =7;}
  else if (parseFloat(uidtarget)<322000 && parseFloat(uidtarget)>298610){season =8;}
  else if (parseFloat(uidtarget)<341302 && parseFloat(uidtarget)>322000){season =9;}
  else if (parseFloat(uidtarget)<356599 && parseFloat(uidtarget)>341302){season =10;}
  else if (parseFloat(uidtarget)<373535 && parseFloat(uidtarget)>356599){season =11;}
  else if (parseFloat(uidtarget)<381483 && parseFloat(uidtarget)>373535){season =12;}
  else {season=13;}
  return season;
}

waitForKeyElements (".tinyAction > form:nth-child(1) > select:nth-child(3)", alma); //detect soulpage
waitForKeyElements (".help:contains(This section displays a list of all your previous games.)", historia); //detect history page