Exemplo n.º 1
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 0);
            Dictionary <DamageType, int> latestDamage = Expressions.GetCustomData <Dictionary <DamageType, int> >(evaluator.Variables);

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

            foreach (Creature creature in target.Creatures)
            {
                InGameCreature inGameCreature = AllInGameCreatures.GetByCreature(creature);
                if (inGameCreature != null)
                {
                    inGameCreature.TakeHalfDamage(player, latestDamage, AttackKind.Magical);
                }
                // TODO: Also get players from the target and work with them.
            }
            return(null);
        }
Exemplo n.º 2
0
 public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
 {
     ExpectingArguments(args, 1, 2);
     if (args.Count > 1)
     {
         player = AllPlayers.GetFromName(args[1].Trim());
     }
     if (player != null)
     {
         player.SetNextAnswer(Expressions.GetStr(args[0], player, target, spell));
     }
     return(null);
 }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Creature target, CastedSpell spell)
        {
            ExpectingArguments(args, 0);

            player.GiveAdvantageThisRoll();
            return(null);
        }
Exemplo n.º 4
0
		public override object Evaluate(List<string> args, ExpressionEvaluator evaluator, Character player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
		{
			ExpectingArguments(args, 1, 4);
			string fillColor = "player";
			string outlineColor = "player";
			int delayMs = 0;
			if (args.Count > 1)
			{
				fillColor = args[1].Trim();
				if (args.Count > 2)
				{
					outlineColor = args[2].Trim();
					if (args.Count > 3)
						delayMs = Expressions.GetInt(args[3], player, target, spell, dice);
				}
			}

			CreaturePlusModId recipient = Expressions.GetCustomData<CreaturePlusModId>(evaluator.Variables);
			if (recipient != null && recipient.Creature is Character recipientPlayer)
				recipientPlayer.ShowState(Expressions.GetStr(args[0], player, target, spell), fillColor, outlineColor, delayMs);
			else if (player != null)
				player.ShowState(Expressions.GetStr(args[0], player, target, spell), fillColor, outlineColor, delayMs);
			return null;
		}
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Creature target, CastedSpell spell)
        {
            ExpectingArguments(args, 4);

            string rechargeableName = Expressions.GetStr(args[0], player, target, spell);
            string variableName     = Expressions.GetStr(args[1], player, target, spell);
            int    maxValue         = Expressions.GetInt(args[2], player, target, spell);
            string cycle            = Expressions.GetStr(args[3], player, target, spell);

            player.AddRechargeable(rechargeableName, variableName, maxValue, cycle);

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

            if (spell == null)
            {
                return(null);
            }
            return(spell.GetSpellRawDieStr(args[0]));
        }
Exemplo n.º 7
0
 public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
 {
     ExpectingArguments(args, 0);
     return(GiveTargetFullDamage.ApplyDamage(args, evaluator, player, target, 2));
 }
Exemplo n.º 8
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target, CastedSpell spell, RollResults dice = null)
        {
            ExpectingArguments(args, 2);

            string variableName = args[0];
            // TODO: incorrectValue:
            //object incorrectValue = evaluator.Evaluate(Expressions.Clean(args[1]));
            object value = Expressions.Get(Expressions.Clean(args[1]), player, target, spell);

            object instance     = player;
            Type   instanceType = typeof(Character);

            if (KnownQualifiers.IsSpellQualifier(variableName))
            {
                if (evaluator.Variables.ContainsKey(Expressions.STR_CastedSpell))
                {
                    instance     = evaluator.Variables[Expressions.STR_CastedSpell];
                    instanceType = typeof(CastedSpell);
                    variableName = variableName.EverythingAfter(KnownQualifiers.Spell);
                }
            }

            FieldInfo field = instanceType.GetField(variableName);

            if (field != null)
            {
                if (instance != null)
                {
                    field.SetValue(instance, value);
                }
                return(null);
            }

            PropertyInfo property = instanceType.GetProperty(variableName);

            if (property != null)
            {
                if (instance != null)
                {
                    property.SetValue(instance, value);
                }
                return(null);
            }

            player.SetState(variableName, value);

            return(null);
        }
Exemplo n.º 9
0
        private static double GetPercentCompleteBasedOnSpellDuration(CastedSpell castedSpell, DndGame dndGame, TimeSpan spellDuration)
        {
            TimeSpan timeActive = dndGame.Clock.Time - castedSpell.CastingTime;

            return(100.0 * timeActive.TotalSeconds / spellDuration.TotalSeconds);
        }
Exemplo n.º 10
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 3);
            string           dungeonMasterMessage = Expressions.GetStr(args[0], player, target, spell, dice);
            string           floatText            = Expressions.GetStr(args[1], player, target, spell, dice);
            ValidationAction validationAction     = Expressions.Get <ValidationAction>(args[2].Trim(), player, target, spell, dice);

            Validation.OnValidationFailed(dungeonMasterMessage, floatText, validationAction);
            return(null);
        }
Exemplo n.º 11
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Creature target, CastedSpell spell)
        {
            ExpectingArguments(args, 0);
            CastedSpell castedSpell = Expressions.GetCastedSpell(evaluator.Variables);

            if (castedSpell != null && player != null)
            {
                player.Dispel(castedSpell);
            }

            return(null);
        }
