Added .modify power command allowing to change any power as long as player class can use it

This commit is contained in:
hondacrx
2017-11-13 13:36:51 -05:00
parent 98d0e6f227
commit a5f7add4d6
4 changed files with 68 additions and 1 deletions
@@ -748,6 +748,7 @@ namespace Framework.Constants
CommandGoOffset = 852,
CommandReloadConversationTemplate = 853,
CommandDebugConversation = 854,
ModifyPower = 867,
// Custom Permissions 1000+
Max
+4 -1
View File
@@ -1266,7 +1266,10 @@ namespace Framework.Constants
CreatureNotAiEnabled = 11015,
SelectPlayerOrPet = 11016,
ShutdownDelayed = 11017,
ShutdownCancelled = 11018
ShutdownCancelled = 11018,
YouChangePower = 11019,
YourPowerChanged = 11020,
InvalidPowerName = 11021
}
public enum BroadcastTextIds
@@ -516,6 +516,53 @@ namespace Game.Chat
return true;
}
[Command("power", RBACPermissions.ModifyPower)]
static bool HandleModifyPowerCommand(StringArguments args, CommandHandler handler)
{
if (args.Empty())
return false;
Player target = handler.getSelectedPlayerOrSelf();
if (!target)
{
handler.SendSysMessage(CypherStrings.NoCharSelected);
return false;
}
if (handler.HasLowerSecurity(target, ObjectGuid.Empty))
return false;
string powerTypeToken = args.NextString();
if (powerTypeToken.IsEmpty())
return false;
PowerTypeRecord powerType = Global.DB2Mgr.GetPowerTypeByName(powerTypeToken);
if (powerType == null)
{
handler.SendSysMessage(CypherStrings.InvalidPowerName);
return false;
}
if (target.GetPowerIndex(powerType.PowerTypeEnum) == (int)PowerType.Max)
{
handler.SendSysMessage(CypherStrings.InvalidPowerName);
return false;
}
int powerAmount = args.NextInt32();
if (powerAmount < 1)
{
handler.SendSysMessage(CypherStrings.BadValue);
return false;
}
NotifyModification(handler, target, CypherStrings.YouChangePower, CypherStrings.YourPowerChanged, powerType.PowerTypeToken, powerAmount, powerAmount);
powerAmount *= powerType.UIModifier;
target.SetMaxPower(powerType.PowerTypeEnum, powerAmount);
target.SetPower(powerType.PowerTypeEnum, powerAmount);
return true;
}
[Command("standstate", RBACPermissions.CommandModifyStandstate)]
static bool HandleModifyStandStateCommand(StringArguments args, CommandHandler handler)
{
+16
View File
@@ -1106,6 +1106,22 @@ namespace Game.DataStorage
return _powerTypes[power];
}
public PowerTypeRecord GetPowerTypeByName(string name)
{
foreach (PowerTypeRecord powerType in CliDB.PowerTypeStorage.Values)
{
string powerName = powerType.PowerTypeToken;
if (powerName.ToLower() == name)
return powerType;
powerName = powerName.Replace("_", "");
if (powerName == name)
return powerType;
}
return null;
}
public List<RewardPackXItemRecord> GetRewardPackItemsByRewardID(uint rewardPackID)
{
return _rewardPackItems.LookupByKey(rewardPackID);