Beispiel #1
0
 public function getContent()
 {
     $map = $this->getServer()->getMap();
     if (!$map instanceof Dolumar_Underworld_Map_Map) {
         $this->reloadWindow();
         return '<p>Mission is finished.</p>';
     }
     $mission = $map->getMission();
     $sides = $mission->getSides();
     $objective = $mission->getObjective();
     // Check the victory conditions
     $objective->checkVictoryConditions();
     if ($objective instanceof Dolumar_Underworld_Models_Objectives_TakeAndHold) {
         $out = '<p>Hold the center castle until the counter reaches 0.</p>';
         $scores = $objective->getScores();
         $out .= '<ul>';
         foreach ($scores as $v) {
             $timeleft = $objective->getHoldDuration() - $v['score'];
             if ($timeleft > 0) {
                 if ($v['increasing']) {
                     $timeleft = Neuron_Core_Tools::getCountdown(NOW + $timeleft);
                 } else {
                     $timeleft = Neuron_Core_Tools::getDuration($timeleft);
                 }
             } else {
                 $timeleft = 0;
             }
             $out .= '<li>' . $v['side']->getDisplayName() . ': ' . $timeleft . '</li>';
         }
         $out .= '</ul>';
     } else {
         $out = '<p>Just explore ^^</p>';
     }
     /*
     		foreach ($sides as $v)
     		{
     
     
     			$checkpoints = $objective->getConqueredCheckpoints ($v);
     			$score = count ($checkpoints);
     
     			$out .= '<p>- Team ' . $v->getId () . ': ' . $score . '</p>';
     		}*/
     $out .= '<p>' . Neuron_URLBuilder::getInstance()->getOpenUrl('Battle', 'Battle reports', array()) . '</p>';
     return $out;
 }
Beispiel #2
0
 private function getConfirmDonation($target, $resources, $runes, $equipment)
 {
     $page = new Neuron_Core_Template();
     $input = $this->aInput;
     $input['confirmed'] = 1;
     $page->set('input', json_encode($input));
     $premium = $this->isPremium($target);
     $costs = $this->calculateCosts($target, $resources, $runes, $premium);
     // Count transactions
     $t1 = $this->splitInTransactions($resources, self::RESOURCES_PER_TRANSPORTER);
     $t2 = $this->splitInTransactions($runes, self::RUNES_PER_TRANSPORTER);
     $t3 = $equipment;
     $max_transactions = $this->countMaximumTransfers($premium);
     $total_transactions = count($t1) + count($t2) + count($t3);
     // Get duration
     $duration = $this->getTransferDuration($target);
     if (!$premium) {
         $premiumcost = $this->calculateCosts($target, $resources, $runes, true);
         if ($premiumcost) {
             $page->set('premiumcost', $this->resourceToText($premiumcost));
             // Check who's fault it is.
             if ($this->getVillage()->getOwner()->isPremium()) {
                 $page->set('premiumerror', 'nothim');
             } elseif ($target->getOwner()->isPremium()) {
                 $page->set('premiumerror', 'notyou');
             } else {
                 $page->set('premiumerror', 'notboth');
             }
         }
     }
     if ($costs) {
         $page->set('costs', $this->resourceToText($costs));
     }
     $page->set('target', Neuron_Core_Tools::output_varchar($target->getName()));
     $page->set('targetid', $target->getId());
     $page->set('resources', $this->resourceToText($resources));
     $crunes = 0;
     foreach ($runes as $k => $v) {
         $crunes += $v;
     }
     $page->set('hasResources', $this->isFilled($resources));
     $page->set('hasRunes', $this->isFilled($runes));
     $page->set('hasEquipment', count($equipment) > 0);
     $page->set('transactions', $total_transactions);
     $page->set('maxtransactions', $max_transactions);
     $page->set('duration', Neuron_Core_Tools::getDuration($duration));
     $page->set('canConfirm', $total_transactions <= $this->countTransfersLeft($premium));
     $page->set('runes', $crunes);
     $page->set('tab', isset($input['tab']) ? $input['tab'] : 'resources');
     foreach ($equipment as $v) {
         $page->addListValue('equipment', array('id' => $v['equipment']->getId(), 'name' => $v['equipment']->getName($v['amount'] > 1), 'amount' => $v['amount']));
     }
     return $page->parse('buildings/market_confirm.phpt');
 }
