Пример #1
0
        public void SpawnHordeBerserkerBuff()
        {
            GOEntry hordeBerserkerBuff = GOMgr.GetEntry(GOEntryId.BerserkBuff);

            _hordeBerserkerBuff = hordeBerserkerBuff.FirstSpawnEntry.Spawn(this);
        }
Пример #2
0
		public CustomUseHandler(GOEntry.GOUseHandler handler)
		{
			Handler = handler;
		}
Пример #3
0
        public void SpawnAllianceBerserkerBuff()
        {
            GOEntry allianceBerserkerBuff = GOMgr.GetEntry(GOEntryId.BerserkBuff_2);

            _allianceBerserkerBuff = allianceBerserkerBuff.FirstSpawnEntry.Spawn(this);
        }
Пример #4
0
        public void SpawnHordeFoodBuff()
        {
            GOEntry hordeFoodBuff = GOMgr.GetEntry(GOEntryId.FoodBuff);

            _hordeFoodBuff = hordeFoodBuff.FirstSpawnEntry.Spawn(this);
        }
Пример #5
0
        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;
        }
Пример #6
0
        public void SpawnAllianceFoodBuff()
        {
            GOEntry allianceFoodBuff = GOMgr.GetEntry(GOEntryId.FoodBuff_2);

            _allianceFoodBuff = allianceFoodBuff.FirstSpawnEntry.Spawn(this);
        }
Пример #7
0
 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));
 }
Пример #8
0
        public override bool Use(Character user)
        {
            GOEntry entry = m_go.Entry;

            return(true);
        }
Пример #9
0
        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();
                }
            }
        }
Пример #10
0
 public static void InitGOs()
 {
     lanceRackEntry = GOMgr.GetEntry(GOEntryId.LanceRack_5) as GOSpellCasterEntry;
 }
Пример #11
0
        /// <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;
             *
             * }*/
        }
Пример #12
0
        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);
            };
        }
Пример #13
0
        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);
            }
        }