natarsArtifactsUnits = function ($multiplier) { return [ 41 => rand(1000*$multiplier, 2000*$multiplier) * NATARS_UNITS, 42 => rand(1500*$multiplier, 2000*$multiplier) * NATARS_UNITS, 43 => rand(2300*$multiplier, 2800*$multiplier) * NATARS_UNITS, 44 => rand(25*$multiplier, 75*$multiplier) * NATARS_UNITS, 45 => rand(1200*$multiplier, 1900*$multiplier) * NATARS_UNITS, 46 => rand(1500*$multiplier, 2000*$multiplier) * NATARS_UNITS, 47 => rand(500*$multiplier, 900*$multiplier) * NATARS_UNITS, 48 => rand(100*$multiplier, 300*$multiplier) * NATARS_UNITS, 49 => rand(1*$multiplier, 5*$multiplier) * NATARS_UNITS, 50 => rand(1*$multiplier, 5*$multiplier) * NATARS_UNITS ]; }; /* ------------------------------------------------- WW VILLAGE TROOPS ------------------------------------------------- */ $this->natarsWWVillagesUnits = function () { return [ 41 => rand(500, 12000) * NATARS_UNITS, 42 => rand(1000, 14000) * NATARS_UNITS, 43 => rand(2000, 16000) * NATARS_UNITS, 44 => rand(100, 500) * NATARS_UNITS, 45 => rand(480, 17000) * NATARS_UNITS, 46 => rand(600, 18000) * NATARS_UNITS, 47 => rand(2000, 16000) * NATARS_UNITS, 48 => rand(400, 2000) * NATARS_UNITS, 49 => rand(40, 200) * NATARS_UNITS, 50 => rand(50, 250) * NATARS_UNITS ]; }; } /* ===================================================== = NATARS ACCOUNT CREATION ===================================================== */ public function createNatars() { global $database; $password = $database->getUserField(5, 'password', 0); $database->register( TRIBE5, $password, self::NATARS_EMAIL, self::NATARS_TRIBE, null, self::NATARS_UID, self::NATARS_DESC ); $possibleWids = $database->getVilWrefs(self::NATARS_CAPITAL_COORDINATES); $wid = $database->getFreeVillage($possibleWids); $wid = $database->generateVillages( [[ 'wid' => $wid, 'mode' => 2, 'type' => 3, 'kid' => 0, 'capital' => 1, 'pop' => 834, 'name' => null, 'natar' => 0 ]], self::NATARS_UID, TRIBE5 ); $this->scoutAllPlayers($wid); $this->addArtifactVillages(self::NATARS_ARTIFACTS); } /* ===================================================== = ACTIVATE ARTIFACTS ENGINE ===================================================== */ public function activateArtifacts() { global $database; $activationTime = 86400 / ( SPEED == 2 ? 1.5 : (SPEED == 3 ? 2 : SPEED) ); $artifacts = $database->getInactiveArtifacts( round(time() - $activationTime) ); if (empty($artifacts)) { return; } /* ------------------------------------------------- GROUP BY OWNER ------------------------------------------------- */ $grouped = []; foreach ($artifacts as $artifact) { $grouped[$artifact['owner']][] = $artifact; } /* ------------------------------------------------- PROCESS PER OWNER ------------------------------------------------- */ foreach ($grouped as $owner => $inactiveArtifacts) { $ownArtifacts = $database->getOwnArtifactsSum($owner, true); foreach ($inactiveArtifacts as $artifact) { if ($ownArtifacts['totals'] < 3) { $database->activateArtifact($artifact['id']); $ownArtifacts['totals']++; } } } } /* ===================================================== = RETURN ARTIFACT TO NATARS ===================================================== */ public function returnArtifactToNatars($artifactArray) { global $database; $multiplier = $artifactArray['size'] == 3 ? 4 : $artifactArray['size']; $unitsArray = ($this->natarsArtifactsUnits)($multiplier); $artifactTroops[1][] = array_values($unitsArray); $artifactTroops[0] = array_keys($unitsArray); $artifactBuildings[1][] = array_values(self::NATARS_ARTIFACTS_BUILDINGS); $artifactBuildings[0] = array_keys(self::NATARS_ARTIFACTS_BUILDINGS); $wid = $database->generateVillages( [[ 'wid' => 0, 'mode' => $artifactArray['size'] + 1, 'type' => 3, 'kid' => rand(1,4), 'capital' => 0, 'pop' => 163, 'name' => 'Artifact Village', 'natar' => 0 ]], self::NATARS_UID, TRIBE5, $artifactTroops, $artifactBuildings ); $database->updateArtifactDetails( $artifactArray['id'], [ 'vref' => $wid, 'owner' => self::NATARS_UID, 'active'=> 0, 'del' => 0 ] ); } /* ===================================================== = ARTIFACT INFO HELPER ===================================================== */ public static function getArtifactInfo($artifact) { if (!is_array($artifact)) { return [ "requiredLevel" => 0, "active" => 0, "bonus" => 0, "effectInfluence" => 0, "nextEffect" => 0 ]; } $activationTime = 86400 / ( SPEED == 2 ? 1.5 : (SPEED == 3 ? 2 : SPEED) ); $time = time(); $requiredLevel = ($artifact['size'] == 1 && $artifact['type'] != 11) ? 10 : 20; $active = $artifact['owner'] == self::NATARS_UID ? "-" : ($artifact['active'] ? "".ACTIVE."" : "-"); return [ "requiredLevel" => $requiredLevel, "active" => $active, "bonus" => $artifact['effect'] ?? '', "effectInfluence" => ACCOUNT, "nextEffect" => $time + $activationTime ]; } } ?>