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; } } } }
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 } }); } } } }