mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
Spells/DetailPage
* expand used by - tabs to show spells from timed action lists and smart_script casts from gameobjects in general
This commit is contained in:
@@ -616,6 +616,8 @@ class SpellPage extends GenericPage
|
|||||||
['onUseSpell', $this->subject->id], ['onSuccessSpell', $this->subject->id],
|
['onUseSpell', $this->subject->id], ['onSuccessSpell', $this->subject->id],
|
||||||
['auraSpell', $this->subject->id], ['triggeredSpell', $this->subject->id]
|
['auraSpell', $this->subject->id], ['triggeredSpell', $this->subject->id]
|
||||||
);
|
);
|
||||||
|
if ($_ = $this->ubSmartScript(TYPE_OBJECT))
|
||||||
|
$conditions[] = ['id', $_];
|
||||||
|
|
||||||
$ubObjects = new GameObjectList($conditions);
|
$ubObjects = new GameObjectList($conditions);
|
||||||
if (!$ubObjects->error)
|
if (!$ubObjects->error)
|
||||||
@@ -827,13 +829,12 @@ class SpellPage extends GenericPage
|
|||||||
}
|
}
|
||||||
|
|
||||||
// tab: used by - creature
|
// tab: used by - creature
|
||||||
// SMART_SCRIPT_TYPE_CREATURE = 0; SMART_ACTION_CAST = 11; SMART_ACTION_ADD_AURA = 75; SMART_ACTION_INVOKER_CAST = 85; SMART_ACTION_CROSS_CAST = 86
|
|
||||||
$conditions = array(
|
$conditions = array(
|
||||||
'OR',
|
'OR',
|
||||||
['spell1', $this->typeId], ['spell2', $this->typeId], ['spell3', $this->typeId], ['spell4', $this->typeId],
|
['spell1', $this->typeId], ['spell2', $this->typeId], ['spell3', $this->typeId], ['spell4', $this->typeId],
|
||||||
['spell5', $this->typeId], ['spell6', $this->typeId], ['spell7', $this->typeId], ['spell8', $this->typeId]
|
['spell5', $this->typeId], ['spell6', $this->typeId], ['spell7', $this->typeId], ['spell8', $this->typeId]
|
||||||
);
|
);
|
||||||
if ($_ = DB::World()->selectCol('SELECT entryOrGUID FROM smart_scripts WHERE entryorguid > 0 AND source_type = 0 AND action_type IN (11, 75, 85, 86) AND action_param1 = ?d', $this->typeId))
|
if ($_ = $this->ubSmartScript(TYPE_NPC))
|
||||||
$conditions[] = ['id', $_];
|
$conditions[] = ['id', $_];
|
||||||
|
|
||||||
$ubCreature = new CreatureList($conditions);
|
$ubCreature = new CreatureList($conditions);
|
||||||
@@ -2159,6 +2160,40 @@ class SpellPage extends GenericPage
|
|||||||
|
|
||||||
return $effects;
|
return $effects;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function ubSmartScript(int $type) : array
|
||||||
|
{
|
||||||
|
$src = -1;
|
||||||
|
if ($type == TYPE_OBJECT)
|
||||||
|
$src = 1;
|
||||||
|
else if ($type == TYPE_NPC)
|
||||||
|
$src = 0;
|
||||||
|
else
|
||||||
|
return [];
|
||||||
|
|
||||||
|
/*
|
||||||
|
SMART_SCRIPT_TYPE_CREATURE = 0 => SMART_ACTION_CAST = 11; SMART_ACTION_ADD_AURA = 75; SMART_ACTION_INVOKER_CAST = 85; SMART_ACTION_CROSS_CAST = 86
|
||||||
|
SMART_SCRIPT_TYPE_TIMED_ACTIONLIST = 9 => SMART_ACTION_CALL_TIMED_ACTIONLIST = 80; SMART_ACTION_CALL_RANDOM_TIMED_ACTIONLIST = 87; SMART_ACTION_CALL_RANDOM_RANGE_TIMED_ACTIONLIST = 88
|
||||||
|
*/
|
||||||
|
|
||||||
|
$ids = [];
|
||||||
|
if ($smartS = DB::World()->selectCol('SELECT entryOrGUID AS ARRAY_KEY, source_type FROM smart_scripts WHERE entryorguid > 0 AND source_type IN (?d, 9) AND action_type IN (11, 75, 85, 86) AND action_param1 = ?d', $type, $this->typeId))
|
||||||
|
{
|
||||||
|
// filter for timed action list
|
||||||
|
if ($tal = array_filter($smartS, function($x) {return $x == 9;}))
|
||||||
|
{
|
||||||
|
if ($talIds = DB::World()->selectCol('SELECT entryOrGUID FROM smart_scripts WHERE entryorguid > 0 AND source_type = ?d AND action_type IN (80, 87, 88) AND (action_param1 IN (?a) OR action_param2 IN (?a) OR action_param3 IN (?a) OR action_param4 IN (?a) OR action_param5 IN (?a) OR action_param6 IN (?a))', $type, array_keys($tal), array_keys($tal), array_keys($tal), array_keys($tal), array_keys($tal), array_keys($tal)))
|
||||||
|
$conditions[] = ['id', $talIds];
|
||||||
|
|
||||||
|
$smartS = array_diff($smartS, $tal);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($smartS);
|
||||||
|
$ids = $smartS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $ids;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user