public override object Evaluate(
            List <string> args,
            ExpressionEvaluator evaluator,
            Creature player,
            Target target,
            CastedSpell spell,
            RollResults dice = null)
        {
            ExpectingArguments(args, 0, 1);

            WhatSide whatSide = WhatSide.All;

            if (args.Count > 0)
            {
                string   whatSideStr = args[0].Trim();
                string[] parts       = whatSideStr.Split('|');            // Union enum elements, e.g., "Friendly | Neutral"
                whatSide = WhatSide.None;
                foreach (string part in parts)
                {
                    whatSide |= DndUtils.ToWhatSide(part);
                }
            }

            OnTargetCreaturesInVolumeRequest(player, new WhatSideEventArgs(whatSide));

            return(null);
        }
Ejemplo n.º 2
0
 public static void Start(TargetDetails targetDetails, WhatSide whatSide)
 {
     ExpectedSide          = whatSide;
     ExpectedTargetDetails = targetDetails;
     IsReady     = false;
     ActualKind  = TargetKind.None;
     TargetPoint = Vector.zero;
 }
Ejemplo n.º 3
0
 public void PruneSides(WhatSide whatSide)
 {
     Characters = Characters.Where(x =>
                                   whatSide.HasFlag(WhatSide.Friendly) && Talespire.Target.IsAlly(x.ID) ||
                                   whatSide.HasFlag(WhatSide.Enemy) && Talespire.Target.IsEnemy(x.ID) ||
                                   whatSide.HasFlag(WhatSide.Neutral) && Talespire.Target.IsNeutral(x.ID)
                                   ).ToList();
 }
Ejemplo n.º 4
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, RollResults dice = null)
        {
            ExpectingArguments(args, 1);
            WhatSide             whatSide = DndUtils.GetSide(args[0]);
            TargetCountEventArgs ea       = new TargetCountEventArgs();

            ea.WhatSide = whatSide;
            OnRequestTargetCount(player, ea);
            return(ea.Count);
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature creature, Target target, CastedSpell spell, RollResults dice = null)
        {
            ExpectingArguments(args, 1, 3);
            WhatSide whatSide = Expressions.Get <WhatSide>(args[0], creature, target, spell, dice);

            ea = new TargetEventArgs();
            if (args.Count > 1)
            {
                ea.MinTargets = Expressions.GetInt(args[1], creature, target, spell, dice);
                if (args.Count > 2)
                {
                    ea.MaxTargets = Expressions.GetInt(args[2], creature, target, spell, dice);
                }
            }

            ea.Player = creature as Character;
            ea.Target = target;

            ea.ShowUI   = true;
            ea.WhatSide = whatSide;
            OnRequestSelectTarget(ea);
            return(ea.Target);
        }
Ejemplo n.º 6
0
        public static int GetTargetCount(WhatSide targetStatus)
        {
            int count = 0;

            foreach (InGameCreature inGameCreature in Creatures)
            {
                if (inGameCreature.IsTargeted)
                {
                    if (targetStatus.HasFlag(WhatSide.Friendly) && inGameCreature.IsAlly)
                    {
                        count++;
                    }
                    else if (targetStatus.HasFlag(WhatSide.Enemy) && inGameCreature.IsEnemy)
                    {
                        count++;
                    }
                    else if (targetStatus.HasFlag(WhatSide.All))
                    {
                        count++;
                    }
                }
            }
            return(count);
        }
Ejemplo n.º 7
0
 public static Creature GetByTaleSpireId(string taleSpireId, WhatSide whatSide = WhatSide.All)
 {
     return(inGameCreatures.FirstOrDefault(x => x.TaleSpireId == taleSpireId && x.SideMatches(whatSide))?.Creature);
 }
Ejemplo n.º 8
0
            private static GameObject AddTarget(Vector3 targetPosition, Transform parent, float scale = 1, WhatSide whatSide = TaleSpireCore.WhatSide.Enemy)
            {
                GameObject targetDisk = new GameObject(STR_TargetDisk);

                if (targetDisk == null)
                {
                    return(null);
                }

                GameObject targetDiskPrefab;

                if (whatSide == TaleSpireCore.WhatSide.Friendly)
                {
                    targetDiskPrefab = Prefabs.Clone("TargetFriend");
                }
                else if (whatSide == TaleSpireCore.WhatSide.Neutral)
                {
                    targetDiskPrefab = Prefabs.Clone("TargetNeutral");
                }
                else
                {
                    targetDiskPrefab = Prefabs.Clone("TargetEnemy");
                }

                if (targetDiskPrefab == null)
                {
                    return(null);
                }

                targetDiskPrefab.name = STR_TargetDiskPrefab;

                GameObject targetRangeIndicator = targetDiskPrefab.FindChild(STR_TargetRangeIndicator);

                if (targetRangeIndicator == null)
                {
                    Log.Error($"targetRangeIndicator NOT found!!!");
                }
                else
                {
                    Log.Warning($"targetRangeIndicator FOUND!!!");
                    targetRangeIndicator.SetActive(false);
                }

                targetDisk.name = STR_TargetDisk;
                const float percentAdjust = 0.6f;

                Property.Modify(targetDiskPrefab, "<TargetScale>.Scale", scale * percentAdjust);

                targetDisk.transform.position = targetPosition;
                if (parent != null)
                {
                    targetDisk.transform.SetParent(parent);
                }

                targetDiskPrefab.transform.SetParent(targetDisk.transform);

                targetRangeIndicator = targetDiskPrefab.FindChild(STR_TargetRangeIndicator);
                if (targetRangeIndicator != null)
                {
                    targetRangeIndicator = targetDisk.FindChild(STR_TargetRangeIndicator);
                    if (targetRangeIndicator != null)
                    {
                        Log.Warning($"targetRangeIndicator was found! What IS GOING ON???");
                    }
                    else
                    {
                        Log.Error($"targetRangeIndicator was NOT found. Why not?");
                    }
                }

                float yOffset = 0;

                if (scale == 0.5)
                {
                    yOffset = -0.89f;
                }
                else if (scale == 1)
                {
                    yOffset = -0.86f;
                }
                else if (scale == 2)
                {
                    yOffset = -0.765f;
                }
                else if (scale == 3)
                {
                    yOffset = -0.674f;
                }
                else if (scale == 4)
                {
                    yOffset = -0.5725f;
                }
                targetDiskPrefab.transform.localPosition = new Vector3(0, 0.9f + yOffset, 0);

                targetDisks.Add(targetDisk);
                return(targetDisk);
            }
Ejemplo n.º 9
0
 public WhatSideEventArgs(WhatSide whatSide)
 {
     WhatSide = whatSide;
 }