Manuestaire / megacorporation

2 stars 1 forks source link

Nuevas unidades #17

Open Manuestaire opened 11 years ago

Manuestaire commented 11 years ago

Posibilidad de añadir nuevas unidades, no exponenciales a las actuales:

Ejemplo una unidad mártir, con mucho daño y sin defensa. Una unidad tanque que sólo absorbe daño.

Manuestaire commented 11 years ago

Voy avanzando con el código, pero me gustaría hablar con @NiciusB a ver si voy bien...

<?php

//calculamos los modificadores para el daño y la defensa
$mod_ata = ((3*($lvlsabot^1.3635))/(2*$lvlsabot)); //se calcula el modificador respecto al nivel de sabotage
$mod_def = ((3*($lvldefen^1.3635))/(2*$lvldefen)); //se calcula el modificador respecto al nivel de defensa

//calculamos el daño y defensa de cada tipo de unidad
$ata_sabot = ($sabot_base_ata * $mod_ata); //se calcula el ataque de cada saboteador
$def_sabot = ($sabot_base_def * $mod_def); //se calcula la defensa de cada saboteador
$ata_gang = ($gang_base_ata * $mod_ata);
$def_gang = ($gang_base_def * $mod_ata);
$ata_guard = ($guard_base_ata * $mod_def); //se calcula el ataque de cada guardia
$def_guard = ($guard_base_def * $mod_def); //se calcula la defensa de cada guardia
$ata_antidist = ($antitist_base_ata * $mod_def);
$def_antidist = ($antidist_base_def * $mod_def);

function distribute_damage($num_unidad1,$num_unidad2) // ATENCIÓN: la primera unidad siempre recibe más daño que la segunda.
{
    if (!($num_unidad1 + $num_unidad2)) { //en php 0 se evalua como FALSE.
        throw new Exception('División por cero.'); //al lanzar una excepción, la ejecución se para hasta llegar a un catch.
    }
    else {
    return (($num_unidad1 * 1.1)/($num_unidad1 + $num_unidad2));
    //$damagetoguard = 1 - $damagetoantidist;
    }
}

//en caso de ataque tipo 1 (sabotaje > defensores atacan primero)
//ronda 1 (atacan los defensores)

/* preparamos los valores necesarios para el ataque */
$damage_guard = $num_guard * $ata_guard;
$damage_antidist = $num_antidist * $ata_antidist;
$damage_of_defenders = $damage_guard + $damage_antidist;

$damage_to_gang = distribute_damage($num_gang,$num_sabot);
$damage_to_sabot = 1 - $damage_to_gang;
/* calculamos el ataque */
$num_gang = floor(($num_gang * $def_gang - $damage_to_gang * $damage_of_defenders)/$def_gang);
$num_sabot = floor(($num_sabot * $def_sabot - $damage_to_sabot * $damage_of_defenders)/$def_sabot);

//ronda 2 (atacan los atacantes)
if($numsabos>0){
    $damage_sabot = $numsabot * $atasabot;
    $damageofgang = $num000 * $ata000;
    $damageofatackerstot = $damageofsabot + $damageofgang;
    if($numantidist > 0)  {//función externa, aquí calculamos el tanto por uno de daño que reciben los antidisturbios, el resto lo absorben los guardias.
        $damagetoantidist = distribute_damage($num_antidist,$num_guard);
        }else{
        }

    $numantdist = int((($numantidist * $defantidist) - ($damagetoantidist * $damageofatackerstot)) / $defantidist);
    $numguard = int((($numguard * $defguard) -  ($damagetoguard * $damageofatackerstot)) / $defguard);
    }else{
    //defensor gana
    calculofama($variable,$variable2);
    }
