Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }