Scripts/Commands: Add ".list auras id <aura id>" and ".list auras name <name part>" subcommands
Port From (https://github.com/TrinityCore/TrinityCore/commit/8d7e152d2805053a9808f6b05605c61a1554339c)
This commit is contained in:
@@ -22,6 +22,7 @@ using Game.DataStorage;
|
|||||||
using Game.Entities;
|
using Game.Entities;
|
||||||
using Game.Maps;
|
using Game.Maps;
|
||||||
using Game.Spells;
|
using Game.Spells;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Game.Chat.Commands
|
namespace Game.Chat.Commands
|
||||||
@@ -29,51 +30,6 @@ namespace Game.Chat.Commands
|
|||||||
[CommandGroup("list")]
|
[CommandGroup("list")]
|
||||||
class ListCommands
|
class ListCommands
|
||||||
{
|
{
|
||||||
[Command("auras", RBACPermissions.CommandListAuras)]
|
|
||||||
static bool HandleListAurasCommand(CommandHandler handler)
|
|
||||||
{
|
|
||||||
Unit unit = handler.GetSelectedUnit();
|
|
||||||
if (!unit)
|
|
||||||
{
|
|
||||||
handler.SendSysMessage(CypherStrings.SelectCharOrCreature);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
string talentStr = handler.GetCypherString(CypherStrings.Talent);
|
|
||||||
string passiveStr = handler.GetCypherString(CypherStrings.Passive);
|
|
||||||
|
|
||||||
var auras = unit.GetAppliedAuras();
|
|
||||||
handler.SendSysMessage(CypherStrings.CommandTargetListauras, auras.Count);
|
|
||||||
foreach (var (_, aurApp) in auras)
|
|
||||||
{
|
|
||||||
Aura aura = aurApp.GetBase();
|
|
||||||
string name = aura.GetSpellInfo().SpellName[handler.GetSessionDbcLocale()];
|
|
||||||
bool talent = aura.GetSpellInfo().HasAttribute(SpellCustomAttributes.IsTalent);
|
|
||||||
|
|
||||||
string ss_name = "|cffffffff|Hspell:" + aura.GetId() + "|h[" + name + "]|h|r";
|
|
||||||
|
|
||||||
handler.SendSysMessage(CypherStrings.CommandTargetAuradetail, aura.GetId(), (handler.GetSession() != null ? ss_name : name),
|
|
||||||
aurApp.GetEffectMask(), aura.GetCharges(), aura.GetStackAmount(), aurApp.GetSlot(),
|
|
||||||
aura.GetDuration(), aura.GetMaxDuration(), (aura.IsPassive() ? passiveStr : ""),
|
|
||||||
(talent ? talentStr : ""), aura.GetCasterGUID().IsPlayer() ? "player" : "creature",
|
|
||||||
aura.GetCasterGUID().ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
for (ushort i = 0; i < (int)AuraType.Total; ++i)
|
|
||||||
{
|
|
||||||
var auraList = unit.GetAuraEffectsByType((AuraType)i);
|
|
||||||
if (auraList.Empty())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
handler.SendSysMessage(CypherStrings.CommandTargetListauratype, auraList.Count, i);
|
|
||||||
|
|
||||||
foreach (var effect in auraList)
|
|
||||||
handler.SendSysMessage(CypherStrings.CommandTargetAurasimple, effect.GetId(), effect.GetEffIndex(), effect.GetAmount());
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Command("creature", RBACPermissions.CommandListCreature, true)]
|
[Command("creature", RBACPermissions.CommandListCreature, true)]
|
||||||
static bool HandleListCreatureCommand(CommandHandler handler, uint creatureId, uint? countArg)
|
static bool HandleListCreatureCommand(CommandHandler handler, uint creatureId, uint? countArg)
|
||||||
{
|
{
|
||||||
@@ -634,5 +590,99 @@ namespace Game.Chat.Commands
|
|||||||
AreaTableRecord zoneEntry = CliDB.AreaTableStorage.LookupByKey(zoneId);
|
AreaTableRecord zoneEntry = CliDB.AreaTableStorage.LookupByKey(zoneId);
|
||||||
return zoneEntry != null ? zoneEntry.AreaName[locale] : "<unknown zone>";
|
return zoneEntry != null ? zoneEntry.AreaName[locale] : "<unknown zone>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[CommandGroup("auras")]
|
||||||
|
class ListAuraCommands
|
||||||
|
{
|
||||||
|
[Command("", RBACPermissions.CommandListAuras)]
|
||||||
|
static bool HandleListAllAurasCommand(CommandHandler handler)
|
||||||
|
{
|
||||||
|
return ListAurasCommand(handler, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("id", RBACPermissions.CommandListAuras)]
|
||||||
|
static bool HandleListAurasByIdCommand(CommandHandler handler, uint spellId)
|
||||||
|
{
|
||||||
|
return ListAurasCommand(handler, spellId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("name", RBACPermissions.CommandListAuras)]
|
||||||
|
static bool HandleListAurasByNameCommand(CommandHandler handler, string namePart)
|
||||||
|
{
|
||||||
|
return ListAurasCommand(handler, null, namePart);
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool ListAurasCommand(CommandHandler handler, uint? spellId, string namePart)
|
||||||
|
{
|
||||||
|
Unit unit = handler.GetSelectedUnit();
|
||||||
|
if (!unit)
|
||||||
|
{
|
||||||
|
handler.SendSysMessage(CypherStrings.SelectCharOrCreature);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
string talentStr = handler.GetCypherString(CypherStrings.Talent);
|
||||||
|
string passiveStr = handler.GetCypherString(CypherStrings.Passive);
|
||||||
|
|
||||||
|
var auras = unit.GetAppliedAuras();
|
||||||
|
handler.SendSysMessage(CypherStrings.CommandTargetListauras, auras.Count);
|
||||||
|
foreach (var (_, aurApp) in auras)
|
||||||
|
{
|
||||||
|
Aura aura = aurApp.GetBase();
|
||||||
|
string name = aura.GetSpellInfo().SpellName[handler.GetSessionDbcLocale()];
|
||||||
|
bool talent = aura.GetSpellInfo().HasAttribute(SpellCustomAttributes.IsTalent);
|
||||||
|
|
||||||
|
if (!ShouldListAura(aura.GetSpellInfo(), spellId, namePart, handler.GetSessionDbcLocale()))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
string ss_name = "|cffffffff|Hspell:" + aura.GetId() + "|h[" + name + "]|h|r";
|
||||||
|
|
||||||
|
handler.SendSysMessage(CypherStrings.CommandTargetAuradetail, aura.GetId(), (handler.GetSession() != null ? ss_name : name),
|
||||||
|
aurApp.GetEffectMask(), aura.GetCharges(), aura.GetStackAmount(), aurApp.GetSlot(),
|
||||||
|
aura.GetDuration(), aura.GetMaxDuration(), (aura.IsPassive() ? passiveStr : ""),
|
||||||
|
(talent ? talentStr : ""), aura.GetCasterGUID().IsPlayer() ? "player" : "creature",
|
||||||
|
aura.GetCasterGUID().ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ushort i = 0; i < (int)AuraType.Total; ++i)
|
||||||
|
{
|
||||||
|
var auraList = unit.GetAuraEffectsByType((AuraType)i);
|
||||||
|
if (auraList.Empty())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
bool sizeLogged = false;
|
||||||
|
|
||||||
|
foreach (var effect in auraList)
|
||||||
|
{
|
||||||
|
if (!ShouldListAura(effect.GetSpellInfo(), spellId, namePart, handler.GetSessionDbcLocale()))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!sizeLogged)
|
||||||
|
{
|
||||||
|
sizeLogged = true;
|
||||||
|
handler.SendSysMessage(CypherStrings.CommandTargetListauratype, auraList.Count, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
handler.SendSysMessage(CypherStrings.CommandTargetAurasimple, effect.GetId(), effect.GetEffIndex(), effect.GetAmount());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool ShouldListAura(SpellInfo spellInfo, uint? spellId, string namePart, Locale locale)
|
||||||
|
{
|
||||||
|
if (spellId.HasValue)
|
||||||
|
return spellInfo.Id == spellId.Value;
|
||||||
|
|
||||||
|
if (!namePart.IsEmpty())
|
||||||
|
{
|
||||||
|
string name = spellInfo.SpellName[locale];
|
||||||
|
return name.Like(namePart);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user