Exemplo n.º 1
0
        public void SetModel(GamePlayer player, int number)
        {
            InventoryItem item = player.TempProperties.getProperty <InventoryItem>(TempProperty);

            player.TempProperties.removeProperty(TempProperty);

            if (item == null || item.OwnerID != player.InternalID || item.OwnerID == null)
            {
                return;
            }

            player.Inventory.RemoveItem(item);

            ItemUnique unique = new ItemUnique(item.Template);

            unique.Model = number;
            GameServer.Database.AddObject(unique);

            InventoryItem newInventoryItem = GameInventoryItem.Create <ItemUnique>(unique);

            player.Inventory.AddItem(eInventorySlot.FirstEmptyBackpack, newInventoryItem);
            player.Out.SendInventoryItemsUpdate(new InventoryItem[] { newInventoryItem });
            player.RemoveBountyPoints(300);
            player.SaveIntoDatabase();
        }
Exemplo n.º 2
0
        public void SetProc(GamePlayer player, int proc)
        {
            InventoryItem item = player.TempProperties.getProperty <InventoryItem>(TempProperty);

            player.TempProperties.removeProperty(TempProperty);

            if (item == null || item.OwnerID != player.InternalID || item.OwnerID == null)
            {
                return;
            }

            player.Inventory.RemoveItem(item);

            ItemUnique unique = new ItemUnique(item.Template);

            unique.ProcSpellID = proc;
            GameServer.Database.AddObject(unique);

            player.RemoveBountyPoints(300);

            InventoryItem newInventoryItem = GameInventoryItem.Create <ItemUnique>(unique);

            player.Inventory.AddItem(eInventorySlot.FirstEmptyBackpack, newInventoryItem);
            player.Out.SendInventoryItemsUpdate(new InventoryItem[] { newInventoryItem });
            SendReply(player, "My work upon " + item.Name + " is complete.\n Farewell " + player.Name + ".");
        }
Exemplo n.º 3
0
        /// <summary>
        /// Create an InventoryItem of given Name and Level
        /// </summary>
        /// <param name="ItemName">Name for the object</param>
        /// <param name="ItemLevel">Level to give to the object</param>
        /// <param name="Model">Model for the object</param>
        /// <returns>InventoryItem of given Name and Level</returns>
        public static InventoryItem GenerateItem(string ItemName, int ItemLevel, int Model)
        {
            ItemUnique TaskItems = new ItemUnique();

            TaskItems.Name    = ItemName;
            TaskItems.Level   = ItemLevel;
            TaskItems.DPS_AF  = 0;
            TaskItems.SPD_ABS = 0;
            TaskItems.Hand    = 0;
            //TaskItems.Type_Damage = 0;
            TaskItems.Object_Type = 0;
            TaskItems.Item_Type   = 1;
            TaskItems.Weight      = 1;
            TaskItems.Model       = Model;
            TaskItems.Price       = 0;
            TaskItems.Color       = 0;
            TaskItems.IsDropable  = true;
            TaskItems.IsPickable  = true;
            //TaskItems.IsStackable = false;
            TaskItems.Quality       = 80 + ItemLevel;
            TaskItems.MaxCondition  = 90;
            TaskItems.MaxDurability = 1000;
            GameServer.Database.AddObject(TaskItems);
            InventoryItem InvTaskItems = GameInventoryItem.Create(TaskItems);

            return(InvTaskItems);
        }
Exemplo n.º 4
0
        public override void Die(GameObject killer)
        {
            GamePlayer player = killer as GamePlayer;

            if (player != null)
            {
                if (Util.Chance(40))
                {
                    #region rog_stuff

                    GameNPC mob = new GameNPC();
                    mob.Name            = "Unique Object";
                    mob.CurrentRegionID = 1;
                    mob.Level           = (byte)(player.Level);
                    if (mob.Level > 50)
                    {
                        mob.Level = 51;
                    }

                    mob.Level           = 60;
                    mob.Name            = "TOA Mob";
                    mob.CurrentRegionID = 30;
                    mob.Z = 9999;

                    ItemUnique unique = LootGeneratorUniqueObject.GenerateUniqueItem(mob, player, null);
                    GameServer.Database.AddObject(unique);
                    InventoryItem item = GameInventoryItem.Create <ItemUnique>(unique);
                    player.Inventory.AddItem(eInventorySlot.FirstEmptyBackpack, item);

                    #endregion
                }
            }
            base.Die(killer);
        }
