public void AddAllScrollsInPack(Mobile from) { if (from == null) { return; } if (from.Backpack == null) { return; } List <PowerScroll> m_PowerScrolls = from.Backpack.FindItemsByType <PowerScroll>(); int totalCount = 0; Queue m_Queue = new Queue(); foreach (PowerScroll powerScroll in m_PowerScrolls) { m_Queue.Enqueue(powerScroll); } while (m_Queue.Count > 0) { PowerScroll powerScroll = (PowerScroll)m_Queue.Dequeue(); PowerScrollLibraryEntry entry = GetEntryDetail(powerScroll.Skill); if (entry == null) { continue; } switch ((int)powerScroll.Value) { case 105: entry.Value105++; break; case 110: entry.Value110++; break; case 115: entry.Value115++; break; case 120: entry.Value120++; break; } totalCount++; powerScroll.Delete(); } if (totalCount > 1) { from.SendMessage("You add " + totalCount.ToString() + " power scrolls to the library."); from.SendSound(addItemSound); } else if (totalCount == 1) { from.SendMessage("You add a power scroll to the library."); from.SendSound(addItemSound); } else { from.SendMessage("You do not have any power scrolls in your backpack."); } }
public void OnTarget(Mobile from, object targeted) { if (targeted is Item && !((Item)targeted).IsChildOf(from.Backpack)) { from.SendLocalizedMessage(1060640); // The item must be in your backpack to use it. return; } switch (BinderType) { case BinderType.None: { if (targeted is PowerScroll) { PowerScroll ps = (PowerScroll)targeted; if (ps.Value >= 120) { from.SendLocalizedMessage(1113144); // This scroll is already the highest of its type and cannot be bound. return; } double value = ps.Value; int needed = 0; if (value == 105) { needed = 8; } else if (value == 110) { needed = 12; } else if (value == 115) { needed = 10; } else { return; } Value = value; Needed = needed; Has = 1; Skill = ps.Skill; BinderType = BinderType.PowerScroll; ps.Delete(); } else if (targeted is StatCapScroll) { StatCapScroll ss = (StatCapScroll)targeted; if (ss.Value >= 250) { from.SendLocalizedMessage(1113144); //This scroll is already the highest of its type and cannot be bound. return; } double value = ss.Value; int needed = 0; if (value == 230) { needed = 6; } else if (value == 235) { needed = 8; } else if (value == 240) { needed = 8; } else if (value == 245) { needed = 5; } else { return; } Value = value; Needed = needed; Has = 1; BinderType = BinderType.StatScroll; ss.Delete(); } else if (targeted is ScrollOfTranscendence) { ScrollOfTranscendence sot = (ScrollOfTranscendence)targeted; if (sot.Value >= 5.0) { from.SendLocalizedMessage(1113144); //This scroll is already the highest of its type and cannot be bound. return; } Skill = sot.Skill; BinderType = BinderType.SOT; Needed = 2; Has = sot.Value; sot.Delete(); } else { from.SendLocalizedMessage(1113142); // You may only bind powerscrolls, stats scrolls or scrolls of transcendence. } break; } case BinderType.PowerScroll: { if (targeted is PowerScroll) { PowerScroll ps = (PowerScroll)targeted; if (ps.Skill != Skill || ps.Value != Value) { from.SendLocalizedMessage(1113143); // This scroll does not match the type currently being bound. return; } Has++; if (Has >= Needed) { GiveItem(from, new PowerScroll(Skill, Value + 5)); from.SendLocalizedMessage(1113145); // You've completed your binding and received an upgraded version of your scroll! ps.Delete(); Delete(); } else { ps.Delete(); } } else if (targeted is ScrollBinderDeed) { ScrollBinderDeed sb = (ScrollBinderDeed)targeted; if (sb == this) { return; } if (sb.BinderType != BinderType || sb.Value != Value || sb.Skill != Skill) { from.SendLocalizedMessage(1113143); // This scroll does not match the type currently being bound. return; } Has += sb.Has; double rest = Has - Needed; if (Has >= Needed) { GiveItem(from, new PowerScroll(Skill, Value + 5)); from.SendLocalizedMessage(1113145); // You've completed your binding and received an upgraded version of your scroll! Delete(); } if (rest > 0) { sb.Has = rest; } else { sb.Delete(); } } break; } case BinderType.StatScroll: { if (targeted is StatCapScroll) { StatCapScroll ss = (StatCapScroll)targeted; if (ss.Value != Value) { from.SendLocalizedMessage(1113143); // This scroll does not match the type currently being bound. return; } Has++; if (Has >= Needed) { GiveItem(from, new StatCapScroll((int)Value + 5)); from.SendLocalizedMessage(1113145); // You've completed your binding and received an upgraded version of your scroll! ss.Delete(); Delete(); } else { ss.Delete(); } } else if (targeted is ScrollBinderDeed) { ScrollBinderDeed sb = (ScrollBinderDeed)targeted; if (sb == this) { return; } if (sb.BinderType != BinderType || sb.Value != Value) { from.SendLocalizedMessage(1113143); // This scroll does not match the type currently being bound. return; } Has += sb.Has; double rest = Has - Needed; if (Has >= Needed) { GiveItem(from, new StatCapScroll((int)Value + 5)); from.SendLocalizedMessage(1113145); // You've completed your binding and received an upgraded version of your scroll! Delete(); } if (rest > 0) { sb.Has = rest; } else { sb.Delete(); } } break; } case BinderType.SOT: { if (targeted is ScrollOfTranscendence) { ScrollOfTranscendence sot = (ScrollOfTranscendence)targeted; if (sot.Skill != Skill) { from.SendLocalizedMessage(1113143); // This scroll does not match the type currently being bound. return; } if (sot.Value >= 5.0) { from.SendLocalizedMessage(1113144); // This scroll is already the highest of its type and cannot be bound. return; } double newValue = sot.Value + Has; if (newValue > 2 && Needed == 2) { Needed = 5; } if (newValue == Needed) { GiveItem(from, new ScrollOfTranscendence(Skill, Needed)); from.SendLocalizedMessage(1113145); // You've completed your binding and received an upgraded version of your scroll! Delete(); } else if (newValue > Needed) { from.SendGump(new BinderWarningGump(newValue, this, sot, Needed)); } else { Has += sot.Value; sot.Delete(); } } else if (targeted is ScrollBinderDeed) { ScrollBinderDeed sb = (ScrollBinderDeed)targeted; if (sb == this) { return; } if (sb.BinderType != BinderType || sb.Skill != Skill) { from.SendLocalizedMessage(1113143); // This scroll does not match the type currently being bound. return; } double newValue = sb.Has + Has; if (newValue > 2 && Needed == 2) { Needed = 5; } Has = newValue; double rest = Has - Needed; if (Has >= Needed) { GiveItem(from, new ScrollOfTranscendence(Skill, Needed)); from.SendLocalizedMessage(1113145); // You've completed your binding and received an upgraded version of your scroll! Delete(); } if (rest > 0) { sb.Has = rest; } else { sb.Delete(); } } break; } } }
public void OnTarget(Mobile from, object targeted) { if (targeted is Item && !((Item)targeted).IsChildOf(from.Backpack)) { from.SendMessage("The scroll must be in your backpack to bind."); return; } switch (m_BinderType) { case BinderType.None: { if (targeted is PowerScroll) { PowerScroll ps = (PowerScroll)targeted; if (ps.Value >= 120) { from.SendLocalizedMessage(1113144); //This scroll is already the highest of its type and cannot be bound. } else { double value = ps.Value; int needed = 0; if (value == 105) { needed = 8; } else if (value == 110) { needed = 12; } else if (value == 115) { needed = 10; } else { return; } m_Value = value; m_Needed = needed; m_Has = 1; m_Skill = ps.Skill; m_BinderType = BinderType.PowerScroll; ps.Delete(); from.SendMessage("Binding Powerscroll."); from.PlaySound(0x249); } } else if (targeted is StatCapScroll) { StatCapScroll ps = (StatCapScroll)targeted; if (ps.Value >= 250) { from.SendLocalizedMessage(1113144); //This scroll is already the highest of its type and cannot be bound. } else { double value = ps.Value; int needed = 0; if (value == 230) { needed = 6; } else if (value == 235) { needed = 8; } else if (value == 240) { needed = 8; } else if (value == 245) { needed = 5; } else { return; } m_Value = value; m_Needed = needed; m_Has = 1; m_BinderType = BinderType.StatScroll; ps.Delete(); from.SendMessage("Binding Stat Scroll."); from.PlaySound(0x249); } } else if (targeted is ScrollofTranscendence) { ScrollofTranscendence sot = (ScrollofTranscendence)targeted; m_Skill = sot.Skill; m_BinderType = BinderType.SOT; m_Needed = 5; m_Has = sot.Value; sot.Delete(); from.SendLocalizedMessage(1113146); //Binding Scrolls of Transcendence from.PlaySound(0x249); } else { from.SendLocalizedMessage(1113142); //You may only bind powerscrolls, stats scrolls or scrolls of transcendence. } break; } case BinderType.PowerScroll: { if (targeted is PowerScroll) { PowerScroll ps = (PowerScroll)targeted; if (ps.Value == m_Value) { if (ps.Skill == m_Skill) { m_Has++; if (m_Has >= m_Needed) { GiveItem(from, new PowerScroll(m_Skill, m_Value + 5)); from.SendLocalizedMessage(1113145); //You've completed your binding and received an upgraded version of your scroll! ps.Delete(); Delete(); } else { ps.Delete(); from.PlaySound(0x249); from.SendMessage("Binding Powerscroll."); } } else { from.SendLocalizedMessage(1113143); //This scroll does not match the type currently being bound. } } else { from.SendLocalizedMessage(1113143); //This scroll does not match the type currently being bound. } } else { from.SendLocalizedMessage(1113143); //This scroll does not match the type currently being bound. } break; } case BinderType.StatScroll: { if (targeted is StatCapScroll) { StatCapScroll stat = (StatCapScroll)targeted; if (stat.Value == m_Value) { m_Has++; if (m_Has >= m_Needed) { GiveItem(from, new StatCapScroll((int)m_Value + 5)); from.SendLocalizedMessage(1113145); //You've completed your binding and received an upgraded version of your scroll! stat.Delete(); Delete(); } else { from.SendMessage("Binding Stat Scroll."); from.PlaySound(0x249); stat.Delete(); } } else { from.SendLocalizedMessage(1113143); //This scroll does not match the type currently being bound. } } else { from.SendLocalizedMessage(1113143); //This scroll does not match the type currently being bound. } break; } case BinderType.SOT: { if (targeted is ScrollofTranscendence) { ScrollofTranscendence sot = (ScrollofTranscendence)targeted; if (sot.Skill == m_Skill) { double newValue = sot.Value + m_Has; if (newValue == m_Needed) { GiveItem(from, new ScrollofTranscendence(m_Skill, m_Needed)); from.SendLocalizedMessage(1113145); //You've completed your binding and received an upgraded version of your scroll! Delete(); } else if (newValue > m_Needed) { from.SendGump(new BinderWarningGump(newValue, this, sot, m_Needed)); } else { m_Has += sot.Value; sot.Delete(); from.PlaySound(0x249); from.SendLocalizedMessage(1113146); //Binding Scrolls of Transcendence } } else { from.SendLocalizedMessage(1113143); //This scroll does not match the type currently being bound. } } else { from.SendLocalizedMessage(1113143); //This scroll does not match the type currently being bound. } break; } } InvalidateProperties(); }