Exemplo n.º 12
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1);

            GetRollEventArgs ea = new GetRollEventArgs((string)args[0]);

            OnGetRollRequest(this, ea);

            return(ea.Result);
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target, CastedSpell spell, RollResults dice = null)
        {
            Creature modOwner = Expressions.GetCustomData <Creature>(evaluator.Variables);

            if (modOwner == null)
            {
                throw new Exception($"Creature mod owner must be specified before evaluating expressions containing RemovePropertyMod.");
            }

            ExpectingArguments(args, 2);
            string propertyName = Expressions.GetStr(args[0], player, target, spell);
            string id           = Expressions.GetStr(args[1], player, target, spell);

            modOwner.RemovePropertyMod(propertyName, id);
            return(null);
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature creature, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1, 3);
            TargetStatus targetStatus = Expressions.Get <TargetStatus>(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.TargetStatus = targetStatus;
            OnRequestSelectTarget(ea);
            return(ea.Target);
        }
Exemplo n.º 15
0
 public override bool Handles(string tokenName, Character player, CastedSpell castedSpell)
 {
     function = AllFunctions.Get(tokenName);
     return(function != null);
 }
Exemplo n.º 16
0
 public override bool Handles(string tokenName, Character player, CastedSpell castedSpell)
 {
     return(Enum.TryParse(tokenName, true, out RechargeOdds result));
 }
Exemplo n.º 17
0
 public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
 {
     if (function == null)
     {
         return(null);
     }
     return(evaluator.Evaluate(DndUtils.InjectParameters(function.Expression, function.Parameters, args)));
 }
Exemplo n.º 18
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1);
            Target targetInstance = evaluator.Evaluate <Target>(args[0]);             // evaluator.Evaluate call needed to get local variables.

            if (targetInstance != null)
            {
                return(targetInstance.Count);
            }
            return(0);
        }
Exemplo n.º 19
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 2);

            DamageType damageType = (DamageType)Expressions.Get(args[0], player, target, spell);
            AttackKind attackKind = (AttackKind)Expressions.Get(args[1], player, target, spell);

            player.AddDamageResistance(damageType, attackKind);
            return(null);
        }
Exemplo n.º 20
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, RollResults dice = null)
        {
            ExpectingArguments(args, 1);
            if (player != null)
            {
                string spellList = Expressions.GetStr(args[0], player, target, spell);
                player.AddSpellsFrom(spellList);
            }

            return(null);
        }
Exemplo n.º 21
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1, 3);
            if (player != null)
            {
                int hue = Expressions.GetInt(args[0], player, target, spell);

                int saturation = 100;
                if (args.Count == 2)
                {
                    saturation = Expressions.GetInt(args[1], player, target, spell);
                }

                int brightness = 100;
                if (args.Count == 3)
                {
                    brightness = Expressions.GetInt(args[2], player, target, spell);
                }

                player.AddSpellHitEffect(hue: hue, saturation: saturation, brightness: brightness);
            }

            return(null);
        }
Exemplo n.º 22
0
		public override object Evaluate(List<string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, RollResults dice = null)
		{
			ExpectingArguments(args, 1, 15);
			OnRequestEffectTrigger(player, new EffectEventArgs(args, player, target, spell));
			return null;
		}
Exemplo n.º 23
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1);

            string message = evaluator.Evaluate <string>(args[0]);

            player.Game.TellAll(message);

            return(null);
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1);
            Target targetToCheck = Expressions.Get <Target>(args[0], player, target, spell);
            string result        = string.Empty;

            if (targetToCheck != null)
            {
                if (player?.Game != null)
                {
                    foreach (int playerId in targetToCheck.PlayerIds)
                    {
                        Character targetedPlayer = player.Game.GetPlayerFromId(playerId);
                        if (targetedPlayer != null)
                        {
                            result += targetedPlayer.Name + ", ";
                        }
                    }

                    foreach (Creature creature in targetToCheck.Creatures)
                    {
                        result += creature.Name + ", ";
                    }

                    result = result.EverythingBeforeLast(", ");
                }
            }

            return(result);
        }
Exemplo n.º 25
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Creature target, CastedSpell spell)
        {
            ExpectingArguments(args, 1);

            string propertyName = args[0];

            FieldInfo field = typeof(Character).GetField(propertyName);

            if (field != null)
            {
                return(field.GetValue(player));
            }

            PropertyInfo property = typeof(Character).GetProperty(propertyName);

            if (property != null)
            {
                return(property.GetValue(player));
            }

            if (player != null)
            {
                return(player.GetState(propertyName));
            }

            return(null);
        }
Exemplo n.º 26
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1);
            // TODO: Get the condition to clear.
            // TODO: Clear the target's condition.

            return(null);
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 2, 4);

            string sourceName = evaluator.Evaluate <string>(args[0]);
            string sceneName  = null;
            double delaySec   = 0;
            bool   visible;

            visible = Expressions.GetBool(args[1]);
            if (args.Count > 2)
            {
                delaySec = Expressions.GetDouble(args[2].Trim());
                if (args.Count > 3)
                {
                    sceneName = evaluator.Evaluate <string>(args[3]);
                }
            }

            OnRequestSetObsSourceVisibility(sceneName, sourceName, visible, delaySec);

            return(null);
        }
 public override bool Handles(string tokenName, Character player, CastedSpell castedSpell)
 {
     return(Enum.TryParse(tokenName, out CreatureSize result));
 }
Exemplo n.º 29
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1);

            Ability ability = (Ability)Expressions.GetInt(args[0], player, target, spell);

            return(player.GetAbilityModifier(ability));
        }
Exemplo n.º 30
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1, 3);

            string sceneName = evaluator.Evaluate <string>(args[0]);
            double delaySec  = 0;
            double returnSec = 0;

            if (args.Count > 1)
            {
                delaySec = Expressions.GetDouble(args[1]);
                if (args.Count > 2)
                {
                    returnSec = Expressions.GetDouble(args[2]);
                }
            }

            OnRequestPlayScene(sceneName, delaySec, returnSec);

            return(null);
        }