Exemplo n.º 5
0
        public void GenerateROG(GamePlayer player, eObjectType objectType, eSlot slot)
        {
            player.RemoveBountyPoints(2000);
            GameNPC mob = new GameNPC();

            mob.Name            = "Unique Object";
            mob.CurrentRegionID = 1;
            mob.Level           = (byte)(player.Level);
            if (mob.Level > 50)
            {
                mob.Level = 51;
            }

            LootList   lootlist = new LootList();
            ItemUnique item     = null;

            item             = new ItemUnique();
            item.Object_Type = (int)objectType;
            item.Item_Type   = (int)slot;

            mob.Level           = 60;
            mob.Name            = "TOA Mob";
            mob.CurrentRegionID = 30;
            mob.Z = 9999;
            lootlist.AddFixed(LootGeneratorUniqueObject.GenerateUniqueItem(mob, player, item), 1);
            foreach (ItemUnique unique in lootlist.GetLoot())
            {
                unique.Price = 0;
                GameServer.Database.AddObject(unique);
                InventoryItem invitem = GameInventoryItem.Create <ItemUnique>(unique);
                player.Inventory.AddItem(eInventorySlot.FirstEmptyBackpack, invitem);
                player.Out.SendMessage("Generated: " + unique.Name, eChatType.CT_System, eChatLoc.CL_SystemWindow);
            }
        }
        /// <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;
                }
            }
        }
Exemplo n.º 7
0
 // the following is not in the constructor because TestFixtureSetup
 // is not initialized at this time, thus we can't connect to server
 public void InventoryTestCreation()
 {
     player = CreateMockGamePlayer();
     Assert.IsNotNull(player, "Player is null !");
     itemt = GameServer.Database.SelectObject <ItemTemplate>("Id_nb = 'championDocharWardenBlade'");
     Assert.IsNotNull(itemt, "ItemTemplate is null !");
     itemu       = new ItemUnique();
     itemu.Id_nb = "tunik" + DateTime.Now.Ticks;
     GameServer.Database.AddObject(itemu);
     Assert.IsNotNull(itemu, "ItemUnique is created !");
     itema = GameServer.Database.SelectObject <ItemTemplate>("id_nb= 'traitors_dagger_hib");
 }
Exemplo n.º 8
0
 // the following is not in the constructor because TestFixtureSetup
 // is not initialized at this time, thus we can't connect to server
 public void InventoryTestCreation()
 {
     player = CreateMockGamePlayer();
     Assert.IsNotNull(player, "Player is null !");
     itemt = GameServer.Database.SelectObject <ItemTemplate>("`Id_nb` = @champwardenblade", new QueryParameter("@champwardenblade", "championDocharWardenBlade"));
     Assert.IsNotNull(itemt, "ItemTemplate is null !");
     itemu       = new ItemUnique();
     itemu.Id_nb = "tunik" + DateTime.Now.Ticks;
     GameServer.Database.AddObject(itemu);
     Assert.IsNotNull(itemu, "ItemUnique is created !");
     _ = GameServer.Database.SelectObject <ItemTemplate>("`id_nb`= @ddt", new QueryParameter("@ddt", "traitors_dagger_hib"));
 }
Exemplo n.º 9
0
        // the following is not in the constructor because TestFixtureSetup
        // is not initialized at this time, thus we can't connect to server
        public void InventoryTestCreation()
        {
            player = CreateMockGamePlayer();
            Assert.IsNotNull(player, "Player is null !");
            itemt = DOLDB <ItemTemplate> .SelectObject(DB.Column(nameof(ItemTemplate.Id_nb)).IsEqualTo("championDocharWardenBlade"));

            Assert.IsNotNull(itemt, "ItemTemplate is null !");
            itemu       = new ItemUnique();
            itemu.Id_nb = "tunik" + DateTime.Now.Ticks;
            GameServer.Database.AddObject(itemu);
            Assert.IsNotNull(itemu, "ItemUnique is created !");
            _ = DOLDB <ItemTemplate> .SelectObject(DB.Column(nameof(ItemTemplate.Id_nb)).IsEqualTo("traitors_dagger_hib"));
        }
