mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
Setup/Scripts
* restructure setup to allow for self contained setup steps to self register (just the sql for now) * should ease adding new scripts in future
This commit is contained in:
@@ -17,6 +17,7 @@ define('ERR_MISSING_INCL', 'required function %s() could not be found at %s');
|
|||||||
|
|
||||||
|
|
||||||
require_once 'setup/tools/CLISetup.class.php';
|
require_once 'setup/tools/CLISetup.class.php';
|
||||||
|
require_once 'setup/tools/setupScript.class.php';
|
||||||
require_once 'setup/tools/dbc.class.php';
|
require_once 'setup/tools/dbc.class.php';
|
||||||
require_once 'setup/tools/imagecreatefromblp.func.php';
|
require_once 'setup/tools/imagecreatefromblp.func.php';
|
||||||
|
|
||||||
|
|||||||
76
setup/tools/setupScript.class.php
Normal file
76
setup/tools/setupScript.class.php
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
trait TrDBCcopy
|
||||||
|
{
|
||||||
|
public function generate() : bool
|
||||||
|
{
|
||||||
|
if (!$this->dbcSourceFiles)
|
||||||
|
{
|
||||||
|
CLI::write(' SetupScript '.$this->command.' is set up for DBCcopy but has no source set!', CLI::LOG_ERROR);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (count($this->dbcSourceFiles) != 1)
|
||||||
|
CLI::write(' SetupScript '.$this->command.' is set up for DBCcopy but has multiple sources set!', CLI::LOG_WARN);
|
||||||
|
|
||||||
|
CLI::write('SqlGen::generate() - copying '.$this->dbcSourceFiles[0].'.dbc into aowow_'.$this->command);
|
||||||
|
|
||||||
|
$dbc = new DBC($this->dbcSourceFiles[0], ['temporary' => false, 'tableName' => 'aowow_'.$this->command]);
|
||||||
|
if ($dbc->error)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return !!$dbc->readFile();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
trait TrCustomData
|
||||||
|
{
|
||||||
|
// apply post generator custom data
|
||||||
|
public function applyCustomData() : void
|
||||||
|
{
|
||||||
|
if (!$this->customData)
|
||||||
|
return;
|
||||||
|
|
||||||
|
foreach ($this->customData as $id => $data)
|
||||||
|
if ($data)
|
||||||
|
DB::Aowow()->query('UPDATE ?_'.$this->command.' SET ?a WHERE id = ?d', $data, $id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class SetupScript
|
||||||
|
{
|
||||||
|
protected $fileTemplatePath = '';
|
||||||
|
protected $fileTemplateFile = '';
|
||||||
|
|
||||||
|
protected $tblDependancyAowow = [];
|
||||||
|
protected $tblDependancyTC = [];
|
||||||
|
|
||||||
|
protected $dbcSourceFiles = [];
|
||||||
|
|
||||||
|
// abstract protected $command;
|
||||||
|
|
||||||
|
abstract public function generate() : bool;
|
||||||
|
|
||||||
|
public function getRequiredDBCs() : array
|
||||||
|
{
|
||||||
|
return $this->dbcSourceFiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDependancies(bool $aowow) : array
|
||||||
|
{
|
||||||
|
return $aowow ? $this->tblDependancyAowow : $this->tblDependancyTC;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getName() : string
|
||||||
|
{
|
||||||
|
return $this->command;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -7,74 +7,14 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* provide these with basic content
|
|
||||||
aowow_announcements
|
|
||||||
aowow_articles
|
|
||||||
aowow_config
|
|
||||||
aowow_home_featuredbox
|
|
||||||
aowow_home_featuredbox_overlay
|
|
||||||
aowow_home_oneliners
|
|
||||||
aowow_home_titles
|
|
||||||
aowow_sourcestrings
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
class SqlGen
|
class SqlGen
|
||||||
{
|
{
|
||||||
const MODE_NORMAL = 1;
|
const MODE_NORMAL = 1;
|
||||||
const MODE_FIRSTRUN = 2;
|
const MODE_FIRSTRUN = 2;
|
||||||
const MODE_UPDATE = 3;
|
const MODE_UPDATE = 3;
|
||||||
|
|
||||||
private static $tables = array( // [dbcName, saveDbc, AowowDeps, TCDeps]
|
private static $tables = [];
|
||||||
'achievementcategory' => ['achievement_category', false, null, null],
|
private static $tmpStore = [];
|
||||||
'achievementcriteria' => ['achievement_criteria', false, null, null],
|
|
||||||
'itemenchantmentcondition' => ['spellitemenchantmentcondition', false, null, null],
|
|
||||||
'itemextendedcost' => ['itemextendedcost', false, null, null],
|
|
||||||
'itemlimitcategory' => ['itemlimitcategory', false, null, null],
|
|
||||||
'itemrandomproppoints' => ['randproppoints', false, null, null],
|
|
||||||
'lock' => ['lock', true, null, null],
|
|
||||||
'mailtemplate' => ['mailtemplate', false, null, null],
|
|
||||||
'scalingstatdistribution' => ['scalingstatdistribution', true, null, null],
|
|
||||||
'scalingstatvalues' => ['scalingstatvalues', true, null, null],
|
|
||||||
'spellfocusobject' => ['spellfocusobject', false, null, null],
|
|
||||||
'spelloverride' => ['overridespelldata', false, null, null],
|
|
||||||
'spellrange' => ['spellrange', false, null, null],
|
|
||||||
'spellvariables' => ['spelldescriptionvariables', false, null, null],
|
|
||||||
'totemcategory' => ['totemcategory', false, null, null],
|
|
||||||
'icons' => [null, null, null, null],
|
|
||||||
'glyphproperties' => [null, true, ['icons'], null],
|
|
||||||
'talents' => [null, null, null, null],
|
|
||||||
'classes' => [null, null, null, null],
|
|
||||||
'factions' => [null, null, null, null],
|
|
||||||
'factiontemplate' => [null, null, null, null],
|
|
||||||
'holidays' => [null, null, null, null],
|
|
||||||
'itemrandomenchant' => [null, null, null, null],
|
|
||||||
'races' => [null, null, null, null],
|
|
||||||
'shapeshiftforms' => [null, null, null, null],
|
|
||||||
'skillline' => [null, null, ['icons'], null],
|
|
||||||
'emotes' => [null, null, null, null],
|
|
||||||
'sounds' => [null, null, null, null],
|
|
||||||
'areatrigger' => [null, null, null, ['areatrigger_involvedrelation', 'areatrigger_scripts', 'areatrigger_tavern', 'areatrigger_teleport', 'quest_template', 'quest_template_addon']],
|
|
||||||
'itemenchantment' => [null, null, null, ['spell_enchant_proc_data']],
|
|
||||||
'achievement' => [null, null, ['icons'], ['dbc_achievement', 'disables']],
|
|
||||||
'creature' => [null, null, null, ['creature_template', 'creature_template_locale', 'creature_classlevelstats', 'instance_encounters']],
|
|
||||||
'currencies' => [null, null, null, ['item_template', 'item_template_locale']],
|
|
||||||
'events' => [null, null, null, ['game_event', 'game_event_prerequisite']],
|
|
||||||
'objects' => [null, null, null, ['gameobject_template', 'gameobject_template_locale', 'gameobject_questitem']],
|
|
||||||
'pet' => [null, null, ['icons'], ['creature_template', 'creature']],
|
|
||||||
'quests' => [null, null, null, ['quest_template', 'quest_template_addon', 'quest_template_locale', 'game_event', 'game_event_seasonal_questrelation', 'disables']],
|
|
||||||
'quests_startend' => [null, null, null, ['creature_queststarter', 'creature_questender', 'game_event_creature_quest', 'gameobject_queststarter', 'gameobject_questender', 'game_event_gameobject_quest', 'item_template']],
|
|
||||||
'spell' => [null, null, ['icons'], ['skill_discovery_template', 'item_template', 'creature_template', 'creature_template_addon', 'smart_scripts', 'npc_trainer', 'disables', 'spell_ranks', 'spell_dbc']],
|
|
||||||
'spelldifficulty' => [null, null, null, ['spelldifficulty_dbc']],
|
|
||||||
'taxi' /* nodes + paths */ => [null, null, null, ['creature_template', 'creature']],
|
|
||||||
'titles' => [null, null, null, ['quest_template', 'game_event_seasonal_questrelation', 'game_event', 'achievement_reward']],
|
|
||||||
'items' => [null, null, ['icons'], ['item_template', 'item_template_locale', 'spell_group', 'game_event']],
|
|
||||||
'spawns' /* + waypoints */ => [null, null, null, ['creature', 'creature_addon', 'gameobject', 'gameobject_template', 'vehicle_accessory', 'vehicle_accessory_template', 'script_waypoint', 'waypoints', 'waypoint_data']],
|
|
||||||
'zones' => [null, null, null, ['access_requirement']],
|
|
||||||
'itemset' => [null, null, ['spell'], ['item_template', 'game_event']],
|
|
||||||
'item_stats' /* + ench */ => [null, null, ['items', 'spell'], null],
|
|
||||||
'source' => [null, null, ['spell', 'achievement'], ['npc_vendor', 'game_event_npc_vendor', 'creature', 'quest_template', 'quest_template_addon', 'playercreateinfo_item', 'npc_trainer', 'skill_discovery_template', 'playercreateinfo_skills', 'achievement_reward', 'skill_perfect_item_template']]
|
|
||||||
);
|
|
||||||
|
|
||||||
public static $cliOpts = [];
|
public static $cliOpts = [];
|
||||||
private static $shortOpts = 'h';
|
private static $shortOpts = 'h';
|
||||||
@@ -84,13 +24,61 @@ class SqlGen
|
|||||||
public static $subScripts = [];
|
public static $subScripts = [];
|
||||||
|
|
||||||
public static $defaultExecTime = 30;
|
public static $defaultExecTime = 30;
|
||||||
public static $stepSize = 1000;
|
public static $sqlBatchSize = 1000;
|
||||||
|
|
||||||
public static function init($mode = self::MODE_NORMAL, array $updScripts = [])
|
public static function init(int $mode = self::MODE_NORMAL, array $updScripts = []) : void
|
||||||
{
|
{
|
||||||
self::$defaultExecTime = ini_get('max_execution_time');
|
self::$defaultExecTime = ini_get('max_execution_time');
|
||||||
$doScripts = null;
|
$doScripts = null;
|
||||||
|
|
||||||
|
|
||||||
|
// register subscripts
|
||||||
|
foreach (glob('setup/tools/sqlgen/*.func.php') as $file)
|
||||||
|
include_once $file;
|
||||||
|
|
||||||
|
while (self::$tmpStore)
|
||||||
|
{
|
||||||
|
$nDepsMissing = count(self::$tmpStore);
|
||||||
|
|
||||||
|
foreach (self::$tmpStore as $idx => $ts)
|
||||||
|
{
|
||||||
|
$depsOK = true;
|
||||||
|
foreach ($ts->getDependancies(true) as $d)
|
||||||
|
{
|
||||||
|
if (isset(self::$tables[$d]))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
$depsOK = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($depsOK)
|
||||||
|
{
|
||||||
|
if (isset(self::$tables[$ssRef->getName()]))
|
||||||
|
{
|
||||||
|
CLI::write('a SetupScript named '.CLI::bold($ts->getName()).' was already registered. Skipping...', CLI::LOG_WARN);
|
||||||
|
unset(self::$tmpStore[$idx]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
self::$tables[$ts->getName()] = $ts;
|
||||||
|
unset(self::$tmpStore[$idx]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($nDepsMissing == count(self::$tmpStore))
|
||||||
|
{
|
||||||
|
CLI::write('the flollowing SetupScripts have unresolved dependancies and have not been registered:', CLI::LOG_ERROR);
|
||||||
|
foreach (self::$tmpStore as $ts)
|
||||||
|
CLI::write(' * '.CLI::bold($ts->getName()).' => '.implode(', ', $ts->getDependancies(true)));
|
||||||
|
|
||||||
|
self::$tmpStore = [];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// handle command prompts
|
||||||
if (getopt(self::$shortOpts, self::$longOpts) || $mode == self::MODE_FIRSTRUN)
|
if (getopt(self::$shortOpts, self::$longOpts) || $mode == self::MODE_FIRSTRUN)
|
||||||
self::handleCLIOpts($doScripts);
|
self::handleCLIOpts($doScripts);
|
||||||
else if ($mode != self::MODE_UPDATE)
|
else if ($mode != self::MODE_UPDATE)
|
||||||
@@ -115,7 +103,50 @@ class SqlGen
|
|||||||
self::$mode = $mode;
|
self::$mode = $mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function handleCLIOpts(&$doTbls)
|
public static function register(SetupScript $ssRef) : bool
|
||||||
|
{
|
||||||
|
// if dependancies haven't been stored yet, put aside for later use
|
||||||
|
foreach ($ssRef->getDependancies(true) as $d)
|
||||||
|
{
|
||||||
|
if (isset(self::$tables[$d]))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
self::$tmpStore[] = $ssRef;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset(self::$tables[$ssRef->getName()]))
|
||||||
|
{
|
||||||
|
CLI::write('a SetupScript named '.CLI::bold($ssRef->getName()).' was already registered. Skipping...', CLI::LOG_WARN);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
self::$tables[$ssRef->getName()] = $ssRef;
|
||||||
|
|
||||||
|
// recheck temp stored dependancies
|
||||||
|
foreach (self::$tmpStore as $idx => $ts)
|
||||||
|
{
|
||||||
|
$depsOK = true;
|
||||||
|
foreach ($ts->getDependancies(true) as $d)
|
||||||
|
{
|
||||||
|
if (isset(self::$tables[$d]))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
$depsOK = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($depsOK)
|
||||||
|
{
|
||||||
|
self::$tables[$ts->getName()] = $ts;
|
||||||
|
unset(self::$tmpStore[$idx]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function handleCLIOpts(&$doTbls) : void
|
||||||
{
|
{
|
||||||
$doTbls = [];
|
$doTbls = [];
|
||||||
$_ = getopt(self::$shortOpts, self::$longOpts);
|
$_ = getopt(self::$shortOpts, self::$longOpts);
|
||||||
@@ -130,13 +161,13 @@ class SqlGen
|
|||||||
if (!empty($_['sync']))
|
if (!empty($_['sync']))
|
||||||
{
|
{
|
||||||
$sync = explode(',', $_['sync']);
|
$sync = explode(',', $_['sync']);
|
||||||
foreach (self::$tables as $name => $info)
|
foreach (self::$tables as $name => &$ssRef)
|
||||||
if (!empty($info[3]) && array_intersect($sync, $info[3]))
|
if (array_intersect($sync, $ssRef->getDependancies(false)))
|
||||||
$doTbls[] = $name;
|
$doTbls[] = $name;
|
||||||
|
|
||||||
// recursive dependencies
|
// recursive dependencies
|
||||||
foreach (self::$tables as $name => $info)
|
foreach (self::$tables as $name => &$ssRef)
|
||||||
if (!empty($info[2]) && array_intersect($doTbls, $info[2]))
|
if (array_intersect($sync, $ssRef->getDependancies(true)))
|
||||||
$doTbls[] = $name;
|
$doTbls[] = $name;
|
||||||
|
|
||||||
$doTbls = $doTbls ? array_unique($doTbls) : null;
|
$doTbls = $doTbls ? array_unique($doTbls) : null;
|
||||||
@@ -145,17 +176,17 @@ class SqlGen
|
|||||||
$doTbls = explode(',', $_['sql']);
|
$doTbls = explode(',', $_['sql']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function printCLIHelp()
|
public static function printCLIHelp() : void
|
||||||
{
|
{
|
||||||
echo "\nusage: php aowow --sql=<tableList,> [-h --help]\n\n";
|
echo "\nusage: php aowow --sql=<tableList,> [-h --help]\n\n";
|
||||||
echo "--sql : available tables:\n";
|
echo "--sql : available tables:\n";
|
||||||
foreach (self::$tables as $t => $info)
|
foreach (self::$tables as $t => &$ssRef)
|
||||||
echo " * ".str_pad($t, 24).(isset($info[3]) ? ' - TC deps: '.implode(', ', $info[3]) : '').(isset($info[2]) ? ' - Aowow deps: '.implode(', ', $info[2]) : '')."\n";
|
echo " * ".str_pad($t, 24).($ssRef->getDependancies(false) ? ' - TC deps: '.implode(', ', $ssRef->getDependancies(false)) : '').($ssRef->getDependancies(true) ? ' - Aowow deps: '.implode(', ', $ssRef->getDependancies(true)) : '')."\n";
|
||||||
|
|
||||||
echo "-h --help : shows this info\n";
|
echo "-h --help : shows this info\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function generate($tableName, array $updateIds = [])
|
public static function generate(string $tableName, array $updateIds = []) : bool
|
||||||
{
|
{
|
||||||
if (!isset(self::$tables[$tableName]))
|
if (!isset(self::$tables[$tableName]))
|
||||||
{
|
{
|
||||||
@@ -163,50 +194,28 @@ class SqlGen
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty(self::$tables[$tableName][0])) // straight copy from dbc source
|
$ssRef = &self::$tables[$tableName];
|
||||||
{
|
|
||||||
$tbl = self::$tables[$tableName]; // shorthand
|
|
||||||
CLI::write('SqlGen::generate() - copying '.$tbl[0].'.dbc into aowow_'.$tableName);
|
|
||||||
|
|
||||||
$dbc = new DBC($tbl[0], ['temporary' => CLISetup::$tmpDBC, 'tableName' => 'aowow_'.$tableName]);
|
|
||||||
if ($dbc->error)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return !!$dbc->readFile();
|
|
||||||
}
|
|
||||||
else if (file_exists('setup/tools/sqlgen/'.$tableName.'.func.php'))
|
|
||||||
{
|
|
||||||
$customData = $reqDBC = [];
|
|
||||||
|
|
||||||
CLI::write('SqlGen::generate() - filling aowow_'.$tableName.' with data');
|
CLI::write('SqlGen::generate() - filling aowow_'.$tableName.' with data');
|
||||||
|
|
||||||
require_once 'setup/tools/sqlgen/'.$tableName.'.func.php';
|
|
||||||
|
|
||||||
if (function_exists($tableName))
|
|
||||||
{
|
|
||||||
// check for required auxiliary DBC files
|
// check for required auxiliary DBC files
|
||||||
foreach ($reqDBC as $req)
|
if (!in_array('TrDBCcopy', class_uses($ssRef)))
|
||||||
|
foreach ($ssRef->getRequiredDBCs() as $req)
|
||||||
if (!CLISetup::loadDBC($req))
|
if (!CLISetup::loadDBC($req))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
$success = $tableName($updateIds);
|
if ($ssRef->generate($updateIds))
|
||||||
|
{
|
||||||
// apply post generator custom data
|
if (method_exists($ssRef, 'applyCustomData'))
|
||||||
foreach ($customData as $id => $data)
|
$ssRef->applyCustomData();
|
||||||
if ($data)
|
|
||||||
DB::Aowow()->query('UPDATE ?_'.$tableName.' SET ?a WHERE id = ?d', $data, $id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
CLI::write(' - subscript \''.$tableName.'\' not defined in included file', CLI::LOG_ERROR);
|
|
||||||
|
|
||||||
return $success;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
CLI::write(sprintf(ERR_MISSING_INCL, $tableName, 'setup/tools/sqlgen/'.$tableName.'.func.php'), CLI::LOG_ERROR);
|
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getMode()
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getMode() : int
|
||||||
{
|
{
|
||||||
return self::$mode;
|
return self::$mode;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,22 +7,21 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* dbc_achievement
|
|
||||||
* disables
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Higher Learning - item rewarded through gossip
|
|
||||||
$customData = array(
|
|
||||||
1956 => ['itemExtra' => 44738]
|
|
||||||
);
|
|
||||||
$reqDBC = ['achievement_category', 'achievement', 'spellicon'];
|
|
||||||
|
|
||||||
function achievement(array $ids = [])
|
|
||||||
{
|
{
|
||||||
if ($ids)
|
use TrCustomData;
|
||||||
DB::Aowow()->query('DELETE FROM ?_achievement WHERE id IN (?a)', $ids);
|
|
||||||
else
|
protected $command = 'achievement';
|
||||||
|
|
||||||
|
protected $tblDependancyAowow = ['icons'];
|
||||||
|
protected $tblDependancyTC = ['dbc_achievement', 'disables'];
|
||||||
|
protected $dbcSourceFiles = ['achievement_category', 'achievement', 'spellicon'];
|
||||||
|
|
||||||
|
private $customData = array(
|
||||||
|
1956 => ['itemExtra' => 44738] // Higher Learning - item rewarded through gossip
|
||||||
|
);
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
{
|
{
|
||||||
DB::Aowow()->query('
|
DB::Aowow()->query('
|
||||||
REPLACE INTO
|
REPLACE INTO
|
||||||
@@ -55,8 +54,8 @@ function achievement(array $ids = [])
|
|||||||
dbc_spellicon si ON si.id = a.iconId
|
dbc_spellicon si ON si.id = a.iconId
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
?_icons i ON LOWER(SUBSTRING_INDEX(si.iconPath, "\\\\", -1)) = i.name
|
?_icons i ON LOWER(SUBSTRING_INDEX(si.iconPath, "\\\\", -1)) = i.name
|
||||||
');
|
{ WHERE a.id IN (?a) }
|
||||||
}
|
', $ids ?: DBSIMPLE_SKIP);
|
||||||
|
|
||||||
// serverside achievements
|
// serverside achievements
|
||||||
$serverAchievements = DB::World()->select('SELECT ID, IF(requiredFaction = -1, 3, IF(requiredFaction = 0, 2, 1)) AS "faction", mapID, points, flags, count, refAchievement FROM achievement_dbc{ WHERE id IN (?a)}',
|
$serverAchievements = DB::World()->select('SELECT ID, IF(requiredFaction = -1, 3, IF(requiredFaction = 0, 2, 1)) AS "faction", mapID, points, flags, count, refAchievement FROM achievement_dbc{ WHERE id IN (?a)}',
|
||||||
@@ -99,6 +98,7 @@ function achievement(array $ids = [])
|
|||||||
DB::Aowow()->query('UPDATE aowow_achievement a JOIN aowow_achievementcriteria ac ON a.id = ac.refAchievementId SET a.cuFlags = ?d WHERE ac.id IN (?a)', CUSTOM_DISABLED, $criteria);
|
DB::Aowow()->query('UPDATE aowow_achievement a JOIN aowow_achievementcriteria ac ON a.id = ac.refAchievementId SET a.cuFlags = ?d WHERE ac.id IN (?a)', CUSTOM_DISABLED, $criteria);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
18
setup/tools/sqlgen/achievementcategory.func.php
Normal file
18
setup/tools/sqlgen/achievementcategory.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'achievementcategory';
|
||||||
|
protected $dbcSourceFiles = ['achievement_category'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
18
setup/tools/sqlgen/achievementcriteria.func.php
Normal file
18
setup/tools/sqlgen/achievementcriteria.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'achievementcriteria';
|
||||||
|
protected $dbcSourceFiles = ['achievement_criteria'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -7,21 +7,15 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* areatrigger_tavern
|
|
||||||
* areatrigger_scripts
|
|
||||||
* areatrigger_involvedrelation
|
|
||||||
* quest_template
|
|
||||||
* quest_template_addon
|
|
||||||
* areatrigger_teleport
|
|
||||||
*/
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = ['areatrigger'];
|
|
||||||
|
|
||||||
function areatrigger(/*array $ids = [] */)
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'areatrigger';
|
||||||
|
|
||||||
|
protected $tblDependancyTC = ['areatrigger_involvedrelation', 'areatrigger_scripts', 'areatrigger_tavern', 'areatrigger_teleport', 'quest_template', 'quest_template_addon'];
|
||||||
|
protected $dbcSourceFiles = ['areatrigger'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
DB::Aowow()->query('TRUNCATE ?_areatrigger');
|
DB::Aowow()->query('TRUNCATE ?_areatrigger');
|
||||||
DB::Aowow()->query('INSERT INTO ?_areatrigger SELECT id, 0, 0, NULL, orientation, NULL, NULL, NULL, NULL, NULL, NULL FROM dbc_areatrigger');
|
DB::Aowow()->query('INSERT INTO ?_areatrigger SELECT id, 0, 0, NULL, orientation, NULL, NULL, NULL, NULL, NULL, NULL FROM dbc_areatrigger');
|
||||||
|
|
||||||
@@ -102,6 +96,7 @@ function areatrigger(/*array $ids = [] */)
|
|||||||
DB::Aowow()->query('UPDATE ?_areatrigger SET ?a WHERE id = ?d', $ad, $id);
|
DB::Aowow()->query('UPDATE ?_areatrigger SET ?a WHERE id = ?d', $ad, $id);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,8 +7,16 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
// roles (1:heal; 2:mleDPS; 4:rngDPS; 8:tank)
|
SqlGen::register(new class extends SetupScript
|
||||||
$customData = array(
|
{
|
||||||
|
use TrCustomData;
|
||||||
|
|
||||||
|
protected $command = 'classes';
|
||||||
|
|
||||||
|
protected $dbcSourceFiles = ['spell', 'charbaseinfo', 'skillraceclassinfo', 'skilllineability', 'chrclasses'];
|
||||||
|
|
||||||
|
// roles (1:heal; 2:mleDPS; 4:rngDPS; 8:tank)
|
||||||
|
private $customData = array(
|
||||||
1 => ['roles' => 0xA],
|
1 => ['roles' => 0xA],
|
||||||
2 => ['roles' => 0xB],
|
2 => ['roles' => 0xB],
|
||||||
3 => ['roles' => 0x4],
|
3 => ['roles' => 0x4],
|
||||||
@@ -19,11 +27,10 @@ $customData = array(
|
|||||||
8 => ['roles' => 0x4],
|
8 => ['roles' => 0x4],
|
||||||
9 => ['roles' => 0x4],
|
9 => ['roles' => 0x4],
|
||||||
11 => ['roles' => 0xF],
|
11 => ['roles' => 0xF],
|
||||||
);
|
);
|
||||||
$reqDBC = ['spell', 'charbaseinfo', 'skillraceclassinfo', 'skilllineability', 'chrclasses'];
|
|
||||||
|
|
||||||
function classes()
|
public function generate(array $ids = []) : bool
|
||||||
{
|
{
|
||||||
$classes = DB::Aowow()->select('SELECT *, id AS ARRAY_KEY FROM dbc_chrclasses');
|
$classes = DB::Aowow()->select('SELECT *, id AS ARRAY_KEY FROM dbc_chrclasses');
|
||||||
|
|
||||||
// add raceMask
|
// add raceMask
|
||||||
@@ -45,6 +52,7 @@ function classes()
|
|||||||
DB::Aowow()->query('REPLACE INTO ?_classes (?#) VALUES (?a)', array_keys($cl), array_values($cl));
|
DB::Aowow()->query('REPLACE INTO ?_classes (?#) VALUES (?a)', array_keys($cl), array_values($cl));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,20 +7,15 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* creature_template
|
|
||||||
* creature_template_locale
|
|
||||||
* creature_classlevelstats
|
|
||||||
* instance_encounters
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = ['creaturedisplayinfo', 'creaturedisplayinfoextra'];
|
|
||||||
|
|
||||||
function creature(array $ids = [])
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'creature';
|
||||||
|
|
||||||
|
protected $tblDependancyTC = ['creature_template', 'creature_template_locale', 'creature_classlevelstats', 'instance_encounters'];
|
||||||
|
protected $dbcSourceFiles = ['creaturedisplayinfo', 'creaturedisplayinfoextra'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
$baseQuery = '
|
$baseQuery = '
|
||||||
SELECT
|
SELECT
|
||||||
ct.entry,
|
ct.entry,
|
||||||
@@ -132,7 +127,7 @@ function creature(array $ids = [])
|
|||||||
c.humanoid = IF(cdie.id IS NULL, 0, 1)';
|
c.humanoid = IF(cdie.id IS NULL, 0, 1)';
|
||||||
|
|
||||||
$lastMax = 0;
|
$lastMax = 0;
|
||||||
while ($npcs = DB::World()->select($baseQuery, NPC_CU_INSTANCE_BOSS, $lastMax, $ids ?: DBSIMPLE_SKIP, SqlGen::$stepSize))
|
while ($npcs = DB::World()->select($baseQuery, NPC_CU_INSTANCE_BOSS, $lastMax, $ids ?: DBSIMPLE_SKIP, SqlGen::$sqlBatchSize))
|
||||||
{
|
{
|
||||||
$newMax = max(array_column($npcs, 'entry'));
|
$newMax = max(array_column($npcs, 'entry'));
|
||||||
|
|
||||||
@@ -157,6 +152,7 @@ function creature(array $ids = [])
|
|||||||
DB::Aowow()->query('UPDATE ?_creature SET cuFlags = cuFlags | ?d WHERE name_loc0 LIKE "%[%" OR name_loc0 LIKE "%(%" OR name_loc0 LIKE "%visual%" OR name_loc0 LIKE "%trigger%" OR name_loc0 LIKE "%credit%" OR name_loc0 LIKE "%marker%"', CUSTOM_EXCLUDE_FOR_LISTVIEW);
|
DB::Aowow()->query('UPDATE ?_creature SET cuFlags = cuFlags | ?d WHERE name_loc0 LIKE "%[%" OR name_loc0 LIKE "%(%" OR name_loc0 LIKE "%visual%" OR name_loc0 LIKE "%trigger%" OR name_loc0 LIKE "%credit%" OR name_loc0 LIKE "%marker%"', CUSTOM_EXCLUDE_FOR_LISTVIEW);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,13 +7,18 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* item_template
|
{
|
||||||
* item_template_locale
|
use TrCustomData;
|
||||||
*/
|
|
||||||
|
|
||||||
// hide test tokens and move them to unused
|
protected $command = 'currencies';
|
||||||
$customData = array(
|
|
||||||
|
protected $tblDependancyAowow = ['icons'];
|
||||||
|
protected $tblDependancyTC = ['item_template', 'item_template_locale'];
|
||||||
|
protected $dbcSourceFiles = ['itemdisplayinfo', 'currencytypes'];
|
||||||
|
|
||||||
|
// hide test tokens and move them to unused
|
||||||
|
private $customData = array(
|
||||||
1 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3],
|
1 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3],
|
||||||
2 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3],
|
2 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3],
|
||||||
4 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3],
|
4 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3],
|
||||||
@@ -21,11 +26,10 @@ $customData = array(
|
|||||||
141 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3],
|
141 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW, 'category' => 3],
|
||||||
103 => ['cap' => 10000], // Arena Points
|
103 => ['cap' => 10000], // Arena Points
|
||||||
104 => ['cap' => 75000] // Honor Points
|
104 => ['cap' => 75000] // Honor Points
|
||||||
);
|
);
|
||||||
$reqDBC = ['itemdisplayinfo', 'currencytypes'];
|
|
||||||
|
|
||||||
function currencies(array $ids = [])
|
public function generate(array $ids = []) : bool
|
||||||
{
|
{
|
||||||
if (!$ids)
|
if (!$ids)
|
||||||
DB::Aowow()->query('REPLACE INTO ?_currencies (id, category, itemId) SELECT id, category, itemId FROM dbc_currencytypes');
|
DB::Aowow()->query('REPLACE INTO ?_currencies (id, category, itemId) SELECT id, category, itemId FROM dbc_currencytypes');
|
||||||
|
|
||||||
@@ -83,6 +87,7 @@ function currencies(array $ids = [])
|
|||||||
', $iconId, $itemId);
|
', $iconId, $itemId);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,12 +7,14 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
SqlGen::register(new class extends SetupScript
|
||||||
);
|
|
||||||
$reqDBC = ['emotes', 'emotestext', 'emotestextdata'];
|
|
||||||
|
|
||||||
function emotes(/*array $ids = [] */)
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'emotes';
|
||||||
|
|
||||||
|
protected $dbcSourceFiles = ['emotes', 'emotestext', 'emotestextdata'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
/**********/
|
/**********/
|
||||||
/* Basics */
|
/* Basics */
|
||||||
/**********/
|
/**********/
|
||||||
@@ -94,6 +96,7 @@ function emotes(/*array $ids = [] */)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return $allOK;
|
return $allOK;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,18 +7,14 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* game_event
|
|
||||||
* game_event_prerequisite
|
|
||||||
*/
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = array(
|
|
||||||
);
|
|
||||||
|
|
||||||
function events(array $ids = [])
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'events';
|
||||||
|
|
||||||
|
protected $tblDependancyTC = ['game_event', 'game_event_prerequisite'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
$eventQuery = '
|
$eventQuery = '
|
||||||
SELECT
|
SELECT
|
||||||
ge.eventEntry,
|
ge.eventEntry,
|
||||||
@@ -47,6 +43,7 @@ function events(array $ids = [])
|
|||||||
DB::Aowow()->query('REPLACE INTO ?_events VALUES (?a)', array_values($e));
|
DB::Aowow()->query('REPLACE INTO ?_events VALUES (?a)', array_values($e));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,7 +7,15 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrCustomData;
|
||||||
|
|
||||||
|
protected $command = 'factions';
|
||||||
|
|
||||||
|
protected $dbcSourceFiles = ['faction', 'factiontemplate'];
|
||||||
|
|
||||||
|
private $customData = array(
|
||||||
47 => ['qmNpcIds' => '33310'],
|
47 => ['qmNpcIds' => '33310'],
|
||||||
68 => ['qmNpcIds' => '33555'],
|
68 => ['qmNpcIds' => '33555'],
|
||||||
69 => ['qmNpcIds' => '33653'],
|
69 => ['qmNpcIds' => '33653'],
|
||||||
@@ -42,11 +50,10 @@ $customData = array(
|
|||||||
1156 => ['qmNpcIds' => '37687'],
|
1156 => ['qmNpcIds' => '37687'],
|
||||||
1082 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW],
|
1082 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW],
|
||||||
952 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW],
|
952 => ['cuFlags' => CUSTOM_EXCLUDE_FOR_LISTVIEW],
|
||||||
);
|
);
|
||||||
$reqDBC = ['faction', 'factiontemplate'];
|
|
||||||
|
|
||||||
function factions()
|
public function generate(array $ids = []) : bool
|
||||||
{
|
{
|
||||||
$factionQuery = '
|
$factionQuery = '
|
||||||
REPLACE INTO
|
REPLACE INTO
|
||||||
?_factions
|
?_factions
|
||||||
@@ -127,6 +134,7 @@ function factions()
|
|||||||
DB::Aowow()->query($recursiveUpdateQuery, $p[0], $p[1], $p[0]);
|
DB::Aowow()->query($recursiveUpdateQuery, $p[0], $p[1], $p[0]);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,12 +7,14 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
SqlGen::register(new class extends SetupScript
|
||||||
);
|
|
||||||
$reqDBC = ['factiontemplate'];
|
|
||||||
|
|
||||||
function factiontemplate()
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'factiontemplate';
|
||||||
|
|
||||||
|
protected $dbcSourceFiles = ['factiontemplate'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
$query = '
|
$query = '
|
||||||
REPLACE INTO
|
REPLACE INTO
|
||||||
?_factiontemplate
|
?_factiontemplate
|
||||||
@@ -33,6 +35,7 @@ function factiontemplate()
|
|||||||
DB::Aowow()->query($query);
|
DB::Aowow()->query($query);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -6,15 +6,22 @@ if (!defined('AOWOW_REVISION'))
|
|||||||
if (!CLI)
|
if (!CLI)
|
||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
$reqDBC = ['glyphproperties', 'spellicon'];
|
|
||||||
|
|
||||||
function glyphproperties()
|
SqlGen::register(new class extends SetupScript
|
||||||
{
|
{
|
||||||
|
protected $command = 'glyphproperties';
|
||||||
|
|
||||||
|
protected $tblDependancyAowow = ['icons'];
|
||||||
|
protected $dbcSourceFiles = ['glyphproperties', 'spellicon'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
DB::Aowow()->query('REPLACE INTO ?_glyphproperties SELECT id, spellId, typeFlags, 0, iconId FROM dbc_glyphproperties');
|
DB::Aowow()->query('REPLACE INTO ?_glyphproperties SELECT id, spellId, typeFlags, 0, iconId FROM dbc_glyphproperties');
|
||||||
|
|
||||||
DB::Aowow()->query('UPDATE ?_glyphproperties gp, ?_icons ic, dbc_spellicon si SET gp.iconId = ic.id WHERE gp.iconIdBak = si.id AND ic.name = LOWER(SUBSTRING_INDEX(si.iconPath, "\\\\", -1))');
|
DB::Aowow()->query('UPDATE ?_glyphproperties gp, ?_icons ic, dbc_spellicon si SET gp.iconId = ic.id WHERE gp.iconIdBak = si.id AND ic.name = LOWER(SUBSTRING_INDEX(si.iconPath, "\\\\", -1))');
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,7 +7,16 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrCustomData;
|
||||||
|
|
||||||
|
protected $command = 'holidays';
|
||||||
|
|
||||||
|
protected $dbcSourceFiles = ['holidays', 'holidaydescriptions', 'holidaynames'];
|
||||||
|
|
||||||
|
private $customData = array(
|
||||||
62 => ['iconString' => 'inv_misc_missilelarge_red' ],
|
62 => ['iconString' => 'inv_misc_missilelarge_red' ],
|
||||||
141 => ['iconString' => 'calendar_winterveilstart', 'achievementCatOrId' => 156 ],
|
141 => ['iconString' => 'calendar_winterveilstart', 'achievementCatOrId' => 156 ],
|
||||||
181 => ['iconString' => 'calendar_noblegardenstart', 'achievementCatOrId' => 159 ],
|
181 => ['iconString' => 'calendar_noblegardenstart', 'achievementCatOrId' => 159 ],
|
||||||
@@ -34,11 +43,10 @@ $customData = array(
|
|||||||
420 => ['iconString' => 'achievement_bg_winwsg' ],
|
420 => ['iconString' => 'achievement_bg_winwsg' ],
|
||||||
423 => ['iconString' => 'calendar_loveintheairstart', 'bossCreature' => 36296, 'achievementCatOrId' => 187 ],
|
423 => ['iconString' => 'calendar_loveintheairstart', 'bossCreature' => 36296, 'achievementCatOrId' => 187 ],
|
||||||
424 => ['iconString' => 'calendar_fishingextravaganzastart' ],
|
424 => ['iconString' => 'calendar_fishingextravaganzastart' ],
|
||||||
);
|
);
|
||||||
$reqDBC = ['holidays', 'holidaydescriptions', 'holidaynames'];
|
|
||||||
|
|
||||||
function holidays()
|
public function generate(array $ids = []) : bool
|
||||||
{
|
{
|
||||||
$query = '
|
$query = '
|
||||||
REPLACE INTO
|
REPLACE INTO
|
||||||
?_holidays (id, name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8, description_loc0, description_loc2, description_loc3, description_loc4, description_loc6, description_loc8, looping, scheduleType, textureString)
|
?_holidays (id, name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8, description_loc0, description_loc2, description_loc3, description_loc4, description_loc6, description_loc8, looping, scheduleType, textureString)
|
||||||
@@ -54,6 +62,7 @@ function holidays()
|
|||||||
DB::Aowow()->query($query);
|
DB::Aowow()->query($query);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,12 +7,14 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
SqlGen::register(new class extends SetupScript
|
||||||
);
|
|
||||||
$reqDBC = ['spellicon', 'itemdisplayinfo', 'creaturefamily'];
|
|
||||||
|
|
||||||
function icons()
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'icons';
|
||||||
|
|
||||||
|
protected $dbcSourceFiles = ['spellicon', 'itemdisplayinfo', 'creaturefamily'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
DB::Aowow()->query('TRUNCATE ?_icons');
|
DB::Aowow()->query('TRUNCATE ?_icons');
|
||||||
DB::Aowow()->query('ALTER TABLE ?_icons AUTO_INCREMENT = 1');
|
DB::Aowow()->query('ALTER TABLE ?_icons AUTO_INCREMENT = 1');
|
||||||
|
|
||||||
@@ -33,6 +35,7 @@ function icons()
|
|||||||
DB::Aowow()->query($baseQuery);
|
DB::Aowow()->query($baseQuery);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,16 +7,6 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
|
||||||
* ?_items finalized
|
|
||||||
* ?_spell finalized
|
|
||||||
* dbc_spellitemenchantment
|
|
||||||
*/
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = ['spellitemenchantment'];
|
|
||||||
|
|
||||||
class ItemStatSetup extends ItemList
|
class ItemStatSetup extends ItemList
|
||||||
{
|
{
|
||||||
private $statCols = [];
|
private $statCols = [];
|
||||||
@@ -138,36 +128,15 @@ class ItemStatSetup extends ItemList
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function item_stats(array $ids = [])
|
SqlGen::register(new class extends SetupScript
|
||||||
{
|
{
|
||||||
$offset = 0;
|
protected $command = 'item_stats'; // and enchantment stats
|
||||||
|
|
||||||
CLI::write(' - applying stats for enchantments');
|
protected $tblDependancyAowow = ['items', 'spell'];
|
||||||
$enchStats = enchantment_stats();
|
protected $dbcSourceFiles = ['spellitemenchantment'];
|
||||||
CLI::write(' '.count($enchStats).' enchantments parsed');
|
|
||||||
CLI::write(' - applying stats for items');
|
|
||||||
|
|
||||||
while (true)
|
private function enchantment_stats() : array
|
||||||
{
|
{
|
||||||
$items = new ItemStatSetup($offset, SqlGen::$stepSize, $ids, $enchStats);
|
|
||||||
if ($items->error)
|
|
||||||
break;
|
|
||||||
|
|
||||||
$max = max($items->getFoundIDs());
|
|
||||||
$num = count($items->getFoundIDs());
|
|
||||||
|
|
||||||
CLI::write(' * sets '.($offset + 1).' - '.($max));
|
|
||||||
|
|
||||||
$offset = $max;
|
|
||||||
|
|
||||||
$items->writeStatsTable();
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function enchantment_stats()
|
|
||||||
{
|
|
||||||
$statCols = DB::Aowow()->selectCol('SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_NAME` LIKE "%item_stats"');
|
$statCols = DB::Aowow()->selectCol('SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_NAME` LIKE "%item_stats"');
|
||||||
$enchants = DB::Aowow()->select('SELECT *, id AS ARRAY_KEY FROM dbc_spellitemenchantment');
|
$enchants = DB::Aowow()->select('SELECT *, id AS ARRAY_KEY FROM dbc_spellitemenchantment');
|
||||||
$spells = [];
|
$spells = [];
|
||||||
@@ -272,6 +241,35 @@ function enchantment_stats()
|
|||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
|
$offset = 0;
|
||||||
|
|
||||||
|
CLI::write(' - applying stats for enchantments');
|
||||||
|
$enchStats = enchantment_stats();
|
||||||
|
CLI::write(' '.count($enchStats).' enchantments parsed');
|
||||||
|
CLI::write(' - applying stats for items');
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
$items = new ItemStatSetup($offset, SqlGen::$sqlBatchSize, $ids, $enchStats);
|
||||||
|
if ($items->error)
|
||||||
|
break;
|
||||||
|
|
||||||
|
$max = max($items->getFoundIDs());
|
||||||
|
$num = count($items->getFoundIDs());
|
||||||
|
|
||||||
|
CLI::write(' * sets '.($offset + 1).' - '.($max));
|
||||||
|
|
||||||
|
$offset = $max;
|
||||||
|
|
||||||
|
$items->writeStatsTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,12 +7,15 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
SqlGen::register(new class extends SetupScript
|
||||||
);
|
|
||||||
$reqDBC = ['spellitemenchantment'];
|
|
||||||
|
|
||||||
function itemenchantment()
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'itemenchantment';
|
||||||
|
|
||||||
|
protected $tblDependancyTC = ['spell_enchant_proc_data'];
|
||||||
|
protected $dbcSourceFiles = ['spellitemenchantment'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
$baseQuery = '
|
$baseQuery = '
|
||||||
REPLACE INTO
|
REPLACE INTO
|
||||||
?_itemenchantment
|
?_itemenchantment
|
||||||
@@ -32,6 +35,7 @@ function itemenchantment()
|
|||||||
DB::Aowow()->query('UPDATE ?_itemenchantment SET cuFlags = ?d WHERE name_loc0 LIKE "%test%"', CUSTOM_EXCLUDE_FOR_LISTVIEW);
|
DB::Aowow()->query('UPDATE ?_itemenchantment SET cuFlags = ?d WHERE name_loc0 LIKE "%test%"', CUSTOM_EXCLUDE_FOR_LISTVIEW);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
18
setup/tools/sqlgen/itemenchantmentcondition.func.php
Normal file
18
setup/tools/sqlgen/itemenchantmentcondition.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'itemenchantmentcondition';
|
||||||
|
protected $dbcSourceFiles = ['spellitemenchantmentcondition'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
18
setup/tools/sqlgen/itemextendedcost.func.php
Normal file
18
setup/tools/sqlgen/itemextendedcost.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'itemextendedcost';
|
||||||
|
protected $dbcSourceFiles = ['itemextendedcost'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
18
setup/tools/sqlgen/itemlimitcategory.func.php
Normal file
18
setup/tools/sqlgen/itemlimitcategory.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'itemlimitcategory';
|
||||||
|
protected $dbcSourceFiles = ['itemlimitcategory'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -7,12 +7,14 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
SqlGen::register(new class extends SetupScript
|
||||||
);
|
|
||||||
$reqDBC = ['itemrandomsuffix', 'itemrandomproperties'];
|
|
||||||
|
|
||||||
function itemrandomenchant()
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'itemrandomenchant';
|
||||||
|
|
||||||
|
protected $dbcSourceFiles = ['itemrandomsuffix', 'itemrandomproperties'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
$query = '
|
$query = '
|
||||||
REPLACE INTO ?_itemrandomenchant
|
REPLACE INTO ?_itemrandomenchant
|
||||||
SELECT -id, name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8, nameINT, enchantId1, enchantId2, enchantId3, enchantId4, enchantId5, allocationPct1, allocationPct2, allocationPct3, allocationPct4, allocationPct5 FROM dbc_itemrandomsuffix
|
SELECT -id, name_loc0, name_loc2, name_loc3, name_loc4, name_loc6, name_loc8, nameINT, enchantId1, enchantId2, enchantId3, enchantId4, enchantId5, allocationPct1, allocationPct2, allocationPct3, allocationPct4, allocationPct5 FROM dbc_itemrandomsuffix
|
||||||
@@ -22,6 +24,7 @@ function itemrandomenchant()
|
|||||||
DB::Aowow()->query($query);
|
DB::Aowow()->query($query);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
18
setup/tools/sqlgen/itemrandomproppoints.func.php
Normal file
18
setup/tools/sqlgen/itemrandomproppoints.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'itemrandomproppoints';
|
||||||
|
protected $dbcSourceFiles = ['itemrandomproperties'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -7,14 +7,17 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* item_template
|
{
|
||||||
* item_template_locale
|
use TrCustomData;
|
||||||
* spell_group
|
|
||||||
* game_event
|
|
||||||
*/
|
|
||||||
|
|
||||||
$customData = array(
|
protected $command = 'items';
|
||||||
|
|
||||||
|
protected $tblDependancyAowow = ['icons'];
|
||||||
|
protected $tblDependancyTC = ['item_template', 'item_template_locale', 'spell_group', 'game_event'];
|
||||||
|
protected $dbcSourceFiles = ['gemproperties', 'itemdisplayinfo', 'spell', 'glyphproperties', 'durabilityquality', 'durabilitycosts'];
|
||||||
|
|
||||||
|
private $customData = array(
|
||||||
33147 => ['class' => 9, 'subClass' => 8], // one stray enchanting recipe .. with a strange icon
|
33147 => ['class' => 9, 'subClass' => 8], // one stray enchanting recipe .. with a strange icon
|
||||||
7948 => ['itemset' => 221], // v unsure if this should be fixed v
|
7948 => ['itemset' => 221], // v unsure if this should be fixed v
|
||||||
7949 => ['itemset' => 221],
|
7949 => ['itemset' => 221],
|
||||||
@@ -22,12 +25,18 @@ $customData = array(
|
|||||||
7951 => ['itemset' => 221],
|
7951 => ['itemset' => 221],
|
||||||
7952 => ['itemset' => 221],
|
7952 => ['itemset' => 221],
|
||||||
7953 => ['itemset' => 221]
|
7953 => ['itemset' => 221]
|
||||||
);
|
);
|
||||||
|
|
||||||
$reqDBC = ['gemproperties', 'itemdisplayinfo', 'spell', 'glyphproperties', 'durabilityquality', 'durabilitycosts'];
|
private $skill2cat = array(
|
||||||
|
773 => 11, // inscription
|
||||||
|
356 => 9, // fishing
|
||||||
|
186 => 12, // mining
|
||||||
|
185 => 5, // cooking
|
||||||
|
171 => 6 // alchemy
|
||||||
|
);
|
||||||
|
|
||||||
function items(array $ids = [])
|
public function generate(array $ids = []) : bool
|
||||||
{
|
{
|
||||||
$baseQuery = '
|
$baseQuery = '
|
||||||
SELECT
|
SELECT
|
||||||
it.entry,
|
it.entry,
|
||||||
@@ -143,7 +152,7 @@ function items(array $ids = [])
|
|||||||
?d';
|
?d';
|
||||||
|
|
||||||
$lastMax = 0;
|
$lastMax = 0;
|
||||||
while ($items = DB::World()->select($baseQuery, $lastMax, $ids ?: DBSIMPLE_SKIP, SqlGen::$stepSize))
|
while ($items = DB::World()->select($baseQuery, $lastMax, $ids ?: DBSIMPLE_SKIP, SqlGen::$sqlBatchSize))
|
||||||
{
|
{
|
||||||
$newMax = max(array_column($items, 'entry'));
|
$newMax = max(array_column($items, 'entry'));
|
||||||
|
|
||||||
@@ -218,15 +227,7 @@ function items(array $ids = [])
|
|||||||
DB::Aowow()->query('UPDATE ?_items i, dbc_spell s SET i.class = 0, i.subClass = 6 WHERE s.id = i.spellId1 AND s.effect1Id = 53 AND i.classBak = 12');
|
DB::Aowow()->query('UPDATE ?_items i, dbc_spell s SET i.class = 0, i.subClass = 6 WHERE s.id = i.spellId1 AND s.effect1Id = 53 AND i.classBak = 12');
|
||||||
|
|
||||||
// move some generic recipes into appropriate sub-categories
|
// move some generic recipes into appropriate sub-categories
|
||||||
$skillz = array(
|
foreach ($this->skill2cat as $skill => $cat)
|
||||||
773 => 11, // inscription
|
|
||||||
356 => 9, // fishing
|
|
||||||
186 => 12, // mining
|
|
||||||
185 => 5, // cooking
|
|
||||||
171 => 6 // alchemy
|
|
||||||
|
|
||||||
);
|
|
||||||
foreach ($skillz as $skill => $cat)
|
|
||||||
DB::Aowow()->query('UPDATE ?_items SET subClass = ?d WHERE classBak = 9 AND subClassBak = 0 AND requiredSkill = ?d', $cat, $skill);
|
DB::Aowow()->query('UPDATE ?_items SET subClass = ?d WHERE classBak = 9 AND subClassBak = 0 AND requiredSkill = ?d', $cat, $skill);
|
||||||
|
|
||||||
// calculate durabilityCosts
|
// calculate durabilityCosts
|
||||||
@@ -253,6 +254,7 @@ function items(array $ids = [])
|
|||||||
durability > 0 AND ((classBak = 4 AND subClassBak IN (1, 2, 3, 4, 6)) OR (classBak = 2 AND subClassBak <> 9))');
|
durability > 0 AND ((classBak = 4 AND subClassBak IN (1, 2, 3, 4, 6)) OR (classBak = 2 AND subClassBak <> 9))');
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -8,39 +8,35 @@ if (!CLI)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
note: the virtual set-ids wont match the ones of wowhead
|
note: the virtual set-ids wont match the ones of wowhead
|
||||||
since there are some unused itemsets and and items flying around in a default database this script will create about 20 sets more than you'd expect.
|
since there are some unused itemsets and items flying around in a default database this script will create about 20 sets more than you'd expect.
|
||||||
|
|
||||||
and i have no idea how to merge the prefixes/suffixes for wotlk-raidsets and arena-sets in gereral onto the name.. at least not for all locales and i'll be damned if i have to skip one
|
and i have no idea how to merge the prefixes/suffixes for wotlk-raidsets and arena-sets in gereral onto the name.. at least not for all locales and i'll be damned if i have to skip one
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* item_template
|
|
||||||
* game_event
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
221 => ['item1' => 7948, 'item2' => 7949, 'item3' => 7950, 'item4' => 7951, 'item5' => 7952, 'item6' => 7953]
|
|
||||||
);
|
|
||||||
$reqDBC = ['itemset'];
|
|
||||||
|
|
||||||
function itemset()
|
|
||||||
{
|
{
|
||||||
$setToHoliday = array (
|
use TrCustomData;
|
||||||
|
|
||||||
|
protected $command = 'itemset';
|
||||||
|
|
||||||
|
protected $tblDependancyAowow = ['spell'];
|
||||||
|
protected $tblDependancyTC = ['item_template', 'game_event'];
|
||||||
|
protected $dbcSourceFiles = ['itemset'];
|
||||||
|
|
||||||
|
private $customData = array(
|
||||||
|
221 => ['item1' => 7948, 'item2' => 7949, 'item3' => 7950, 'item4' => 7951, 'item5' => 7952, 'item6' => 7953]
|
||||||
|
);
|
||||||
|
|
||||||
|
private $setToHoliday = array (
|
||||||
761 => 141, // Winterveil
|
761 => 141, // Winterveil
|
||||||
762 => 372, // Brewfest
|
762 => 372, // Brewfest
|
||||||
785 => 341, // Midsummer
|
785 => 341, // Midsummer
|
||||||
812 => 181, // Noblegarden
|
812 => 181, // Noblegarden
|
||||||
);
|
);
|
||||||
|
|
||||||
// find events associated with holidayIds
|
|
||||||
if ($pairs = DB::World()->selectCol('SELECT holiday AS ARRAY_KEY, eventEntry FROM game_event WHERE holiday IN (?a)', array_values($setToHoliday)))
|
|
||||||
foreach ($setToHoliday as &$hId)
|
|
||||||
$hId = !empty($pairs[$hId]) ? $pairs[$hId] : 0;
|
|
||||||
|
|
||||||
// tags where refId == virtualId
|
// tags where refId == virtualId
|
||||||
// in pve sets are not recycled beyond the contentGroup
|
// in pve sets are not recycled beyond the contentGroup
|
||||||
$tagsById = array(
|
private $tagsById = array(
|
||||||
// "Dungeon Set 1"
|
// "Dungeon Set 1"
|
||||||
1 => [181, 182, 183, 184, 185, 186, 187, 188, 189],
|
1 => [181, 182, 183, 184, 185, 186, 187, 188, 189],
|
||||||
// "Dungeon Set 2"
|
// "Dungeon Set 2"
|
||||||
@@ -88,7 +84,7 @@ function itemset()
|
|||||||
);
|
);
|
||||||
|
|
||||||
// well .. fuck
|
// well .. fuck
|
||||||
$tagsByNamePart = array(
|
private $tagsByNamePart = array(
|
||||||
17 => ['gladiator'], // "Arena Season 1 Set",
|
17 => ['gladiator'], // "Arena Season 1 Set",
|
||||||
19 => ['merciless'], // "Arena Season 2 Set",
|
19 => ['merciless'], // "Arena Season 2 Set",
|
||||||
20 => ['vengeful'], // "Arena Season 3 Set",
|
20 => ['vengeful'], // "Arena Season 3 Set",
|
||||||
@@ -99,6 +95,13 @@ function itemset()
|
|||||||
30 => ['wrathful'] // "Arena Season 8 Set",
|
30 => ['wrathful'] // "Arena Season 8 Set",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
|
// find events associated with holidayIds
|
||||||
|
if ($pairs = DB::World()->selectCol('SELECT holiday AS ARRAY_KEY, eventEntry FROM game_event WHERE holiday IN (?a)', array_values($this->setToHoliday)))
|
||||||
|
foreach ($this->setToHoliday as &$hId)
|
||||||
|
$hId = !empty($pairs[$hId]) ? $pairs[$hId] : 0;
|
||||||
|
|
||||||
DB::Aowow()->query('TRUNCATE TABLE ?_itemset');
|
DB::Aowow()->query('TRUNCATE TABLE ?_itemset');
|
||||||
|
|
||||||
$vIdx = 0;
|
$vIdx = 0;
|
||||||
@@ -111,7 +114,7 @@ function itemset()
|
|||||||
$classMask = $type = 0;
|
$classMask = $type = 0;
|
||||||
$hasRing = false;
|
$hasRing = false;
|
||||||
|
|
||||||
$holiday = isset($setToHoliday[$setId]) ? $setToHoliday[$setId] : 0;
|
$holiday = $this->setToHoliday[$setId] ?? 0;
|
||||||
$canReuse = !$holiday; // can't reuse holiday-sets
|
$canReuse = !$holiday; // can't reuse holiday-sets
|
||||||
$slotList = [];
|
$slotList = [];
|
||||||
$pieces = DB::World()->select('SELECT *, IF(InventoryType = 15, 26, IF(InventoryType = 5, 20, InventoryType)) AS slot, entry AS ARRAY_KEY FROM item_template WHERE itemset = ?d AND (class <> 4 OR subclass NOT IN (1, 2, 3, 4) OR armor > 0 OR Quality = 1) ORDER BY itemLevel, subclass, slot ASC', $setId);
|
$pieces = DB::World()->select('SELECT *, IF(InventoryType = 15, 26, IF(InventoryType = 5, 20, InventoryType)) AS slot, entry AS ARRAY_KEY FROM item_template WHERE itemset = ?d AND (class <> 4 OR subclass NOT IN (1, 2, 3, 4) OR armor > 0 OR Quality = 1) ORDER BY itemLevel, subclass, slot ASC', $setId);
|
||||||
@@ -309,7 +312,7 @@ function itemset()
|
|||||||
foreach ($items as $vId => $vSet)
|
foreach ($items as $vId => $vSet)
|
||||||
{
|
{
|
||||||
$note = 0;
|
$note = 0;
|
||||||
foreach ($tagsById as $tag => $sets)
|
foreach ($this->tagsById as $tag => $sets)
|
||||||
{
|
{
|
||||||
if (!in_array($setId, $sets))
|
if (!in_array($setId, $sets))
|
||||||
continue;
|
continue;
|
||||||
@@ -319,7 +322,7 @@ function itemset()
|
|||||||
|
|
||||||
if (!$note && $min > 120 && $classMask && $classMask != CLASS_MASK_ALL)
|
if (!$note && $min > 120 && $classMask && $classMask != CLASS_MASK_ALL)
|
||||||
{
|
{
|
||||||
foreach ($tagsByNamePart as $tag => $strings)
|
foreach ($this->tagsByNamePart as $tag => $strings)
|
||||||
{
|
{
|
||||||
foreach ($strings as $str)
|
foreach ($strings as $str)
|
||||||
{
|
{
|
||||||
@@ -365,6 +368,6 @@ function itemset()
|
|||||||
DB::Aowow()->query('UPDATE ?_itemset SET cuFlags = cuFlags | ?d WHERE item1 = 0', CUSTOM_EXCLUDE_FOR_LISTVIEW);
|
DB::Aowow()->query('UPDATE ?_itemset SET cuFlags = cuFlags | ?d WHERE item1 = 0', CUSTOM_EXCLUDE_FOR_LISTVIEW);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
?>
|
?>
|
||||||
|
|||||||
18
setup/tools/sqlgen/lock.func.php
Normal file
18
setup/tools/sqlgen/lock.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'lock';
|
||||||
|
protected $dbcSourceFiles = ['lock'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
18
setup/tools/sqlgen/mailtemplate.func.php
Normal file
18
setup/tools/sqlgen/mailtemplate.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'mailtemplate';
|
||||||
|
protected $dbcSourceFiles = ['mailtemplate'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -7,19 +7,15 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* gameobject_template
|
|
||||||
* gameobject_template_locale
|
|
||||||
* gameobject_questitem
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = ['lock'];
|
|
||||||
|
|
||||||
function objects(array $ids = [])
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'objects';
|
||||||
|
|
||||||
|
protected $tblDependancyTC = ['gameobject_template', 'gameobject_template_locale', 'gameobject_questitem'];
|
||||||
|
protected $dbcSourceFiles = ['lock'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
$baseQuery = '
|
$baseQuery = '
|
||||||
SELECT
|
SELECT
|
||||||
go.entry,
|
go.entry,
|
||||||
@@ -109,7 +105,7 @@ function objects(array $ids = [])
|
|||||||
}';
|
}';
|
||||||
|
|
||||||
$lastMax = 0;
|
$lastMax = 0;
|
||||||
while ($objects = DB::World()->select($baseQuery, $lastMax, $ids ?: DBSIMPLE_SKIP, SqlGen::$stepSize))
|
while ($objects = DB::World()->select($baseQuery, $lastMax, $ids ?: DBSIMPLE_SKIP, SqlGen::$sqlBatchSize))
|
||||||
{
|
{
|
||||||
$newMax = max(array_column($objects, 'entry'));
|
$newMax = max(array_column($objects, 'entry'));
|
||||||
|
|
||||||
@@ -125,6 +121,7 @@ function objects(array $ids = [])
|
|||||||
DB::Aowow()->query($updateQuery, $ids ?: DBSIMPLE_SKIP);
|
DB::Aowow()->query($updateQuery, $ids ?: DBSIMPLE_SKIP);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,18 +7,16 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* creature_template
|
|
||||||
* creature
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = ['talent', 'spell', 'skilllineability', 'creaturefamily'];
|
|
||||||
|
|
||||||
function pet(array $ids = [])
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'pet';
|
||||||
|
|
||||||
|
protected $tblDependancyAowow = ['icons'];
|
||||||
|
protected $tblDependancyTC = ['creature_template', 'creature'];
|
||||||
|
protected $dbcSourceFiles = ['talent', 'spell', 'skilllineability', 'creaturefamily'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
$baseQuery = '
|
$baseQuery = '
|
||||||
REPLACE INTO
|
REPLACE INTO
|
||||||
?_pet
|
?_pet
|
||||||
@@ -122,6 +120,7 @@ function pet(array $ids = [])
|
|||||||
DB::Aowow()->query('UPDATE ?_pet SET ?a WHERE id = ?d', $row, $pId);
|
DB::Aowow()->query('UPDATE ?_pet SET ?a WHERE id = ?d', $row, $pId);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,22 +7,15 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* quest_template
|
|
||||||
* quest_template_addon
|
|
||||||
* quest_template_locale
|
|
||||||
* game_event
|
|
||||||
* game_event_seasonal_questrelation
|
|
||||||
* disables
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = ['questxp', 'questfactionreward'];
|
|
||||||
|
|
||||||
function quests(array $ids = [])
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'quests';
|
||||||
|
|
||||||
|
protected $tblDependancyTC = ['quest_template', 'quest_template_addon', 'quest_template_locale', 'game_event', 'game_event_seasonal_questrelation', 'disables'];
|
||||||
|
protected $dbcSourceFiles = ['questxp', 'questfactionreward'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
$baseQuery = '
|
$baseQuery = '
|
||||||
SELECT
|
SELECT
|
||||||
q.ID,
|
q.ID,
|
||||||
@@ -178,7 +171,7 @@ function quests(array $ids = [])
|
|||||||
|
|
||||||
|
|
||||||
$lastMax = 0;
|
$lastMax = 0;
|
||||||
while ($quests = DB::World()->select($baseQuery, $lastMax, $ids ?: DBSIMPLE_SKIP, SqlGen::$stepSize))
|
while ($quests = DB::World()->select($baseQuery, $lastMax, $ids ?: DBSIMPLE_SKIP, SqlGen::$sqlBatchSize))
|
||||||
{
|
{
|
||||||
$newMax = max(array_column($quests, 'ID'));
|
$newMax = max(array_column($quests, 'ID'));
|
||||||
|
|
||||||
@@ -267,6 +260,7 @@ function quests(array $ids = [])
|
|||||||
DB::Aowow()->query('UPDATE ?_quests SET zoneOrSort = ?d WHERE (specialFlags & ?d OR id IN (?a)){ AND id IN (?a)}', -1010, QUEST_FLAG_SPECIAL_DUNGEON_FINDER, [24789, 24791, 24923], $ids ?: DBSIMPLE_SKIP);
|
DB::Aowow()->query('UPDATE ?_quests SET zoneOrSort = ?d WHERE (specialFlags & ?d OR id IN (?a)){ AND id IN (?a)}', -1010, QUEST_FLAG_SPECIAL_DUNGEON_FINDER, [24789, 24791, 24923], $ids ?: DBSIMPLE_SKIP);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,24 +7,14 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* creature_queststarter
|
|
||||||
* creature_questender
|
|
||||||
* game_event_creature_quest
|
|
||||||
* gameobject_queststarter
|
|
||||||
* gameobject_questender
|
|
||||||
* game_event_gameobject_quest
|
|
||||||
* item_template
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = array(
|
|
||||||
);
|
|
||||||
|
|
||||||
function quests_startend(/* array $ids = [] */)
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'quests_startend';
|
||||||
|
|
||||||
|
protected $tblDependancyTC = ['creature_queststarter', 'creature_questender', 'game_event_creature_quest', 'gameobject_queststarter', 'gameobject_questender', 'game_event_gameobject_quest', 'item_template'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
$query['creature'] = '
|
$query['creature'] = '
|
||||||
SELECT 1 AS type, id AS typeId, quest AS questId, 1 AS method, 0 AS eventId FROM creature_queststarter UNION
|
SELECT 1 AS type, id AS typeId, quest AS questId, 1 AS method, 0 AS eventId FROM creature_queststarter UNION
|
||||||
SELECT 1 AS type, id AS typeId, quest AS questId, 2 AS method, 0 AS eventId FROM creature_questender UNION
|
SELECT 1 AS type, id AS typeId, quest AS questId, 2 AS method, 0 AS eventId FROM creature_questender UNION
|
||||||
@@ -52,6 +42,7 @@ function quests_startend(/* array $ids = [] */)
|
|||||||
Db::Aowow()->query('UPDATE ?_quests q LEFT JOIN ?_quests_startend qse ON qse.questId = q.id AND qse.method & 1 SET q.cuFlags = q.cuFlags | ?d WHERE qse.questId IS NULL', CUSTOM_UNAVAILABLE);
|
Db::Aowow()->query('UPDATE ?_quests q LEFT JOIN ?_quests_startend qse ON qse.questId = q.id AND qse.method & 1 SET q.cuFlags = q.cuFlags | ?d WHERE qse.questId IS NULL', CUSTOM_UNAVAILABLE);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,7 +7,15 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrCustomData;
|
||||||
|
|
||||||
|
protected $command = 'races';
|
||||||
|
|
||||||
|
protected $dbcSourceFiles = ['chrraces', 'charbaseinfo'];
|
||||||
|
|
||||||
|
private $customData = array(
|
||||||
null,
|
null,
|
||||||
['leader' => 29611, 'factionId' => 72, 'startAreaId' => 12],
|
['leader' => 29611, 'factionId' => 72, 'startAreaId' => 12],
|
||||||
['leader' => 4949, 'factionId' => 76, 'startAreaId' => 14],
|
['leader' => 4949, 'factionId' => 76, 'startAreaId' => 14],
|
||||||
@@ -20,11 +28,10 @@ $customData = array(
|
|||||||
null,
|
null,
|
||||||
['leader' => 16802, 'factionId' => 911, 'startAreaId' => 3430],
|
['leader' => 16802, 'factionId' => 911, 'startAreaId' => 3430],
|
||||||
['leader' => 17468, 'factionId' => 930, 'startAreaId' => 3524]
|
['leader' => 17468, 'factionId' => 930, 'startAreaId' => 3524]
|
||||||
);
|
);
|
||||||
$reqDBC = ['chrraces', 'charbaseinfo'];
|
|
||||||
|
|
||||||
function races()
|
public function generate(array $ids = []) : bool
|
||||||
{
|
{
|
||||||
/**********/
|
/**********/
|
||||||
/* Basics */
|
/* Basics */
|
||||||
/**********/
|
/**********/
|
||||||
@@ -46,6 +53,7 @@ function races()
|
|||||||
DB::Aowow()->query('UPDATE ?_races SET cuFlags = ?d WHERE flags & ?d', CUSTOM_EXCLUDE_FOR_LISTVIEW, 0x1);
|
DB::Aowow()->query('UPDATE ?_races SET cuFlags = ?d WHERE flags & ?d', CUSTOM_EXCLUDE_FOR_LISTVIEW, 0x1);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
18
setup/tools/sqlgen/scalingstatdistribution.func.php
Normal file
18
setup/tools/sqlgen/scalingstatdistribution.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'scalingstatdistribution';
|
||||||
|
protected $dbcSourceFiles = ['scalingstatdistribution'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
18
setup/tools/sqlgen/scalingstatvalues.func.php
Normal file
18
setup/tools/sqlgen/scalingstatvalues.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'scalingstatvalues';
|
||||||
|
protected $dbcSourceFiles = ['scalingstatvalues'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -7,22 +7,40 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrCustomData;
|
||||||
|
|
||||||
|
protected $command = 'shapeshiftforms';
|
||||||
|
|
||||||
|
protected $dbcSourceFiles = ['spellshapeshiftform'];
|
||||||
|
|
||||||
|
private $customData = array(
|
||||||
1 => ['displayIdH' => 8571],
|
1 => ['displayIdH' => 8571],
|
||||||
15 => ['displayIdH' => 8571],
|
15 => ['displayIdH' => 8571],
|
||||||
5 => ['displayIdH' => 2289],
|
5 => ['displayIdH' => 2289],
|
||||||
8 => ['displayIdH' => 2289],
|
8 => ['displayIdH' => 2289],
|
||||||
14 => ['displayIdH' => 2289],
|
14 => ['displayIdH' => 2289],
|
||||||
27 => ['displayIdH' => 21244],
|
27 => ['displayIdH' => 21244],
|
||||||
29 => ['displayIdH' => 20872],
|
29 => ['displayIdH' => 20872]
|
||||||
);
|
);
|
||||||
$reqDBC = ['spellshapeshiftform'];
|
|
||||||
|
|
||||||
function shapeshiftforms()
|
public function generate(array $ids = []) : bool
|
||||||
{
|
{
|
||||||
DB::Aowow()->query('REPLACE INTO ?_shapeshiftforms SELECT id, flags, creatureType, displayIdA, displayIdH, spellId1, spellId2, spellId3, spellId4, spellId5, spellId6, spellId7, spellId8, IF(name_loc0 = "", IF(name_loc2 = "", IF(name_loc3 = "", IF(name_loc6 = "", IF(name_loc8 = "", "???", name_loc8), name_loc6), name_loc3), name_loc2), name_loc0) FROM dbc_spellshapeshiftform');
|
DB::Aowow()->query('
|
||||||
|
REPLACE INTO
|
||||||
|
?_shapeshiftforms
|
||||||
|
SELECT
|
||||||
|
id, flags, creatureType,
|
||||||
|
displayIdA, displayIdH,
|
||||||
|
spellId1, spellId2, spellId3, spellId4, spellId5, spellId6, spellId7, spellId8,
|
||||||
|
IF(name_loc0 = "", IF(name_loc2 = "", IF(name_loc3 = "", IF(name_loc6 = "", IF(name_loc8 = "", "???", name_loc8), name_loc6), name_loc3), name_loc2), name_loc0)
|
||||||
|
FROM
|
||||||
|
dbc_spellshapeshiftform'
|
||||||
|
);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -6,7 +6,17 @@ if (!defined('AOWOW_REVISION'))
|
|||||||
if (!CLI)
|
if (!CLI)
|
||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrCustomData;
|
||||||
|
|
||||||
|
protected $command = 'skillline';
|
||||||
|
|
||||||
|
protected $tblDependancyAowow = ['icons'];
|
||||||
|
protected $dbcSourceFiles = ['skillline', 'spell', 'skilllineability'];
|
||||||
|
|
||||||
|
private $customData = array(
|
||||||
393 => ['professionMask' => 0x0000], // Skinning
|
393 => ['professionMask' => 0x0000], // Skinning
|
||||||
171 => ['professionMask' => 0x0001, 'recipeSubClass' => 6, 'specializations' => '28677 28675 28672'], // Alchemy
|
171 => ['professionMask' => 0x0001, 'recipeSubClass' => 6, 'specializations' => '28677 28675 28672'], // Alchemy
|
||||||
164 => ['professionMask' => 0x0002, 'recipeSubClass' => 4, 'specializations' => '9788 9787 17041 17040 17039'], // Blacksmithing
|
164 => ['professionMask' => 0x0002, 'recipeSubClass' => 4, 'specializations' => '9788 9787 17041 17040 17039'], // Blacksmithing
|
||||||
@@ -25,11 +35,10 @@ $customData = array(
|
|||||||
781 => ['name_loc2' => 'Familier - diablosaure exotique'], // Pet - Exotic Devilsaur
|
781 => ['name_loc2' => 'Familier - diablosaure exotique'], // Pet - Exotic Devilsaur
|
||||||
758 => ['name_loc6' => 'Mascota: Evento - Control remoto', 'name_loc3' => 'Tier - Ereignis Ferngesteuert', 'categoryId' => 7], // Pet - Event - Remote Control
|
758 => ['name_loc6' => 'Mascota: Evento - Control remoto', 'name_loc3' => 'Tier - Ereignis Ferngesteuert', 'categoryId' => 7], // Pet - Event - Remote Control
|
||||||
788 => ['categoryId' => 7], // Pet - Exotic Spirit Beast
|
788 => ['categoryId' => 7], // Pet - Exotic Spirit Beast
|
||||||
);
|
);
|
||||||
$reqDBC = ['skillline', 'spell', 'skilllineability'];
|
|
||||||
|
|
||||||
function skillline()
|
public function generate(array $ids = []) : bool
|
||||||
{
|
{
|
||||||
$baseQuery = '
|
$baseQuery = '
|
||||||
REPLACE INTO
|
REPLACE INTO
|
||||||
?_skillline
|
?_skillline
|
||||||
@@ -71,6 +80,7 @@ function skillline()
|
|||||||
DB::Aowow()->query('UPDATE ?_skillline sl, ?_icons ic SET sl.iconId = ic.id WHERE ic.name = ? AND sl.id = ?d', 'inv_misc_key_03', 633);
|
DB::Aowow()->query('UPDATE ?_skillline sl, ?_icons ic SET sl.iconId = ic.id WHERE ic.name = ? AND sl.id = ?d', 'inv_misc_key_03', 633);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,10 +7,13 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
SqlGen::register(new class extends SetupScript
|
||||||
15407 => ['cat' => 10] // UR_Algalon_Summon03 (this is not an item pickup)
|
{
|
||||||
);
|
use TrCustomData;
|
||||||
$reqDBC = array(
|
|
||||||
|
protected $command = 'sounds';
|
||||||
|
|
||||||
|
protected $dbcSourceFiles = array(
|
||||||
// base emotes race
|
// base emotes race
|
||||||
'soundentries', 'emotestextsound', 'vocaluisounds',
|
'soundentries', 'emotestextsound', 'vocaluisounds',
|
||||||
// creatures
|
// creatures
|
||||||
@@ -21,11 +24,14 @@ $reqDBC = array(
|
|||||||
'soundambience', 'zonemusic', 'zoneintromusictable', 'worldstatezonesounds', 'areatable',
|
'soundambience', 'zonemusic', 'zoneintromusictable', 'worldstatezonesounds', 'areatable',
|
||||||
// items
|
// items
|
||||||
'material', 'itemgroupsounds', 'itemdisplayinfo', 'weaponimpactsounds', 'itemsubclass', 'weaponswingsounds2' /*, 'sheathesoundlookups' data is redundant with material..? */
|
'material', 'itemgroupsounds', 'itemdisplayinfo', 'weaponimpactsounds', 'itemsubclass', 'weaponswingsounds2' /*, 'sheathesoundlookups' data is redundant with material..? */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
private $customData = array(
|
||||||
|
15407 => ['cat' => 10] // UR_Algalon_Summon03 (this is not an item pickup)
|
||||||
|
);
|
||||||
|
|
||||||
function sounds(/*array $ids = [] */)
|
public function generate(array $ids = []) : bool
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
okay, here's the thing. WMOAreaTable.dbc references WMO-files to get its position in the world (AreTable) and has sparse information on the related AreaTables themself.
|
okay, here's the thing. WMOAreaTable.dbc references WMO-files to get its position in the world (AreTable) and has sparse information on the related AreaTables themself.
|
||||||
Though it has sets for ZoneAmbience, ZoneMusic and ZoneIntroMusic, these can't be linked for this very reason and are omitted for now.
|
Though it has sets for ZoneAmbience, ZoneMusic and ZoneIntroMusic, these can't be linked for this very reason and are omitted for now.
|
||||||
@@ -70,7 +76,7 @@ function sounds(/*array $ids = [] */)
|
|||||||
$lastMax = 0;
|
$lastMax = 0;
|
||||||
$soundFileIdx = 0;
|
$soundFileIdx = 0;
|
||||||
$soundIndex = [];
|
$soundIndex = [];
|
||||||
while ($sounds = DB::Aowow()->select($query, $lastMax, SqlGen::$stepSize))
|
while ($sounds = DB::Aowow()->select($query, $lastMax, SqlGen::$sqlBatchSize))
|
||||||
{
|
{
|
||||||
$newMax = max(array_column($sounds, 'id'));
|
$newMax = max(array_column($sounds, 'id'));
|
||||||
|
|
||||||
@@ -403,7 +409,6 @@ function sounds(/*array $ids = [] */)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DB::Aowow()->query('
|
DB::Aowow()->query('
|
||||||
INSERT INTO
|
INSERT INTO
|
||||||
?_items_sounds
|
?_items_sounds
|
||||||
@@ -422,6 +427,7 @@ function sounds(/*array $ids = [] */)
|
|||||||
');
|
');
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,49 +7,15 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* reference_loot_template
|
|
||||||
* item_loot_template
|
|
||||||
* creature_loot_template
|
|
||||||
* gameobject_loot_template
|
|
||||||
* mail_loot_template
|
|
||||||
* disenchant_loot_template
|
|
||||||
* fishing_loot_template
|
|
||||||
* skinning_loot_template
|
|
||||||
* milling_loot_template
|
|
||||||
* prospecting_loot_template
|
|
||||||
* pickpocketing_loot_template
|
|
||||||
|
|
||||||
* item_template
|
|
||||||
* creature_template
|
|
||||||
* gameobject_template
|
|
||||||
* quest_template
|
|
||||||
* quest_template_addon
|
|
||||||
* skill_perfect_item_template
|
|
||||||
|
|
||||||
* npc_trainer
|
|
||||||
* npc_vendor
|
|
||||||
* game_event_npc_vendor
|
|
||||||
* creature
|
|
||||||
|
|
||||||
* playercreateinfo_item
|
|
||||||
* playercreateinfo_skill
|
|
||||||
* achievement_reward
|
|
||||||
* skill_discovery_template
|
|
||||||
*/
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = ['charstartoutfit', 'talent', 'spell', 'skilllineability', 'itemextendedcost', 'lock'];
|
|
||||||
|
|
||||||
function source(array $ids = [])
|
|
||||||
{
|
{
|
||||||
$insBasic = 'INSERT INTO ?_source (`type`, typeId, src?d) VALUES [V] ON DUPLICATE KEY UPDATE moreType = NULL, moreTypeId = NULL, src?d = VALUES(src?d)';
|
protected $command = 'source';
|
||||||
$insMore = 'INSERT INTO ?_source (`type`, typeId, src?d, moreType, moreTypeId) VALUES [V] ON DUPLICATE KEY UPDATE moreType = NULL, moreTypeId = NULL, src?d = VALUES(src?d)';
|
|
||||||
$insSub = 'INSERT INTO ?_source (`type`, typeId, src?d, moreType, moreTypeId) ?s ON DUPLICATE KEY UPDATE moreType = NULL, moreTypeId = NULL, src?d = VALUES(src?d)';
|
|
||||||
|
|
||||||
// please note, this workes without checks, because we do not use strings here
|
protected $tblDependancyAowow = ['spell', 'achievement'];
|
||||||
function queryfy($ph, array $data, $query)
|
protected $tblDependancyTC = ['playercreateinfo_skills', 'playercreateinfo_item', 'skill_discovery_template', 'achievement_reward', 'skill_perfect_item_template', 'item_template', 'gameobject_template', 'quest_template', 'quest_template_addon', 'creature_template', 'creature', 'npc_trainer', 'npc_vendor', 'game_event_npc_vendor', 'reference_loot_template', 'item_loot_template', 'creature_loot_template', 'gameobject_loot_template', 'mail_loot_template', 'disenchant_loot_template', 'fishing_loot_template', 'skinning_loot_template', 'milling_loot_template', 'prospecting_loot_template', 'pickpocketing_loot_template'];
|
||||||
|
protected $dbcSourceFiles = ['charstartoutfit', 'talent', 'spell', 'skilllineability', 'itemextendedcost', 'lock'];
|
||||||
|
|
||||||
|
private function queryfy(array $data, string $query) : string
|
||||||
{
|
{
|
||||||
$buff = [];
|
$buff = [];
|
||||||
|
|
||||||
@@ -61,10 +27,10 @@ function source(array $ids = [])
|
|||||||
foreach ($data as $d)
|
foreach ($data as $d)
|
||||||
$buff[] = '('.implode(', ', $d ?: 'NULL').')';
|
$buff[] = '('.implode(', ', $d ?: 'NULL').')';
|
||||||
|
|
||||||
return str_replace($ph, implode(', ', $buff), $query);
|
return str_replace('[V]', implode(', ', $buff), $query);
|
||||||
}
|
}
|
||||||
|
|
||||||
function pushBuffer(&$buff, $type, $typeId, $mType = 0, $mTypeId = 0, $src = 1)
|
private function pushBuffer(array &$buff, int $type, int $typeId, int $mType = 0, int $mTypeId = 0, int $src = 1) : void
|
||||||
{
|
{
|
||||||
$b = &$buff[$typeId];
|
$b = &$buff[$typeId];
|
||||||
|
|
||||||
@@ -81,7 +47,7 @@ function source(array $ids = [])
|
|||||||
$b = [$type, $typeId, $src, null, null];
|
$b = [$type, $typeId, $src, null, null];
|
||||||
}
|
}
|
||||||
|
|
||||||
function taughtSpell($item)
|
private function taughtSpell(array $item) : int
|
||||||
{
|
{
|
||||||
# spelltrigger_X (0: onUse; 6: onLearnSpell)
|
# spelltrigger_X (0: onUse; 6: onLearnSpell)
|
||||||
# spell: 483 & 55884 are learn spells
|
# spell: 483 & 55884 are learn spells
|
||||||
@@ -101,6 +67,12 @@ function source(array $ids = [])
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
|
$insBasic = 'INSERT INTO ?_source (`type`, typeId, src?d) VALUES [V] ON DUPLICATE KEY UPDATE moreType = NULL, moreTypeId = NULL, src?d = VALUES(src?d)';
|
||||||
|
$insMore = 'INSERT INTO ?_source (`type`, typeId, src?d, moreType, moreTypeId) VALUES [V] ON DUPLICATE KEY UPDATE moreType = NULL, moreTypeId = NULL, src?d = VALUES(src?d)';
|
||||||
|
$insSub = 'INSERT INTO ?_source (`type`, typeId, src?d, moreType, moreTypeId) ?s ON DUPLICATE KEY UPDATE moreType = NULL, moreTypeId = NULL, src?d = VALUES(src?d)';
|
||||||
|
|
||||||
// cant update existing rows
|
// cant update existing rows
|
||||||
if ($ids)
|
if ($ids)
|
||||||
DB::Aowow()->query('DELETE FROM ?_source WHERE `type` = ?d AND typeId IN (?a)', $well, $wellll);
|
DB::Aowow()->query('DELETE FROM ?_source WHERE `type` = ?d AND typeId IN (?a)', $well, $wellll);
|
||||||
@@ -188,17 +160,17 @@ function source(array $ids = [])
|
|||||||
|
|
||||||
foreach ($spellItems as $iId => $si)
|
foreach ($spellItems as $iId => $si)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($si))
|
if ($_ = $this->taughtSpell($si))
|
||||||
$spellBuff[$_] = [TYPE_SPELL, $_, 1, TYPE_SPELL, $itemSpells[$iId]];
|
$spellBuff[$_] = [TYPE_SPELL, $_, 1, TYPE_SPELL, $itemSpells[$iId]];
|
||||||
|
|
||||||
$itemBuff[$iId] = [TYPE_ITEM, $iId, 1, TYPE_SPELL, $itemSpells[$iId]];
|
$itemBuff[$iId] = [TYPE_ITEM, $iId, 1, TYPE_SPELL, $itemSpells[$iId]];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 1, 1, 1);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 1, 1, 1);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 1, 1, 1);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 1, 1, 1);
|
||||||
|
|
||||||
|
|
||||||
############
|
############
|
||||||
@@ -232,19 +204,19 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry'] /*, $lootmode */);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry'] /*, $lootmode */);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry'] /*, $lootmode */);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry'] /*, $lootmode */);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry'] /*, $lootmode */);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry'] /*, $lootmode */);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry'] /*, $lootmode */);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry'] /*, $lootmode */);
|
||||||
}
|
}
|
||||||
|
|
||||||
$objectOT = [];
|
$objectOT = [];
|
||||||
@@ -274,21 +246,21 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
||||||
|
|
||||||
$objectOT[] = $iId;
|
$objectOT[] = $iId;
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
||||||
|
|
||||||
$objectOT[] = $roi;
|
$objectOT[] = $roi;
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$itemOT = [];
|
$itemOT = [];
|
||||||
@@ -316,28 +288,28 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_ITEM, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_ITEM, $l['entry']);
|
||||||
|
|
||||||
$itemOT[] = $iId;
|
$itemOT[] = $iId;
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_ITEM, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_ITEM, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_ITEM, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_ITEM, $l['entry']);
|
||||||
|
|
||||||
$itemOT[] = $roi;
|
$itemOT[] = $roi;
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_ITEM, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_ITEM, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 2, 2, 2);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 2, 2, 2);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 2, 2, 2);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 2, 2, 2);
|
||||||
|
|
||||||
DB::Aowow()->query('UPDATE ?_items SET cuFLags = cuFlags | ?d WHERE id IN (?a)', ITEM_CU_OT_ITEMLOOT, $itemOT);
|
DB::Aowow()->query('UPDATE ?_items SET cuFLags = cuFlags | ?d WHERE id IN (?a)', ITEM_CU_OT_ITEMLOOT, $itemOT);
|
||||||
DB::Aowow()->query('UPDATE ?_items SET cuFLags = cuFlags | ?d WHERE id IN (?a)', ITEM_CU_OT_OBJECTLOOT, $objectOT);
|
DB::Aowow()->query('UPDATE ?_items SET cuFLags = cuFlags | ?d WHERE id IN (?a)', ITEM_CU_OT_OBJECTLOOT, $objectOT);
|
||||||
@@ -348,11 +320,11 @@ function source(array $ids = [])
|
|||||||
###########
|
###########
|
||||||
CLI::write(' * #3 PvP');
|
CLI::write(' * #3 PvP');
|
||||||
|
|
||||||
// var g_sources_pvp = {
|
// var g_sources_pvp = {
|
||||||
// 1: 'Arena',
|
// 1: 'Arena',
|
||||||
// 2: 'Battleground',
|
// 2: 'Battleground',
|
||||||
// 4: 'World' basicly the tokens you get for openPvP .. manual data
|
// 4: 'World' basicly the tokens you get for openPvP .. manual data
|
||||||
// };
|
// };
|
||||||
|
|
||||||
$spellBuff = [];
|
$spellBuff = [];
|
||||||
$itemBuff = [];
|
$itemBuff = [];
|
||||||
@@ -367,7 +339,7 @@ function source(array $ids = [])
|
|||||||
|
|
||||||
foreach (DB::World()->select($vendorQuery, $xCostA, $xCostA) as $iId => $v)
|
foreach (DB::World()->select($vendorQuery, $xCostA, $xCostA) as $iId => $v)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($v))
|
if ($_ = $this->taughtSpell($v))
|
||||||
$spellBuff[$_] = [TYPE_SPELL, $_, 1];
|
$spellBuff[$_] = [TYPE_SPELL, $_, 1];
|
||||||
|
|
||||||
$itemBuff[$iId] = [TYPE_ITEM, $iId, 1];
|
$itemBuff[$iId] = [TYPE_ITEM, $iId, 1];
|
||||||
@@ -375,17 +347,17 @@ function source(array $ids = [])
|
|||||||
|
|
||||||
foreach (DB::World()->select($vendorQuery, $xCostH, $xCostH) as $iId => $v)
|
foreach (DB::World()->select($vendorQuery, $xCostH, $xCostH) as $iId => $v)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($v))
|
if ($_ = $this->taughtSpell($v))
|
||||||
$spellBuff[$_] = [TYPE_SPELL, $_, 2];
|
$spellBuff[$_] = [TYPE_SPELL, $_, 2];
|
||||||
|
|
||||||
$itemBuff[$iId] = [TYPE_ITEM, $iId, 2];
|
$itemBuff[$iId] = [TYPE_ITEM, $iId, 2];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insBasic), 3, 3, 3);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insBasic), 3, 3, 3);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insBasic), 3, 3, 3);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insBasic), 3, 3, 3);
|
||||||
|
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -413,10 +385,10 @@ function source(array $ids = [])
|
|||||||
);
|
);
|
||||||
foreach ($quests as $iId => $q)
|
foreach ($quests as $iId => $q)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($q))
|
if ($_ = $this->taughtSpell($q))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $q['qty'] > 1 ? 0 : TYPE_QUEST, $q['quest'], $q['side']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $q['qty'] > 1 ? 0 : TYPE_QUEST, $q['quest'], $q['side']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $q['qty'] > 1 ? 0 : TYPE_QUEST, $q['quest'], $q['side']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $q['qty'] > 1 ? 0 : TYPE_QUEST, $q['quest'], $q['side']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$mailLoot = DB::World()->select('
|
$mailLoot = DB::World()->select('
|
||||||
@@ -446,28 +418,28 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_QUEST, $l['entry'], $l['side']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_QUEST, $l['entry'], $l['side']);
|
||||||
|
|
||||||
$itemOT[] = $iId;
|
$itemOT[] = $iId;
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_QUEST, $l['entry'], $l['side']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_QUEST, $l['entry'], $l['side']);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_QUEST, $l['entry'], $l['side']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_QUEST, $l['entry'], $l['side']);
|
||||||
|
|
||||||
$itemOT[] = $roi;
|
$itemOT[] = $roi;
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_QUEST, $l['entry'], $l['side']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_QUEST, $l['entry'], $l['side']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 4, 4, 4);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 4, 4, 4);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 4, 4, 4);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 4, 4, 4);
|
||||||
|
|
||||||
|
|
||||||
##############
|
##############
|
||||||
@@ -491,17 +463,17 @@ function source(array $ids = [])
|
|||||||
|
|
||||||
foreach ($vendors as $iId => $v)
|
foreach ($vendors as $iId => $v)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($v))
|
if ($_ = $this->taughtSpell($v))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $v['qty'] > 1 ? 0 : TYPE_NPC, $v['npc']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $v['qty'] > 1 ? 0 : TYPE_NPC, $v['npc']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $v['qty'] > 1 ? 0 : TYPE_NPC, $v['npc']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $v['qty'] > 1 ? 0 : TYPE_NPC, $v['npc']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 5, 5, 5);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 5, 5, 5);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 5, 5, 5);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 5, 5, 5);
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
@@ -510,7 +482,7 @@ function source(array $ids = [])
|
|||||||
CLI::write(' * #10 Starter');
|
CLI::write(' * #10 Starter');
|
||||||
|
|
||||||
if ($pcii = DB::World()->select('SELECT ?d, itemid, 1 FROM playercreateinfo_item', TYPE_ITEM))
|
if ($pcii = DB::World()->select('SELECT ?d, itemid, 1 FROM playercreateinfo_item', TYPE_ITEM))
|
||||||
DB::Aowow()->query(queryfy('[V]', $pcii, $insBasic), 10, 10, 10);
|
DB::Aowow()->query($this->queryfy($pcii, $insBasic), 10, 10, 10);
|
||||||
|
|
||||||
for ($i = 1; $i < 21; $i++)
|
for ($i = 1; $i < 21; $i++)
|
||||||
DB::Aowow()->query($insSub, 10, DB::Aowow()->subquery('SELECT ?d, item?d, 1, NULL AS m, NULL AS mt FROM dbc_charstartoutfit WHERE item?d > 0', TYPE_ITEM, $i, $i), 10, 10);
|
DB::Aowow()->query($insSub, 10, DB::Aowow()->subquery('SELECT ?d, item?d, 1, NULL AS m, NULL AS mt FROM dbc_charstartoutfit WHERE item?d > 0', TYPE_ITEM, $i, $i), 10, 10);
|
||||||
@@ -544,10 +516,10 @@ function source(array $ids = [])
|
|||||||
$extraItems = DB::World()->select('SELECT entry AS ARRAY_KEY, class, subclass, spellid_1, spelltrigger_1, spellid_2, spelltrigger_2 FROM item_template WHERE entry IN (?a)', array_keys($xItems));
|
$extraItems = DB::World()->select('SELECT entry AS ARRAY_KEY, class, subclass, spellid_1, spelltrigger_1, spellid_2, spelltrigger_2 FROM item_template WHERE entry IN (?a)', array_keys($xItems));
|
||||||
foreach ($extraItems as $iId => $l)
|
foreach ($extraItems as $iId => $l)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $xItems[$iId]['qty'] > 1 ? 0 : TYPE_ACHIEVEMENT, $xItems[$iId]['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $xItems[$iId]['qty'] > 1 ? 0 : TYPE_ACHIEVEMENT, $xItems[$iId]['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $xItems[$iId]['qty'] > 1 ? 0 : TYPE_ACHIEVEMENT, $xItems[$iId]['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $xItems[$iId]['qty'] > 1 ? 0 : TYPE_ACHIEVEMENT, $xItems[$iId]['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($rewItems as $iId => $l)
|
foreach ($rewItems as $iId => $l)
|
||||||
@@ -556,26 +528,26 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_ACHIEVEMENT, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_ACHIEVEMENT, $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $l['qty'] > 1 ? 0 : TYPE_ACHIEVEMENT, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $l['qty'] > 1 ? 0 : TYPE_ACHIEVEMENT, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_ACHIEVEMENT, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_ACHIEVEMENT, $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $l['qty'] > 1 ? 0 : TYPE_ACHIEVEMENT, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $l['qty'] > 1 ? 0 : TYPE_ACHIEVEMENT, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 12, 12, 12);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 12, 12, 12);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 12, 12, 12);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 12, 12, 12);
|
||||||
|
|
||||||
|
|
||||||
####################
|
####################
|
||||||
@@ -609,26 +581,26 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 15, 15, 15);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 15, 15, 15);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 15, 15, 15);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 15, 15, 15);
|
||||||
|
|
||||||
|
|
||||||
##############
|
##############
|
||||||
@@ -660,26 +632,26 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_OBJECT, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 16, 16, 16);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 16, 16, 16);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 16, 16, 16);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 16, 16, 16);
|
||||||
|
|
||||||
|
|
||||||
################
|
################
|
||||||
@@ -715,26 +687,26 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 17, 17, 17);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 17, 17, 17);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 17, 17, 17);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 17, 17, 17);
|
||||||
|
|
||||||
|
|
||||||
##############
|
##############
|
||||||
@@ -766,26 +738,26 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 18, 18, 18);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 18, 18, 18);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 18, 18, 18);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 18, 18, 18);
|
||||||
|
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -821,26 +793,26 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : $l['srcType'], $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 19, 19, 19);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 19, 19, 19);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 19, 19, 19);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 19, 19, 19);
|
||||||
|
|
||||||
|
|
||||||
##################
|
##################
|
||||||
@@ -872,26 +844,26 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 20, 20, 20);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 20, 20, 20);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 20, 20, 20);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 20, 20, 20);
|
||||||
|
|
||||||
|
|
||||||
##################
|
##################
|
||||||
@@ -922,26 +894,26 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 21, 21, 21);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 21, 21, 21);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 21, 21, 21);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 21, 21, 21);
|
||||||
|
|
||||||
|
|
||||||
################
|
################
|
||||||
@@ -973,26 +945,26 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 22, 22, 22);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 22, 22, 22);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 22, 22, 22);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 22, 22, 22);
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
@@ -1024,26 +996,26 @@ function source(array $ids = [])
|
|||||||
{
|
{
|
||||||
foreach ($refLoot[-$roi] as $iId => $r)
|
foreach ($refLoot[-$roi] as $iId => $r)
|
||||||
{
|
{
|
||||||
if ($_ = taughtSpell($r))
|
if ($_ = $this->taughtSpell($r))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $iId, $r['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_ = taughtSpell($l))
|
if ($_ = $this->taughtSpell($l))
|
||||||
pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
$this->pushBuffer($spellBuff, TYPE_SPELL, $_, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
||||||
|
|
||||||
pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
$this->pushBuffer($itemBuff, TYPE_ITEM, $roi, $l['qty'] > 1 ? 0 : TYPE_NPC, $l['entry']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($itemBuff)
|
if ($itemBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $itemBuff, $insMore), 23, 23, 23);
|
DB::Aowow()->query($this->queryfy($itemBuff, $insMore), 23, 23, 23);
|
||||||
|
|
||||||
if ($spellBuff)
|
if ($spellBuff)
|
||||||
DB::Aowow()->query(queryfy('[V]', $spellBuff, $insMore), 23, 23, 23);
|
DB::Aowow()->query($this->queryfy($spellBuff, $insMore), 23, 23, 23);
|
||||||
|
|
||||||
|
|
||||||
// flagging aowow_items for source (note: this is not exact! creatures dropping items may not be spawnd, quests granting items may be disabled)
|
// flagging aowow_items for source (note: this is not exact! creatures dropping items may not be spawnd, quests granting items may be disabled)
|
||||||
@@ -1077,11 +1049,11 @@ function source(array $ids = [])
|
|||||||
if ($spell['effect'.$i.'Id'] != 36) // effect: learnSpell
|
if ($spell['effect'.$i.'Id'] != 36) // effect: learnSpell
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
pushBuffer($buff, TYPE_SPELL, $spell['effect'.$i.'TriggerSpell'], $quests[$sId]['qty'] > 1 ? 0 : TYPE_QUEST, $quests[$sId]['qty'] > 1 ? 0 : $quests[$sId]['id'], $quests[$sId]['side']);
|
$this->pushBuffer($buff, TYPE_SPELL, $spell['effect'.$i.'TriggerSpell'], $quests[$sId]['qty'] > 1 ? 0 : TYPE_QUEST, $quests[$sId]['qty'] > 1 ? 0 : $quests[$sId]['id'], $quests[$sId]['side']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DB::Aowow()->query(queryfy('[V]', $buff, $insMore), 4, 4, 4);
|
DB::Aowow()->query($this->queryfy($buff, $insMore), 4, 4, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
# 6: Trainer
|
# 6: Trainer
|
||||||
@@ -1107,21 +1079,21 @@ function source(array $ids = [])
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
$triggered = true;
|
$triggered = true;
|
||||||
pushBuffer($buff, TYPE_SPELL, $effects['effect'.$i.'TriggerSpell'], $trainerId ? TYPE_NPC : 0, $trainerId);
|
$this->pushBuffer($buff, TYPE_SPELL, $effects['effect'.$i.'TriggerSpell'], $trainerId ? TYPE_NPC : 0, $trainerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$triggered)
|
if (!$triggered)
|
||||||
pushBuffer($buff, TYPE_SPELL, $spellId, $trainerId ? TYPE_NPC : 0, $trainerId);
|
$this->pushBuffer($buff, TYPE_SPELL, $spellId, $trainerId ? TYPE_NPC : 0, $trainerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
DB::Aowow()->query(queryfy('[V]', $buff, $insMore), 6, 6, 6);
|
DB::Aowow()->query($this->queryfy($buff, $insMore), 6, 6, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
# 7: Discovery
|
# 7: Discovery
|
||||||
CLI::write(' * #7 Discovery');
|
CLI::write(' * #7 Discovery');
|
||||||
// 61756: Northrend Inscription Research (FAST QA VERSION);
|
// 61756: Northrend Inscription Research (FAST QA VERSION);
|
||||||
if ($disco = DB::World()->select('SELECT ?d, spellId, 1 FROM skill_discovery_template WHERE reqSpell <> ?d', TYPE_SPELL, 61756))
|
if ($disco = DB::World()->select('SELECT ?d, spellId, 1 FROM skill_discovery_template WHERE reqSpell <> ?d', TYPE_SPELL, 61756))
|
||||||
DB::Aowow()->query(queryfy('[V]', $disco, $insBasic), 7, 7, 7);
|
DB::Aowow()->query($this->queryfy($disco, $insBasic), 7, 7, 7);
|
||||||
|
|
||||||
# 9: Talent
|
# 9: Talent
|
||||||
CLI::write(' * #9 Talent');
|
CLI::write(' * #9 Talent');
|
||||||
@@ -1158,7 +1130,7 @@ function source(array $ids = [])
|
|||||||
$tSpells = DB::Aowow()->select('SELECT id AS ARRAY_KEY, effect1Id, effect2Id, effect3Id, effect1TriggerSpell, effect2TriggerSpell, effect3TriggerSpell FROM dbc_spell WHERE id IN (?a)', array_keys($recurse));
|
$tSpells = DB::Aowow()->select('SELECT id AS ARRAY_KEY, effect1Id, effect2Id, effect3Id, effect1TriggerSpell, effect2TriggerSpell, effect3TriggerSpell FROM dbc_spell WHERE id IN (?a)', array_keys($recurse));
|
||||||
}
|
}
|
||||||
|
|
||||||
DB::Aowow()->query(queryfy('[V]', $buff, $insBasic), 9, 9, 9);
|
DB::Aowow()->query($this->queryfy($buff, $insBasic), 9, 9, 9);
|
||||||
|
|
||||||
# 10: Starter
|
# 10: Starter
|
||||||
CLI::write(' * #10 Starter');
|
CLI::write(' * #10 Starter');
|
||||||
@@ -1181,7 +1153,7 @@ function source(array $ids = [])
|
|||||||
# 4: Quest
|
# 4: Quest
|
||||||
CLI::write(' * #4 Quest');
|
CLI::write(' * #4 Quest');
|
||||||
if ($quests = DB::World()->select('SELECT ?d, RewardTitle, 1, ?d, ID FROM quest_template WHERE RewardTitle > 0', TYPE_TITLE, TYPE_QUEST))
|
if ($quests = DB::World()->select('SELECT ?d, RewardTitle, 1, ?d, ID FROM quest_template WHERE RewardTitle > 0', TYPE_TITLE, TYPE_QUEST))
|
||||||
DB::Aowow()->query(queryfy('[V]', $quests, $insMore), 4, 4, 4);
|
DB::Aowow()->query($this->queryfy($quests, $insMore), 4, 4, 4);
|
||||||
|
|
||||||
# 12: Achievement
|
# 12: Achievement
|
||||||
CLI::write(' * #12 Achievement');
|
CLI::write(' * #12 Achievement');
|
||||||
@@ -1194,7 +1166,7 @@ function source(array $ids = [])
|
|||||||
);
|
);
|
||||||
foreach ($sets as $tId => $set)
|
foreach ($sets as $tId => $set)
|
||||||
{
|
{
|
||||||
DB::Aowow()->query(queryfy('[V]', [[TYPE_TITLE, $tId, 1, TYPE_ACHIEVEMENT, $set['srcId']]], $insMore), 12, 12, 12);
|
DB::Aowow()->query($this->queryfy([[TYPE_TITLE, $tId, 1, TYPE_ACHIEVEMENT, $set['srcId']]], $insMore), 12, 12, 12);
|
||||||
|
|
||||||
if ($set['altSrcId'])
|
if ($set['altSrcId'])
|
||||||
DB::Aowow()->query('UPDATE ?_titles SET src12Ext = ?d WHERE id = ?d', $set['altSrcId'], $tId);
|
DB::Aowow()->query('UPDATE ?_titles SET src12Ext = ?d WHERE id = ?d', $set['altSrcId'], $tId);
|
||||||
@@ -1205,9 +1177,10 @@ function source(array $ids = [])
|
|||||||
$src13 = [null, 42, 52, 71, 80, 157, 163, 167, 169, 177];
|
$src13 = [null, 42, 52, 71, 80, 157, 163, 167, 169, 177];
|
||||||
foreach ($src13 as $src => $tId)
|
foreach ($src13 as $src => $tId)
|
||||||
if ($tId)
|
if ($tId)
|
||||||
DB::Aowow()->query(queryfy('[V]', [[TYPE_TITLE, $tId, $src]], $insBasic), 13, 13, 13);
|
DB::Aowow()->query($this->queryfy([[TYPE_TITLE, $tId, $src]], $insBasic), 13, 13, 13);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,28 +7,60 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
// requires https://github.com/TrinityCore/TrinityCore/commit/f989c7182c4cc30f1d0ffdc566c7624a5e108a2f
|
// requires https://github.com/TrinityCore/TrinityCore/commit/f989c7182c4cc30f1d0ffdc566c7624a5e108a2f to have been used at least once
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* creature
|
|
||||||
* creature_addon
|
|
||||||
* gameobject
|
|
||||||
* gameobject_template
|
|
||||||
* vehicle_accessory
|
|
||||||
* vehicle_accessory_template
|
|
||||||
* script_waypoint
|
|
||||||
* waypoints
|
|
||||||
* waypoint_data
|
|
||||||
*/
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = ['worldmaparea', 'map', 'dungeonmap', 'taxipathnode', 'soundemitters', 'areatrigger'];
|
|
||||||
|
|
||||||
function spawns() // and waypoints
|
|
||||||
{
|
{
|
||||||
$alphaMapCache = [];
|
protected $command = 'spawns'; // and waypoints
|
||||||
$alphaMapCheck = function ($areaId, array &$set) use (&$alphaMapCache)
|
|
||||||
|
protected $tblDependancyTC = ['creature', 'creature_addon', 'gameobject', 'gameobject_template', 'vehicle_accessory', 'vehicle_accessory_template', 'script_waypoint', 'waypoints', 'waypoint_data'];
|
||||||
|
protected $dbcSourceFiles = ['worldmaparea', 'map', 'dungeonmap', 'taxipathnode', 'soundemitters', 'areatrigger'];
|
||||||
|
|
||||||
|
private $querys = array(
|
||||||
|
1 => ['SELECT c.guid, 1 AS "type", c.id AS typeId, c.spawntimesecs AS respawn, c.phaseMask, c.zoneId AS areaId, c.map, IFNULL(ca.path_id, 0) AS pathId, c.position_y AS `posX`, c.position_x AS `posY` ' .
|
||||||
|
'FROM creature c LEFT JOIN creature_addon ca ON ca.guid = c.guid',
|
||||||
|
' - assembling creature spawns'],
|
||||||
|
|
||||||
|
2 => ['SELECT c.guid, 2 AS "type", c.id AS typeId, ABS(c.spawntimesecs) AS respawn, c.phaseMask, c.zoneId AS areaId, c.map, 0 as pathId, c.position_y AS `posX`, c.position_x AS `posY` ' .
|
||||||
|
'FROM gameobject c',
|
||||||
|
' - assembling gameobject spawns'],
|
||||||
|
|
||||||
|
3 => ['SELECT id AS "guid", 19 AS "type", soundId AS typeId, 0 AS respawn, 0 AS phaseMask, 0 AS areaId, mapId AS "map", 0 AS pathId, posX, posY ' .
|
||||||
|
'FROM dbc_soundemitters',
|
||||||
|
' - assembling sound emitter spawns'],
|
||||||
|
|
||||||
|
4 => ['SELECT id AS "guid", 503 AS "type", id AS typeId, 0 AS respawn, 0 AS phaseMask, 0 AS areaId, mapId AS "map", 0 AS pathId, posX, posY ' .
|
||||||
|
'FROM dbc_areatrigger',
|
||||||
|
' - assembling areatrigger spawns'],
|
||||||
|
|
||||||
|
5 => ['SELECT c.guid, w.entry AS "npcOrPath", w.pointId AS "point", c.zoneId AS areaId, c.map, w.waittime AS "wait", w.location_y AS `posX`, w.location_x AS `posY` ' .
|
||||||
|
'FROM creature c JOIN script_waypoint w ON c.id = w.entry',
|
||||||
|
' - assembling waypoints from table script_waypoint'],
|
||||||
|
|
||||||
|
6 => ['SELECT c.guid, w.entry AS "npcOrPath", w.pointId AS "point", c.zoneId AS areaId, c.map, 0 AS "wait", w.position_y AS `posX`, w.position_x AS `posY` ' .
|
||||||
|
'FROM creature c JOIN waypoints w ON c.id = w.entry',
|
||||||
|
' - assembling waypoints from table waypoints'],
|
||||||
|
|
||||||
|
7 => ['SELECT c.guid, -w.id AS "npcOrPath", w.point, c.zoneId AS areaId, c.map, w.delay AS "wait", w.position_y AS `posX`, w.position_x AS `posY` ' .
|
||||||
|
'FROM creature c JOIN creature_addon ca ON ca.guid = c.guid JOIN waypoint_data w ON w.id = ca.path_id WHERE ca.path_id <> 0',
|
||||||
|
' - assembling waypoints from table waypoint_data']
|
||||||
|
);
|
||||||
|
|
||||||
|
private $queryPost =
|
||||||
|
'SELECT dm.id, wma.areaId, IFNULL(dm.floor, 0) AS floor, ' .
|
||||||
|
'100 - ROUND(IF(dm.id IS NOT NULL, (?f - dm.minY) * 100 / (dm.maxY - dm.minY), (?f - wma.right) * 100 / (wma.left - wma.right)), 1) AS `posX`, ' .
|
||||||
|
'100 - ROUND(IF(dm.id IS NOT NULL, (?f - dm.minX) * 100 / (dm.maxX - dm.minX), (?f - wma.bottom) * 100 / (wma.top - wma.bottom)), 1) AS `posY`, ' .
|
||||||
|
'((abs(IF(dm.id IS NOT NULL, (?f - dm.minY) * 100 / (dm.maxY - dm.minY), (?f - wma.right) * 100 / (wma.left - wma.right)) - 50) / 50) * ' .
|
||||||
|
' (abs(IF(dm.id IS NOT NULL, (?f - dm.minX) * 100 / (dm.maxX - dm.minX), (?f - wma.bottom) * 100 / (wma.top - wma.bottom)) - 50) / 50)) AS quality ' .
|
||||||
|
'FROM dbc_worldmaparea wma ' .
|
||||||
|
'LEFT JOIN dbc_dungeonmap dm ON dm.mapId = IF(?d AND (wma.mapId NOT IN (0, 1, 530, 571) OR wma.areaId = 4395), wma.mapId, -1) ' .
|
||||||
|
'WHERE wma.mapId = ?d AND IF(?d, wma.areaId = ?d, wma.areaId <> 0) ' .
|
||||||
|
'HAVING (`posX` BETWEEN 0.1 AND 99.9 AND `posY` BETWEEN 0.1 AND 99.9) ' . // AND (dm.id IS NULL OR ?d) ' .
|
||||||
|
'ORDER BY quality ASC';
|
||||||
|
|
||||||
|
private $alphaMapCache = [];
|
||||||
|
|
||||||
|
private function alphaMapCheck(int $areaId, array &$set) : bool
|
||||||
{
|
{
|
||||||
$file = 'setup/generated/alphaMaps/'.$areaId.'.png';
|
$file = 'setup/generated/alphaMaps/'.$areaId.'.png';
|
||||||
if (!file_exists($file)) // file does not exist (probably instanced area)
|
if (!file_exists($file)) // file does not exist (probably instanced area)
|
||||||
@@ -41,17 +73,17 @@ function spawns() // and waypoints
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($alphaMapCache[$areaId]))
|
if (empty($this->alphaMapCache[$areaId]))
|
||||||
$alphaMapCache[$areaId] = imagecreatefrompng($file);
|
$this->alphaMapCache[$areaId] = imagecreatefrompng($file);
|
||||||
|
|
||||||
// alphaMaps are 1000 x 1000, adapt points [black => valid point]
|
// alphaMaps are 1000 x 1000, adapt points [black => valid point]
|
||||||
if (!imagecolorat($alphaMapCache[$areaId], $set['posX'] * 10, $set['posY'] * 10))
|
if (!imagecolorat($this->alphaMapCache[$areaId], $set['posX'] * 10, $set['posY'] * 10))
|
||||||
$set = null;
|
$set = null;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
}
|
||||||
|
|
||||||
$checkCoords = function ($points) use($alphaMapCheck)
|
private function checkCoords(array $points) : array
|
||||||
{
|
{
|
||||||
$result = [];
|
$result = [];
|
||||||
$capitals = array( // capitals take precedence over their surroundings
|
$capitals = array( // capitals take precedence over their surroundings
|
||||||
@@ -62,7 +94,7 @@ function spawns() // and waypoints
|
|||||||
|
|
||||||
foreach ($points as $res)
|
foreach ($points as $res)
|
||||||
{
|
{
|
||||||
if ($alphaMapCheck($res['areaId'], $res))
|
if ($this->alphaMapCheck($res['areaId'], $res))
|
||||||
{
|
{
|
||||||
if (!$res)
|
if (!$res)
|
||||||
continue;
|
continue;
|
||||||
@@ -88,48 +120,10 @@ function spawns() // and waypoints
|
|||||||
}
|
}
|
||||||
|
|
||||||
return $result[1];
|
return $result[1];
|
||||||
};
|
}
|
||||||
|
|
||||||
$query[1] = ['SELECT c.guid, 1 AS "type", c.id AS typeId, c.spawntimesecs AS respawn, c.phaseMask, c.zoneId AS areaId, c.map, IFNULL(ca.path_id, 0) AS pathId, c.position_y AS `posX`, c.position_x AS `posY` ' .
|
|
||||||
'FROM creature c LEFT JOIN creature_addon ca ON ca.guid = c.guid',
|
|
||||||
' - assembling '.CLI::bold('creature').' spawns'];
|
|
||||||
|
|
||||||
$query[2] = ['SELECT c.guid, 2 AS "type", c.id AS typeId, ABS(c.spawntimesecs) AS respawn, c.phaseMask, c.zoneId AS areaId, c.map, 0 as pathId, c.position_y AS `posX`, c.position_x AS `posY` ' .
|
|
||||||
'FROM gameobject c',
|
|
||||||
' - assembling '.CLI::bold('gameobject').' spawns'];
|
|
||||||
|
|
||||||
$query[3] = ['SELECT id AS "guid", 19 AS "type", soundId AS typeId, 0 AS respawn, 0 AS phaseMask, 0 AS areaId, mapId AS "map", 0 AS pathId, posX, posY ' .
|
|
||||||
'FROM dbc_soundemitters',
|
|
||||||
' - assembling '.CLI::bold('sound emitter').' spawns'];
|
|
||||||
|
|
||||||
$query[4] = ['SELECT id AS "guid", 503 AS "type", id AS typeId, 0 AS respawn, 0 AS phaseMask, 0 AS areaId, mapId AS "map", 0 AS pathId, posX, posY ' .
|
|
||||||
'FROM dbc_areatrigger',
|
|
||||||
' - assembling '.CLI::bold('areatrigger').' spawns'];
|
|
||||||
|
|
||||||
$query[5] = ['SELECT c.guid, w.entry AS "npcOrPath", w.pointId AS "point", c.zoneId AS areaId, c.map, w.waittime AS "wait", w.location_y AS `posX`, w.location_x AS `posY` ' .
|
|
||||||
'FROM creature c JOIN script_waypoint w ON c.id = w.entry',
|
|
||||||
' - assembling waypoints from '.CLI::bold('script_waypoint')];
|
|
||||||
|
|
||||||
$query[6] = ['SELECT c.guid, w.entry AS "npcOrPath", w.pointId AS "point", c.zoneId AS areaId, c.map, 0 AS "wait", w.position_y AS `posX`, w.position_x AS `posY` ' .
|
|
||||||
'FROM creature c JOIN waypoints w ON c.id = w.entry',
|
|
||||||
' - assembling waypoints from '.CLI::bold('waypoints')];
|
|
||||||
|
|
||||||
$query[7] = ['SELECT c.guid, -w.id AS "npcOrPath", w.point, c.zoneId AS areaId, c.map, w.delay AS "wait", w.position_y AS `posX`, w.position_x AS `posY` ' .
|
|
||||||
'FROM creature c JOIN creature_addon ca ON ca.guid = c.guid JOIN waypoint_data w ON w.id = ca.path_id WHERE ca.path_id <> 0',
|
|
||||||
' - assembling waypoints from '.CLI::bold('waypoint_data')];
|
|
||||||
|
|
||||||
$queryPost = 'SELECT dm.id, wma.areaId, IFNULL(dm.floor, 0) AS floor, ' .
|
|
||||||
'100 - ROUND(IF(dm.id IS NOT NULL, (?f - dm.minY) * 100 / (dm.maxY - dm.minY), (?f - wma.right) * 100 / (wma.left - wma.right)), 1) AS `posX`, ' .
|
|
||||||
'100 - ROUND(IF(dm.id IS NOT NULL, (?f - dm.minX) * 100 / (dm.maxX - dm.minX), (?f - wma.bottom) * 100 / (wma.top - wma.bottom)), 1) AS `posY`, ' .
|
|
||||||
'((abs(IF(dm.id IS NOT NULL, (?f - dm.minY) * 100 / (dm.maxY - dm.minY), (?f - wma.right) * 100 / (wma.left - wma.right)) - 50) / 50) * ' .
|
|
||||||
' (abs(IF(dm.id IS NOT NULL, (?f - dm.minX) * 100 / (dm.maxX - dm.minX), (?f - wma.bottom) * 100 / (wma.top - wma.bottom)) - 50) / 50)) AS quality ' .
|
|
||||||
'FROM dbc_worldmaparea wma ' .
|
|
||||||
'LEFT JOIN dbc_dungeonmap dm ON dm.mapId = IF(?d AND (wma.mapId NOT IN (0, 1, 530, 571) OR wma.areaId = 4395), wma.mapId, -1) ' .
|
|
||||||
'WHERE wma.mapId = ?d AND IF(?d, wma.areaId = ?d, wma.areaId <> 0) ' .
|
|
||||||
'HAVING (`posX` BETWEEN 0.1 AND 99.9 AND `posY` BETWEEN 0.1 AND 99.9) ' . // AND (dm.id IS NULL OR ?d) ' .
|
|
||||||
'ORDER BY quality ASC';
|
|
||||||
|
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
/*********************/
|
/*********************/
|
||||||
/* truncate old data */
|
/* truncate old data */
|
||||||
/*********************/
|
/*********************/
|
||||||
@@ -151,7 +145,7 @@ function spawns() // and waypoints
|
|||||||
/* perform... */
|
/* perform... */
|
||||||
/**************/
|
/**************/
|
||||||
|
|
||||||
foreach ($query as $idx => $q)
|
foreach ($this->querys as $idx => $q)
|
||||||
{
|
{
|
||||||
CLI::write($q[1]);
|
CLI::write($q[1]);
|
||||||
|
|
||||||
@@ -166,9 +160,9 @@ function spawns() // and waypoints
|
|||||||
foreach ($queryResult as $spawn)
|
foreach ($queryResult as $spawn)
|
||||||
{
|
{
|
||||||
if (!$n)
|
if (!$n)
|
||||||
CLI::write(' * sets '.($sum + 1).' - '.($sum += SqlGen::$stepSize));
|
CLI::write(' * sets '.($sum + 1).' - '.($sum += SqlGen::$sqlBatchSize));
|
||||||
|
|
||||||
if ($n++ > SqlGen::$stepSize)
|
if ($n++ > SqlGen::$sqlBatchSize)
|
||||||
$n = 0;
|
$n = 0;
|
||||||
|
|
||||||
// npc/object is on a transport -> apply offsets to path of transport
|
// npc/object is on a transport -> apply offsets to path of transport
|
||||||
@@ -181,9 +175,9 @@ function spawns() // and waypoints
|
|||||||
$spawn['map'] = $transports[$spawn['map']]['mapId'];
|
$spawn['map'] = $transports[$spawn['map']]['mapId'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$points = DB::Aowow()->select($queryPost, $spawn['posX'], $spawn['posX'], $spawn['posY'], $spawn['posY'], $spawn['posX'], $spawn['posX'], $spawn['posY'], $spawn['posY'], 1, $spawn['map'], $spawn['areaId'], $spawn['areaId'] /*, $spawn['areaId'] ? 1 : 0*/);
|
$points = DB::Aowow()->select($this->queryPost, $spawn['posX'], $spawn['posX'], $spawn['posY'], $spawn['posY'], $spawn['posX'], $spawn['posX'], $spawn['posY'], $spawn['posY'], 1, $spawn['map'], $spawn['areaId'], $spawn['areaId'] /*, $spawn['areaId'] ? 1 : 0*/);
|
||||||
if (!$points) // retry: TC counts pre-instance subareas as instance-maps .. which have no map file
|
if (!$points) // retry: TC counts pre-instance subareas as instance-maps .. which have no map file
|
||||||
$points = DB::Aowow()->select($queryPost, $spawn['posX'], $spawn['posX'], $spawn['posY'], $spawn['posY'], $spawn['posX'], $spawn['posX'], $spawn['posY'], $spawn['posY'], 0, $spawn['map'], 0, 0 /*, 1*/);
|
$points = DB::Aowow()->select($this->queryPost, $spawn['posX'], $spawn['posX'], $spawn['posY'], $spawn['posY'], $spawn['posX'], $spawn['posX'], $spawn['posY'], $spawn['posY'], 0, $spawn['map'], 0, 0 /*, 1*/);
|
||||||
|
|
||||||
if (!$points) // still impossible (there are areas that are intentionally off the map (e.g. the isles south of tanaris))
|
if (!$points) // still impossible (there are areas that are intentionally off the map (e.g. the isles south of tanaris))
|
||||||
{
|
{
|
||||||
@@ -280,6 +274,7 @@ function spawns() // and waypoints
|
|||||||
DB::Aowow()->query('UPDATE ?_spawns s, dbc_worldmaparea wma, dbc_map m SET s.spawnMask = 0 WHERE s.areaId = wma.areaId AND wma.mapId = m.id AND m.areaType IN (0, 3, 4)');
|
DB::Aowow()->query('UPDATE ?_spawns s, dbc_worldmaparea wma, dbc_map m SET s.spawnMask = 0 WHERE s.areaId = wma.areaId AND wma.mapId = m.id AND m.areaType IN (0, 3, 4)');
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,37 +7,16 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* item_template
|
|
||||||
* creature_template
|
|
||||||
* creature_template_addon
|
|
||||||
* smart_scripts
|
|
||||||
* npc_trainer
|
|
||||||
* disables
|
|
||||||
* spell_ranks
|
|
||||||
* spell_dbc
|
|
||||||
* skill_discovery_template
|
|
||||||
*/
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = [
|
|
||||||
'spell',
|
|
||||||
'spellradius',
|
|
||||||
'spellduration',
|
|
||||||
'spellrunecost',
|
|
||||||
'spellcasttimes',
|
|
||||||
'skillline',
|
|
||||||
'skilllineability',
|
|
||||||
'skillraceclassinfo',
|
|
||||||
'talent',
|
|
||||||
'talenttab',
|
|
||||||
'glyphproperties',
|
|
||||||
'spellicon'
|
|
||||||
];
|
|
||||||
|
|
||||||
function spell()
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'spell';
|
||||||
|
|
||||||
|
protected $tblDependancyAowow = ['icons'];
|
||||||
|
protected $tblDependancyTC = ['item_template', 'creature_template', 'creature_template_addon', 'smart_scripts', 'npc_trainer', 'disables', 'spell_ranks', 'spell_dbc', 'skill_discovery_template'];
|
||||||
|
protected $dbcSourceFiles = ['spell', 'spellradius', 'spellduration', 'spellrunecost', 'spellcasttimes', 'skillline', 'skilllineability', 'skillraceclassinfo', 'talent', 'talenttab', 'glyphproperties', 'spellicon'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
$ssQuery = '
|
$ssQuery = '
|
||||||
SELECT
|
SELECT
|
||||||
id AS ARRAY_KEY,
|
id AS ARRAY_KEY,
|
||||||
@@ -225,7 +204,7 @@ function spell()
|
|||||||
// merge serverside spells into dbc_spell (should not affect other scripts)
|
// merge serverside spells into dbc_spell (should not affect other scripts)
|
||||||
$lastMax = 0;
|
$lastMax = 0;
|
||||||
CLI::write(' - merging serverside spells into spell.dbc');
|
CLI::write(' - merging serverside spells into spell.dbc');
|
||||||
while ($spells = DB::World()->select($ssQuery, $lastMax, SqlGen::$stepSize))
|
while ($spells = DB::World()->select($ssQuery, $lastMax, SqlGen::$sqlBatchSize))
|
||||||
{
|
{
|
||||||
$newMax = max(array_column($spells, 'id'));
|
$newMax = max(array_column($spells, 'id'));
|
||||||
|
|
||||||
@@ -243,7 +222,7 @@ function spell()
|
|||||||
// merge everything into aowow_spell
|
// merge everything into aowow_spell
|
||||||
$lastMax = 0;
|
$lastMax = 0;
|
||||||
CLI::write(' - filling aowow_spell');
|
CLI::write(' - filling aowow_spell');
|
||||||
while ($spells = DB::Aowow()->select($baseQuery, $lastMax, SqlGen::$stepSize))
|
while ($spells = DB::Aowow()->select($baseQuery, $lastMax, SqlGen::$sqlBatchSize))
|
||||||
{
|
{
|
||||||
$newMax = max(array_column($spells, 'id'));
|
$newMax = max(array_column($spells, 'id'));
|
||||||
|
|
||||||
@@ -771,6 +750,7 @@ function spell()
|
|||||||
DB::Aowow()->query('UPDATE ?_spell SET skillLine1 = 0, iconIdAlt = 0, cuFlags = cuFlags | ?d WHERE id IN (?a)', CUSTOM_EXCLUDE_FOR_LISTVIEW, [60460, 58166, 58239, 58240, 58261, 58262, 54910]);
|
DB::Aowow()->query('UPDATE ?_spell SET skillLine1 = 0, iconIdAlt = 0, cuFlags = cuFlags | ?d WHERE id IN (?a)', CUSTOM_EXCLUDE_FOR_LISTVIEW, [60460, 58166, 58239, 58240, 58261, 58262, 54910]);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,16 +7,15 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps:
|
SqlGen::register(new class extends SetupScript
|
||||||
* spelldifficulty_dbc
|
|
||||||
*/
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = ['spelldifficulty'];
|
|
||||||
|
|
||||||
function spelldifficulty(array $ids = [])
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'spelldifficulty';
|
||||||
|
|
||||||
|
protected $tblDependancyTC = ['spelldifficulty_dbc'];
|
||||||
|
protected $dbcSourceFiles = ['spelldifficulty'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
// has no unique keys..
|
// has no unique keys..
|
||||||
DB::Aowow()->query('TRUNCATE TABLE ?_spelldifficulty');
|
DB::Aowow()->query('TRUNCATE TABLE ?_spelldifficulty');
|
||||||
|
|
||||||
@@ -27,6 +26,7 @@ function spelldifficulty(array $ids = [])
|
|||||||
DB::Aowow()->query('INSERT INTO ?_spelldifficulty VALUES (?a)', array_values($r));
|
DB::Aowow()->query('INSERT INTO ?_spelldifficulty VALUES (?a)', array_values($r));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
18
setup/tools/sqlgen/spellfocusobject.func.php
Normal file
18
setup/tools/sqlgen/spellfocusobject.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'spellfocusobject';
|
||||||
|
protected $dbcSourceFiles = ['spellfocusobject'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
18
setup/tools/sqlgen/spelloverride.func.php
Normal file
18
setup/tools/sqlgen/spelloverride.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'spelloverride';
|
||||||
|
protected $dbcSourceFiles = ['overridespelldata'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
18
setup/tools/sqlgen/spellrange.func.php
Normal file
18
setup/tools/sqlgen/spellrange.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'spellrange';
|
||||||
|
protected $dbcSourceFiles = ['spellrange'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
18
setup/tools/sqlgen/spellvariables.func.php
Normal file
18
setup/tools/sqlgen/spellvariables.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'spellvariables';
|
||||||
|
protected $dbcSourceFiles = ['spelldescriptionvariables'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -7,12 +7,14 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
$customData = array(
|
SqlGen::register(new class extends SetupScript
|
||||||
);
|
|
||||||
$reqDBC = ['talent', 'talenttab'];
|
|
||||||
|
|
||||||
function talents()
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'talents';
|
||||||
|
|
||||||
|
protected $dbcSourceFiles = ['talent', 'talenttab'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
// class: 0 => hunter pets
|
// class: 0 => hunter pets
|
||||||
for ($i = 1; $i < 6; $i++)
|
for ($i = 1; $i < 6; $i++)
|
||||||
DB::Aowow()->query('
|
DB::Aowow()->query('
|
||||||
@@ -36,6 +38,7 @@ function talents()
|
|||||||
', $i, $i, $i);
|
', $i, $i, $i);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,17 +7,15 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps
|
SqlGen::register(new class extends SetupScript
|
||||||
* creature_template
|
|
||||||
* creature
|
|
||||||
*/
|
|
||||||
|
|
||||||
$customData = array(
|
|
||||||
);
|
|
||||||
$reqDBC = ['taxipath', 'taxinodes', 'worldmaparea', 'worldmaptransforms', 'factiontemplate'];
|
|
||||||
|
|
||||||
function taxi() // path & nodes
|
|
||||||
{
|
{
|
||||||
|
protected $command = 'taxi'; // path & nodes
|
||||||
|
|
||||||
|
protected $tblDependancyTC = ['creature', 'creature_template'];
|
||||||
|
protected $dbcSourceFiles = ['taxipath', 'taxinodes', 'worldmaparea', 'worldmaptransforms', 'factiontemplate'];
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
/*********/
|
/*********/
|
||||||
/* paths */
|
/* paths */
|
||||||
/*********/
|
/*********/
|
||||||
@@ -171,6 +169,7 @@ function taxi() // path & nodes
|
|||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -6,22 +6,22 @@ if (!defined('AOWOW_REVISION'))
|
|||||||
if (!CLI)
|
if (!CLI)
|
||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
/* deps:
|
|
||||||
* quest_template
|
|
||||||
* game_event_seasonal_questrelation
|
|
||||||
* game_event
|
|
||||||
* achievement_reward
|
|
||||||
*/
|
|
||||||
|
|
||||||
$customData = array(
|
SqlGen::register(new class extends SetupScript
|
||||||
137 => ['gender' => 2],
|
|
||||||
138 => ['gender' => 1],
|
|
||||||
);
|
|
||||||
$reqDBC = ['chartitles'];
|
|
||||||
|
|
||||||
function titles()
|
|
||||||
{
|
{
|
||||||
$titleHoliday = array(
|
use TrCustomData;
|
||||||
|
|
||||||
|
protected $command = 'titles';
|
||||||
|
|
||||||
|
protected $tblDependancyTC = ['quest_template', 'game_event_seasonal_questrelation', 'game_event', 'achievement_reward'];
|
||||||
|
protected $dbcSourceFiles = ['chartitles'];
|
||||||
|
|
||||||
|
private $customData = array(
|
||||||
|
137 => ['gender' => 2],
|
||||||
|
138 => ['gender' => 1]
|
||||||
|
);
|
||||||
|
|
||||||
|
private $titleHoliday = array(
|
||||||
137 => 201,
|
137 => 201,
|
||||||
138 => 201,
|
138 => 201,
|
||||||
124 => 324,
|
124 => 324,
|
||||||
@@ -35,6 +35,8 @@ function titles()
|
|||||||
168 => 404
|
168 => 404
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public function generate(array $ids = []) : bool
|
||||||
|
{
|
||||||
$questQuery = '
|
$questQuery = '
|
||||||
SELECT
|
SELECT
|
||||||
qt.RewardTitle AS ARRAY_KEY,
|
qt.RewardTitle AS ARRAY_KEY,
|
||||||
@@ -67,8 +69,8 @@ function titles()
|
|||||||
DB::Aowow()->query('UPDATE ?_titles SET category = 3 WHERE id IN (53, 64, 120, 121, 122, 129, 139, 140, 141, 142) OR (id >= 158 AND category = 0)');
|
DB::Aowow()->query('UPDATE ?_titles SET category = 3 WHERE id IN (53, 64, 120, 121, 122, 129, 139, 140, 141, 142) OR (id >= 158 AND category = 0)');
|
||||||
|
|
||||||
// update event
|
// update event
|
||||||
if ($assoc = DB::World()->selectCol('SELECT holiday AS ARRAY_KEY, eventEntry FROM game_event WHERE holiday IN (?a)', array_values($titleHoliday)))
|
if ($assoc = DB::World()->selectCol('SELECT holiday AS ARRAY_KEY, eventEntry FROM game_event WHERE holiday IN (?a)', array_values($this->titleHoliday)))
|
||||||
foreach ($titleHoliday as $tId => $hId)
|
foreach ($this->titleHoliday as $tId => $hId)
|
||||||
if (!empty($assoc[$hId]))
|
if (!empty($assoc[$hId]))
|
||||||
DB::Aowow()->query('UPDATE ?_titles SET eventId = ?d WHERE id = ?d', $assoc[$hId], $tId);
|
DB::Aowow()->query('UPDATE ?_titles SET eventId = ?d WHERE id = ?d', $assoc[$hId], $tId);
|
||||||
|
|
||||||
@@ -98,6 +100,7 @@ function titles()
|
|||||||
DB::Aowow()->query('UPDATE ?_titles SET side = 1 WHERE id <= 14 OR id IN (111, 115, 112, 114, 126)');
|
DB::Aowow()->query('UPDATE ?_titles SET side = 1 WHERE id <= 14 OR id IN (111, 115, 112, 114, 126)');
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
18
setup/tools/sqlgen/totemcategory.func.php
Normal file
18
setup/tools/sqlgen/totemcategory.func.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined('AOWOW_REVISION'))
|
||||||
|
die('illegal access');
|
||||||
|
|
||||||
|
if (!CLI)
|
||||||
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
|
SqlGen::register(new class extends SetupScript
|
||||||
|
{
|
||||||
|
use TrDBCcopy;
|
||||||
|
|
||||||
|
protected $command = 'totemcategory';
|
||||||
|
protected $dbcSourceFiles = ['totemcategory'];
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -7,29 +7,33 @@ if (!CLI)
|
|||||||
die('not in cli mode');
|
die('not in cli mode');
|
||||||
|
|
||||||
|
|
||||||
/* deps
|
SqlGen::register(new class extends SetupScript
|
||||||
* access_requirement
|
{
|
||||||
*/
|
use TrCustomData;
|
||||||
|
|
||||||
$customData = array(
|
protected $command = 'zones';
|
||||||
|
|
||||||
|
protected $tblDependancyTC = ['access_requirement'];
|
||||||
|
protected $dbcSourceFiles = ['worldmaptransforms', 'worldmaparea', 'map', 'mapdifficulty', 'areatable', 'lfgdungeons', 'battlemasterlist'];
|
||||||
|
|
||||||
|
private $customData = array(
|
||||||
2257 => ['cuFlags' => 0, 'category' => 0, 'type' => 1], // deeprun tram => type: transit
|
2257 => ['cuFlags' => 0, 'category' => 0, 'type' => 1], // deeprun tram => type: transit
|
||||||
3698 => ['expansion' => 1], // arenas
|
3698 => ['expansion' => 1], // arenas
|
||||||
3702 => ['expansion' => 1],
|
3702 => ['expansion' => 1],
|
||||||
3968 => ['expansion' => 1],
|
3968 => ['expansion' => 1],
|
||||||
4378 => ['expansion' => 2],
|
4378 => ['expansion' => 2],
|
||||||
4406 => ['expansion' => 2],
|
4406 => ['expansion' => 2],
|
||||||
2597 => ['maxPlayer' => 40], // is 5 in battlemasterlist ... dafuque?
|
2597 => ['maxPlayer' => 40], // is 5 in battlemasterlist ... dafuq?
|
||||||
4710 => ['maxPlayer' => 40],
|
4710 => ['maxPlayer' => 40],
|
||||||
3456 => ['parentAreaId' => 65, 'parentX' => 87.3, 'parentY' => 51.1], // has no coordinates set in map.dbc
|
3456 => ['parentAreaId' => 65, 'parentX' => 87.3, 'parentY' => 51.1], // has no coordinates set in map.dbc
|
||||||
3849 => ['parentAreaId' => 3523, 'parentX' => 70.5, 'parentY' => 69.6],
|
3849 => ['parentAreaId' => 3523, 'parentX' => 70.5, 'parentY' => 69.6],
|
||||||
3847 => ['parentAreaId' => 3523, 'parentX' => 71.7, 'parentY' => 55.1],
|
3847 => ['parentAreaId' => 3523, 'parentX' => 71.7, 'parentY' => 55.1],
|
||||||
3848 => ['parentAreaId' => 3523, 'parentX' => 74.3, 'parentY' => 57.8],
|
3848 => ['parentAreaId' => 3523, 'parentX' => 74.3, 'parentY' => 57.8],
|
||||||
3845 => ['parentAreaId' => 3523, 'parentX' => 73.5, 'parentY' => 63.7]
|
3845 => ['parentAreaId' => 3523, 'parentX' => 73.5, 'parentY' => 63.7]
|
||||||
);
|
);
|
||||||
$reqDBC = ['worldmaptransforms', 'worldmaparea', 'map', 'mapdifficulty', 'areatable', 'lfgdungeons', 'battlemasterlist'];
|
|
||||||
|
|
||||||
function zones()
|
public function generate(array $ids = []) : bool
|
||||||
{
|
{
|
||||||
// base query
|
// base query
|
||||||
DB::Aowow()->query('
|
DB::Aowow()->query('
|
||||||
REPLACE INTO ?_zones
|
REPLACE INTO ?_zones
|
||||||
@@ -228,6 +232,7 @@ function zones()
|
|||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
Reference in New Issue
Block a user