-->

Cambios para el Rogue/Pícaro

Leyendo mis feeds habituales me encuentro con algo que me afecta en el juego… lista de cambios para mi clase, el rogue -pícaro-:

General
- Mejoras en la calidad de vida: Se han eliminado varios componentes (Herramientas de ladrón, Partículas explosivas) y se han hecho cambios en la habilidad de Venenos. Vamos a eliminar la habilidad de Venenos y a poner los venenos ya fabricados a la venta en los mercaderes. Esto debería liberar una buena cantidad de espacio en las bolsas.
- Emponzoñar: Ahora también aumenta la probabilidad de aplicar venenos en un 25% durante 2-6 segundos (dependiendo de los puntos de combo).
- Veneno hiriente: Ya no se acumula. La primera aplicación reduce ahora la sanación en un 50%.
- Veneno anestésico: Ahora también elimina un efecto de Enfurecer del objetivo.
- Evasión, Sprint, Esfumarse: Tiempo de reutilización reducido a 3 minutos. (Los talentos que reducen el tiempo de reutilización los rebajarán a 2 minutos.)
- Capa de las Sombras: Tiempo de reutilización aumentado a 2 minutos. (Elusión reduce ahora este tiempo a 1 minuto.)
- Se ha diseñado una nueva facultad de nivel 75. Va a ser una de las sorpresas más grandes ya que no estamos muy preparados aún para comentarla. Sólo diré que añadirá algo de la tan necesitada utilidad en grupos.
- Abanico de cuchillas: Normalización de arma para igualar la efectividad sin importar las armas que se empleen.

Asesinato
- Mutilar: Ya no requiere estar en la espalda del objetivo.
- Golpes despiadados: Este talento es demasiado “requerido” y se hará más accesible. Vigor reemplazará su lugar en la rama y se creará un nuevo talento para ocupar el lugar de Vigor.
- Descubrir debilidad: Se hará pasivo para eliminar la cantidad de efectos que saltan que o no afectan al juego o lo afectan de forma negativa.
- Pisando los talones: Ya no requiere un Eviscerar o Emponzoñar crítico. El remate tan sólo tiene que acertar.
- Sabor de la sangre: Ahora elimina cualquier efecto físico dañino en lugar de efectos de sangrado o magia. Los efectos de sangrado aún serán eliminados (ya que son físicos), pero también lo serán efectos como Golpe mortal, Disparo de puntería, Exponer armadura, etc.

Combate
- Contestación: Ahora genera un punto de combo.
- Especialización con mazas: Este talento ahora otorgará penetración de armadura al usar mazas. (También lo hará el talento de guerrero.)
- Desvío: Se reducirá a 3 rangos que darán un 2/4/6% de probabilidad de parada. Esto debería suavizar el requisito previo para Contestación.
- Especialización en armas de puño: Se unirá con Especialización en dagas.
- Especialización en dagas: Cambiará el nombre a Combate mano a mano, y se moverá a la fila 3.
- Especialización en doble empuñadura: Se moverá a la fila 1. Cambia la posición con Reflejos de relámpago, y aún necesita un poco más de “chiste”.
- Ventaja injusta y Detener la ejecución: Cambiarán a talentos más ofensivos / de utilidad (léase movilidad). Demasiada defensa en esta fila.
- Frenesí asesino: Normalización de arma para igualar la efectividad sin importar las armas que se empleen.

Sutileza
- Una fila 1 más atractiva para invitar a todo tipo de distribuciones.
- Menos talentos específicos de dagas para permitir más opciones de distribución.
- Acusaciones infundadas: Revisado. Este talento no encaja bien en su lugar actual. Puede que se baje más y/o se rediseñe.
- Danza de las Sombras: Un poco engorroso ahora mismo. Está previsto pulirlo y darle unos ajustes de diseño.

Fuente | TodoWoW

¡Estoy de mudanzarl!

Pues eso, estaré unos días mudandome a un servidor nuevo, si veis que algún día pasan cosas raras es por la inactividad del dominio debido al cambio de las DNS.

EDITADO: Si estáis viendo esto, ya véis mi sitio en un nuevo servidor.

Nueva adquisición: Eureka

No me pude resistir, Eureka Seven es una de las series que más me ha gustado es mucho tiempo, y su figura me gusta muchísimo, y más adelante caerá la de Talho ;)

World of Warcraft: Wrath of Lich King Video de introducción en Español

He subido el video de introducción del la próxima expansión de World of Warcraft a Wuapi, para que todos podáis verla en alta calidad online:

World of Warcraft: Wrath of Lich King Introducción en Español Alta Calidad (HD)

Intercambio P2P en Reino Unido

Causa:

Usuario de P2P en Reino Unido decide compartir un juego que posee en dichas redes. Sus creadores -TopWare Interactive- decidieron perseguir a quienes lo compartían por internet, y proponerles una multa de 300 libras (~380€) a cambio de no denunciarles, y en caso contrario llevándolos a juicio.

Dicho usuario es identificado y no acepta dicho trato, por lo que se le denuncia para ir a juicio, pero tampoco se presenta… resultado, multa de 16.000 libras (~20.200€).