Exemplo n.º 10
0
        public void SetBonus(string propertyName, InventoryItem item, GamePlayer player)
        {
            Console.WriteLine("1");
            eProperty prop = strToProperty(propertyName);

            if (prop == eProperty.MaxSpeed)
            {
                return;
            }
            Console.WriteLine("2");
            ItemUnique unique = new ItemUnique(item.Template);

            player.Inventory.RemoveItem(item);
            player.TempProperties.removeProperty(CRAFT_ITEM);

            int bonusVal = prop >= eProperty.Resist_First && prop <= eProperty.Resist_Last ? 5 : 20;

            if (unique.Bonus1Type == 0)
            {
                unique.Bonus1Type = (int)prop;
                unique.Bonus1     = 20;
            }
            else if (unique.Bonus2Type == 0)
            {
                unique.Bonus2Type = (int)prop;
                unique.Bonus2     = 20;
            }
            else if (unique.Bonus3Type == 0)
            {
                unique.Bonus3Type = (int)prop;
                unique.Bonus3     = 20;
            }
            else if (unique.Bonus4Type == 0)
            {
                unique.Bonus4Type = (int)prop;
                unique.Bonus4     = 20;
            }
            else if (unique.Bonus5Type == 0)
            {
                unique.Bonus5Type = (int)prop;
                unique.Bonus5     = 20;
            }
            Console.WriteLine("3");
            GameServer.Database.AddObject(unique);
            InventoryItem newInventoryItem = GameInventoryItem.Create <ItemUnique>(unique);

            player.Inventory.AddItem(eInventorySlot.FirstEmptyBackpack, newInventoryItem);
            SendReply(player, "I have now imbued your " + unique.Name + " with the power of " + propertyName + "!");
            player.Out.SendInventoryItemsUpdate(new InventoryItem[] { newInventoryItem });
        }
Exemplo n.º 11
0
        public void RemoveProc(GamePlayer player, int procNumber)
        {
            InventoryItem item = player.TempProperties.getProperty <InventoryItem>(TempProperty);

            player.TempProperties.removeProperty(TempProperty);

            if (item == null || item.OwnerID != player.InternalID || item.OwnerID == null)
            {
                return;
            }

            player.Inventory.RemoveItem(item);

            ItemUnique unique = new ItemUnique(item.Template);

            if (procNumber == 1)
            {
                unique.ProcSpellID = 0;
                unique.SpellID     = 0;
            }
            else if (procNumber == 2)
            {
                unique.ProcSpellID1 = 0;
                unique.SpellID1     = 0;
            }
            else
            {
                SendReply(player, "Error, contact a GM");
            }
            GameServer.Database.AddObject(unique);

            InventoryItem newInventoryItem = GameInventoryItem.Create <ItemUnique>(unique);

            player.Inventory.AddItem(eInventorySlot.FirstEmptyBackpack, newInventoryItem);
            player.Out.SendInventoryItemsUpdate(new InventoryItem[] { newInventoryItem });
            player.SaveIntoDatabase();
        }
Exemplo n.º 12
0
        public static WorldInventoryItem CreateUniqueFromTemplate(ItemTemplate template)
        {
            if (template == null)
            {
                return(null);
            }

            WorldInventoryItem invItem = new WorldInventoryItem();
            ItemUnique         item    = new ItemUnique(template);

            GameServer.Database.AddObject(item);

            invItem.m_item = GameInventoryItem.Create(item);

            invItem.m_item.SlotPosition = 0;
            invItem.m_item.OwnerID      = null;

            invItem.Level  = (byte)template.Level;
            invItem.Model  = (ushort)template.Model;
            invItem.Emblem = template.Emblem;
            invItem.Name   = template.Name;

            return(invItem);
        }
Exemplo n.º 13
0
 public GameMythirian(ItemUnique template)
     : base(template)
 {
 }
Exemplo n.º 14
0
 public DesmonaCoin(ItemUnique template)
     : base(template)
 {
 }
Exemplo n.º 15
0
 public GameInventoryRelic(ItemUnique template)
     : base(template)
 {
 }
Exemplo n.º 16
0
 public GameSiegeItem(ItemUnique template)
     : base(template)
 {
 }
