public void RemoveMaster(Mobile from, int id, int amount = 0) { MasterSpell master = getMaster(id); SpellScroll item; if ((master.Charges - amount) < 0) { from.SendMessage("You don't have that many charges."); return; } if ((amount == 0) || ((master.Charges - amount) == 0)) { item = Activator.CreateInstance(Loot.RegularScrollTypes[master.ID]) as SpellScroll; item.MasterStatus = 2; item.UsesRemaining = master.Charges; from.AddToBackpack(item); from.SendMessage("You remove the master scroll from your book."); m_Data.Remove(master); } else { item = Activator.CreateInstance(Loot.RegularScrollTypes[master.ID]) as SpellScroll; item.MasterStatus = 2; item.UsesRemaining = amount; from.AddToBackpack(item); from.SendMessage("You carefully remove part of the master scroll."); master.Charges -= amount; } }
public void AddMaster(Item item) { var scroll = item as SpellScroll; int id = scroll.SpellID; MasterSpell master = getMaster(id); if (master == null) { m_Data.Add(new MasterSpell(getScrollName(id), id, scroll.UsesRemaining)); m_Data.Sort((a, b) => a.ID.CompareTo(b.ID)); } else { master.Charges += scroll.UsesRemaining; } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadEncodedInt(); m_Data = new List <MasterSpell>(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { String name = reader.ReadString(); int id = reader.ReadInt(); int charges = reader.ReadInt(); MasterSpell newSpell = new MasterSpell(name, id, charges); m_Data.Add(newSpell); } }
public void GetSpellClassFrom(MasterSpell spell) { SpellModifierPanel.SetActive(true); Spellname.text = spell.spellname; Effect.text = spell.effect; if (spell.damagePure > 0) { DamagePure.color = PositiveStatColor; DamagePure.text = "+" + spell.damagePure.ToString("F1") + " damage"; } else if (spell.damagePure < 0) { DamagePure.color = Color.red; DamagePure.text = "-" + spell.damagePure.ToString("F1") + " damage"; } if (spell.damagePercent > 1) { DamagePercet.color = PositiveStatColor; DamagePercet.text = ((spell.damagePercent * 100)).ToString("F0") + "%"; } else if (spell.damagePercent < 1) { DamagePercet.color = Color.red; DamagePercet.text = ((spell.damagePercent * 100)).ToString("F0") + "%"; } if (spell.cooldownSeconds < 0) { CooldownSeconds.color = PositiveStatColor; CooldownSeconds.text = "-" + spell.cooldownSeconds.ToString("F1") + " seconds"; } else if (spell.cooldownSeconds > 0) { CooldownSeconds.color = Color.red; CooldownSeconds.text = "+" + spell.cooldownSeconds.ToString("F1") + " seconds"; } if (spell.cooldownPercent < 1) { CooldownPercent.color = PositiveStatColor; CooldownPercent.text = ((spell.cooldownPercent * 100)).ToString("F0") + "%"; } else if (spell.cooldownPercent > 1) { CooldownPercent.color = Color.red; CooldownPercent.text = ((spell.cooldownPercent * 100)).ToString("F0") + "%"; } if (spell.damagePure == 0) { DamagePure.color = StartStatColor; DamagePure.text = "---"; } if (spell.damagePercent == 0) { DamagePercet.color = StartStatColor; DamagePercet.text = "---"; } if (spell.cooldownSeconds == 0) { CooldownSeconds.color = StartStatColor; CooldownSeconds.text = "---"; } if (spell.cooldownPercent == 0) { CooldownPercent.color = StartStatColor; CooldownPercent.text = "---"; } SpellImage.sprite = spell.GetComponent <Image>().sprite; }