void BuffTrigger(TriggerBuff buff, FightActor triggerrer, BuffTriggerType trigger, object token) { var state = SpellManager.Instance.GetSpellState((uint)Dice.Value); if (state == null) { logger.Error("Spell state {0} not found", Dice.Value); return; } if (!buff.Target.HasState(state.Id)) { return; } if (Effect.EffectId == EffectsEnum.Effect_DisableState) { var actualState = buff.Target.GetBuffs(x => x is StateBuff && ((StateBuff)x).State.Id == state.Id).FirstOrDefault() as StateBuff; if (actualState == null) { return; } var id = buff.Target.PopNextBuffId(); var stateBuff = new DisableStateBuff(id, buff.Target, Caster, this, Spell, FightDispellableEnum.DISPELLABLE_BY_DEATH, actualState, triggerrer); buff.Target.AddBuff(stateBuff); } else { RemoveStateBuff(buff.Target, (SpellStatesEnum)state.Id); } }
void DamageBuffTrigger(TriggerBuff buff, FightActor triggerrer, BuffTriggerType trigger, object token) { var triggerDmg = token as Fights.Damage; if (triggerDmg == null) { return; } if (triggerDmg.ReflectedDamages) { return; } var damage = new Fights.Damage(buff.Dice, GetEffectSchool(buff.Dice.EffectId), buff.Target, buff.Spell, buff.Target.Cell) { Buff = buff, ReflectedDamages = true, IsCritical = Critical, MarkTrigger = MarkTrigger, IgnoreDamageBoost = true }; damage.GenerateDamages(); damage.Amount = (int)((buff.Target.LifePoints * (buff.Dice.DiceNum / 100.0))); buff.Target.InflictDamage(damage); }
private void SpellBuffTrigger(TriggerBuff buff, FightActor triggerrer, BuffTriggerType trigger, object token) { var damage = token as Damage; if (damage == null) { return; } if (damage.Source == null) { return; } var target = buff.Target; if (damage.Source == target) { return; } if (damage.Spell != null && damage.Spell.Id != (int)SpellIdEnum.COUP_DE_POING) { return; } Handlers[Spell.Id == (int)SpellIdEnum.MARTEAU_DE_MUNGAM ? 2 : 1].Apply(); //Remove Effects Handlers[Spell.Id == (int)SpellIdEnum.MARTEAU_DE_MUNGAM ? 5 : 4].Apply(); //Dispell State }
public void TriggerBuffApply(TriggerBuff buff, FightActor triggerrer, BuffTriggerType trigger, object token) { var target = buff.Target; if (target == null) { return; } var damage = token as Fights.Damage; if (damage == null || damage.Amount == 0) { return; } damage.IgnoreDamageBoost = true; damage.IgnoreDamageReduction = true; damage.Generated = true; // first, apply damage to sacrifier Caster.InflictDamage(damage); // then, negate damage given to target damage.Amount = 0; }
public static void ApplyArmorBuff(TriggerBuff buff, FightActor triggerer, BuffTriggerType trigger, object token) { var damage = token as Fights.Damage; if (damage == null) { return; } var integerEffect = buff.GenerateEffect(); if (integerEffect == null) { return; } var target = buff.Target; if (target is SummonedBomb) { target = ((SummonedBomb)target).Summoner; } var reduction = target.CalculateArmorValue(integerEffect.Value); var dmgReduction = Math.Min(damage.Amount, target.CalculateArmorValue(integerEffect.Value)); ActionsHandler.SendGameActionFightReduceDamagesMessage(target.Fight.Clients, damage.Source, target, reduction); damage.Amount -= dmgReduction; }
private void OnActorAttacked(TriggerBuff buff, BuffTriggerType trigger, object token) { System.Collections.Generic.IEnumerable <StatBuff> source = buff.Target.GetBuffs((Buff entry) => entry.Spell == base.Spell).OfType <StatBuff>(); int num = ( from entry in source where (int)entry.Duration == this.Effect.Duration select entry).Sum((StatBuff entry) => (int)entry.Value); short diceFace = base.Dice.DiceFace; if (num < (int)diceFace) { Fights.Damage damage = (Fights.Damage)token; int num2 = damage.Amount; if (num2 + num > (int)diceFace) { num2 = (int)((short)((int)diceFace - num)); } PlayerFields punishmentBoostType = Punishment.GetPunishmentBoostType(base.Dice.DiceNum); StatBuff buff2 = new StatBuff(buff.Target.PopNextBuffId(), buff.Target, base.Caster, base.Dice, base.Spell, (short)num2, punishmentBoostType, false, true, (short)Punishment.GetBuffEffectId(punishmentBoostType)) { Duration = base.Dice.Value }; buff.Target.AddAndApplyBuff(buff2, true); } }
public void Apply(BuffTriggerType trigger) { if (this.ApplyTrigger != null) { this.ApplyTrigger(this, trigger, null); } }
void OnBuffTriggered(TriggerBuff buff, FightActor triggerrer, BuffTriggerType trigger, object token) { var damages = new Fights.Damage(Dice) { Source = buff.Caster, Buff = buff, IgnoreDamageReduction = true, IgnoreDamageBoost = true, School = GetEffectSchool(buff.Dice.EffectId), MarkTrigger = MarkTrigger, IsCritical = Critical, Amount = (int)Math.Floor((buff.Target.Stats.Health.PermanentDamages * Dice.DiceNum) / 100d) }; if (Effect.EffectId == EffectsEnum.Effect_DamageNeutralPerCasterHPEroded || Effect.EffectId == EffectsEnum.Effect_DamageEarthPerCasterHPEroded || Effect.EffectId == EffectsEnum.Effect_DamageFirePerCasterHPEroded || Effect.EffectId == EffectsEnum.Effect_DamageWaterPerCasterHPEroded || Effect.EffectId == EffectsEnum.Effect_DamageAirPerCasterHPEroded) { damages.Amount = (int)Math.Floor((buff.Caster.Stats.Health.PermanentDamages * Dice.DiceNum) / 100d); } buff.Target.InflictDamage(damages); }
void RollTrigger(TriggerBuff buff, FightActor triggerer, BuffTriggerType trigger, object token) { if (token is Ref <FightSpellCastCriticalEnum> @ref) { @ref.Target = FightSpellCastCriticalEnum.NORMAL; } }
private void SpellBuffTrigger(TriggerBuff buff, FightActor triggerrer, BuffTriggerType trigger, object token) { var damage = token as Damage; if (damage == null) { return; } if (damage.Source == null) { return; } var source = damage.Source; var target = buff.Target; if (damage.Source == target) { return; } if (target.Position.Point.IsAdjacentTo(source.Position.Point)) { return; } foreach (var handler in Handlers) { handler.Apply(); } }
public void Apply(BuffTriggerType trigger, object token) { if (this.ApplyTrigger != null) { this.ApplyTrigger(this, trigger, token); } }
void BuffTrigger(TriggerBuff buff, FightActor triggerrer, BuffTriggerType trigger, object token) { var damage = token as Fights.Damage; if (damage == null) { return; } if (damage.Source == null) { return; } var integerEffect = GenerateEffect(); if (integerEffect == null) { return; } var healAmount = (int)Math.Floor((damage.Amount * Dice.DiceNum) / 100.0); foreach (var actor in GetAffectedActors()) { actor.Heal(healAmount, Caster, true); } buff.Caster.RemoveBuff(buff); }
private static void DamageBuffTrigger(TriggerBuff buff, BuffTriggerType trigger, object token) { Fights.Damage damage = new Fights.Damage(buff.Dice, DirectDamage.GetEffectSchool(buff.Dice.EffectId), buff.Caster, buff.Spell) { Buff = buff }; buff.Target.InflictDamage(damage); }
public TriggerBuff AddTriggerBuff(FightActor target, bool dispelable, BuffTriggerType trigger, TriggerBuffApplyHandler applyTrigger, TriggerBuffRemoveHandler removeTrigger) { int id = target.PopNextBuffId(); TriggerBuff triggerBuff = new TriggerBuff(id, target, this.Caster, this.Dice, this.Spell, this.Critical, dispelable, trigger, applyTrigger, removeTrigger); target.AddAndApplyBuff(triggerBuff, true); return(triggerBuff); }
void DefaultBuffTrigger(TriggerBuff buff, FightActor triggerrer, BuffTriggerType trigger, object token) { var damages = token as Fights.Damage; if (damages != null && damages.Spell != null && damages.Spell.Id == buff.Spell.Id) { return; } if (Effect.EffectId == EffectsEnum.Effect_CastSpell_1160) { buff.Caster.CastSpell(new SpellCastInformations(buff.Caster, buff.Spell, buff.Target.Cell) { Force = true, Silent = true, ApFree = true, TriggerEffect = this, Triggerer = triggerrer }); } else if (Effect.EffectId == EffectsEnum.Effect_CastSpell_1017 || buff.Spell.Id == (int)SpellIdEnum.FRIKT) { buff.Target.CastSpell(new SpellCastInformations(buff.Target, buff.Spell, triggerrer.Cell) { Force = true, Silent = true, ApFree = true, TriggerEffect = this, Triggerer = triggerrer }); } else { if (buff.Spell.Id == (int)SpellIdEnum.GLOURSOMPTUEUX) { buff.Target.CastSpell(new SpellCastInformations(buff.Target, buff.Spell, buff.Caster.Cell) { Force = true, Silent = true, ApFree = true, TriggerEffect = this, Triggerer = triggerrer }); } else { buff.Target.CastSpell(new SpellCastInformations(buff.Target, buff.Spell, buff.Target.Cell) { Force = true, Silent = true, ApFree = true, TriggerEffect = this, Triggerer = triggerrer }); } } }
private static void HealBuffTrigger(TriggerBuff buff, BuffTriggerType trigger, object token) { EffectInteger effectInteger = buff.GenerateEffect(); if (!(effectInteger == null)) { buff.Target.Heal((int)effectInteger.Value, buff.Caster, true); } }
private void OnBuffTriggered(TriggerBuff buff, BuffTriggerType trigger, object token) { EffectInteger effectInteger = base.GenerateEffect(); if (!(effectInteger == null)) { this.HealHpPercent(buff.Target, (int)effectInteger.Value); } }
public static void ApplyArmorBuff(TriggerBuff buff, BuffTriggerType trigger, object token) { EffectInteger effectInteger = buff.GenerateEffect(); if (!(effectInteger == null)) { buff.Target.DamageMultiplicator = effectInteger.Value / 100; } }
public static void ApplySuicideBuff(TriggerBuff buff, BuffTriggerType trigger, object token) { var target = buff.Target as SummonedMonster; InventoryHandler.SendSpellListMessage(target.Summoner.CharacterContainer.Clients.FirstOrDefault(), true); ShortcutHandler.SendShortcutBarContentMessage(target.Summoner.CharacterContainer.Clients.FirstOrDefault(), ShortcutBarEnum.SPELL_SHORTCUT_BAR); //ContextHandler.SendSlaveSwitchContextMessage(buff.Target.s); target.Die(); }
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); } }
void TriggerBuff(TriggerBuff buff, FightActor triggerrer, BuffTriggerType trigger, object token) { var integerEffect = GenerateEffect(); if (integerEffect == null) { return; } ReduceBuffsDuration(buff.Target, integerEffect.Value); }
void OnBuffTriggered(TriggerBuff buff, FightActor triggerrer, BuffTriggerType trigger, object token) { var integerEffect = GenerateEffect(); if (integerEffect == null) { return; } HealHpPercent(buff.Target, integerEffect.Value); }
void OnBuffTriggered(TriggerBuff buff, FightActor triggerer, BuffTriggerType trigger, object token) { var integerEffect = GenerateEffect(); if (integerEffect == null) { return; } buff.Target.RemoveSpellBuffs(integerEffect.Value); }
public TriggerBuff AddTriggerBuff(FightActor target, BuffTriggerType type, TriggerBuffApplyHandler applyTrigger) { var id = target.PopNextBuffId(); var buff = new TriggerBuff(id, target, Caster, this, Spell, Spell, Critical, DefaultDispellableStatus, Priority, applyTrigger); buff.SetTrigger(type); target.AddBuff(buff); return(buff); }
public static void BuffHandler(TriggerBuff buff, BuffTriggerType type, object token) { EffectInteger effectInteger = buff.GenerateEffect(); if (!(effectInteger == null)) { int id = buff.Target.PopNextBuffId(); StatBuff statBuff = new StatBuff(id, buff.Target, buff.Caster, buff.Effect, buff.Spell, effectInteger.Value, PlayerFields.AP, false, false); buff.Target.AddAndApplyBuff(statBuff, true); } }
void OnBuffTriggered(TriggerBuff buff, FightActor triggerer, BuffTriggerType trigger, object token) { var damage = token as Fights.Damage; if (damage == null) { return; } damage.Amount = (int)Math.Round(damage.Amount * (Dice.DiceNum / 100.0)); }
public static void ApplyArmorBuff(TriggerBuff buff, BuffTriggerType trigger, object token) { EffectInteger effectInteger = buff.GenerateEffect(); if (!(effectInteger == null)) { foreach (PlayerFields current in DamageArmor.GetAssociatedCaracteristics(buff.Spell.Id)) { buff.Target.Stats[current].Context += buff.Target.CalculateArmorValue((int)effectInteger.Value); } } }
public void Apply(FightActor fighterTrigger, BuffTriggerType trigger, object token) { // to avoid recursion cannot be triggered twice in the same sequence (spell cast, move, turn end/begin...) if (m_lastTriggeredSequence != null && m_lastTriggeredSequence.IsChild(fighterTrigger.Fight.CurrentSequence)) { return; } m_lastTriggeredSequence = fighterTrigger.Fight.CurrentSequence; base.Apply(); ApplyTrigger?.Invoke(this, fighterTrigger, trigger, token); }
private static void HealBuffTrigger(TriggerBuff buff, FightActor triggerrer, BuffTriggerType trigger, object token) { var integerEffect = buff.GenerateEffect(); if (integerEffect == null) { return; } if (buff.Target.IsAlive()) { buff.Target.Heal(integerEffect.Value, buff.Caster); } }
private void OnBuffTriggered(TriggerBuff buff, BuffTriggerType trigger, object token) { Fights.Damage damage = new Fights.Damage(base.Dice) { Source = buff.Caster, Buff = buff, IgnoreDamageReduction = true, School = DamagePerAPUsed.GetEffectSchool(buff.Dice.EffectId), MarkTrigger = base.MarkTrigger }; damage.BaseMaxDamages = (int)buff.Target.UsedAP * damage.BaseMaxDamages; damage.BaseMinDamages = (int)buff.Target.UsedAP * damage.BaseMinDamages; buff.Target.InflictDamage(damage); }