Exemple #1
0
 public void SetAmmunitionParameters(string ammoParameters, Character player)
 {
     Name           = "";
     DamageBonusStr = "";
     HueShift       = "";
     if (string.IsNullOrEmpty(ammoParameters))
     {
         return;
     }
     string[] parameters = ammoParameters.Split(',');
     if (parameters.Length == 0)
     {
         return;
     }
     Name       = Expressions.GetStr(parameters[0], player);
     EffectName = Name;
     if (parameters.Length > 1)
     {
         DamageBonusStr = parameters[1].Trim();
         if (parameters.Length > 2)
         {
             HueShift = parameters[2].Trim();
         }
         if (parameters.Length > 3)
         {
             EffectName = parameters[3].Trim();
         }
     }
 }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target, CastedSpell spell, RollResults dice = null)
        {
            ExpectingArguments(args, 2);

            string propertyName = Expressions.GetStr(args[0], player, target, spell, dice);
            double deltaValue   = Expressions.GetDouble(args[1], player, target, spell, dice);

            if (target == null)
            {
                // Make sure this Spell has values in the MinTargetsToCast and MaxTargetsToCast columns.
                System.Diagnostics.Debugger.Break();
                return(null);
            }

            foreach (Creature creature in target.Creatures)
            {
                OnRequestPropertyChange(creature, propertyName, deltaValue);
            }

            if (player != null)
            {
                foreach (int playerId in target.PlayerIds)
                {
                    Character playerFromId = player.Game.GetPlayerFromId(playerId);
                    if (playerFromId != null)
                    {
                        OnRequestPropertyChange(playerFromId, propertyName, deltaValue);
                    }
                }
            }


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

            CardModType modType = DndUtils.ToCardModType(args[0].Trim());

            int    valueOffset;
            double multiplier = 1;

            int.TryParse(args[1], out valueOffset);

            string userName = "";

            if (args.Count > 2)
            {
                double.TryParse(args[2], out multiplier);
                if (args.Count > 3)
                {
                    userName = Expressions.GetStr(args[3].Trim());
                }
            }

            //CreaturePlusModId recipient = Expressions.GetCustomData<CreaturePlusModId>(evaluator.Variables);
            if (SystemVariables.DiceRoll != null)
            {
                SystemVariables.DiceRoll.CardModifiers.Add(new CardModifier(player.SafeId, userName, valueOffset, multiplier));
            }
            return(null);
        }
Exemple #4
0
        public void Activate(string arguments, Character player, bool forceActivation = false)
        {
            if (IsActive && !forceActivation)
            {
                return;
            }

            string activationMessage;

            if (!string.IsNullOrWhiteSpace(ActivationMessage))
            {
                activationMessage = Expressions.GetStr(DndUtils.InjectParameters(ActivationMessage, Parameters, arguments), player);
            }
            else if (player != null)
            {
                activationMessage = $"Activating {player.name}'s {Name}.";
            }
            else
            {
                activationMessage = $"Activating {Name}.";
            }

            IsActive = true;
            if (Duration.HasValue())
            {
                string alarmName = $"{player.name}.{Name}";
                History.TimeClock.CreateAlarm(Duration.GetTimeSpan(), alarmName, player).AlarmFired += Feature_Expired;
            }
            if (!string.IsNullOrWhiteSpace(OnActivate))
            {
                Expressions.Do(DndUtils.InjectParameters(OnActivate, Parameters, arguments), player);
            }
            OnRequestMessageToDungeonMaster(this, activationMessage);
            OnFeatureActivated(player, new FeatureEventArgs(this));
        }
Exemple #5
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Creature target = null, CastedSpell spell = null)
        {
            AddReminderEventArgs ea = new AddReminderEventArgs(Expressions.GetStr(args[0], player, target, spell), Expressions.GetStr(args[1], player, target, spell));

            AddReminder(player, ea);
            return(null);
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Creature target = null, CastedSpell spell = null)
        {
            AskEventArgs ea = new AskEventArgs(Expressions.GetStr(args[0], player, target, spell), args.Skip(1).ToList());

            OnAskQuestion(player, ea);
            return(ea.Result);
        }
Exemple #7
0
        public void Deactivate(string arguments, Character player, bool forceDeactivation = false)
        {
            if (!IsActive && !forceDeactivation)
            {
                return;
            }
            string deactivationMessage;

            if (!string.IsNullOrWhiteSpace(DeactivationMessage))
            {
                deactivationMessage = Expressions.GetStr(DndUtils.InjectParameters(DeactivationMessage, Parameters, arguments), player);
            }
            else if (player != null)
            {
                deactivationMessage = $"Deactivating {player.name}'s {Name}.";
            }
            else
            {
                deactivationMessage = $"Deactivating {Name}.";
            }

            IsActive = false;
            TriggerDeactivate(arguments, player);
            OnRequestMessageToDungeonMaster(this, deactivationMessage);
            OnFeatureDeactivated(player, new FeatureEventArgs(this));
        }
