Beispiel #1
0
        Dictionary <string, int> get_damage_expression_breakdown()
        {
            Dictionary <string, int> breakdown = new Dictionary <string, int>();

            foreach (CreaturePower power in fPowers)
            {
                DiceExpression exp = DiceExpression.Parse(power.Damage);
                if (exp == null)
                {
                    continue;
                }
                if (exp.Maximum == 0)
                {
                    continue;
                }

                string dmg = exp.ToString();

                if (!breakdown.ContainsKey(dmg))
                {
                    breakdown[dmg] = 0;
                }

                breakdown[dmg] += 1;
            }

            return(breakdown);
        }
Beispiel #2
0
        private void ExpressionBox_TextChanged(object sender, EventArgs e)
        {
            if (fUpdating)
            {
                return;
            }

            DiceExpression exp = DiceExpression.Parse(ExpressionBox.Text);

            if (exp != null)
            {
                fUpdating = true;

                ClearBtn_Click(sender, e);

                fConstant = exp.Constant;

                for (int n = 0; n != exp.Throws; ++n)
                {
                    add_die(exp.Sides);
                }

                fUpdating = false;
            }
        }
Beispiel #3
0
        private void RollDamageBtn_Click(object sender, EventArgs e)
        {
            DiceExpression exp = DiceExpression.Parse(DamageExpLbl.Text);

            if (exp != null)
            {
                int roll = exp.Evaluate();
                DamageBox.Value = roll;
            }
        }
Beispiel #4
0
        private void RollDamageBtn_Click(object sender, EventArgs e)
        {
            DiceExpression diceExpression = DiceExpression.Parse(this.DamageExpLbl.Text);

            if (diceExpression != null)
            {
                int num = diceExpression.Evaluate();
                this.DamageBox.Value = num;
            }
        }
Beispiel #5
0
        private void update_damage()
        {
            string damage = this.fPower.Damage;

            if (damage == "")
            {
                this.Pages.TabPages.Remove(this.DamagePage);
                return;
            }
            DiceExpression diceExpression = DiceExpression.Parse(damage);

            this.DamageExpLbl.Text = damage;
            this.CritValueLbl.Text = diceExpression.Maximum.ToString();
        }
Beispiel #6
0
        void update_damage()
        {
            string dmg_str = fPower.Damage;

            if (dmg_str == "")
            {
                Pages.TabPages.Remove(DamagePage);
            }
            else
            {
                DiceExpression exp = DiceExpression.Parse(dmg_str);

                DamageExpLbl.Text = dmg_str;
                CritValueLbl.Text = exp.Maximum.ToString();
            }
        }
Beispiel #7
0
        private void ExpressionBox_TextChanged(object sender, EventArgs e)
        {
            if (this.fUpdating)
            {
                return;
            }
            DiceExpression diceExpression = DiceExpression.Parse(this.ExpressionBox.Text);

            if (diceExpression != null)
            {
                this.fUpdating = true;
                this.ClearBtn_Click(sender, e);
                this.fConstant = diceExpression.Constant;
                for (int i = 0; i != diceExpression.Throws; i++)
                {
                    this.add_die(diceExpression.Sides);
                }
                this.fUpdating = false;
            }
        }
Beispiel #8
0
        private Dictionary <string, int> get_damage_expression_breakdown()
        {
            Dictionary <string, int> strs = new Dictionary <string, int>();

            foreach (CreaturePower fPower in this.fPowers)
            {
                DiceExpression diceExpression = DiceExpression.Parse(fPower.Damage);
                if (diceExpression == null || diceExpression.Maximum == 0)
                {
                    continue;
                }
                string str = diceExpression.ToString();
                if (!strs.ContainsKey(str))
                {
                    strs[str] = 0;
                }
                Dictionary <string, int> item  = strs;
                Dictionary <string, int> strs1 = item;
                string str1 = str;
                item[str1] = strs1[str1] + 1;
            }
            return(strs);
        }
