*Merge.
--HG-- branch : trunk
This commit is contained in:
@@ -106,6 +106,7 @@ SET(trinityscript_LIB_SRCS
|
||||
scripts/zone/blasted_lands/blasted_lands.cpp
|
||||
scripts/zone/blasted_lands/boss_kruul.cpp
|
||||
scripts/zone/bloodmyst_isle/bloodmyst_isle.cpp
|
||||
scripts/zone/borean_tundra/borean_tundra.cpp
|
||||
scripts/zone/burning_steppes/burning_steppes.cpp
|
||||
scripts/zone/caverns_of_time/dark_portal/def_dark_portal.h
|
||||
scripts/zone/caverns_of_time/dark_portal/instance_dark_portal.cpp
|
||||
|
||||
@@ -140,6 +140,7 @@ scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp \
|
||||
scripts/zone/blasted_lands/blasted_lands.cpp \
|
||||
scripts/zone/blasted_lands/boss_kruul.cpp \
|
||||
scripts/zone/bloodmyst_isle/bloodmyst_isle.cpp \
|
||||
scripts/zone/borean_tundra/borean_tundra.cpp \
|
||||
scripts/zone/burning_steppes/burning_steppes.cpp \
|
||||
scripts/zone/caverns_of_time/dark_portal/boss_aeonus.cpp \
|
||||
scripts/zone/caverns_of_time/dark_portal/boss_chrono_lord_deja.cpp \
|
||||
|
||||
@@ -209,6 +209,9 @@ extern void AddSC_blasted_lands();
|
||||
//Bloodmyst Isle
|
||||
extern void AddSC_bloodmyst_isle();
|
||||
|
||||
//Borean Tundra
|
||||
extern void AddSC_borean_tundra();
|
||||
|
||||
//Burning steppes
|
||||
extern void AddSC_burning_steppes();
|
||||
|
||||
@@ -1415,6 +1418,9 @@ void ScriptsInit()
|
||||
|
||||
//Bloodmyst Isle
|
||||
AddSC_bloodmyst_isle();
|
||||
|
||||
//Borean Tundra
|
||||
AddSC_borean_tundra();
|
||||
|
||||
//Burning steppes
|
||||
AddSC_burning_steppes();
|
||||
|
||||
@@ -1970,7 +1970,10 @@
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Borean Tundra">
|
||||
Name="Borean Tundra">
|
||||
<File
|
||||
RelativePath="..\scripts\zone\borean_tundra\borean_tundra.cpp"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Howling Fjord">
|
||||
|
||||
@@ -1080,6 +1080,9 @@
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Borean Tundra">
|
||||
<File
|
||||
RelativePath="..\scripts\zone\borean_tundra\borean_tundra.cpp"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Howling Fjord">
|
||||
|
||||
@@ -750,6 +750,10 @@
|
||||
<Filter
|
||||
Name="Borean Tundra"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\scripts\zone\borean_tundra\borean_tundra.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Howling Fjord"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
/* ScriptData
|
||||
SDName: Blades_Edge_Mountains
|
||||
SD%Complete: 90
|
||||
SDComment: Quest support: 10503, 10504, 10556, 10609, 10682, 10980. Ogri'la->Skettis Flight. (npc_daranelle needs bit more work before consider complete)
|
||||
SDComment: Quest support: 10503, 10504, 10556, 10609, 10682, 10821, 10980. Ogri'la->Skettis Flight. (npc_daranelle needs bit more work before consider complete)
|
||||
SDCategory: Blade's Edge Mountains
|
||||
EndScriptData */
|
||||
|
||||
@@ -28,10 +28,20 @@ npc_daranelle
|
||||
npc_overseer_nuaar
|
||||
npc_saikkal_the_elder
|
||||
npc_skyguard_handler_irena
|
||||
go_legion_obelisk
|
||||
EndContentData */
|
||||
|
||||
#include "precompiled.h"
|
||||
|
||||
//Support for quest: You're Fired! (10821)
|
||||
bool obelisk_one, obelisk_two, obelisk_three, obelisk_four, obelisk_five;
|
||||
|
||||
#define LEGION_OBELISK_ONE 185193
|
||||
#define LEGION_OBELISK_TWO 185195
|
||||
#define LEGION_OBELISK_THREE 185196
|
||||
#define LEGION_OBELISK_FOUR 185197
|
||||
#define LEGION_OBELISK_FIVE 185198
|
||||
|
||||
/*######
|
||||
## mobs_bladespire_ogre
|
||||
######*/
|
||||
@@ -391,6 +401,48 @@ bool GossipSelect_npc_skyguard_handler_irena(Player *player, Creature *_Creature
|
||||
return true;
|
||||
}
|
||||
|
||||
/*######
|
||||
## go_legion_obelisk
|
||||
######*/
|
||||
|
||||
bool GOHello_go_legion_obelisk(Player *player, GameObject* _GO)
|
||||
{
|
||||
if ( player->GetQuestStatus(10821) == QUEST_STATUS_INCOMPLETE )
|
||||
{
|
||||
switch( _GO->GetEntry() )
|
||||
{
|
||||
case LEGION_OBELISK_ONE:
|
||||
obelisk_one = true;
|
||||
break;
|
||||
case LEGION_OBELISK_TWO:
|
||||
obelisk_two = true;
|
||||
break;
|
||||
case LEGION_OBELISK_THREE:
|
||||
obelisk_three = true;
|
||||
break;
|
||||
case LEGION_OBELISK_FOUR:
|
||||
obelisk_four = true;
|
||||
break;
|
||||
case LEGION_OBELISK_FIVE:
|
||||
obelisk_five = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if ( obelisk_one == true && obelisk_two == true && obelisk_three == true && obelisk_four == true && obelisk_five == true )
|
||||
{
|
||||
_GO->SummonCreature(19963,2943.40f,4778.20f,284.49f,0.94f,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,120000);
|
||||
//reset global var
|
||||
obelisk_one = false;
|
||||
obelisk_two = false;
|
||||
obelisk_three = false;
|
||||
obelisk_four = false;
|
||||
obelisk_five = false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*######
|
||||
## AddSC
|
||||
######*/
|
||||
@@ -425,6 +477,11 @@ void AddSC_blades_edge_mountains()
|
||||
newscript->pGossipHello = &GossipHello_npc_saikkal_the_elder;
|
||||
newscript->pGossipSelect = &GossipSelect_npc_saikkal_the_elder;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="go_legion_obelisk";
|
||||
newscript->pGOHello = &GOHello_go_legion_obelisk;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="npc_skyguard_handler_irena";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2006 - 2008 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: Borean_Tundra
|
||||
SD%Complete: 100
|
||||
SDComment:
|
||||
SDCategory: Borean Tundra
|
||||
EndScriptData */
|
||||
|
||||
/* ContentData
|
||||
npc_tiare
|
||||
npc_surristrasz
|
||||
EndContentData */
|
||||
|
||||
#include "precompiled.h"
|
||||
|
||||
/*######
|
||||
## npc_tiare
|
||||
######*/
|
||||
|
||||
#define GOSSIP_ITEM_TELEPORT "Teleport me to Amber Ledge, please."
|
||||
|
||||
bool GossipHello_npc_tiare(Player *player, Creature *_Creature)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM(0, GOSSIP_ITEM_TELEPORT, GOSSIP_SENDER_MAIN, GOSSIP_OPTION_GOSSIP);
|
||||
player->SEND_GOSSIP_MENU(_Creature->GetNpcTextId(), _Creature->GetGUID());
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GossipSelect_npc_tiare(Player *player, Creature *_Creature, uint32 sender, uint32 action)
|
||||
{
|
||||
if (action == GOSSIP_OPTION_GOSSIP)
|
||||
{
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
player->CastSpell(player,50135,true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/*######
|
||||
## npc_surristrasz
|
||||
######*/
|
||||
|
||||
#define GOSSIP_ITEM_FREE_FLIGHT "I'd like passage to the Transitus Shield."
|
||||
#define GOSSIP_ITEM_FLIGHT "May I use a drake to fly elsewhere?"
|
||||
|
||||
bool GossipHello_npc_surristrasz(Player *player, Creature *_Creature)
|
||||
{
|
||||
if (_Creature->isQuestGiver())
|
||||
player->PrepareQuestMenu(_Creature->GetGUID());
|
||||
|
||||
if (_Creature->isTaxi())
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM(0, GOSSIP_ITEM_FREE_FLIGHT, GOSSIP_SENDER_MAIN, GOSSIP_OPTION_GOSSIP);
|
||||
player->ADD_GOSSIP_ITEM(2, GOSSIP_ITEM_FLIGHT, GOSSIP_SENDER_MAIN, GOSSIP_OPTION_TAXIVENDOR);
|
||||
}
|
||||
|
||||
player->SEND_GOSSIP_MENU(_Creature->GetNpcTextId(), _Creature->GetGUID());
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GossipSelect_npc_surristrasz(Player *player, Creature *_Creature, uint32 sender, uint32 action)
|
||||
{
|
||||
if (action == GOSSIP_OPTION_GOSSIP)
|
||||
{
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
player->CastSpell(player,46064,true); //TaxiPath 795 (amber to coldarra)
|
||||
}
|
||||
if (action == GOSSIP_OPTION_TAXIVENDOR)
|
||||
{
|
||||
player->GetSession()->SendTaxiMenu(_Creature);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void AddSC_borean_tundra()
|
||||
{
|
||||
Script *newscript;
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "npc_tiare";
|
||||
newscript->pGossipHello = &GossipHello_npc_tiare;
|
||||
newscript->pGossipSelect = &GossipSelect_npc_tiare;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "npc_surristrasz";
|
||||
newscript->pGossipHello = &GossipHello_npc_surristrasz;
|
||||
newscript->pGossipSelect = &GossipSelect_npc_surristrasz;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
+1
-1
@@ -2491,7 +2491,7 @@ void Player::InitStatsForLevel(bool reapplyMods)
|
||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE ); // must be set
|
||||
|
||||
// cleanup player flags (will be re-applied if need at aura load), to avoid have ghost flag without ghost aura, for example.
|
||||
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK | PLAYER_FLAGS_DND | PLAYER_FLAGS_GM | PLAYER_FLAGS_GHOST);
|
||||
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK | PLAYER_FLAGS_DND | PLAYER_FLAGS_GM | PLAYER_FLAGS_GHOST | PLAYER_ALLOW_ONLY_ABILITY);
|
||||
|
||||
RemoveStandFlags(UNIT_STAND_FLAGS_ALL); // one form stealth modified bytes
|
||||
RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP | UNIT_BYTE2_FLAG_SANCTUARY);
|
||||
|
||||
+2
-3
@@ -400,9 +400,8 @@ enum PlayerFlags
|
||||
PLAYER_FLAGS_UNK21 = 0x00100000,
|
||||
PLAYER_FLAGS_UNK22 = 0x00200000,
|
||||
PLAYER_FLAGS_UNK23 = 0x00400000,
|
||||
PLAYER_FLAGS_UNK24 = 0x00800000, // disabled all abilitys on tab except autoattack
|
||||
PLAYER_FLAGS_UNK25 = 0x01000000, // disabled all melee ability on tab include autoattack
|
||||
|
||||
PLAYER_ALLOW_ONLY_ABILITY = 0x00800000, // used by bladestorm and killing spree
|
||||
PLAYER_FLAGS_UNK25 = 0x01000000 // disabled all melee ability on tab include autoattack
|
||||
};
|
||||
|
||||
// used for PLAYER__FIELD_KNOWN_TITLES field (uint64), (1<<bit_index) without (-1)
|
||||
|
||||
+42
-19
@@ -3554,6 +3554,9 @@ uint8 Spell::CanCast(bool strict)
|
||||
// check cooldowns to prevent cheating
|
||||
if(m_caster->GetTypeId()==TYPEID_PLAYER && ((Player*)m_caster)->HasSpellCooldown(m_spellInfo->Id))
|
||||
{
|
||||
//can cast triggered (by aura only?) spells while have this flag
|
||||
if (!m_IsTriggeredSpell && ((Player*)m_caster)->HasFlag(PLAYER_FLAGS, PLAYER_ALLOW_ONLY_ABILITY))
|
||||
return SPELL_FAILED_SPELL_IN_PROGRESS;
|
||||
if(m_triggeredByAuraSpell)
|
||||
return SPELL_FAILED_DONT_REPORT;
|
||||
else
|
||||
@@ -3591,17 +3594,34 @@ uint8 Spell::CanCast(bool strict)
|
||||
}
|
||||
}
|
||||
|
||||
// caster state requirements
|
||||
if(m_spellInfo->CasterAuraState && !m_caster->HasAuraState(AuraState(m_spellInfo->CasterAuraState)))
|
||||
return SPELL_FAILED_CASTER_AURASTATE;
|
||||
if(m_spellInfo->CasterAuraStateNot && m_caster->HasAuraState(AuraState(m_spellInfo->CasterAuraStateNot)))
|
||||
return SPELL_FAILED_CASTER_AURASTATE;
|
||||
bool reqAuraState=true;
|
||||
Unit::AuraList const& stateAuras = m_caster->GetAurasByType(SPELL_AURA_ABILITY_IGNORE_AURASTATE);
|
||||
for(Unit::AuraList::const_iterator j = stateAuras.begin();j != stateAuras.end(); ++j)
|
||||
{
|
||||
if((*j)->isAffectedOnSpell(m_spellInfo))
|
||||
{
|
||||
reqAuraState=false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (reqAuraState)
|
||||
{
|
||||
// caster state requirements
|
||||
if(m_spellInfo->CasterAuraState && !m_caster->HasAuraState(AuraState(m_spellInfo->CasterAuraState)))
|
||||
return SPELL_FAILED_CASTER_AURASTATE;
|
||||
if(m_spellInfo->CasterAuraStateNot && m_caster->HasAuraState(AuraState(m_spellInfo->CasterAuraStateNot)))
|
||||
return SPELL_FAILED_CASTER_AURASTATE;
|
||||
|
||||
if(m_spellInfo->casterAuraSpell && !m_caster->HasAura(m_spellInfo->casterAuraSpell))
|
||||
return SPELL_FAILED_CASTER_AURASTATE;
|
||||
if(m_spellInfo->excludeCasterAuraSpell && m_caster->HasAura(m_spellInfo->excludeCasterAuraSpell))
|
||||
return SPELL_FAILED_CASTER_AURASTATE;
|
||||
|
||||
if(m_caster->isInCombat() && IsNonCombatSpell(m_spellInfo))
|
||||
return SPELL_FAILED_AFFECTING_COMBAT;
|
||||
}
|
||||
|
||||
// Caster aura req check if need
|
||||
if(m_spellInfo->casterAuraSpell && !m_caster->HasAura(m_spellInfo->casterAuraSpell))
|
||||
return SPELL_FAILED_CASTER_AURASTATE;
|
||||
if(m_spellInfo->excludeCasterAuraSpell && m_caster->HasAura(m_spellInfo->excludeCasterAuraSpell))
|
||||
return SPELL_FAILED_CASTER_AURASTATE;
|
||||
|
||||
// cancel autorepeat spells if cast start when moving
|
||||
// (not wand currently autorepeat cast delayed to moving stop anyway in spell update code)
|
||||
@@ -3617,20 +3637,23 @@ uint8 Spell::CanCast(bool strict)
|
||||
|
||||
if(target)
|
||||
{
|
||||
// target state requirements (not allowed state), apply to self also
|
||||
if(m_spellInfo->TargetAuraStateNot && target->HasAuraState(AuraState(m_spellInfo->TargetAuraStateNot)))
|
||||
return SPELL_FAILED_TARGET_AURASTATE;
|
||||
if (reqAuraState)
|
||||
{
|
||||
// target state requirements (not allowed state), apply to self also
|
||||
if(m_spellInfo->TargetAuraStateNot && target->HasAuraState(AuraState(m_spellInfo->TargetAuraStateNot)))
|
||||
return SPELL_FAILED_TARGET_AURASTATE;
|
||||
|
||||
// Target aura req check if need
|
||||
if(m_spellInfo->targetAuraSpell && !target->HasAura(m_spellInfo->targetAuraSpell))
|
||||
return SPELL_FAILED_CASTER_AURASTATE;
|
||||
if(m_spellInfo->excludeTargetAuraSpell && target->HasAura(m_spellInfo->excludeTargetAuraSpell))
|
||||
return SPELL_FAILED_CASTER_AURASTATE;
|
||||
if(m_spellInfo->targetAuraSpell && !target->HasAura(m_spellInfo->targetAuraSpell))
|
||||
return SPELL_FAILED_TARGET_AURASTATE;
|
||||
|
||||
if(m_spellInfo->excludeTargetAuraSpell && target->HasAura(m_spellInfo->excludeTargetAuraSpell))
|
||||
return SPELL_FAILED_TARGET_AURASTATE;
|
||||
}
|
||||
|
||||
if(target != m_caster)
|
||||
{
|
||||
// target state requirements (apply to non-self only), to allow cast affects to self like Dirty Deeds
|
||||
if(m_spellInfo->TargetAuraState && !target->HasAuraState(AuraState(m_spellInfo->TargetAuraState)))
|
||||
if(reqAuraState && m_spellInfo->TargetAuraState && !target->HasAuraState(AuraState(m_spellInfo->TargetAuraState)))
|
||||
return SPELL_FAILED_TARGET_AURASTATE;
|
||||
|
||||
// Not allow casting on flying player
|
||||
|
||||
@@ -306,7 +306,7 @@ enum AuraType
|
||||
SPELL_AURA_259 = 259,
|
||||
SPELL_AURA_SCREEN_EFFECT = 260,
|
||||
SPELL_AURA_PHASE = 261,
|
||||
SPELL_AURA_262 = 262,
|
||||
SPELL_AURA_ABILITY_IGNORE_AURASTATE = 262,
|
||||
SPELL_AURA_ALLOW_ONLY_ABILITY = 263,
|
||||
SPELL_AURA_264 = 264,
|
||||
SPELL_AURA_265 = 265,
|
||||
|
||||
+20
-2
@@ -316,8 +316,8 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
|
||||
&Aura::HandleNULL, //259 corrupt healing over time spell
|
||||
&Aura::HandleNoImmediateEffect, //260 SPELL_AURA_SCREEN_EFFECT (miscvalue = id in ScreenEffect.dbc) not required any code
|
||||
&Aura::HandlePhase, //261 SPELL_AURA_PHASE undetactable invisibility? implemented in Unit::isVisibleForOrDetect
|
||||
&Aura::HandleNULL, //262
|
||||
&Aura::HandleNULL, //263 SPELL_AURA_ALLOW_ONLY_ABILITY player can use only abilities set in SpellClassMask
|
||||
&Aura::HandleNoImmediateEffect, //262 SPELL_AURA_ABILITY_IGNORE_AURASTATE implemented in spell::cancast
|
||||
&Aura::HandleAuraAllowOnlyAbility, //263 SPELL_AURA_ALLOW_ONLY_ABILITY player can use only abilities set in SpellClassMask
|
||||
&Aura::HandleNULL, //264 unused
|
||||
&Aura::HandleNULL, //265 unused
|
||||
&Aura::HandleNULL, //266 unused
|
||||
@@ -4967,6 +4967,23 @@ void Aura::HandleNoReagentUseAura(bool Apply, bool Real)
|
||||
/*** OTHERS ***/
|
||||
/*********************************************************/
|
||||
|
||||
void Aura::HandleAuraAllowOnlyAbility(bool apply, bool Real)
|
||||
{
|
||||
if(!Real)
|
||||
return;
|
||||
|
||||
if(!apply && m_target->HasAuraType(SPELL_AURA_ALLOW_ONLY_ABILITY))
|
||||
return;
|
||||
|
||||
if(m_target->GetTypeId()==TYPEID_PLAYER)
|
||||
{
|
||||
if (apply)
|
||||
m_target->SetFlag(PLAYER_FLAGS, PLAYER_ALLOW_ONLY_ABILITY);
|
||||
else
|
||||
m_target->RemoveFlag(PLAYER_FLAGS, PLAYER_ALLOW_ONLY_ABILITY);
|
||||
}
|
||||
}
|
||||
|
||||
void Aura::HandleShapeshiftBoosts(bool apply)
|
||||
{
|
||||
uint32 spellId = 0;
|
||||
@@ -6538,3 +6555,4 @@ void Aura::HandlePhase(bool apply, bool Real)
|
||||
if(m_target->GetVisibility()!=VISIBILITY_OFF)
|
||||
m_target->SetVisibility(m_target->GetVisibility());
|
||||
}
|
||||
|
||||
|
||||
@@ -305,6 +305,7 @@ class TRINITY_DLL_SPEC Aura
|
||||
Unit* GetTriggerTarget() const;
|
||||
|
||||
// add/remove SPELL_AURA_MOD_SHAPESHIFT (36) linked auras
|
||||
void HandleAuraAllowOnlyAbility(bool apply, bool Real);
|
||||
void HandleShapeshiftBoosts(bool apply);
|
||||
|
||||
// Allow Apply Aura Handler to modify and access m_AuraDRGroup
|
||||
|
||||
Reference in New Issue
Block a user