//ronda 3 (atacan defensores otra vez)
if($numguard>0){
$numsabos = int(($numsabot * $defsabot) - ($numguard * $ataguard));
}else{
//atacante gana
calculoedificios($numsabot,$edifobjetivo);
}
//ronda 4 (atacante ataca por última vez)
if($numsabos>0){
$numguard = int(($numguard * $defguard) - ($numsabos * $atasabot));
//calcular daño a edificios, botín etc
}else{
//defensor gana
}
?>
Manuestaire commented 11 years ago

Nota: con esta otra formula, los modificadores llegarían a 10 en lugar de a 8: 3( x ^1.4119544)/(2 *x ) ó 3( x ^1.411954371)/(2 *x )

NiciusB commented 11 years ago

yo ya me empiezo a perder xD

NiciusB commented 11 years ago

Simulador de ataques: http://megacorporation.conpingo.com/sabotajes/

Manuestaire commented 11 years ago
<?php

$sabot_base_ata =10; // aun falta definirlos
$sabot_base_def =5;
$gang_base_ata =15;
$gang_base_def =10;
$poli_base_ata =5;
$poli_base_def =10;
$antitist_base_ata =10;
$antidist_base_def =15;

//calculamos los modificadores para el daño y la defensa
$mod_ata = ((3*(pow($lvlsabot,1.3635)))/(2*$lvlsabot)); //se calcula el modificador respecto al nivel de sabotage
$mod_def = ((3*(pow($lvldefen,1.3635)))/(2*$lvldefen)); //se calcula el modificador respecto al nivel de defensa

//calculamos el daño y defensa de cada tipo de unidad
$ata_sabot = ($sabot_base_ata * $mod_ata); //se calcula el ataque de cada saboteador
$def_sabot = ($sabot_base_def * $mod_def); //se calcula la defensa de cada saboteador
$ata_gang = ($gang_base_ata * $mod_ata);
$def_gang = ($gang_base_def * $mod_ata);
$ata_poli = ($poli_base_ata * $mod_def); //se calcula el ataque de cada policia
$def_poli = ($poli_base_def * $mod_def); //se calcula la defensa de cada policia
$ata_antidist = ($antitist_base_ata * $mod_def);
$def_antidist = ($antidist_base_def * $mod_def);

function distribute_damage($num_unidad1,$num_unidad2) // ATENCIÓN: la primera unidad siempre recibe más daño que la segunda.
{
    if (!($num_unidad1 + $num_unidad2)) { //en php 0 se evalua como FALSE.
        throw new Exception('División por cero.'); //al lanzar una excepción, la ejecución se para hasta llegar a un catch.
    }
    else {
    return (($num_unidad1 * 1.1)/($num_unidad1 + $num_unidad2));
    //$damagetopoli = 1 - $damagetoantidist;
    }
}

function any_alive($num_unidad1, $num_unidad2)
{
    return (($num_unidad1 > 0) or ($num_unidad2 > 0));
}

echo("Ronda 0");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");

//en caso de ataque tipo 1 (sabotaje > defensores atacan primero)
//ronda 1 (atacan los defensores)

/* preparamos los valores necesarios para el ataque */
$damage_poli = $num_poli * $ata_poli;
$damage_antidist = $num_antidist * $ata_antidist;
$damage_of_defenders = $damage_poli + $damage_antidist;

$damage_to_gang = distribute_damage($num_gang,$num_sabot);
$damage_to_sabot = 1 - $damage_to_gang;
/* calculamos el ataque */
$num_gang = floor(($num_gang * $def_gang - $damage_to_gang * $damage_of_defenders)/$def_gang);
$num_sabot = floor(($num_sabot * $def_sabot - $damage_to_sabot * $damage_of_defenders)/$def_sabot);

echo("Ronda 1");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");