Beispiel #9
0
 public void AdjustLevel(int delta)
 {
     this.fLevel += delta;
     this.fLevel  = Math.Max(1, this.fLevel);
     if (this.fInitiative != -2147483648)
     {
         Trap initiative = this;
         initiative.Initiative = initiative.Initiative + delta;
         this.fInitiative      = Math.Max(1, this.fInitiative);
     }
     foreach (TrapAttack fAttack in this.fAttacks)
     {
         if (fAttack.Attack != null)
         {
             PowerAttack attack = fAttack.Attack;
             attack.Bonus         = attack.Bonus + delta;
             fAttack.Attack.Bonus = Math.Max(1, fAttack.Attack.Bonus);
         }
         string str = AI.ExtractDamage(fAttack.OnHit);
         if (str != "")
         {
             DiceExpression diceExpression = DiceExpression.Parse(str);
             if (diceExpression != null)
             {
                 DiceExpression diceExpression1 = diceExpression.Adjust(delta);
                 if (diceExpression1 != null && diceExpression.ToString() != diceExpression1.ToString())
                 {
                     fAttack.OnHit = fAttack.OnHit.Replace(str, string.Concat(diceExpression1, " damage"));
                 }
             }
         }
         string str1 = AI.ExtractDamage(fAttack.OnMiss);
         if (str1 != "")
         {
             DiceExpression diceExpression2 = DiceExpression.Parse(str1);
             if (diceExpression2 != null)
             {
                 DiceExpression diceExpression3 = diceExpression2.Adjust(delta);
                 if (diceExpression3 != null && diceExpression2.ToString() != diceExpression3.ToString())
                 {
                     fAttack.OnMiss = fAttack.OnMiss.Replace(str1, string.Concat(diceExpression3, " damage"));
                 }
             }
         }
         string str2 = AI.ExtractDamage(fAttack.Effect);
         if (str2 == "")
         {
             continue;
         }
         DiceExpression diceExpression4 = DiceExpression.Parse(str2);
         if (diceExpression4 == null)
         {
             continue;
         }
         DiceExpression diceExpression5 = diceExpression4.Adjust(delta);
         if (diceExpression5 == null || !(diceExpression4.ToString() != diceExpression5.ToString()))
         {
             continue;
         }
         fAttack.Effect = fAttack.Effect.Replace(str2, string.Concat(diceExpression5, " damage"));
     }
     foreach (TrapSkillData fSkill in this.fSkills)
     {
         TrapSkillData dC = fSkill;
         dC.DC = dC.DC + delta;
     }
 }
