From 473163e7c69545bd6d64ce8a6db3d50ec88c45c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AD=B1=E5=82=91?= Date: Sun, 20 Nov 2022 14:42:52 +0800 Subject: [PATCH] Update Banners Editor Add Default Banners --- Source/GrasscutterTools/App.config | 3 + .../Forms/FormGachaBannersEditor3.Designer.cs | 771 +++++++ .../Forms/FormGachaBannersEditor3.cs | 505 +++++ .../Forms/FormGachaBannersEditor3.en-us.resx | 430 ++++ .../Forms/FormGachaBannersEditor3.resx | 1896 +++++++++++++++++ .../Forms/FormGachaBannersEditor3.ru-ru.resx | 454 ++++ .../Forms/FormGachaBannersEditor3.zh-TW.resx | 288 +++ Source/GrasscutterTools/Forms/FormMain.cs | 79 +- .../Game/Gacha/GachaBanner3.cs | 230 ++ Source/GrasscutterTools/Game/GameData.cs | 2 + .../GrasscutterTools/GrasscutterTools.csproj | 26 + .../Properties/Resources.Designer.cs | 63 + .../Properties/Resources.en-us.resx | 3 + .../Properties/Resources.resx | 6 + .../Properties/Resources.ru-ru.resx | 3 + .../Properties/Resources.zh-TW.resx | 3 + .../Properties/Settings.Designer.cs | 14 +- .../Properties/Settings.settings | 3 + .../GrasscutterTools/Resources/Banners.json | 773 +++++++ .../Resources/en-us/GachaBennerTitle.txt | 55 + .../Resources/ru-ru/GachaBennerTitle.txt | 45 + .../Resources/zh-cn/GachaBannerTitle.txt | 45 + .../Resources/zh-tw/GachaBennerTitle.txt | 45 + 23 files changed, 5680 insertions(+), 62 deletions(-) create mode 100644 Source/GrasscutterTools/Forms/FormGachaBannersEditor3.Designer.cs create mode 100644 Source/GrasscutterTools/Forms/FormGachaBannersEditor3.cs create mode 100644 Source/GrasscutterTools/Forms/FormGachaBannersEditor3.en-us.resx create mode 100644 Source/GrasscutterTools/Forms/FormGachaBannersEditor3.resx create mode 100644 Source/GrasscutterTools/Forms/FormGachaBannersEditor3.ru-ru.resx create mode 100644 Source/GrasscutterTools/Forms/FormGachaBannersEditor3.zh-TW.resx create mode 100644 Source/GrasscutterTools/Game/Gacha/GachaBanner3.cs create mode 100644 Source/GrasscutterTools/Resources/Banners.json create mode 100644 Source/GrasscutterTools/Resources/en-us/GachaBennerTitle.txt create mode 100644 Source/GrasscutterTools/Resources/ru-ru/GachaBennerTitle.txt create mode 100644 Source/GrasscutterTools/Resources/zh-cn/GachaBannerTitle.txt create mode 100644 Source/GrasscutterTools/Resources/zh-tw/GachaBennerTitle.txt diff --git a/Source/GrasscutterTools/App.config b/Source/GrasscutterTools/App.config index 6e22014..33800ae 100644 --- a/Source/GrasscutterTools/App.config +++ b/Source/GrasscutterTools/App.config @@ -58,6 +58,9 @@ 0, 0 + + + \ No newline at end of file diff --git a/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.Designer.cs b/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.Designer.cs new file mode 100644 index 0000000..d55fe4a --- /dev/null +++ b/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.Designer.cs @@ -0,0 +1,771 @@ + +namespace GrasscutterTools.Forms +{ + partial class FormGachaBannersEditor3 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormGachaBannersEditor3)); + System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); + System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend(); + System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series(); + this.GrpBannerValues = new System.Windows.Forms.GroupBox(); + this.CmbTitlePath = new System.Windows.Forms.ComboBox(); + this.LblTitlePath = new System.Windows.Forms.Label(); + this.NUDCostItemAmount10 = new System.Windows.Forms.NumericUpDown(); + this.LblCostItemAmount10 = new System.Windows.Forms.Label(); + this.NUDCostItemAmount1 = new System.Windows.Forms.NumericUpDown(); + this.LblCostItemAmount1 = new System.Windows.Forms.Label(); + this.ChkAutoStripRateUpFromFallback = new System.Windows.Forms.CheckBox(); + this.LblOptions = new System.Windows.Forms.Label(); + this.ChkRemoveC6FormPool = new System.Windows.Forms.CheckBox(); + this.LnkOpenOldEditor = new System.Windows.Forms.LinkLabel(); + this.DTPEndTime = new System.Windows.Forms.DateTimePicker(); + this.DTPBeginTime = new System.Windows.Forms.DateTimePicker(); + this.CmbPrefab = new System.Windows.Forms.ComboBox(); + this.LblEventChance4Tip = new System.Windows.Forms.Label(); + this.LblEventChance5Tip = new System.Windows.Forms.Label(); + this.NUDEventChance4 = new System.Windows.Forms.NumericUpDown(); + this.NUDEventChance5 = new System.Windows.Forms.NumericUpDown(); + this.LblGachaType = new System.Windows.Forms.Label(); + this.LblEventChance4 = new System.Windows.Forms.Label(); + this.LblEventChance5 = new System.Windows.Forms.Label(); + this.LblSortId = new System.Windows.Forms.Label(); + this.NUDGachaType = new System.Windows.Forms.NumericUpDown(); + this.NUDSortId = new System.Windows.Forms.NumericUpDown(); + this.LblGachaTypeTip = new System.Windows.Forms.Label(); + this.LblEndTime = new System.Windows.Forms.Label(); + this.LblScheduleId = new System.Windows.Forms.Label(); + this.LblBeginTime = new System.Windows.Forms.Label(); + this.NUDScheduleId = new System.Windows.Forms.NumericUpDown(); + this.LblScheduleIdTip = new System.Windows.Forms.Label(); + this.CmbBannerType = new System.Windows.Forms.ComboBox(); + this.LblSortIdTip = new System.Windows.Forms.Label(); + this.LblBannerType = new System.Windows.Forms.Label(); + this.RbCostItem224 = new System.Windows.Forms.RadioButton(); + this.LblCostItem = new System.Windows.Forms.Label(); + this.LblPrefabPath = new System.Windows.Forms.Label(); + this.RbCostItem223 = new System.Windows.Forms.RadioButton(); + this.GrpFallbackPool = new System.Windows.Forms.GroupBox(); + this.ListFallbackItems = new System.Windows.Forms.ListView(); + this.ColFallbackId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.ColFallbackName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.GrpUpPool = new System.Windows.Forms.GroupBox(); + this.ListUpItems = new System.Windows.Forms.ListView(); + this.ColUpId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.ColUpName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.GrpWeights = new System.Windows.Forms.GroupBox(); + this.LnkWeightHelp = new System.Windows.Forms.LinkLabel(); + this.TxtWeight4 = new System.Windows.Forms.TextBox(); + this.TxtWeight5 = new System.Windows.Forms.TextBox(); + this.LblWeight4 = new System.Windows.Forms.Label(); + this.LblWeight5 = new System.Windows.Forms.Label(); + this.GrpBalance = new System.Windows.Forms.GroupBox(); + this.TxtPoolWeight4 = new System.Windows.Forms.TextBox(); + this.TxtPoolWeight5 = new System.Windows.Forms.TextBox(); + this.LblPoolWeight4 = new System.Windows.Forms.Label(); + this.LblPoolWeight5 = new System.Windows.Forms.Label(); + this.ChartWeights = new System.Windows.Forms.DataVisualization.Charting.Chart(); + this.GrpBanners = new System.Windows.Forms.GroupBox(); + this.ListBanners = new System.Windows.Forms.ListBox(); + this.FLPBannersControl = new System.Windows.Forms.FlowLayoutPanel(); + this.BtnAddOrUpdate = new System.Windows.Forms.Button(); + this.BtnDelete = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.TxtBannersJsonPath = new System.Windows.Forms.TextBox(); + this.BtnLoad = new System.Windows.Forms.Button(); + this.BtnSave = new System.Windows.Forms.Button(); + this.BtnClear = new System.Windows.Forms.Button(); + this.GrpBannerValues.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NUDCostItemAmount10)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUDCostItemAmount1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUDEventChance4)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUDEventChance5)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUDGachaType)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUDSortId)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUDScheduleId)).BeginInit(); + this.GrpFallbackPool.SuspendLayout(); + this.GrpUpPool.SuspendLayout(); + this.GrpWeights.SuspendLayout(); + this.GrpBalance.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ChartWeights)).BeginInit(); + this.GrpBanners.SuspendLayout(); + this.FLPBannersControl.SuspendLayout(); + this.SuspendLayout(); + // + // GrpBannerValues + // + resources.ApplyResources(this.GrpBannerValues, "GrpBannerValues"); + this.GrpBannerValues.Controls.Add(this.BtnAddOrUpdate); + this.GrpBannerValues.Controls.Add(this.CmbTitlePath); + this.GrpBannerValues.Controls.Add(this.LblTitlePath); + this.GrpBannerValues.Controls.Add(this.NUDCostItemAmount10); + this.GrpBannerValues.Controls.Add(this.LblCostItemAmount10); + this.GrpBannerValues.Controls.Add(this.NUDCostItemAmount1); + this.GrpBannerValues.Controls.Add(this.LblCostItemAmount1); + this.GrpBannerValues.Controls.Add(this.ChkAutoStripRateUpFromFallback); + this.GrpBannerValues.Controls.Add(this.LblOptions); + this.GrpBannerValues.Controls.Add(this.ChkRemoveC6FormPool); + this.GrpBannerValues.Controls.Add(this.LnkOpenOldEditor); + this.GrpBannerValues.Controls.Add(this.DTPEndTime); + this.GrpBannerValues.Controls.Add(this.DTPBeginTime); + this.GrpBannerValues.Controls.Add(this.CmbPrefab); + this.GrpBannerValues.Controls.Add(this.LblEventChance4Tip); + this.GrpBannerValues.Controls.Add(this.LblEventChance5Tip); + this.GrpBannerValues.Controls.Add(this.NUDEventChance4); + this.GrpBannerValues.Controls.Add(this.NUDEventChance5); + this.GrpBannerValues.Controls.Add(this.LblGachaType); + this.GrpBannerValues.Controls.Add(this.LblEventChance4); + this.GrpBannerValues.Controls.Add(this.LblEventChance5); + this.GrpBannerValues.Controls.Add(this.LblSortId); + this.GrpBannerValues.Controls.Add(this.NUDGachaType); + this.GrpBannerValues.Controls.Add(this.NUDSortId); + this.GrpBannerValues.Controls.Add(this.LblGachaTypeTip); + this.GrpBannerValues.Controls.Add(this.LblEndTime); + this.GrpBannerValues.Controls.Add(this.LblScheduleId); + this.GrpBannerValues.Controls.Add(this.LblBeginTime); + this.GrpBannerValues.Controls.Add(this.NUDScheduleId); + this.GrpBannerValues.Controls.Add(this.LblScheduleIdTip); + this.GrpBannerValues.Controls.Add(this.CmbBannerType); + this.GrpBannerValues.Controls.Add(this.LblSortIdTip); + this.GrpBannerValues.Controls.Add(this.LblBannerType); + this.GrpBannerValues.Controls.Add(this.RbCostItem224); + this.GrpBannerValues.Controls.Add(this.LblCostItem); + this.GrpBannerValues.Controls.Add(this.LblPrefabPath); + this.GrpBannerValues.Controls.Add(this.RbCostItem223); + this.GrpBannerValues.Name = "GrpBannerValues"; + this.GrpBannerValues.TabStop = false; + // + // CmbTitlePath + // + this.CmbTitlePath.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CmbTitlePath.FormattingEnabled = true; + resources.ApplyResources(this.CmbTitlePath, "CmbTitlePath"); + this.CmbTitlePath.Name = "CmbTitlePath"; + // + // LblTitlePath + // + resources.ApplyResources(this.LblTitlePath, "LblTitlePath"); + this.LblTitlePath.Name = "LblTitlePath"; + // + // NUDCostItemAmount10 + // + resources.ApplyResources(this.NUDCostItemAmount10, "NUDCostItemAmount10"); + this.NUDCostItemAmount10.Maximum = new decimal(new int[] { + 2147483647, + 0, + 0, + 0}); + this.NUDCostItemAmount10.Name = "NUDCostItemAmount10"; + this.NUDCostItemAmount10.Value = new decimal(new int[] { + 10, + 0, + 0, + 0}); + // + // LblCostItemAmount10 + // + resources.ApplyResources(this.LblCostItemAmount10, "LblCostItemAmount10"); + this.LblCostItemAmount10.Name = "LblCostItemAmount10"; + // + // NUDCostItemAmount1 + // + resources.ApplyResources(this.NUDCostItemAmount1, "NUDCostItemAmount1"); + this.NUDCostItemAmount1.Maximum = new decimal(new int[] { + 2147483647, + 0, + 0, + 0}); + this.NUDCostItemAmount1.Name = "NUDCostItemAmount1"; + this.NUDCostItemAmount1.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // LblCostItemAmount1 + // + resources.ApplyResources(this.LblCostItemAmount1, "LblCostItemAmount1"); + this.LblCostItemAmount1.Name = "LblCostItemAmount1"; + // + // ChkAutoStripRateUpFromFallback + // + resources.ApplyResources(this.ChkAutoStripRateUpFromFallback, "ChkAutoStripRateUpFromFallback"); + this.ChkAutoStripRateUpFromFallback.Name = "ChkAutoStripRateUpFromFallback"; + this.ChkAutoStripRateUpFromFallback.UseVisualStyleBackColor = true; + // + // LblOptions + // + resources.ApplyResources(this.LblOptions, "LblOptions"); + this.LblOptions.Name = "LblOptions"; + // + // ChkRemoveC6FormPool + // + resources.ApplyResources(this.ChkRemoveC6FormPool, "ChkRemoveC6FormPool"); + this.ChkRemoveC6FormPool.Name = "ChkRemoveC6FormPool"; + this.ChkRemoveC6FormPool.UseVisualStyleBackColor = true; + // + // LnkOpenOldEditor + // + resources.ApplyResources(this.LnkOpenOldEditor, "LnkOpenOldEditor"); + this.LnkOpenOldEditor.Name = "LnkOpenOldEditor"; + this.LnkOpenOldEditor.TabStop = true; + this.LnkOpenOldEditor.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkOpenOldEditor_LinkClicked); + // + // DTPEndTime + // + resources.ApplyResources(this.DTPEndTime, "DTPEndTime"); + this.DTPEndTime.MaxDate = new System.DateTime(2038, 1, 19, 0, 0, 0, 0); + this.DTPEndTime.MinDate = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); + this.DTPEndTime.Name = "DTPEndTime"; + // + // DTPBeginTime + // + resources.ApplyResources(this.DTPBeginTime, "DTPBeginTime"); + this.DTPBeginTime.MaxDate = new System.DateTime(2038, 1, 19, 0, 0, 0, 0); + this.DTPBeginTime.MinDate = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); + this.DTPBeginTime.Name = "DTPBeginTime"; + // + // CmbPrefab + // + this.CmbPrefab.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CmbPrefab.FormattingEnabled = true; + resources.ApplyResources(this.CmbPrefab, "CmbPrefab"); + this.CmbPrefab.Name = "CmbPrefab"; + // + // LblEventChance4Tip + // + resources.ApplyResources(this.LblEventChance4Tip, "LblEventChance4Tip"); + this.LblEventChance4Tip.Name = "LblEventChance4Tip"; + // + // LblEventChance5Tip + // + resources.ApplyResources(this.LblEventChance5Tip, "LblEventChance5Tip"); + this.LblEventChance5Tip.Name = "LblEventChance5Tip"; + // + // NUDEventChance4 + // + resources.ApplyResources(this.NUDEventChance4, "NUDEventChance4"); + this.NUDEventChance4.Name = "NUDEventChance4"; + this.NUDEventChance4.Value = new decimal(new int[] { + 50, + 0, + 0, + 0}); + // + // NUDEventChance5 + // + resources.ApplyResources(this.NUDEventChance5, "NUDEventChance5"); + this.NUDEventChance5.Name = "NUDEventChance5"; + this.NUDEventChance5.Value = new decimal(new int[] { + 50, + 0, + 0, + 0}); + // + // LblGachaType + // + resources.ApplyResources(this.LblGachaType, "LblGachaType"); + this.LblGachaType.Name = "LblGachaType"; + // + // LblEventChance4 + // + resources.ApplyResources(this.LblEventChance4, "LblEventChance4"); + this.LblEventChance4.Name = "LblEventChance4"; + // + // LblEventChance5 + // + resources.ApplyResources(this.LblEventChance5, "LblEventChance5"); + this.LblEventChance5.Name = "LblEventChance5"; + // + // LblSortId + // + resources.ApplyResources(this.LblSortId, "LblSortId"); + this.LblSortId.Name = "LblSortId"; + // + // NUDGachaType + // + resources.ApplyResources(this.NUDGachaType, "NUDGachaType"); + this.NUDGachaType.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.NUDGachaType.Name = "NUDGachaType"; + this.NUDGachaType.Value = new decimal(new int[] { + 400, + 0, + 0, + 0}); + // + // NUDSortId + // + resources.ApplyResources(this.NUDSortId, "NUDSortId"); + this.NUDSortId.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.NUDSortId.Name = "NUDSortId"; + this.NUDSortId.Value = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + // + // LblGachaTypeTip + // + resources.ApplyResources(this.LblGachaTypeTip, "LblGachaTypeTip"); + this.LblGachaTypeTip.Name = "LblGachaTypeTip"; + // + // LblEndTime + // + resources.ApplyResources(this.LblEndTime, "LblEndTime"); + this.LblEndTime.Name = "LblEndTime"; + // + // LblScheduleId + // + resources.ApplyResources(this.LblScheduleId, "LblScheduleId"); + this.LblScheduleId.Name = "LblScheduleId"; + // + // LblBeginTime + // + resources.ApplyResources(this.LblBeginTime, "LblBeginTime"); + this.LblBeginTime.Name = "LblBeginTime"; + // + // NUDScheduleId + // + resources.ApplyResources(this.NUDScheduleId, "NUDScheduleId"); + this.NUDScheduleId.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.NUDScheduleId.Name = "NUDScheduleId"; + this.NUDScheduleId.Value = new decimal(new int[] { + 800, + 0, + 0, + 0}); + // + // LblScheduleIdTip + // + resources.ApplyResources(this.LblScheduleIdTip, "LblScheduleIdTip"); + this.LblScheduleIdTip.Name = "LblScheduleIdTip"; + // + // CmbBannerType + // + this.CmbBannerType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CmbBannerType.FormattingEnabled = true; + this.CmbBannerType.Items.AddRange(new object[] { + resources.GetString("CmbBannerType.Items"), + resources.GetString("CmbBannerType.Items1"), + resources.GetString("CmbBannerType.Items2")}); + resources.ApplyResources(this.CmbBannerType, "CmbBannerType"); + this.CmbBannerType.Name = "CmbBannerType"; + // + // LblSortIdTip + // + resources.ApplyResources(this.LblSortIdTip, "LblSortIdTip"); + this.LblSortIdTip.Name = "LblSortIdTip"; + // + // LblBannerType + // + resources.ApplyResources(this.LblBannerType, "LblBannerType"); + this.LblBannerType.Name = "LblBannerType"; + // + // RbCostItem224 + // + resources.ApplyResources(this.RbCostItem224, "RbCostItem224"); + this.RbCostItem224.Checked = true; + this.RbCostItem224.Name = "RbCostItem224"; + this.RbCostItem224.TabStop = true; + this.RbCostItem224.UseVisualStyleBackColor = true; + // + // LblCostItem + // + resources.ApplyResources(this.LblCostItem, "LblCostItem"); + this.LblCostItem.Name = "LblCostItem"; + // + // LblPrefabPath + // + resources.ApplyResources(this.LblPrefabPath, "LblPrefabPath"); + this.LblPrefabPath.Name = "LblPrefabPath"; + // + // RbCostItem223 + // + resources.ApplyResources(this.RbCostItem223, "RbCostItem223"); + this.RbCostItem223.Name = "RbCostItem223"; + this.RbCostItem223.TabStop = true; + this.RbCostItem223.UseVisualStyleBackColor = true; + // + // GrpFallbackPool + // + resources.ApplyResources(this.GrpFallbackPool, "GrpFallbackPool"); + this.GrpFallbackPool.Controls.Add(this.ListFallbackItems); + this.GrpFallbackPool.Name = "GrpFallbackPool"; + this.GrpFallbackPool.TabStop = false; + // + // ListFallbackItems + // + this.ListFallbackItems.CheckBoxes = true; + this.ListFallbackItems.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.ColFallbackId, + this.ColFallbackName}); + resources.ApplyResources(this.ListFallbackItems, "ListFallbackItems"); + this.ListFallbackItems.FullRowSelect = true; + this.ListFallbackItems.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] { + ((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups"))), + ((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups1"))), + ((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups2"))), + ((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups3"))), + ((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListFallbackItems.Groups4")))}); + this.ListFallbackItems.HideSelection = false; + this.ListFallbackItems.Name = "ListFallbackItems"; + this.ListFallbackItems.UseCompatibleStateImageBehavior = false; + this.ListFallbackItems.View = System.Windows.Forms.View.Details; + // + // ColFallbackId + // + resources.ApplyResources(this.ColFallbackId, "ColFallbackId"); + // + // ColFallbackName + // + resources.ApplyResources(this.ColFallbackName, "ColFallbackName"); + // + // GrpUpPool + // + resources.ApplyResources(this.GrpUpPool, "GrpUpPool"); + this.GrpUpPool.Controls.Add(this.ListUpItems); + this.GrpUpPool.Name = "GrpUpPool"; + this.GrpUpPool.TabStop = false; + // + // ListUpItems + // + this.ListUpItems.CheckBoxes = true; + this.ListUpItems.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.ColUpId, + this.ColUpName}); + resources.ApplyResources(this.ListUpItems, "ListUpItems"); + this.ListUpItems.FullRowSelect = true; + this.ListUpItems.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] { + ((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListUpItems.Groups"))), + ((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListUpItems.Groups1"))), + ((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListUpItems.Groups2"))), + ((System.Windows.Forms.ListViewGroup)(resources.GetObject("ListUpItems.Groups3")))}); + this.ListUpItems.HideSelection = false; + this.ListUpItems.Name = "ListUpItems"; + this.ListUpItems.UseCompatibleStateImageBehavior = false; + this.ListUpItems.View = System.Windows.Forms.View.Details; + // + // ColUpId + // + resources.ApplyResources(this.ColUpId, "ColUpId"); + // + // ColUpName + // + resources.ApplyResources(this.ColUpName, "ColUpName"); + // + // GrpWeights + // + resources.ApplyResources(this.GrpWeights, "GrpWeights"); + this.GrpWeights.Controls.Add(this.LnkWeightHelp); + this.GrpWeights.Controls.Add(this.TxtWeight4); + this.GrpWeights.Controls.Add(this.TxtWeight5); + this.GrpWeights.Controls.Add(this.LblWeight4); + this.GrpWeights.Controls.Add(this.LblWeight5); + this.GrpWeights.Name = "GrpWeights"; + this.GrpWeights.TabStop = false; + // + // LnkWeightHelp + // + resources.ApplyResources(this.LnkWeightHelp, "LnkWeightHelp"); + this.LnkWeightHelp.Name = "LnkWeightHelp"; + this.LnkWeightHelp.TabStop = true; + this.LnkWeightHelp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkWeightHelp_LinkClicked); + // + // TxtWeight4 + // + resources.ApplyResources(this.TxtWeight4, "TxtWeight4"); + this.TxtWeight4.Name = "TxtWeight4"; + // + // TxtWeight5 + // + resources.ApplyResources(this.TxtWeight5, "TxtWeight5"); + this.TxtWeight5.Name = "TxtWeight5"; + // + // LblWeight4 + // + resources.ApplyResources(this.LblWeight4, "LblWeight4"); + this.LblWeight4.Name = "LblWeight4"; + // + // LblWeight5 + // + resources.ApplyResources(this.LblWeight5, "LblWeight5"); + this.LblWeight5.Name = "LblWeight5"; + // + // GrpBalance + // + resources.ApplyResources(this.GrpBalance, "GrpBalance"); + this.GrpBalance.Controls.Add(this.TxtPoolWeight4); + this.GrpBalance.Controls.Add(this.TxtPoolWeight5); + this.GrpBalance.Controls.Add(this.LblPoolWeight4); + this.GrpBalance.Controls.Add(this.LblPoolWeight5); + this.GrpBalance.Name = "GrpBalance"; + this.GrpBalance.TabStop = false; + // + // TxtPoolWeight4 + // + resources.ApplyResources(this.TxtPoolWeight4, "TxtPoolWeight4"); + this.TxtPoolWeight4.Name = "TxtPoolWeight4"; + // + // TxtPoolWeight5 + // + resources.ApplyResources(this.TxtPoolWeight5, "TxtPoolWeight5"); + this.TxtPoolWeight5.Name = "TxtPoolWeight5"; + // + // LblPoolWeight4 + // + resources.ApplyResources(this.LblPoolWeight4, "LblPoolWeight4"); + this.LblPoolWeight4.Name = "LblPoolWeight4"; + // + // LblPoolWeight5 + // + resources.ApplyResources(this.LblPoolWeight5, "LblPoolWeight5"); + this.LblPoolWeight5.Name = "LblPoolWeight5"; + // + // ChartWeights + // + chartArea1.AxisX.Minimum = 0D; + chartArea1.AxisY.Maximum = 100D; + chartArea1.AxisY.Minimum = 0D; + chartArea1.AxisY.Title = "%"; + chartArea1.Name = "ChartArea1"; + this.ChartWeights.ChartAreas.Add(chartArea1); + legend1.Name = "Legend1"; + this.ChartWeights.Legends.Add(legend1); + resources.ApplyResources(this.ChartWeights, "ChartWeights"); + this.ChartWeights.Name = "ChartWeights"; + series1.ChartArea = "ChartArea1"; + series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; + series1.Color = System.Drawing.Color.OrangeRed; + series1.Label = "(#VALX, #VAL)"; + series1.Legend = "Legend1"; + series1.LegendText = "5*"; + series1.Name = "SeriesWeight5"; + series1.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32; + series1.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double; + series2.ChartArea = "ChartArea1"; + series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; + series2.Color = System.Drawing.Color.Purple; + series2.Label = "(#VALX, #VAL)"; + series2.Legend = "Legend1"; + series2.LegendText = "4*"; + series2.Name = "SeriesWeight4"; + series2.XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32; + series2.YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double; + this.ChartWeights.Series.Add(series1); + this.ChartWeights.Series.Add(series2); + // + // GrpBanners + // + resources.ApplyResources(this.GrpBanners, "GrpBanners"); + this.GrpBanners.Controls.Add(this.ListBanners); + this.GrpBanners.Controls.Add(this.FLPBannersControl); + this.GrpBanners.Name = "GrpBanners"; + this.GrpBanners.TabStop = false; + // + // ListBanners + // + resources.ApplyResources(this.ListBanners, "ListBanners"); + this.ListBanners.FormattingEnabled = true; + this.ListBanners.Name = "ListBanners"; + this.ListBanners.SelectedIndexChanged += new System.EventHandler(this.ListBanners_SelectedIndexChanged); + // + // FLPBannersControl + // + this.FLPBannersControl.Controls.Add(this.BtnDelete); + this.FLPBannersControl.Controls.Add(this.BtnClear); + resources.ApplyResources(this.FLPBannersControl, "FLPBannersControl"); + this.FLPBannersControl.Name = "FLPBannersControl"; + // + // BtnAddOrUpdate + // + resources.ApplyResources(this.BtnAddOrUpdate, "BtnAddOrUpdate"); + this.BtnAddOrUpdate.Name = "BtnAddOrUpdate"; + this.BtnAddOrUpdate.UseVisualStyleBackColor = true; + this.BtnAddOrUpdate.Click += new System.EventHandler(this.BtnAddOrUpdate_Click); + // + // BtnDelete + // + resources.ApplyResources(this.BtnDelete, "BtnDelete"); + this.BtnDelete.Name = "BtnDelete"; + this.BtnDelete.UseVisualStyleBackColor = true; + this.BtnDelete.Click += new System.EventHandler(this.BtnDelete_Click); + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // TxtBannersJsonPath + // + resources.ApplyResources(this.TxtBannersJsonPath, "TxtBannersJsonPath"); + this.TxtBannersJsonPath.Name = "TxtBannersJsonPath"; + // + // BtnLoad + // + resources.ApplyResources(this.BtnLoad, "BtnLoad"); + this.BtnLoad.Name = "BtnLoad"; + this.BtnLoad.UseVisualStyleBackColor = true; + this.BtnLoad.Click += new System.EventHandler(this.BtnLoad_Click); + // + // BtnSave + // + resources.ApplyResources(this.BtnSave, "BtnSave"); + this.BtnSave.Name = "BtnSave"; + this.BtnSave.UseVisualStyleBackColor = true; + this.BtnSave.Click += new System.EventHandler(this.BtnSave_Click); + // + // BtnClear + // + resources.ApplyResources(this.BtnClear, "BtnClear"); + this.BtnClear.Name = "BtnClear"; + this.BtnClear.UseVisualStyleBackColor = true; + this.BtnClear.Click += new System.EventHandler(this.BtnClear_Click); + // + // FormGachaBannersEditor3 + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.ChartWeights); + this.Controls.Add(this.BtnSave); + this.Controls.Add(this.BtnLoad); + this.Controls.Add(this.TxtBannersJsonPath); + this.Controls.Add(this.label1); + this.Controls.Add(this.GrpBanners); + this.Controls.Add(this.GrpBalance); + this.Controls.Add(this.GrpWeights); + this.Controls.Add(this.GrpFallbackPool); + this.Controls.Add(this.GrpUpPool); + this.Controls.Add(this.GrpBannerValues); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; + this.Name = "FormGachaBannersEditor3"; + this.GrpBannerValues.ResumeLayout(false); + this.GrpBannerValues.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NUDCostItemAmount10)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUDCostItemAmount1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUDEventChance4)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUDEventChance5)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUDGachaType)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUDSortId)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUDScheduleId)).EndInit(); + this.GrpFallbackPool.ResumeLayout(false); + this.GrpUpPool.ResumeLayout(false); + this.GrpWeights.ResumeLayout(false); + this.GrpWeights.PerformLayout(); + this.GrpBalance.ResumeLayout(false); + this.GrpBalance.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ChartWeights)).EndInit(); + this.GrpBanners.ResumeLayout(false); + this.FLPBannersControl.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.GroupBox GrpBannerValues; + private System.Windows.Forms.Label LblEventChance5Tip; + private System.Windows.Forms.NumericUpDown NUDEventChance5; + private System.Windows.Forms.Label LblGachaType; + private System.Windows.Forms.Label LblEventChance5; + private System.Windows.Forms.Label LblSortId; + private System.Windows.Forms.NumericUpDown NUDGachaType; + private System.Windows.Forms.NumericUpDown NUDSortId; + private System.Windows.Forms.Label LblGachaTypeTip; + private System.Windows.Forms.Label LblEndTime; + private System.Windows.Forms.Label LblScheduleId; + private System.Windows.Forms.Label LblBeginTime; + private System.Windows.Forms.NumericUpDown NUDScheduleId; + private System.Windows.Forms.Label LblScheduleIdTip; + private System.Windows.Forms.ComboBox CmbBannerType; + private System.Windows.Forms.Label LblSortIdTip; + private System.Windows.Forms.Label LblBannerType; + private System.Windows.Forms.RadioButton RbCostItem224; + private System.Windows.Forms.Label LblCostItem; + private System.Windows.Forms.Label LblPrefabPath; + private System.Windows.Forms.RadioButton RbCostItem223; + private System.Windows.Forms.GroupBox GrpFallbackPool; + private System.Windows.Forms.GroupBox GrpUpPool; + private System.Windows.Forms.ComboBox CmbPrefab; + private System.Windows.Forms.Label LblEventChance4; + private System.Windows.Forms.Label LblEventChance4Tip; + private System.Windows.Forms.NumericUpDown NUDEventChance4; + private System.Windows.Forms.DateTimePicker DTPEndTime; + private System.Windows.Forms.DateTimePicker DTPBeginTime; + private System.Windows.Forms.ListView ListFallbackItems; + private System.Windows.Forms.ListView ListUpItems; + private System.Windows.Forms.ColumnHeader ColFallbackId; + private System.Windows.Forms.ColumnHeader ColFallbackName; + private System.Windows.Forms.ColumnHeader ColUpId; + private System.Windows.Forms.ColumnHeader ColUpName; + private System.Windows.Forms.GroupBox GrpWeights; + private System.Windows.Forms.GroupBox GrpBalance; + private System.Windows.Forms.TextBox TxtWeight4; + private System.Windows.Forms.TextBox TxtWeight5; + private System.Windows.Forms.Label LblWeight4; + private System.Windows.Forms.Label LblWeight5; + private System.Windows.Forms.LinkLabel LnkWeightHelp; + private System.Windows.Forms.LinkLabel LnkOpenOldEditor; + private System.Windows.Forms.TextBox TxtPoolWeight4; + private System.Windows.Forms.TextBox TxtPoolWeight5; + private System.Windows.Forms.Label LblPoolWeight4; + private System.Windows.Forms.Label LblPoolWeight5; + private System.Windows.Forms.CheckBox ChkRemoveC6FormPool; + private System.Windows.Forms.CheckBox ChkAutoStripRateUpFromFallback; + private System.Windows.Forms.Label LblOptions; + private System.Windows.Forms.DataVisualization.Charting.Chart ChartWeights; + private System.Windows.Forms.GroupBox GrpBanners; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox TxtBannersJsonPath; + private System.Windows.Forms.Button BtnLoad; + private System.Windows.Forms.Button BtnSave; + private System.Windows.Forms.FlowLayoutPanel FLPBannersControl; + private System.Windows.Forms.Button BtnAddOrUpdate; + private System.Windows.Forms.Button BtnDelete; + private System.Windows.Forms.NumericUpDown NUDCostItemAmount10; + private System.Windows.Forms.Label LblCostItemAmount10; + private System.Windows.Forms.NumericUpDown NUDCostItemAmount1; + private System.Windows.Forms.Label LblCostItemAmount1; + private System.Windows.Forms.ListBox ListBanners; + private System.Windows.Forms.ComboBox CmbTitlePath; + private System.Windows.Forms.Label LblTitlePath; + private System.Windows.Forms.Button BtnClear; + } +} \ No newline at end of file diff --git a/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.cs b/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.cs new file mode 100644 index 0000000..25a14ea --- /dev/null +++ b/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.cs @@ -0,0 +1,505 @@ +/** + * Grasscutter Tools + * Copyright (C) 2022 jie65535 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + **/ + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Windows.Forms.DataVisualization.Charting; + +using GrasscutterTools.Game; +using GrasscutterTools.Game.Drop; +using GrasscutterTools.Game.Gacha; +using GrasscutterTools.Properties; + +using Newtonsoft.Json; + +namespace GrasscutterTools.Forms +{ + /// + /// 卡池编辑器 + /// + public partial class FormGachaBannersEditor3 : Form + { + #region - 成员 - + + private List Banners; + + #endregion + + #region - 构造与窗体事件 - + + public FormGachaBannersEditor3() + { + InitializeComponent(); + + Icon = Resources.IconGrasscutter; + CmbBannerType.SelectedIndex = 0; + InitBannerPrefab(); + InitCheckedListBoxs(); + + ShowBanner(new GachaBanner3()); + } + + private void InitBannerPrefab() + { + CmbPrefab.Items.Clear(); + CmbPrefab.Items.AddRange(GameData.GachaBannerPrefabs.Names); + CmbTitlePath.Items.Clear(); + CmbTitlePath.Items.AddRange(GameData.GachaBannerTitles.Names); + } + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + try + { + // 加载文件路径 + var path = Settings.Default.BannersJsonPath; + TxtBannersJsonPath.Text = path; + if (!string.IsNullOrEmpty(path) && File.Exists(path)) + LoadBanners(File.ReadAllText(path)); + else + LoadBanners(Encoding.UTF8.GetString(Resources.Banners)); + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + protected override void OnFormClosed(FormClosedEventArgs e) + { + // 保存文件路径 + Settings.Default.BannersJsonPath = TxtBannersJsonPath.Text; + Settings.Default.Save(); + + base.OnFormClosed(e); + } + + private void LnkWeightHelp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + System.Diagnostics.Process.Start("https://github.com/Grasscutters/Grasscutter/pull/639"); + } + + private void LnkOpenOldEditor_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + new FormGachaBannerEditor().ShowDialog(); + } + + #endregion + + #region - Banners.json 文件相关 - + + + /// + /// 加载按钮点击时触发 + /// + private void BtnLoad_Click(object sender, EventArgs e) + { + try + { + var path = TxtBannersJsonPath.Text.Trim(); + if (path == string.Empty) + { + var dialog = new OpenFileDialog + { + FileName = "Banners.json", + Filter = "Banners.Json (*.json)|*.json|All files (*.*)|*.*", + }; + var result = dialog.ShowDialog(); + if (result == DialogResult.OK) + path = TxtBannersJsonPath.Text = dialog.FileName; + else + return; + } + + LoadBanners(File.ReadAllText(path)); + MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK); + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + /// + /// 保存按钮点击时触发 + /// + private void BtnSave_Click(object sender, EventArgs e) + { + try + { + var path = TxtBannersJsonPath.Text.Trim(); + if (path == string.Empty) + { + var dialog = new SaveFileDialog + { + FileName = "Banners.json", + Filter = "Banners.json (*.json)|*.json|All files (*.*)|*.*", + }; + var result = dialog.ShowDialog(); + if (result == DialogResult.OK) + path = TxtBannersJsonPath.Text = dialog.FileName; + else + return; + } + + var json = JsonConvert.SerializeObject(Banners, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore }) + .Replace(",\"", ",\r\n \"").Replace("{\"", "{\r\n \"").Replace("\"}", "\"\r\n}"); + File.WriteAllText(path, json); + MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK); + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + #endregion + + #region - 卡池列表 - + + /// + /// 从指定Json中加载卡池 + /// + /// Banner.json 内容 + private void LoadBanners(string bannersJson) + { + // 反序列化 + Banners = JsonConvert.DeserializeObject>(bannersJson); + ShowBanners(); + } + + /// + /// 显示当前卡池列表 + /// + private void ShowBanners() + { + ListBanners.BeginUpdate(); + ListBanners.Items.Clear(); + ListBanners.Items.AddRange(Banners.ToArray()); + ListBanners.EndUpdate(); + } + + /// + /// 卡池列表选中项改变时触发 + /// + private void ListBanners_SelectedIndexChanged(object sender, EventArgs e) + { + if (ListBanners.SelectedIndex < 0) return; + ShowBanner(ListBanners.SelectedItem as GachaBanner3); + } + + /// + /// 点击添加或更新卡池按钮时触发 + /// + private void BtnAddOrUpdate_Click(object sender, EventArgs e) + { + var banner = ParseBanner(); + var i = Banners.FindIndex(it => it.GachaType == banner.GachaType && it.ScheduleId == banner.ScheduleId); + if (i >= 0) + { + Banners[i] = banner; + ListBanners.Items[i] = banner; + } + else + { + Banners.Add(banner); + ListBanners.Items.Add(banner); + } + } + + /// + /// 点击删除卡池按钮时触发 + /// + private void BtnDelete_Click(object sender, EventArgs e) + { + if (ListBanners.SelectedIndex < 0) return; + if (MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { + Banners.RemoveAt(ListBanners.SelectedIndex); + ListBanners.Items.RemoveAt(ListBanners.SelectedIndex); + } + } + + /// + /// 点击清空卡池按钮时触发 + /// + private void BtnClear_Click(object sender, EventArgs e) + { + if (ListBanners.Items.Count < 0) return; + if (MessageBox.Show(Resources.AskConfirmDeletion, Resources.Tips, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { + Banners.Clear(); + ListBanners.Items.Clear(); + } + } + + #endregion + + #region - 卡池 - + + private void InitCheckedListBoxs() + { + ListFallbackItems.BeginUpdate(); + var a5 = ListFallbackItems.Groups["GroupA5"]; + var a4 = ListFallbackItems.Groups["GroupA4"]; + var w5 = ListFallbackItems.Groups["GroupW5"]; + var w4 = ListFallbackItems.Groups["GroupW4"]; + var w3 = ListFallbackItems.Groups["GroupW3"]; + var avatars = GetAvatarsByColor("5") + .Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, a5) { ForeColor = Color.OrangeRed }) + .Concat(GetAvatarsByColor("4") + .Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, a4) { ForeColor = Color.Purple })); + var weapons = GetWeaponsByColor("yellow") + .Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, w5) { ForeColor = Color.OrangeRed }) + .Concat(GetWeaponsByColor("purple") + .Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, w4) { ForeColor = Color.Purple })) + .Concat(GetWeaponsByColor("blue") + .Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, w3) { ForeColor = Color.Blue })); + ListFallbackItems.Items.Clear(); + ListFallbackItems.Items.AddRange(avatars.Concat(weapons).ToArray()); + + ListUpItems.BeginUpdate(); + var ua5 = ListUpItems.Groups["GroupUpA5"]; + var ua4 = ListUpItems.Groups["GroupUpA4"]; + var uw5 = ListUpItems.Groups["GroupUpW5"]; + var uw4 = ListUpItems.Groups["GroupUpW4"]; + var upAvatars = GetAvatarsByColor("5") + .Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, ua5) { ForeColor = Color.OrangeRed }) + .Concat(GetAvatarsByColor("4") + .Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, ua4) { ForeColor = Color.Purple })); + var upWeapons = GetWeaponsByColor("yellow") + .Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, uw5) { ForeColor = Color.OrangeRed }) + .Concat(GetWeaponsByColor("purple") + .Select(it => new ListViewItem(new string[] { it.Item1.ToString(), it.Item2 }, uw4) { ForeColor = Color.Purple })); + ListUpItems.Items.Clear(); + ListUpItems.Items.AddRange(upAvatars.Concat(upWeapons).ToArray()); + + ListFallbackItems.EndUpdate(); + ListUpItems.EndUpdate(); + } + + private IEnumerable<(int, string)> GetAvatarsByColor(string color) + { + for (int i = 0; i < GameData.AvatarColors.Count; i++) + { + if (GameData.AvatarColors.Names[i] == color) + { + var id = GameData.AvatarColors.Ids[i]; + var index = Array.IndexOf(GameData.Avatars.Ids, id); + if (index >= 0) + yield return (id, GameData.Avatars.Names[index]); + } + } + } + + private IEnumerable<(int, string)> GetWeaponsByColor(string color) + { + for (int i = 0; i < GameData.WeaponColors.Count; i++) + { + if (GameData.WeaponColors.Names[i] == color) + { + var id = GameData.WeaponColors.Ids[i]; + var index = Array.IndexOf(GameData.Weapons.Ids, id); + if (index >= 0) + yield return (id, GameData.Weapons.Names[index]); + } + } + } + + private void InitItems(GachaBanner3 banner) + { + var f = banner.FallbackItems3 + .Concat(banner.FallbackItems4Pool1) + .Concat(banner.FallbackItems4Pool2) + .Concat(banner.FallbackItems5Pool1) + .Concat(banner.FallbackItems5Pool2) + .ToArray(); + foreach (ListViewItem item in ListFallbackItems.Items) + item.Checked = Array.IndexOf(f, int.Parse(item.Text)) >= 0; + + var u = banner.RateUpItems4.Concat(banner.RateUpItems5).ToArray(); + foreach (ListViewItem item in ListUpItems.Items) + item.Checked = Array.IndexOf(u, int.Parse(item.Text)) >= 0; + } + + private IEnumerable GetCheckedItems(ListView list, ListViewGroup group) + { + foreach (ListViewItem item in list.CheckedItems) + if (item.Group == group) + yield return int.Parse(item.Text); + } + + #endregion - 卡池 - + + #region - 权重 - + + private struct GachaWeight + { + public int Count; + public int Weight; + + public GachaWeight(int count, int weight) + { + Count = count; + Weight = weight; + } + } + + private void InitWeights(GachaBanner3 banner) + { + TxtWeight5.Text = '[' + string.Join(", ", SelectWeights(banner.Weights5).Select(w => $"[{w.Count}, {w.Weight}]")) + ']'; + TxtWeight4.Text = '[' + string.Join(", ", SelectWeights(banner.Weights4).Select(w => $"[{w.Count}, {w.Weight}]")) + ']'; + TxtPoolWeight5.Text = '[' + string.Join(", ", SelectWeights(banner.PoolBalanceWeights5).Select(w => $"[{w.Count}, {w.Weight}]")) + ']'; + TxtPoolWeight4.Text = '[' + string.Join(", ", SelectWeights(banner.PoolBalanceWeights4).Select(w => $"[{w.Count}, {w.Weight}]")) + ']'; + + ChartWeights.SuspendLayout(); + ChartWeights.Series[0].Points.Clear(); + foreach (var w in SelectWeights(banner.Weights5)) + ChartWeights.Series[0].Points.AddXY(w.Count, w.Weight / 100.0); + ChartWeights.Series[1].Points.Clear(); + foreach (var w in SelectWeights(banner.Weights4)) + ChartWeights.Series[1].Points.AddXY(w.Count, w.Weight / 100.0); + ChartWeights.ResumeLayout(); + } + + private IEnumerable SelectWeights(int[,] weights) + { + for (int i = 0; i < weights.GetLength(0); i++) + yield return new GachaWeight(weights[i, 0], weights[i, 1]); + } + + private int[,] GetWeights(string weights) + { + return JsonConvert.DeserializeObject(weights); + } + + #endregion - 权重 - + + #region - 卡池参数 - + + /// + /// 显示指定卡池参数 + /// + /// 卡池对象 + private void ShowBanner(GachaBanner3 banner) + { + try + { + NUDGachaType.Value = banner.GachaType; + NUDScheduleId.Value = banner.ScheduleId; + CmbBannerType.SelectedIndex = (int)banner.BannerType; + if (string.IsNullOrEmpty(banner.PrefabPath) || !int.TryParse(banner.PrefabPath.Substring("GachaShowPanel_A".Length, 3), out int prefabId)) + CmbPrefab.SelectedIndex = -1; + else + CmbPrefab.SelectedIndex = Array.IndexOf(GameData.GachaBannerPrefabs.Ids, prefabId); + if (string.IsNullOrEmpty(banner.TitlePath) || !int.TryParse(banner.TitlePath.Substring("UI_GACHA_SHOW_PANEL_A".Length, 3), out int titleId)) + CmbTitlePath.SelectedIndex = -1; + else + CmbTitlePath.SelectedIndex = Array.IndexOf(GameData.GachaBannerTitles.Ids, titleId); + RbCostItem224.Checked = banner.CostItemId == 224; + RbCostItem223.Checked = banner.CostItemId == 223; + NUDCostItemAmount1.Value = banner.CoseItemAmount; + NUDCostItemAmount10.Value = banner.CoseItemAmount10; + DTPBeginTime.Value = DateTimeOffset.FromUnixTimeSeconds(banner.BeginTime).DateTime; + DTPEndTime.Value = DateTimeOffset.FromUnixTimeSeconds(banner.EndTime).DateTime; + NUDSortId.Value = banner.SortId; + NUDEventChance5.Value = banner.EventChance5; + NUDEventChance4.Value = banner.EventChance4; + ChkRemoveC6FormPool.Checked = banner.RemoveC6FromPool; + ChkAutoStripRateUpFromFallback.Checked = banner.AutoStripRateUpFromFallback; + InitItems(banner); + InitWeights(banner); + } + catch (Exception ex) + { + MessageBox.Show("UI更新失败:" + ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private GachaBanner3 ParseBanner() + { + if (CmbBannerType.SelectedIndex < 0) + { + MessageBox.Show("请选择奖池类型", Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); + return null; + } + + if (CmbPrefab.SelectedIndex < 0 || CmbTitlePath.SelectedIndex < 0) + { + MessageBox.Show("请选择奖池预制", Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); + return null; + } + + var prefabId = GameData.GachaBannerPrefabs.Ids[CmbPrefab.SelectedIndex]; + var titleId = GameData.GachaBannerTitles.Ids[CmbTitlePath.SelectedIndex]; + var banner = new GachaBanner3 + { + GachaType = (int)NUDGachaType.Value, + ScheduleId = (int)NUDScheduleId.Value, + BannerType = (BannerType)CmbBannerType.SelectedIndex, + PrefabPath = $"GachaShowPanel_A{prefabId:000}", + PreviewPrefabPath = $"UI_Tab_GachaShowPanel_A{prefabId:000}", + TitlePath = $"UI_GACHA_SHOW_PANEL_A{titleId:000}_TITLE", + CostItemId = RbCostItem224.Checked ? 224 : 223, + CoseItemAmount = (int)NUDCostItemAmount1.Value, + CostItemId10 = RbCostItem224.Checked ? 224 : 223, + CoseItemAmount10 = (int)NUDCostItemAmount10.Value, + BeginTime = (int)new DateTimeOffset(DTPBeginTime.Value, TimeSpan.Zero).ToUnixTimeSeconds(), + EndTime = (int)new DateTimeOffset(DTPEndTime.Value, TimeSpan.Zero).ToUnixTimeSeconds(), + SortId = (int)NUDSortId.Value, + EventChance5 = (int)NUDEventChance5.Value, + EventChance4 = (int)NUDEventChance4.Value, + + RateUpItems4 = GetCheckedItems(ListUpItems, ListUpItems.Groups["GroupUpA4"]) + .Concat(GetCheckedItems(ListUpItems, ListUpItems.Groups["GroupUpW4"])) + .ToArray(), + RateUpItems5 = GetCheckedItems(ListUpItems, ListUpItems.Groups["GroupUpA5"]) + .Concat(GetCheckedItems(ListUpItems, ListUpItems.Groups["GroupUpW5"])) + .ToArray(), + + FallbackItems3 = GetCheckedItems(ListFallbackItems, ListFallbackItems.Groups["GroupA3"]) + .Concat(GetCheckedItems(ListFallbackItems, ListFallbackItems.Groups["GroupW3"])) + .ToArray(), + FallbackItems4Pool1 = GetCheckedItems(ListFallbackItems, ListFallbackItems.Groups["GroupA4"]).ToArray(), + FallbackItems4Pool2 = GetCheckedItems(ListFallbackItems, ListFallbackItems.Groups["GroupW4"]).ToArray(), + FallbackItems5Pool1 = GetCheckedItems(ListFallbackItems, ListFallbackItems.Groups["GroupA5"]).ToArray(), + FallbackItems5Pool2 = GetCheckedItems(ListFallbackItems, ListFallbackItems.Groups["GroupW5"]).ToArray(), + + RemoveC6FromPool = ChkRemoveC6FormPool.Checked, + AutoStripRateUpFromFallback = ChkAutoStripRateUpFromFallback.Checked, + + Weights4 = GetWeights(TxtWeight4.Text), + Weights5 = GetWeights(TxtWeight5.Text), + PoolBalanceWeights4 = GetWeights(TxtPoolWeight4.Text), + PoolBalanceWeights5 = GetWeights(TxtPoolWeight5.Text), + }; + return banner; + } + + + #endregion - 卡池参数 - + + } +} \ No newline at end of file diff --git a/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.en-us.resx b/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.en-us.resx new file mode 100644 index 0000000..3bfa4d2 --- /dev/null +++ b/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.en-us.resx @@ -0,0 +1,430 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 112, 287 + + + 225, 21 + + + Auto Strip Rate Up From Fall back + + + 60, 260 + + + 46, 17 + + + Optins + + + 157, 21 + + + Remove C6 Form Pool + + + 102, 17 + + + Open old editor + + + 200, 233 + + + 96, 17 + + + Event Chance 4 + + + 10, 233 + + + 96, 17 + + + Event Chance 5 + + + 72, 204 + + + Sort + + + 123, 17 + + + Increment from 400 + + + 62, 17 + + + End Time + + + 32, 175 + + + 73, 17 + + + Begin Time + + + 49, 17 + + + Unique + + + Standard Wish + + + Character Event Wish + + + Weapon Event Wish + + + 76, 17 + + + Show order + + + 25, 87 + + + 81, 17 + + + Banner Type + + + 104, 21 + + + Acquaint Fate + + + 41, 148 + + + 64, 17 + + + Cost Item + + + 59, 118 + + + 46, 17 + + + Prefab + + + 222, 146 + + + 119, 21 + + + Intertwined Fate + + + Banner + + + Fallback Pool + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA01LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA01LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA00LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA00LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA0zLXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws= + + + + Up Pool + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA01LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE1Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA01LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc1Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA00LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE0Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA00LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc0Cw== + + + + 85, 23 + + + Gen Json + + + 409, 201 + + + 85, 23 + + + Parse Json + + + Gacha weights + + + 399, 0 + + + 35, 17 + + + Help + + + 40, 61 + + + 66, 17 + + + Weights 4 + + + 40, 32 + + + 66, 17 + + + Weights 5 + + + Character and weapon balance (only mixed pools work) + + + 16, 61 + + + 90, 17 + + + Pool Weight 4 + + + 16, 32 + + + 90, 17 + + + Pool Weight 5 + + + Weight Chart + + + Gacha Banner Editor + + \ No newline at end of file diff --git a/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.resx b/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.resx new file mode 100644 index 0000000..2661897 --- /dev/null +++ b/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.resx @@ -0,0 +1,1896 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + Top, Bottom, Right + + + + 170, 328 + + + 100, 23 + + + + 35 + + + √ 添加或更新 + + + BtnAddOrUpdate + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 0 + + + 302, 115 + + + 110, 25 + + + 11 + + + CmbTitlePath + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 1 + + + True + + + 240, 118 + + + 56, 17 + + + 10 + + + 封面标题 + + + LblTitlePath + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 2 + + + 302, 173 + + + 110, 23 + + + 18 + + + NUDCostItemAmount10 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 3 + + + True + + + 240, 175 + + + 56, 17 + + + 17 + + + 十连消耗 + + + LblCostItemAmount10 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 4 + + + 112, 173 + + + 110, 23 + + + 16 + + + NUDCostItemAmount1 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 5 + + + True + + + 50, 175 + + + 56, 17 + + + 15 + + + 单抽消耗 + + + LblCostItemAmount1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 6 + + + True + + + 217, 289 + + + 151, 21 + + + 34 + + + 自动避免UP被基础抽中 + + + ChkAutoStripRateUpFromFallback + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 7 + + + True + + + 74, 290 + + + 32, 17 + + + 32 + + + 选项 + + + LblOptions + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 8 + + + True + + + 112, 289 + + + 99, 21 + + + 33 + + + 避免命座溢出 + + + ChkRemoveC6FormPool + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 9 + + + True + + + 6, 331 + + + 104, 17 + + + 36 + + + 打开旧版本编辑器 + + + LnkOpenOldEditor + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 10 + + + 302, 202 + + + 110, 23 + + + 22 + + + DTPEndTime + + + System.Windows.Forms.DateTimePicker, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 11 + + + 112, 202 + + + 110, 23 + + + 20 + + + DTPBeginTime + + + System.Windows.Forms.DateTimePicker, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 12 + + + 112, 115 + + + 110, 25 + + + 9 + + + CmbPrefab + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 13 + + + True + + + NoControl + + + 371, 262 + + + 19, 17 + + + 31 + + + % + + + LblEventChance4Tip + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 14 + + + True + + + 181, 262 + + + 19, 17 + + + 28 + + + % + + + LblEventChance5Tip + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 15 + + + 302, 260 + + + 63, 23 + + + 30 + + + NUDEventChance4 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 16 + + + 112, 260 + + + 63, 23 + + + 27 + + + NUDEventChance5 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 17 + + + True + + + 34, 28 + + + 72, 17 + + + 0 + + + GachaType + + + LblGachaType + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 18 + + + True + + + NoControl + + + 221, 262 + + + 75, 17 + + + 29 + + + 4星活动爆率 + + + LblEventChance4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 19 + + + True + + + 31, 262 + + + 75, 17 + + + 26 + + + 5星活动爆率 + + + LblEventChance5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 20 + + + True + + + 74, 233 + + + 32, 17 + + + 23 + + + 顺序 + + + LblSortId + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 21 + + + 112, 26 + + + 100, 23 + + + 1 + + + NUDGachaType + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 22 + + + 112, 231 + + + 100, 23 + + + 24 + + + NUDSortId + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 23 + + + True + + + 218, 28 + + + 125, 17 + + + 2 + + + 从400开始,顺序递增 + + + LblGachaTypeTip + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 24 + + + True + + + 240, 205 + + + 56, 17 + + + 21 + + + 结束时间 + + + LblEndTime + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 25 + + + True + + + 34, 57 + + + 72, 17 + + + 3 + + + ScheduleId + + + LblScheduleId + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 26 + + + True + + + 50, 205 + + + 56, 17 + + + 19 + + + 开始时间 + + + LblBeginTime + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 27 + + + 112, 55 + + + 100, 23 + + + 4 + + + NUDScheduleId + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 28 + + + True + + + 218, 57 + + + 69, 17 + + + 5 + + + ID要求唯一 + + + LblScheduleIdTip + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 29 + + + 常驻池 + + + 限时角色祈愿池 + + + 限时武器祈愿池 + + + 112, 84 + + + 300, 25 + + + 7 + + + CmbBannerType + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 30 + + + True + + + 218, 233 + + + 116, 17 + + + 25 + + + 客户端中显示的顺序 + + + LblSortIdTip + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 31 + + + True + + + 50, 87 + + + 56, 17 + + + 6 + + + 奖池类型 + + + LblBannerType + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 32 + + + True + + + 112, 146 + + + 74, 21 + + + 13 + + + 相遇之缘 + + + RbCostItem224 + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 33 + + + True + + + 50, 148 + + + 56, 17 + + + 12 + + + 祈愿道具 + + + LblCostItem + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 34 + + + True + + + 50, 118 + + + 56, 17 + + + 8 + + + 封面预制 + + + LblPrefabPath + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 35 + + + True + + + 192, 146 + + + 74, 21 + + + 14 + + + 纠缠之缘 + + + RbCostItem223 + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBannerValues + + + 36 + + + 294, 41 + + + 440, 351 + + + 5 + + + 卡池参数 + + + GrpBannerValues + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 10 + + + Top, Bottom, Right + + + ID + + + 65 + + + Name + + + 110 + + + Fill + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo15pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo15pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo05pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo05pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAoz5pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws= + + + + 3, 19 + + + 204, 329 + + + 0 + + + ListFallbackItems + + + System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpFallbackPool + + + 0 + + + 962, 41 + + + 210, 351 + + + 7 + + + 基础池 + + + GrpFallbackPool + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 8 + + + Top, Bottom, Right + + + ID + + + 65 + + + Name + + + 110 + + + Fill + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo15pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE1Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo15pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc1Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo05pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE0Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo05pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc0Cw== + + + + 3, 19 + + + 204, 329 + + + 0 + + + ListUpItems + + + System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpUpPool + + + 0 + + + 740, 41 + + + 210, 351 + + + 6 + + + UP池 + + + GrpUpPool + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 9 + + + Bottom, Right + + + True + + + 402, 0 + + + 32, 17 + + + 2 + + + 帮助 + + + LnkWeightHelp + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpWeights + + + 0 + + + 112, 58 + + + 300, 23 + + + 3 + + + TxtWeight4 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpWeights + + + 1 + + + 112, 29 + + + 300, 23 + + + 1 + + + TxtWeight5 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpWeights + + + 2 + + + True + + + 55, 61 + + + 51, 17 + + + 2 + + + 4星权重 + + + LblWeight4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpWeights + + + 3 + + + True + + + 55, 32 + + + 51, 17 + + + 0 + + + 5星权重 + + + LblWeight5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpWeights + + + 4 + + + 294, 398 + + + 440, 100 + + + 8 + + + 卡池权重与保底机制 + + + GrpWeights + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 7 + + + Bottom, Right + + + 112, 58 + + + 300, 23 + + + 3 + + + TxtPoolWeight4 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBalance + + + 0 + + + 112, 29 + + + 300, 23 + + + 1 + + + TxtPoolWeight5 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBalance + + + 1 + + + True + + + NoControl + + + 43, 61 + + + 63, 17 + + + 2 + + + 4星池权重 + + + LblPoolWeight4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBalance + + + 2 + + + True + + + NoControl + + + 43, 32 + + + 63, 17 + + + 0 + + + 5星池权重 + + + LblPoolWeight5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBalance + + + 3 + + + 294, 504 + + + 440, 100 + + + 9 + + + 角色和武器平衡机制(仅混合池有效) + + + GrpBalance + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 6 + + + 740, 401 + + + 432, 203 + + + 0 + + + chart1 + + + ChartWeights + + + System.Windows.Forms.DataVisualization.Charting.Chart, System.Windows.Forms.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 + + + $this + + + 0 + + + Top, Bottom, Left, Right + + + Fill + + + 17 + + + 3, 19 + + + 270, 512 + + + 2 + + + ListBanners + + + System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBanners + + + 0 + + + 3, 3 + + + 100, 23 + + + 1 + + + 删除 + + + BtnDelete + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + FLPBannersControl + + + 0 + + + 109, 3 + + + 100, 23 + + + 2 + + + 清空 + + + BtnClear + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + FLPBannersControl + + + 1 + + + Bottom + + + 3, 531 + + + 270, 29 + + + 1 + + + FLPBannersControl + + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpBanners + + + 1 + + + 12, 41 + + + 276, 563 + + + 4 + + + 卡池列表 + + + GrpBanners + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 5 + + + True + + + 12, 15 + + + 122, 17 + + + 0 + + + Banners.json 路径: + + + label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 4 + + + Top, Left, Right + + + 140, 12 + + + 820, 23 + + + 1 + + + TxtBannersJsonPath + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + Top, Right + + + 966, 12 + + + 100, 23 + + + 2 + + + 加载 + + + BtnLoad + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + Top, Right + + + 1072, 12 + + + 100, 23 + + + 3 + + + 保存 + + + BtnSave + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + True + + + 7, 17 + + + 1184, 616 + + + 微软雅黑, 9pt + + + NoControl + + + 3, 4, 3, 4 + + + 1200, 655 + + + CenterScreen + + + 卡池编辑器 + + + ColFallbackId + + + System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ColFallbackName + + + System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ColUpId + + + System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ColUpName + + + System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + FormGachaBannersEditor3 + + + System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.ru-ru.resx b/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.ru-ru.resx new file mode 100644 index 0000000..94b2599 --- /dev/null +++ b/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.ru-ru.resx @@ -0,0 +1,454 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 112, 287 + + + 288, 21 + + + Авто возврат шанса выпадения с баннера + + + 56, 261 + + + 50, 17 + + + Опции + + + 157, 21 + + + Удалить пул форм C6 + + + 167, 17 + + + Открыть старый редактор + + + 43, 28 + + + 63, 17 + + + Тип Гачи + + + 210, 233 + + + 86, 17 + + + Шанс соб. 4* + + + 20, 233 + + + 86, 17 + + + Шанс соб. 5* + + + 66, 204 + + + 40, 17 + + + Сорт. + + + 116, 17 + + + Увеличение с 400 + + + 234, 176 + + + 47, 17 + + + Конец + + + 8, 57 + + + 98, 17 + + + ID расписания + + + 53, 176 + + + 53, 17 + + + Начало + + + 84, 17 + + + Уникальный + + + Стандартная Молитва + + + Молитва события персонажа + + + Молитва события с оружием + + + 121, 17 + + + Показать порядок + + + 18, 87 + + + 88, 17 + + + Тип баннера + + + 116, 21 + + + Судьбоносные + + + 34, 148 + + + 72, 17 + + + Стоимость + + + 47, 118 + + + 59, 17 + + + Готовый + + + 234, 146 + + + 141, 21 + + + Переплетающиеся + + + Баннер + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA01LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA01LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA00LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA00LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA0zLXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws= + + + + Запасной Пул + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA01LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE1Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA01LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc1Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA00LXN0YXIgYXZhdGFyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE0Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAA00LXN0YXIgd2VhcG9uBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdu + bWVudAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc0Cw== + + + + Верхний Пул + + + 85, 23 + + + Сген. Json + + + 409, 201 + + + 85, 23 + + + Загр. Json + + + 375, 0 + + + 60, 17 + + + Помощь + + + 54, 61 + + + 52, 17 + + + Веса 5* + + + 54, 32 + + + 52, 17 + + + Веса 5* + + + Gacha Веса + + + 28, 61 + + + 78, 17 + + + Пул Веса 4* + + + 28, 29 + + + 78, 17 + + + Пул Веса 5* + + + Баланс персонажа и оружия (работают только смешанные пулы) + + + Таблица веса + + + Редактор баннеров Gacha + + \ No newline at end of file diff --git a/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.zh-TW.resx b/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.zh-TW.resx new file mode 100644 index 0000000..8fe4a48 --- /dev/null +++ b/Source/GrasscutterTools/Forms/FormGachaBannersEditor3.zh-TW.resx @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 自動避免UP被基礎抽中 + + + 選項 + + + 打開舊版本編輯器 + + + 4星活動爆率 + + + 5星活動爆率 + + + 順序 + + + 從400開始,順序遞增 + + + 結束時間 + + + 開始時間 + + + 客戶端中顯示的順序 + + + 獎池類型 + + + 相遇之緣 + + + 祈願道具 + + + 預製 + + + 糾纏之緣 + + + 卡池參數 + + + 基礎池 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo15pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo15pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo05pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBBNAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo05pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXNAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAoz5pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAHR3JvdXBXMws= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo15pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE1Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo15pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc1Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo05pif6KeS6ImyBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcEE0Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACJTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0dyb3VwBAAAAAZIZWFkZXIPSGVhZGVyQWxpZ25tZW50A1Rh + ZwROYW1lAQQCAShTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Ib3Jpem9udGFsQWxpZ25tZW50AgAAAAIAAAAG + AwAAAAo05pif5q2m5ZmoBfz///8oU3lzdGVtLldpbmRvd3MuRm9ybXMuSG9yaXpvbnRhbEFsaWdubWVu + dAEAAAAHdmFsdWVfXwAIAgAAAAAAAAAKBgUAAAAJR3JvdXBVcFc0Cw== + + + + 卡池權重與保底機制 + + + 幫助 + + + 4星權重 + + + 5星權重 + + + 角色和武器平衡機制(僅混合池有效) + + + 4星池權重 + + + 5星池權重 + + + 權重圖表 + + + 卡池編輯器 + + \ No newline at end of file diff --git a/Source/GrasscutterTools/Forms/FormMain.cs b/Source/GrasscutterTools/Forms/FormMain.cs index d363709..3a1a6df 100644 --- a/Source/GrasscutterTools/Forms/FormMain.cs +++ b/Source/GrasscutterTools/Forms/FormMain.cs @@ -264,86 +264,43 @@ namespace GrasscutterTools.Forms form.TopMost = false; } - /// - /// 卡池编辑器窗口实例 - /// - private Form GachaBannerEditor; + private readonly Dictionary MyForms = new Dictionary(); + + private void ShowForm(string tag) where T : Form, new() + { + if (!MyForms.TryGetValue(tag, out var form) || form.IsDisposed) + form = new T(); + MyForms[tag] = form; + if (form.IsHandleCreated) + ToTop(form); + else + form.Show(); + } + /// /// 点击打开卡池编辑器时触发 /// private void BtnOpenGachaBannerEditor_Click(object sender, EventArgs e) - { - if (GachaBannerEditor == null || GachaBannerEditor.IsDisposed) - { - GachaBannerEditor = new FormGachaBannerEditor2(); - GachaBannerEditor.Show(); - } - else - { - ToTop(GachaBannerEditor); - } - } + => ShowForm("BannersEditor"); /// - /// 文本浏览器窗口实例 + /// 点击打开文本浏览器时触发 /// - private FormTextMapBrowser TextMapBrowser; - private void BtnOpenTextMap_Click(object sender, EventArgs e) - { - if (TextMapBrowser == null || TextMapBrowser.IsDisposed) - { - TextMapBrowser = new FormTextMapBrowser(); - TextMapBrowser.Show(); - } - else - { - ToTop(TextMapBrowser); - } - } - - /// - /// 掉落物编辑器窗口实例 - /// - private FormDropEditor DropEditor; + => ShowForm("TextMapBrowser"); /// /// 点击打开掉落物编辑器时触发 /// private void BtnOpenDropEditor_Click(object sender, EventArgs e) - { - if (DropEditor == null || DropEditor.IsDisposed) - { - DropEditor = new FormDropEditor(); - DropEditor.Show(); - } - else - { - ToTop(DropEditor); - } - } - - /// - /// 商店编辑器窗口实例 - /// - private FormShopEditor ShopEditor; + => ShowForm("DropEditor"); /// /// 点击打开商店编辑器时触发 /// private void BtnOpenShopEditor_Click(object sender, EventArgs e) - { - if (ShopEditor == null || ShopEditor.IsDisposed) - { - ShopEditor = new FormShopEditor(); - ShopEditor.Show(); - } - else - { - ToTop(ShopEditor); - } - } + => ShowForm("ShopEditor"); /// /// 语言选中项改变时触发 diff --git a/Source/GrasscutterTools/Game/Gacha/GachaBanner3.cs b/Source/GrasscutterTools/Game/Gacha/GachaBanner3.cs new file mode 100644 index 0000000..f0265bb --- /dev/null +++ b/Source/GrasscutterTools/Game/Gacha/GachaBanner3.cs @@ -0,0 +1,230 @@ +/** + * Grasscutter Tools + * Copyright (C) 2022 jie65535 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + **/ +using System.ComponentModel; +using System.Linq; + +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace GrasscutterTools.Game.Gacha +{ + /// + /// https://github.com/Grasscutters/Grasscutter/pull/639 + /// + public class GachaBanner3 + { + /// + /// 备注 + /// + [JsonProperty("comment")] + public string Comment { get; set; } + + /// + /// 添加卡池请从400开始增加id数值进行添加,这个id需要每个池子不一样, + /// 如果你想添加大量卡池,请按照每次增加固定数值的id进行添加,比如:411,412,413.... + /// + [JsonProperty("gachaType")] + public int GachaType { get; set; } = 400; + + /// + /// 这个id需要每个池子不一样,如果你想添加大量卡池, + /// 请按照每次增加固定数值的id进行添加,比如:2100,2200,2300.... + /// + [JsonProperty("scheduleId")] + public int ScheduleId { get; set; } = 800; + + /// + /// 这个是卡池的预制路径id + /// + [JsonProperty("prefabPath")] + public string PrefabPath { get; set; } = "GachaShowPanel_A007"; + + /// + /// 这个是抽卡的预览背景路径id + /// + [JsonProperty("previewPrefabPath")] + public string PreviewPrefabPath { get; set; } = "UI_Tab_GachaShowPanel_A007"; + + /// + /// 这个是抽卡的标题路径id,有可能与之前两项的id不同 + /// (一般这3项的id只需保持一致即可,就是A0xx,xx为同一id) + /// + [JsonProperty("titlePath")] + public string TitlePath { get; set; } = "UI_GACHA_SHOW_PANEL_A007_TITLE"; + + /// + /// 这个表示祈愿用的道具,224是相遇之缘,223是纠缠之缘 - 选择一个作为该卡池的抽卡道具 + /// (提示:请不要随便修改祈愿道具除了蓝球和粉球,有可能会引发bug,比如修改成摩拉抽卡可能导致卡住) + /// + [JsonProperty("costItemId")] + public int CostItemId { get; set; } = 224; + + /// + /// 抽卡消耗 + /// + [JsonProperty("coseItemAmount"), DefaultValue(1)] + public int CoseItemAmount { get; set; } = 1; + + /// + /// 这个表示十连祈愿用的道具,224是相遇之缘,223是纠缠之缘 - 选择一个作为该卡池的抽卡道具 + /// (提示:请不要随便修改祈愿道具除了蓝球和粉球,有可能会引发bug,比如修改成摩拉抽卡可能导致卡住) + /// + [JsonProperty("costItemId10")] + public int CostItemId10 { get; set; } + + /// + /// 十连抽卡消耗 + /// + [JsonProperty("coseItemAmount10"), DefaultValue(10)] + public int CoseItemAmount10 { get; set; } = 10; + + /// + /// 开始时间(Unix时间戳) + /// + [JsonProperty("beginTime")] + public int BeginTime { get; set; } = 0; + + /// + /// 结束时间(Unix时间戳) + /// + [JsonProperty("endTime")] + public int EndTime { get; set; } = 1924992000; + + /// + /// 卡池顺序 + /// + [JsonProperty("sortId")] + public int SortId { get; set; } = 1000; + + /// + /// 抽卡次数限制 + /// + [JsonProperty("gachaTimesLimit"), DefaultValue(int.MaxValue)] + public int GachaTimesLimit { get; set; } = int.MaxValue; + + /// + /// 4星的up角色或物品 + /// + [JsonProperty("rateUpItems4")] + public int[] RateUpItems4 { get; set; } = { }; + + /// + /// 5星的up物品或者角色 + /// + [JsonProperty("rateUpItems5")] + public int[] RateUpItems5 { get; set; } = { }; + + /// + /// 3星普通池 + /// + [JsonProperty("fallbackItems3")] + public int[] FallbackItems3 { get; set; } = { 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 }; + + /// + /// 4星普通角色池 + /// + [JsonProperty("fallbackItems4Pool1")] + public int[] FallbackItems4Pool1 { get; set; } = { 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 }; + + /// + /// 4星普通武器池 + /// + [JsonProperty("fallbackItems4Pool2")] + public int[] FallbackItems4Pool2 { get; set; } = { 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 }; + + /// + /// 5星普通角色池 + /// + [JsonProperty("fallbackItems5Pool1")] + public int[] FallbackItems5Pool1 { get; set; } = { 1003, 1016, 1042, 1035, 1041 }; + + /// + /// 5星普通角色池 + /// + [JsonProperty("fallbackItems5Pool2")] + public int[] FallbackItems5Pool2 { get; set; } = { 11501, 11502, 12501, 12502, 13502, 13505, 14501, 14502, 15501, 15502 }; + + /// + /// 是否从奖池中移除玩家星座等级6级以上的角色 + /// + [JsonProperty("removeC6FromPool"), DefaultValue(false)] + public bool RemoveC6FromPool { get; set; } = false; + + /// + /// 自动从普通池中移除UP池物品或角色 + /// + [JsonProperty("autoStripRateUpFromFallback"), DefaultValue(true)] + public bool AutoStripRateUpFromFallback { get; set; } = true; + + /// + /// 4星权重 + /// + [JsonProperty("weights4")] + public int[,] Weights4 { get; set; } = { { 1, 510 }, { 8, 510 }, { 10, 10000 } }; + + /// + /// 5星权重 + /// + [JsonProperty("weights5")] + public int[,] Weights5 { get; set; } = { { 1, 75 }, { 73, 150 }, { 90, 10000 } }; + + /// + /// 4星平衡奖池权重(即中的是武器还是角色) + /// + [JsonProperty("poolBalanceWeights4")] + public int[,] PoolBalanceWeights4 { get; set; } = { { 1, 255 }, { 17, 255 }, { 21, 10455 } }; + + /// + /// 5星平衡奖池权重(即中的是武器还是角色) + /// + [JsonProperty("poolBalanceWeights5")] + public int[,] PoolBalanceWeights5 { get; set; } = { { 1, 30 }, { 147, 150 }, { 181, 10230 } }; + + /// + /// 4星事件概率(抽中后,摇1~100随机数,如果大于该值则抽中up池) + /// + [JsonProperty("eventChance4"), DefaultValue(50)] + public int EventChance4 { get; set; } = 50; + + /// + /// 5星事件概率(抽中后,摇1~100随机数,如果大于该值则抽中up池) + /// + [JsonProperty("eventChance5"), DefaultValue(50)] + public int EventChance5 { get; set; } = 50; + + /// + /// 这个有3种类型,standard表示常驻池,event表示限时角色祈愿池, + /// weapon表示限时武器祈愿池,选择一种类型的卡池 + /// + [JsonProperty("bannerType"), JsonConverter(typeof(StringEnumConverter)), DefaultValue(BannerType.STANDARD)] + public BannerType BannerType { get; set; } = BannerType.STANDARD; + + + public override string ToString() + { + return $"[{GachaType}|{ScheduleId}] 5*:[{string.Join(",", RateUpItems5.Select(GetName))}] 4*:[{string.Join(",", RateUpItems4.Select(GetName))}]"; + } + + private static string GetName(int id) + { + var a = GameData.Avatars[id]; + return a == ItemMap.EmptyName ? GameData.Weapons[id] : a; + } + } +} \ No newline at end of file diff --git a/Source/GrasscutterTools/Game/GameData.cs b/Source/GrasscutterTools/Game/GameData.cs index b115442..8a0b253 100644 --- a/Source/GrasscutterTools/Game/GameData.cs +++ b/Source/GrasscutterTools/Game/GameData.cs @@ -37,6 +37,7 @@ namespace GrasscutterTools.Game Weapons = new ItemMap(Resources.Weapon); WeaponColors = new ItemMap(Resources.WeaponColor); GachaBannerPrefabs = new ItemMap(Resources.GachaBennerPrefab); + GachaBannerTitles = new ItemMap(Resources.GachaBannerTitle); Quests = new ItemMap(Resources.Quest); ShopType = new ItemMap(Resources.ShopType); } @@ -67,6 +68,7 @@ namespace GrasscutterTools.Game public static ItemMap WeaponColors { get; private set; } public static ItemMap GachaBannerPrefabs { get; private set; } + public static ItemMap GachaBannerTitles { get; private set; } public static ItemMap Quests { get; private set; } diff --git a/Source/GrasscutterTools/GrasscutterTools.csproj b/Source/GrasscutterTools/GrasscutterTools.csproj index a8c0f88..3880ab2 100644 --- a/Source/GrasscutterTools/GrasscutterTools.csproj +++ b/Source/GrasscutterTools/GrasscutterTools.csproj @@ -96,6 +96,12 @@ FormDropEditor.cs + + Form + + + FormGachaBannersEditor3.cs + Form @@ -129,6 +135,7 @@ + @@ -176,6 +183,20 @@ FormDropEditor.cs + + FormGachaBannersEditor3.cs + + + FormGachaBannersEditor3.cs + Designer + + + FormGachaBannersEditor3.cs + Designer + + + FormGachaBannersEditor3.cs + FormGachaBannerEditor2.cs @@ -284,6 +305,7 @@ Settings.settings True + @@ -299,6 +321,7 @@ + @@ -314,6 +337,7 @@ + @@ -333,6 +357,7 @@ + @@ -347,6 +372,7 @@ + diff --git a/Source/GrasscutterTools/Properties/Resources.Designer.cs b/Source/GrasscutterTools/Properties/Resources.Designer.cs index ef38cb2..a7436ac 100644 --- a/Source/GrasscutterTools/Properties/Resources.Designer.cs +++ b/Source/GrasscutterTools/Properties/Resources.Designer.cs @@ -401,6 +401,16 @@ namespace GrasscutterTools.Properties { } } + /// + /// 查找 System.Byte[] 类型的本地化资源。 + /// + internal static byte[] Banners { + get { + object obj = ResourceManager.GetObject("Banners", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// 查找类似 浏览器打开失败,你可以通过以下链接手动访问: 的本地化字符串。 /// @@ -554,6 +564,59 @@ namespace GrasscutterTools.Properties { } } + /// + /// 查找类似 007:初行者推荐祈愿 + ///008:奔行世间 + ///009:杯装之诗 + ///010:黎明巡礼 + ///011:南风之眷 + ///012:靖妖傩舞 + ///013:神铸赋形 + ///015:闪焰的驻足 + ///016:初行者推荐祈愿 + ///017:奔行世间 + ///018:闪焰的驻足 + ///019:杯装之诗 + ///020:神铸赋形 + ///021:神铸赋形 + ///022:奔行世间 + ///023:暂别冬都 + ///024:陵薮市朝 + ///027:深秘之息 + ///028:浮生孰来 + ///031:烟火之邀 + ///032:鱼龙灯昼 + ///033:赤团开时 + ///036:杯装之诗 + ///037:暂别冬都 + ///040:陵薮市朝 + ///041:浪涌之瞬 + ///045:叶落风随 + ///048:白鹭之庭 + ///049:焰色天河 + ///052:影寂天下人 + ///053:浮岳虹珠 + ///061:鬼门斗宴 + ///065:出尘入世 + ///071:华紫樱绯 + ///076:苍流踏花 + ///081:素霓伣天 + ///091:巡御蘙荟-提纳里 + ///092:陵薮市朝-钟离 + ///093:神铸赋形-猎人贯虹 + ///097:雳裁冥昭-赛诺 + ///098:杯装之诗-温迪 + ///099:神铸赋形-赤沙终末 + ///100:翩舞歈莲-妮露 + ///101:深秘之息-阿贝多 + ///101:神铸赋形-圣显绿箭 的本地化字符串。 + /// + internal static string GachaBannerTitle { + get { + return ResourceManager.GetString("GachaBannerTitle", resourceCulture); + } + } + /// /// 查找类似 007:初行者推荐祈愿 ///008:奔行世间 diff --git a/Source/GrasscutterTools/Properties/Resources.en-us.resx b/Source/GrasscutterTools/Properties/Resources.en-us.resx index d87ea2e..4e75465 100644 --- a/Source/GrasscutterTools/Properties/Resources.en-us.resx +++ b/Source/GrasscutterTools/Properties/Resources.en-us.resx @@ -285,4 +285,7 @@ Improvement suggestions have been submitted, please use caution to send emails t Only allowed to save in Shop.json format! Are you sure you want to overwrite the currently specified file? + + ..\Resources\en-us\GachaBennerTitle.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 + \ No newline at end of file diff --git a/Source/GrasscutterTools/Properties/Resources.resx b/Source/GrasscutterTools/Properties/Resources.resx index 590fae6..caf6e74 100644 --- a/Source/GrasscutterTools/Properties/Resources.resx +++ b/Source/GrasscutterTools/Properties/Resources.resx @@ -294,4 +294,10 @@ 仅允许以 Shop.json 格式保存!确定要覆盖当前指定文件吗? + + ..\Resources\zh-cn\GachaBannerTitle.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 + + + ..\Resources\Banners.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/Source/GrasscutterTools/Properties/Resources.ru-ru.resx b/Source/GrasscutterTools/Properties/Resources.ru-ru.resx index 387236d..d1aa5fa 100644 --- a/Source/GrasscutterTools/Properties/Resources.ru-ru.resx +++ b/Source/GrasscutterTools/Properties/Resources.ru-ru.resx @@ -273,4 +273,7 @@ Разрешено сохранять только в формате Shop.json! Вы уверены, что хотите перезаписать текущий указанный файл? + + ..\Resources\ru-ru\GachaBennerTitle.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 + \ No newline at end of file diff --git a/Source/GrasscutterTools/Properties/Resources.zh-TW.resx b/Source/GrasscutterTools/Properties/Resources.zh-TW.resx index 017e060..9557515 100644 --- a/Source/GrasscutterTools/Properties/Resources.zh-TW.resx +++ b/Source/GrasscutterTools/Properties/Resources.zh-TW.resx @@ -279,4 +279,7 @@ 僅允許以 Shop.json 格式保存!確定要覆蓋當前指定文件嗎? + + ..\Resources\zh-tw\GachaBennerTitle.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 + \ No newline at end of file diff --git a/Source/GrasscutterTools/Properties/Settings.Designer.cs b/Source/GrasscutterTools/Properties/Settings.Designer.cs index c55d6ff..ed05a22 100644 --- a/Source/GrasscutterTools/Properties/Settings.Designer.cs +++ b/Source/GrasscutterTools/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace GrasscutterTools.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.3.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -214,5 +214,17 @@ namespace GrasscutterTools.Properties { this["MainFormSize"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string BannersJsonPath { + get { + return ((string)(this["BannersJsonPath"])); + } + set { + this["BannersJsonPath"] = value; + } + } } } diff --git a/Source/GrasscutterTools/Properties/Settings.settings b/Source/GrasscutterTools/Properties/Settings.settings index cb4375f..f407dcc 100644 --- a/Source/GrasscutterTools/Properties/Settings.settings +++ b/Source/GrasscutterTools/Properties/Settings.settings @@ -50,5 +50,8 @@ 0, 0 + + + \ No newline at end of file diff --git a/Source/GrasscutterTools/Resources/Banners.json b/Source/GrasscutterTools/Resources/Banners.json new file mode 100644 index 0000000..636577c --- /dev/null +++ b/Source/GrasscutterTools/Resources/Banners.json @@ -0,0 +1,773 @@ +[ + //新手 + { + "comment": "Beginner's Banner. Do not change for no reason.", + "gachaType": 100, + "scheduleId": 803, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A016", + "titlePath": "UI_GACHA_SHOW_PANEL_A016_TITLE", + "costItemId": 224, + "costItemAmount10": 8, + "gachaTimesLimit": 20, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 100, + "rateUpItems5": [], + "rateUpItems4": [ 1034 ] + }, + //常驻1 + { + "comment": "Standard", + "gachaType": 200, + "scheduleId": 2000, + "bannerType": "STANDARD", + "prefabPath": "GachaShowPanel_A022", + "titlePath": "UI_GACHA_SHOW_PANEL_A022_TITLE", + "costItemId": 224, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 1, + "fallbackItems4Pool1": [ 1006, 1014, 1015, 1020, 1021, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ], + "weights5": [ + [ 1, 75 ], + [ 73, 150 ], + [ 90, 10000 ] + ] + }, + //常驻2 + { + "comment": "Standard", + "gachaType": 201, + "scheduleId": 2001, + "bannerType": "STANDARD", + "prefabPath": "GachaShowPanel_A017", + "titlePath": "UI_GACHA_SHOW_PANEL_A017_TITLE", + "costItemId": 224, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 1, + "fallbackItems4Pool1": [ 1006, 1014, 1015, 1020, 1021, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ], + "weights5": [ + [ 1, 75 ], + [ 73, 150 ], + [ 90, 10000 ] + ] + }, + //1.0上角色-杯装之诗:温迪、菲谢尔、香菱、芭芭拉 + { + "comment": "1.0", + "gachaType": 400, + "scheduleId": 800, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A019", + "titlePath": "UI_GACHA_SHOW_PANEL_A019_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 1000, + "rateUpItems4": [ 1023, 1031, 1014 ], + "rateUpItems5": [ 1022 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.0下角色-闪焰的驻足:可莉、行秋、诺艾尔、砂糖 + { + "comment": "1.0", + "gachaType": 401, + "scheduleId": 801, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A018", + "titlePath": "UI_GACHA_SHOW_PANEL_A018_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 999, + "rateUpItems4": [ 1025, 1034, 1043 ], + "rateUpItems5": [ 1029 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.1上角色-暂别冬都:达达利亚、迪奥娜、北斗、凝光 + { + "comment": "1.0", + "gachaType": 402, + "scheduleId": 802, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A023", + "titlePath": "UI_GACHA_SHOW_PANEL_A023_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 998, + "rateUpItems4": [ 1027, 1024, 1039 ], + "rateUpItems5": [ 1033 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.1下角色-陵薮市朝:钟离、辛焱、雷泽、重云 + { + "comment": "1.0", + "gachaType": 403, + "scheduleId": 803, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A024", + "titlePath": "UI_GACHA_SHOW_PANEL_A024_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 997, + "rateUpItems4": [ 1044, 1020, 1036 ], + "rateUpItems5": [ 1030 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.2上角色-深秘之息:阿贝多、菲谢尔、砂糖、班尼特 + { + "comment": "1.0", + "gachaType": 404, + "scheduleId": 804, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A027", + "titlePath": "UI_GACHA_SHOW_PANEL_A027_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 996, + "rateUpItems4": [ 1031, 1043, 1032 ], + "rateUpItems5": [ 1038 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.2下角色-浮生孰来:甘雨,香菱,行秋,诺艾尔 + { + "comment": "1.0", + "gachaType": 405, + "scheduleId": 805, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A028", + "titlePath": "UI_GACHA_SHOW_PANEL_A028_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 995, + "rateUpItems4": [ 1023, 1025, 1034 ], + "rateUpItems5": [ 1037 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.3上角色-烟火之邀:魈、迪奥娜、北斗、辛焱 + { + "comment": "1.0", + "gachaType": 406, + "scheduleId": 806, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A031", + "titlePath": "UI_GACHA_SHOW_PANEL_A031_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 994, + "rateUpItems4": [ 1039, 1024, 1044 ], + "rateUpItems5": [ 1026 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.3中角色-鱼龙灯昼:刻晴、凝光、班尼特、芭芭拉 + { + "comment": "1.0", + "gachaType": 407, + "scheduleId": 807, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A032", + "titlePath": "UI_GACHA_SHOW_PANEL_A032_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 993, + "rateUpItems4": [ 1027, 1032, 1014 ], + "rateUpItems5": [ 1042 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.3下角色-赤团开时:胡桃、行秋、重云、香菱 + { + "comment": "1.0", + "gachaType": 408, + "scheduleId": 808, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A033", + "titlePath": "UI_GACHA_SHOW_PANEL_A033_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 992, + "rateUpItems4": [ 1025, 1036, 1023 ], + "rateUpItems5": [ 1046 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.4上角色-杯装之诗:温迪、砂糖、雷泽、诺艾尔 + { + "comment": "1.0", + "gachaType": 409, + "scheduleId": 809, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A036", + "titlePath": "UI_GACHA_SHOW_PANEL_A036_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 991, + "rateUpItems4": [ 1043, 1020, 1034 ], + "rateUpItems5": [ 1022 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.4下角色-暂别冬都:达达利亚、罗莎莉亚、芭芭拉,菲谢尔 + { + "comment": "1.0", + "gachaType": 410, + "scheduleId": 810, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A037", + "titlePath": "UI_GACHA_SHOW_PANEL_A037_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 990, + "rateUpItems4": [ 1045, 1014, 1031 ], + "rateUpItems5": [ 1033 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.5上角色-陵薮市朝:钟离、烟绯、诺艾尔、迪奥娜 + { + "comment": "1.0", + "gachaType": 411, + "scheduleId": 811, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A040", + "titlePath": "UI_GACHA_SHOW_PANEL_A040_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 989, + "rateUpItems4": [ 1048, 1034, 1039 ], + "rateUpItems5": [ 1030 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.5下角色-浪涌之瞬:优菈、辛焱、行秋、北斗 + { + "comment": "1.0", + "gachaType": 412, + "scheduleId": 812, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A041", + "titlePath": "UI_GACHA_SHOW_PANEL_A041_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 988, + "rateUpItems4": [ 1044, 1025, 1024 ], + "rateUpItems5": [ 1051 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.6上角色-闪焰的驻足:可莉、芭芭拉、砂糖、菲谢尔 + { + "comment": "1.0", + "gachaType": 413, + "scheduleId": 813, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A044", + "titlePath": "UI_GACHA_SHOW_PANEL_A044_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 987, + "rateUpItems4": [ 1014, 1043, 1031 ], + "rateUpItems5": [ 1029 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //1.6下角色-叶落风随:枫原万叶、罗莎莉亚、班尼特、雷泽 + { + "comment": "1.0", + "gachaType": 414, + "scheduleId": 814, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A045", + "titlePath": "UI_GACHA_SHOW_PANEL_A045_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 986, + "rateUpItems4": [ 1045, 1032, 1020 ], + "rateUpItems5": [ 1047 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.0上角色-白鹭之庭:神里绫华、 凝光、 重云、 烟绯 + { + "comment": "2.0", + "gachaType": 415, + "scheduleId": 815, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A048", + "titlePath": "UI_GACHA_SHOW_PANEL_A048_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 985, + "rateUpItems4": [ 1027, 1036, 1048 ], + "rateUpItems5": [ 1002 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.0下角色-焰色天河:宵宫、早柚、迪奥娜、辛焱 + { + "comment": "2.0", + "gachaType": 416, + "scheduleId": 816, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A049", + "titlePath": "UI_GACHA_SHOW_PANEL_A049_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 984, + "rateUpItems4": [ 1053, 1039, 1044 ], + "rateUpItems5": [ 1049 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.1上角色-影寂天下人:雷电将军、九条裟罗、香菱、砂糖 + { + "comment": "2.0", + "gachaType": 417, + "scheduleId": 817, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A052", + "titlePath": "UI_GACHA_SHOW_PANEL_A052_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 983, + "rateUpItems4": [ 1056, 1023, 1043 ], + "rateUpItems5": [ 1052 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.1下角色-浮岳虹珠:珊瑚宫心海、罗莎莉亚、北斗、行秋 + { + "comment": "2.0", + "gachaType": 418, + "scheduleId": 818, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A053", + "titlePath": "UI_GACHA_SHOW_PANEL_A053_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 982, + "rateUpItems4": [ 1045, 1024, 1025 ], + "rateUpItems5": [ 1054 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.2上角色-暂别冬都:达达利亚、凝光、重云、烟绯 + { + "comment": "2.0", + "gachaType": 419, + "scheduleId": 819, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A056", + "titlePath": "UI_GACHA_SHOW_PANEL_A056_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 981, + "rateUpItems4": [ 1027, 1036, 1048 ], + "rateUpItems5": [ 1033 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.2下角色-赤团开时:胡桃、托马、迪奥娜、早柚 + { + "comment": "2.0", + "gachaType": 420, + "scheduleId": 820, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A057", + "titlePath": "UI_GACHA_SHOW_PANEL_A057_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 980, + "rateUpItems4": [ 1050, 1039, 1053 ], + "rateUpItems5": [ 1046 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.3上角色1-浪涌之瞬:优菈、班尼特、诺艾尔、罗莎莉亚 + { + "comment": "2.0", + "gachaType": 421, + "scheduleId": 821, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A062", + "titlePath": "UI_GACHA_SHOW_PANEL_A062_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 979, + "rateUpItems4": [ 1032, 1034, 1045 ], + "rateUpItems5": [ 1051 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.3上角色2-深秘之息:阿贝多、班尼特、诺艾尔、罗莎莉亚 + { + "comment": "2.0", + "gachaType": 422, + "scheduleId": 822, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A060", + "titlePath": "UI_GACHA_SHOW_PANEL_A060_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 978, + "rateUpItems4": [ 1032, 1034, 1045 ], + "rateUpItems5": [ 1038 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.3下角色-鬼门斗宴:荒泷一斗、五郎、芭芭拉、香菱 + { + "comment": "2.0", + "gachaType": 423, + "scheduleId": 823, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A061", + "titlePath": "UI_GACHA_SHOW_PANEL_A061_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 977, + "rateUpItems4": [ 1055, 1014, 1023 ], + "rateUpItems5": [ 1057 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.4上角色1-烟火之邀:魈、云堇、凝光、重云 + //2.4上角色2-出尘入世:申鹤、云堇、凝光、重云 + { + "comment": "2.0", + "gachaType": 424, + "scheduleId": 824, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A065", + "titlePath": "UI_GACHA_SHOW_PANEL_A065_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 976, + "rateUpItems4": [ 1027, 1036, 1064 ], + "rateUpItems5": [ 1063 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.4下角色1-浮生孰来:甘雨、行秋、北斗、烟绯(复刻不放卡池) + //2.4下角色2-陵薮市朝:钟离、行秋、北斗、烟绯(复刻不放卡池) + //2.5上角色-华紫樱绯:八重神子、菲谢尔、迪奥娜、托马 + { + "comment": "2.0", + "gachaType": 425, + "scheduleId": 825, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A071", + "titlePath": "UI_GACHA_SHOW_PANEL_A071_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 975, + "rateUpItems4": [ 1031, 1039, 1050 ], + "rateUpItems5": [ 1058 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.5下角色1-影寂天下人:雷电将军、九条裟罗、辛焱、班尼特(复刻不放卡池) + //2.5下角色2-浮岳虹珠:珊瑚宫心海、九条裟罗、辛焱、班尼特(复刻不放卡池) + //2.6上角色1-苍流踏花:神里绫人、砂糖、香菱、云堇 + { + "comment": "2.0", + "gachaType": 426, + "scheduleId": 826, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A076", + "titlePath": "UI_GACHA_SHOW_PANEL_A076_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 974, + "rateUpItems4": [ 1043, 1023, 1064 ], + "rateUpItems5": [ 1066 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.6上角色2-杯装之诗:神里绫人、砂糖、香菱、云堇(复刻不放卡池) + //2.6下角色-白鹭之庭:神里绫华、雷泽、罗莎莉亚、早柚(复刻不放卡池) + //2.7上角色1-素霓伣天:夜兰、诺艾尔、烟绯、芭芭拉 + { + "comment": "2.0", + "gachaType": 427, + "scheduleId": 827, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A081", + "titlePath": "UI_GACHA_SHOW_PANEL_A081_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 973, + "rateUpItems4": [ 1034, 1048, 1014 ], + "rateUpItems5": [ 1060 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //2.7上角色2-烟火之邀:魈、诺艾尔、烟绯、芭芭拉(复刻不放卡池) + //2.7下角色-鬼门斗宴:荒泷一斗、久岐忍、五郎、重云(复刻不放卡池) + //2.8上角色1-闪焰的驻足:可莉、凝光、托马、鹿野原平藏(复刻不放卡池) + //2.8上角色2-叶落风随:枫原万叶、凝光、托马、鹿野原平藏(复刻不放卡池) + //2.8下角色-焰色天河:宵宫、班尼特、云堇、辛焱(复刻不放卡池) + //3.0上角色1-巡御蘙荟:提纳里、柯莱、迪奥娜、菲谢尔 + { + "comment": "3.0", + "gachaType": 428, + "scheduleId": 828, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A091", + "titlePath": "UI_GACHA_SHOW_PANEL_A091_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 972, + "rateUpItems4": [ 1031, 1039, 1067 ], + "rateUpItems5": [ 1069 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //3.0上角色2-陵薮市朝:钟离、柯莱、迪奥娜、菲谢尔(复刻不放卡池) + //3.0下角色1-浮岳虹珠:珊瑚宫心海、多莉、砂糖、行秋(复刻不放卡池) + //3.0下角色2-浮生孰来:甘雨、多莉、砂糖、行秋(复刻不放卡池) + //3.1上角色1-杯装之诗:温迪、早柚、坎蒂丝、久岐忍(复刻不放卡池) + //3.1上角色2-雳裁冥昭:温迪、早柚、坎蒂丝、久岐忍 + { + "comment": "3.0", + "gachaType": 429, + "scheduleId": 829, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A097", + "titlePath": "UI_GACHA_SHOW_PANEL_A097_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 971, + "rateUpItems4": [ 1053, 1065, 1072 ], + "rateUpItems5": [ 1071 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //3.1下角色1-翩舞歈莲:妮露、芭芭拉、北斗、香菱 + /*{ + "comment": "3.0", + "gachaType": 430, + "scheduleId": 830, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A100", + "titlePath": "UI_GACHA_SHOW_PANEL_A0100_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 970, + "rateUpItems4": [1014,1023,1024], + "rateUpItems5": [1070], + "fallbackItems5Pool2": [], + "weights5": [[1,80], [73,80], [90,10000]] + },*/ + //3.2上角色1-月草的赐慧:纳西妲、诺艾尔、班尼特、雷泽 + { + "comment": "Character Event Banner 1", + "gachaType": 431, + "scheduleId": 831, + "bannerType": "EVENT", + "prefabPath": "GachaShowPanel_A103", + "titlePath": "UI_GACHA_SHOW_PANEL_A0103_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 969, + "rateUpItems4": [ 1034, 1020, 1032 ], + "rateUpItems5": [ 1073 ], + "fallbackItems5Pool2": [], + "weights5": [ + [ 1, 80 ], + [ 73, 80 ], + [ 90, 10000 ] + ] + }, + //3.2上角色-焰色天河:宵宫、诺艾尔、班尼特、雷泽(复刻不放卡池) + //3.2上武器-神铸赋形:飞雷之弦振、 + { + "comment": "Weapon Event Banner", + "gachaType": 502, + "scheduleId": 602, + "bannerType": "WEAPON", + "prefabPath": "GachaShowPanel_A105", + "titlePath": "UI_GACHA_SHOW_PANEL_A020_TITLE", + "costItemId": 223, + "beginTime": 0, + "endTime": 1924992000, + "sortId": 2, + "rateUpItems4": [ 15405, 11402, 14402, 13407, 12403 ], + "rateUpItems5": [ 114511, 15509 ], + "fallbackItems5Pool1": [], + "weights4": [ + [ 1, 600 ], + [ 7, 600 ], + [ 8, 6600 ], + [ 10, 12600 ] + ], + "weights5": [ + [ 1, 100 ], + [ 62, 100 ], + [ 73, 7800 ], + [ 80, 10000 ] + ], + "eventChance4": 75, + "eventChance5": 75 + } + //3.1下角色2-深秘之息:阿贝多、芭芭拉、北斗、香菱(复刻不放卡池) +] diff --git a/Source/GrasscutterTools/Resources/en-us/GachaBennerTitle.txt b/Source/GrasscutterTools/Resources/en-us/GachaBennerTitle.txt new file mode 100644 index 0000000..7fd0312 --- /dev/null +++ b/Source/GrasscutterTools/Resources/en-us/GachaBennerTitle.txt @@ -0,0 +1,55 @@ +007:Beginners' wish +008:Wanderlust Invocation +009:Ballad in Goblets +010:Dawn Pilgrimage +011:Grace of Southwind +012:Bane of All Evil +013:Epitome Invocation +015:Sparkling Steps +016:Beginners' wish +017:Wanderlust Invocation +018:Sparkling Steps +019:Ballad in Goblets +020:Amos' Bow and Aquila Favonia +021:Lost Prayer to the Sacred Winds and Wolf's Gravestone +022:Wanderlust Invocation +023:Farewell of Snezhnaya +024:Gentry of Hermitage +025:Skyward Harp and Memory of Dust +026:Vortex Vanquisher and The Unforged +027:Secretum Secretorum +028:Adrift in the Harbor +029:Summit Shaper and Skyward Atlas +030:Amos' Bow and Skyward Pride +031:Invitation to Mundane Life +032:Dance of Lanterns +033:Moment of Bloom +034:Primordial Jade Winged-Spear and Primordial Jade Cutter +035:Staff of Homa and Wolf's Gravestone +036:Ballad in Goblets +037:Farewell of Snezhnaya +038:Elegy for the End and Skyward Blade +039:Skyward Harp and Lost Prayer to the Sacred Winds +040:Gentry of Hermitage +041:Born of Ocean Swell +042:Summit Shaper and Memory of Dust +043:Aquila Favonia and Song of Broken Pines +045:Leaves in the Wind +048:The Heron's Court +049:Tapestry of Golden Flames +052:Reign of Serenity +053:Drifting Luminescence +061:Oni's Royale +065:The Transcendent One Returns +071:Everbloom Violet +076:Azure Excursion +081:Discerner of Enigmas +091:Tighnari +092:Zhongli +093:Hunter's Path +097:Cyno +098:Venti +099:Staff of the Scarlet Sands +100:Twirling Lotus +101:Secretorum Secretorum +102:Epitome Invocation \ No newline at end of file diff --git a/Source/GrasscutterTools/Resources/ru-ru/GachaBennerTitle.txt b/Source/GrasscutterTools/Resources/ru-ru/GachaBennerTitle.txt new file mode 100644 index 0000000..699cb98 --- /dev/null +++ b/Source/GrasscutterTools/Resources/ru-ru/GachaBennerTitle.txt @@ -0,0 +1,45 @@ +007:Молитва новичка +008:Жажда странствий +009:Стихи из винного кубка +010:Рассветное паломничество +011:Благоволение южного ветра +012:Истребление всего зла +013:Воплощение божества +015:Сверкающая поступь +016:Молитва новичка +017:Жажда странствий +018:Сверкающая поступь +019:Стихи из винного кубка +020:Воплощение божества +021:Воплощение божества +022:Жажда странствий +023:Зимнее расставание +024:Горы и рынки +027:Таинственные секреты +028:Эфемерное недоверие +031:Приглашение к мирской жизни +032:Танец фонарей +033:Момент цветения +036:Стихи из винного кубка +037:Зимнее расставание +040:Горы и рынки +041:Рождённая морской пеной +045:Листья на ветру +048:Сад белой цапли +049:Гобелен золотого пламени +052:Господство безмятежности +053:Дрейфующее свечение +061:Пиршество óни +065:Возвращение в мир смертных +071:Вечноцветущий пурпур +076:Лазурный поход +081:Белая радуга +091:Патруль лесной чащи +092:Горы и рынки +093:Охотничья тропа +097:Сайно +098:Венти +099:Staff of the Scarlet Sands +100:Twirling Lotus +101:Secretorum Secretorum +102:Epitome Invocation \ No newline at end of file diff --git a/Source/GrasscutterTools/Resources/zh-cn/GachaBannerTitle.txt b/Source/GrasscutterTools/Resources/zh-cn/GachaBannerTitle.txt new file mode 100644 index 0000000..d284c69 --- /dev/null +++ b/Source/GrasscutterTools/Resources/zh-cn/GachaBannerTitle.txt @@ -0,0 +1,45 @@ +007:初行者推荐祈愿 +008:奔行世间 +009:杯装之诗 +010:黎明巡礼 +011:南风之眷 +012:靖妖傩舞 +013:神铸赋形 +015:闪焰的驻足 +016:初行者推荐祈愿 +017:奔行世间 +018:闪焰的驻足 +019:杯装之诗 +020:神铸赋形 +021:神铸赋形 +022:奔行世间 +023:暂别冬都 +024:陵薮市朝 +027:深秘之息 +028:浮生孰来 +031:烟火之邀 +032:鱼龙灯昼 +033:赤团开时 +036:杯装之诗 +037:暂别冬都 +040:陵薮市朝 +041:浪涌之瞬 +045:叶落风随 +048:白鹭之庭 +049:焰色天河 +052:影寂天下人 +053:浮岳虹珠 +061:鬼门斗宴 +065:出尘入世 +071:华紫樱绯 +076:苍流踏花 +081:素霓伣天 +091:巡御蘙荟-提纳里 +092:陵薮市朝-钟离 +093:神铸赋形-猎人贯虹 +097:雳裁冥昭-赛诺 +098:杯装之诗-温迪 +099:神铸赋形-赤沙终末 +100:翩舞歈莲-妮露 +101:深秘之息-阿贝多 +101:神铸赋形-圣显绿箭 \ No newline at end of file diff --git a/Source/GrasscutterTools/Resources/zh-tw/GachaBennerTitle.txt b/Source/GrasscutterTools/Resources/zh-tw/GachaBennerTitle.txt new file mode 100644 index 0000000..8481ed7 --- /dev/null +++ b/Source/GrasscutterTools/Resources/zh-tw/GachaBennerTitle.txt @@ -0,0 +1,45 @@ +007:初行者推薦祈願 +008:奔行世間 +009:杯裝之詩 +010:黎明巡禮 +011:南風之眷 +012:靖妖儺舞 +013:神鑄賦形 +015:閃焰的駐足 +016:初行者推薦祈願 +017:奔行世間 +018:閃焰的駐足 +019:杯裝之詩 +020:神鑄賦形 +021:神鑄賦形 +022:奔行世間 +023:暫別冬都 +024:陵藪市朝 +027:深秘之息 +028:浮生孰來 +031:煙火之邀 +032:魚龍燈晝 +033:赤團開時 +036:杯裝之詩 +037:暫別冬都 +040:陵藪市朝 +041:浪湧之瞬 +045:葉落風隨 +048:白鷺之庭 +049:焰色天河 +052:影寂天下人 +053:浮岳虹珠 +061:鬼門斗宴 +065:出塵入世 +071:華紫櫻緋 +076:蒼流踏花 +081:素霓俔天 +091:巡禦蘙薈-提納里 +092:陵藪市朝-鍾離 +093:神鑄賦形-獵人貫虹 +097:靂裁冥昭-賽諾 +098:杯裝之詩-溫迪 +099:神鑄賦形-赤沙終末 +100:翩舞歈蓮-妮露 +101:深秘之息-阿貝多 +101:神鑄賦形-聖顯綠箭 \ No newline at end of file