public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 2, 10);
            if (player != null)
            {
                if (target == null)
                {
                    target = Expressions.Get <Target>(args[0]);
                }

                string magicItemName = Expressions.GetStr(args[1]);

                object data1 = null;
                object data2 = null;
                object data3 = null;
                object data4 = null;
                object data5 = null;
                object data6 = null;
                object data7 = null;
                object data8 = null;

                if (args.Count > 2)
                {
                    data1 = Expressions.Get(args[2], player, target, spell);
                }
                if (args.Count > 3)
                {
                    data2 = Expressions.Get(args[3], player, target, spell);
                }
                if (args.Count > 4)
                {
                    data3 = Expressions.Get(args[4], player, target, spell);
                }
                if (args.Count > 5)
                {
                    data4 = Expressions.Get(args[5], player, target, spell);
                }
                if (args.Count > 6)
                {
                    data5 = Expressions.Get(args[6], player, target, spell);
                }
                if (args.Count > 7)
                {
                    data6 = Expressions.Get(args[7], player, target, spell);
                }
                if (args.Count > 8)
                {
                    data7 = Expressions.Get(args[8], player, target, spell);
                }
                if (args.Count > 9)
                {
                    data8 = Expressions.Get(args[9], player, target, spell);
                }


                //if (target == null)
                //	target = player.ActiveTarget;
                // TODO: consider passing in the spell name as well for unique id (if castedSpell is valid).
                player.GiveMagic(magicItemName, spell, target, data1, data2, data3, data4, data5, data6, data7, data8);
            }

            return(null);
        }