Beispiel #10
0
        void update_list()
        {
            int level = (int)LevelBox.Value;

            int aid_another = 10 + (level / 2);

            string normal   = Statistics.NormalDamage(level);
            string multiple = Statistics.MultipleDamage(level);
            string minion   = Statistics.MinionDamage(level).ToString();

            SkillList.BeginUpdate();
            SkillList.Items.Clear();

            #region Skill DCs

            ListViewItem lvi_easy = SkillList.Items.Add("Easy");
            lvi_easy.SubItems.Add("DC " + AI.GetSkillDC(Difficulty.Easy, level));
            lvi_easy.Group = SkillList.Groups[0];

            ListViewItem lvi_moderate = SkillList.Items.Add("Moderate");
            lvi_moderate.SubItems.Add("DC " + AI.GetSkillDC(Difficulty.Moderate, level));
            lvi_moderate.Group = SkillList.Groups[0];

            ListViewItem lvi_hard = SkillList.Items.Add("Hard");
            lvi_hard.SubItems.Add("DC " + AI.GetSkillDC(Difficulty.Hard, level));
            lvi_hard.Group = SkillList.Groups[0];

            #endregion

            #region Aid Another

            ListViewItem lvi_aid = SkillList.Items.Add("Aid Another");
            lvi_aid.SubItems.Add("DC " + aid_another);
            lvi_aid.Group = SkillList.Groups[1];

            #endregion

            #region Damage

            ListViewItem lvi_damage = SkillList.Items.Add("Against a single target");
            lvi_damage.SubItems.Add(normal);
            lvi_damage.Tag   = DiceExpression.Parse(normal);
            lvi_damage.Group = SkillList.Groups[2];

            ListViewItem lvi_multiple = SkillList.Items.Add("Against multiple targets");
            lvi_multiple.SubItems.Add(multiple);
            lvi_multiple.Tag   = DiceExpression.Parse(multiple);
            lvi_multiple.Group = SkillList.Groups[2];

            ListViewItem lvi_minion = SkillList.Items.Add("From a minion");
            lvi_minion.SubItems.Add(minion);
            lvi_minion.Tag   = DiceExpression.Parse(minion);
            lvi_minion.Group = SkillList.Groups[2];

            #endregion

            #region Monster Knowledge

            ListViewItem lvi_aberrant = SkillList.Items.Add("Aberrant");
            lvi_aberrant.SubItems.Add("Dungeoneering");
            lvi_aberrant.Group = SkillList.Groups[3];

            ListViewItem lvi_elemental = SkillList.Items.Add("Elemental");
            lvi_elemental.SubItems.Add("Arcana");
            lvi_elemental.Group = SkillList.Groups[3];

            ListViewItem lvi_fey = SkillList.Items.Add("Fey");
            lvi_fey.SubItems.Add("Arcana");
            lvi_fey.Group = SkillList.Groups[3];

            ListViewItem lvi_immortal = SkillList.Items.Add("Immortal");
            lvi_immortal.SubItems.Add("Religion");
            lvi_immortal.Group = SkillList.Groups[3];

            ListViewItem lvi_natural = SkillList.Items.Add("Natural");
            lvi_natural.SubItems.Add("Nature");
            lvi_natural.Group = SkillList.Groups[3];

            ListViewItem lvi_shadow = SkillList.Items.Add("Shadow");
            lvi_shadow.SubItems.Add("Arcana");
            lvi_shadow.Group = SkillList.Groups[3];

            ListViewItem lvi_undead = SkillList.Items.Add("Undead keyword");
            lvi_undead.SubItems.Add("Religion");
            lvi_undead.Group = SkillList.Groups[3];

            #endregion

            SkillList.EndUpdate();
        }