Beispiel #3
0
 private function getCraftItem($id, $input)
 {
     $db = Neuron_Core_Database::__getInstance();
     // Check if this building is crafting already
     $l = $db->select('villages_items', array('i_id'), "i_bid = '" . $this->getId() . "' AND i_endCraft > '" . time() . "'");
     if (count($l) > 0) {
         $text = Neuron_Core_Text::__getInstance();
         $page = new Neuron_Core_Template();
         $page->set('working', $text->get('working', 'crafting', 'buildings'));
         $page->set('toReturn', $text->getClickTo($text->get('toReturn', 'crafting', 'buildings')));
         return $page->parse('buildings/working.tpl');
     } else {
         $equipment = $this->getCraftableItems();
         // Search for key
         $key = false;
         $equips = $this->getCraftableItems();
         foreach ($equips as $k => $v) {
             if ($v->getId() == $id) {
                 $key = $k;
             }
         }
         if ($key !== false) {
             $item = $equips[$key];
             $text = Neuron_Core_Text::__getInstance();
             $text->setFile('buildings');
             $text->setSection('crafting');
             // Check for input
             if (isset($input['amount']) && is_numeric($input['amount'])) {
                 $aantal = abs(floor($input['amount']));
                 $cost = $item->getCraftCost($this->getVillage(), $aantal);
                 // Remove resources
                 if ($this->getVillage()->resources->takeResourcesAndRunes($cost)) {
                     $this->getVillage()->craftEquipment($this, $item, $item->getCraftDuration($this->getVillage(), $aantal), $aantal);
                     //return $this->getOverview ();
                     return '<p>' . $text->get('done') . '</p>';
                 } else {
                     $error = $text->get('noResources');
                 }
             }
             $page = new Neuron_Core_Template();
             // Get max craftable
             $player = $this->getVillage()->getOwner();
             if ($player->isPremium()) {
                 $page->set('maxcraftable', Neuron_Core_Tools::putIntoText($text->get('maxcraftable'), array('amount' => $this->calculateMaxCraftable($item), 'items' => $item->getName(true))));
             }
             if (isset($error)) {
                 $page->set('error', $error);
             }
             $page->set('title', $text->get('title'));
             $page->set('amount', $text->get('amount'));
             $page->set('submit', $text->get('submit'));
             $page->set('itemId', $item->getId());
             $page->set('section', 'crafting');
             $page->set('cost', $this->getCost($item));
             $page->set('duration', Neuron_Core_Tools::putIntoText($text->get('duration'), array($item->getName(), Neuron_Core_Tools::getDuration($item->getCraftDuration($this->getVillage())))));
             $page->set('stats', Neuron_Core_Tools::output_text($item->getStats_text(), false));
             $page->set('about', Neuron_Core_Tools::putIntoText($text->get('craft'), array($item->getName(true))));
             $page->set('return', $text->getClickTo($text->get('toReturn')));
             return $page->parse('buildings/crafting.tpl');
         } else {
             return $this->getOverview();
         }
     }
 }
