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); }
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); }