Beispiel #11
0
        private void update_table()
        {
            List <string> strs = new List <string>();

            strs.AddRange(HTML.GetHead("Power Statistics", "", DisplaySize.Small));
            strs.Add("<BODY>");
            strs.Add("<P class=table>");
            strs.Add("<TABLE>");
            strs.Add("<TR class=heading>");
            strs.Add("<TD colspan=3>");
            strs.Add("<B>Number of Powers</B>");
            strs.Add("</TD>");
            strs.Add("</TR>");
            strs.Add("<TR>");
            strs.Add("<TD colspan=2>");
            strs.Add("Number of powers");
            strs.Add("</TD>");
            strs.Add("<TD align=right>");
            strs.Add(this.fPowers.Count.ToString());
            strs.Add("</TD>");
            strs.Add("</TR>");
            if (this.fCreatures != 0)
            {
                double count = (double)this.fPowers.Count / (double)this.fCreatures;
                strs.Add("<TR>");
                strs.Add("<TD colspan=2>");
                strs.Add("Powers per creature");
                strs.Add("</TD>");
                strs.Add("<TD align=right>");
                strs.Add(count.ToString("F1"));
                strs.Add("</TD>");
                strs.Add("</TR>");
            }
            strs.Add("</TABLE>");
            strs.Add("</P>");
            if (this.fPowers.Count != 0)
            {
                strs.Add("<P class=table>");
                strs.Add("<TABLE>");
                Dictionary <string, int> conditionBreakdown = this.get_condition_breakdown();
                if (conditionBreakdown.Count != 0)
                {
                    strs.Add("<TR class=heading>");
                    strs.Add("<TD colspan=3>");
                    strs.Add("<B>Conditions</B>");
                    strs.Add("</TD>");
                    strs.Add("</TR>");
                    foreach (Pair <string, int> pair in this.sort_breakdown(conditionBreakdown))
                    {
                        int second = pair.Second;
                        if (second == 0)
                        {
                            continue;
                        }
                        double num = (double)second / (double)this.fPowers.Count;
                        strs.Add("<TR>");
                        strs.Add("<TD colspan=2>");
                        strs.Add(pair.First);
                        strs.Add("</TD>");
                        strs.Add("<TD align=right>");
                        object[] str = new object[] { second, " (", num.ToString("P0"), ")" };
                        strs.Add(string.Concat(str));
                        strs.Add("</TD>");
                        strs.Add("</TR>");
                    }
                }
                strs.Add("</TABLE>");
                strs.Add("</P>");
            }
            if (this.fPowers.Count != 0)
            {
                strs.Add("<P class=table>");
                strs.Add("<TABLE>");
                Dictionary <string, int> damageTypeBreakdown = this.get_damage_type_breakdown();
                if (damageTypeBreakdown.Count != 0)
                {
                    strs.Add("<TR class=heading>");
                    strs.Add("<TD colspan=3>");
                    strs.Add("<B>Damage Types</B>");
                    strs.Add("</TD>");
                    strs.Add("</TR>");
                    foreach (Pair <string, int> pair1 in this.sort_breakdown(damageTypeBreakdown))
                    {
                        int    second1 = pair1.Second;
                        double count1  = (double)second1 / (double)this.fPowers.Count;
                        strs.Add("<TR>");
                        strs.Add("<TD colspan=2>");
                        strs.Add(pair1.First);
                        strs.Add("</TD>");
                        strs.Add("<TD align=right>");
                        object[] objArray = new object[] { second1, " (", count1.ToString("P0"), ")" };
                        strs.Add(string.Concat(objArray));
                        strs.Add("</TD>");
                        strs.Add("</TR>");
                    }
                }
                strs.Add("</TABLE>");
                strs.Add("</P>");
            }
            if (this.fPowers.Count != 0)
            {
                strs.Add("<P class=table>");
                strs.Add("<TABLE>");
                Dictionary <string, int> keywordBreakdown = this.get_keyword_breakdown();
                if (keywordBreakdown.Count != 0)
                {
                    strs.Add("<TR class=heading>");
                    strs.Add("<TD colspan=3>");
                    strs.Add("<B>Keywords</B>");
                    strs.Add("</TD>");
                    strs.Add("</TR>");
                    foreach (Pair <string, int> pair2 in this.sort_breakdown(keywordBreakdown))
                    {
                        int    num1   = pair2.Second;
                        double count2 = (double)num1 / (double)this.fPowers.Count;
                        strs.Add("<TR>");
                        strs.Add("<TD colspan=2>");
                        strs.Add(pair2.First);
                        strs.Add("</TD>");
                        strs.Add("<TD align=right>");
                        object[] str1 = new object[] { num1, " (", count2.ToString("P0"), ")" };
                        strs.Add(string.Concat(str1));
                        strs.Add("</TD>");
                        strs.Add("</TR>");
                    }
                }
                strs.Add("</TABLE>");
                strs.Add("</P>");
            }
            if (this.fPowers.Count != 0)
            {
                Dictionary <string, double> categoryBreakdown = this.get_category_breakdown();
                if (categoryBreakdown.Count != 0)
                {
                    strs.Add("<P class=table>");
                    strs.Add("<TABLE>");
                    strs.Add("<TR class=heading>");
                    strs.Add("<TD colspan=3>");
                    strs.Add("<B>Powers Per Category</B>");
                    strs.Add("</TD>");
                    strs.Add("</TR>");
                    foreach (string key in categoryBreakdown.Keys)
                    {
                        double item = categoryBreakdown[key];
                        strs.Add("<TR>");
                        strs.Add("<TD colspan=2>");
                        strs.Add(key);
                        strs.Add("</TD>");
                        strs.Add("<TD align=right>");
                        strs.Add(item.ToString("P0"));
                        strs.Add("</TD>");
                        strs.Add("</TR>");
                    }
                    strs.Add("</TABLE>");
                    strs.Add("</P>");
                }
            }
            if (this.fPowers.Count != 0)
            {
                strs.Add("<P class=table>");
                strs.Add("<TABLE>");
                Dictionary <string, int> damageExpressionBreakdown = this.get_damage_expression_breakdown();
                if (damageExpressionBreakdown.Count != 0)
                {
                    strs.Add("<TR class=heading>");
                    strs.Add("<TD colspan=3>");
                    strs.Add("<B>Damage</B>");
                    strs.Add("</TD>");
                    strs.Add("</TR>");
                    foreach (Pair <string, int> pair3 in this.sort_breakdown(damageExpressionBreakdown))
                    {
                        int            second2        = pair3.Second;
                        double         num2           = (double)second2 / (double)this.fPowers.Count;
                        DiceExpression diceExpression = DiceExpression.Parse(pair3.First);
                        strs.Add("<TR>");
                        strs.Add("<TD colspan=2>");
                        object[] first = new object[] { pair3.First, " (avg ", diceExpression.Average, ", max ", diceExpression.Maximum, ")" };
                        strs.Add(string.Concat(first));
                        strs.Add("</TD>");
                        strs.Add("<TD align=right>");
                        object[] objArray1 = new object[] { second2, " (", num2.ToString("P0"), ")" };
                        strs.Add(string.Concat(objArray1));
                        strs.Add("</TD>");
                        strs.Add("</TR>");
                    }
                }
                strs.Add("</TABLE>");
                strs.Add("</P>");
            }
            strs.Add("</BODY>");
            strs.Add("</HTML>");
            this.Browser.DocumentText = HTML.Concatenate(strs);
        }