Beispiel #4
0
 protected function getCustomContent($input)
 {
     $db = Neuron_Core_Database::__getInstance();
     $text = Neuron_Core_Text::__getInstance();
     $text->setFile('buildings');
     $text->setSection('townCenter');
     $page = new Neuron_Core_Template();
     // Just to make sure we're not displaying old rune scouts.
     $this->getVillage()->resources->getRunes();
     // Change village name
     if (isset($input['villageName'])) {
         $input['villageName'] = strip_tags($input['villageName']);
         if (!$this->getVillage()->setName($input['villageName'])) {
             $page->set('changename_err', $text->get($this->getVillage()->getError()));
         } else {
             reloadEverything();
         }
     }
     // Let's check if we are already searching for runes
     $runeCheck = $db->select('villages_scouting', array('count(scoutId)'), "vid = '" . $this->getVillage()->getId() . "'");
     $alreadyScouting = $runeCheck[0]['count(scoutId)'] > 0;
     if (isset($input['do'])) {
         if ($input['do'] == 'scout') {
             $this->hideGeneralOptions();
             $this->hideTechnologyUpgrades();
             $currentPage = isset($input['pageid']) ? $input['pageid'] : 1;
             if ($currentPage < 1) {
                 $currentPage = 1;
             }
             Neuron_Core_Tools::splitInPages($page, $currentPage * 4 + 8, $currentPage, 4, 4, array('do' => 'scout'), null, 'pageid');
             if ($alreadyScouting) {
                 $page->set('scoutResults', $text->get('alreadyScouting'));
                 $page->set('scoutResult_isGood', false);
             } else {
                 if (isset($input['runes']) && is_numeric($input['runes'])) {
                     $runes = intval($input['runes']);
                     // Let's start scouting
                     $village = $this->getVillage();
                     //$cost = $village->getScoutLandsCost ($runes);
                     if ($village->scout($runes)) {
                         $page->set('scoutResults', $text->get('doneScouting'));
                         $page->set('scoutResult_isGood', true);
                     } else {
                         $page->set('scoutResults', $text->get('searchNoRunes'));
                         $page->set('scoutResult_isGood', false);
                     }
                 } else {
                     $scoutoptions = array();
                     $start = ($currentPage - 1) * 4 + 1;
                     $end = $start + 4;
                     for ($i = $start; $i < $end; $i++) {
                         $duration = $this->getVillage()->getScoutLandsDuration($i);
                         $cost = $this->resourceToText($this->getVillage()->getScoutLandsCost($i));
                         $duration = Neuron_Core_Tools::getDuration($duration);
                         $scoutoptions[] = array('runes' => $i, 'scoutDuration' => $duration, 'scoutCost' => $cost);
                     }
                     $page->set('scoutoptions', $scoutoptions);
                 }
             }
             return $page->parse('buildings/townCenter_scoutRunes.phpt');
         } else {
             if ($input['do'] == 'explore') {
                 /*
                  * TODO ;-)
                  *
                 $village = $this->getVillage ();
                 $village->lookForNPCs ();
                 */
             }
         }
     }
     $page->set('vid', $this->getVillage()->getId());
     // Search for new runes
     $page->set('searchRunes', $text->get('searchRunes'));
     $page->set('scoutLands', $text->get('scoutLands'));
     $page->set('scoutCost', $text->get('scoutCost'));
     // Change name
     $page->set('changeName', $text->get('changeName'));
     $page->set('villageName', $text->get('villageName'));
     $page->set('change', $text->get('change'));
     $page->set('villageName_value', Neuron_Core_Tools::output_varchar($this->getVillage()->getName()));
     $page->set('overview', $text->getClickTo($text->get('overview')));
     $page->set('techniques', $text->getClickTo($text->get('techniques')));
     $page->set('toScout', $text->getClickTo($text->get('toScout')));
     return $page->parse('buildings/townCenter.phpt');
 }
