internal static bool CanDismiss(AreaEffectEntityData area) =>
 dismissibleAreas.Contains(area.Blueprint.AssetGuid);
Exemplo n.º 2
0
 public RuleSpellTargetCheck(MechanicsContext context, UnitEntityData target, AreaEffectEntityData areaEffect = null)
     : base(context.MaybeCaster, target)
 {
     Context    = context;
     AreaEffect = areaEffect;
 }
 static bool IsAreaEffectSpell(AreaEffectEntityData area) =>
 area.Blueprint.AffectEnemies && area.Context.SourceAbility?.Type == AbilityType.Spell;
Exemplo n.º 4
0
 public void HandleAreaEffectDestroyed(AreaEffectEntityData entityData)
 {
 }
Exemplo n.º 5
0
 public void HandleAreaEffectSpawned(AreaEffectEntityData areaEffect) => FreezeAreaEffect(areaEffect);
 internal static bool CanDismiss(UnitEntityData caster, AreaEffectEntityData area) =>
 !caster.IsInCombat || dismissibleAreas.Contains(area.Blueprint.AssetGuid);
Exemplo n.º 7
0
            static public bool Prefix(AreaEffectPit __instance, MechanicsContext context, AreaEffectEntityData areaEffect, UnitEntityData unit)
            {
                var source_context = context?.SourceAbilityContext;
                var context2       = ShadowSpells.extractMainContext(source_context, source_context?.MaybeCaster);

                if (context2 == null)
                {
                    return(true);
                }

                if (!unit.Ensure <UnitPartDisbelief>().attemptedDisbelief(context2))
                {
                    if (unit.Descriptor.State.HasCondition(UnitCondition.TrueSeeing))
                    {
                        unit.Ensure <UnitPartDisbelief>().register(context2, true);
                    }
                    else
                    {
                        unit.Ensure <UnitPartDisbelief>().register(context2, ShadowSpells.makeDisbeliefSave(context2, unit));
                    }
                }

                if (unit.Ensure <UnitPartDisbelief>().disbelieved(context2))
                {
                    int illusion_reality = ShadowSpells.getSpellReality(context2);
                    int result           = RulebookEvent.Dice.D(new DiceFormula(1, DiceType.D100));
                    if (illusion_reality > 0 && result > illusion_reality)
                    {
                        Common.AddBattleLogMessage(unit.CharacterName + " avoids " + context2.SourceAbility.Name
                                                   + $" effect due to disbelief (rolled {result} vs {illusion_reality}%)");
                        return(false);
                    }
                }

                return(true);
            }