Beispiel #12
0
        void update_table()
        {
            List <string> lines = new List <string>();

            lines.AddRange(HTML.GetHead("Power Statistics", "", Session.Preferences.TextSize));
            lines.Add("<BODY>");

            #region Number of powers

            lines.Add("<P class=table>");
            lines.Add("<TABLE>");

            lines.Add("<TR class=heading>");
            lines.Add("<TD colspan=3>");
            lines.Add("<B>Number of Powers</B>");
            lines.Add("</TD>");
            lines.Add("</TR>");

            lines.Add("<TR>");
            lines.Add("<TD colspan=2>");
            lines.Add("Number of powers");
            lines.Add("</TD>");
            lines.Add("<TD align=right>");
            lines.Add(fPowers.Count.ToString());
            lines.Add("</TD>");
            lines.Add("</TR>");

            if (fCreatures != 0)
            {
                // Powers per creature
                double ppc = (double)fPowers.Count / fCreatures;
                lines.Add("<TR>");
                lines.Add("<TD colspan=2>");
                lines.Add("Powers per creature");
                lines.Add("</TD>");
                lines.Add("<TD align=right>");
                lines.Add(ppc.ToString("F1"));
                lines.Add("</TD>");
                lines.Add("</TR>");
            }

            lines.Add("</TABLE>");
            lines.Add("</P>");

            #endregion

            #region Conditions

            if (fPowers.Count != 0)
            {
                lines.Add("<P class=table>");
                lines.Add("<TABLE>");

                // Number of powers with each condition
                Dictionary <string, int> condition_breakdown = get_condition_breakdown();
                if (condition_breakdown.Count != 0)
                {
                    lines.Add("<TR class=heading>");
                    lines.Add("<TD colspan=3>");
                    lines.Add("<B>Conditions</B>");
                    lines.Add("</TD>");
                    lines.Add("</TR>");

                    List <Pair <string, int> > list = sort_breakdown(condition_breakdown);
                    foreach (Pair <string, int> condition in list)
                    {
                        int count = condition.Second;
                        if (count == 0)
                        {
                            continue;
                        }

                        double pc = (double)count / fPowers.Count;

                        lines.Add("<TR>");
                        lines.Add("<TD colspan=2>");
                        lines.Add(condition.First);
                        lines.Add("</TD>");
                        lines.Add("<TD align=right>");
                        lines.Add(count + " (" + pc.ToString("P0") + ")");
                        lines.Add("</TD>");
                        lines.Add("</TR>");
                    }
                }

                lines.Add("</TABLE>");
                lines.Add("</P>");
            }

            #endregion

            #region Damage types

            if (fPowers.Count != 0)
            {
                lines.Add("<P class=table>");
                lines.Add("<TABLE>");

                // Number of powers with each damage type
                Dictionary <string, int> type_breakdown = get_damage_type_breakdown();
                if (type_breakdown.Count != 0)
                {
                    lines.Add("<TR class=heading>");
                    lines.Add("<TD colspan=3>");
                    lines.Add("<B>Damage Types</B>");
                    lines.Add("</TD>");
                    lines.Add("</TR>");

                    List <Pair <string, int> > list = sort_breakdown(type_breakdown);
                    foreach (Pair <string, int> type in list)
                    {
                        int    count = type.Second;
                        double pc    = (double)count / fPowers.Count;

                        lines.Add("<TR>");
                        lines.Add("<TD colspan=2>");
                        lines.Add(type.First);
                        lines.Add("</TD>");
                        lines.Add("<TD align=right>");
                        lines.Add(count + " (" + pc.ToString("P0") + ")");
                        lines.Add("</TD>");
                        lines.Add("</TR>");
                    }
                }

                lines.Add("</TABLE>");
                lines.Add("</P>");
            }

            #endregion

            #region Keywords

            if (fPowers.Count != 0)
            {
                lines.Add("<P class=table>");
                lines.Add("<TABLE>");

                // Number of powers with each keyword
                Dictionary <string, int> keyword_breakdown = get_keyword_breakdown();
                if (keyword_breakdown.Count != 0)
                {
                    lines.Add("<TR class=heading>");
                    lines.Add("<TD colspan=3>");
                    lines.Add("<B>Keywords</B>");
                    lines.Add("</TD>");
                    lines.Add("</TR>");

                    List <Pair <string, int> > list = sort_breakdown(keyword_breakdown);
                    foreach (Pair <string, int> type in list)
                    {
                        int    count = type.Second;
                        double pc    = (double)count / fPowers.Count;

                        lines.Add("<TR>");
                        lines.Add("<TD colspan=2>");
                        lines.Add(type.First);
                        lines.Add("</TD>");
                        lines.Add("<TD align=right>");
                        lines.Add(count + " (" + pc.ToString("P0") + ")");
                        lines.Add("</TD>");
                        lines.Add("</TR>");
                    }
                }

                lines.Add("</TABLE>");
                lines.Add("</P>");
            }

            #endregion

            #region Categories

            if (fPowers.Count != 0)
            {
                // Number of powers per category
                Dictionary <string, double> category_breakdown = get_category_breakdown();
                if (category_breakdown.Count != 0)
                {
                    lines.Add("<P class=table>");
                    lines.Add("<TABLE>");

                    lines.Add("<TR class=heading>");
                    lines.Add("<TD colspan=3>");
                    lines.Add("<B>Powers Per Category</B>");
                    lines.Add("</TD>");
                    lines.Add("</TR>");

                    foreach (string category in category_breakdown.Keys)
                    {
                        double pc = category_breakdown[category];

                        lines.Add("<TR>");
                        lines.Add("<TD colspan=2>");
                        lines.Add(category);
                        lines.Add("</TD>");
                        lines.Add("<TD align=right>");
                        lines.Add(pc.ToString("P0"));
                        lines.Add("</TD>");
                        lines.Add("</TR>");
                    }

                    lines.Add("</TABLE>");
                    lines.Add("</P>");
                }
            }

            #endregion

            #region Damage expressions

            if (fPowers.Count != 0)
            {
                lines.Add("<P class=table>");
                lines.Add("<TABLE>");

                // Frequency of damage expressions
                Dictionary <string, int> damage_breakdown = get_damage_expression_breakdown();
                if (damage_breakdown.Count != 0)
                {
                    lines.Add("<TR class=heading>");
                    lines.Add("<TD colspan=3>");
                    lines.Add("<B>Damage</B>");
                    lines.Add("</TD>");
                    lines.Add("</TR>");

                    List <Pair <string, int> > list = sort_breakdown(damage_breakdown);
                    foreach (Pair <string, int> dmg in list)
                    {
                        int    count = dmg.Second;
                        double pc    = (double)count / fPowers.Count;

                        DiceExpression exp = DiceExpression.Parse(dmg.First);

                        lines.Add("<TR>");
                        lines.Add("<TD colspan=2>");
                        lines.Add(dmg.First + " (avg " + exp.Average + ", max " + exp.Maximum + ")");
                        lines.Add("</TD>");
                        lines.Add("<TD align=right>");
                        lines.Add(count + " (" + pc.ToString("P0") + ")");
                        lines.Add("</TD>");
                        lines.Add("</TR>");
                    }
                }

                lines.Add("</TABLE>");
                lines.Add("</P>");
            }

            #endregion

            lines.Add("</BODY>");
            lines.Add("</HTML>");

            Browser.DocumentText = HTML.Concatenate(lines);
        }