Beispiel #5
0
 public function getContent($errorInput = null, $putIntoText = array())
 {
     // Keep original value in seperate variable!
     $error = $errorInput;
     $text = Neuron_Core_Text::__getInstance();
     $login = Neuron_Core_Login::__getInstance();
     $me = Neuron_GameServer::getPlayer();
     $input = $this->getInputData();
     if ($login->isLogin() && $this->village && $this->village->isActive() && $this->village->getOwner()->getId() == $me->getId()) {
         // Make sure you are not in vacation mode.
         if ($this->village->getOwner()->inVacationMode()) {
             return '<p class="false">' . $text->get('vacationMode', 'main', 'main') . '</p>';
         }
         $page = new Neuron_Core_Template();
         $page->set('intro', $text->get('intro', 'build', 'building'));
         $page->set('construct', $text->get('construct', 'build', 'building'));
         $page->set('click', $text->get('click', 'build', 'building'));
         $selectrunewarning = addslashes($text->get('selectRune', 'build', 'building'));
         $page->set('selectRune', $selectrunewarning);
         $page->set('village', $this->village->getId());
         // Workers are working.
         if (!isset($error) && !$this->village->readyToBuild()) {
             $error = 'stillConstructing';
         }
         // Show error.
         if (isset($error)) {
             $txterr = Neuron_Core_Tools::putIntoText($text->get($error, 'buildError', 'building'), $putIntoText);
             $page->set('error', $txterr);
             $page->set('errorV', $error);
             if (isset($errorInput) && !empty($errorInput) && $errorInput != 'done') {
                 if ($error != 'done') {
                     switch ($error) {
                         case 'noRunes':
                         case 'noResources':
                         case 'stillConstructing':
                             $data = $this->getInputData();
                             $jsondata = json_encode(array('action' => 'queue', 'building' => $data['building'], 'x' => $data['x'], 'y' => $data['y'], 'rune' => $data['rune']));
                             $this->dialog($txterr, $text->get('queueBuild', 'queue', 'building'), 'windowAction (this, ' . $jsondata . ');', $text->get('okay', 'main', 'main'), 'void(0);');
                             break;
                         default:
                             $this->alert($txterr);
                             break;
                     }
                 }
             }
         }
         // Get all buildings (even those who can't be build)
         $buildings = Dolumar_Buildings_Building::getAllBuildings();
         $buildings_out = array();
         $race = $this->village->getRace();
         foreach ($buildings as $buildingV) {
             $building = Dolumar_Buildings_Building::getBuildingFromName($buildingV, $this->village->getRace());
             if ($building->canBuildBuilding($this->village)) {
                 $duration = $building->getConstructionTime($this->village);
                 $dur = Neuron_Core_Tools::getDuration($duration);
                 $size = $building->getSize();
                 $buildings_out[] = array($building->getName(), $building->getBuildingCost_Text($this->village), $building->getDescription(), $building->getSmallImage($race), $building->getBuildingId(), $dur, $building->getImage($this->village->getRace()), $size[0], $size[1], 'canBuild' => $building->checkBuildingLevels($this->village), 'upgrade' => Neuron_Core_Tools::putIntoText($text->get('upgradeFirst', 'build', 'building'), array('name' => $building->getName(true))), 'myBuildingsName' => $building->getName($this->village->buildings->getBuildingAmount($building) > 1), 'action' => new Dolumar_View_SelectBuildLocation($building->getBuildingId(), 'build', 'building_' . $building->getBuildingId(), $building->getDisplayObject($race), null, $selectrunewarning));
             }
         }
         // Order the list
         //$page->sortList ('buildings');
         usort($buildings_out, array($this, 'order_buildings'));
         $page->set('list_buildings', $buildings_out);
         return $page->parse('build.tpl');
     } else {
         return '<p class="false">' . $text->get('login', 'login', 'account') . '</p>';
     }
 }
