/// <summary> /// Write item technical info /// </summary> /// <param name="output"></param> /// <param name="item"></param> public override void WriteTechnicalInfo(List <string> delve, GameClient client) { delve.Add(" "); delve.Add("--- Artifact/Item technical information ---"); delve.Add(" "); delve.Add("Item Template: " + Id_nb); delve.Add(" Name: " + Name); delve.Add(" Experience: " + Experience); delve.Add(" Object: " + GlobalConstants.ObjectTypeToName(Object_Type) + " (" + Object_Type + ")"); delve.Add(" Type: " + GlobalConstants.SlotToName(Item_Type) + " (" + Item_Type + ")"); delve.Add(" Extension: " + Extension); delve.Add(" Model: " + Model); delve.Add(" Color: " + Color); delve.Add(" Emblem: " + Emblem); delve.Add(" Effect: " + Effect); delve.Add(" Value/Price: " + Money.GetShortString(Price)); delve.Add(" Weight: " + (Weight / 10.0f) + "lbs"); delve.Add(" Quality: " + Quality + "%"); delve.Add(" Durability: " + Durability + "/" + MaxDurability + "(max)"); delve.Add(" Condition: " + Condition + "/" + MaxCondition + "(max)"); delve.Add(" Realm: " + Realm); delve.Add(" Is dropable: " + (IsDropable ? "yes" : "no")); delve.Add(" Is pickable: " + (IsPickable ? "yes" : "no")); delve.Add(" Is stackable: " + (IsStackable ? "yes" : "no")); delve.Add(" Is tradeable: " + (IsTradable ? "yes" : "no")); delve.Add(" ProcSpellID: " + ProcSpellID); delve.Add(" ProcSpellID1: " + ProcSpellID1); delve.Add(" SpellID: " + SpellID + " (" + Charges + "/" + MaxCharges + ")"); delve.Add(" SpellID1: " + SpellID1 + " (" + Charges1 + "/" + MaxCharges1 + ")"); delve.Add("PoisonSpellID: " + PoisonSpellID + " (" + PoisonCharges + "/" + PoisonMaxCharges + ") "); if (GlobalConstants.IsWeapon(Object_Type)) { delve.Add(" Hand: " + GlobalConstants.ItemHandToName(Hand) + " (" + Hand + ")"); delve.Add("Damage/Second: " + (DPS_AF / 10.0f)); delve.Add(" Speed: " + (SPD_ABS / 10.0f)); delve.Add(" Damage type: " + GlobalConstants.WeaponDamageTypeToName(Type_Damage) + " (" + Type_Damage + ")"); delve.Add(" Bonus: " + Bonus); } else if (GlobalConstants.IsArmor(Object_Type)) { delve.Add(" Armorfactor: " + DPS_AF); delve.Add(" Absorption: " + SPD_ABS); delve.Add(" Bonus: " + Bonus); } else if (Object_Type == (int)eObjectType.Shield) { delve.Add("Damage/Second: " + (DPS_AF / 10.0f)); delve.Add(" Speed: " + (SPD_ABS / 10.0f)); delve.Add(" Shield type: " + GlobalConstants.ShieldTypeToName(Type_Damage) + " (" + Type_Damage + ")"); delve.Add(" Bonus: " + Bonus); } else if (Object_Type == (int)eObjectType.Arrow || Object_Type == (int)eObjectType.Bolt) { delve.Add(" Ammunition #: " + DPS_AF); delve.Add(" Damage: " + GlobalConstants.AmmunitionTypeToDamageName(SPD_ABS)); delve.Add(" Range: " + GlobalConstants.AmmunitionTypeToRangeName(SPD_ABS)); delve.Add(" Accuracy: " + GlobalConstants.AmmunitionTypeToAccuracyName(SPD_ABS)); delve.Add(" Bonus: " + Bonus); } else if (Object_Type == (int)eObjectType.Instrument) { delve.Add(" Instrument: " + GlobalConstants.InstrumentTypeToName(DPS_AF)); } }
/// <summary> /// Check if the player can enchant the item /// </summary> /// <param name="player"></param> /// <param name="item"></param> /// <returns></returns> public virtual bool IsAllowedToCombine(GamePlayer player, InventoryItem item) { if (item == null) { return(false); } if (player.TradeWindow.ItemsCount <= 0) { player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "AdvancedCraftingSkill.IsAllowedToCombine.Imbue", item.Name), eChatType.CT_System, eChatLoc.CL_SystemWindow); return(false); } if (!item.IsCrafted) { player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "AdvancedCraftingSkill.IsAllowedToCombine.CraftedItems"), eChatType.CT_System, eChatLoc.CL_SystemWindow); return(false); } InventoryItem itemToCombine = (InventoryItem)player.TradeWindow.TradeItems[0]; if (itemToCombine.Object_Type == (int)eObjectType.AlchemyTincture) { if (item.Object_Type != (int)eObjectType.Instrument) // Only check for non instruments { switch (itemToCombine.Type_Damage) { case 0: //Type damage 0 = armors if (!GlobalConstants.IsArmor(item.Object_Type)) { if (item.Object_Type == (int)eObjectType.Shield) // think shield can do armor and weapon ? not verified. { return(true); } player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "AdvancedCraftingSkill.IsAllowedToCombine.NoGoodCombine"), eChatType.CT_System, eChatLoc.CL_SystemWindow); return(false); } break; case 1: //Type damage 1 = weapons if (!GlobalConstants.IsWeapon(item.Object_Type)) { player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "AdvancedCraftingSkill.IsAllowedToCombine.NoGoodCombine"), eChatType.CT_System, eChatLoc.CL_SystemWindow); return(false); } break; default: player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "AdvancedCraftingSkill.IsAllowedToCombine.ProblemCombine"), eChatType.CT_System, eChatLoc.CL_SystemWindow); return(false); } } else // Instrument { if (itemToCombine.Type_Damage != 0) //think instrument can do only armorproc ? not verified. { player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "AdvancedCraftingSkill.IsAllowedToCombine.NoGoodCombine"), eChatType.CT_System, eChatLoc.CL_SystemWindow); return(false); } } } if (!GlobalConstants.IsArmor(item.Object_Type) && !GlobalConstants.IsWeapon(item.Object_Type) && item.Object_Type != (int)eObjectType.Instrument) { player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "AdvancedCraftingSkill.IsAllowedToCombine.NoEnchanted"), eChatType.CT_System, eChatLoc.CL_SystemWindow); return(false); } return(true); }