Ejemplo n.º 1
0
        protected virtual bool CheckForDamageType(InventoryItem item, int damageType)
        {
            if (GlobalConstants.IsWeapon(item.Object_Type))
            {
                if (damageType >= 1 && damageType <= 3)
                {
                    return(damageType == item.Type_Damage);
                }
                else
                {
                    log.Error("There has been an unexpected bonus passed to CheckForDamageType: " + damageType);
                    ChatUtil.SendErrorMessage(m_searchPlayer, "Unhandled damage type (" + damageType + ") specified in search!");
                    m_searchHasError = true;
                    return(false);
                }
            }

            return(false);
        }
Ejemplo n.º 2
0
        public void SwitchItem(GamePlayer player, eInventorySlot ToSlot, eInventorySlot FromSlot)
        {
            if (player.Inventory.GetItem(FromSlot) != null)
            {
                InventoryItem item = player.Inventory.GetItem(FromSlot);

                if (!GlobalConstants.IsWeapon(item.Object_Type))
                {
                    DisplayMessage(player.Client, "That is not a weapon!");
                    DisplaySyntax(player.Client);
                    return;
                }

                if (!player.Inventory.MoveItem(FromSlot, ToSlot, 1))
                {
                    DisplayMessage(player.Client, "There seems to have been a problem. Please try again.");
                    DisplaySyntax(player.Client);
                    return;
                }
            }
        }
Ejemplo n.º 3
0
        /// <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));
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Artifact Magical Ability delve information (spells, procs).
        /// </summary>
        /// <param name="delve"></param>
        /// <param name="bonusID"></param>
        /// <param name="levelRequirement"></param>
        public virtual void DelveMagicalAbility(List <string> delve, ArtifactBonus.ID bonusID, int levelRequirement)
        {
            string levelTag = (levelRequirement > 0)
                ? string.Format("[L{0}]: ", levelRequirement)
                : string.Empty;

            bool isProc      = false;
            bool isSecondary = false;
            int  spellID     = 0;

            switch (bonusID)
            {
            case ArtifactBonus.ID.Spell:
                spellID     = SpellID;
                isProc      = false;
                isSecondary = false;
                break;

            case ArtifactBonus.ID.Spell1:
                spellID     = SpellID1;
                isProc      = false;
                isSecondary = true;
                break;

            case ArtifactBonus.ID.ProcSpell:
                spellID     = ProcSpellID;
                isProc      = true;
                isSecondary = false;
                break;

            case ArtifactBonus.ID.ProcSpell1:
                spellID     = ProcSpellID1;
                isProc      = true;
                isSecondary = true;
                break;
            }

            if (spellID == 0)
            {
                return;
            }

            delve.Add(string.Empty);
            delve.Add(string.Format("{0}{1}Magical Ability:", levelTag,
                                    isSecondary ? "Secondary " : string.Empty));

            SpellLine spellLine = SkillBase.GetSpellLine(GlobalSpellsLines.Item_Effects);

            if (spellLine != null)
            {
                List <Spell> spells = SkillBase.GetSpellList(spellLine.KeyName);
                foreach (Spell spell in spells)
                {
                    if (spell.ID == spellID)
                    {
                        spell.Delve(delve);
                    }
                }
            }

            if (isProc)
            {
                delve.Add(string.Format(
                              "- Spell has a chance of casting when this {0} enemy.",
                              GlobalConstants.IsWeapon(Object_Type)
                                        ? "weapon strikes an" : "armor is hit by"));
            }
            else
            {
                delve.Add("- This spell is cast when the item is used.");
            }
        }
Ejemplo n.º 5
0
        /// <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);
        }