Beispiel #6
0
 private function commandMoveUnit($building, $unit)
 {
     $input = $this->getInputData();
     $id = isset($input['target']) ? intval($input['target']) : null;
     if ($id > 0 && $id != $unit->getLocation()->getId()) {
         // Calculate distance & duration
         $target = Dolumar_Players_Village::getVillage($id);
         if (!$target) {
             return '<p>Invalid input: target village not found.</p>';
         }
         if (isset($input['confirm'])) {
             $page = new Neuron_Core_Template();
             $page->setTextSection('moveUnit', 'thievery');
             $page->set('input', array('building' => $building->getId()));
             // Move the bloody unit
             $unit->moveUnit($target);
             return $page->parse('thieves/doneMoving.phpt');
         } else {
             $page = new Neuron_Core_Template();
             $page->setTextSection('moveUnit', 'thievery');
             $distance = Dolumar_Map_Map::getDistanceBetweenVillages($unit->getLocation(), $target);
             // Calculate duration
             $duration = $unit->getTravelDuration($distance);
             $page->set('input', array_merge($input, array('confirm' => 'true')));
             $page->set('distance', Neuron_Core_Tools::output_distance($distance));
             $page->set('duration', Neuron_Core_Tools::getDuration($duration));
             return $page->parse('thieves/moveThief.phpt');
         }
     } else {
         $structure = new Neuron_Structure_ChooseTarget($this->getInputData(), $this->village, true, true);
         $structure->setReturnData(array('building' => $building->getId()));
         return $structure->getHTML();
     }
 }
Beispiel #7
0
 public function getUpgradeTechnology($input)
 {
     $s_technology = $input['technology'];
     $technologies = $this->getTechnologyUpgrades();
     $text = Neuron_Core_Text::__getInstance();
     $text->setFile('building');
     $text->setSection('technology');
     $page = new Neuron_Core_Template();
     $page->set('title', $text->get('technology'));
     $village = $this->getVillage();
     if (in_array($s_technology, $technologies) && !$village->hasTechnology($s_technology, true)) {
         $technology = Dolumar_Technology_Technology::getTechnology($s_technology);
         $showForm = true;
         if ($technology->canResearch($this)) {
             if (isset($input['confirm']) && Neuron_Core_Tools::checkConfirmLink($input['confirm'])) {
                 $cost = $technology->getResearchCost();
                 if (isset($cost['runeId']) && $cost['runeId'] == 'random' && isset($input['runeSelection'])) {
                     $cost['runeId'] = $input['runeSelection'];
                 }
                 if ($village->resources->takeResourcesAndRunes($cost)) {
                     if ($village->trainTechnology($technology)) {
                         $showForm = false;
                         $page->set('done', $text->get('done'));
                         reloadStatusCounters();
                     } else {
                         $page->set('error', 'Error: couldn\'t start the research.');
                     }
                 } else {
                     $page->set('error', $text->get('notEnoughResources'));
                 }
             }
             if ($showForm) {
                 $page->set('youSure', Neuron_Core_Tools::putIntoText($text->get('youSure'), array(Neuron_Core_Tools::output_varchar($technology->getName()))));
                 $page->set('description', Neuron_Core_Tools::output_varchar($technology->getDescription()));
                 $page->set('cost', Neuron_Core_Tools::putIntoText($text->get('costTime'), array($this->resourceToText($technology->getResearchCost(), true, true, false, $this->getBuildingId()))));
                 $page->set('duration', Neuron_Core_Tools::putIntoText($text->get('duration'), array(Neuron_Core_Tools::getDuration($technology->getDuration()))));
                 $page->set('confirm', $text->getClickto($text->get('toConfirm')));
                 $page->set('technology', $s_technology);
                 $page->set('confirmation', Neuron_Core_Tools::getConfirmLink());
             }
         } else {
             return '<p>Invalid input: technology not researchable.</p>';
         }
     } else {
         $page->set('notFound', $text->get('notFound'));
     }
     $page->set('return', $text->getClickto($text->get('toReturn')));
     return $page->parse('buildings/general_tech.tpl');
 }
