Ejemplo n.º 1
0
 public ItemIntegrationWindow(SimpleItemIntegration sii)
 {
     this.DataContext = this.Integration = sii;
     this.InitializeComponent();
     this.CB_ProfBonus.DataContext                                                           =
         this.CB_StrBonus.DataContext                                                        =
             this.CB_DexBonus.DataContext                                                    =
                 this.CB_ConBonus.DataContext                                                =
                     this.CB_WisBonus.DataContext                                            =
                         this.CB_ChaBonus.DataContext                                        =
                             this.CB_IntBonus.DataContext                                    =
                                 this.CB_DmgStrBonus.DataContext                             =
                                     this.CB_DmgDexBonus.DataContext                         =
                                         this.CB_DmgConBonus.DataContext                     =
                                             this.CB_DmgWisBonus.DataContext                 =
                                                 this.CB_DmgChaBonus.DataContext             =
                                                     this.CB_DmgIntBonus.DataContext         =
                                                         this.LV_Dice.DataContext            =
                                                             this.IntUD_Constant.DataContext =
                                                                 this.IntUD_PP.DataContext   = this.Integration;
 }
        private void EditItemR20(object sender, RoutedEventArgs e)
        {
            if (sender is Button) // Click
            {
                if (this.Inventory.SelectedItems != null && this.Inventory.SelectedItems.Count > 0)
                {
                    InventoryItem         ii    = (InventoryItem)this.Inventory.SelectedItems[0];
                    SimpleItemIntegration clone = ii.Integration?.Copy() ?? new SimpleItemIntegration();
                    ItemIntegrationWindow iiw   = new ItemIntegrationWindow(clone)
                    {
                        Title = ii.Name
                    };

                    if (iiw.ShowDialog() ?? false)
                    {
                        ii.Integration = iiw.Integration;
                    }
                }
            }
            else
            {
                if (sender is InventoryItem ii)
                {
                    SimpleItemIntegration clone = ii.Integration?.Copy() ?? new SimpleItemIntegration();
                    ItemIntegrationWindow iiw   = new ItemIntegrationWindow(clone)
                    {
                        Title = ii.Name
                    };

                    if (iiw.ShowDialog() ?? false)
                    {
                        ii.Integration = iiw.Integration;
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public static void RunItemsRoll20Integration(InventoryItem ii)
        {
            SimpleItemIntegration sii = ii.Integration;

            if (sii != null)
            {
                // Determine integration type
                if (sii.HitDieSide <= 0)       // No hit die
                {
                    if (sii.Damage.Count == 0) // No damage, description
                    {
                        R20WSServer.Send(new CommandPacket
                        {
                            GMRoll   = false,
                            Template = Roll20.Template.Description,
                            Data     = new TemplateDataDesc
                            {
                                Desc = "** " + ii.Name + " **\n" + ii.Description
                            }
                        });
                    }
                    else // Have damage, but no hit die
                    {
                        string damageString = "[[";
                        for (int i = 0; i < sii.Damage.Count; i++)
                        {
                            DamageLine dl = sii.Damage[i];
                            if (dl.DieSide > 0 && dl.ConstantNumber != 0)
                            {
                                damageString += $"[[[[{dl.NumDice}d{dl.DieSide}]] + {dl.ConstantNumber}]][{dl.Label}]";
                            }
                            else
                            {
                                if (dl.DieSide > 0)
                                {
                                    damageString += $"[[{dl.NumDice}d{dl.DieSide}]][{dl.Label}]";
                                }
                                else
                                {
                                    damageString += $"{dl.ConstantNumber}[{dl.Label}]";
                                }
                            }

                            if (i != sii.Damage.Count - 1)
                            {
                                damageString += "+";
                            }
                        }

                        if (sii.DamageIncludeStr)
                        {
                            damageString += $"+{AppState.Current.State.General.StatModStr}[{MainWindow.Translate("General_Str")}]";
                        }

                        if (sii.DamageIncludeDex)
                        {
                            damageString += $"+{AppState.Current.State.General.StatModDex}[{MainWindow.Translate("General_Dex")}]";
                        }

                        if (sii.DamageIncludeCon)
                        {
                            damageString += $"+{AppState.Current.State.General.StatModCon}[{MainWindow.Translate("General_Con")}]";
                        }

                        if (sii.DamageIncludeWis)
                        {
                            damageString += $"+{AppState.Current.State.General.StatModWis}[{MainWindow.Translate("General_Wis")}]";
                        }

                        if (sii.DamageIncludeCha)
                        {
                            damageString += $"+{AppState.Current.State.General.StatModCha}[{MainWindow.Translate("General_Cha")}]";
                        }

                        if (sii.DamageIncludeInt)
                        {
                            damageString += $"+{AppState.Current.State.General.StatModInt}[{MainWindow.Translate("General_Int")}]";
                        }

                        damageString += "]]";
                        R20WSServer.Send(new CommandPacket
                        {
                            GMRoll   = false,
                            Template = Roll20.Template.Dmg,
                            Data     = new TemplateDataDmg
                            {
                                CharName = AppState.Current.State.General.Name,
                                Name     = ii.Name,
                                Dmg1     = damageString,
                                Dmg2     = damageString
                            }
                        });
                    }
                }
                else // Have hit die
                {
                    string hitString = $"[[[[1d{sii.HitDieSide}]][1d{sii.HitDieSide}]";
                    if (sii.HitConstant > 0)
                    {
                        hitString += $"+{sii.HitConstant}";
                    }

                    if (sii.HitIncludeProfficiency)
                    {
                        hitString += $"+{AppState.Current.State.General.ProfficiencyBonus}[{MainWindow.Translate("General_PBonus")}]";
                    }

                    if (sii.HitIncludeStr)
                    {
                        hitString += $"+{AppState.Current.State.General.StatModStr}[{MainWindow.Translate("General_Str")}]";
                    }

                    if (sii.HitIncludeDex)
                    {
                        hitString += $"+{AppState.Current.State.General.StatModDex}[{MainWindow.Translate("General_Dex")}]";
                    }

                    if (sii.HitIncludeCon)
                    {
                        hitString += $"+{AppState.Current.State.General.StatModCon}[{MainWindow.Translate("General_Con")}]";
                    }

                    if (sii.HitIncludeWis)
                    {
                        hitString += $"+{AppState.Current.State.General.StatModWis}[{MainWindow.Translate("General_Wis")}]";
                    }

                    if (sii.HitIncludeCha)
                    {
                        hitString += $"+{AppState.Current.State.General.StatModCha}[{MainWindow.Translate("General_Cha")}]";
                    }

                    if (sii.HitIncludeInt)
                    {
                        hitString += $"+{AppState.Current.State.General.StatModInt}[{MainWindow.Translate("General_Int")}]";
                    }

                    hitString += "]]";
                    if (sii.Damage.Count == 0) // Have no damage die
                    {
                        R20WSServer.Send(new CommandPacket
                        {
                            GMRoll   = false,
                            Template = Roll20.Template.Simple,
                            Data     = new TemplateDataSimple
                            {
                                CharName = AppState.Current.State.General.Name,
                                Name     = ii.Name,
                                R1       = hitString,
                                R2       = hitString
                            }
                        });
                    }
                    else // Have damage die
                    {
                        string damageString = "[[";
                        string critString   = "[[";
                        for (int i = 0; i < sii.Damage.Count; i++)
                        {
                            DamageLine dl = sii.Damage[i];
                            if (dl.DieSide > 0 && dl.ConstantNumber != 0)
                            {
                                damageString += $"[[[[{dl.NumDice}d{dl.DieSide}]][{dl.NumDice}d{dl.DieSide}] + {dl.ConstantNumber}]][{dl.Label}]";
                                critString   += $"[[{dl.NumDice}d{dl.DieSide}]][{dl.NumDice}d{dl.DieSide} {dl.Label}]";
                            }
                            else
                            {
                                if (dl.DieSide > 0)
                                {
                                    damageString += $"[[{dl.NumDice}d{dl.DieSide}]][{dl.NumDice}d{dl.DieSide} {dl.Label}]";
                                    critString   += $"[[{dl.NumDice}d{dl.DieSide}]][{dl.NumDice}d{dl.DieSide} {dl.Label}]";
                                }
                                else
                                {
                                    damageString += $"{dl.ConstantNumber}[{dl.Label}]";
                                }
                            }

                            if (i != sii.Damage.Count - 1)
                            {
                                damageString += "+";
                                critString   += "+";
                            }
                        }

                        while (critString[critString.Length - 1] == '+')
                        {
                            critString = critString.Substring(0, critString.Length - 1);
                        }

                        critString += "]]";
                        if (sii.DamageIncludeStr)
                        {
                            damageString += $"+{AppState.Current.State.General.StatModStr}[{MainWindow.Translate("General_Str")}]";
                        }

                        if (sii.DamageIncludeDex)
                        {
                            damageString += $"+{AppState.Current.State.General.StatModDex}[{MainWindow.Translate("General_Dex")}]";
                        }

                        if (sii.DamageIncludeCon)
                        {
                            damageString += $"+{AppState.Current.State.General.StatModCon}[{MainWindow.Translate("General_Con")}]";
                        }

                        if (sii.DamageIncludeWis)
                        {
                            damageString += $"+{AppState.Current.State.General.StatModWis}[{MainWindow.Translate("General_Wis")}]";
                        }

                        if (sii.DamageIncludeCha)
                        {
                            damageString += $"+{AppState.Current.State.General.StatModCha}[{MainWindow.Translate("General_Cha")}]";
                        }

                        if (sii.DamageIncludeInt)
                        {
                            damageString += $"+{AppState.Current.State.General.StatModInt}[{MainWindow.Translate("General_Int")}]";
                        }

                        damageString += "]]";
                        R20WSServer.Send(new CommandPacket
                        {
                            GMRoll   = false,
                            Template = Roll20.Template.AtkDmg,
                            Data     = new TemplateDataAtkDmg
                            {
                                CharName = AppState.Current.State.General.Name,
                                Crit     = critString,
                                Dmg      = damageString,
                                R1       = hitString,
                                R2       = hitString,
                                Name     = ii.Name
                            }
                        });
                    }
                }
            }
        }