示例#1
0
 public function feuern($ziel, $modus)
 {
     $cur_feld = new Weltraum($this->position->x, $this->position->y, $this->position->system->id, $this->position->system->id > 0);
     if ($cur_feld->feld->hide) {
         echo '<span class="error">Du kannst hier (' . $cur_feld->name . ') nicht feuern!</span>';
         return 0;
     }
     /* Moduscodierung
         0= normales angreifen
         1= feuern ohne gegenwehr ( alarm rot )
         10= normales angreifen mit photonen
         11 feuern ohne gegenwehr mit photonen
         20 = normales angreifen mit quanten
         21 = feuern ohne gegenwerh mit quanten
         30= feuern mit phaser und quanten
         31 = feuern mit phaser und quanten ohne gegenwehr
        */
     // MODUS 0
     if ($ziel->klasse == 'Schlitten' && $this->klasse != 'Vorposten') {
         echo 'Zu Weihnachten wird nicht geballert!';
         return 0;
     }
     if ($modus == 0) {
         $this->feuern($ziel, 1);
         //ALLE im sektor die selbe allianz / vertrag / id haben
         //
         //$ziel->feuern($this,1);
         $this->kampftick("3", $ziel);
     }
     if ($modus == 10) {
         $this->feuern($ziel, 11);
         $this->kampftick("3", $ziel);
     }
     if ($modus == 20) {
         $this->feuern($ziel, 21);
         $this->kampftick("3", $ziel);
     }
     if ($modus == 1 || $modus == 11 || $modus == 21) {
         //haben wir torpedos?
         if ($modus == 21 && $this->frachtraum->fracht[11]->anzahl <= 0) {
             echo "Keine Quantentorpedos an Board. Feuere daher mit Photonentorpedos!<br />";
             $modus = 11;
         }
         if ($modus == 11 && $this->frachtraum->fracht[10]->anzahl <= 0) {
             echo "Keine Photonenorpedos an Board. Feuere daher mit Phaser!<br />";
             $modus = 1;
         }
         //if($ziel->typ!='s') { echo 'falscher Feuermodus<br />'; return 0; }
         if ($this->besitzer->id != $ziel->besitzer->id && $ziel->besitzer->id != 2 && $this->besitzer->id != 2 && $this->energie >= 1 && ($this->phaser < $this->maxphaser && $modus == 1 || $this->torpedohitze < $this->maxtorpedohitze && $modus == 11 || $this->torpedohitze < $this->maxtorpedohitze && $modus == 21) && $this->tarnung == 0 && $this->position->x == $ziel->position->x && $this->position->y == $ziel->position->y && $this->position->orbit == $ziel->position->orbit && $this->position->system->id == $ziel->position->system->id && ($this->besitzer->allianz->id != $ziel->besitzer->allianz->id || $this->besitzer->allianz->id == 0) && !in_array($this->besitzer->id, $ziel->besitzer->vertrag("nap")) && !in_array($this->besitzer->id, $ziel->besitzer->vertrag("frieden")) && ($ziel->besitzer->level >= 4 && $this->besitzer->level >= 4 || ($ziel->klasse = 'Vorposten'))) {
             $ausgabe = "";
             $change = $ziel->schilde;
             //echo "<br />";
             if ($this->typ == 's') {
                 $objekt = "Das Schiff";
             } else {
                 $objekt = "Der Planet";
             }
             if ($modus == 1) {
                 $amount = $this->laser;
                 $waffenname = "Phaser";
             } else {
                 if ($modus == 11) {
                     $amount = 20;
                     $waffenname = "Photonentorpedo";
                 } else {
                     if ($modus == 21) {
                         $amount = 30;
                         $waffenname = "Quantentorpedo";
                     }
                 }
             }
             $this->energie--;
             if ($modus == 1) {
                 $this->phaser++;
             }
             if ($modus == 11) {
                 $this->torpedohitze++;
                 $this->frachtraum->fracht[10]->anzahl--;
             }
             if ($modus == 21) {
                 $this->torpedohitze++;
                 $this->frachtraum->fracht[11]->anzahl--;
             }
             while ($amount > 0 && $ziel->schilde > 0 && $ziel->schildstatus == 1) {
                 $ausgabe = "Angriff: {$objekt} '{$this->name} ({$this->id})' greift das Schiff '{$ziel->name} ({$ziel->id})' mit " . $waffenname . " an.";
                 $amount--;
                 $ziel->schilde--;
                 if ($ziel->schilde <= 0) {
                     $ziel->schildstatus = 0;
                     $ziel->schilde = 0;
                 }
             }
             if ($ziel->schilde == 0) {
                 $ziel->schildstatus = 0;
             }
             if ($change != $ziel->schilde) {
                 $ausgabe .= "Schilde von {$change} gesunken auf {$ziel->schilde}. ";
             }
             $change = $ziel->hull;
             while ($amount > 0 && $ziel->hull > 0 && $ziel->schildstatus == 0 && $ziel->typ == 's') {
                 $ausgabe = "Angriff: {$objekt} '{$this->name} ({$this->id})' greift das Schiff '{$ziel->name} ({$ziel->id})' mit " . $waffenname . " an.";
                 $amount--;
                 $ziel->hull--;
             }
             if ($change != $ziel->hull) {
                 $ausgabe .= "H&uuml;lle von {$change} gesunken auf {$ziel->hull}. ";
             }
             // $ausgabe ins log eintragen sowie 2 zeilen nach hier bearbeiten
             echo "<span class=\"error\">" . $ausgabe . "</span><br />";
             if ($ziel->hull == 0 && $ziel->typ == 's') {
                 //KILL
                 mysql_query("UPDATE account SET kills=kills+1 WHERE id='" . $this->besitzer->id . "'");
                 mysql_query("UPDATE schiffe SET kills=kills+1 WHERE id='{$this->id}'");
                 echo "Zerst&ouml;rung: Schiff " . $ziel->name . " (" . $ziel->id . ") wurde von " . $this->name . " (" . $this->id . ") vernichtet. Besitzer des Vernichters: " . $this->besitzer->nickname . " (" . $this->besitzer->id . ")<br />";
                 //pruefen auf questerf�llung
                 //berechnung gruppenstring
                 $usrfeld = array();
                 $gruppenabfrage = mysql_query("SELECT id FROM account WHERE gruppe>0 AND gruppe='" . $this->besitzer->gruppe . "'");
                 while ($gruppenrow = mysql_fetch_array($gruppenabfrage)) {
                     $usrfeld[] = $gruppenrow[0];
                 }
                 //********
                 $ziel->zerstoerung();
             }
             //echo "<br />";
             if ($ziel->schildstatus == 0 && $ziel->energie >= 1 && $ziel->schilde > 0) {
                 $ziel->dock = 0;
                 $ziel->schildstatus = 1;
                 $ziel->energie--;
             }
             $this->frachtraum->save();
             mysql_query("UPDATE schiffe SET torpedohitze='{$this->torpedohitze}',phaser='{$this->phaser}',energie='{$this->energie}',hull='{$this->hull}',schilde='{$this->schilde}',schildstatus='{$this->schildstatus}' WHERE id='{$this->id}'");
             if ($ziel->typ == 's') {
                 mysql_query("UPDATE schiffe SET dock='{$ziel->dock}',phaser='{$ziel->phaser}',energie='{$ziel->energie}',hull='{$ziel->hull}',schilde='{$ziel->schilde}',schildstatus='{$ziel->schildstatus}' WHERE id='{$ziel->id}'") or die(mysql_error());
             } else {
                 mysql_query("UPDATE planeten SET phaser='{$ziel->phaser}',energie='{$ziel->energie}',hull='{$ziel->hull}',schilde='{$ziel->schilde}',schildstatus='{$ziel->schildstatus}' WHERE id='{$ziel->id}'") or die(mysql_error());
             }
             $eintrag = new Logbuch("typ", "neu");
             $eintrag->x = $this->position->x;
             $eintrag->y = $this->position->y;
             $eintrag->zeit = date("Y-m-d H:i:s");
             $eintrag->system = $this->position->system->id;
             $eintrag->typ = "Kampf";
             $eintrag->klasse = "Eingang";
             $eintrag->text = "Schiff " . $this->name . " (" . $this->id . ") feuert.";
             if ($this->typ != 's') {
                 $eintrag->text = "Planet " . $this->name . " (" . $this->id . ") feuert.";
             }
             $eintrag->initiator = $this->besitzer->id;
             $eintrag->betroffener = $ziel->besitzer->id;
             $eintrag->save();
             $eintrag = new Logbuch("typ", "neu");
             $eintrag->x = $this->position->x;
             $eintrag->y = $this->position->y;
             $eintrag->zeit = date("Y-m-d H:i:s");
             $eintrag->system = $this->position->system->id;
             $eintrag->typ = "Kampf";
             $eintrag->klasse = "Ausgang";
             $eintrag->text = "Schiff " . $this->name . " (" . $this->id . ") feuert.";
             if ($this->typ != 's') {
                 $eintrag->text = "Planet " . $this->name . " (" . $this->id . ") feuert.";
             }
             $eintrag->initiator = $this->besitzer->id;
             $eintrag->betroffener = $ziel->besitzer->id;
             $eintrag->save();
         }
     }
     //zurueckschiessen
 }
 function feuern(&$angreifer, &$verteidiger, $fid)
 {
     //Hinfeuern
     $fehler = "";
     if ($angreifer->phaser >= $angreifer->maxphaser) {
         $fehler = "Phaser sind &uuml;berhitzt! Warte einen Tick bis sie sich abgek&uuml;hlt haben.<br />";
     }
     if ($angreifer->energie < 1) {
         $fehler = "Dein Schiff hat keine Energie mehr zum feuern!<br />";
     }
     if ($angreifer->tarnung == 1) {
         $fehler = "Dein Schiff ist getarnt. DU kannst nicht feuern!<br />";
     }
     if ($angreifer->position->orbit == 0 || $angreifer->position->x != $verteidiger->position->x || $angreifer->position->y != $verteidiger->position->y || $angreifer->position->system->id != $verteidiger->position->system->id) {
         $fehler = "Du bist nicht im Orbit eines Planeten!<br />";
     }
     if ($angreifer->besitzer->level <= 3 || $verteidiger->besitzer->level <= 3) {
         $fehler = "Du oder dein Opfer ist noch im Schutzzustand!<br />";
     }
     if ($verteidiger->heimat == 1) {
         $fehler = "Du kannst keine Heimatplaneten angreifen!<br />";
     }
     if ($fehler != "") {
         echo "<span style=\"color:red;font-weight:bold;\">{$fehler}</span>";
     } else {
         $text = "Schiff von " . $angreifer->besitzer->nickname . " greift deine Geb&auml;ude auf deinem Planeten " . $verteidiger->name . "(ID " . $verteidiger->id . ") in Sektor " . $angreifer->position->x . "|" . $angreifer->position->y . " an ( im " . $angreifer->position->system->name . "-System )!";
         $amount = $angreifer->laser;
         $angreifer->energie--;
         $angreifer->phaser++;
         mysql_query("UPDATE schiffe SET energie=energie-1,phaser=phaser+1 WHERE id='{$angreifer->id}'");
         if ($verteidiger->feld[$fid]->hull - $amount > 0) {
             $verteidiger->feld[$fid]->hull -= $amount;
             $verteidiger->feld[$fid]->save();
             echo 'Das Geb&auml;ude nimmt Schaden und besitzt noch ', $verteidiger->feld[$fid]->hull, ' Intigrit&auml;t!<br />';
         } else {
             //ABFRAGEN der gebäude und neue werte setzen
             if ($verteidiger->feld[$fid]->was == 2) {
                 $verteidiger->frachtraum->max -= 500;
                 $verteidiger->maxenergie -= 20;
                 mysql_query("UPDATE planeten SET lager=lager-500,maxenergie=maxenergie-20 WHERE id='{$verteidiger->id}'");
             }
             if ($verteidiger->feld[$fid]->was == 5 || $verteidiger->feld[$fid]->was == 17) {
                 $verteidiger->laser -= 6;
                 mysql_query("UPDATE planeten SET laser=laser-6 WHERE id='{$verteidiger->id}'");
             }
             if ($verteidiger->feld[$fid]->was == 6 || $verteidiger->feld[$fid]->was == 16) {
                 $verteidiger->maxschilde -= 80;
                 if ($verteidiger->schilde > $verteidiger->maxschilde) {
                     $verteidiger->schilde = $verteidiger->maxschilde;
                 }
                 mysql_query("UPDATE planeten SET schilde='{$verteidiger->schilde}',maxschilde='{$verteidiger->maxschilde}' WHERE id='{$verteidiger->id}'");
             }
             if ($verteidiger->feld[$fid]->was == 3 || $verteidiger->feld[$fid]->was == 7 || $verteidiger->feld[$fid]->was == 13) {
                 $verteidiger->maxenergie -= 20;
                 if ($verteidiger->energie > $verteidiger->maxenergie) {
                     $verteidiger->energie = $verteidiger->maxenergie;
                 }
                 mysql_query("UPDATE planeten SET energie='{$verteidiger->energie}',maxenergie='{$verteidiger->maxenergie}' WHERE id='{$verteidiger->id}'");
             }
             if ($verteidiger->feld[$fid]->was == 12) {
                 $verteidiger->lager -= 200;
                 mysql_query("UPDATE planeten SET lager=lager-200 WHERE id='{$verteidiger->id}'");
             }
             $verteidiger->feld[$fid]->was = 0;
             $verteidiger->feld[$fid]->bauzeit = 0;
             $verteidiger->feld[$fid]->hull = 60;
             $verteidiger->feld[$fid]->aktiv = 1;
             $verteidiger->feld[$fid]->save();
             echo 'Das Geb&auml;ude wurde vernichtet!<br />';
             $text .= " und vernichtete ein Geb&auml;ude!!";
         }
         //Logbuch
         $wer = $angreifer->besitzer;
         $wen = $verteidiger->besitzer;
         $wann = date("Y-m-d H:i:s");
         //mysql_query("INSERT INTO logbuch (was,wann,wer,wen) VALUES ('$text','$wann','$wer','$wen')") or die(mysql_error());
         $eintrag = new Logbuch("typ", "neu");
         $eintrag->x = $angreifer->position->x;
         $eintrag->y = $angreifer->position->y;
         $eintrag->zeit = date("Y-m-d H:i:s");
         $eintrag->system = $angreifer->position->system->id;
         $eintrag->typ = "Kampf Planet";
         $eintrag->klasse = "Eingang";
         $eintrag->text = $text;
         $eintrag->initiator = $angreifer->besitzer->id;
         $eintrag->betroffener = $verteidiger->besitzer->id;
         $eintrag->save();
         $angreifer->kampftick("3", $verteidiger);
         //ende zurück
     }
 }