Beispiel #13
0
        /// <summary>
        /// Adjusts the trap's level and attack data.
        /// </summary>
        /// <param name="delta">The level adjustment delta.</param>
        public void AdjustLevel(int delta)
        {
            fLevel += delta;
            fLevel  = Math.Max(1, fLevel);

            if (fInitiative != int.MinValue)
            {
                Initiative += delta;
                fInitiative = Math.Max(1, fInitiative);
            }

            foreach (TrapAttack ta in fAttacks)
            {
                if (ta.Attack != null)
                {
                    ta.Attack.Bonus += delta;
                    ta.Attack.Bonus  = Math.Max(1, ta.Attack.Bonus);
                }

                string hit_dmg = AI.ExtractDamage(ta.OnHit);
                if (hit_dmg != "")
                {
                    DiceExpression exp = DiceExpression.Parse(hit_dmg);
                    if (exp != null)
                    {
                        DiceExpression exp_adj = exp.Adjust(delta);
                        if ((exp_adj != null) && (exp.ToString() != exp_adj.ToString()))
                        {
                            ta.OnHit = ta.OnHit.Replace(hit_dmg, exp_adj + " damage");
                        }
                    }
                }

                string miss_dmg = AI.ExtractDamage(ta.OnMiss);
                if (miss_dmg != "")
                {
                    DiceExpression exp = DiceExpression.Parse(miss_dmg);
                    if (exp != null)
                    {
                        DiceExpression exp_adj = exp.Adjust(delta);
                        if ((exp_adj != null) && (exp.ToString() != exp_adj.ToString()))
                        {
                            ta.OnMiss = ta.OnMiss.Replace(miss_dmg, exp_adj + " damage");
                        }
                    }
                }

                string effect_dmg = AI.ExtractDamage(ta.Effect);
                if (effect_dmg != "")
                {
                    DiceExpression exp = DiceExpression.Parse(effect_dmg);
                    if (exp != null)
                    {
                        DiceExpression exp_adj = exp.Adjust(delta);
                        if ((exp_adj != null) && (exp.ToString() != exp_adj.ToString()))
                        {
                            ta.Effect = ta.Effect.Replace(effect_dmg, exp_adj + " damage");
                        }
                    }
                }
            }

            foreach (TrapSkillData tsd in fSkills)
            {
                tsd.DC += delta;
            }
        }
