<?
//función para leer elementos de un archivo
function randfile($file) {
$data = file($file);
return $data[rand(0, count($data)-1)];}



//numero de personajes generados simultaneamente
$numero=300;


for ($cont=0; $cont<$numero; $cont++)
{

// Cantidad de puntos de características
if(rand(1,3)=="1")
{
$PC = rand(24,160);
}
else
{
$PC = rand(12,70);
}

//máximo en atributos
$maximo=$PC/5;
//valor mínimo en atributos.
$minimo=$PC/15;

if($minimo<1){$minimo=1;}

//máximo en habilidades
$maximo2=$maximo;
$minimo2=$minimo;

// tipo de criatura

$descripcióninicial= array
 (
 "1"=>"Construcción mecánica, ",
 "2"=>"Criatura no muerta, ",
 "3"=>"Criatura no muerta, ",
 "4"=>"Criatura salvaje, ",
 "5"=>"Criatura salvaje, ",
 "6"=>"Criatura salvaje, ",
 "7"=>"Criatura salvaje, ",
 "8"=>"Criatura salvaje, ",
 "9"=>"Criatura salvaje, ",
 );
$i=rand(1,9);

$descripcióninicial=$descripcióninicial[$i];

//asignaciónde atributos

Do {
$hab=rand($minimo,$maximo);
$hab=$hab/2; //las criaturas salvajes no pueden tener la Habilidad muy alta :)
$fue=rand($minimo,$maximo);
$con=rand($minimo,$maximo);//61
$per=rand($minimo,$maximo);
$des=rand($minimo,$maximo);
$vol=rand($minimo,$maximo);
$int=rand($minimo,$maximo);
$car=rand($minimo,$maximo);
$sumaAT=($fue+$con+$per+$des+$vol+$int+$hab+$car);
}while($sumaAT!=$PC);

//asignación de habilidades 

$Concentracion=rand($minimo2,$maximo2);
$Atletismo=rand($minimo2,$maximo2);
$Intimidar=rand($minimo2,$maximo2);
$Punteria=rand($minimo2,$maximo2);
$Supervivencia=rand($minimo2,$maximo2);
$Sigilo=rand($minimo2,$maximo2);
$Alerta=rand($minimo2,$maximo2);
$Pelea=rand($minimo2,$maximo2);

$sumaHAB=$Atletismo+$Intimidar+$Puntería+$Supervivencia+$Sigilo+$Alerta+$Pelea;

$m="rasgosmele.txt";
$d="rasgosdistancia.txt";

// modificaciones para que las máquinas no puedan usar magia y tengan rasgos propios

if($descripcióninicial=="Construcción mecánica, ")
{
 $m="rasgosmelemaquina.txt";
 $d="rasgosdistanciamaquina.txt";
 if ($per+$Punteria<$vol+$Concentracion)
 {
  $variable=$per;$per=$vol;$vol=$variable;$variable=$Punteria;$Punteria=$Concentracion;$Concentracion=$variable;
  $azar=rand(1,2); 
  if($per+$Punteria>$fue+$Pelea and $azar=="1")
  {
   $variable=$per;$per=$fue;$fue=$variable;$variable=$Punteria;$Punteria=$Pelea;$Pelea=$variable;
  }
 }
}

// modificación para los nio muertos, para que resulten más atemorizantes

if($descripcióninicial=="Criatura no muerta, ")
{
  $Intimidar=$Intimidar+(rand(1,10));

}

$cadenahab= "Concentración: ".$Concentracion.", Atletismo: ".$Atletismo.
", Intimidar :".$Intimidar. ", Puntería: ".$Punteria. ", Supervivencia: ".$Supervivencia. ", Sigilo: ".$Sigilo
.", Alerta: ".$Alerta.", Pelea: ".$Pelea.".";

//Rasgos y nivel de desafío

If($fue+$Pelea>=$per+$Punteria and $fue+$Pelea>=$vol+$Concentracion)
{
  $maximo3=$fue;

  do{
  $rasgo1=trim(randfile($m));
  $rasgo2=trim(randfile($m));
  $rasgo3=trim(randfile("rasgosdefensivos.txt"));
    $azar=rand(1,2);
    If($azar=="1")
    {  $rasgo4=trim(randfile("rasgosgenericos.txt"));}
    else{$rasgo4=trim(randfile($d));}
  $rasgo5=trim(randfile("rasgosgenericos.txt"));
  }while ($rasgo1==$rasgo2 or $rasgo4==$rasgo5);
  $v1=rand($minimo2,$maximo3);
  $v2=rand($minimo2,$maximo3);
  $v3=rand($minimo2,$con);
  $v4=rand($minimo2,$maximo2);
  $v5=rand($minimo2,$maximo2);
  if($v1>=$v2){$vt=$v1;}else{$vt=$v2;}

 $desafio= "Normalmente, combate cuerpo a cuerpo. Nivel de desafío igual a "; 
 $val_des=(($fue+$Pelea)+($des+$pelea)+($v3*2)+$vt+($con*3))/10;

}

else//pelea
{
 If($per+$Punteria>=$vol+$Concentracion)
  {
    $maximo3=$per;
    do
    {
    $rasgo1=trim(randfile($d));
    $rasgo2=trim(randfile($d));
    $rasgo3=trim(randfile("rasgosdefensivos.txt"));
    $azar=rand(1,2);
     If($azar=="1")
     {  $rasgo4=trim(randfile($m));}
     else{$rasgo4=trim(randfile("rasgosgenericos.txt"));}
    $rasgo5=trim(randfile("rasgosgenericos.txt"));
    }while ($rasgo1==$rasgo2 or $rasgo4==$rasgo5);
   
   $v1=rand($minimo2,$maximo3);
   $v2=rand($minimo2,$maximo3);
   $v3=rand($minimo2,$con);
   $v4=rand($minimo2,$maximo2);
   $v5=rand($minimo2,$maximo2);
   if($v1>=$v2){$vt=$v1;}else{$vt=$v2;}
   
   $desafio=  "Prefiere realizar ataques rápidos, salvaguardando las distancias. Nivel de desafío igual a "; 
   $val_des=(($per+$Punteria)+($des+$pelea)+($v3*2)+$vt+($con*3))/10;
  }
 else 
  {
   $maximo3=$int;
   do
   {
   $rasgo3=trim(randfile("rasgosdefensivos.txt"));
   $azar=rand(1,2);
    If($azar=="1")
     {  $rasgo4=trim(randfile("rasgosmele.txt"));}
     else{$rasgo4=trim(randfile("rasgosgenericos.txt"));}
   $azar=rand(1,2);
     If($azar=="1")
     {  $rasgo5=trim(randfile("rasgosgenericos.txt"));}
     else{$rasgo5=trim(randfile("rasgosdistancia.txt"));}
   }while ( $rasgo4==$rasgo5);
   $v1=rand($minimo2,$maximo3);
   $v2=rand($minimo2,$maximo3);
   $v3=rand($minimo2,$con);
   $v4=rand($minimo2,$maximo2);
   $v5=rand($minimo2,$maximo2);
   if($v1>=$v2){$vt=$v1;}else{$vt=$v2;}
   
   If($vol>=$car)
   {//if voluntad
    $azar=rand(1,3);
    if ($azar==1)
    {
      do
      {
      $rasgo1=trim(randfile("rasgosbrujeria.txt"));
      $rasgo2=trim(randfile("rasgosbrujeria.txt"));
      }while ($rasgo1==$rasgo2);
     $Brujeria=rand($Concentracion,$maximo2);
     $sumaHAB=$sumaHAB+$Brujeria;
     $cadenahab=$cadenahab. " Brujería: ".$Brujeria;
     $desafio= "Prefiere luchar a distancia, utilizando sus malignas artes oscuras. Nivel de desafío  igual a "; 
     $val_des=(($vol+$Brujeria)+($des+$pelea)+($v3*2)+$vt+($con*3))/10;
    }
    if ($azar==2)
    {
      do
      {
      $rasgo1=trim(randfile("rasgosnigromancia.txt"));
      $rasgo2=trim(randfile("rasgosnigromancia.txt"));
      }while ($rasgo1==$rasgo2);
     $Nigromancia=rand($Concentracion,$maximo2);
     $sumaHAB=$sumaHAB+$Nigromancia;
     $cadenahab=$cadenahab. " Nigromancia: ".$Nigromancia;
     $desafio= "En combate, suele utilizar su dominio mágico sobre la vida y la muerte. Nivel de desafío  igual a  "; 
     $val_des=(($vol+$Nigromancia)+($des+$pelea)+($v3*2)+$vt+($con*3))/10;
    }
    if ($azar==3)
    {
     do
     {
      $rasgo1=trim(randfile("rasgosnigromancia.txt"));
      $rasgo2=trim(randfile("rasgosbrujeria.txt"));
      $azar=rand(1,2);//176
      if($azar=="1")
      {
       $rasgo4=trim(randfile("rasgosnigromancia.txt"));
      }
      $azar=rand(1,2);
      if($azar=="1")
      {
       $rasgo5=trim(randfile("rasgosbrujeria.txt"));
      }
     }while ($rasgo1==$rasgo2 or $rasgo4==$rasgo5);
     $Nigromancia=rand($Concentracion,$maximo2);
     $Brujeria=rand($Concentracion,$maximo2);
     $sumaHAB=$sumaHAB+$Nigromancia+$Brujeria;
     $cadenahab=$cadenahab. " Nigromancia: ".$Nigromancia. ", Brujería: ".$Brujeria;
     if($Nigromancia>=$Brujeria)
      { 
       $desafio= "Suele utilizar sus múltiples cualidades mágicas para combatir. Nivel de desafío  igual a "; 
       $val_des=(($vol+$Nigromancia)+($des+$pelea)+($v3*2)+$vt+($con*3))/10;
      }
      else
      {
       $desafio= "Suele utilizar sus múltiples cualidades mágicas para combatir. Nivel de desafío  igual a "; 
       $val_des=(($vol+$Brujeria)+($des+$pelea)+($v3*2)+$vt+($con*3))/10;
      }
    }
   } //if volunad
   else 
   {
    $azar=rand(1,3);
    if($descripcióninicial=="Criatura no muerta, "){$azar=1;}//los no muertos no pueen usar druidismo
    If($azar=="1")
    {
      do
      {
      $rasgo1=trim(randfile("rasgosilusionismo.txt"));
      $rasgo2=trim(randfile("rasgosilusionismo.txt"));
      }while ($rasgo1==$rasgo2);
     $Ilusionismo=rand($Concentracion,$maximo2);
     $sumaHAB=$sumaHAB+$Ilusionismo;
     $cadenahab=$cadenahab. " Ilusionismo: ".$Ilusionismo;
     $desafio= "Le encanta engatusar y confundir a sus enemigos con sortilegios místicos. Nivel de desafío  igual a "; 
       $val_des=(($car+$Ilusionismo)+($des+$pelea)+($v3*2)+$vt+($con*3))/10;
    }
    If($azar=="2")
    {
      do
      {
      $rasgo1=trim(randfile("rasgosdruidas.txt"));
      $rasgo2=trim(randfile("rasgosdruidas.txt"));
      }while ($rasgo1==$rasgo2);
     $Druidismo=rand($Concentracion,$maximo3);
     $sumaHAB=$sumaHAB+$Druidismo;
     $cadenahab=$cadenahab. " Druidismo: ".$Druidismo;
     $desafio= "Cuando tiene que combatir, uliza su dominio mágico sobre el mundo natural. Nivel de desafío  igual a  "; 
       $val_des=(($vol+$Druidismo)+($des+$pelea)+($v3*2)+$vt+($con*3))/10;
    }
    If($azar=="3")
    {
      do
      {
      $rasgo1=trim(randfile("rasgosdruidas.txt"));
      $rasgo2=trim(randfile("rasgosilusionismo.txt"));
      $azar=rand(1,2);if($azar=="1"){$rasgo4=trim(randfile("rasgosdruidas.txt"));}
      $azar=rand(1,2);if($azar=="1"){$rasgo5=trim(randfile("rasgosilusionismo.txt"));}
      }while ($rasgo1==$rasgo2 or $rasgo4==$rasgo5);
     $Druidismo=rand($Concentracion,$maximo2);
     $Ilusionismo=rand($Concentracion,$maximo2);
     $sumaHAB=$sumaHAB+$Druidismo+$Brujeria;
     $cadenahab=$cadenahab. " Druidismo: ".$Druidismo. ", Ilusionismo: ".$Ilusionismo;
     if($Druidismo>=$Ilusionismo)
      { 
       $desafio= "Suele utilizar sus múltiples cualidades mágicas para combatir. Nivel de desafío  igual a "; 
       $val_des=(($vol+$Druidismo)+($des+$pelea)+($v3*2)+$vt+($con*3))/10;
      }
       else
       {
       $desafio= "Suele utilizar sus múltiples cualidades mágicas para combatir. Nivel de desafío  igual a "; 
       $val_des=(($car+$Ilusionismo)+($des+$pelea)+($v3*2)+$vt+($con*3))/10;
       }
    }//if 3
   }// voluntad
  }//punteria
}//pelea 


//descripción de la criatura

$nombre=trim(randfile("prefijos.txt")).trim(randfile("sufijos.txt"));//270

$descripcion=$descripcióninicial." ".trim(randfile("descripcion.txt"))." ".trim(randfile("habitat.txt"));

if($descripcióninicial=="Criatura no muerta, "){$descripcion=$descripcion.", ".trim(randfile("descripcionmuertos.txt"));}
if($descripcióninicial=="Criatura salvaje, "){$descripcion=$descripcion.", ".trim(randfile("descripcionvivos.txt"));}
if($descripcióninicial=="Construcción mecánica, "){$descripcion=$descripcion.", ".trim(randfile("descripcionmaquinas.txt"));}

$descripcion=$descripcion.", ".$rasgo3.$v3;

$rasgos=" La criatura ".$rasgo1." ".$v1."; ".$rasgo2." ".$v2."; " .$rasgo4. " ".$v4."; además, ".$rasgo5." ".$v5;

do{
$personalidad1=trim(randfile("personalidad.txt"));
$personalidad2=trim(randfile("personalidad.txt"));
}while ($personalidad1==$personalidad2);

// asignación de metodo de reproducción y alimentación

if($descripcióninicial=="Construcción mecánica, ")
{
 $reproducción="Posee un sistema de alimentación interno, de duración desconocida. El proceso de construcción de la criatura solo está al alcance de unos pocos genios";
}
else
{
 if($descripcióninicial=="Criatura no muerta, ")
 {
 $reproducción="Como criatura no muerta que es, no necesita ni dormir ni alimentarse. Solo las artes oscuras pueden crear nuevos individuos semejantes";
 }
 else
 {
 $reproducción = array ( 
 "1"=>"La reproducción se realiza mediante esporas. Las crías salen del interior del cuerpo de otras criaturas",
 "2"=>"La reproducción se realiza mediante intercambio de esporas. Las crías salen de un huevo, abandonados por sus progenitores",
 "3"=>"Todos los miembros de la especie son hermafroditas, por lo que lo normal es que ambos progenitores queden fecundados. Las crías salen de un huevo, abandonados por sus progenitores",
 "4"=>"Todos los miembros de la especie son hermafroditas, por lo que lo normal es que ambos progenitores queden fecundados. Las crías salen de un huevo, que normalmente cuidan sus progenitores",
 "5"=>"La reproducción se da entre relaciones sexuales entre dos sexos diferenciados. Las crías salen de un huevo, abandonados por sus progenitores progenitores",
 "6"=>"La reproducción se da entre relaciones sexuales entre dos sexos diferenciados. Las crías salen de un huevo, que normalmente cuida la madre",
 "7"=>"La reproducción se da entre relaciones sexuales entre dos sexos diferenciados. Las crías salen de un huevo, que normalmente cuida el padre",
 "8"=>"La reproducción se da entre relaciones sexuales entre dos sexos diferenciados. Las crías salen de un huevo, que normalmente cuidan ambos progenitores",
 "9"=>"La reproducción se da entre relaciones sexuales entre dos sexos diferenciados. Las crías salen de un huevo, abandonados por sus progenitores",
 "10"=>"La reproducción se da entre relaciones sexuales entre dos sexos diferenciados. Las crías nacen perfectamente formadas, y son cuidadas por la madre hasta que alcanzan su pleno desarrollo",
 "11"=>"La reproducción se da entre relaciones sexuales entre dos sexos diferenciados. Las crías nacen perfectamente formadas, y son cuidadas por ambos progenitores hasta que alcanzan su pleno desarrollo",
 "12"=>"La reproducción se da entre relaciones sexuales entre dos sexos diferenciados. Las crías nacen sin estar plenamente formadas, y han de ser cuidadas por sus progenitores hasta su pleno desarrollo",
 "13"=>"La reproducción se da entre relaciones sexuales entre dos sexos diferenciados. Las crías nacen sin estar plenamente formadas, y han de ser cuidadas por sus progenitores hasta su pleno desarrollo",
 "14"=>"La reproducción se da por fragmentación. La criatura se divide a sí misma para formar otra entidad plenamente funcional",
 "15"=>"La reproducción se da por gemación. La criatura expulsa una yema que origina un nuevo individuo",
 );
 
 $i=rand(1,15);
 $reproducción= $reproducción[$i];

 $alimentacion = array ( 
 "1"=>"Principalmente se alimentan de cadáveres y pequeños animales, son carroñeros",
 "2"=>"Su alimentación es íntegramente vegetariana",
 "3"=>"Su alimentación es estrictamente carnívora, cazan y matan para vivir",
 "4"=>"Su alimentación es estrictamente carnívora, cazan y matan para vivir",
 "5"=>"Su alimentación es omnívora, comen prácticamente de todo",
 "6"=>"Se alimentan principalmente de materia inorgánica",
 );
 
 $i=rand(1,6);
 $alimentacion= $alimentacion[$i];

 $actividad = array ( 
 "1"=>"Posee hábitos diurnos, y suele descansar brevemente durante las noches",
 "2"=>"Posee hábitos diurnos, y suele descansar bastante durante las noches",
 "3"=>"Posee hábitos nocturnos, y suele descansar brevemente durante el día",
 "4"=>"Posee hábitos nocturnos, y suele descansar bastante durante el día",
 "5"=>"Raramente descansa, puede permanecer activo tanto durante el día como por la noche",
 "6"=>"Posee hábitos diurnos, y suele descansar bastante durante las noches",
 );
 
 $i=rand(1,6);
 $actividad= $actividad[$i];

 $reproducción= $reproducción.". ".$actividad.". ".$alimentacion;
 }
}


// asignación de agrupaciones y manadas en función del nivel de desafío

if ($val_des>=14) {$manada= "Lo más común es encontrarse individuos solitarios, raras veces pueden verse pequeñas agrupaciones de unos ".rand(1,8)." individuos. ";}
if ($val_des<14 and $val_des>8) {$manada= "Es posible encontrar individuos solitarios, aunque en ocasiones pueden formar grupos de unos ".rand(3,12)." individuos. ";}
if ($val_des>4 and$val_des<=8) {$manada= "Rara vez se pueden ver individuos solitarios, lo normal es encontrarlos en manadas de ".rand(5,20)." individuos, o más. ";}
if ($val_des<=4) {$manada= "Rara vez se pueden ver individuos solitarios, lo normal es encontrarlos en manadas de ".rand(10,50)." individuos, o más. ";}

$comportamiento= "Su comportamiento es ".$personalidad1." y ".$personalidad2.". ".$reproducción.". ".$manada;//387

//Escritura de la ficha ya terminada

echo "<table border=1  width=100% colspan=8 cellspacing=0>";
echo"      <tr>
               <th colspan=8> $nombre.</td>
      </tr>";
 echo"      <tr>
               <td colspan=8>  Descripción: $descripcion. $desafio $val_des.  </td>
      </tr>";
 echo"      <tr>
               <td colspan=8>  Rasgos: $rasgos.   </td>
      </tr>";

 echo "<tr>
    
         <td align='center'> Fuerza: $fue </td>
         <td align='center'> Constitución: $con </td>
         <td align='center'> Percepción: $per </td>
         <td align='center'> Destreza: $des </td>
         <td align='center'> Voluntad: $vol </td>
         <td align='center'> Inteligencia: $int </td>
         <td align='center'> Habilidad: $hab </td>
         <td align='center'> Carisma: $car </td>
      </tr>";

echo"      <tr>
               <td colspan=8>  Habilidades:  $cadenahab   </td>
      </tr>";
echo"      <tr>
               <td colspan=8>  Costumbres:  $comportamiento  </td>
      </tr>";
echo "</table>";
echo "<BR>";
}
?>