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); }
public static void Start(TargetDetails targetDetails, WhatSide whatSide) { ExpectedSide = whatSide; ExpectedTargetDetails = targetDetails; IsReady = false; ActualKind = TargetKind.None; TargetPoint = Vector.zero; }
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(); }
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); }
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); }
public static Creature GetByTaleSpireId(string taleSpireId, WhatSide whatSide = WhatSide.All) { return(inGameCreatures.FirstOrDefault(x => x.TaleSpireId == taleSpireId && x.SideMatches(whatSide))?.Creature); }
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); }
public WhatSideEventArgs(WhatSide whatSide) { WhatSide = whatSide; }