protected override void OnTarget(Mobile from, object o) { if (!Imbuing.CheckSoulForge(from, 1)) { return; } if (o is Container) { Container cont = (Container)o; if (cont.IsChildOf(from.Backpack) || cont == from.Backpack) { int unraveled = 0; List <Item> list = new List <Item>(cont.Items); foreach (Item item in list) { if (item is BaseWeapon || item is BaseArmor || item is BaseJewel || item is BaseHat) { if (Imbuing.CanUnravelItem(from, item, false) && Imbuing.UnravelItem(from, item, false)) { unraveled++; } } } list.Clear(); list.TrimExcess(); if (unraveled <= 0) { from.SendMessage(2499, "You fail to unravel any items in the selected container."); Effects.PlaySound(from.Location, from.Map, 0x3BF); } else { Effects.PlaySound(from.Location, from.Map, 0x1ED); Effects.SendLocationParticles( EffectItem.Create(from.Location, from.Map, EffectItem.DefaultDuration), 0x373A, 10, 30, 0, 4, 0, 0); from.SendMessage(2499, "You successfully unravel {0} items from the selected container.", unraveled); } } else { from.SendMessage(2499, "The container must be in your backpack to magically unravel its contents."); return; } } else { from.SendMessage(2499, "You must target a container."); return; } return; }
protected override void OnTarget(Mobile from, object o) { if (!Imbuing.CheckSoulForge(from, 1)) { return; } if (o is BaseWeapon || o is BaseArmor || o is BaseJewel || o is BaseHat) { if (Imbuing.CanUnravelItem(from, (Item)o) && Imbuing.UnravelItem(from, (Item)o)) { Effects.PlaySound(from.Location, from.Map, 0x1ED); Effects.SendLocationParticles( EffectItem.Create(from.Location, from.Map, EffectItem.DefaultDuration), 0x373A, 10, 30, 0, 4, 0, 0); from.SendLocalizedMessage(1080429); // Unravelled :P } } else { from.SendLocalizedMessage(1080425); // You cannot magically unravel this item. return; } }
public override void AddGumpLayout() { // SoulForge Check if (!Imbuing.CheckSoulForge(User, 2)) { return; } ImbuingContext context = Imbuing.GetContext(User); context.LastImbued = m_Item; ItemType itemType = ItemPropertyInfo.GetItemType(m_Item); bool twoHanded = m_Item.Layer == Layer.TwoHanded; AddPage(0); AddBackground(0, 0, 520, 520, 5054); AddImageTiled(10, 10, 500, 500, 2624); AddImageTiled(10, 30, 500, 10, 5058); AddImageTiled(230, 40, 10, 440, 5058); AddImageTiled(10, 480, 500, 10, 5058); AddAlphaRegion(10, 10, 520, 500); AddHtmlLocalized(10, 12, 520, 20, 1079588, LabelColor, false, false); //IMBING MENU int yOffset = 0; // ===== Attribute Catagories ======================================== AddHtmlLocalized(10, 60, 220, 20, 1044010, LabelColor, false, false); // <CENTER>CATEGORIES</CENTER> AddHtmlLocalized(240, 60, 270, 20, 1044011, LabelColor, false, false); // <CENTER>SELECTIONS</CENTER> AddButton(15, 90 + (yOffset * 25), 4005, 4007, 10001, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 90 + (yOffset * 25), 150, 18, 1114248, LabelColor, false, false); //Casting yOffset += 1; int itemRef = (int)itemType; if (itemRef == 1 || itemRef == 2 || itemRef == 4 || itemRef == 6) { AddButton(15, 90 + (yOffset * 25), 4005, 4007, 10002, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 90 + (yOffset * 25), 150, 18, 1114249, LabelColor, false, false); //Combat yOffset += 1; } if (itemRef == 1 || itemRef == 2) { AddButton(15, 90 + (yOffset * 25), 4005, 4007, 10006, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 90 + (yOffset * 25), 150, 18, 1114250, LabelColor, false, false); //Hit Area Effects yOffset += 1; AddButton(15, 90 + (yOffset * 25), 4005, 4007, 10007, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 90 + (yOffset * 25), 150, 18, 1114251, LabelColor, false, false); //Hit Effects yOffset += 1; } AddButton(15, 90 + (yOffset * 25), 4005, 4007, 10003, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 90 + (yOffset * 25), 150, 18, 1114252, LabelColor, false, false); //Misc. yOffset += 1; if (itemRef == 2) { AddButton(15, 90 + (yOffset * 25), 4005, 4007, 10015, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 90 + (yOffset * 25), 150, 18, 1114253, LabelColor, false, false); //Ranged yOffset += 1; } if (itemRef == 1 || itemRef == 2 || itemRef == 3 || itemRef == 5 || itemRef == 6) { AddButton(15, 90 + (yOffset * 25), 4005, 4007, 10004, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 90 + (yOffset * 25), 150, 18, 1114254, LabelColor, false, false); //Resists yOffset += 1; } if (itemRef == 1 || itemRef == 2) { AddButton(15, 90 + (yOffset * 25), 4005, 4007, 10008, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 90 + (yOffset * 25), 150, 18, 1114263, LabelColor, false, false); //Slayers yOffset += 1; AddButton(15, 90 + (yOffset * 25), 4005, 4007, 10009, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 90 + (yOffset * 25), 150, 18, 1114264, LabelColor, false, false); //Super Slayers yOffset += 1; } if (itemRef == 6) { for (int i = 0; i < 5; i++) { AddButton(15, 90 + (yOffset * 25), 4005, 4007, 10010 + i, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 90 + (yOffset * 25), 150, 18, 1114255 + i, LabelColor, false, false); //Skill Group 1 yOffset += 1; } } if (itemRef == 3 || itemRef == 5 || itemRef == 6) { AddButton(15, 90 + (yOffset * 25), 4005, 4007, 10005, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 90 + (yOffset * 25), 150, 18, 1114262, LabelColor, false, false); //Stats yOffset += 1; } // ===== Attribute Catagories ======================================== yOffset = 0; int menuCat = context.ImbMenu_Cat; if (menuCat == 1) // == CASTING == { if (itemRef == 1 || itemRef == 2) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10122, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079766, LabelColor, false, false); //Spell Channeling yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10141, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079759, LabelColor, false, false); //Mage Weapon yOffset += 1; if (m_Item is BaseWeapon && (((BaseWeapon)m_Item).Attributes.SpellChanneling == 0 || ((BaseWeapon)m_Item).Attributes.CastSpeed < 0)) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10116, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075617, LabelColor, false, false); //Faster Casting yOffset += 1; } } else if (itemRef == 3 || itemRef == 5) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10118, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075625, LabelColor, false, false); //Lower Reg Cost yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10117, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075621, LabelColor, false, false); //Lower Mana Cost yOffset += 1; } else if (itemRef == 4) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10122, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079766, LabelColor, false, false); //Spell Channeling yOffset += 1; if (m_Item is BaseShield && (((BaseShield)m_Item).Attributes.SpellChanneling == 0 || ((BaseShield)m_Item).Attributes.CastSpeed < 0)) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10116, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075617, LabelColor, false, false); //Faster Casting yOffset += 1; } } else if (itemRef == 6) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10114, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075628, LabelColor, false, false); //Spell Damage Increase yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10118, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075625, LabelColor, false, false); //Lower Reg Cost yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10117, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075621, LabelColor, false, false); //Lower Mana Cost yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10116, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075617, LabelColor, false, false); //Faster Casting yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10115, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075618, LabelColor, false, false); //Faster Cast Recovery yOffset += 1; } } else if (menuCat == 2) // == COMBAT == { if (itemRef == 1) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10112, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079399, LabelColor, false, false); //Damage Increase yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10113, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075629, LabelColor, false, false); //Swing Speed Increase yOffset += 1; if (twoHanded) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10163, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1072792, LabelColor, false, false); //Balanced yOffset += 1; } AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10102, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075616, LabelColor, false, false); //Hit Chance Increase yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10101, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075620, LabelColor, false, false); //Defense Chance Increase yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10140, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079592, LabelColor, false, false); //Use Best Weapon Skill yOffset += 1; } else if (itemRef == 2) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10112, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079399, LabelColor, false, false); //Damage Increase yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10113, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075629, LabelColor, false, false); //Swing Speed Increase yOffset += 1; } else if (itemRef == 4) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10101, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075620, LabelColor, false, false); //Defense Chance Increase yOffset += 1; } else if (itemRef == 6) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10112, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079399, LabelColor, false, false); //Damage Increase yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10102, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075616, LabelColor, false, false); //Hit Chance Increase yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10101, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075620, LabelColor, false, false); //Defense Chance Increase yOffset += 1; } } else if (menuCat == 3) // == MISC == { if (itemRef == 1 || itemRef == 2) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10121, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1061153, LabelColor, false, false); //Luck yOffset += 1; } else if (itemRef == 3 || itemRef == 5) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10119, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075626, LabelColor, false, false); //Reflect Physical Damage yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10123, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1015168, LabelColor, false, false); //Night Sight yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10121, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1061153, LabelColor, false, false); //Luck yOffset += 1; } else if (itemRef == 4) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10119, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075626, LabelColor, false, false); //Reflect Physical Damage yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10145, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079757, LabelColor, false, false); //Lower Requirements yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10142, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1017323, LabelColor, false, false); //Durability yOffset += 1; } else if (itemRef == 6) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10123, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1015168, LabelColor, false, false); //Night Sight yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10121, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1061153, LabelColor, false, false); //Luck yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10120, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075624, LabelColor, false, false); //Enhance Potions yOffset += 1; } } else if (menuCat == 15) // == Ranged == { if (itemRef == 2) { if (twoHanded) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10160, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1080416, LabelColor, false, false); //Velocity yOffset += 1; } AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10102, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075616, LabelColor, false, false); //Hit Chance Increase yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10101, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075620, LabelColor, false, false); //Defense Chance Increase yOffset += 1; if (twoHanded) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10161, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1072792, LabelColor, false, false); //Balanced yOffset += 1; } } } else if (menuCat == 4) // == RESISTS == { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10154, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1061161, LabelColor, false, false); //Poison Resist yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10151, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1061158, LabelColor, false, false); //Physcial Resist yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10152, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1061159, LabelColor, false, false); //Fire Resist yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10155, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1061162, LabelColor, false, false); //Energy Resist yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10153, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1061160, LabelColor, false, false); //Cold Resist yOffset += 1; } else if (menuCat == 5) // == STATS == { if (itemRef == 3 || itemRef == 5) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10110, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075632, LabelColor, false, false); //Stamina Increase yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10103, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075627, LabelColor, false, false); //Hit Points Regeneration yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10104, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079411, LabelColor, false, false); //Stamina Regeneration yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10105, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079410, LabelColor, false, false); //Mana Regeneration yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10111, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075631, LabelColor, false, false); //Mana Increaase yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10109, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1075630, LabelColor, false, false); //Hit Point Increase yOffset += 1; } else if (itemRef == 6) { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10106, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079767, LabelColor, false, false); //Strength Bonus yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10108, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079756, LabelColor, false, false); //Intelligence Bonus yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10107, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079732, LabelColor, false, false); //Dexterity Bonus yOffset += 1; } } else if (menuCat == 6) // == HIT AREA EFFECTS == { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10133, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079697, LabelColor, false, false); //Hit Poison Area yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10130, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079696, LabelColor, false, false); //Hit Physical Area yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10131, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079695, LabelColor, false, false); //Hit Fire Area yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10134, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079694, LabelColor, false, false); //Hit Energy Area yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10132, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079693, LabelColor, false, false); //Hit Cold Area yOffset += 1; } else if (menuCat == 7) // == ON HIT EFFECTS == { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10126, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079707, LabelColor, false, false); // Hit Stam Leech yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10127, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079701, LabelColor, false, false); //Hit Mana Leech yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10135, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079706, LabelColor, false, false); //Hit Magic Arrow yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10129, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079700, LabelColor, false, false); //Hit Lower Defense yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10128, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079699, LabelColor, false, false); //Hit Lower Attack yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10138, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079705, LabelColor, false, false); //Hit Lightning yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10125, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079698, LabelColor, false, false); //Hit Life Leeach yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10136, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079704, LabelColor, false, false); //Hit Harm yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10137, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079703, LabelColor, false, false); //Hit Fireball yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10139, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079702, LabelColor, false, false); //Hit Dispel yOffset += 1; } else if (menuCat == 8) // == SLAYERS == { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10215, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079755, LabelColor, false, false); //Water Elemental Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10202, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079754, LabelColor, false, false); //Troll Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10205, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079753, LabelColor, false, false); //Terathan Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10212, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079746, LabelColor, false, false); //Spider Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10220, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079745, LabelColor, false, false); //Snow Elemental Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10206, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079744, LabelColor, false, false); //Snake Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10213, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079743, LabelColor, false, false); //Scorpion Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10217, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079742, LabelColor, false, false); //Poison Elemental Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10201, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079741, LabelColor, false, false); //Orc Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10211, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079740, LabelColor, false, false); //Ophidian Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10203, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079739, LabelColor, false, false); //Ogre Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10207, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079738, LabelColor, false, false); //Lizardman Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10208, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079737, LabelColor, false, false); //Gargoyle Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10214, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079736, LabelColor, false, false); //Fire Elemental Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10218, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079735, LabelColor, false, false); //Earth Elemental Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10204, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1061284, LabelColor, false, false); //Dragon Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10219, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079734, LabelColor, false, false); //Blood Elemental Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10216, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079733, LabelColor, false, false); //Air Elemental Slayer yOffset += 1; } else if (menuCat == 9) // == SUPER SLAYERS == { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10221, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079752, LabelColor, false, false); //Undead Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10223, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079751, LabelColor, false, false); //Reptile Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10222, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079750, LabelColor, false, false); //Repond Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10227, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1154652, LabelColor, false, false); //Fey Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10226, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079749, LabelColor, false, false); //Elemental Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10224, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079748, LabelColor, false, false); //Demon Slayer yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10225, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1079747, LabelColor, false, false); //Arachnid Slayer yOffset += 1; } else if (menuCat == 10) // == SKILL GROUP 1 == { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10251, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044102, LabelColor, false, false); //Fencing yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10252, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044101, LabelColor, false, false); //Mace Fighting yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10253, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044100, LabelColor, false, false); //Swordsmanship yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10254, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044089, LabelColor, false, false); //Musicianship yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10255, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044085, LabelColor, false, false); //Magery yOffset += 1; } else if (menuCat == 11) // == SKILL GROUP 2 == { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10256, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044103, LabelColor, false, false); //Wrestling yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10257, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044095, LabelColor, false, false); //Animal Taming yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10258, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044092, LabelColor, false, false); //Spirit Speak yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10259, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044087, LabelColor, false, false); //Tactics yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10260, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044082, LabelColor, false, false); //Provocation yOffset += 1; } else if (menuCat == 12) // == SKILL GROUP 3 == { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10261, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044110, LabelColor, false, false); //Focus yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10262, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044065, LabelColor, false, false); //Parrying yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10263, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044107, LabelColor, false, false); //Stealth yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10264, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044106, LabelColor, false, false); //Meditation yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10265, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044062, LabelColor, false, false); //Animal Lore yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10266, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044075, LabelColor, false, false); //Discordance yOffset += 1; } else if (menuCat == 13) // == SKILL GROUP 4 == { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10267, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044115, LabelColor, false, false); //Mysticism yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10268, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044112, LabelColor, false, false); //Bushido yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10269, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044109, LabelColor, false, false); //Necromancy yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10270, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044099, LabelColor, false, false); //Veterinary yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10271, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044093, LabelColor, false, false); //Stealing yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10272, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044076, LabelColor, false, false); //Eval Intelligence yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10273, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044061, LabelColor, false, false); //Anatomy yOffset += 1; } else if (menuCat == 14) // == SKILL GROUP 5 == { AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10274, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044069, LabelColor, false, false); //Peacemaking yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10280, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044117, LabelColor, false, false); //Throwing yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10275, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044113, LabelColor, false, false); //Ninjitsu yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10276, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044111, LabelColor, false, false); //Chivalary yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10277, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044091, LabelColor, false, false); //Archery yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10278, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044086, LabelColor, false, false); //Resist Spells yOffset += 1; AddButton(250, 90 + (yOffset * 20), 4005, 4007, 10279, GumpButtonType.Reply, 0); AddHtmlLocalized(295, 90 + (yOffset * 20), 150, 18, 1044077, LabelColor, false, false); //Healing yOffset += 1; } AddButton(15, 490, 4005, 4007, 1, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 490, 150, 20, 1011012, LabelColor, false, false); //Cancel }
public ImbuingGumpC(Mobile from, Item item, int mod, int value) : base(520, 340) { PlayerMobile m = from as PlayerMobile; from.CloseGump(typeof(ImbuingGump)); from.CloseGump(typeof(ImbuingGumpB)); // SoulForge Check if (!Imbuing.CheckSoulForge(from, 1)) { return; } ImbuingContext context = Imbuing.GetContext(m); // = Check Type of Ingredients Needed if (!Imbuing.Table.ContainsKey(mod)) { return; } m_Definition = Imbuing.Table[mod]; if (value == -1) { value = m_Definition.IncAmount; } m_Item = item; m_Mod = mod; m_Value = value; int maxInt = GetMaxIntensity(item, m_Definition); int inc = m_Definition.IncAmount; int weight = m_Definition.Weight; if (m_Item is BaseJewel && m_Mod == 12) { maxInt /= 2; } if (m_Value < inc) { m_Value = inc; } if (m_Value > maxInt) { m_Value = maxInt; } if (m_Value <= 0) { m_Value = 1; } double currentIntensity = Math.Floor((m_Value / (double)maxInt) * 100); //Set context context.LastImbued = item; context.Imbue_Mod = mod; context.Imbue_ModVal = weight; context.ImbMenu_ModInc = inc; context.Imbue_ModInt = value; // - Current Mod Weight m_TotalItemWeight = Imbuing.GetTotalWeight(m_Item, m_Mod); m_TotalProps = Imbuing.GetTotalMods(m_Item, m_Mod); if (maxInt <= 1) { currentIntensity = 100; } m_PropWeight = (int)Math.Floor(((double)weight / (double)maxInt) * m_Value); // - Maximum allowed Property Weight & Item Mod Count m_MaxWeight = Imbuing.GetMaxWeight(m_Item); // = Times Item has been Imbued int timesImbued = 0; if (m_Item is BaseWeapon) { timesImbued = ((BaseWeapon)m_Item).TimesImbued; } if (m_Item is BaseArmor) { timesImbued = ((BaseArmor)m_Item).TimesImbued; } if (m_Item is BaseJewel) { timesImbued = ((BaseJewel)m_Item).TimesImbued; } if (m_Item is BaseHat) { timesImbued = ((BaseHat)m_Item).TimesImbued; } // = Check Ingredients needed at the current Intensity m_GemAmount = Imbuing.GetGemAmount(m_Item, m_Mod, m_Value); m_PrimResAmount = Imbuing.GetPrimaryAmount(m_Item, m_Mod, m_Value); m_SpecResAmount = Imbuing.GetSpecialAmount(m_Item, m_Mod, m_Value); // ------------------------------ Gump Menu ------------------------------------------------------------- AddPage(0); AddBackground(0, 0, 540, 450, 5054); AddImageTiled(10, 10, 520, 430, 2624); AddImageTiled(10, 35, 520, 10, 5058); AddImageTiled(260, 45, 15, 290, 5058); AddImageTiled(10, 185, 520, 10, 5058); AddImageTiled(10, 335, 520, 10, 5058); AddImageTiled(10, 405, 520, 10, 5058); AddAlphaRegion(10, 10, 520, 430); AddHtmlLocalized(10, 13, 520, 18, 1079717, LabelColor, false, false); //<CENTER>IMBUING CONFIRMATION</CENTER> AddHtmlLocalized(57, 49, 200, 18, 1114269, LabelColor, false, false); //PROPERTY INFORMATION // - Attribute to Imbue AddHtmlLocalized(30, 80, 80, 17, 1114270, LabelColor, false, false); //Property: AddHtmlLocalized(100, 80, 150, 17, m_Definition.AttributeName, LabelColor, false, false); // - Weight Modifier AddHtmlLocalized(30, 120, 80, 17, 1114272, 0xFFFFFF, false, false); //Weight: double w = (double)m_Definition.Weight / 100.0; AddHtml(90, 120, 80, 17, String.Format("<BASEFONT COLOR=#CCCCFF> {0}x", w), false, false); AddHtmlLocalized(30, 140, 80, 17, 1114273, LabelColor, false, false); //Intensity: AddHtml(90, 140, 80, 17, String.Format("<BASEFONT COLOR=#CCCCFF> {0}%", currentIntensity), false, false); // - Materials needed AddHtmlLocalized(10, 199, 255, 18, 1044055, LabelColor, false, false); //<CENTER>MATERIALS</CENTER> AddHtmlLocalized(40, 230, 180, 17, m_Definition.PrimaryName, LabelColor, false, false); AddHtml(210, 230, 40, 17, String.Format("<BASEFONT COLOR=#CCCCFF> {0}", m_PrimResAmount.ToString()), false, false); AddHtmlLocalized(40, 255, 180, 17, m_Definition.GemName, LabelColor, false, false); AddHtml(210, 255, 40, 17, String.Format("<BASEFONT COLOR=#CCCCFF> {0}", m_GemAmount.ToString()), false, false); if (m_SpecResAmount > 0) { AddHtmlLocalized(40, 280, 180, 17, m_Definition.SpecialName, LabelColor, false, false); AddHtml(210, 280, 40, 17, String.Format("<BASEFONT COLOR=#CCCCFF> {0}", m_SpecResAmount.ToString()), false, false); } // - Mod Description AddHtmlLocalized(290, 65, 215, 110, m_Definition.Description, LabelColor, false, false); AddHtmlLocalized(365, 199, 150, 18, 1113650, LabelColor, false, false); //RESULTS AddHtmlLocalized(288, 220, 150, 17, 1113645, LabelColor, false, false); //Properties: AddHtml(443, 220, 80, 17, String.Format("<BASEFONT COLOR=#CCFFCC> {0}/5", m_TotalProps + 1), false, false); AddHtmlLocalized(288, 240, 150, 17, 1113646, LabelColor, false, false); //Total Property Weight: AddHtml(443, 240, 80, 17, String.Format("<BASEFONT COLOR=#CCFFCC> {0}/{1}", m_TotalItemWeight + (int)m_PropWeight, m_MaxWeight), false, false); // - Times Imbued AddHtmlLocalized(288, 260, 150, 17, 1113647, LabelColor, false, false); //Times Imbued: AddHtml(443, 260, 80, 17, String.Format("<BASEFONT COLOR=#CCFFCC> {0}/20", timesImbued + 1), false, false); // - Name of Attribute to be Replaced int replace = WhatReplacesWhat(m_Mod, m_Item); AddHtmlLocalized(30, 100, 80, 17, 1114271, LabelColor, false, false); if (replace <= 0) { replace = m_Definition.AttributeName; } AddHtmlLocalized(100, 100, 150, 17, replace, LabelColor, false, false); // ===== CALCULATE DIFFICULTY ===== double dif; double suc = Imbuing.GetSuccessChance(from, item, m_TotalItemWeight, m_PropWeight, out dif); int Succ = Convert.ToInt32(suc); string color; // = Imbuing Success Chance % AddHtmlLocalized(305, 300, 150, 17, 1044057, 0xFFFFFF, false, false); if (Succ <= 1) { color = "#FF5511"; } else if (Succ > 1 && Succ < 10) { color = "#EE6611"; } else if (Succ >= 10 && Succ < 20) { color = "#DD7711"; } else if (Succ >= 20 && Succ < 30) { color = "#CC8811"; } else if (Succ >= 30 && Succ < 40) { color = "#BB9911"; } else if (Succ >= 40 && Succ < 50) { color = "#AAAA11"; } else if (Succ >= 50 && Succ < 60) { color = "#99BB11"; } else if (Succ >= 60 && Succ < 70) { color = "#88CC11"; } else if (Succ >= 70 && Succ < 80) { color = "#77DD11"; } else if (Succ >= 80 && Succ < 90) { color = "#66EE11"; } else if (Succ >= 90 && Succ < 100) { color = "#55FF11"; } else if (Succ >= 100) { color = "#01FF01"; } else { color = "#FFFFFF"; } if (suc > 100) { suc = 100; } if (suc < 0) { suc = 0; } AddHtml(430, 300, 80, 17, String.Format("<BASEFONT COLOR={0}>\t{1}%", color, suc), false, false); // - Attribute Level if (maxInt > 1) { // - Set Intesity to Minimum if (m_Value <= 0) { m_Value = 1; } // = New Value: AddHtmlLocalized(245, 350, 100, 17, 1062300, LabelColor, false, false); // - Mage Weapon Value ( i.e [Mage Weapon -25] ) if (m_Mod == 41) { AddHtml(254, 374, 50, 17, String.Format("<BASEFONT COLOR=#CCCCFF> -{0}", 30 - m_Value), false, false); } // - Show Property Value as % ( i.e [Hit Fireball 25%] ) else if (maxInt <= 8 || m_Mod == 21 || m_Mod == 17) { AddHtml(254, 374, 50, 17, String.Format("<BASEFONT COLOR=#CCCCFF> {0}", m_Value), false, false); } // - Show Property Value as just Number ( i.e [Mana Regen 2] ) else { AddHtml(254, 374, 50, 17, String.Format("<BASEFONT COLOR=#CCCCFF> {0}%", m_Value), false, false); } // == Buttons == //0x1467??? AddButton(192, 376, 5230, 5230, 10053, GumpButtonType.Reply, 0); // To Minimum Value AddButton(211, 376, 5230, 5230, 10052, GumpButtonType.Reply, 0); // Dec Value by % AddButton(230, 376, 5230, 5230, 10051, GumpButtonType.Reply, 0); // dec value by 1 AddButton(331, 376, 5230, 5230, 10056, GumpButtonType.Reply, 0); //To Maximum Value AddButton(312, 376, 5230, 5230, 10055, GumpButtonType.Reply, 0); // Inc Value by % AddButton(293, 376, 5230, 5230, 10054, GumpButtonType.Reply, 0); // inc Value by 1 AddLabel(341, 374, 0, ">"); AddLabel(337, 374, 0, ">"); AddLabel(333, 374, 0, ">"); AddLabel(320, 374, 0, ">"); AddLabel(316, 374, 0, ">"); AddLabel(298, 374, 0, ">"); AddLabel(235, 374, 0, "<"); AddLabel(216, 374, 0, "<"); AddLabel(212, 374, 0, "<"); AddLabel(199, 374, 0, "<"); AddLabel(195, 374, 0, "<"); AddLabel(191, 374, 0, "<"); } AddButton(19, 416, 4005, 4007, 10099, GumpButtonType.Reply, 0); AddHtmlLocalized(58, 417, 100, 18, 1114268, LabelColor, false, false); //Back AddButton(400, 416, 4005, 4007, 10100, GumpButtonType.Reply, 0); AddHtmlLocalized(439, 417, 120, 18, 1114267, LabelColor, false, false); //Imbue Item }
public ImbuingGumpC(Mobile from, Item item, int mod, int value) : base(520, 340) { PlayerMobile m = from as PlayerMobile; from.CloseGump(typeof(ImbuingGump)); from.CloseGump(typeof(ImbuingGumpB)); from.CloseGump(typeof(RunicReforgingGump)); // SoulForge Check if (!Imbuing.CheckSoulForge(from, 1)) { return; } ImbuingContext context = Imbuing.GetContext(m); // = Check Type of Ingredients Needed if (!Imbuing.Table.ContainsKey(mod)) { return; } m_Definition = Imbuing.Table[mod]; if (value == -1) { value = m_Definition.IncAmount; } m_Item = item; m_Mod = mod; m_Value = value; int maxInt = Imbuing.GetMaxIntensity(item, m_Definition); int inc = m_Definition.IncAmount; int weight = m_Definition.Weight; if (m_Item is BaseJewel && m_Mod == 12) { maxInt /= 2; } if (m_Value < inc) { m_Value = inc; } if (m_Value > maxInt) { m_Value = maxInt; } if (m_Value <= 0) { m_Value = 1; } double currentIntensity = Math.Floor((m_Value / (double)maxInt) * 100); //Set context context.LastImbued = item; context.Imbue_Mod = mod; context.Imbue_ModVal = weight; context.ImbMenu_ModInc = inc; context.Imbue_ModInt = value; // - Current Mod Weight m_TotalItemWeight = Imbuing.GetTotalWeight(m_Item, m_Mod); m_TotalProps = Imbuing.GetTotalMods(m_Item, m_Mod); if (maxInt <= 1) { currentIntensity = 100; } m_PropWeight = (int)Math.Floor(((double)weight / (double)maxInt) * m_Value); // - Maximum allowed Property Weight & Item Mod Count m_MaxWeight = Imbuing.GetMaxWeight(m_Item); // = Times Item has been Imbued int timesImbued = Imbuing.TimesImbued(m_Item); // = Check Ingredients needed at the current Intensity m_GemAmount = Imbuing.GetGemAmount(m_Item, m_Mod, m_Value); m_PrimResAmount = Imbuing.GetPrimaryAmount(m_Item, m_Mod, m_Value); m_SpecResAmount = Imbuing.GetSpecialAmount(m_Item, m_Mod, m_Value); // ------------------------------ Gump Menu ------------------------------------------------------------- AddPage(0); AddBackground(0, 0, 520, 440, 5054); AddImageTiled(10, 10, 500, 420, 2624); AddImageTiled(10, 30, 500, 10, 5058); AddImageTiled(250, 40, 10, 290, 5058); AddImageTiled(10, 180, 500, 10, 5058); AddImageTiled(10, 330, 500, 10, 5058); AddImageTiled(10, 400, 500, 10, 5058); AddAlphaRegion(10, 10, 500, 420); AddHtmlLocalized(10, 12, 520, 20, 1079717, LabelColor, false, false); //<CENTER>IMBUING CONFIRMATION</CENTER> AddHtmlLocalized(50, 50, 200, 20, 1114269, LabelColor, false, false); //PROPERTY INFORMATION AddHtmlLocalized(25, 80, 80, 20, 1114270, LabelColor, false, false); //Property: AddHtmlLocalized(95, 80, 150, 20, m_Definition.AttributeName, LabelColor, false, false); AddHtmlLocalized(25, 100, 80, 20, 1114271, LabelColor, false, false); // Replaces: int replace = WhatReplacesWhat(m_Mod, m_Item); if (replace > 0) { AddHtmlLocalized(95, 100, 150, 20, replace, LabelColor, false, false); } // - Weight Modifier AddHtmlLocalized(25, 120, 80, 20, 1114272, 0xFFFFFF, false, false); //Weight: AddLabel(95, 120, 1153, String.Format("{0}x", ((double)m_Definition.Weight / 100.0).ToString("0.0"))); AddHtmlLocalized(25, 140, 80, 20, 1114273, LabelColor, false, false); //Intensity: AddLabel(95, 140, 1153, String.Format("{0}%", currentIntensity)); // - Materials needed AddHtmlLocalized(10, 200, 245, 20, 1044055, LabelColor, false, false); //<CENTER>MATERIALS</CENTER> AddHtmlLocalized(40, 230, 180, 20, m_Definition.PrimaryName, LabelColor, false, false); AddLabel(210, 230, 1153, m_PrimResAmount.ToString()); AddHtmlLocalized(40, 255, 180, 20, m_Definition.GemName, LabelColor, false, false); AddLabel(210, 255, 1153, m_GemAmount.ToString()); if (m_SpecResAmount > 0) { AddHtmlLocalized(40, 280, 180, 17, m_Definition.SpecialName, LabelColor, false, false); AddLabel(210, 280, 1153, m_SpecResAmount.ToString()); } // - Mod Description AddHtmlLocalized(280, 55, 200, 110, m_Definition.Description, LabelColor, false, false); AddHtmlLocalized(350, 200, 150, 20, 1113650, LabelColor, false, false); //RESULTS AddHtmlLocalized(280, 220, 150, 20, 1113645, LabelColor, false, false); //Properties: AddLabel(430, 220, m_TotalProps + 1 >= 5 ? 54 : 64, String.Format("{0}/5", m_TotalProps + 1)); int projWeight = m_TotalItemWeight + m_PropWeight; AddHtmlLocalized(280, 240, 150, 20, 1113646, LabelColor, false, false); //Total Property Weight: AddLabel(430, 240, projWeight >= m_MaxWeight ? 54 : 64, String.Format("{0}/{1}", projWeight, m_MaxWeight)); AddHtmlLocalized(280, 260, 150, 20, 1113647, LabelColor, false, false); //Times Imbued: AddLabel(430, 260, timesImbued >= 20 ? 54 : 64, String.Format("{0}/20", timesImbued)); // ===== CALCULATE DIFFICULTY ===== double dif; double suc = Imbuing.GetSuccessChance(from, item, m_TotalItemWeight, m_PropWeight, out dif); int color = 64; AddHtmlLocalized(300, 300, 150, 20, 1044057, 0xFFFFFF, false, false); // Success Chance: if (suc > 100) { suc = 100; } if (suc < 0) { suc = 0; } if (suc < 75.0) { if (suc >= 50.0) { color = 54; } else { color = 46; } } AddLabel(420, 300, color, String.Format("{0}%", suc.ToString("0.0"))); // - Attribute Level if (maxInt > 1) { // - Set Intesity to Minimum if (m_Value <= 0) { m_Value = 1; } // = New Value: AddHtmlLocalized(235, 350, 100, 17, 1062300, LabelColor, false, false); // New Value: if (m_Mod == 41) // - Mage Weapon Value ( i.e [Mage Weapon -25] ) { AddHtml(240, 368, 40, 20, String.Format("<CENTER><BASEFONT COLOR=#CCCCFF> -{0}</CENTER>", 30 - m_Value), false, false); } else if (maxInt <= 8 || m_Mod == 21 || m_Mod == 17) // - Show Property Value as just Number ( i.e [Mana Regen 2] ) { AddHtml(240, 368, 40, 20, String.Format("<CENTER><BASEFONT COLOR=#CCCCFF> {0}</CENTER>", m_Value), false, false); } else // - Show Property Value as % ( i.e [Hit Fireball 25%] ) { AddHtml(240, 368, 40, 20, String.Format("<CENTER><BASEFONT COLOR=#CCCCFF> {0}%</CENTER>", m_Value), false, false); } // == Buttons == AddButton(180, 370, 5230, 5230, 10053, GumpButtonType.Reply, 0); // To Minimum Value AddButton(200, 370, 5230, 5230, 10052, GumpButtonType.Reply, 0); // Dec Value by % AddButton(220, 370, 5230, 5230, 10051, GumpButtonType.Reply, 0); // dec value by 1 AddButton(320, 370, 5230, 5230, 10056, GumpButtonType.Reply, 0); //To Maximum Value AddButton(300, 370, 5230, 5230, 10055, GumpButtonType.Reply, 0); // Inc Value by % AddButton(280, 370, 5230, 5230, 10054, GumpButtonType.Reply, 0); // inc Value by 1 AddLabel(322, 368, 0, ">"); AddLabel(326, 368, 0, ">"); AddLabel(330, 368, 0, ">"); AddLabel(304, 368, 0, ">"); AddLabel(308, 368, 0, ">"); AddLabel(286, 368, 0, ">"); AddLabel(226, 368, 0, "<"); AddLabel(203, 368, 0, "<"); AddLabel(207, 368, 0, "<"); AddLabel(181, 368, 0, "<"); AddLabel(185, 368, 0, "<"); AddLabel(189, 368, 0, "<"); } AddButton(15, 410, 4005, 4007, 10099, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 410, 100, 18, 1114268, LabelColor, false, false); //Back AddButton(390, 410, 4005, 4007, 10100, GumpButtonType.Reply, 0); AddHtmlLocalized(425, 410, 120, 18, 1114267, LabelColor, false, false); //Imbue Item }
protected override void OnTarget(Mobile from, object o) { int number = -1; Item origItem = o as Item; SkillName skill = m_System.MainSkill; double value = from.Skills[skill].Value; AlterableAttribute alterInfo = GetAlterableAttribute(o, false); if (alterInfo == null) { alterInfo = GetAlterableAttribute(o, true); } if (origItem == null || !origItem.IsChildOf(from.Backpack)) { number = 1094729; // The item must be in your backpack for you to alter it. } else if (origItem is BlankScroll) { if (m_Contract == null) { if (value >= 100.0) { Item contract = null; if (skill == SkillName.Blacksmith) { contract = new AlterContract(RepairSkillType.Smithing, from); } else if (skill == SkillName.Carpentry) { contract = new AlterContract(RepairSkillType.Carpentry, from); } else if (skill == SkillName.Tailoring) { contract = new AlterContract(RepairSkillType.Tailoring, from); } else if (skill == SkillName.Tinkering) { contract = new AlterContract(RepairSkillType.Tinkering, from); } if (contract != null) { from.AddToBackpack(contract); number = 1044154; // You create the item. // Consume a blank scroll origItem.Consume(); } } else { number = 1111869; // You must be at least grandmaster level to create an alter service contract. } } else { number = 1094728; // You may not alter that item. } } else if (alterInfo == null) { number = 1094728; // You may not alter that item. } else if (!IsAlterable(origItem)) { number = 1094728; // You may not alter that item. } else if (alterInfo.CraftSystem != m_System.GetType()) { if (m_Tool != null) { // You may not alter that item. number = 1094728; } else { // You cannot alter that item with this type of alter contract. number = 1094793; } } else if (!Imbuing.CheckSoulForge(from, 2, false, false)) { number = 1111867; // You must be near a soulforge to alter an item. } else if (m_Contract == null && value < 100.0) { number = 1111870; // You must be at least grandmaster level to alter an item. } else if (origItem is BaseWeapon && ((BaseWeapon)origItem).EnchantedWeilder != null) { number = 1111849; // You cannot alter an item that is currently enchanted. } else if (origItem.HasSocket <SlayerSocket>()) { SlayerSocket socket = origItem.GetSocket <SlayerSocket>(); if (socket.Slayer == SlayerName.Silver) { number = 1155681; // You cannot alter an item that has been treated with Tincture of Silver. } else { number = 1111849; // You cannot alter an item that is currently enchanted. } } else { Item newitem = Activator.CreateInstance(alterInfo.AlteredType) as Item; if (newitem == null) { return; } if (origItem is BaseWeapon && newitem is BaseWeapon) { BaseWeapon oldweapon = (BaseWeapon)origItem; BaseWeapon newweapon = (BaseWeapon)newitem; newweapon.Slayer = oldweapon.Slayer; newweapon.Slayer2 = oldweapon.Slayer2; newweapon.Slayer3 = oldweapon.Slayer3; newweapon.Resource = oldweapon.Resource; if (oldweapon.PlayerConstructed) { newweapon.PlayerConstructed = true; newweapon.Crafter = oldweapon.Crafter; newweapon.Quality = oldweapon.Quality; } newweapon.Altered = true; } else if (origItem is BaseArmor && newitem is BaseArmor) { BaseArmor oldarmor = (BaseArmor)origItem; BaseArmor newarmor = (BaseArmor)newitem; if (oldarmor.PlayerConstructed) { newarmor.PlayerConstructed = true; newarmor.Crafter = oldarmor.Crafter; newarmor.Quality = oldarmor.Quality; } newarmor.Resource = oldarmor.Resource; newarmor.PhysicalBonus = oldarmor.PhysicalBonus; newarmor.FireBonus = oldarmor.FireBonus; newarmor.ColdBonus = oldarmor.ColdBonus; newarmor.PoisonBonus = oldarmor.PoisonBonus; newarmor.EnergyBonus = oldarmor.EnergyBonus; newarmor.Altered = true; } else if (origItem is BaseClothing && newitem is BaseClothing) { BaseClothing oldcloth = (BaseClothing)origItem; BaseClothing newcloth = (BaseClothing)newitem; if (oldcloth.PlayerConstructed) { newcloth.PlayerConstructed = true; newcloth.Crafter = oldcloth.Crafter; newcloth.Quality = oldcloth.Quality; } newcloth.Altered = true; } else if (origItem is BaseClothing && newitem is BaseArmor) { BaseClothing oldcloth = (BaseClothing)origItem; BaseArmor newarmor = (BaseArmor)newitem; if (oldcloth.PlayerConstructed) { int qual = (int)oldcloth.Quality; newarmor.PlayerConstructed = true; newarmor.Crafter = oldcloth.Crafter; newarmor.Quality = (ItemQuality)qual; } newarmor.Altered = true; } else if (origItem is BaseQuiver && newitem is BaseArmor) { ((BaseArmor)newitem).Altered = true; } else { return; } if (origItem.Name != null) { newitem.Name = origItem.Name; } else if (VendorSearching.VendorSearch.StringList != null) { if (origItem.LabelNumber > 0 && RetainsName(origItem)) { newitem.Name = VendorSearching.VendorSearch.StringList.GetString(origItem.LabelNumber); } } AlterResists(newitem, origItem); newitem.Hue = origItem.Hue; newitem.LootType = origItem.LootType; newitem.Insured = origItem.Insured; origItem.OnAfterDuped(newitem); newitem.Parent = null; if (origItem is IDurability && newitem is IDurability) { ((IDurability)newitem).MaxHitPoints = ((IDurability)origItem).MaxHitPoints; ((IDurability)newitem).HitPoints = ((IDurability)origItem).HitPoints; } if (from.Backpack == null) { newitem.MoveToWorld(from.Location, from.Map); } else { from.Backpack.DropItem(newitem); } newitem.InvalidateProperties(); if (m_Contract != null) { m_Contract.Delete(); } origItem.Delete(); EventSink.InvokeAlterItem(new AlterItemEventArgs(from, m_Tool is Item ? (Item)m_Tool : m_Contract, origItem, newitem)); number = 1094727; // You have altered the item. } if (m_Tool != null) { from.SendGump(new CraftGump(from, m_System, m_Tool, number)); } else { from.SendLocalizedMessage(number); } }
public override void OnResponse(NetState state, RelayInfo info) { Mobile from = state.Mobile; PlayerMobile pm = from as PlayerMobile; ImbuingContext context = Imbuing.GetContext(pm); int buttonNum = 0; if (info.ButtonID > 0 && info.ButtonID < 10000) { buttonNum = 1; } else if (info.ButtonID > 20004) { buttonNum = 30000; } else { buttonNum = info.ButtonID; } switch (buttonNum) { case 0: { //Close break; } case 1: { break; } case 10002: // = Cancel button { break; } case 10005: // = Imbue Item { if (!Imbuing.CheckSoulForge(from, 1)) { break; } from.SendLocalizedMessage(1079589); //Target an item you wish to imbue. from.Target = new ImbueItemTarget(); break; } case 10006: // = ReImbue Last ( Mod & Item ) { Item it = context.LastImbued; int mod = context.Imbue_Mod; int modint = context.Imbue_ModInt; if (!Imbuing.CheckSoulForge(from, 1)) { break; } if (it == null || mod < 0 || modint == 0) { from.SendLocalizedMessage(1113572); // You haven't imbued anything yet! break; } if (Imbuing.CanImbueItem(pm, it) && Imbuing.OnBeforeImbue(from, it, mod, modint)) { Imbuing.ImbueItem(from, it, mod, modint); from.SendGump(new ImbuingGump(from)); } break; } case 10007: // = Imbue Last ( Select Last imbued Item ) { Item item = context.LastImbued; int mod = context.Imbue_Mod; int modint = context.Imbue_ModInt; if (!Imbuing.CheckSoulForge(from, 1)) { break; } if (context.LastImbued == null) { from.SendLocalizedMessage(1113572); // You haven't imbued anything yet! break; } else { ImbueStep1(from, item); } break; } case 10008: // = Imbue Last Mod( To target Item ) { context.LastImbued = null; int mod = context.Imbue_Mod; int modint = context.Imbue_ModInt; if (modint < 0) { modint = 0; } if (!Imbuing.CheckSoulForge(from, 1)) { break; } if (mod < 0) { from.SendLocalizedMessage(1113572); // You haven't imbued anything yet! break; } else { ImbuingGump.ImbueLastProp(from, mod, modint); } break; } case 10010: // = Unravel Item { if (!Imbuing.CheckSoulForge(from, 1)) { break; } from.SendLocalizedMessage(1080422); // What item do you wish to unravel? from.Target = new UnravelTarget(); break; } case 10011: // = Unravel Container { if (!Imbuing.CheckSoulForge(from, 1)) { break; } from.SendMessage("Which Container do you wish to unravel the contents of?"); from.Target = new UnravelContainerTarget(); break; } } return; }
public override void AddGumpLayout() { // SoulForge Check if (!Imbuing.CheckSoulForge(User, 2)) { return; } ImbuingContext context = Imbuing.GetContext(User); if (!ItemPropertyInfo.Table.ContainsKey(m_ID)) { return; } m_Info = ItemPropertyInfo.Table[m_ID]; int minInt = ItemPropertyInfo.GetMinIntensity(m_Item, m_ID); int maxInt = ItemPropertyInfo.GetMaxIntensity(m_Item, m_ID); int weight = m_Info.Weight; if (m_Value < minInt) { m_Value = minInt; } if (m_Value > maxInt) { m_Value = maxInt; } double currentIntensity = Math.Floor((m_Value / (double)maxInt) * 100); // Set context context.LastImbued = m_Item; context.Imbue_Mod = m_ID; context.Imbue_ModVal = weight; context.ImbMenu_ModInc = ItemPropertyInfo.GetScale(m_Item, m_ID); // Current Mod Weight m_TotalItemWeight = Imbuing.GetTotalWeight(m_Item, m_ID); m_TotalProps = Imbuing.GetTotalMods(m_Item, m_ID); if (maxInt <= 1) { currentIntensity = 100; } var propWeight = (int)Math.Floor(((double)weight / (double)maxInt) * m_Value); // Maximum allowed Property Weight & Item Mod Count m_MaxWeight = Imbuing.GetMaxWeight(m_Item); // Times Item has been Imbued int timesImbued = Imbuing.TimesImbued(m_Item); // Check Ingredients needed at the current Intensity var gemAmount = Imbuing.GetGemAmount(m_Item, m_ID, m_Value); var primResAmount = Imbuing.GetPrimaryAmount(m_Item, m_ID, m_Value); var specResAmount = Imbuing.GetSpecialAmount(m_Item, m_ID, m_Value); AddPage(0); AddBackground(0, 0, 520, 440, 5054); AddImageTiled(10, 10, 500, 420, 2624); AddImageTiled(10, 30, 500, 10, 5058); AddImageTiled(250, 40, 10, 290, 5058); AddImageTiled(10, 180, 500, 10, 5058); AddImageTiled(10, 330, 500, 10, 5058); AddImageTiled(10, 400, 500, 10, 5058); AddAlphaRegion(10, 10, 500, 420); AddHtmlLocalized(10, 12, 520, 20, 1079717, LabelColor, false, false); // <CENTER>IMBUING CONFIRMATION</CENTER> AddHtmlLocalized(50, 50, 200, 20, 1114269, LabelColor, false, false); // PROPERTY INFORMATION AddHtmlLocalized(25, 80, 80, 20, 1114270, LabelColor, false, false); // Property: if (m_Info.AttributeName != null) { AddHtmlLocalized(95, 80, 150, 20, 1114057, m_Info.AttributeName.ToString(), LabelColor, false, false); } AddHtmlLocalized(25, 100, 80, 20, 1114271, LabelColor, false, false); // Replaces: var replace = WhatReplacesWhat(m_ID, m_Item); if (replace != null) { AddHtmlLocalized(95, 100, 150, 20, 1114057, replace.ToString(), LabelColor, false, false); } // Weight Modifier AddHtmlLocalized(25, 120, 80, 20, 1114272, 0xFFFFFF, false, false); // Weight: AddLabel(95, 120, IceHue, String.Format("{0}x", ((double)m_Info.Weight / 100.0).ToString("0.0"))); AddHtmlLocalized(25, 140, 80, 20, 1114273, LabelColor, false, false); // Intensity: AddLabel(95, 140, IceHue, String.Format("{0}%", currentIntensity)); // Materials needed AddHtmlLocalized(10, 200, 245, 20, 1044055, LabelColor, false, false); // <CENTER>MATERIALS</CENTER> AddHtmlLocalized(40, 230, 180, 20, m_Info.PrimaryName, LabelColor, false, false); AddLabel(210, 230, IceHue, primResAmount.ToString()); AddHtmlLocalized(40, 255, 180, 20, m_Info.GemName, LabelColor, false, false); AddLabel(210, 255, IceHue, gemAmount.ToString()); if (specResAmount > 0) { AddHtmlLocalized(40, 280, 180, 17, m_Info.SpecialName, LabelColor, false, false); AddLabel(210, 280, IceHue, specResAmount.ToString()); } // Mod Description AddHtmlLocalized(280, 55, 200, 110, m_Info.Description, LabelColor, false, false); AddHtmlLocalized(350, 200, 150, 20, 1113650, LabelColor, false, false); // RESULTS AddHtmlLocalized(280, 220, 150, 20, 1113645, LabelColor, false, false); // Properties: AddLabel(430, 220, GetColor(m_TotalProps + 1, 5), String.Format("{0}/{1}", m_TotalProps + 1, Imbuing.GetMaxProps(m_Item))); int projWeight = m_TotalItemWeight + propWeight; AddHtmlLocalized(280, 240, 150, 20, 1113646, LabelColor, false, false); // Total Property Weight: AddLabel(430, 240, GetColor(projWeight, m_MaxWeight), String.Format("{0}/{1}", projWeight, m_MaxWeight)); AddHtmlLocalized(280, 260, 150, 20, 1113647, LabelColor, false, false); // Times Imbued: AddLabel(430, 260, GetColor(timesImbued, 20), String.Format("{0}/20", timesImbued)); // ===== CALCULATE DIFFICULTY ===== var truePropWeight = (int)(((double)propWeight / (double)weight) * 100); var trueTotalWeight = Imbuing.GetTotalWeight(m_Item, -1, false); double dif; double suc = Imbuing.GetSuccessChance(User, m_Item, trueTotalWeight, truePropWeight, out dif); AddHtmlLocalized(300, 300, 150, 20, 1044057, 0xFFFFFF, false, false); // Success Chance: AddLabel(420, 300, GetSuccessChanceHue(suc), String.Format("{0}%", suc.ToString("0.0"))); // - Attribute Level if (maxInt > 1) { AddHtmlLocalized(235, 350, 100, 17, 1062300, LabelColor, false, false); // New Value: if (m_ID == 41) // - Mage Weapon Value ( i.e [Mage Weapon -25] ) { AddLabel(250, 370, IceHue, String.Format("-{0}", 30 - m_Value)); } else if (maxInt <= 8 || m_ID == 21 || m_ID == 17) // - Show Property Value as just Number ( i.e [Mana Regen 2] ) { AddLabel(256, 370, IceHue, String.Format("{0}", m_Value)); // - Show Property Value as % ( i.e [Hit Fireball 25%] ) } else { int val = m_Value; if (m_ID >= 51 && m_ID <= 55) { var resistances = Imbuing.GetBaseResists(m_Item); switch (m_ID) { case 51: val += resistances[0]; break; case 52: val += resistances[1]; break; case 53: val += resistances[2]; break; case 54: val += resistances[3]; break; case 55: val += resistances[4]; break; } } AddLabel(256, 370, IceHue, String.Format("{0}%", val)); } // Buttons AddButton(179, 372, 0x1464, 0x1464, 10053, GumpButtonType.Reply, 0); AddButton(187, 372, 0x1466, 0x1466, 10053, GumpButtonType.Reply, 0); AddButton(199, 372, 0x1464, 0x1464, 10052, GumpButtonType.Reply, 0); AddButton(207, 372, 0x1466, 0x1466, 10052, GumpButtonType.Reply, 0); AddButton(221, 372, 0x1464, 0x1464, 10051, GumpButtonType.Reply, 0); AddButton(229, 372, 0x1466, 0x1466, 10051, GumpButtonType.Reply, 0); AddButton(280, 372, 0x1464, 0x1464, 10054, GumpButtonType.Reply, 0); AddButton(288, 372, 0x1466, 0x1466, 10054, GumpButtonType.Reply, 0); AddButton(300, 372, 0x1464, 0x1464, 10055, GumpButtonType.Reply, 0); AddButton(308, 372, 0x1466, 0x1466, 10055, GumpButtonType.Reply, 0); AddButton(320, 372, 0x1464, 0x1464, 10056, GumpButtonType.Reply, 0); AddButton(328, 372, 0x1466, 0x1466, 10056, GumpButtonType.Reply, 0); AddLabel(322, 370, 0, ">"); AddLabel(326, 370, 0, ">"); AddLabel(330, 370, 0, ">"); AddLabel(304, 370, 0, ">"); AddLabel(308, 370, 0, ">"); AddLabel(286, 370, 0, ">"); AddLabel(226, 370, 0, "<"); AddLabel(203, 370, 0, "<"); AddLabel(207, 370, 0, "<"); AddLabel(181, 370, 0, "<"); AddLabel(185, 370, 0, "<"); AddLabel(189, 370, 0, "<"); } AddButton(15, 410, 4005, 4007, 10099, GumpButtonType.Reply, 0); AddHtmlLocalized(50, 410, 100, 18, 1114268, LabelColor, false, false); // Back AddButton(390, 410, 4005, 4007, 10100, GumpButtonType.Reply, 0); AddHtmlLocalized(425, 410, 120, 18, 1114267, LabelColor, false, false); // Imbue Item }
protected override void OnTarget(Mobile from, object o) { int number = -1; Item origItem = o as Item; SkillName skill = m_System.MainSkill; double value = from.Skills[skill].Value; AlterableAttribute alterInfo = GetAlterableAttribute(o, false); if (alterInfo == null) { alterInfo = GetAlterableAttribute(o, true); } if (origItem == null || !origItem.IsChildOf(from.Backpack)) { number = 1094729; // The item must be in your backpack for you to alter it. } else if (origItem is BlankScroll) { if (m_Contract == null) { if (value >= 100.0) { Item contract = null; if (skill == SkillName.Blacksmith) { contract = new AlterContract(RepairSkillType.Smithing, from); } else if (skill == SkillName.Carpentry) { contract = new AlterContract(RepairSkillType.Carpentry, from); } else if (skill == SkillName.Tailoring) { contract = new AlterContract(RepairSkillType.Tailoring, from); } else if (skill == SkillName.Tinkering) { contract = new AlterContract(RepairSkillType.Tinkering, from); } if (contract != null) { from.AddToBackpack(contract); number = 1044154; // You create the item. // Consume a blank scroll origItem.Consume(); } } else { number = 1111869; // You must be at least grandmaster level to create an alter service contract. } } else { number = 1094728; // You may not alter that item. } } else if (alterInfo == null) { number = 1094728; // You may not alter that item. } else if (!IsAlterable(origItem)) { number = 1094728; // You may not alter that item. } else if (alterInfo.CraftSystem != m_System.GetType()) { if (m_Tool != null) { // You may not alter that item. number = 1094728; } else { // You cannot alter that item with this type of alter contract. number = 1094793; } } else if (!Imbuing.CheckSoulForge(from, 2, false, false)) { number = 1111867; // You must be near a soulforge to alter an item. } else if (m_Contract == null && value < 100.0) { number = 1111870; // You must be at least grandmaster level to alter an item. } else if (origItem is BaseWeapon weapon && weapon.EnchantedWeilder != null) { number = 1111849; // You cannot alter an item that is currently enchanted. }