/** * Returns the translated original mode name. * * @return string */ public function getOrgModeName() { return Game::getMissionName($this->getOrgMode()); }
/** * This starts the missions and shows a quick overview of the flight. * * @param integer $mode * @param integer $metal * @param integer $silicon * @param integer $hydrogen * @param integer $holdingTime * @throws Recipe_Exception_Generic * @return Bengine_Game_Controller_Mission */ protected function sendFleet($mode, $metal, $silicon, $hydrogen, $holdingTime) { $this->noAction = true; $fleetEvents = Game::getEH()->getOwnFleetEvents(); if ($fleetEvents && Game::getResearch(14) + 1 <= count(Game::getEH()->getOwnFleetEvents())) { throw new Recipe_Exception_Generic("Too many fleets on missions."); } $result = Core::getQuery()->select("temp_fleet", "data", "", Core::getDB()->quoteInto("planetid = ?", Core::getUser()->get("curplanet"))); if ($row = $result->fetchRow()) { $result->closeCursor(); $temp = unserialize($row["data"]); if (!in_array($mode, $temp["amissions"])) { Logger::dieMessage("UNKNOWN_MISSION"); } $data["ships"] = $temp["ships"]; $data["galaxy"] = $temp["galaxy"]; $data["system"] = $temp["system"]; $data["position"] = $temp["position"]; $data["sgalaxy"] = Game::getPlanet()->getData("galaxy"); $data["ssystem"] = Game::getPlanet()->getData("system"); $data["sposition"] = Game::getPlanet()->getData("position"); $data["maxspeed"] = $temp["maxspeed"]; $distance = Game::getDistance($data["galaxy"], $data["system"], $data["position"]); $data["consumption"] = Game::getFlyConsumption($temp["consumption"], $distance, $temp["speed"]); if (Game::getPlanet()->getData("hydrogen") - $data["consumption"] < 0) { Logger::dieMessage("NOT_ENOUGH_FUEL"); } if ($temp["capacity"] < $data["consumption"]) { Logger::dieMessage("NOT_ENOUGH_CAPACITY"); } $data["metal"] = (int) abs($metal); $data["silicon"] = (int) abs($silicon); $data["hydrogen"] = (int) abs($hydrogen); if ($data["metal"] > Game::getPlanet()->getData("metal")) { $data["metal"] = _pos(Game::getPlanet()->getData("metal")); } if ($data["silicon"] > Game::getPlanet()->getData("silicon")) { $data["silicon"] = _pos(Game::getPlanet()->getData("silicon")); } if ($data["hydrogen"] > Game::getPlanet()->getData("hydrogen") - $data["consumption"]) { $data["hydrogen"] = _pos(Game::getPlanet()->getData("hydrogen") - $data["consumption"]); } if ($mode == 13) { $data["duration"] = _pos($holdingTime); if ($data["duration"] > 24) { $data["duration"] = 24; } $data["duration"] *= 3600; } $capa = $temp["capacity"] - $data["consumption"] - $data["metal"] - $data["silicon"] - $data["hydrogen"]; // Reduce used capacity automatically if ($capa < 0) { if ($capa + $data["hydrogen"] > 0) { $data["hydrogen"] -= abs($capa); } else { $capa += $data["hydrogen"]; $data["hydrogen"] = 0; if ($capa + $data["silicon"] > 0 && $capa < 0) { $data["silicon"] -= abs($capa); } else { if ($capa < 0) { $capa += $data["silicon"]; $data["silicon"] = 0; if ($capa + $data["metal"] && $capa < 0) { $data["metal"] -= abs($capa); } else { if ($capa < 0) { $data["metal"] = 0; } } } } } } $data["capacity"] = $temp["capacity"] - $data["consumption"] - $data["metal"] - $data["silicon"] - $data["hydrogen"]; if ($data["capacity"] < 0) { Logger::dieMessage("NOT_ENOUGH_CAPACITY"); } // If mission is recycling, get just the capacity of the recyclers. if ($mode == 9 && $data["capacity"] > 0) { $_result = Core::getQuery()->select("ship_datasheet", "capicity", "", "unitid = '37'"); // It is __capacity__ and not capicity $_row = $_result->fetchRow(); $_result->closeCursor(); $recCapa = $_row["capicity"] * $temp["ships"][37]["quantity"]; if ($data["capacity"] >= $recCapa) { $data["capacity"] = $recCapa; } } $time = Game::getFlyTime($distance, $data["maxspeed"], $temp["speed"]); $data["time"] = $time; if ($mode == 18) { $data["alliance_attack"] = $temp["alliance_attack"]; $mainFleet = Game::getEH()->getMainFormationFleet($data["alliance_attack"]["eventid"]); $allFleets = Game::getEH()->getFormationFleets($data["alliance_attack"]["eventid"]); $numFleets = 1; $formationUser[$mainFleet->get("user")] = true; /* @var Bengine_Game_Model_Fleet $oneFleet */ foreach ($allFleets as $oneFleet) { $numFleets++; $formationUser[$oneFleet->get("user")] = true; } unset($formationUser[Core::getUser()->get("userid")]); if ($numFleets >= Core::getOptions()->get("MAX_FORMATION_FLEETS")) { Logger::dieMessage("MAX_FORMATION_FLEETS_EXCEEDED"); } if (count($formationUser) >= Core::getOptions()->get("MAX_FORMATION_USER")) { Logger::dieMessage("MAX_FORMATION_USER_EXCEEDED"); } if ($data["time"] + TIME > ($mainFleet["time"] - TIME) * (1 + Core::getOptions()->get("MAX_FORMATION_DELAY")) + TIME) { Logger::dieMessage("MAX_FORMATION_DELAY_EXCEEDED"); } } Hook::event("SendFleet", array(&$data, &$time, &$temp, $distance)); Core::getQuery()->delete("temp_fleet", "planetid = ?", null, null, array(Core::getUser()->get("curplanet"))); $handler = Game::getEH()->addEvent($mode, $time + TIME, Core::getUser()->get("curplanet"), Core::getUser()->get("userid"), isset($temp["destination"]) ? $temp["destination"] : null, $data); Core::getTPL()->assign("mission", Game::getMissionName($mode)); Core::getTPL()->assign("mode", $mode); Core::getTPL()->assign("distance", fNumber($distance)); Core::getTPL()->assign("speed", fNumber($temp["maxspeed"])); Core::getTPL()->assign("consume", fNumber($data["consumption"])); Core::getTPL()->assign("start", Game::getPlanet()->getCoords(false)); Core::getTPL()->assign("target", $data["galaxy"] . ":" . $data["system"] . ":" . $data["position"]); Core::getTPL()->assign("arrival", Date::timeToString(1, $handler->getFinishTime())); if ($returnTime = $handler->getReturnTime()) { Core::getTPL()->assign("return", Date::timeToString(1, $returnTime)); } $fleet = array(); foreach ($data["ships"] as $key => $value) { $fleet[$key]["name"] = Core::getLanguage()->getItem($value["name"]); $fleet[$key]["quantity"] = fNumber($value["quantity"]); } Core::getTPL()->addLoop("fleet", $fleet); $this->setTemplate("mission/step4"); } return $this; }
/** * Returns the translated event mode name. * * @return string */ public function getModeName() { return Game::getMissionName($this->get("event_type_id")); }