//ronda 2 (atacan los atacantes)
if(any_alive($num_gang,$num_sabot)){
    $damage_sabot = $num_sabot * $ata_sabot;
    $damage_gang = $num_gang * $ata_gang;
    $damage_of_atackers = $damage_sabot + $damage_gang;

    $damage_to_antidist = distribute_damage($num_antidist,$num_poli);
    $damage_to_poli = 1 - $damage_to_antidist;
 /*Calculamos la segunda ronda*/
    $num_antdist = floor(($num_antidist * $def_antidist - $damage_to_antidist * $damage_of_atackers) / $def_antidist);
    $num_poli = floor(($num_poli * $def_poli -  $damage_to_poli * $damage_of_atackers) / $def_poli);

    echo("Ronda 2");
    echo("poli: $num_poli , antidist: $num_antidist ,gang: $num_gang ,sabot: $num_sabot");
    }else{
    //calculofama($variable,$variable2);
    echo("El defensor gana");
    }
//ronda 3 (atacan defensores otra vez)
if($numpoli>0){
$numsabos = int(($numsabot * $defsabot) - ($numpoli * $atapoli));
}else{
//atacante gana
calculoedificios($numsabot,$edifobjetivo);
}
//ronda 4 (atacante ataca por última vez)
if($numsabos>0){
$numpoli = int(($numpoli * $defpoli) - ($numsabos * $atasabot));
//calcular daño a edificios, botín etc
}else{
//defensor gana
}
?>
NiciusB commented 11 years ago

Actualizada la web, pero el codigo tiene algunos fallos ;D

