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(); }
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 + "."); }
/// <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); }
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); }
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; } } }
// 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"); }
// 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")); }
// 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")); }
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 }); }
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(); }
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); }
public GameMythirian(ItemUnique template) : base(template) { }
public DesmonaCoin(ItemUnique template) : base(template) { }
public GameInventoryRelic(ItemUnique template) : base(template) { }
public GameSiegeItem(ItemUnique template) : base(template) { }
/// <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); } } }