/// <summary>
        /// Player receives this item (added to players inventory)
        /// </summary>
        /// <param name="player"></param>
        public override void OnReceive(GamePlayer player)
        {
            // for guild banners we don't actually add it to inventory but instead register
            // if it is rescued by a friendly player or taken by the enemy

            player.Inventory.RemoveItem(this);

            int    trophyModel = 0;
            eRealm realm       = eRealm.None;

            switch (Model)
            {
            case 3223:
                trophyModel = 3359;
                realm       = eRealm.Albion;
                break;

            case 3224:
                trophyModel = 3361;
                realm       = eRealm.Midgard;
                break;

            case 3225:
                trophyModel = 3360;
                realm       = eRealm.Hibernia;
                break;
            }

            // if picked up by an enemy then turn this into a trophy
            if (realm != player.Realm)
            {
                ItemUnique template = new ItemUnique(Template);
                template.ClassType        = "";
                template.Model            = trophyModel;
                template.IsDropable       = true;
                template.IsIndestructible = false;

                GameServer.Database.AddObject(template);
                GameInventoryItem trophy = new GameInventoryItem(template);
                player.Inventory.AddItem(eInventorySlot.FirstEmptyBackpack, trophy);
                OwnerGuild.SendMessageToGuildMembers(player.Name + " of " + GlobalConstants.RealmToName(player.Realm) + " has captured your guild banner!", eChatType.CT_Guild, eChatLoc.CL_SystemWindow);
                OwnerGuild.GuildBannerLostTime = DateTime.Now;
            }
            else
            {
                m_status = eStatus.Recovered;

                // A friendly player has picked up the banner.
                if (OwnerGuild != null)
                {
                    OwnerGuild.SendMessageToGuildMembers(player.Name + " has recovered your guild banner!", eChatType.CT_Guild, eChatLoc.CL_SystemWindow);
                }

                if (SummonPlayer != null)
                {
                    SummonPlayer.GuildBanner = null;
                }
            }
        }
Esempio n. 2
0
        public override void OnRemoveFromWorld()
        {
            if (Status == eStatus.Dropped)
            {
                if (SummonPlayer != null)
                {
                    SummonPlayer.GuildBanner = null;
                    SummonPlayer             = null;
                }

                if (OwnerGuild != null)
                {
                    // banner was dropped and not picked up, must be re-purchased
                    OwnerGuild.GuildBanner = false;
                    OwnerGuild.SendMessageToGuildMembers("Your guild banner has been lost!", eChatType.CT_Guild, eChatLoc.CL_SystemWindow);
                    OwnerGuild = null;
                }
            }

            base.OnRemoveFromWorld();
        }