protected SpellEffectHandler(EffectDice effect, FightActor caster, SpellCastHandler castHandler, Cell targetedCell, bool critical) : base(effect) { Dice = effect; Caster = caster; CastHandler = castHandler; TargetedCell = targetedCell; TargetedPoint = new MapPoint(TargetedCell); Critical = critical; Targets = effect.Targets; Category = SpellIdentifier.GetEffectCategories(effect.EffectId); DefaultDispellableStatus = FightDispellableEnum.DISPELLABLE; }
static PlayerFields[] GetMonsterMainStats(MonsterGrade monster) { if (monster.Spells.Count == 0) { return(new PlayerFields[0]); } var stats = new List <PlayerFields>(); foreach (var spell in monster.Spells) { var spellLevel = SpellManager.Instance.GetSpellLevel(spell.Id, spell.CurrentLevel); if (spellLevel == null) { continue; } foreach (var effect in spellLevel.Effects) { var categories = SpellIdentifier.GetEffectCategories(effect.EffectId); if (categories.HasFlag(SpellCategory.DamagesAir)) { stats.Add(PlayerFields.Agility); } if (categories.HasFlag(SpellCategory.DamagesEarth) || categories.HasFlag(SpellCategory.DamagesNeutral)) { stats.Add(PlayerFields.Strength); } if (categories.HasFlag(SpellCategory.DamagesWater)) { stats.Add(PlayerFields.Chance); } if (categories.HasFlag(SpellCategory.DamagesFire) || categories.HasFlag(SpellCategory.Healing)) { stats.Add(PlayerFields.Intelligence); } } } return(stats.Distinct().ToArray()); }
public override void Execute(TriggerBase trigger) { var template = trigger.Get <MonsterTemplate>("monster"); if (template.Grades.Count <= trigger.Get <sbyte>("grade")) { trigger.ReplyError("Unexistant grade '{0}' for this monster", trigger.Get <sbyte>("grade")); return; } var grade = template.Grades[trigger.Get <sbyte>("grade")]; foreach (var spell in grade.Spells) { trigger.ReplyBold("- {0} ({1})", spell.Template.Name, spell.Template.Id); foreach (var effect in spell.CurrentSpellLevel.Effects) { var description = TextManager.Instance.GetText(effect.Template.DescriptionId); trigger.ReplyBold("\t{0} ({1}) Managed : {2}", description, (int)effect.EffectId, SpellIdentifier.GetEffectCategories(effect.EffectId) != SpellCategory.None); } } }
public override void Execute(GameTrigger trigger) { if (!trigger.Character.IsInFight()) { trigger.ReplyError("You must be in a fight"); return; } if (!trigger.Character.Fight.AIDebugMode) { trigger.ReplyError("AI debug mode must be enabled"); return; } if (!(trigger.Character.Fight.FighterPlaying is AIFighter)) { trigger.ReplyError("Current fighter is not an AI fighter"); return; } var aiFighter = trigger.Character.Fight.FighterPlaying as AIFighter; foreach (var cast in aiFighter.Brain.SpellSelector.Possibilities) { trigger.Reply("(#1) Spell {0} ({1}) :: {2}", cast.Spell.Template.Name, cast.Spell.Id, SpellIdentifier.GetSpellCategories(cast.Spell)); var dumper = new ObjectDumper(8) { MemberPredicate = (member) => !member.Name.Contains("Target") }; trigger.Reply("\t{0} Targets", cast.Impacts.Count); foreach (var impact in cast.Impacts) { trigger.Reply(dumper.DumpElement(impact)); } } }