No es int(, es floor( te olvidaste de poner comillas en echo("Ronda 1"); y otras

jaja pero por lo demas esta bien

Manuestaire commented 11 years ago

Faltan algunas cosillas todavía de código a partir del jueves espero terminarlo...

EDIT: he corregido esa parte del código que no había llegado aún.

Manuestaire commented 11 years ago
<?php
/*Contantes:*/
$sabot_base_ata =5;
$sabot_base_def =1;
$gang_base_ata =3;
$gang_base_def =3;
$poli_base_ata =3;
$poli_base_def =3;
$antitist_base_ata =1;
$antidist_base_def =5;

//calculamos los modificadores para el daño y la defensa
$mod_ata = ((3*(pow($lvlsabot,1.3635)))/(2*$lvlsabot)); //se calcula el modificador respecto al nivel de sabotage
$mod_def = ((3*(pow($lvldefen,1.3635)))/(2*$lvldefen)); //se calcula el modificador respecto al nivel de defensa

//calculamos el daño y defensa de cada tipo de unidad
$ata_sabot = ($sabot_base_ata * $mod_ata); //se calcula el ataque de cada saboteador
$def_sabot = ($sabot_base_def * $mod_def); //se calcula la defensa de cada saboteador
$ata_gang = ($gang_base_ata * $mod_ata);
$def_gang = ($gang_base_def * $mod_ata);
$ata_poli = ($poli_base_ata * $mod_def); //se calcula el ataque de cada policia
$def_poli = ($poli_base_def * $mod_def); //se calcula la defensa de cada policia
$ata_antidist = ($antitist_base_ata * $mod_def);
$def_antidist = ($antidist_base_def * $mod_def);

function distribute_damage($num_unidad1,$num_unidad2) // ATENCIÓN: la primera unidad siempre recibe más daño que la segunda.
{
    if (!($num_unidad1 + $num_unidad2)) { //en php 0 se evalua como FALSE.
        throw new Exception('División por cero.'); //al lanzar una excepción, la ejecución se para hasta llegar a un catch.
    }
    else {
    return (($num_unidad1 * 1.1)/($num_unidad1 + $num_unidad2));
    //$damagetopoli = 1 - $damagetoantidist;
    }
}

function any_alive($num_unidad1, $num_unidad2)
{
    return (($num_unidad1 > 0) or ($num_unidad2 > 0));
}

echo("Ronda 0");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");

//en caso de ataque tipo 1 (sabotaje > defensores atacan primero)
//ronda 1 (atacan los defensores)

/* preparamos los valores necesarios para el ataque */
$damage_poli = $num_poli * $ata_poli;
$damage_antidist = $num_antidist * $ata_antidist;
$damage_of_defenders = $damage_poli + $damage_antidist;

$damage_to_gang = distribute_damage($num_gang,$num_sabot);
$damage_to_sabot = 1 - $damage_to_gang;
/* calculamos el ataque */
$num_gang = floor(($num_gang * $def_gang - $damage_to_gang * $damage_of_defenders)/$def_gang);
$num_sabot = floor(($num_sabot * $def_sabot - $damage_to_sabot * $damage_of_defenders)/$def_sabot);

/*Reiniciamos los valores neativos a 0*/
if($num_gang < 1){ $num_gang = 0;}
if($num_sabot < 1){ $num_sabot = 0;}

echo("<br> Ronda 1 <br>");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");

//ronda 2 (atacan los atacantes)
if(any_alive($num_gang,$num_sabot)){
    $damage_sabot = $num_sabot * $ata_sabot;
    $damage_gang = $num_gang * $ata_gang;
    $damage_of_atackers = $damage_sabot + $damage_gang;

    $damage_to_antidist = distribute_damage($num_antidist,$num_poli);
    $damage_to_poli = 1 - $damage_to_antidist;

    /*Calculamos la segunda ronda*/ 
    $num_antdist = floor(($num_antidist * $def_antidist - $damage_to_antidist * $damage_of_atackers) / $def_antidist);
    $num_poli = floor(($num_poli * $def_poli -  $damage_to_poli * $damage_of_atackers) / $def_poli);

    echo("<br> Ronda 2 <br>");
    echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
}else{
    //calculofama($variable,$variable2);
    echo("El defensor gana");
}
    /*Reiniciamos los valores neativos a 0*/
    if($num_antidist < 1){ $num_antidist = 0;}
    if($num_poli < 1){ $num_poli = 0;}

//ronda 3 (atacan defensores otra vez)
if(anyalive($num_antidist,$num_poli)){
    $damage_poli = $num_poli * $ata_poli;
    $damage_antidist = $num_antidist * $ata_antidist;
    $damage_of_defenders = $damage_poli + $damage_antidist;

    $damage_to_gang = distribute_damage($num_gang,$num_sabot);
    $damage_to_sabot = 1 - $damage_to_gang;
    /* calculamos el ataque */
    $num_gang = floor(($num_gang * $def_gang - $damage_to_gang * $damage_of_defenders)/$def_gang);
    $num_sabot = floor(($num_sabot * $def_sabot - $damage_to_sabot * $damage_of_defenders)/$def_sabot);

    /*Reiniciamos los valores neativos a 0*/
    if($num_gang < 1){ $num_gang = 0;}
    if($num_sabot < 1){ $num_sabot = 0;}

    echo("<br> Ronda 3 <br>");
    echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
}else{
    //atacante gana
    echo("El atacante gana");
    //calculoedificios($numsabot,$edifobjetivo);
}
//ronda 4 (atacante ataca por última vez)
if($numsabos>0){
$numpoli = int(($numpoli * $defpoli) - ($numsabos * $atasabot));
//calcular daño a edificios, botín etc
}else{
//defensor gana
}
?>
Manuestaire commented 11 years ago
/*Contantes:*/
$sabot_base_ata =5;
$sabot_base_def =1;
$gang_base_ata =3;
$gang_base_def =3;
$poli_base_ata =3;
$poli_base_def =3;
$antitist_base_ata =1;
$antidist_base_def =5;

//calculamos los modificadores para el daño y la defensa
$mod_ata = ((3*(pow($lvlsabot,1.3635)))/(2*$lvlsabot)); //se calcula el modificador respecto al nivel de sabotage
$mod_def = ((3*(pow($lvldefen,1.3635)))/(2*$lvldefen)); //se calcula el modificador respecto al nivel de defensa

//calculamos el daño y defensa de cada tipo de unidad
$ata_sabot = ($sabot_base_ata * $mod_ata); //se calcula el ataque de cada saboteador
$def_sabot = ($sabot_base_def * $mod_def); //se calcula la defensa de cada saboteador
$ata_gang = ($gang_base_ata * $mod_ata);
$def_gang = ($gang_base_def * $mod_ata);
$ata_poli = ($poli_base_ata * $mod_def); //se calcula el ataque de cada policia
$def_poli = ($poli_base_def * $mod_def); //se calcula la defensa de cada policia
$ata_antidist = ($antitist_base_ata * $mod_def);
$def_antidist = ($antidist_base_def * $mod_def);

function distribute_damage($num_unidad1,$num_unidad2) // ATENCIÓN: la primera unidad siempre recibe más daño que la segunda.
{
    if (!($num_unidad1 + $num_unidad2)) { //en php 0 se evalua como FALSE.
        throw new Exception('División por cero.'); //al lanzar una excepción, la ejecución se para hasta llegar a un catch.
    }
    else {
    return (($num_unidad1 * 1.1)/($num_unidad1 + $num_unidad2));
    //$damagetopoli = 1 - $damagetoantidist;
    }
}

function any_alive($num_unidad1, $num_unidad2)
{
    return (($num_unidad1 > 0) or ($num_unidad2 > 0));
}

echo("Ronda 0 <br>");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");

//en caso de ataque tipo 1 (sabotaje > defensores atacan primero)
//ronda 1 (atacan los defensores)

/* preparamos los valores necesarios para el ataque */
$damage_poli = $num_poli * $ata_poli;
$damage_antidist = $num_antidist * $ata_antidist;
$damage_of_defenders = $damage_poli + $damage_antidist;

$damage_to_gang = distribute_damage($num_gang,$num_sabot);
$damage_to_sabot = 1 - $damage_to_gang;

/* calculamos el ataque */
$num_gang = floor(($num_gang * $def_gang - $damage_to_gang * $damage_of_defenders)/$def_gang);
$num_sabot = floor(($num_sabot * $def_sabot - $damage_to_sabot * $damage_of_defenders)/$def_sabot);
/*Reiniciamos los valores neativos a 0*/
if($num_gang < 1){ $num_gang = 0;}
if($num_sabot < 1){ $num_sabot = 0;}

echo("<br> Ronda 1 <br>");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");

//ronda 2 (atacan los atacantes)
if(any_alive($num_gang,$num_sabot)){
    $damage_sabot = $num_sabot * $ata_sabot;
    $damage_gang = $num_gang * $ata_gang;
    $damage_of_atackers = $damage_sabot + $damage_gang;

    $damage_to_antidist = distribute_damage($num_antidist,$num_poli);
    $damage_to_poli = 1 - $damage_to_antidist;

    /*Calculamos la segunda ronda*/ 
    $num_antdist = floor(($num_antidist * $def_antidist - $damage_to_antidist * $damage_of_atackers) / $def_antidist);
    $num_poli = floor(($num_poli * $def_poli -  $damage_to_poli * $damage_of_atackers) / $def_poli);
    /*Reiniciamos los valores neativos a 0*/
    if($num_antidist < 0){ $num_antidist = 0;}
    if($num_poli < 0){ $num_poli = 0;}

    echo("<br> Ronda 2 <br>");
    echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
}else{
    //calculofama($variable,$variable2);
    echo("El defensor gana");
}

//ronda 3 (atacan defensores otra vez)
if(any_alive($num_antidist,$num_poli)){
    $damage_poli = $num_poli * $ata_poli;
    $damage_antidist = $num_antidist * $ata_antidist;
    $damage_of_defenders = $damage_poli + $damage_antidist;

    $damage_to_gang = distribute_damage($num_gang,$num_sabot);
    $damage_to_sabot = 1 - $damage_to_gang;

    /* calculamos el ataque */
    $num_gang = floor(($num_gang * $def_gang - $damage_to_gang * $damage_of_defenders)/$def_gang);
    $num_sabot = floor(($num_sabot * $def_sabot - $damage_to_sabot * $damage_of_defenders)/$def_sabot);
    /*Reiniciamos los valores neativos a 0*/
    if($num_gang < 0){ $num_gang = 0;}
    if($num_sabot < 0){ $num_sabot = 0;}

    echo("<br> Ronda 3 <br>");
    echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
}else{
    //atacante gana
    echo("El atacante gana");
    //calculoedificios($numsabot,$edifobjetivo);
}
//ronda 4 (atacante ataca por última vez)
if(any_alive($num_gang,$num_sabot)){
    $damage_sabot = $num_sabot * $ata_sabot;
    $damage_gang = $num_gang * $ata_gang;
    $damage_of_atackers = $damage_sabot + $damage_gang;

    $damage_to_antidist = distribute_damage($num_antidist,$num_poli);
    $damage_to_poli = 1 - $damage_to_antidist;

    /*Calculamos la segunda ronda*/ 
    $num_antdist = floor(($num_antidist * $def_antidist - $damage_to_antidist * $damage_of_atackers) / $def_antidist);
    $num_poli = floor(($num_poli * $def_poli -  $damage_to_poli * $damage_of_atackers) / $def_poli);
    /*Reiniciamos los valores neativos a 0*/
    if($num_antidist < 1){ $num_antidist = 0;}
    if($num_poli < 1){ $num_poli = 0;}

    echo("<br> Ronda 4 <br>");
    echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
}else{
    //calculofama($variable,$variable2);
    echo("El defensor gana");
}

exit;
}
?>

@NiciusB he actualizado el código en el simulador, pero en todos los tests, el número de antidisturbios no baja. Échale un vistazo por favor.

Manuestaire commented 11 years ago

Solucionado!...

@NiciusB @DamageESP Ya está el código más o menos funcionando, faltan pequeños detalles. Pasaós por http://megacorporation.conpingo.com/sabotajes/ y haced simulaciones a ver como quereís que cambie el comportamiento...

DamageESP commented 11 years ago

He simulado este ataque:

Sabot: 5000 Gang:0 . Polis:10000 Antis:0

Y me da este error:

Fatal error: Uncaught exception 'Exception' with message 'División por cero.' in /home/conpingo/megacorporation/public_html/sabotajes/index.php:39 Stack trace: #0 /home/conpingo/megacorporation/public_html/sabotajes/index.php(105): distribute_damage(0, 0) #1 {main} thrown in /home/conpingo/megacorporation/public_html/sabotajes/index.php on line 39
Manuestaire commented 11 years ago

Esa es una de las cosas que queda, esa excepción (definida por mi) salta para parar la ejecución si ($num_unidad1 + $num_unidad2) = 0. Así se evita que se siga ejecutando código hasta que se capture la excepción (que de momento no se hace) Así que eso es normal, allá donde se pare el texto, es hasta dónde llega.

A tener en cuenta:

EDIT: esta sería la simulación completa: Ronda 0 policias: 10000, antidisturbios: 0, gangster: 0, saboteadores: 5000 Ronda 1 policias: 10000, antidisturbios: 0, gangster: 0, saboteadores: 0El defensor gana Fatal error: Uncaught exception 'Exception' with message 'División por cero.' in /home/conpingo/megacorporation/public_html/sabotajes/index.php:39 Stack trace: #0 /home/conpingo/megacorporation/public_html/sabotajes/index.php(105): distribute_damage(0, 0) #1 {main} thrown in /home/conpingo/megacorporation/public_html/sabotajes/index.php on line 39

Manuestaire commented 11 years ago

va pues testead, y decidme las cosas raras que veaís...

NiciusB commented 11 years ago

No termina, y en la ronda 3... ¡aparece un saboteador salvaje!: Ronda 0 policias: 2, antidisturbios: 10, gangster: 2, saboteadores: 10 Ronda 1 policias: 2, antidisturbios: 10, gangster: 1, saboteadores: 0 Ronda 2 policias: 1, antidisturbios: 9, gangster: 1, saboteadores: 0 Ronda 3 policias: 1, antidisturbios: 9, gangster: 0, saboteadores: 1 Ronda 4 policias: 0, antidisturbios: 8, gangster: 0, saboteadores: 1

Manuestaire commented 11 years ago

WTF? qué valores le has metido?

NiciusB commented 11 years ago

policias: 2, antidisturbios: 10, gangster: 2, saboteadores: 10 sabotaje y defensa: 1

Manuestaire commented 11 years ago

pues no sé de dónde sale el sabot ese, pero es el que hace que el script no acabe...

Manuestaire commented 11 years ago

Vale creo haber encontrado el problema del saboteador salvaje, pero necesitaría hablar contigo para ver como solucionarlo...

NiciusB commented 11 years ago

Conectate al msn xD

Manuestaire commented 11 years ago

Añado cosas a esto ya para que digáis, sobre todo lo último que acabo de añadir, lo de las guerras, ¿los robos no computan, o computan menos?

Tipo 1 (Robo)

Tipo 2 (sabotage)

NiciusB commented 11 years ago

Bien, creo que está todo bien menos lo de computar en las guerras. Podría haber un contador de cada tipo.

Manuestaire commented 11 years ago

Bueno ya está corregido desde hace unos días el error que comentaba @NiciusB así que seguid probando, mirad si está equilibrado, y si los resultados son razonables, para ver cómo hay que equilibrarlo...

Manuestaire commented 11 years ago

@DamageESP @NiciusB Por favor simulad y probad cosas, a ver si os parece bien, quien mata mucho, quien mata poco, para ver como hay que equilibrarlo...

NiciusB commented 11 years ago

Saboteadores: 10 Gangsters: 12 Policías: 8 Antidisturbios: 1 Ataque: 1 Defensa:

Llega a la ronda 4 y no termina (al menos no dice que gane nadie). Quedan 4 gangsters y nadie mas

Manuestaire commented 11 years ago

Vale, ese es un caso que queda por cubrir en el algoritmo (cuando el atacante gana en la última ronda). Si no me lo llegas a recordar igual se me olvidaba. Pero vamos que lo que me interesa es que opineís de si está balanceado, o si hay que cambiar alguna cosa... (probaz con distintos niveles de inves, etc...)

NiciusB commented 11 years ago

bueno, el defensor tiene una buena defensa, ya que ataca primero... pero creo que en general está bien. Podría dejarse así y luego cambiarlo si la gente se queja o si notamos algo raro xD

NiciusB commented 11 years ago

Voy a empezar a substituir los guardias y saboteadores por las 4 nuevas unidades. A partir de ahora no va a ser $user_datos['guardias'] si no $user_datos['uni_defensa1'] Los espias seguirán siendo $user_datos['espias']

EDIT: Ya puedes comprar y despedirlas EDIT2: Ya te cobran por sus salarios (Hay que cambiarlos en el archivo de constantes) EDIT3: En los espionajes te dicen las nuevas tropas EDIT4: El javascript ya te cobra por las nuevas tropas EDIT5: Los clanes ya tienen nuevas tropas y las generan EDIT6: Ya te recupera al pasar el dia el maximo de tropas para sacar

Manuestaire commented 11 years ago

Vale y no podías haber puesto el nombre de la unidad??

NiciusB commented 11 years ago

Las nuevas tropas son completamente funcionales excepto en las operaciones, donde aún falta implementarlas junto con la nueva fórmula.

Lo de defensa2, o ataque1 es mejor en cuanto a cambio de nombre, por si en un futuro decidimos cambiarles el nomrbe

NiciusB commented 11 years ago

Solo faltan las investigaciones nuevas. Necesito saber cuales son

Manuestaire commented 11 years ago

Eso se puede poner como queraís, no es más que modificar 4 ecuaciones...

NiciusB commented 11 years ago

Si, pero como iban a ser? xDD

Manuestaire commented 11 years ago

Pues se puede poner las 2 que están, y una para cada tipo de unidad, o las cominaciones que queraís

NiciusB commented 11 years ago

Pues mañana o pasado si no hay mas ofertas, las pondré... Me hacen falta las variables (costes, porcentaje de mejora...)

NiciusB commented 11 years ago

He metido ya las 4 investigaciones en entrenar unidades, faltan los precios y meterlos en las ecuaciones

NiciusB commented 11 years ago

Bug crítico: cuando atacas y no romper edificios te sale como éxito igualmente, y ganas el dinero

DamageESP commented 11 years ago

Hay que poner un mínimo de unidades de ataque para que se complete la misión con éxito, y si sobrepasa el mínimo, que haya otro mínimo para que te de todo el dinero que puedes ganar, y si no sobrepasa ese mínimo, te de una determinada cantidad por saboteador enviado. No se si me explico xD Leedlo varias veces xDD

NiciusB commented 11 years ago

Yo no entender. Los mínimos ya están: si no llegan para romper un edificio, no ganarías xD

DamageESP commented 11 years ago

Y ahora, una vez pase el mínimo, necesita otro mínimo de saboteadores para llevarse todo el dinero. Por ejemplo: ataco con 1000 saboteadores, de los cuales necesito 900 para romper edificio. Entonces rompo el edificio, pero si me quedan 100 saboteadores y el botín es de 14 millones de €, no puedo llevarmelo todo ya que cada saboteador puede llevar como máximo (por ejemplo) 1 millon de €.

Y una cosa del minimo para romper edificio, si por ejemplo atacas a estancos, alomejor puedes romper uno, pero no los 10, esta eso puesto?

Manuestaire commented 11 years ago

Podríamos cambiar el algoritmo para los edificios rotos para que se asemeje al de ataques.

Cuál es el problema de esto: Muchas veces, especialmente atacando industrias, ocurrirá que matemos todas las unidades enemigas, pero no haya suficientes unidades para poder tirar el edificio.

DamageESP commented 11 years ago

Eso no es un problema Manu, eso ha sido así de toda la vida xD Y sí, los ataques deberían de simularse asi, calculando la fuerza de las tropas y restandola con la de los edificios. Además, para eso sirve Infraestructuras xD

NiciusB commented 11 years ago

Pues si, me parece buena idea jaja ahora falta que manu nos haga el algoritmo xD

Manuestaire commented 11 years ago

Dónde está el actual?, para fijarme cómo tiene que ir la cosa...

En principio el algoritmo es muy sencillo sólo me preocupan casos raros en los que pueda salir resultado negativo o cosas así...

NiciusB commented 11 years ago

Hay un pequeño problema, los guardias son demasiado fuertes....

Y eso que tengo las Técnicas de sabotaje al 39, y él las Técnicas de defensa al 21...

Manuestaire commented 11 years ago

Según te vas acercando al nivel 50 las investigaciones son cada vez menos efectivas, por lo que la diferencia probablemente no sea tanta, a ver si alguno de los dos me puede decir los datos del ataque, es decir tropas atacantes y defensoras.

NiciusB commented 11 years ago

Los defensores eran: 10000 Policías 15000 Antidisturbios

Manuestaire commented 11 years ago

¿Y si cambiamos el nombre de los saboteadores por ladrones o cualquier otra cosa? Creo que lleva a confusión, ya que si no me estoy equivocando los datos básicos eran:

Sabo: 5/1 Gang: 3/3 Poli: 3/3 Anti:1/5

Y vuelvo a decir: dónde está lo de calcular edificios e ingresos?

NiciusB commented 11 years ago

Está en el archivo /cron/minuto.php, en las función gana_atacante

NiciusB commented 11 years ago

Que falta por aquí?

Manuestaire commented 11 years ago

Comentario 100!!!

Faltan cosas, pero quiero dejarlo para la alpha, para que la gente pueda probar, hay que comprobar el equilibro y ajustar parámetros, así como añadir las investigaciones individuales de cada unidad.