Beispiel #8
0
 public function getFightReport($now = NOW, $logid = null, $showAll = false)
 {
     $text = Neuron_Core_Text::__getInstance();
     $this->loadData();
     $data = $this->data['battleLog'];
     // Check how much "report" can be seen
     $fightStart = $this->data['fightDate'];
     $out = array();
     $data = explode(';', $data);
     array_pop($data);
     $lastAction = null;
     $out[] = Neuron_Core_Tools::putIntoText($text->getRandomLine('introtext', 'battlereport', $this->id), array('attacker' => $this->getAttacker()->getName(), 'defender' => $this->getDefender()->getName()));
     $isDone = $showAll || $this->isDone();
     $slots = json_decode($this->data['slots'], true);
     if (isset($slots['attacking']) && isset($slots['defending'])) {
         // Create thze battle report
         $attacking = $this->parseUnitSlots($slots['attacking']);
         $defending = $this->parseUnitSlots($slots['defending']);
         $this->oBattlefield = new Dolumar_Battle_Battlefield($attacking, $defending);
     } else {
         $this->oBattlefield = new Dolumar_Battle_Battlefield(null, null);
     }
     $i = 0;
     foreach ($data as $v) {
         $facts = explode('|', $v);
         $orgfacts = $facts;
         if (count($facts) > 3) {
             // Fetch the date from the data
             $iDate = array_shift($facts);
             // Jump out of the loop if date is in the future
             if (!$isDone && $iDate + $fightStart > time()) {
                 break;
             }
             $iAction = intval(array_shift($facts));
             $iRandom = array_shift($facts);
             // $iTeam: attacker = 1, defender = 2.
             $iTeam = array_shift($facts);
             $isAttacker = $iTeam == 1;
             $date = Neuron_Core_Tools::getDuration($iDate);
             // Check for "empty" status report
             if ($lastAction === 0 && $iAction === 0) {
                 array_pop($out);
             }
             $lastAction = $iAction;
             // Check if we should push this log to the battlefield
             if ($logid != null && $logid == $i) {
                 $selected = true;
                 $usefield = true;
             } else {
                 $selected = false;
                 $usefield = $logid === null || $logid > $i;
             }
             switch ($iAction) {
                 // Status
                 case 0:
                     //$out[] = null;
                     $out[] = $text->getRandomLine('status_' . $facts[0], 'battlereport', $iRandom);
                     if ($usefield) {
                         $this->oBattlefield->nextround();
                     }
                     break;
                     // Move
                 // Move
                 case 1:
                     $unit = $this->getUnitData($facts[0]);
                     $out[] = Neuron_Core_Tools::putIntoText($text->getRandomLine('move', 'battlereport', $iRandom, $unit), array('unit' => (string) $unit, 'from' => $facts[1], 'to' => $facts[2]));
                     if ($usefield) {
                         $this->oBattlefield->move($isAttacker, $facts[1], $facts[2], $unit);
                     }
                     break;
                     // Stunned
                 // Stunned
                 case 2:
                     $unit = $this->getUnitData($facts[0]);
                     $slot = $this->getUnitSlot($facts[0]);
                     $out[] = Neuron_Core_Tools::putIntoText($text->getRandomLine('stunned', 'battlereport', $iRandom), array('unit' => (string) $unit));
                     if ($usefield) {
                         $this->oBattlefield->stunned(!$isAttacker, $slot, $unit);
                     }
                     break;
                     // Magic
                 // Magic
                 case 5:
                     /* 112|5|68|1|1:1|3|4:3:7::0:50|8 */
                     // unit | effect | probability
                     $unitData = explode(':', array_shift($facts));
                     $unit = Dolumar_SpecialUnits_SpecialUnits::getFromId($unitData[0]);
                     if ($unit) {
                         $unit->setLevel($unitData[1]);
                         $unit->setVillage($this->getAttacker());
                         $effectId = array_shift($facts);
                         $effect = Dolumar_Effects_Effect::getFromId($effectId);
                         $probability = array_shift($facts);
                         if ($effect && $effect instanceof Dolumar_Effects_Battle) {
                             $out[] = $effect->getBattleLog($this, $unit, $probability, $facts);
                             if ($usefield) {
                                 $this->oBattlefield->specialunit_action($isAttacker, $unit, $effect, true);
                             }
                         } else {
                             $out[] = 'Unidentified battle effect: ' . $effectId;
                         }
                     } else {
                         $out[] = 'Unidentified battle effect user: '******':', array_shift($facts));
                     $unit = Dolumar_SpecialUnits_SpecialUnits::getFromId($unitData[0]);
                     $unit->setLevel($unitData[1]);
                     $unit->setVillage($this->getAttacker());
                     $effectId = array_shift($facts);
                     $effect = Dolumar_Effects_Effect::getFromId($effectId);
                     $probability = array_shift($facts);
                     if ($effect && $effect instanceof Dolumar_Effects_Battle) {
                         $out[] = $effect->getFailedLog($this, $unit, $probability, $facts);
                         if ($usefield) {
                             $this->oBattlefield->specialunit_action($isAttacker, $unit, $effect, false);
                         }
                     }
                     break;
                     // Dead special units
                 // Dead special units
                 case 7:
                     /* 158|6|59|1|1:1|3 */
                     $unitData = explode(':', array_shift($facts));
                     $unit = Dolumar_SpecialUnits_SpecialUnits::getFromId($unitData[0]);
                     $unit->setLevel($unitData[1]);
                     $unit->setVillage($this->getAttacker());
                     $out[] = Neuron_Core_Tools::putIntoText($text->getRandomLine('specialunitdied', 'battlereport', $iRandom), array('unit' => $unit->getName(), 'level' => $unit->getLevel()));
                     if ($usefield) {
                         $this->oBattlefield->specialunit_dead($isAttacker, $effect, false);
                     }
                     break;
                     // whiped units
                 // whiped units
                 case 8:
                     $unit = $this->getUnitData($facts[0]);
                     $out[] = Neuron_Core_Tools::putIntoText($text->getRandomLine('whipe', 'battlereport', $iRandom), array('unit' => (string) $unit, 'date' => $date));
                     if ($usefield) {
                         $this->oBattlefield->whipe($isAttacker, $this->getUnitSlot($facts[0]), $unit);
                     }
                     break;
                 case 9:
                     $unit = $this->getUnitData($facts[0]);
                     $out[] = Neuron_Core_Tools::putIntoText($text->getRandomLine('flee', 'battlereport', $iRandom), array('unit' => (string) $unit, 'date' => $date));
                     if ($usefield) {
                         $this->oBattlefield->flee($isAttacker, $this->getUnitSlot($facts[0]), $unit);
                     }
                     break;
                     // Damage
                 // Damage
                 case 10:
                 case 11:
                 case 12:
                     switch ($iAction) {
                         case 11:
                             $damage = 'melee';
                             break;
                         case 12:
                             $damage = 'shooting';
                             break;
                         default:
                             $damage = 'error';
                             break;
                     }
                     $attacker = $this->getUnitData($facts[0]);
                     $defender = $this->getUnitData($facts[1]);
                     $out[] = Neuron_Core_Tools::putIntoText($text->getRandomLine('casualties_' . $damage, 'battlereport', $iRandom), array('attacker' => (string) $attacker, 'defender' => (string) $defender, 'amount' => $facts[2], 'date' => $date, 'frontage' => $this->getUnitFrontage($facts[0])));
                     if ($usefield) {
                         $this->oBattlefield->damage($isAttacker, $this->getUnitSlot($facts[0]), $this->getUnitSlot($facts[1]), $facts[2], $attacker, $defender);
                     }
                     break;
                     // Default
                 // Default
                 default:
                     $out[] = $date . ' Unknown log: ' . $iAction;
                     break;
             }
             $i = count($out);
         }
     }
     if (!$isDone) {
         $out[] = '...';
     }
     return $out;
 }