Beispiel #14
0
        private void update_list()
        {
            int    value = (int)this.LevelBox.Value;
            int    num   = 10 + value / 2;
            string str   = Statistics.NormalDamage(value);
            string str1  = Statistics.MultipleDamage(value);
            string str2  = Statistics.MinionDamage(value).ToString();

            this.SkillList.BeginUpdate();
            this.SkillList.Items.Clear();
            ListViewItem item = this.SkillList.Items.Add("Easy");

            item.SubItems.Add(string.Concat("DC ", AI.GetSkillDC(Difficulty.Easy, value)));
            item.Group = this.SkillList.Groups[0];
            ListViewItem listViewItem = this.SkillList.Items.Add("Moderate");

            listViewItem.SubItems.Add(string.Concat("DC ", AI.GetSkillDC(Difficulty.Moderate, value)));
            listViewItem.Group = this.SkillList.Groups[0];
            ListViewItem item1 = this.SkillList.Items.Add("Hard");

            item1.SubItems.Add(string.Concat("DC ", AI.GetSkillDC(Difficulty.Hard, value)));
            item1.Group = this.SkillList.Groups[0];
            ListViewItem listViewItem1 = this.SkillList.Items.Add("Aid Another");

            listViewItem1.SubItems.Add(string.Concat("DC ", num));
            listViewItem1.Group = this.SkillList.Groups[1];
            ListViewItem item2 = this.SkillList.Items.Add("Against a single target");

            item2.SubItems.Add(str);
            item2.Tag   = DiceExpression.Parse(str);
            item2.Group = this.SkillList.Groups[2];
            ListViewItem listViewItem2 = this.SkillList.Items.Add("Against multiple targets");

            listViewItem2.SubItems.Add(str1);
            listViewItem2.Tag   = DiceExpression.Parse(str1);
            listViewItem2.Group = this.SkillList.Groups[2];
            ListViewItem item3 = this.SkillList.Items.Add("From a minion");

            item3.SubItems.Add(str2);
            item3.Tag   = DiceExpression.Parse(str2);
            item3.Group = this.SkillList.Groups[2];
            ListViewItem listViewItem3 = this.SkillList.Items.Add("Aberrant");

            listViewItem3.SubItems.Add("Dungeoneering");
            listViewItem3.Group = this.SkillList.Groups[3];
            ListViewItem item4 = this.SkillList.Items.Add("Elemental");

            item4.SubItems.Add("Arcana");
            item4.Group = this.SkillList.Groups[3];
            ListViewItem listViewItem4 = this.SkillList.Items.Add("Fey");

            listViewItem4.SubItems.Add("Arcana");
            listViewItem4.Group = this.SkillList.Groups[3];
            ListViewItem item5 = this.SkillList.Items.Add("Immortal");

            item5.SubItems.Add("Religion");
            item5.Group = this.SkillList.Groups[3];
            ListViewItem listViewItem5 = this.SkillList.Items.Add("Natural");

            listViewItem5.SubItems.Add("Nature");
            listViewItem5.Group = this.SkillList.Groups[3];
            ListViewItem item6 = this.SkillList.Items.Add("Shadow");

            item6.SubItems.Add("Arcana");
            item6.Group = this.SkillList.Groups[3];
            ListViewItem listViewItem6 = this.SkillList.Items.Add("Undead keyword");

            listViewItem6.SubItems.Add("Religion");
            listViewItem6.Group = this.SkillList.Groups[3];
            this.SkillList.EndUpdate();
        }