public void SpawnHordeBerserkerBuff() { GOEntry hordeBerserkerBuff = GOMgr.GetEntry(GOEntryId.BerserkBuff); _hordeBerserkerBuff = hordeBerserkerBuff.FirstSpawnEntry.Spawn(this); }
public CustomUseHandler(GOEntry.GOUseHandler handler) { Handler = handler; }
public void SpawnAllianceBerserkerBuff() { GOEntry allianceBerserkerBuff = GOMgr.GetEntry(GOEntryId.BerserkBuff_2); _allianceBerserkerBuff = allianceBerserkerBuff.FirstSpawnEntry.Spawn(this); }
public void SpawnHordeFoodBuff() { GOEntry hordeFoodBuff = GOMgr.GetEntry(GOEntryId.FoodBuff); _hordeFoodBuff = hordeFoodBuff.FirstSpawnEntry.Spawn(this); }
public static void FixGOs() { //Getting our entries GOEntry allianceDoor1 = GOMgr.GetEntry(GOEntryId.Doodad_PortcullisActive04); GOEntry allianceDoor2 = GOMgr.GetEntry(GOEntryId.Doodad_PortcullisActive02_2); GOEntry allianceDoor3 = GOMgr.GetEntry(GOEntryId.Doodad_PortcullisActive01_2); GOEntry hordeDoor1 = GOMgr.GetEntry(GOEntryId.Doodad_RazorfenDoor01); GOEntry hordeDoor2 = GOMgr.GetEntry(GOEntryId.Doodad_RazorfenDoor02); // Manually fixing each entry's template. (should be replaced by DB values) allianceDoor1.FirstSpawnEntry.MapId = MapId.WarsongGulch; allianceDoor1.FirstSpawnEntry.Position = new Vector3(1471.555f, 1458.778f, 362.6332f); allianceDoor1.FirstSpawnEntry.Orientation = 3.115414f; allianceDoor1.FirstSpawnEntry.Scale = 1.5f; allianceDoor1.FirstSpawnEntry.Rotations = new float[] { 3.115414f, 0, 0, 0.9999143f, 0.01308903f }; allianceDoor1.FirstSpawnEntry.State = GameObjectState.Enabled; // Spawn the door closed allianceDoor1.FirstSpawnEntry.AutoSpawns = false; allianceDoor1.Flags |= GameObjectFlags.DoesNotDespawn | GameObjectFlags.InUse; allianceDoor2.FirstSpawnEntry.MapId = MapId.WarsongGulch; allianceDoor2.FirstSpawnEntry.Position = new Vector3(1492.478f, 1457.912f, 342.9689f); allianceDoor2.FirstSpawnEntry.Orientation = 3.115414f; allianceDoor2.FirstSpawnEntry.Scale = 2.5f; allianceDoor2.FirstSpawnEntry.Rotations = new float[] { 0, 0, 0.9999143f, 0.01308903f }; allianceDoor2.FirstSpawnEntry.State = GameObjectState.Enabled; // Spawn the door closed allianceDoor2.FirstSpawnEntry.AutoSpawns = false; allianceDoor2.Flags |= GameObjectFlags.DoesNotDespawn | GameObjectFlags.InUse; allianceDoor3.FirstSpawnEntry.MapId = MapId.WarsongGulch; allianceDoor3.FirstSpawnEntry.Position = new Vector3(1503.335f, 1493.466f, 352.1888f); allianceDoor3.FirstSpawnEntry.Orientation = 3.115414f; allianceDoor3.FirstSpawnEntry.Scale = 2f; allianceDoor3.FirstSpawnEntry.Rotations = new float[] { 0, 0, 0.9999143f, 0.01308903f }; allianceDoor3.FirstSpawnEntry.State = GameObjectState.Enabled; // Spawn the door closed allianceDoor3.FirstSpawnEntry.AutoSpawns = false; allianceDoor3.Flags |= GameObjectFlags.DoesNotDespawn | GameObjectFlags.InUse; hordeDoor1.FirstSpawnEntry.MapId = MapId.WarsongGulch; hordeDoor1.FirstSpawnEntry.Position = new Vector3(949.1663f, 1423.772f, 345.6241f); hordeDoor1.FirstSpawnEntry.Orientation = -0.5756807f; hordeDoor1.FirstSpawnEntry.Rotations = new float[] { -0.01673368f, -0.004956111f, -0.2839723f, 0.9586737f }; hordeDoor1.FirstSpawnEntry.State = GameObjectState.Enabled; // Spawn the door closed hordeDoor1.FirstSpawnEntry.AutoSpawns = false; hordeDoor1.Flags |= GameObjectFlags.DoesNotDespawn | GameObjectFlags.InUse; hordeDoor2.FirstSpawnEntry.MapId = MapId.WarsongGulch; hordeDoor2.FirstSpawnEntry.Position = new Vector3(953.0507f, 1459.842f, 340.6526f); hordeDoor2.FirstSpawnEntry.Orientation = -1.99662f; hordeDoor2.FirstSpawnEntry.Rotations = new float[] { -0.1971825f, 0.1575096f, -0.8239487f, 0.5073641f }; hordeDoor2.FirstSpawnEntry.State = GameObjectState.Enabled; // Spawn the door closed hordeDoor2.FirstSpawnEntry.AutoSpawns = false; hordeDoor2.Flags |= GameObjectFlags.DoesNotDespawn | GameObjectFlags.InUse; GOEntry allianceFlag = GOMgr.GetEntry(GOEntryId.SilverwingFlag_2); // The flagstand GOEntry hordeFlag = GOMgr.GetEntry(GOEntryId.WarsongFlag_2); // The flagstand. allianceFlag.FirstSpawnEntry.MapId = MapId.WarsongGulch; allianceFlag.FirstSpawnEntry.Position = new Vector3(1540.423f, 1481.325f, 351.8284f); allianceFlag.FirstSpawnEntry.Orientation = 3.089233f; allianceFlag.FirstSpawnEntry.Scale = 2f; allianceFlag.FirstSpawnEntry.Rotations = new float[] { 0, 0, 0.9996573f, 0.02617699f }; allianceFlag.FirstSpawnEntry.AutoSpawns = false; hordeFlag.FirstSpawnEntry.MapId = MapId.WarsongGulch; hordeFlag.FirstSpawnEntry.Position = new Vector3(916.0226f, 1434.405f, 345.413f); hordeFlag.FirstSpawnEntry.Orientation = 0.01745329f; hordeFlag.FirstSpawnEntry.Scale = 2f; hordeFlag.FirstSpawnEntry.Rotations = new float[] { 0, 0, 0.008726535f, 0.9999619f }; hordeFlag.FirstSpawnEntry.AutoSpawns = false; GOEntry allianceSpeedBuff = GOMgr.GetEntry(GOEntryId.SpeedBuff_2); GOEntry allianceBerserkerBuff = GOMgr.GetEntry(GOEntryId.BerserkBuff_2); GOEntry allianceFoodBuff = GOMgr.GetEntry(GOEntryId.FoodBuff_2); GOEntry hordeSpeedBuff = GOMgr.GetEntry(GOEntryId.SpeedBuff); GOEntry hordeBerserkerBuff = GOMgr.GetEntry(GOEntryId.BerserkBuff); GOEntry hordeFoodBuff = GOMgr.GetEntry(GOEntryId.FoodBuff); allianceBerserkerBuff.FirstSpawnEntry.MapId = MapId.WarsongGulch; allianceBerserkerBuff.FirstSpawnEntry.Position = new Vector3(1320.09375f, 1378.78967285156f, 314.753234863281f); allianceBerserkerBuff.FirstSpawnEntry.Orientation = 1.18682384490967f; allianceBerserkerBuff.FirstSpawnEntry.Rotations = new float[] { 0, 0, 0.559192895889282f, 0.829037606716156f }; allianceBerserkerBuff.FirstSpawnEntry.Scale = 1f; allianceBerserkerBuff.FirstSpawnEntry.AutoSpawns = false; allianceFoodBuff.FirstSpawnEntry.MapId = MapId.WarsongGulch; allianceFoodBuff.FirstSpawnEntry.Position = new Vector3(1317.50573730469f, 1550.85070800781f, 313.234375f); allianceFoodBuff.FirstSpawnEntry.Orientation = -0.26179963350296f; allianceFoodBuff.FirstSpawnEntry.Rotations = new float[] { 0, 0, 0.130526319146156f, -0.991444826126099f }; allianceFoodBuff.FirstSpawnEntry.Scale = 1f; allianceFoodBuff.FirstSpawnEntry.AutoSpawns = false; allianceSpeedBuff.FirstSpawnEntry.MapId = MapId.WarsongGulch; allianceSpeedBuff.FirstSpawnEntry.Position = new Vector3(1449.9296875f, 1470.70971679688f, 342.634552001953f); allianceSpeedBuff.FirstSpawnEntry.Orientation = -1.64060950279236f; allianceSpeedBuff.FirstSpawnEntry.Rotations = new float[] { 0, 0, 0.73135370016098f, -0.681998312473297f }; allianceSpeedBuff.FirstSpawnEntry.Scale = 1f; allianceSpeedBuff.FirstSpawnEntry.AutoSpawns = false; hordeSpeedBuff.FirstSpawnEntry.MapId = MapId.WarsongGulch; hordeSpeedBuff.FirstSpawnEntry.Position = new Vector3(1005.17071533203f, 1447.94567871094f, 335.903228759766f); hordeSpeedBuff.FirstSpawnEntry.Orientation = 1.64060950279236f; hordeSpeedBuff.FirstSpawnEntry.Rotations = new float[] { 0, 0, 0.73135370016098f, 0.681998372077942f }; hordeSpeedBuff.FirstSpawnEntry.Scale = 1f; hordeSpeedBuff.FirstSpawnEntry.AutoSpawns = false; hordeBerserkerBuff.FirstSpawnEntry.MapId = MapId.WarsongGulch; hordeBerserkerBuff.FirstSpawnEntry.Position = new Vector3(1139.68774414063f, 1560.28771972656f, 306.843170166016f); hordeBerserkerBuff.FirstSpawnEntry.Orientation = -2.4434609413147f; hordeBerserkerBuff.FirstSpawnEntry.Rotations = new float[] { 0, 0, 0.939692616462708f, -0.342020124197006f }; hordeBerserkerBuff.FirstSpawnEntry.Scale = 1f; hordeBerserkerBuff.FirstSpawnEntry.AutoSpawns = false; hordeFoodBuff.FirstSpawnEntry.MapId = MapId.WarsongGulch; hordeFoodBuff.FirstSpawnEntry.Position = new Vector3(1110.45129394531f, 1353.65563964844f, 316.518096923828f); hordeFoodBuff.FirstSpawnEntry.Orientation = -0.68067866563797f; hordeFoodBuff.FirstSpawnEntry.Rotations = new float[] { 0, 0, 0.333806991577148f, -0.94264143705368f }; hordeFoodBuff.FirstSpawnEntry.Scale = 1f; hordeFoodBuff.FirstSpawnEntry.AutoSpawns = false; }
public void SpawnAllianceFoodBuff() { GOEntry allianceFoodBuff = GOMgr.GetEntry(GOEntryId.FoodBuff_2); _allianceFoodBuff = allianceFoodBuff.FirstSpawnEntry.Spawn(this); }
public static GameObject Create(GOEntry entry, Map map, GOSpawnEntry spawnEntry = null, GOSpawnPoint spawnPoint = null) { return(GameObject.Create(entry, (IWorldLocation) new WorldLocation(map, Vector3.Zero, 1U), spawnEntry, spawnPoint)); }
public override bool Use(Character user) { GOEntry entry = m_go.Entry; return(true); }
public static void Write(this GOEntry entry, TextWriter writer, string indent) { writer.WriteLine(indent + "GO: " + entry.DefaultName + string.Format(" (Id: {0} [{1}], Type: {2})", entry.Id, entry.GOId, entry.Type)); indent += "\t"; var type = entry.GetType(); if (entry.Lock != null) { var attrs = new List <string>(2); if (entry.Lock.IsUnlocked) { attrs.Add("Open"); } if (entry.Lock.CanBeClosed) { attrs.Add("Closable"); } writer.WriteLine(indent + "Lock (Id: {0}{1})", entry.Lock.Id, attrs.Count > 0 ? ("; " + attrs.ToString(", ")) : ""); if (entry.Lock.Keys.Length > 0) { writer.WriteLine(indent + "\tPossible Keys: " + entry.Lock.Keys.ToString(", ")); } if (entry.Lock.OpeningMethods.Length > 0) { writer.WriteLine(indent + "\tOpening Methods:"); foreach (var method in entry.Lock.OpeningMethods) { string reqStr; if (method.RequiredSkill != SkillId.None) { reqStr = string.Format(" needs {0} in {1}", method.RequiredSkillValue, method.RequiredSkill); } else { reqStr = ""; } writer.WriteLine(indent + "\t{0}{1}", method.InteractionType, reqStr); } } } foreach (var field in type.GetFields()) { if (field.Name != "Names" && field.Name != "Id" && field.Name != "Fields" && field.Name != "InteractRadius" && field.Name != "Type" && field.Name != "Lock" && field.Name != "LockId" && field.Name != "LinkedTrapId" && field.Name != "Templates" && field.Name != "Id" && field.Name != "GOId") { var val = field.GetValue(entry); WriteValue(writer, field.Name, indent, val); } } foreach (var prop in type.GetProperties()) { var val = prop.GetValue(entry, null); WriteValue(writer, prop.Name, indent, val); } if (entry.SpawnEntries.Count > 0) { writer.WriteLine(indent + "Templates:"); for (var i = 0; i < entry.SpawnEntries.Count; i++) { var template = entry.SpawnEntries[i]; writer.WriteLine("\tTemplate #" + (i + 1) + ":"); template.Write(writer, indent); writer.WriteLine(); } } }
public static void InitGOs() { lanceRackEntry = GOMgr.GetEntry(GOEntryId.LanceRack_5) as GOSpellCasterEntry; }
/// <summary> /// Finalize this GOSpawnEntry /// </summary> /// <param name="addToPool">If set to false, will not try to add it to any pool (recommended for custom GOSpawnEntry that share a pool)</param> public override void FinalizeDataHolder(bool addToPool) { // get Entry if (Entry == null) { Entry = GOMgr.GetEntry(EntryId, false); if (Entry == null) { ContentMgr.OnInvalidDBData("{0} had an invalid EntryId.", this); return; } } // fix data inconsistencies if (Scale == 0) { Scale = 1; } if (EntryId == 0) { EntryId = (GOEntryId)EntryIdRaw; } else { EntryIdRaw = (uint)EntryId; } if (Rotations == null) { Rotations = new float[GOConstants.MaxRotations]; } //GOMgr.Templates.Add(Id, this); // do the default thing base.FinalizeDataHolder(addToPool); if (MapId != MapId.End && MapId != MapId.None) { // valid map Entry.SpawnEntries.Add(this); // add to list of GOSpawnEntries ArrayUtil.Set(ref GOMgr.SpawnEntries, SpawnId, this); if (addToPool) { // add to pool AddToPoolTemplate(); } } //TODO ENABLE NPC EVENTS ASDA2 // Is this GO associated with an event /*if(_eventId != 0) * { * // The event id loaded can be negative if this * // entry is expected to despawn during an event * var eventId = (uint)Math.Abs(_eventId); * * //Check if the event is valid * var worldEvent = WorldEventMgr.GetEvent(eventId); * if(worldEvent != null) * { * // Add this GO to the list of related spawns * // for the given world event * var eventGO = new WorldEventGameObject() * {_eventId = _eventId, EventId = eventId, Guid = SpawnId, Spawn = _eventId > 0}; * * worldEvent.GOSpawns.Add(eventGO); * } * EventId = eventId; * * }*/ }
public static void InitGOs() { GOEntry rhahkzorDoorEntry = GOMgr.GetEntry(GOEntryId.FactoryDoor); // 13965 if (rhahkzorDoorEntry != null) { rhahkzorDoorEntry.Activated += go => { var instance = go.Map as Deadmines; if (instance != null && instance.rhahkzorDoor == null) { // set the instance's Door object after the Door spawned instance.rhahkzorDoor = go; } }; } GOEntry sneedDoorEntry = GOMgr.GetEntry(GOEntryId.HeavyDoor); var sneedDoorCord = new Vector3(-290.294f, -536.96f, 49.4353f); if (sneedDoorEntry != null) { sneedDoorEntry.Activated += go => { var instance = go.Map as Deadmines; if (instance != null) { // set the instance's Door object after the Door spawned instance.sneedDoor = go.Map.GetNearestGameObject(sneedDoorCord, (GOEntryId)sneedDoorEntry.Id); } }; } GOEntry gilnidDoorEntry = GOMgr.GetEntry(GOEntryId.HeavyDoor); var gilnidDoorCord = new Vector3(-168.514f, -579.861f, 19.3159f); if (gilnidDoorEntry != null) { gilnidDoorEntry.Activated += go => { var instance = go.Map as Deadmines; if (instance != null) { // set the instance's Door object after the Door spawned instance.gilnidDoor = go.Map.GetNearestGameObject(gilnidDoorCord, (GOEntryId)gilnidEntry.Id); } }; } // Cannon defiasCannonEntry = GOMgr.GetEntry(GOEntryId.DefiasCannon); defiasCannonEntry.Used += (cannon, user) => { GameObject door = cannon.GetNearbyGO(GOEntryId.IronCladDoor); if (door != null && door.IsInWorld) { // the cannon destroys the door door.State = GameObjectState.Destroyed; door.CallDelayed(5000, obj => obj.Delete()); // delete the actual object a little later return(true); } return(false); }; }
public static void SendGameObjectInfo(IRealmClient client, GOEntry entry) { var name = entry.Names.Localize(client); using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_GAMEOBJECT_QUERY_RESPONSE, 13 + 6 + name.Length + (24 * 4))) { packet.Write(entry.Id); packet.Write((uint)entry.Type); packet.Write(entry.DisplayId); packet.Write(name); packet.Write((byte)0); // Name2 packet.Write((byte)0); // Name3 packet.Write((byte)0); // Name4 packet.Write((byte)0); // string IconName packet.Write((byte)0); // string. Casting bar text packet.Write((byte)0); // string int i = 0; for (; i < entry.Fields.Length; i++) { packet.Write(entry.Fields[i]); } // must be 24 fields while (i < GOConstants.EntryFieldCount) { packet.Write(0); i++; } packet.Write(entry.Scale); // size for (i = 0; i < 4; i++) { packet.Write(0); // new 3.1 } client.Send(packet); } }