Exemplo n.º 17
0
        /// <summary>
        /// Make the crafted item and add it to player's inventory
        /// </summary>
        /// <param name="player"></param>
        /// <param name="recipe"></param>
        /// <returns></returns>
        protected virtual void BuildCraftedItem(GamePlayer player, DBCraftedItem recipe, ItemTemplate itemToCraft)
        {
            Dictionary <int, int> changedSlots = new Dictionary <int, int>(5);           // key : > 0 inventory ; < 0 ground || value: < 0 = new item count; > 0 = add to old

            lock (player.Inventory)
            {
                int count = itemToCraft.PackSize < 1 ? 1 : itemToCraft.PackSize;
                foreach (InventoryItem item in player.Inventory.GetItemRange(eInventorySlot.FirstBackpack, eInventorySlot.LastBackpack))
                {
                    if (item == null)
                    {
                        continue;
                    }

                    if (item.Id_nb.Equals(itemToCraft.Id_nb) == false)
                    {
                        continue;
                    }

                    if (item.Count >= itemToCraft.MaxCount)
                    {
                        continue;
                    }

                    int countFree = item.MaxCount - item.Count;
                    if (count > countFree)
                    {
                        changedSlots.Add(item.SlotPosition, countFree);                         // existing item should be changed
                        count -= countFree;
                    }
                    else
                    {
                        changedSlots.Add(item.SlotPosition, count);                         // existing item should be changed
                        count = 0;
                        break;
                    }
                }

                if (count > 0)                 // Add new object
                {
                    eInventorySlot firstEmptySlot = player.Inventory.FindFirstEmptySlot(eInventorySlot.FirstBackpack, eInventorySlot.LastBackpack);
                    if (firstEmptySlot == eInventorySlot.Invalid)
                    {
                        changedSlots.Add(-1, -count);                         // Create the item on the ground
                    }
                    else
                    {
                        changedSlots.Add((int)firstEmptySlot, -count);                         // Create the item in the free slot
                    }
                    count = 0;
                }

                InventoryItem newItem = null;

                player.Inventory.BeginChanges();

                Dictionary <int, int> .Enumerator enumerator = changedSlots.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    KeyValuePair <int, int> slot = enumerator.Current;
                    int countToAdd = slot.Value;
                    if (countToAdd > 0)                         // Add to exiting item
                    {
                        newItem = player.Inventory.GetItem((eInventorySlot)slot.Key);
                        if (newItem != null && player.Inventory.AddCountToStack(newItem, countToAdd))
                        {
                            InventoryLogging.LogInventoryAction("(craft)", player, eInventoryActionType.Other, newItem.Template, countToAdd);
                            // count incremented, continue with next change
                            continue;
                        }
                    }

                    if (recipe.MakeTemplated)
                    {
                        string       adjItem        = itemToCraft.Id_nb + (GetQuality(player, recipe).ToString());
                        ItemTemplate adjItemToCraft = GameServer.Database.FindObjectByKey <ItemTemplate>(adjItem);
                        if (adjItemToCraft != null)
                        {
                            newItem = GameInventoryItem.Create <ItemTemplate>(adjItemToCraft);
                        }
                        else
                        {
                            newItem = GameInventoryItem.Create <ItemTemplate>(itemToCraft);
                        }
                    }
                    else
                    {
                        ItemUnique unique = new ItemUnique(itemToCraft);
                        GameServer.Database.AddObject(unique);
                        newItem         = GameInventoryItem.Create <ItemUnique>(unique);
                        newItem.Quality = GetQuality(player, recipe);
                    }

                    newItem.IsCrafted = true;
                    newItem.Creator   = player.Name;
                    newItem.Count     = -countToAdd;

                    if (slot.Key > 0)                           // Create new item in the backpack
                    {
                        player.Inventory.AddItem((eInventorySlot)slot.Key, newItem);
                        InventoryLogging.LogInventoryAction("(craft)", player, eInventoryActionType.Craft, newItem.Template, newItem.Count);
                    }
                    else                                                        // Create new item on the ground
                    {
                        player.CreateItemOnTheGround(newItem);
                        player.Out.SendDialogBox(eDialogCode.SimpleWarning, 0, 0, 0, 0, eDialogType.Ok, true, LanguageMgr.GetTranslation(player.Client.Account.Language, "AbstractCraftingSkill.BuildCraftedItem.BackpackFull", itemToCraft.Name));
                    }
                }

                player.Inventory.CommitChanges();

                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "AbstractCraftingSkill.BuildCraftedItem.Successfully", itemToCraft.Name, newItem.Quality), eChatType.CT_Missed, eChatLoc.CL_SystemWindow);

                if (recipe.MakeTemplated == false && newItem.Quality == 100)
                {
                    player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "AbstractCraftingSkill.BuildCraftedItem.Masterpiece"), eChatType.CT_Important, eChatLoc.CL_SystemWindow);
                    player.Out.SendPlaySound(eSoundType.Craft, 0x04);
                }
                else
                {
                    player.Out.SendPlaySound(eSoundType.Craft, 0x03);
                }
            }
        }