public static string GetAspectName(AspectEnum aspect) { switch (aspect) { case AspectEnum.Air: return("Air"); case AspectEnum.Command: return("Command"); case AspectEnum.Earth: return("Earth"); case AspectEnum.Eldritch: return("Eldritch"); case AspectEnum.Fire: return("Fire"); case AspectEnum.Lyric: return("Lyric"); case AspectEnum.Poison: return("Poison"); case AspectEnum.Shadow: return("Shadow"); case AspectEnum.Void: return("Void"); case AspectEnum.Water: return("Water"); } return(""); }
public AspectArmorDetail(AspectEnum aspectType, int tierLevel) { m_Aspect = aspectType; m_TierLevel = tierLevel; switch (aspectType) { case AspectEnum.Lyric: break; case AspectEnum.Air: break; case AspectEnum.Command: break; case AspectEnum.Earth: break; case AspectEnum.Eldritch: break; case AspectEnum.Fire: break; case AspectEnum.Poison: break; case AspectEnum.Shadow: break; case AspectEnum.Void: break; case AspectEnum.Water: break; } }
public override void OnResponse(NetState sender, RelayInfo info) { if (m_Player == null) { return; } if (m_Player.Backpack == null) { return; } Item targetItem = m_Item as Item; if (targetItem == null) { m_Player.SendMessage("You cannot improve that."); return; } if (!(targetItem is BaseWeapon || targetItem is BaseArmor)) { m_Player.SendMessage("You may only improve weapons and armor."); return; } if (targetItem is BaseShield) { m_Player.SendMessage("You may only improve weapons and armor."); return; } if (!(targetItem.IsChildOf(m_Player.Backpack) || targetItem.RootParent == m_Player)) { m_Player.SendMessage("The item you wish to improve must be equipped or in your backpack."); return; } Type itemType = targetItem.GetType(); CraftItem craftItem = null; switch (m_AspectMould.MouldType) { case AspectMould.MouldSkillType.Blacksmithy: craftItem = DefBlacksmithy.CraftSystem.CraftItems.SearchFor(itemType); if (craftItem == null) { m_Player.SendMessage("You may only improve items craftable through blacksmithing with this mould."); return; } break; case AspectMould.MouldSkillType.Carpentry: craftItem = DefCarpentry.CraftSystem.CraftItems.SearchFor(itemType); if (craftItem == null) { m_Player.SendMessage("You may only improve items craftable through carpentry with this mould."); return; } break; case AspectMould.MouldSkillType.Tailoring: craftItem = DefTailoring.CraftSystem.CraftItems.SearchFor(itemType); if (craftItem == null) { m_Player.SendMessage("You may only improve items craftable through tailoring with this mould."); return; } break; } if (targetItem.DecorativeEquipment) { m_Player.SendMessage("Decorative equipment may not be improved."); return; } if (targetItem.LootType == LootType.Newbied) { m_Player.SendMessage("Newbied equipment may not be improved."); return; } if (targetItem.LootType == LootType.Blessed && targetItem.Aspect == AspectEnum.None) { m_Player.SendMessage("Blessed equipment may not be improved."); return; } BaseWeapon weapon = targetItem as BaseWeapon; BaseArmor armor = targetItem as BaseArmor; if (weapon != null) { if (weapon.TrainingWeapon) { m_Player.SendMessage("Training weapons may not be improved."); return; } if (weapon.DurabilityLevel != WeaponDurabilityLevel.Regular || weapon.AccuracyLevel != WeaponAccuracyLevel.Regular || weapon.DamageLevel != WeaponDamageLevel.Regular) { m_Player.SendMessage("Magical weapons may not be improved."); return; } } if (armor != null) { if (armor.DurabilityLevel != ArmorDurabilityLevel.Regular || armor.ProtectionLevel != ArmorProtectionLevel.Regular) { m_Player.SendMessage("Magical weapons may not be improved."); return; } } //Aspect Item if (targetItem.Aspect != AspectEnum.None && targetItem.TierLevel >= 1 && targetItem.TierLevel <= 10) { if (targetItem.TierLevel == 10) { m_Player.SendMessage("That item is already at it's maximum tier level."); return; } } else if (targetItem.Aspect == AspectEnum.None) { if (!(targetItem.Quality == Quality.Exceptional && targetItem.DisplayCrafter)) { m_Player.SendMessage("Only mastermarked items may be improved."); return; } } bool closeGump = true; switch (info.ButtonID) { //Guide case 1: closeGump = false; break; //Effect Info case 2: closeGump = false; break; //Previous Aspect case 3: if (m_Item.TierLevel == 0) { int aspectCount = Enum.GetNames(typeof(AspectEnum)).Length; int aspectIndex = (int)m_SelectedAspect - 1; if (aspectIndex <= 0) { aspectIndex = aspectCount - 1; } m_SelectedAspect = (AspectEnum)aspectIndex; m_Player.SendSound(0x057); closeGump = false; } break; //Next Aspect case 4: if (m_Item.TierLevel == 0) { int aspectCount = Enum.GetNames(typeof(AspectEnum)).Length; int aspectIndex = (int)m_SelectedAspect + 1; if (aspectIndex >= aspectCount) { aspectIndex = 1; } m_SelectedAspect = (AspectEnum)aspectIndex; m_Player.SendSound(0x057); closeGump = false; } break; //Create or Upgrade case 5: bool isValid = true; if (weapon != null) { if (m_AspectMould.Charges < AspectMould.ChargesNeededForWeapon) { m_Player.SendMessage("Improving a weapon requires a mould with at least " + AspectMould.ChargesNeededForWeapon.ToString() + " uses remaining."); closeGump = false; isValid = false; } } if (isValid && armor != null) { if (m_AspectMould.Charges < AspectMould.ChargesNeededForArmor) { m_Player.SendMessage("Improving armor requires a mould with at least " + AspectMould.ChargesNeededForWeapon.ToString() + " uses remaining."); closeGump = false; isValid = false; } } if (isValid && targetItem.Aspect != AspectEnum.None && targetItem.TierLevel >= 1 && targetItem.TierLevel <= 10) { if (targetItem.TierLevel >= m_AspectMould.TierLevel) { m_Player.SendMessage("You will need a mould of at least tier " + (targetItem.TierLevel + 1).ToString() + " or higher to upgrade this item's tier further."); closeGump = false; isValid = false; } } if (isValid && targetItem.TierLevel >= 1 && targetItem.Experience < AspectGear.ExperienceNeededToUpgrade) { m_Player.SendMessage("That Aspect item has not accumulated enough experience neccessary to upgrade it's tier."); closeGump = false; isValid = false; } //Materials Required string aspectName = AspectGear.GetAspectName(m_SelectedAspect); int distillationNeeded = 0; int coresNeeded = 0; if (targetItem.TierLevel == 0) { if (weapon != null) { distillationNeeded = AspectGear.DistillationNeededForWeaponCreation; coresNeeded = AspectGear.CoresNeededForWeaponCreation; } if (armor != null) { distillationNeeded = AspectGear.DistillationNeededForArmorCreation; coresNeeded = AspectGear.CoresNeededForArmorCreation; } } else { if (weapon != null) { distillationNeeded = AspectGear.DistillationNeededForWeaponUpgrade; coresNeeded = AspectGear.CoresNeededForWeaponUpgrade; } if (armor != null) { distillationNeeded = AspectGear.DistillationNeededForArmorUpgrade; coresNeeded = AspectGear.CoresNeededForArmorUpgrade; } } if (isValid) { List <AspectDistillation> m_DistillationHeld = m_Player.Backpack.FindItemsByType <AspectDistillation>(); List <AspectCore> m_AspectCoresHeld = m_Player.Backpack.FindItemsByType <AspectCore>(); List <AspectDistillation> m_MatchingDistillationHeld = new List <AspectDistillation>(); List <AspectCore> m_MatchingAspectCoresHeld = new List <AspectCore>(); int totalMatchingDistillation = 0; int totalMatchingCores = 0; foreach (AspectDistillation aspectDistillation in m_DistillationHeld) { if (aspectDistillation.Aspect == m_SelectedAspect) { totalMatchingDistillation += aspectDistillation.Amount; m_MatchingDistillationHeld.Add(aspectDistillation); } } foreach (AspectCore aspectCore in m_AspectCoresHeld) { if (aspectCore.Aspect == m_SelectedAspect) { totalMatchingCores += aspectCore.Amount; m_MatchingAspectCoresHeld.Add(aspectCore); } } bool hasRequiredMaterials = true; if (distillationNeeded > totalMatchingDistillation) { hasRequiredMaterials = false; m_Player.SendMessage(distillationNeeded.ToString() + " " + aspectName + " Distillation is required to proceed."); closeGump = false; } else if (coresNeeded > totalMatchingCores) { hasRequiredMaterials = false; m_Player.SendMessage(coresNeeded.ToString() + " " + aspectName + " Cores are required to proceed."); closeGump = false; } else { Queue m_Queue = new Queue(); foreach (AspectDistillation aspectDistillation in m_MatchingDistillationHeld) { if (aspectDistillation.Amount > distillationNeeded) { aspectDistillation.Amount -= distillationNeeded; distillationNeeded = 0; } else { distillationNeeded -= aspectDistillation.Amount; m_Queue.Enqueue(aspectDistillation); } if (distillationNeeded <= 0) { break; } } while (m_Queue.Count > 0) { AspectDistillation aspectDistillation = (AspectDistillation)m_Queue.Dequeue(); aspectDistillation.Delete(); } m_Queue = new Queue(); foreach (AspectCore aspectCore in m_MatchingAspectCoresHeld) { if (aspectCore.Amount > coresNeeded) { aspectCore.Amount -= coresNeeded; coresNeeded = 0; } else { coresNeeded -= aspectCore.Amount; m_Queue.Enqueue(aspectCore); } if (coresNeeded <= 0) { break; } } while (m_Queue.Count > 0) { AspectCore aspectCore = (AspectCore)m_Queue.Dequeue(); aspectCore.Delete(); } if (m_AspectMould != null) { if (weapon != null) { m_AspectMould.Charges -= AspectMould.ChargesNeededForWeapon; } else if (armor != null) { m_AspectMould.Charges -= AspectMould.ChargesNeededForArmor; } if (m_AspectMould.Charges <= 0) { m_AspectMould.Delete(); } } //Creation if (targetItem.TierLevel == 0) { targetItem.Quality = Quality.Regular; targetItem.DisplayCrafter = false; targetItem.ArcaneCharges = AspectGear.AspectStartingArcaneCharges; targetItem.ArcaneChargesMax = AspectGear.ArcaneMaxCharges; targetItem.TierLevel = 1; targetItem.Aspect = m_SelectedAspect; if (weapon != null) { m_Player.SendMessage("You create a new Aspect weapon."); weapon.MaxHitPoints = AspectGear.BaselineDurability + (AspectGear.IncreasedDurabilityPerTier * targetItem.TierLevel); weapon.HitPoints = weapon.MaxHitPoints; } if (armor != null) { m_Player.SendMessage("You create a new Aspect armor."); armor.MaxHitPoints = AspectGear.BaselineDurability + (AspectGear.IncreasedDurabilityPerTier * targetItem.TierLevel); armor.HitPoints = armor.MaxHitPoints; } } //Upgrade else { targetItem.TierLevel++; if (weapon != null) { m_Player.SendMessage("You upgrade your Aspect weapon's tier."); weapon.MaxHitPoints = AspectGear.BaselineDurability + (AspectGear.IncreasedDurabilityPerTier * targetItem.TierLevel); weapon.HitPoints = weapon.MaxHitPoints; } if (armor != null) { m_Player.SendMessage("You upgrade your Aspect armor's tier."); armor.MaxHitPoints = AspectGear.BaselineDurability + (AspectGear.IncreasedDurabilityPerTier * targetItem.TierLevel); armor.HitPoints = armor.MaxHitPoints; } } targetItem.Experience = 0; m_Player.PlaySound(0x64E); return; } } break; } if (closeGump) { m_Player.SendSound(0x058); } else { m_Player.CloseGump(typeof(AspectGearGump)); m_Player.SendGump(new AspectGearGump(m_Player, m_AspectMould, m_Item, m_SelectedAspect)); } }
public AspectGearGump(Mobile player, AspectMould aspectMould, Item item, AspectEnum selectedAspect) : base(10, 10) { m_Player = player as PlayerMobile; m_AspectMould = aspectMould; m_Item = item; m_SelectedAspect = selectedAspect; if (m_Player == null) { return; } if (m_Player.Deleted || !m_Player.Alive) { return; } if (m_AspectMould == null) { return; } if (m_AspectMould.Deleted) { return; } if (m_Item == null) { return; } if (m_Item.Deleted) { return; } if (!m_AspectMould.IsChildOf(m_Player.Backpack)) { m_Player.SendMessage("The mould you wish to use must be in your backpack in order to use it."); return; } Item targetItem = m_Item as Item; if (targetItem == null) { m_Player.SendMessage("You cannot improve that."); return; } if (!(targetItem is BaseWeapon || targetItem is BaseArmor)) { m_Player.SendMessage("You may only improve weapons and armor."); return; } if (targetItem is BaseShield) { m_Player.SendMessage("You may only improve weapons and armor."); return; } if (!(targetItem.IsChildOf(m_Player.Backpack) || targetItem.RootParent == m_Player)) { m_Player.SendMessage("The item you wish to improve must be equipped or in your backpack."); return; } Type itemType = targetItem.GetType(); CraftItem craftItem = null; switch (m_AspectMould.MouldType) { case AspectMould.MouldSkillType.Blacksmithy: craftItem = DefBlacksmithy.CraftSystem.CraftItems.SearchFor(itemType); if (craftItem == null) { m_Player.SendMessage("You may only improve items craftable through blacksmithing with this mould."); return; } break; case AspectMould.MouldSkillType.Carpentry: craftItem = DefCarpentry.CraftSystem.CraftItems.SearchFor(itemType); if (craftItem == null) { m_Player.SendMessage("You may only improve items craftable through carpentry with this mould."); return; } break; case AspectMould.MouldSkillType.Tailoring: craftItem = DefTailoring.CraftSystem.CraftItems.SearchFor(itemType); if (craftItem == null) { m_Player.SendMessage("You may only improve items craftable through tailoring with this mould."); return; } break; } if (targetItem.DecorativeEquipment) { m_Player.SendMessage("Decorative equipment may not be improved."); return; } if (targetItem.LootType == LootType.Newbied) { m_Player.SendMessage("Newbied equipment may not be improved."); return; } if (targetItem.LootType == LootType.Blessed && targetItem.Aspect == AspectEnum.None) { m_Player.SendMessage("Blessed equipment may not be improved."); return; } BaseWeapon weapon = targetItem as BaseWeapon; BaseArmor armor = targetItem as BaseArmor; if (weapon != null) { if (weapon.TrainingWeapon) { m_Player.SendMessage("Training weapons may not be improved."); return; } if (weapon.DurabilityLevel != WeaponDurabilityLevel.Regular || weapon.AccuracyLevel != WeaponAccuracyLevel.Regular || weapon.DamageLevel != WeaponDamageLevel.Regular) { m_Player.SendMessage("Magical weapons may not be improved."); return; } } if (armor != null) { if (armor.DurabilityLevel != ArmorDurabilityLevel.Regular || armor.ProtectionLevel != ArmorProtectionLevel.Regular) { m_Player.SendMessage("Magical weapons may not be improved."); return; } } //Aspect Item if (targetItem.Aspect != AspectEnum.None && targetItem.TierLevel >= 1 && targetItem.TierLevel <= 10) { if (targetItem.TierLevel == 10) { m_Player.SendMessage("That item is already at it's maximum tier level."); return; } } else if (targetItem.Aspect == AspectEnum.None) { if (!(targetItem.Quality == Quality.Exceptional && targetItem.DisplayCrafter)) { m_Player.SendMessage("Only mastermarked items may be improved."); return; } } #region Images AddImage(256, 251, 103); AddImage(127, 251, 103); AddImage(4, 251, 103); AddImage(4, 329, 103); AddImage(129, 329, 103); AddImage(69, 97, 103); AddImage(4, 97, 103); AddImage(128, 2, 103); AddImage(4, 2, 103); AddImage(256, 97, 103); AddImage(256, 2, 103); AddImage(127, 183, 103); AddImage(4, 183, 103); AddImage(256, 329, 103); AddImage(256, 183, 103); AddImage(128, 380, 103); AddImage(4, 380, 103); AddImage(256, 380, 103); AddImage(16, 15, 3604, 2052); AddImage(133, 15, 3604, 2052); AddImage(260, 15, 3604, 2052); AddImage(16, 137, 3604, 2052); AddImage(133, 135, 3604, 2052); AddImage(260, 137, 3604, 2052); AddImage(16, 203, 3604, 2052); AddImage(133, 203, 3604, 2052); AddImage(260, 203, 3604, 2052); AddImage(17, 342, 3604, 2052); AddImage(134, 342, 3604, 2052); AddImage(260, 342, 3604, 2052); #endregion int WhiteTextHue = 2499; int DetailTextHue = 2603; //Guide AddButton(18, 16, 2094, 2095, 1, GumpButtonType.Reply, 0); AddLabel(16, 3, 149, "Guide"); if (targetItem.Aspect != AspectEnum.None && targetItem.TierLevel > 0) { m_SelectedAspect = targetItem.Aspect; } int newTier = targetItem.TierLevel + 1; string requiredMouldName = ""; #region Mould Names switch (m_AspectMould.MouldType) { case AspectMould.MouldSkillType.Blacksmithy: switch (newTier) { case 1: requiredMouldName = "Basic Smithing Mould"; break; case 2: requiredMouldName = "Basic Smithing Mould"; break; case 3: requiredMouldName = "Advanced Smithing Mould"; break; case 4: requiredMouldName = "Advanced Smithing Mould"; break; case 5: requiredMouldName = "Expert Smithing Mould"; break; case 6: requiredMouldName = "Expert Smithing Mould"; break; case 7: requiredMouldName = "Master Smithing Mould"; break; case 8: requiredMouldName = "Master Smithing Mould"; break; case 9: requiredMouldName = "Legendary Smithing Mould"; break; case 10: requiredMouldName = "Legendary Smithing Mould"; break; } break; case AspectMould.MouldSkillType.Carpentry: switch (newTier) { case 1: requiredMouldName = "Basic Carpentry Mould"; break; case 2: requiredMouldName = "Basic Carpentry Mould"; break; case 3: requiredMouldName = "Advanced Carpentry Mould"; break; case 4: requiredMouldName = "Advanced Carpentry Mould"; break; case 5: requiredMouldName = "Expert Carpentry Mould"; break; case 6: requiredMouldName = "Expert Carpentry Mould"; break; case 7: requiredMouldName = "Master Carpentry Mould"; break; case 8: requiredMouldName = "Master Carpentry Mould"; break; case 9: requiredMouldName = "Legendary Carpentry Mould"; break; case 10: requiredMouldName = "Legendary Carpentry Mould"; break; } break; case AspectMould.MouldSkillType.Tailoring: switch (newTier) { case 1: requiredMouldName = "Basic Tailoring Mould"; break; case 2: requiredMouldName = "Basic Tailoring Mould"; break; case 3: requiredMouldName = "Advanced Tailoring Mould"; break; case 4: requiredMouldName = "Advanced Tailoring Mould"; break; case 5: requiredMouldName = "Expert Tailoring Mould"; break; case 6: requiredMouldName = "Expert Tailoring Mould"; break; case 7: requiredMouldName = "Master Tailoring Mould"; break; case 8: requiredMouldName = "Master Tailoring Mould"; break; case 9: requiredMouldName = "Legendary Tailoring Mould"; break; case 10: requiredMouldName = "Legendary Tailoring Mould"; break; } break; } #endregion string itemName = ""; string itemAspectName = ""; string aspectName = AspectGear.GetAspectName(m_SelectedAspect); int aspectHue = AspectGear.GetAspectHue(m_SelectedAspect); int aspectTextHue = AspectGear.GetAspectTextHue(m_SelectedAspect); int itemOffsetX = 0; int itemOffsetY = 0; int itemIconItemdId = 0; if (weapon != null) { AspectWeaponDetail aspectWeaponDetail = AspectGear.GetAspectWeaponDetail(m_SelectedAspect); if (weapon.TierLevel == 0) { AddLabel(129, 25, 149, "Create Aspect Weapon"); } else { AddLabel(129, 25, 149, "Upgrade Aspect Tier"); } itemName = weapon.Name; if (itemName == null) { itemName = ""; } itemName = Utility.Capitalize(itemName); itemAspectName = aspectName + " Tier " + newTier.ToString(); itemOffsetX = weapon.IconOffsetX; itemOffsetY = weapon.IconOffsetY; itemIconItemdId = weapon.IconItemId; AddLabel(Utility.CenteredTextOffset(195, itemName), 49, aspectTextHue, itemName); AddLabel(Utility.CenteredTextOffset(195, itemAspectName), 74, aspectTextHue, itemAspectName); AddItem(120 + itemOffsetX, 75 + itemOffsetY, itemIconItemdId, aspectHue); //Image int newDurability = AspectGear.BaselineDurability + (AspectGear.IncreasedDurabilityPerTier * newTier); int adjustedBlessedCharges = AspectGear.ArcaneMaxCharges; double accuracy = 100 * (AspectGear.BaseAccuracy + (AspectGear.AccuracyPerTier * (double)newTier)); double tactics = AspectGear.BaseTactics + (AspectGear.TacticsPerTier * (double)newTier); double effectChance = 11111; // AspectGear.BaseEffectChance + (AspectGear.BaseEffectChancePerTier * (double)newTier); effectChance *= AspectGear.GetEffectWeaponSpeedScalar(weapon); AddLabel(137, 168, WhiteTextHue, "Durability:"); AddLabel(214, 168, aspectTextHue, newDurability.ToString() + "/" + newDurability.ToString()); AddLabel(142, 188, WhiteTextHue, "Accuracy:"); AddLabel(214, 188, aspectTextHue, "+" + accuracy.ToString() + "%"); AddLabel(153, 208, WhiteTextHue, "Tactics:"); AddLabel(214, 208, aspectTextHue, "+" + tactics.ToString()); AddLabel(110, 228, WhiteTextHue, "Effect Chance:"); AddLabel(214, 228, aspectTextHue, Utility.CreateDecimalPercentageString(effectChance, 1)); AddLabel(109, 248, WhiteTextHue, "(scaled for weapon speed)"); AddLabel(149, 273, WhiteTextHue, "Special Effect"); AddLabel(169, 293, aspectTextHue, aspectWeaponDetail.m_EffectDisplayName); AddButton(149, 297, 1209, 1210, 2, GumpButtonType.Reply, 0); } if (armor != null) { if (armor.TierLevel == 0) { AddLabel(135, 25, 149, "Create Aspect Armor"); } else { AddLabel(135, 25, 149, "Upgrade Aspect Tier"); } itemName = armor.Name; if (itemName == null) { itemName = ""; } itemName = Utility.Capitalize(itemName); itemAspectName = aspectName + " Tier " + (targetItem.TierLevel + 1).ToString(); itemOffsetX = armor.IconOffsetX; itemOffsetY = armor.IconOffsetY; itemIconItemdId = armor.IconItemId; AddLabel(Utility.CenteredTextOffset(200, itemName), 49, aspectTextHue, itemName); AddLabel(Utility.CenteredTextOffset(200, itemAspectName), 74, aspectTextHue, itemAspectName); AddItem(120 + itemOffsetX, 75 + itemOffsetY, itemIconItemdId, aspectHue); //Image //TEST: FINISH!!! //Armor Details AddLabel(39, 165, WhiteTextHue, "Total Armor:"); AddLabel(126, 165, DetailTextHue, "20"); AddLabel(60, 185, WhiteTextHue, "Dex Loss:"); AddLabel(126, 185, DetailTextHue, "-5"); AddLabel(47, 205, WhiteTextHue, "Meditation:"); AddLabel(126, 205, DetailTextHue, "0%"); //Effects Loop int startY = 165; int spacingY = 40; for (int a = 0; a < 4; a++) { string effectName = "Effect"; string effectPercent = "25%"; AddLabel(Utility.CenteredTextOffset(260, effectName), startY, WhiteTextHue, effectName); AddLabel(Utility.CenteredTextOffset(260, effectPercent), startY + 20, DetailTextHue, effectPercent); startY += spacingY; } } //Change Aspect AddLabel(73, 347, 149, "Aspect"); AddLabel(Utility.CenteredTextOffset(94, aspectName), 376, aspectTextHue, aspectName); if (m_Item.TierLevel == 0) { AddButton(25, 376, 9909, 9909, 3, GumpButtonType.Reply, 0); //Left AddButton(139, 376, 9903, 9903, 4, GumpButtonType.Reply, 0); //Right } //Create or Upgrade AddButton(38, 432, 2152, 2154, 5, GumpButtonType.Reply, 0); if (targetItem.TierLevel == 0) { AddLabel(76, 436, 63, "Create"); } else { AddLabel(76, 436, 63, "Upgrade"); } //Materials Required int distillationNeeded = 0; int coresNeeded = 0; if (targetItem.TierLevel == 0) { if (weapon != null) { distillationNeeded = AspectGear.DistillationNeededForWeaponCreation; coresNeeded = AspectGear.CoresNeededForWeaponCreation; } if (armor != null) { distillationNeeded = AspectGear.DistillationNeededForArmorCreation; coresNeeded = AspectGear.CoresNeededForArmorCreation; } } else { if (weapon != null) { distillationNeeded = AspectGear.DistillationNeededForWeaponUpgrade; coresNeeded = AspectGear.CoresNeededForWeaponUpgrade; } if (armor != null) { distillationNeeded = AspectGear.DistillationNeededForArmorUpgrade; coresNeeded = AspectGear.CoresNeededForArmorUpgrade; } } AddLabel(228, 347, 149, "Required Materials"); AddItem(174, 368, 4323); AddLabel(226, 373, WhiteTextHue, requiredMouldName); AddItem(181, 403, 17686, aspectHue); AddLabel(225, 406, aspectTextHue, distillationNeeded.ToString() + " " + aspectName + " Distillation"); AddItem(184, 439, 3985, aspectHue); AddLabel(225, 436, aspectTextHue, coresNeeded.ToString() + " " + aspectName + " Cores"); }
public static AspectWeaponDetail GetAspectWeaponDetail(AspectEnum aspect) { AspectWeaponDetail detail = new AspectWeaponDetail(); #region Aspects switch (aspect) { case AspectEnum.Lyric: detail.m_SpecialEffect = WeaponSpecialEffectType.Inspiration; detail.m_EffectDisplayName = "Inspiration"; detail.m_EffectDescription = ""; break; case AspectEnum.Air: detail.m_SpecialEffect = WeaponSpecialEffectType.LightningStorm; detail.m_EffectDisplayName = "Lightning Storm"; detail.m_EffectDescription = ""; break; case AspectEnum.Command: detail.m_SpecialEffect = WeaponSpecialEffectType.Chaos; detail.m_EffectDisplayName = "Chaos"; detail.m_EffectDescription = ""; break; case AspectEnum.Earth: detail.m_SpecialEffect = WeaponSpecialEffectType.Tremor; detail.m_EffectDisplayName = "Tremor"; detail.m_EffectDescription = ""; break; case AspectEnum.Eldritch: detail.m_SpecialEffect = WeaponSpecialEffectType.EnergySurge; detail.m_EffectDisplayName = "Energy Surge"; detail.m_EffectDescription = ""; break; case AspectEnum.Fire: detail.m_SpecialEffect = WeaponSpecialEffectType.Meteor; detail.m_EffectDisplayName = "Meteor"; detail.m_EffectDescription = ""; break; case AspectEnum.Poison: detail.m_SpecialEffect = WeaponSpecialEffectType.Toxicity; detail.m_EffectDisplayName = "Toxicity"; detail.m_EffectDescription = ""; break; case AspectEnum.Shadow: detail.m_SpecialEffect = WeaponSpecialEffectType.Vanish; detail.m_EffectDisplayName = "Vanish"; detail.m_EffectDescription = ""; break; case AspectEnum.Void: detail.m_SpecialEffect = WeaponSpecialEffectType.Doom; detail.m_EffectDisplayName = "Doom"; detail.m_EffectDescription = ""; break; case AspectEnum.Water: detail.m_SpecialEffect = WeaponSpecialEffectType.WaveBlast; detail.m_EffectDisplayName = "Wave Blast"; detail.m_EffectDescription = ""; break; } #endregion return(detail); }
public static void OnArmorEquip(Mobile from, BaseArmor armor) { if (from == null) { return; } if (!(from is PlayerMobile)) { return; } PlayerMobile player = from as PlayerMobile; player.m_AspectArmorProfile = new AspectArmorProfile(); List <Layer> m_Layers = new List <Layer>(); m_Layers.Add(Layer.Helm); m_Layers.Add(Layer.Neck); m_Layers.Add(Layer.InnerTorso); m_Layers.Add(Layer.Arms); m_Layers.Add(Layer.Gloves); m_Layers.Add(Layer.Pants); AspectEnum currentAspect = AspectEnum.None; int lowestTier = 1000; int aspectArmorCount = 0; for (int a = 0; a < m_Layers.Count; a++) { BaseArmor targetArmor = player.FindItemOnLayer(m_Layers[a]) as BaseArmor; if (targetArmor == null) { return; } if (targetArmor.Deleted) { return; } if (targetArmor.Aspect == AspectEnum.None || targetArmor.TierLevel == 0) { return; } if (currentAspect == AspectEnum.None) { currentAspect = targetArmor.Aspect; lowestTier = targetArmor.TierLevel; } else { if (targetArmor.Aspect != currentAspect) { return; } if (targetArmor.TierLevel < lowestTier) { lowestTier = targetArmor.TierLevel; } } aspectArmorCount++; } if (aspectArmorCount == 6 && currentAspect != AspectEnum.None && lowestTier > 0 && lowestTier < 1000) { player.m_AspectArmorProfile.m_Aspect = currentAspect; player.m_AspectArmorProfile.m_TierLevel = lowestTier; string aspectName = GetAspectName(currentAspect); int effectHue = AspectGear.GetAspectHue(currentAspect); int effectTextHue = AspectGear.GetAspectTextHue(currentAspect); if (from.Hidden) { from.AllowedStealthSteps = 0; from.RevealingAction(); } from.FixedParticles(0x373A, 10, 15, 5036, effectHue, 0, EffectLayer.Head); from.SendSound(0x1ED); if (from.NetState != null) { from.PrivateOverheadMessage(MessageType.Emote, effectTextHue, false, "*" + aspectName + " Aspect*", from.NetState); } } UpdateArmorProperties(from); }