public override void Execute(TriggerBase trigger) { var target = GetTarget(trigger); var template = trigger.Get <SpellTemplate>("spell"); var level = trigger.Get <int>("level"); var spell = target.Spells.GetSpell(template.Id); if (spell == null) { trigger.ReplyError("Spell {0} not found", trigger.Bold(spell)); return; } if (!spell.ByLevel.ContainsKey(level)) { trigger.ReplyError("Level {0} not found. Give a level between {1} and {2}", trigger.Bold(level), trigger.Bold(spell.ByLevel.Keys.Min()), trigger.Bold(spell.ByLevel.Keys.Max())); return; } spell.CurrentLevel = (byte)level; trigger.ReplyBold("{0}'s spell {1} is now level {2}", target, spell.Template.Name, level); ContextRoleplayHandler.SendSpellModifySuccessMessage(target.Client, spell); }
public int DowngradeSpell(CharacterSpell spell, bool send = true) { if (!HasSpell(spell.Id)) { return(0); } if (spell.CurrentLevel <= 1) { return(0); } spell.CurrentLevel -= 1; Owner.SpellsPoints += spell.CurrentLevel; if (!send) { return(spell.CurrentLevel); } InventoryHandler.SendSpellListMessage(Owner.Client, true); ContextRoleplayHandler.SendSpellModifySuccessMessage(Owner.Client, spell); Owner.RefreshStats(); return(spell.CurrentLevel); }
public CharacterSpell LearnSpell(SpellTemplate template) { var record = SpellManager.Instance.CreateSpellRecord(Owner.Record, template); var spell = new CharacterSpell(record); m_spells.Add(spell.Id, spell); ContextRoleplayHandler.SendSpellModifySuccessMessage(Owner.Client, spell); return(spell); }
public bool BoostSpell(int id, ushort level) { var spell = GetSpell(id); if (spell == null) { ContextRoleplayHandler.SendSpellModifyFailureMessage(Owner.Client); return(false); } if (!CanBoostSpell(spell, level)) { return(false); } Owner.SpellsPoints -= (ushort)CalculateSpellPoints(level, spell.CurrentLevel); spell.CurrentLevel = (byte)level; ContextRoleplayHandler.SendSpellModifySuccessMessage(Owner.Client, spell); return(true); }