Esempio n. 1
0
        public List <SpellBuff> GetCharacterSpellBuff(int characterID)
        {
            var query      = "SELECT * FROM CharacterSpellBuff WHERE CharacterID = @CharacterID";
            var sqlCommand = factory.GetCommand(sqlConnection);

            sqlCommand.SetCommand(query);
            sqlCommand.AddParameter("@CharacterID", characterID);

            var sqlReader = sqlCommand.ExecuteReader();

            var list = new List <SpellBuff>();

            while (sqlReader.Read())
            {
                var buff = new SpellBuff()
                {
                    Index    = (int)sqlReader.GetData("BuffIndex"),
                    ID       = (int)sqlReader.GetData("BuffID"),
                    Duration = (int)sqlReader.GetData("BuffDuration"),
                    Level    = (int)sqlReader.GetData("BuffLevel")
                };

                list.Add(buff);
            }

            sqlReader.Close();
            return(list);
        }
Esempio n. 2
0
        protected override bool InternalApply()
        {
            foreach (var actor in GetAffectedActors())
            {
                var integerEffect = GenerateEffect();

                if (integerEffect == null || !actor.HasSpell(Dice.DiceNum))
                {
                    return(false);
                }

                var boostedSpell = actor.GetSpell(Dice.DiceNum);

                if (boostedSpell == null)
                {
                    return(false);
                }

                var buff = new SpellBuff(actor.PopNextBuffId(), actor, Caster, this, Spell, boostedSpell, Dice.Value, false, FightDispellableEnum.DISPELLABLE_BY_DEATH);

                actor.AddBuff(buff);
            }

            return(true);
        }
        private void BoostSpellTrigger(TriggerBuff buff, BuffTriggerType type, object token)
        {
            if (type == BuffTriggerType.TURN_BEGIN)
            {
                Spell boostedSpell = buff.Target.GetSpell((int)buff.Dice.DiceNum);
                var   spellBuff    = new SpellBuff(buff.Target.PopNextBuffId(), buff.Target, buff.Caster, buff.Dice, buff.Spell, boostedSpell, buff.Dice.Value, false, true);

                buff.Target.AddAndApplyBuff(spellBuff, true);
            }
        }
        public override bool Apply()
        {
            bool result;

            foreach (FightActor current in base.GetAffectedActors())
            {
                EffectInteger left = base.GenerateEffect();
                if (left == null)
                {
                    result = false;
                }
                else
                {
                    Spell spell = current.GetSpell((int)base.Dice.DiceNum);
                    if (spell == null)
                    {
                        result = false;
                    }
                    else
                    {
                        Buff buff;
                        if (base.Effect.Delay > 0)
                        {
                            buff = new TriggerBuff(current.PopNextBuffId(), current, base.Caster, base.Dice, base.Spell, base.Critical, false, BuffTriggerType.TURN_BEGIN, new TriggerBuffApplyHandler(this.BoostSpellTrigger))
                            {
                                Duration = (short)base.Effect.Duration
                            };
                        }
                        else
                        {
                            buff = new SpellBuff(current.PopNextBuffId(), current, base.Caster, base.Dice, base.Spell, spell, base.Dice.Value, false, true);
                        }
                        current.AddAndApplyBuff(buff, true);
                    }
                }
            }
            result = true;
            return(result);
        }