Пример #1
0
 static void ApplyEffect(BaseEffectData effect, ITargetable[] targets, IEffectable source)
 {
     for (var i = 0; i < targets.Length; i++)
     {
         var target = targets[i];
         effect.Apply(target, source);
     }
 }
    public void AddEffect(BaseEffectData effectData)
    {
        if (!value.ContainsKey(effectData.EffectId))
        {
            value.Add(effectData.EffectId, new List <BaseEffectData>());
        }

        value[effectData.EffectId].Add(effectData);
    }
Пример #3
0
            /// <summary>
            ///     Resolves and apply an effect caused by a source uppon on or many targets.
            /// </summary>
            /// <param name="effect"></param>
            /// <param name="source"></param>
            /// <param name="targets"></param>
            public static void Resolve(BaseEffectData effect, IEffectable source, ITargetable[] targets)
            {
                if (effect == null)
                {
                    Debug.LogError("Can't resolve a null effect.");
                    return;
                }

                //apply the effect on the targets
                ApplyEffect(effect, targets, source);
            }
Пример #4
0
        private BaseEffectView CreateEffectView(BaseEffectData baseEffectData)
        {
            var effectId         = baseEffectData.EffectId;
            var effectPrefabPath = string.Format("Prefabs/CombatEffectVisuals/{0}EffectVisual", effectId);
            var effectObject     = ObjectPool.Spawn(effectPrefabPath, _parentTransform);

            BaseEffectView effectView = effectObject.GetComponent <BaseEffectView>();

            effectView.InitData(_selfEntity, effectId);

            return(effectView);
        }
        private void BtnOK_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(tbName.Text))
            {
                MessageBox.Show("You must enter the name for the effect.");
                return;
            }

            if (rbDamage.Checked)
            {
                DamageEffectData data = new DamageEffectData();

                data.Name         = tbName.Text;
                data.TargetType   = (TargetType)Enum.Parse(typeof(TargetType), cboTarget.SelectedItem.ToString());
                data.DamageType   = (DamageType)Enum.Parse(typeof(DamageType), cboDamage.SelectedItem.ToString());
                data.DieType      = (DieType)Enum.Parse(typeof(DieType), cboDieType.SelectedIndex.ToString());
                data.NumberOfDice = (int)sbNumOfDice.Value;
                data.Modifier     = (int)sbModifier.Value;

                BaseEffectData = data;
            }
            else
            {
                HealEffectData data = new HealEffectData();

                data.Name         = tbName.Text;
                data.TargetType   = (TargetType)Enum.Parse(typeof(TargetType), cboTarget.SelectedItem.ToString());
                data.DieType      = (DieType)Enum.Parse(typeof(DieType), cboDieType.SelectedIndex.ToString());
                data.NumberOfDice = (int)sbNumOfDice.Value;
                data.Modifier     = (int)sbModifier.Value;

                BaseEffectData = data;
            }

            Close();
        }
Пример #6
0
        public void FillTalents()
        {
            TalentData data = new TalentData
            {
                Name = "Bash",
                TalentPrerequisites   = new string[0],
                LevelRequirement      = 1,
                TalentType            = TalentType.Activated,
                ActivationCost        = 5,
                AllowedClasses        = new string[] { "Fighter" },
                AttributeRequirements = new Dictionary <string, int>()
                {
                    { "Strength", 10 }
                },
                AreaOfEffect  = 8,
                AngleOfEffect = MathHelper.TwoPi,
                Range         = 48,
                CastTime      = 0,
                CoolDown      = 1.5
            };

            BaseEffectData effect = (new DamageEffectData
            {
                TargetType = SpellClasses.TargetType.Enemy,
                AttackType = AttackType.Health,
                DamageType = DamageType.Crushing,
                DieType = DieType.D8,
                Modifier = 2,
                Name = "Bash",
                NumberOfDice = 2
            });

            data.Effects.Add(effect);

            talentData.Add("Bash", data);

            data = new TalentData()
            {
                Name = "Below The Belt",
                TalentPrerequisites   = new string[0],
                LevelRequirement      = 1,
                TalentType            = TalentType.Activated,
                ActivationCost        = 5,
                AllowedClasses        = new string[] { "Rogue" },
                AttributeRequirements = new Dictionary <string, int>()
                {
                    { "Dexterity", 10 }
                },
                AreaOfEffect  = 8,
                AngleOfEffect = MathHelper.TwoPi,
                Range         = 48,
                CastTime      = 0,
                CoolDown      = 1.5
            };

            effect = (new DamageEffectData()
            {
                TargetType = SpellClasses.TargetType.Enemy,
                AttackType = AttackType.Health,
                DamageType = DamageType.Piercing,
                DieType = DieType.D4,
                Modifier = 2,
                Name = "Below The Belt",
                NumberOfDice = 3
            });

            data.Effects.Add(effect);

            talentData.Add("Below The Belt", data);
        }
 private void BtnCancel_Click(object sender, EventArgs e)
 {
     BaseEffectData = null;
     Close();
 }
Пример #8
0
 public void AddTargets(BaseEffectData effect, ITargetable[] targets) => Targets.Add(effect, targets);
        public void FillSpellData()
        {
            SpellData data = new SpellData()
            {
                Name = "Spark Jolt",
                SpellPrerequisites    = new string[0],
                SpellType             = SpellType.Activated,
                LevelRequirement      = 1,
                ActivationCost        = 8,
                AllowedClasses        = new string[] { "Wizard" },
                AttributeRequirements = new Dictionary <string, int>()
                {
                    { "Magic", 10 }
                },
                AreaOfEffect  = 32,
                AngleOfEffect = MathHelper.TwoPi,
                CastTime      = 0,
                Duration      = 0,
                CoolDown      = 2,
                Range         = 128,
            };

            BaseEffectData effect = (new DamageEffectData
            {
                Name = "Spark Jolt",
                TargetType = TargetType.Enemy,
                AttackType = AttackType.Health,
                DamageType = DamageType.Air,
                DieType = DieType.D6,
                NumberOfDice = 3,
                Modifier = 2
            });

            data.Effects.Add(effect);

            spellData.Add("Spark Jolt", data);

            data = new SpellData()
            {
                Name = "Mend",
                SpellPrerequisites    = new string[0],
                SpellType             = SpellType.Activated,
                LevelRequirement      = 1,
                ActivationCost        = 6,
                AllowedClasses        = new string[] { "Priest" },
                AttributeRequirements = new Dictionary <string, int>()
                {
                    { "Magic", 10 }
                },
                Range         = 0,
                AreaOfEffect  = 0,
                AngleOfEffect = 0,
                CastTime      = 0,
                CoolDown      = 2
            };

            BaseEffectData healEffect = (new HealEffectData
            {
                Name = "Mend",
                TargetType = TargetType.Self,
                HealType = HealType.Health,
                DieType = DieType.D8,
                NumberOfDice = 2,
                Modifier = 2
            });

            data.Effects.Add(healEffect);
            spellData.Add("Mend", data);
        }