Exemple #8
0
 public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Creature target = null, CastedSpell spell = null)
 {
     ExpectingArguments(args, 1);
     if (player != null)
     {
         player.AddSpellsFrom(Expressions.GetStr(args[0], player, target, spell));
     }
     return(null);
 }
Exemple #9
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, RollResults dice = null)
        {
            string        question = Expressions.GetStr(args[0], player, target, spell);
            List <string> answers  = args.Skip(1).ToList();
            AskEventArgs  ea       = new AskEventArgs(question, answers);

            OnAskQuestion(player, ea);
            return(ea.Result);
        }
Exemple #10
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature 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);
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 2);
            string reminder         = Expressions.GetStr(args[0], player, target, spell);
            string fromNowDuration  = Expressions.GetStr(args[1], player, target, spell);
            AddReminderEventArgs ea = new AddReminderEventArgs(reminder, fromNowDuration);

            AddReminder(player, ea);
            return(null);
        }
Exemple #12
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target, CastedSpell spell, RollResults dice = null)
        {
            ExpectingArguments(args, 3);

            string userName    = Expressions.GetStr(args[0], player, target, spell);
            string chargeName  = Expressions.GetStr(args[1], player, target, spell);
            int    chargeCount = Expressions.GetInt(args[2], player, target, spell);

            OnRequestAddViewerCharge(new RequestAddViewerChargeEventArgs(userName, chargeName, chargeCount));
            return(null);
        }
Exemple #13
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1);
            if (player != null)
            {
                string spellList = Expressions.GetStr(args[0], player, target, spell);
                player.AddSpellsFrom(spellList);
            }

            return(null);
        }
        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);
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1);
            if (player != null)
            {
                string languageStr = Expressions.GetStr(args[0], player, target, spell);
                player.AddLanguages(languageStr);
            }

            return(null);
        }
Exemple #16
0
        static string GetSpellDescription(CastedSpell castedSpell)
        {
            if (castedSpell.Spell.Description.IndexOf('{') < 0)
            {
                return(castedSpell.Spell.Description);
            }

            string result = Expressions.GetStr("$\"" + EmphasizeCalculatedProperties(castedSpell) + "\"", castedSpell.SpellCaster, castedSpell.TargetCreature, castedSpell);

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

            if (spell != null)
            {
                spellId = spell.ID;
            }
            else
            {
                CreaturePlusModId creaturePlusModId = Expressions.GetCustomData <CreaturePlusModId>(evaluator.Variables);
                if (creaturePlusModId != null)
                {
                    spellId = creaturePlusModId.Guid;
                }
            }
            float lifeTime        = 0;
            float shrinkTime      = 0;
            float rotationDegrees = 0;

            if (player != null && spellId != null)
            {
                string effectName        = Expressions.GetStr(args[0]);
                float  secondsDelayStart = 0;
                float  enlargeTime       = 0;
                if (args.Count > 1)
                {
                    float.TryParse(args[1], out secondsDelayStart);
                    if (args.Count > 2)
                    {
                        float.TryParse(args[2], out enlargeTime);
                        if (args.Count > 3)
                        {
                            float.TryParse(args[3], out lifeTime);
                            if (args.Count > 4)
                            {
                                float.TryParse(args[4], out shrinkTime);
                                if (args.Count > 5)
                                {
                                    float.TryParse(args[5], out rotationDegrees);
                                }
                            }
                        }
                    }
                }

                OnAttachChargingEffect(effectName, spellId, player.taleSpireId, secondsDelayStart, enlargeTime, lifeTime, shrinkTime, rotationDegrees);
            }

            return(null);
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            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 = null, CastedSpell spell = null, RollResults 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, Creature player, Target target = null, CastedSpell spell = null, RollResults dice = null)
        {
            ExpectingArguments(args, 2, 10);
            string cardEventName = Expressions.GetStr(args[0]);
            string cardUserName  = 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 = GiveMagicFunction.GetData(args[2], player, target, spell);
            }
            if (args.Count > 3)
            {
                data2 = GiveMagicFunction.GetData(args[3], player, target, spell);
            }
            if (args.Count > 4)
            {
                data3 = GiveMagicFunction.GetData(args[4], player, target, spell);
            }
            if (args.Count > 5)
            {
                data4 = GiveMagicFunction.GetData(args[5], player, target, spell);
            }
            if (args.Count > 6)
            {
                data5 = GiveMagicFunction.GetData(args[6], player, target, spell);
            }
            if (args.Count > 7)
            {
                data6 = GiveMagicFunction.GetData(args[7], player, target, spell);
            }
            if (args.Count > 8)
            {
                data7 = GiveMagicFunction.GetData(args[8], player, target, spell);
            }
            if (args.Count > 9)
            {
                data8 = GiveMagicFunction.GetData(args[9], player, target, spell);
            }

            OnRequestCardEventQueuing(new QueueEffectEventArgs(cardEventName, cardUserName, data1, data2, data3, data4, data5, data6, data7, data8));
            return(null);
        }
