Files
aowow/setup/tools/filegen/pets.ss.php
Sarjuuk 2386e35207 CLISetup/locales
* removed redundant declaration of locales to process
2024-06-29 13:03:18 +02:00

96 lines
3.5 KiB
PHP

<?php
if (!defined('AOWOW_REVISION'))
die('illegal access');
if (!CLI)
die('not in cli mode');
/* Example data
30: {
id:30,
name:'Forest Spider',
minlevel:5,
maxlevel:6,
location:[12], // master-AreaTableId's (?)
react:[-1,-1],
classification:0, // 0:"Normal", 1:"Elite", 2:"Rar Elite", 3:"Boss", 4:"Rar"
family:3, // creatureFamily
displayId:382,
skin:'TarantulaSkinOrange',
icon:'Ability_Hunter_Pet_Spider', // from creatureFamily.dbc
type:2 // 0:Ferocity, 1:Tenacity, 2:Cunning
},
*/
// builds 'pets'-file for available locales
CLISetup::registerSetup("build", new class extends SetupScript
{
protected $info = array(
'pets' => [[], CLISetup::ARGV_PARAM, 'Compiles tameable hunter pets to file for the talent calculator tool.']
);
protected $dbcSourceFiles = ['creaturefamily'];
protected $setupAfter = [['creature', 'factions', 'spawns'], []];
protected $requiredDirs = ['datasets/'];
protected $localized = true;
public function generate() : bool
{
$petList = DB::Aowow()->Select(
'SELECT cr.id,
cr.name_loc0, cr.name_loc2, cr.name_loc3, cr.name_loc4, cr.name_loc6, cr.name_loc8,
cr.minLevel, cr.maxLevel,
ft.A, ft.H,
cr.rank AS classification,
cr.family,
cr.displayId1 AS displayId,
cr.textureString AS skin,
LOWER(SUBSTRING_INDEX(cf.iconString, "\\\\", -1)) AS icon,
cf.petTalentType AS type
FROM ?_creature cr
JOIN ?_factiontemplate ft ON ft.id = cr.faction
JOIN dbc_creaturefamily cf ON cf.id = cr.family
WHERE cr.typeFlags & 0x1 AND (cr.cuFlags & 0x2) = 0
ORDER BY cr.id ASC');
$locations = DB::Aowow()->selectCol('SELECT `typeId` AS ARRAY_KEY, `areaId` AS ARRAY_KEY2, `areaId` FROM ?_spawns WHERE `type` = ?d AND `typeId` IN (?a) GROUP BY `typeId`, `areaId`', Type::NPC, array_column($petList, 'id'));
foreach (CLISetup::$locales as $lId => $jsonStr)
{
User::useLocale($lId);
Lang::load($lId);
$petsOut = [];
foreach ($petList as $pet)
{
$petsOut[$pet['id']] = array(
'id' => $pet['id'],
'name' => Util::localizedString($pet, 'name'),
'minlevel' => $pet['minLevel'],
'maxlevel' => $pet['maxLevel'],
'location' => $locations[$pet['id']] ?? [],
'react' => [$pet['A'], $pet['H']],
'classification' => $pet['classification'],
'family' => $pet['family'],
'displayId' => $pet['displayId'],
'skin' => $pet['skin'],
'icon' => $pet['icon'],
'type' => $pet['type']
);
}
$toFile = "var g_pets = ".Util::toJSON($petsOut).";";
$file = 'datasets/'.$jsonStr.'/pets';
if (!CLISetup::writeFile($file, $toFile))
$this->success = false;
}
return $this->success;
}
});
?>