static bool HandleModifyFactionCommand(StringArguments args, CommandHandler handler) { string pfactionid = handler.extractKeyFromLink(args, "Hfaction"); Creature target = handler.getSelectedCreature(); if (!target) { handler.SendSysMessage(CypherStrings.SelectCreature); return(false); } if (!uint.TryParse(pfactionid, out uint factionid)) { uint _factionid = target.GetFaction(); uint _flag = target.m_unitData.Flags; ulong _npcflag = (ulong)target.m_unitData.NpcFlags[0] << 32 | target.m_unitData.NpcFlags[1]; uint _dyflag = target.m_objectData.DynamicFlags; handler.SendSysMessage(CypherStrings.CurrentFaction, target.GetGUID().ToString(), _factionid, _flag, _npcflag, _dyflag); return(true); } if (!uint.TryParse(args.NextString(), out uint flag)) { flag = target.m_unitData.Flags; } if (!ulong.TryParse(args.NextString(), out ulong npcflag)) { npcflag = (ulong)target.m_unitData.NpcFlags[0] << 32 | target.m_unitData.NpcFlags[1]; } if (!uint.TryParse(args.NextString(), out uint dyflag)) { dyflag = target.m_objectData.DynamicFlags; } if (!CliDB.FactionTemplateStorage.ContainsKey(factionid)) { handler.SendSysMessage(CypherStrings.WrongFaction, factionid); return(false); } handler.SendSysMessage(CypherStrings.YouChangeFaction, target.GetGUID().ToString(), factionid, flag, npcflag, dyflag); target.SetFaction(factionid); target.SetUnitFlags((UnitFlags)flag); target.SetNpcFlags((NPCFlags)(npcflag & 0xFFFFFFFF)); target.SetNpcFlags2((NPCFlags2)(npcflag >> 32)); target.SetDynamicFlags((UnitDynFlags)dyflag); return(true); }
static bool HandleModifyFactionCommand(StringArguments args, CommandHandler handler) { string pfactionid = handler.extractKeyFromLink(args, "Hfaction"); Creature target = handler.getSelectedCreature(); if (!target) { handler.SendSysMessage(CypherStrings.SelectCreature); return(false); } if (!uint.TryParse(pfactionid, out uint factionid)) { uint _factionid = target.getFaction(); uint _flag = target.GetUInt32Value(UnitFields.Flags); ulong _npcflag = target.GetUInt64Value(UnitFields.NpcFlags); uint _dyflag = target.GetUInt32Value(ObjectFields.DynamicFlags); handler.SendSysMessage(CypherStrings.CurrentFaction, target.GetGUID().ToString(), _factionid, _flag, _npcflag, _dyflag); return(true); } if (!uint.TryParse(args.NextString(), out uint flag)) { flag = target.GetUInt32Value(UnitFields.Flags); } if (!ulong.TryParse(args.NextString(), out ulong npcflag)) { npcflag = target.GetUInt64Value(UnitFields.NpcFlags); } if (!uint.TryParse(args.NextString(), out uint dyflag)) { dyflag = target.GetUInt32Value(ObjectFields.DynamicFlags); } if (!CliDB.FactionTemplateStorage.ContainsKey(factionid)) { handler.SendSysMessage(CypherStrings.WrongFaction, factionid); return(false); } handler.SendSysMessage(CypherStrings.YouChangeFaction, target.GetGUID().ToString(), factionid, flag, npcflag, dyflag); target.SetFaction(factionid); target.SetUInt32Value(UnitFields.Flags, flag); target.SetUInt64Value(UnitFields.NpcFlags, npcflag); target.SetUInt32Value(ObjectFields.DynamicFlags, dyflag); return(true); }
static bool HandleCastTargetCommad(StringArguments args, CommandHandler handler) { Creature caster = handler.getSelectedCreature(); if (!caster) { handler.SendSysMessage(CypherStrings.SelectCharOrCreature); return(false); } if (!caster.GetVictim()) { handler.SendSysMessage(CypherStrings.SelectedTargetNotHaveVictim); return(false); } // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form uint spellId = handler.extractSpellIdFromLink(args); if (spellId == 0) { return(false); } if (CheckSpellExistsAndIsValid(handler, spellId)) { return(false); } string triggeredStr = args.NextString(); if (!string.IsNullOrEmpty(triggeredStr)) { if (triggeredStr != "triggered") { return(false); } } bool triggered = (triggeredStr != null); caster.CastSpell(caster.GetVictim(), spellId, triggered); return(true); }
static bool HandlePetCreateCommand(StringArguments args, CommandHandler handler) { Player player = handler.GetSession().GetPlayer(); Creature creatureTarget = handler.getSelectedCreature(); if (!creatureTarget || creatureTarget.IsPet() || creatureTarget.IsTypeId(TypeId.Player)) { handler.SendSysMessage(CypherStrings.SelectCreature); return(false); } CreatureTemplate creatureTemplate = creatureTarget.GetCreatureTemplate(); // Creatures with family CreatureFamily.None crashes the server if (creatureTemplate.Family == CreatureFamily.None) { handler.SendSysMessage("This creature cannot be tamed. (Family id: 0)."); return(false); } if (!player.GetPetGUID().IsEmpty()) { handler.SendSysMessage("You already have a pet"); return(false); } // Everything looks OK, create new pet Pet pet = new Pet(player, PetType.Hunter); if (!pet.CreateBaseAtCreature(creatureTarget)) { handler.SendSysMessage("Error 1"); return(false); } creatureTarget.setDeathState(DeathState.JustDied); creatureTarget.RemoveCorpse(); creatureTarget.SetHealth(0); // just for nice GM-mode view pet.SetGuidValue(UnitFields.CreatedBy, player.GetGUID()); pet.SetUInt32Value(UnitFields.FactionTemplate, player.getFaction()); if (!pet.InitStatsForLevel(creatureTarget.getLevel())) { Log.outError(LogFilter.ChatSystem, "InitStatsForLevel() in EffectTameCreature failed! Pet deleted."); handler.SendSysMessage("Error 2"); return(false); } // prepare visual effect for levelup pet.SetUInt32Value(UnitFields.Level, creatureTarget.getLevel() - 1); pet.GetCharmInfo().SetPetNumber(Global.ObjectMgr.GeneratePetNumber(), true); // this enables pet details window (Shift+P) pet.InitPetCreateSpells(); pet.SetFullHealth(); pet.GetMap().AddToMap(pet.ToCreature()); // visual effect for levelup pet.SetUInt32Value(UnitFields.Level, creatureTarget.getLevel()); player.SetMinion(pet, true); pet.SavePetToDB(PetSaveMode.AsCurrent); player.PetSpellInitialize(); return(true); }