Exemple #21
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1);
            string nextWord = Expressions.GetStr(args[0], player, target, spell).ToLower();

            if (nextWord.StartsWith("a") || nextWord.StartsWith("e") || nextWord.StartsWith("i") || nextWord.StartsWith("o") || nextWord.StartsWith("u"))
            {
                return("an");
            }
            else
            {
                return("a");
            }
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 3);

            int value = Expressions.GetInt(args[0], player, target, spell);

            if (value == 1)
            {
                return(Expressions.GetStr(args[1], player, target, spell));                     // singular.
            }
            else
            {
                return(Expressions.GetStr(args[2], player, target, spell));                 // plural
            }
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1);
            string timerName = Expressions.GetStr(args[0], player, target, spell);

            if (player == null)
            {
                return(null);
            }
            if (player.Game == null)
            {
                return(null);
            }
            player.Game.Clock.RemoveAlarm(timerName);
            return(null);
        }
        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 player, Target target, CastedSpell spell, RollResults dice = null)
        {
            ExpectingArguments(args, 3, 4);

            string sourceName    = Expressions.GetStr(args[0], player);
            string filterName    = Expressions.GetStr(args[1]);
            bool   filterEnabled = Expressions.GetBool(args[2]);
            int    delayMs       = 0;

            if (args.Count > 3)
            {
                delayMs = Expressions.GetInt(args[3]);
            }

            OnRequestSetObsSceneFilterVisibility(null, new ObsSceneFilterEventArgs(sourceName, filterName, filterEnabled, delayMs));
            return(null);
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 0, 1);

            string weaponFilter = null;

            if (args.Count > 0)
            {
                weaponFilter = Expressions.GetStr(args[0], player, target, spell);
            }
            if (player != null)
            {
                return(player.ChooseWeapon(weaponFilter));
            }

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

            if (featureName.StartsWith("\""))
            {
                featureName = Expressions.GetStr(featureName);
            }
            Feature feature = AllFeatures.Get(featureName);

            if (feature != null)
            {
                feature.Deactivate("", player);
            }

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

                int timeOffsetMs = 0;
                if (args.Count > 1)
                {
                    timeOffsetMs = Expressions.GetInt(args[1], player, target, spell);
                }

                player.AddSpellCastSoundEffect(fileName, timeOffsetMs);
            }

            return(null);
        }
Exemple #29
0
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature creature, Target target, CastedSpell spell, RollResults dice = null)
        {
            ExpectingArguments(args, 3);
            string timerName       = Expressions.GetStr(args[0], creature, target, spell);
            int    durationSeconds = Expressions.GetInt(args[1], creature, target, spell);
            string functionToCall  = Expressions.GetStr(args[2], creature, target, spell);

            if (creature == null)
            {
                return(null);
            }
            if (creature.Game == null)
            {
                return(null);
            }
            DndAlarm dndAlarm = creature.Game.Clock.CreateAlarm(TimeSpan.FromSeconds(durationSeconds), timerName, creature, functionToCall);

            dndAlarm.AlarmFired += DndAlarm_AlarmFired;
            return(null);
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Character player, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 3);
            string timerName       = Expressions.GetStr(args[0], player, target, spell);
            int    durationSeconds = Expressions.GetInt(args[1], player, target, spell);
            string functionToCall  = Expressions.GetStr(args[2], player, target, spell);

            if (player == null)
            {
                return(null);
            }
            if (player.Game == null)
            {
                return(null);
            }
            DndAlarm dndAlarm = player.Game.Clock.CreateAlarm(TimeSpan.FromSeconds(durationSeconds), timerName, player, functionToCall);

            dndAlarm.AlarmFired += DndAlarm_AlarmFired;
            return(null);
        }