public void AddMount(MountRecord record) { if (!m_mounts.ContainsKey(record.Id)) { m_mounts.Add(record.Id, record); } }
public static CharacterMountRecord New(CharacterItemRecord item) { MountRecord template = MountRecord.GetMount(item.GId); long uid = CharactersMounts.DynamicPop(x => x.UId); return(new CharacterMountRecord(uid, item.CharacterId, false, true, false, false, template.Id, DefaultMountName, template.Effects.ConvertAll <EffectInteger>(x => x.GenerateEffect() as EffectInteger), false, false)); }
public Mount(MountRecord record) { Record = record; Level = ExperienceManager.Instance.GetMountLevel(Experience); ExperienceLevelFloor = ExperienceManager.Instance.GetMountLevelExperience(Level); ExperienceNextLevelFloor = ExperienceManager.Instance.GetMountNextLevelExperience(Level); if (Record.PaddockId != null) { Paddock = PaddockManager.Instance.GetPaddock(Record.PaddockId.Value); } m_effects = MountManager.Instance.GetMountEffects(this); }
public void SaveMount(MountRecord record) { if (record.IsNew) { Database.Insert(record); } else { Database.Update(record); } record.IsDirty = false; record.IsNew = false; }
public bool AddMount(uint spellId, MountStatusFlags flags, bool factionMount = false, bool learned = false) { Player player = _owner.GetPlayer(); if (!player) { return(false); } MountRecord mount = Global.DB2Mgr.GetMount(spellId); if (mount == null) { return(false); } var value = FactionSpecificMounts.LookupByKey(spellId); if (value != 0 && !factionMount) { AddMount(value, flags, true, learned); } _mounts[spellId] = flags; // Mount condition only applies to using it, should still learn it. if (mount.PlayerConditionID != 0) { PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(mount.PlayerConditionID); if (playerCondition != null && !ConditionManager.IsPlayerMeetingCondition(player, playerCondition)) { return(false); } } if (!learned) { if (!factionMount) { SendSingleMountUpdate(spellId, flags); } if (!player.HasSpell(spellId)) { player.LearnSpell(spellId, true); } } return(true); }
public Mount CreateMount(Character owner, MountTemplate template, bool sex) { var record = new MountRecord() { IsNew = true, TemplateId = template.Id, OwnerId = owner.Id, OwnerName = owner.Name, Name = template.Name, Sex = sex, }; record.AssignIdentifier(); AddMount(record); return(new Mount(owner, record)); }
public static void SynchnronizeMounts() { BigEndianReader reader = new BigEndianReader(File.ReadAllBytes(MountsPath)); while (reader.BytesAvailable > 0) { MA3Mount mount = new MA3Mount(); mount.Deserialize(reader); var record = MountRecord.GetMount(mount.Id); if (record == null) { var itemRecord = ItemRecord.Items.Find(x => x.Name == mount.Name); MountRecord newRecord = new MountRecord(mount.Id, mount.Name, ContextActorLook.Parse(mount.Look), itemRecord.Id, new List <Models.Effects.EffectInstance>()); newRecord.AddInstantElement(); logger.Gray(mount.Name + " added to mount records."); } } }
void HandleActivateTaxi(ActivateTaxi activateTaxi) { Creature unit = GetPlayer().GetNPCIfCanInteractWith(activateTaxi.Vendor, NPCFlags.FlightMaster); if (unit == null) { Log.outDebug(LogFilter.Network, "WORLD: HandleActivateTaxiOpcode - {0} not found or you can't interact with it.", activateTaxi.Vendor.ToString()); SendActivateTaxiReply(ActivateTaxiReply.TooFarAway); return; } uint curloc = Global.ObjectMgr.GetNearestTaxiNode(unit.GetPositionX(), unit.GetPositionY(), unit.GetPositionZ(), unit.GetMapId(), GetPlayer().GetTeam()); if (curloc == 0) { return; } TaxiNodesRecord from = CliDB.TaxiNodesStorage.LookupByKey(curloc); TaxiNodesRecord to = CliDB.TaxiNodesStorage.LookupByKey(activateTaxi.Node); if (to == null) { return; } if (!GetPlayer().isTaxiCheater()) { if (!GetPlayer().m_taxi.IsTaximaskNodeKnown(curloc) || !GetPlayer().m_taxi.IsTaximaskNodeKnown(activateTaxi.Node)) { SendActivateTaxiReply(ActivateTaxiReply.NotVisited); return; } } uint preferredMountDisplay = 0; MountRecord mount = CliDB.MountStorage.LookupByKey(activateTaxi.FlyingMountID); if (mount != null) { if (GetPlayer().HasSpell(mount.SourceSpellID)) { var mountDisplays = Global.DB2Mgr.GetMountDisplays(mount.Id); if (mountDisplays != null) { List <MountXDisplayRecord> usableDisplays = mountDisplays.Where(mountDisplay => { PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(mountDisplay.PlayerConditionID); if (playerCondition != null) { return(ConditionManager.IsPlayerMeetingCondition(GetPlayer(), playerCondition)); } return(true); }).ToList(); if (!usableDisplays.Empty()) { preferredMountDisplay = usableDisplays.SelectRandom().CreatureDisplayInfoID; } } } } List <uint> nodes = new List <uint>(); Global.TaxiPathGraph.GetCompleteNodeRoute(from, to, GetPlayer(), nodes); GetPlayer().ActivateTaxiPathTo(nodes, unit, 0, preferredMountDisplay); }
public void DeleteMount(MountRecord record) { RemoveMount(record); Database.Delete(record); }
public void RemoveMount(MountRecord record) { m_mounts.Remove(record.Id); }