Location: PHPKode > projects > Skrupel KI > skrupelki/ki_leicht/schiffe_leicht/scouts_leicht.php
<?php
/**
 * Autor: Wasserleiche (hide@address.com)
 * 
 * Implementierung des Verhaltes der KI bei Scouts.
 */
class scouts_leicht extends scouts_basis {
	
	/**
	 * Setzt einen Kurs fuer den uebergebene Scout. Zuerst werden sichtbare feindliche Schiffe 
	 * angesteuert. Sind keine Feind-Schiffe in Sicht, so wird ein Erkundungskurs gewaehlt.
	 * arguments: $scout_id - Die Datenbank-ID des Scouts, das einen Kurs bekommen soll.
	 */
	function fliegeScout($scout_id) {
		$warp = $this->ermittleMaximumWarp($scout_id);
		$schiff_pos = @mysql_query("SELECT kox, koy FROM skrupel_schiffe WHERE id='$scout_id'");
		$schiff_pos = @mysql_fetch_array($schiff_pos);
		$x_start = $schiff_pos['kox'];
		$y_start = $schiff_pos['koy'];
		$gegner_ziel = null;
		//Zuerst werden alle anderen sichtbaren Feindschiffe ueberprueft.
		if(count(eigenschaften::$sichtbare_gegner_schiffe) > 0) {
			$gegner_ziel = ki_basis::ermittleNahesZiel($scout_id, eigenschaften::$sichtbare_gegner_schiffe, 
							eigenschaften::$bekannte_wurmloch_daten);
		}
		if($gegner_ziel != null && $gegner_ziel['id'] != null && $gegner_ziel['id'] != 0) {
			$this->fliegeSchiff($scout_id, $gegner_ziel['x'], $gegner_ziel['y'], $warp, $gegner_ziel['id']);
			return;
		}
		$gegner_ziel = null;
		//Da keine passenden Ziele gefunden wurden, wird nun ein Erkundungsziel gesetzt.
		$gegner_ziel = $this->erkunde($scout_id);
		$this->fliegeSchiff($scout_id, $gegner_ziel['x'], $gegner_ziel['y'], $warp, $gegner_ziel['id']);
	}
	
	/**
	 * Verwaltet alle Scouts.
	 */
	function verwalteScouts() {
		$spiel_id = eigenschaften::$spiel_id;
		foreach(eigenschaften::$scout_ids as $scout_id) {
			$taster_infos = @mysql_query("SELECT kox, koy, lemin, status FROM skrupel_schiffe 
				WHERE id='$scout_id'");
			$this->setzeAggressivitaet($scout_id, 9);
			$this->setzeTaktik($scout_id, 1);
			$taster_infos = @mysql_fetch_array($taster_infos);
			$warp = $this->ermittleMaximumWarp($scout_id);
			$x_pos = $taster_infos['kox'];
			$y_pos = $taster_infos['koy'];
			$schiff_lemin = $taster_infos['lemin'];
			$schiff_status = $taster_infos['status'];
			if($this->SchiffHatFertigkeit($scout_id, "sensorenphalanx")) 
				@mysql_query("UPDATE skrupel_schiffe SET spezialmission=11 WHERE id='$scout_id'");
			elseif($this->SchiffHatFertigkeit($scout_id, "labor")) 
				@mysql_query("UPDATE skrupel_schiffe SET spezialmission=12 WHERE id='$scout_id'");
			elseif($this->SchiffHatFertigkeit($scout_id, "tarnung")) $this->aktiviereTarnung($scout_id);
			$this->scanneUmgebung($scout_id);
			if($this->reagiereAufWurmloch($scout_id)) continue;
			if($this->mussObjektUmfliegen($scout_id)) continue;
			if($schiff_status == 2) {
				$planeten_infos = @mysql_query("SELECT id, besitzer, sternenbasis FROM skrupel_planeten 
						WHERE (spiel='$spiel_id') AND (x_pos='$x_pos') AND (y_pos='$y_pos')");
				$planeten_infos = @mysql_fetch_array($planeten_infos);
				$planeten_id = $planeten_infos['id'];
				$planeten_besitzer = $planeten_infos['besitzer'];
				$sternenbasis = $planeten_infos['sternenbasis'];
				if($planeten_besitzer == eigenschaften::$comp_id) 
					$this->leereFrachtRaum($scout_id, $planeten_id);
				$this->fliegeScout($scout_id);
				if($schiff_lemin == 0 && $sternenbasis == 2) $this->tankeLeminStart($scout_id, $planeten_id);
				else $this->tankeLemin($scout_id, $planeten_id);
				continue;
			}
			$strecken_lemin = $this->ermittleStreckenVerbrauch($scout_id);
			if($schiff_lemin < (eigenschaften::$jaeger_infos->min_jaeger_lemin_prozent * $strecken_lemin / 100) 
			&& $schiff_status != 2) {
				$this->fliegeTanken($scout_id);
				continue;
			}
			//Hat das Schiff aus welch Gruenden auch immer kein Ziel, so wird eins bestimmt.
			$flug_daten = @mysql_query("SELECT zielx, ziely, kox, koy FROM skrupel_schiffe WHERE id='$scout_id'");
			$flug_daten = @mysql_fetch_array($flug_daten);
			if(($flug_daten['zielx'] == 0 && $flug_daten['ziely'] == 0) 
			|| ($flug_daten['zielx'] == $flug_daten['kox'] && $flug_daten['ziely'] == $flug_daten['koy'])) 
				$this->fliegeScout($scout_id);
		}
	}
}
?>
Return current item: Skrupel KI