Situación:

Más compañias se unen a dicha caza de brujas: Atari, Reality Pump, Techland y Codemasters.

El rayo de luz:

Peter Moore (presidente de EA Sports):

EA Sports boss Peter Moore has said he doesn’t support the move to sue consumers for illegal downloading - warning, “It didn’t work for the music industry.”

Traducción:

El jefe de EA Sports, Peter Moore, dice que no apoya el movimiento de demandar a los consumidores por descargas ilegales - atención, “No funciono para la industria musical.”

Ladies and gentlemen… sabias palabras de Peter Moore.

Fuentes | ElOtroLado [1] [2], GamesIndustry y BBC News UK

Funcion para evitar XSS en PHP

Navegando por internet me he encontrado con esto:

function RemoveXSS($val) {
   // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
   // this prevents some character re-spacing such as 
   // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs
   $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val); 

   // straight replacements, the user should never need these since they're normal characters
   // this prevents like 
   $search = 'abcdefghijklmnopqrstuvwxyz';
   $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
   $search .= '1234567890!@#$%^&*()';
   $search .= '~`";:?+/={}[]-_|\'\\';
   for ($i = 0; $i < strlen($search); $i++) {
      // ;? matches the ;, which is optional
      // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars 

      // @ @ search for the hex values
      $val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
      // @ @ 0{0,7} matches '0' zero to seven times
      $val = preg_replace('/(�{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;
   } 

   // now the only remaining whitespace attacks are \t, \n, and \r
   $ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
   $ra2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
   $ra = array_merge($ra1, $ra2); 

   $found = true; // keep replacing as long as the previous round replaced something
   while ($found == true) {
      $val_before = $val;
      for ($i = 0; $i < sizeof($ra); $i++) {
         $pattern = '/';
         for ($j = 0; $j < strlen($ra[$i]); $j++) {
            if ($j > 0) {
               $pattern .= '(';
               $pattern .= '(&#[xX]0{0,8}([9ab]);)';
               $pattern .= '|';
               $pattern .= '|(�{0,8}([9|10|13]);)';
               $pattern .= ')*';
            }
            $pattern .= $ra[$i][$j];
         }
         $pattern .= '/i';
         $replacement = substr($ra[$i], 0, 2).''.substr($ra[$i], 2); // add in <> to nerf the tag
         $val = preg_replace($pattern, $replacement, $val); // filter out the hex tags
         if ($val_before == $val) {
            // no replacements were made, so exit the loop
            $found = false;
         }
      }
   }
   return $val;
}

Muchos proyectos cerrados

Era inebitable. Ahora que tengo trabajo mi tiempo libre se vuelve a reducir considerablemente -sin contar otras obligaciones- y he querido realizar proyectos demasiado grandes para querer llevarlos yo solo.

La Wiki ha sido cerrada y borrada, así como otros proyectos que tenía en mente llevar a cabo también han sido dados por finalizados (más bien tirados…).

De momento voy a centrarme en seguir programando algunas cosas con php, que es lo que puedo hacer con agilidad, y tengo ya unos -pequeños- proyectillos en mente que espero pueda llevar a cabo, ya sabéis… nunca me rindo. ;)

Eliminar duplicados con MySQL

Un pequeño truco para eliminar duplicados de una tabla de MySQL que he necesitado:

ALTER IGNORE TABLE tabla ADD UNIQUE INDEX(campo_que_no_se_tiene_que_repetir);

Pero como el campo era texto y no tenía tamaño, no pude usarla, así que tiré de esta que encontré en Justin Cook:

Creamos una nueva tabla sin repetidos:

CREATE TABLE tabla_sin_duplicados AS
SELECT * FROM tabla WHERE 1 GROUP BY campo_que_no_se_tiene_que_repetir;

Borramos la antígua tabla y renombramos la nueva:

DROP TABLE tabla;
RENAME TABLE tabla_sin_duplicados TO tabla;

38.6277% Geek - Test Geek

Realizado el test friki (por segunda o tercera vez ya xD) y mi puntuación. Esta vez me lo pasó mi colega Juanpa.

Si quieres hacerlo tú también pincha el siguiente enlace:

i am a major geek

Código PHP: Algoritmo de Zeller

Hoy me ha sido necesario usar el algoritmo de Zeller para un proyecto, tenía por ahí el código de C usado en clase, y lo he pasado a PHP, por si alguien lo necesita:

$days = array("Domingo", "Lunes", "Martes",
"Miércoles", "Jueves", "Viernes", "Sábado");

function zeller($year, $month, $day)
{
        if ($month <= 2)
        {
                $month = $month + 10;
                $year = $year - 1;
        }
        else
        {
                $month = $month - 2;
        }
        $a = $year % 100;
        $b = $year / 100;
        return (700 +
                ((26 * $month -2) / 10) +
                $day +
                $a +
                $a / 4 +
                $b / 4 -
                2 * $b
                ) % 7;
}

La función devuelve 0 si es Domingo, 1 si es Lunes… y así sucesivamente.

Información | Wikipedia - Congruencia de Zeller