Implement import from GOOD dump

This commit is contained in:
Leo 2022-07-15 18:09:38 +01:00
parent ef4f06d6c3
commit 7e57154809
20 changed files with 6540 additions and 5420 deletions

View File

@ -35,6 +35,7 @@ namespace GrasscutterTools.Forms
this.GrpCommand = new System.Windows.Forms.GroupBox(); this.GrpCommand = new System.Windows.Forms.GroupBox();
this.BtnInvokeOpenCommand = new System.Windows.Forms.Button(); this.BtnInvokeOpenCommand = new System.Windows.Forms.Button();
this.TPRemoteCall = new System.Windows.Forms.TabPage(); this.TPRemoteCall = new System.Windows.Forms.TabPage();
this.ButtonOpenGOODImport = new System.Windows.Forms.Button();
this.LblHostTip = new System.Windows.Forms.Label(); this.LblHostTip = new System.Windows.Forms.Label();
this.GrpServerStatus = new System.Windows.Forms.GroupBox(); this.GrpServerStatus = new System.Windows.Forms.GroupBox();
this.LnkOpenCommandLabel = new System.Windows.Forms.LinkLabel(); this.LnkOpenCommandLabel = new System.Windows.Forms.LinkLabel();
@ -70,7 +71,6 @@ namespace GrasscutterTools.Forms
this.DTPBanEndTime = new System.Windows.Forms.DateTimePicker(); this.DTPBanEndTime = new System.Windows.Forms.DateTimePicker();
this.BtnUnban = new System.Windows.Forms.Button(); this.BtnUnban = new System.Windows.Forms.Button();
this.BtnBan = new System.Windows.Forms.Button(); this.BtnBan = new System.Windows.Forms.Button();
this.TxtBanReason = new GrasscutterTools.Controls.TextBoxXP();
this.NUDBanUID = new System.Windows.Forms.NumericUpDown(); this.NUDBanUID = new System.Windows.Forms.NumericUpDown();
this.LblBanUID = new System.Windows.Forms.Label(); this.LblBanUID = new System.Windows.Forms.Label();
this.GrpAccount = new System.Windows.Forms.GroupBox(); this.GrpAccount = new System.Windows.Forms.GroupBox();
@ -221,6 +221,7 @@ namespace GrasscutterTools.Forms
this.ChkIncludeUID = new System.Windows.Forms.CheckBox(); this.ChkIncludeUID = new System.Windows.Forms.CheckBox();
this.LblDefaultUid = new System.Windows.Forms.Label(); this.LblDefaultUid = new System.Windows.Forms.Label();
this.TCMain = new System.Windows.Forms.TabControl(); this.TCMain = new System.Windows.Forms.TabControl();
this.TxtBanReason = new GrasscutterTools.Controls.TextBoxXP();
this.GrpCommand.SuspendLayout(); this.GrpCommand.SuspendLayout();
this.TPRemoteCall.SuspendLayout(); this.TPRemoteCall.SuspendLayout();
this.GrpServerStatus.SuspendLayout(); this.GrpServerStatus.SuspendLayout();
@ -317,16 +318,24 @@ namespace GrasscutterTools.Forms
// //
// TPRemoteCall // TPRemoteCall
// //
resources.ApplyResources(this.TPRemoteCall, "TPRemoteCall"); this.TPRemoteCall.Controls.Add(this.ButtonOpenGOODImport);
this.TPRemoteCall.Controls.Add(this.LblHostTip); this.TPRemoteCall.Controls.Add(this.LblHostTip);
this.TPRemoteCall.Controls.Add(this.GrpServerStatus); this.TPRemoteCall.Controls.Add(this.GrpServerStatus);
this.TPRemoteCall.Controls.Add(this.GrpRemoteCommand); this.TPRemoteCall.Controls.Add(this.GrpRemoteCommand);
this.TPRemoteCall.Controls.Add(this.TxtHost); this.TPRemoteCall.Controls.Add(this.TxtHost);
this.TPRemoteCall.Controls.Add(this.BtnQueryServerStatus); this.TPRemoteCall.Controls.Add(this.BtnQueryServerStatus);
this.TPRemoteCall.Controls.Add(this.LblHost); this.TPRemoteCall.Controls.Add(this.LblHost);
resources.ApplyResources(this.TPRemoteCall, "TPRemoteCall");
this.TPRemoteCall.Name = "TPRemoteCall"; this.TPRemoteCall.Name = "TPRemoteCall";
this.TPRemoteCall.UseVisualStyleBackColor = true; this.TPRemoteCall.UseVisualStyleBackColor = true;
// //
// ButtonOpenGOODImport
//
resources.ApplyResources(this.ButtonOpenGOODImport, "ButtonOpenGOODImport");
this.ButtonOpenGOODImport.Name = "ButtonOpenGOODImport";
this.ButtonOpenGOODImport.UseVisualStyleBackColor = true;
this.ButtonOpenGOODImport.Click += new System.EventHandler(this.ButtonOpenGOODImport_Click);
//
// LblHostTip // LblHostTip
// //
resources.ApplyResources(this.LblHostTip, "LblHostTip"); resources.ApplyResources(this.LblHostTip, "LblHostTip");
@ -386,15 +395,14 @@ namespace GrasscutterTools.Forms
// //
// TPOpenCommandCheck // TPOpenCommandCheck
// //
resources.ApplyResources(this.TPOpenCommandCheck, "TPOpenCommandCheck");
this.TPOpenCommandCheck.Controls.Add(this.TPPlayerCheck); this.TPOpenCommandCheck.Controls.Add(this.TPPlayerCheck);
this.TPOpenCommandCheck.Controls.Add(this.TPConsoleCheck); this.TPOpenCommandCheck.Controls.Add(this.TPConsoleCheck);
resources.ApplyResources(this.TPOpenCommandCheck, "TPOpenCommandCheck");
this.TPOpenCommandCheck.Name = "TPOpenCommandCheck"; this.TPOpenCommandCheck.Name = "TPOpenCommandCheck";
this.TPOpenCommandCheck.SelectedIndex = 0; this.TPOpenCommandCheck.SelectedIndex = 0;
// //
// TPPlayerCheck // TPPlayerCheck
// //
resources.ApplyResources(this.TPPlayerCheck, "TPPlayerCheck");
this.TPPlayerCheck.Controls.Add(this.LnkRCHelp); this.TPPlayerCheck.Controls.Add(this.LnkRCHelp);
this.TPPlayerCheck.Controls.Add(this.NUDRemotePlayerId); this.TPPlayerCheck.Controls.Add(this.NUDRemotePlayerId);
this.TPPlayerCheck.Controls.Add(this.BtnConnectOpenCommand); this.TPPlayerCheck.Controls.Add(this.BtnConnectOpenCommand);
@ -402,6 +410,7 @@ namespace GrasscutterTools.Forms
this.TPPlayerCheck.Controls.Add(this.BtnSendVerificationCode); this.TPPlayerCheck.Controls.Add(this.BtnSendVerificationCode);
this.TPPlayerCheck.Controls.Add(this.NUDVerificationCode); this.TPPlayerCheck.Controls.Add(this.NUDVerificationCode);
this.TPPlayerCheck.Controls.Add(this.LblRemotePlayerId); this.TPPlayerCheck.Controls.Add(this.LblRemotePlayerId);
resources.ApplyResources(this.TPPlayerCheck, "TPPlayerCheck");
this.TPPlayerCheck.Name = "TPPlayerCheck"; this.TPPlayerCheck.Name = "TPPlayerCheck";
this.TPPlayerCheck.UseVisualStyleBackColor = true; this.TPPlayerCheck.UseVisualStyleBackColor = true;
// //
@ -473,11 +482,11 @@ namespace GrasscutterTools.Forms
// //
// TPConsoleCheck // TPConsoleCheck
// //
resources.ApplyResources(this.TPConsoleCheck, "TPConsoleCheck");
this.TPConsoleCheck.Controls.Add(this.BtnConsoleConnect); this.TPConsoleCheck.Controls.Add(this.BtnConsoleConnect);
this.TPConsoleCheck.Controls.Add(this.TxtToken); this.TPConsoleCheck.Controls.Add(this.TxtToken);
this.TPConsoleCheck.Controls.Add(this.LblToken); this.TPConsoleCheck.Controls.Add(this.LblToken);
this.TPConsoleCheck.Controls.Add(this.LblConsoleTip); this.TPConsoleCheck.Controls.Add(this.LblConsoleTip);
resources.ApplyResources(this.TPConsoleCheck, "TPConsoleCheck");
this.TPConsoleCheck.Name = "TPConsoleCheck"; this.TPConsoleCheck.Name = "TPConsoleCheck";
this.TPConsoleCheck.UseVisualStyleBackColor = true; this.TPConsoleCheck.UseVisualStyleBackColor = true;
// //
@ -522,10 +531,10 @@ namespace GrasscutterTools.Forms
// //
// TPAbout // TPAbout
// //
resources.ApplyResources(this.TPAbout, "TPAbout");
this.TPAbout.Controls.Add(this.GrasscutterToolsSupport); this.TPAbout.Controls.Add(this.GrasscutterToolsSupport);
this.TPAbout.Controls.Add(this.LnkGithub); this.TPAbout.Controls.Add(this.LnkGithub);
this.TPAbout.Controls.Add(this.LblSupportDescription); this.TPAbout.Controls.Add(this.LblSupportDescription);
resources.ApplyResources(this.TPAbout, "TPAbout");
this.TPAbout.Name = "TPAbout"; this.TPAbout.Name = "TPAbout";
this.TPAbout.UseVisualStyleBackColor = true; this.TPAbout.UseVisualStyleBackColor = true;
// //
@ -550,10 +559,10 @@ namespace GrasscutterTools.Forms
// //
// TPManage // TPManage
// //
resources.ApplyResources(this.TPManage, "TPManage");
this.TPManage.Controls.Add(this.GrpBanPlayer); this.TPManage.Controls.Add(this.GrpBanPlayer);
this.TPManage.Controls.Add(this.GrpAccount); this.TPManage.Controls.Add(this.GrpAccount);
this.TPManage.Controls.Add(this.GrpPermission); this.TPManage.Controls.Add(this.GrpPermission);
resources.ApplyResources(this.TPManage, "TPManage");
this.TPManage.Name = "TPManage"; this.TPManage.Name = "TPManage";
this.TPManage.UseVisualStyleBackColor = true; this.TPManage.UseVisualStyleBackColor = true;
// //
@ -571,8 +580,8 @@ namespace GrasscutterTools.Forms
// //
// DTPBanEndTime // DTPBanEndTime
// //
resources.ApplyResources(this.DTPBanEndTime, "DTPBanEndTime");
this.DTPBanEndTime.Format = System.Windows.Forms.DateTimePickerFormat.Short; this.DTPBanEndTime.Format = System.Windows.Forms.DateTimePickerFormat.Short;
resources.ApplyResources(this.DTPBanEndTime, "DTPBanEndTime");
this.DTPBanEndTime.MaxDate = new System.DateTime(2034, 12, 31, 0, 0, 0, 0); this.DTPBanEndTime.MaxDate = new System.DateTime(2034, 12, 31, 0, 0, 0, 0);
this.DTPBanEndTime.MinDate = new System.DateTime(2022, 6, 28, 0, 0, 0, 0); this.DTPBanEndTime.MinDate = new System.DateTime(2022, 6, 28, 0, 0, 0, 0);
this.DTPBanEndTime.Name = "DTPBanEndTime"; this.DTPBanEndTime.Name = "DTPBanEndTime";
@ -592,14 +601,6 @@ namespace GrasscutterTools.Forms
this.BtnBan.UseVisualStyleBackColor = true; this.BtnBan.UseVisualStyleBackColor = true;
this.BtnBan.Click += new System.EventHandler(this.BtnBan_Click); this.BtnBan.Click += new System.EventHandler(this.BtnBan_Click);
// //
// TxtBanReason
//
resources.ApplyResources(this.TxtBanReason, "TxtBanReason");
this.TxtBanReason.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.TxtBanReason.Maximum = 0F;
this.TxtBanReason.Minimum = 0F;
this.TxtBanReason.Name = "TxtBanReason";
//
// NUDBanUID // NUDBanUID
// //
resources.ApplyResources(this.NUDBanUID, "NUDBanUID"); resources.ApplyResources(this.NUDBanUID, "NUDBanUID");
@ -693,10 +694,10 @@ namespace GrasscutterTools.Forms
// //
// CmbPerm // CmbPerm
// //
resources.ApplyResources(this.CmbPerm, "CmbPerm");
this.CmbPerm.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; this.CmbPerm.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
this.CmbPerm.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.CmbPerm.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
this.CmbPerm.FormattingEnabled = true; this.CmbPerm.FormattingEnabled = true;
resources.ApplyResources(this.CmbPerm, "CmbPerm");
this.CmbPerm.Name = "CmbPerm"; this.CmbPerm.Name = "CmbPerm";
// //
// NUDPermUID // NUDPermUID
@ -742,7 +743,6 @@ namespace GrasscutterTools.Forms
// //
// TPScene // TPScene
// //
resources.ApplyResources(this.TPScene, "TPScene");
this.TPScene.Controls.Add(this.TxtSceneFilter); this.TPScene.Controls.Add(this.TxtSceneFilter);
this.TPScene.Controls.Add(this.ChkIncludeSceneId); this.TPScene.Controls.Add(this.ChkIncludeSceneId);
this.TPScene.Controls.Add(this.LblTp); this.TPScene.Controls.Add(this.LblTp);
@ -757,6 +757,7 @@ namespace GrasscutterTools.Forms
this.TPScene.Controls.Add(this.LblClimateType); this.TPScene.Controls.Add(this.LblClimateType);
this.TPScene.Controls.Add(this.LblSceneDescription); this.TPScene.Controls.Add(this.LblSceneDescription);
this.TPScene.Controls.Add(this.ListScenes); this.TPScene.Controls.Add(this.ListScenes);
resources.ApplyResources(this.TPScene, "TPScene");
this.TPScene.Name = "TPScene"; this.TPScene.Name = "TPScene";
this.TPScene.UseVisualStyleBackColor = true; this.TPScene.UseVisualStyleBackColor = true;
// //
@ -891,7 +892,6 @@ namespace GrasscutterTools.Forms
// //
// TPItem // TPItem
// //
resources.ApplyResources(this.TPItem, "TPItem");
this.TPItem.Controls.Add(this.LblClearGiveItemLogs); this.TPItem.Controls.Add(this.LblClearGiveItemLogs);
this.TPItem.Controls.Add(this.BtnSaveGiveItemLog); this.TPItem.Controls.Add(this.BtnSaveGiveItemLog);
this.TPItem.Controls.Add(this.BtnRemoveGiveItemLog); this.TPItem.Controls.Add(this.BtnRemoveGiveItemLog);
@ -904,6 +904,7 @@ namespace GrasscutterTools.Forms
this.TPItem.Controls.Add(this.NUDGameItemAmout); this.TPItem.Controls.Add(this.NUDGameItemAmout);
this.TPItem.Controls.Add(this.NUDGameItemLevel); this.TPItem.Controls.Add(this.NUDGameItemLevel);
this.TPItem.Controls.Add(this.LblGiveCommandDescription); this.TPItem.Controls.Add(this.LblGiveCommandDescription);
resources.ApplyResources(this.TPItem, "TPItem");
this.TPItem.Name = "TPItem"; this.TPItem.Name = "TPItem";
this.TPItem.UseVisualStyleBackColor = true; this.TPItem.UseVisualStyleBackColor = true;
// //
@ -1021,7 +1022,6 @@ namespace GrasscutterTools.Forms
// //
// TPWeapon // TPWeapon
// //
resources.ApplyResources(this.TPWeapon, "TPWeapon");
this.TPWeapon.Controls.Add(this.TxtWeaponFilter); this.TPWeapon.Controls.Add(this.TxtWeaponFilter);
this.TPWeapon.Controls.Add(this.LblWeaponDescription); this.TPWeapon.Controls.Add(this.LblWeaponDescription);
this.TPWeapon.Controls.Add(this.LblWeaponRefinement); this.TPWeapon.Controls.Add(this.LblWeaponRefinement);
@ -1031,6 +1031,7 @@ namespace GrasscutterTools.Forms
this.TPWeapon.Controls.Add(this.NUDWeaponAmout); this.TPWeapon.Controls.Add(this.NUDWeaponAmout);
this.TPWeapon.Controls.Add(this.NUDWeaponLevel); this.TPWeapon.Controls.Add(this.NUDWeaponLevel);
this.TPWeapon.Controls.Add(this.ListWeapons); this.TPWeapon.Controls.Add(this.ListWeapons);
resources.ApplyResources(this.TPWeapon, "TPWeapon");
this.TPWeapon.Name = "TPWeapon"; this.TPWeapon.Name = "TPWeapon";
this.TPWeapon.UseVisualStyleBackColor = true; this.TPWeapon.UseVisualStyleBackColor = true;
// //
@ -1127,12 +1128,12 @@ namespace GrasscutterTools.Forms
// //
// TPStats // TPStats
// //
resources.ApplyResources(this.TPStats, "TPStats");
this.TPStats.Controls.Add(this.LblResetStatsCommand); this.TPStats.Controls.Add(this.LblResetStatsCommand);
this.TPStats.Controls.Add(this.LblResetStatsTip); this.TPStats.Controls.Add(this.LblResetStatsTip);
this.TPStats.Controls.Add(this.GrpSetStats); this.TPStats.Controls.Add(this.GrpSetStats);
this.TPStats.Controls.Add(this.GrpTalentLevel); this.TPStats.Controls.Add(this.GrpTalentLevel);
this.TPStats.Controls.Add(this.LblStatsDescription); this.TPStats.Controls.Add(this.LblStatsDescription);
resources.ApplyResources(this.TPStats, "TPStats");
this.TPStats.Name = "TPStats"; this.TPStats.Name = "TPStats";
this.TPStats.UseVisualStyleBackColor = true; this.TPStats.UseVisualStyleBackColor = true;
// //
@ -1161,9 +1162,9 @@ namespace GrasscutterTools.Forms
// //
// LblStatTip // LblStatTip
// //
resources.ApplyResources(this.LblStatTip, "LblStatTip");
this.LblStatTip.AutoEllipsis = true; this.LblStatTip.AutoEllipsis = true;
this.LblStatTip.ForeColor = System.Drawing.SystemColors.GrayText; this.LblStatTip.ForeColor = System.Drawing.SystemColors.GrayText;
resources.ApplyResources(this.LblStatTip, "LblStatTip");
this.LblStatTip.Name = "LblStatTip"; this.LblStatTip.Name = "LblStatTip";
// //
// LblStatPercent // LblStatPercent
@ -1189,9 +1190,9 @@ namespace GrasscutterTools.Forms
// //
// CmbStat // CmbStat
// //
resources.ApplyResources(this.CmbStat, "CmbStat");
this.CmbStat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CmbStat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbStat.FormattingEnabled = true; this.CmbStat.FormattingEnabled = true;
resources.ApplyResources(this.CmbStat, "CmbStat");
this.CmbStat.Name = "CmbStat"; this.CmbStat.Name = "CmbStat";
this.CmbStat.SelectedIndexChanged += new System.EventHandler(this.SetStatsInputChanged); this.CmbStat.SelectedIndexChanged += new System.EventHandler(this.SetStatsInputChanged);
// //
@ -1251,7 +1252,6 @@ namespace GrasscutterTools.Forms
// //
// TPAvatar // TPAvatar
// //
resources.ApplyResources(this.TPAvatar, "TPAvatar");
this.TPAvatar.Controls.Add(this.BtnGiveAllChar); this.TPAvatar.Controls.Add(this.BtnGiveAllChar);
this.TPAvatar.Controls.Add(this.LblConstellationTip); this.TPAvatar.Controls.Add(this.LblConstellationTip);
this.TPAvatar.Controls.Add(this.LblAvatarConstellation); this.TPAvatar.Controls.Add(this.LblAvatarConstellation);
@ -1261,6 +1261,7 @@ namespace GrasscutterTools.Forms
this.TPAvatar.Controls.Add(this.LblAvatarLevel); this.TPAvatar.Controls.Add(this.LblAvatarLevel);
this.TPAvatar.Controls.Add(this.NUDAvatarLevel); this.TPAvatar.Controls.Add(this.NUDAvatarLevel);
this.TPAvatar.Controls.Add(this.CmbAvatar); this.TPAvatar.Controls.Add(this.CmbAvatar);
resources.ApplyResources(this.TPAvatar, "TPAvatar");
this.TPAvatar.Name = "TPAvatar"; this.TPAvatar.Name = "TPAvatar";
this.TPAvatar.UseVisualStyleBackColor = true; this.TPAvatar.UseVisualStyleBackColor = true;
// //
@ -1346,7 +1347,6 @@ namespace GrasscutterTools.Forms
// //
// TPSpawn // TPSpawn
// //
resources.ApplyResources(this.TPSpawn, "TPSpawn");
this.TPSpawn.Controls.Add(this.LblClearSpawnLogs); this.TPSpawn.Controls.Add(this.LblClearSpawnLogs);
this.TPSpawn.Controls.Add(this.BtnSaveSpawnLog); this.TPSpawn.Controls.Add(this.BtnSaveSpawnLog);
this.TPSpawn.Controls.Add(this.BtnRemoveSpawnLog); this.TPSpawn.Controls.Add(this.BtnRemoveSpawnLog);
@ -1359,6 +1359,7 @@ namespace GrasscutterTools.Forms
this.TPSpawn.Controls.Add(this.NUDEntityLevel); this.TPSpawn.Controls.Add(this.NUDEntityLevel);
this.TPSpawn.Controls.Add(this.TxtEntityFilter); this.TPSpawn.Controls.Add(this.TxtEntityFilter);
this.TPSpawn.Controls.Add(this.ListEntity); this.TPSpawn.Controls.Add(this.ListEntity);
resources.ApplyResources(this.TPSpawn, "TPSpawn");
this.TPSpawn.Name = "TPSpawn"; this.TPSpawn.Name = "TPSpawn";
this.TPSpawn.UseVisualStyleBackColor = true; this.TPSpawn.UseVisualStyleBackColor = true;
// //
@ -1499,13 +1500,13 @@ namespace GrasscutterTools.Forms
// //
// TPQuest // TPQuest
// //
resources.ApplyResources(this.TPQuest, "TPQuest");
this.TPQuest.Controls.Add(this.GrpQuestFilters); this.TPQuest.Controls.Add(this.GrpQuestFilters);
this.TPQuest.Controls.Add(this.BtnFinishQuest); this.TPQuest.Controls.Add(this.BtnFinishQuest);
this.TPQuest.Controls.Add(this.BtnAddQuest); this.TPQuest.Controls.Add(this.BtnAddQuest);
this.TPQuest.Controls.Add(this.LblQuestDescription); this.TPQuest.Controls.Add(this.LblQuestDescription);
this.TPQuest.Controls.Add(this.TxtQuestFilter); this.TPQuest.Controls.Add(this.TxtQuestFilter);
this.TPQuest.Controls.Add(this.ListQuest); this.TPQuest.Controls.Add(this.ListQuest);
resources.ApplyResources(this.TPQuest, "TPQuest");
this.TPQuest.Name = "TPQuest"; this.TPQuest.Name = "TPQuest";
this.TPQuest.UseVisualStyleBackColor = true; this.TPQuest.UseVisualStyleBackColor = true;
// //
@ -1577,7 +1578,6 @@ namespace GrasscutterTools.Forms
// //
// TPArtifact // TPArtifact
// //
resources.ApplyResources(this.TPArtifact, "TPArtifact");
this.TPArtifact.Controls.Add(this.LblArtifactLevelTip); this.TPArtifact.Controls.Add(this.LblArtifactLevelTip);
this.TPArtifact.Controls.Add(this.BtnAddSubAttr); this.TPArtifact.Controls.Add(this.BtnAddSubAttr);
this.TPArtifact.Controls.Add(this.LblArtifactName); this.TPArtifact.Controls.Add(this.LblArtifactName);
@ -1597,6 +1597,7 @@ namespace GrasscutterTools.Forms
this.TPArtifact.Controls.Add(this.NUDArtifactLevel); this.TPArtifact.Controls.Add(this.NUDArtifactLevel);
this.TPArtifact.Controls.Add(this.LblArtifactStars); this.TPArtifact.Controls.Add(this.LblArtifactStars);
this.TPArtifact.Controls.Add(this.NUDArtifactStars); this.TPArtifact.Controls.Add(this.NUDArtifactStars);
resources.ApplyResources(this.TPArtifact, "TPArtifact");
this.TPArtifact.Name = "TPArtifact"; this.TPArtifact.Name = "TPArtifact";
this.TPArtifact.UseVisualStyleBackColor = true; this.TPArtifact.UseVisualStyleBackColor = true;
// //
@ -1762,7 +1763,6 @@ namespace GrasscutterTools.Forms
// //
// TPCustom // TPCustom
// //
resources.ApplyResources(this.TPCustom, "TPCustom");
this.TPCustom.Controls.Add(this.BtnExportCustomCommands); this.TPCustom.Controls.Add(this.BtnExportCustomCommands);
this.TPCustom.Controls.Add(this.BtnLoadCustomCommands); this.TPCustom.Controls.Add(this.BtnLoadCustomCommands);
this.TPCustom.Controls.Add(this.LblCustomName); this.TPCustom.Controls.Add(this.LblCustomName);
@ -1770,6 +1770,7 @@ namespace GrasscutterTools.Forms
this.TPCustom.Controls.Add(this.BtnRemoveCustomCommand); this.TPCustom.Controls.Add(this.BtnRemoveCustomCommand);
this.TPCustom.Controls.Add(this.BtnSaveCustomCommand); this.TPCustom.Controls.Add(this.BtnSaveCustomCommand);
this.TPCustom.Controls.Add(this.TxtCustomName); this.TPCustom.Controls.Add(this.TxtCustomName);
resources.ApplyResources(this.TPCustom, "TPCustom");
this.TPCustom.Name = "TPCustom"; this.TPCustom.Name = "TPCustom";
this.TPCustom.UseVisualStyleBackColor = true; this.TPCustom.UseVisualStyleBackColor = true;
// //
@ -1833,12 +1834,12 @@ namespace GrasscutterTools.Forms
// //
// TPHome // TPHome
// //
resources.ApplyResources(this.TPHome, "TPHome");
this.TPHome.Controls.Add(this.LblAbout); this.TPHome.Controls.Add(this.LblAbout);
this.TPHome.Controls.Add(this.BtnOpenTextMap); this.TPHome.Controls.Add(this.BtnOpenTextMap);
this.TPHome.Controls.Add(this.BtnOpenGachaBannerEditor); this.TPHome.Controls.Add(this.BtnOpenGachaBannerEditor);
this.TPHome.Controls.Add(this.GrasscutterToolsIcon); this.TPHome.Controls.Add(this.GrasscutterToolsIcon);
this.TPHome.Controls.Add(this.GrpSettings); this.TPHome.Controls.Add(this.GrpSettings);
resources.ApplyResources(this.TPHome, "TPHome");
this.TPHome.Name = "TPHome"; this.TPHome.Name = "TPHome";
this.TPHome.UseVisualStyleBackColor = true; this.TPHome.UseVisualStyleBackColor = true;
// //
@ -1897,9 +1898,9 @@ namespace GrasscutterTools.Forms
// //
// CmbLanguage // CmbLanguage
// //
resources.ApplyResources(this.CmbLanguage, "CmbLanguage");
this.CmbLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CmbLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CmbLanguage.FormattingEnabled = true; this.CmbLanguage.FormattingEnabled = true;
resources.ApplyResources(this.CmbLanguage, "CmbLanguage");
this.CmbLanguage.Name = "CmbLanguage"; this.CmbLanguage.Name = "CmbLanguage";
this.CmbLanguage.SelectedIndexChanged += new System.EventHandler(this.CmbLanguage_SelectedIndexChanged); this.CmbLanguage.SelectedIndexChanged += new System.EventHandler(this.CmbLanguage_SelectedIndexChanged);
// //
@ -1953,6 +1954,14 @@ namespace GrasscutterTools.Forms
this.TCMain.Name = "TCMain"; this.TCMain.Name = "TCMain";
this.TCMain.SelectedIndex = 0; this.TCMain.SelectedIndex = 0;
// //
// TxtBanReason
//
this.TxtBanReason.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
resources.ApplyResources(this.TxtBanReason, "TxtBanReason");
this.TxtBanReason.Maximum = 0F;
this.TxtBanReason.Minimum = 0F;
this.TxtBanReason.Name = "TxtBanReason";
//
// FormMain // FormMain
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
@ -2244,5 +2253,6 @@ namespace GrasscutterTools.Forms
private System.Windows.Forms.Label LblConstellationTip; private System.Windows.Forms.Label LblConstellationTip;
private System.Windows.Forms.Button BtnGiveAllChar; private System.Windows.Forms.Button BtnGiveAllChar;
private System.Windows.Forms.Label LblHostTip; private System.Windows.Forms.Label LblHostTip;
private System.Windows.Forms.Button ButtonOpenGOODImport;
} }
} }

View File

@ -21,15 +21,18 @@ using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Security;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using System.Text.Json;
using GrasscutterTools.DispatchServer; using GrasscutterTools.DispatchServer;
using GrasscutterTools.Game; using GrasscutterTools.Game;
using GrasscutterTools.OpenCommand; using GrasscutterTools.OpenCommand;
using GrasscutterTools.Properties; using GrasscutterTools.Properties;
using GrasscutterTools.Utils;
namespace GrasscutterTools.Forms namespace GrasscutterTools.Forms
{ {
@ -202,6 +205,127 @@ namespace GrasscutterTools.Forms
TextMapBrowser.TopMost = false; TextMapBrowser.TopMost = false;
} }
} }
async private void ButtonOpenGOODImport_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
DialogResult dr = MessageBox.Show(Resources.GOODImportText + openFileDialog1.FileName + "?",
Resources.GOODImportTitle, MessageBoxButtons.YesNo);
switch (dr)
{
case DialogResult.Yes:
break;
case DialogResult.No:
return;
}
var sr = new StreamReader(openFileDialog1.FileName);
var commands_list = new List<String>();
var doc = JsonDocument.Parse(sr.ReadToEnd());
JsonElement characters = doc.RootElement.GetProperty("characters");
foreach (JsonElement character in characters.EnumerateArray())
{
var character_name = character.GetProperty("key").GetString();
var character_level = character.GetProperty("level").GetInt32().ToString();
var character_constellation = character.GetProperty("constellation").GetInt32().ToString();
if (character_name != "Traveler")
{
var character_id = GameData.GOODAvatars[character_name]; // TODO: build separate GOOD-compatible database
commands_list.Add("/give " + character_id + " lv" + character_level + "c" + character_constellation);
// TODO: Implement command to set talent level when giving character in Grasscutter
}
}
JsonElement weapons = doc.RootElement.GetProperty("weapons");
foreach (JsonElement weapon in weapons.EnumerateArray())
{
var weapon_name = weapon.GetProperty("key").GetString();
var weapon_level = weapon.GetProperty("level").GetInt32().ToString();
var weapon_refinement = weapon.GetProperty("refinement").GetInt32().ToString();
var weapon_id = GameData.GOODWeapons[weapon_name];
commands_list.Add("/give " + weapon_id + " lv" + weapon_level + "r" + weapon_refinement);
// TODO: Implement command to give weapon directly to character in Grasscutter
}
JsonElement artifacts = doc.RootElement.GetProperty("artifacts");
foreach (JsonElement artifact in artifacts.EnumerateArray())
{
var artifact_set = artifact.GetProperty("setKey").GetString();
var artifact_slot = artifact.GetProperty("slotKey").GetString();
var artifact_rarity = artifact.GetProperty("rarity").GetInt32();
var artifact_level = artifact.GetProperty("level").GetInt32().ToString();
var artifact_mainStat = artifact.GetProperty("mainStatKey").GetString();
var artifact_slot_map = new Dictionary<string, string> {
{"goblet", "1"}, {"plume", "2"}, {"circlet", "3"}, {"flower", "4"}, {"sands", "5"}
};
// Format: set rarity slot
var artifact_id = GameData.GOODArtifactCats[artifact_set].ToString() + artifact_rarity.ToString() + artifact_slot_map[artifact_slot] + "4";
var artifact_mainStat_id = GameData.GOODArtifactMainAttribution[artifact_mainStat];
var artifact_substats = "";
var artifact_substat_prefix = artifact_rarity + "0";
int substat_count = 0;
foreach (JsonElement substat in artifact.GetProperty("substats").EnumerateArray())
{
var substat_value = substat.GetProperty("value").GetDouble();
if (substat_value == 0)
continue;
substat_count++;
var substat_key = substat.GetProperty("key").GetString();
var substat_key_id = GameData.GOODArtifactSubAttribution[substat_key];
var substat_indices = ArtifactUtils.SplitSubstats(substat_key, artifact_rarity, substat_value);
foreach(int index in substat_indices)
{
artifact_substats += artifact_substat_prefix + substat_key_id + index.ToString() + " ";
}
}
// HACK: Add def+2 substat to counteract Grasscutter automatically adding another substat
if (substat_count == 4)
{
artifact_substats += "101081 ";
}
commands_list.Add("/give " + artifact_id + " lv" + artifact_level + " " + artifact_mainStat_id + " " + artifact_substats);
// TODO: Implement command to give artifact directly to character in Grasscutter
}
ExpandCommandRunLog();
foreach (string command in commands_list)
{
TxtCommandRunLog.AppendText(">");
TxtCommandRunLog.AppendText(command);
TxtCommandRunLog.AppendText(Environment.NewLine);
try
{
var msg = await OC.Invoke(command.Substring(1));
TxtCommandRunLog.AppendText(string.IsNullOrEmpty(msg) ? "OK" : msg);
TxtCommandRunLog.AppendText(Environment.NewLine);
}
catch (Exception ex)
{
TxtCommandRunLog.AppendText("Error: ");
TxtCommandRunLog.AppendText(ex.Message);
TxtCommandRunLog.AppendText(Environment.NewLine);
MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
break;
}
TxtCommandRunLog.ScrollToCaret();
}
MessageBox.Show(Resources.GOODImportSuccess);
}
catch (SecurityException ex)
{
MessageBox.Show($"Security error.\n\nError message: {ex.Message}\n\n" +
$"Details:\n\n{ex.StackTrace}");
}
}
}
private void CmbLanguage_SelectedIndexChanged(object sender, EventArgs e) private void CmbLanguage_SelectedIndexChanged(object sender, EventArgs e)
{ {
@ -1332,6 +1456,7 @@ namespace GrasscutterTools.Forms
GrpRemoteCommand.Enabled = false; GrpRemoteCommand.Enabled = false;
BtnInvokeOpenCommand.Focus(); BtnInvokeOpenCommand.Focus();
ShowTip(Resources.ConnectedTip, BtnInvokeOpenCommand); ShowTip(Resources.ConnectedTip, BtnInvokeOpenCommand);
ButtonOpenGOODImport.Enabled = true;
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -1412,6 +1537,5 @@ namespace GrasscutterTools.Forms
} }
#endregion - - #endregion - -
} }
} }

View File

@ -856,4 +856,7 @@ Therefore, the quest can be added and finished, but not necessarily work.</value
<data name="ChkIncludeUID.Text" xml:space="preserve"> <data name="ChkIncludeUID.Text" xml:space="preserve">
<value>Include UID</value> <value>Include UID</value>
</data> </data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>Import GOOD</value>
</data>
</root> </root>

File diff suppressed because it is too large Load Diff

View File

@ -218,7 +218,7 @@
<value>Подключить</value> <value>Подключить</value>
</data> </data>
<data name="LblConsoleTip.Font" type="System.Drawing.Font, System.Drawing"> <data name="LblConsoleTip.Font" type="System.Drawing.Font, System.Drawing">
<value>微软雅黑, 8pt, style=Italic</value> <value>Microsoft YaHei, 8pt, style=Italic</value>
</data> </data>
<data name="LblConsoleTip.Location" type="System.Drawing.Point, System.Drawing"> <data name="LblConsoleTip.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 34</value> <value>15, 34</value>
@ -397,7 +397,7 @@
<value>False</value> <value>False</value>
</data> </data>
<data name="LblTp.Font" type="System.Drawing.Font, System.Drawing"> <data name="LblTp.Font" type="System.Drawing.Font, System.Drawing">
<value>微软雅黑, 8pt</value> <value>Microsoft YaHei, 8pt</value>
</data> </data>
<data name="LblTp.Location" type="System.Drawing.Point, System.Drawing"> <data name="LblTp.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 89</value> <value>6, 89</value>
@ -980,4 +980,7 @@
<data name="$this.Text" xml:space="preserve"> <data name="$this.Text" xml:space="preserve">
<value>GrasscutterTools - перевод Юрий Дворецкий</value> <value>GrasscutterTools - перевод Юрий Дворецкий</value>
</data> </data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>импорт GOOD</value>
</data>
</root> </root>

View File

@ -406,4 +406,7 @@
<data name="TPHome.Text" xml:space="preserve"> <data name="TPHome.Text" xml:space="preserve">
<value>主頁</value> <value>主頁</value>
</data> </data>
<data name="ButtonOpenGOODImport.Text" xml:space="preserve">
<value>導入GOOD檔案</value>
</data>
</root> </root>

View File

@ -39,6 +39,12 @@ namespace GrasscutterTools.Game
WeaponColors = new ItemMap(Resources.WeaponColor); WeaponColors = new ItemMap(Resources.WeaponColor);
GachaBannerPrefabs = new ItemMap(Resources.GachaBennerPrefab); GachaBannerPrefabs = new ItemMap(Resources.GachaBennerPrefab);
Quests = new ItemMap(Resources.Quest); Quests = new ItemMap(Resources.Quest);
GOODArtifactCats = new ItemMap(Resources.GOODArtifactCat);
GOODArtifactMainAttribution = new ItemMap(Resources.GOODArtifactMainAttribution);
GOODArtifactSubAttribution = new ItemMap(Resources.GOODArtifactSubAttribution);
GOODAvatars = new ItemMap(Resources.GOODAvatar);
GOODWeapons = new ItemMap(Resources.GOODWeapon);
} }
public static ItemMap Animals { get; private set; } public static ItemMap Animals { get; private set; }
@ -70,5 +76,10 @@ namespace GrasscutterTools.Game
public static ItemMap GachaBannerPrefabs { get; private set; } public static ItemMap GachaBannerPrefabs { get; private set; }
public static ItemMap Quests { get; private set; } public static ItemMap Quests { get; private set; }
public static ItemMap GOODArtifactCats { get; private set; }
public static ItemMap GOODArtifactMainAttribution { get; private set; }
public static ItemMap GOODArtifactSubAttribution { get; private set; }
public static ItemMap GOODAvatars { get; private set; }
public static ItemMap GOODWeapons { get; private set; }
} }
} }

View File

@ -26,8 +26,8 @@ namespace GrasscutterTools.Game
{ {
var lines = idNamePairs.Split('\n'); var lines = idNamePairs.Split('\n');
var capacity = lines.Length; var capacity = lines.Length;
//IdMap = new Dictionary<int, string>(capacity); IdMap = new Dictionary<int, string>(capacity);
//NameMap = new Dictionary<string, int>(capacity); NameMap = new Dictionary<string, int>(capacity);
var IdList = new List<int>(capacity); var IdList = new List<int>(capacity);
var NameList = new List<string>(capacity); var NameList = new List<string>(capacity);
var lineList = new List<string>(capacity); var lineList = new List<string>(capacity);
@ -40,8 +40,8 @@ namespace GrasscutterTools.Game
var name = line.Substring(si + 1).Trim(); var name = line.Substring(si + 1).Trim();
if (!string.IsNullOrEmpty(name)) if (!string.IsNullOrEmpty(name))
{ {
//IdMap[id] = name; IdMap[id] = name;
//NameMap[name] = id; NameMap[name.Replace(" ", "").Replace("'", "").Replace("\"", "")] = id;
IdList.Add(id); IdList.Add(id);
NameList.Add(name); NameList.Add(name);
lineList.Add(line); lineList.Add(line);
@ -54,16 +54,16 @@ namespace GrasscutterTools.Game
Lines = lineList.ToArray(); Lines = lineList.ToArray();
} }
//Dictionary<int, string> IdMap; Dictionary<int, string> IdMap;
//Dictionary<string, int> NameMap; Dictionary<string, int> NameMap;
//List<int> IdList; //List<int> IdList;
//List<string> NameList; //List<string> NameList;
public int Count => Ids.Length; public int Count => Ids.Length;
//public string this[int id] => IdMap[id]; public string this[int id] => IdMap[id];
//public int this[string name] => NameMap[name]; public int this[string name] => NameMap[name];
public int[] Ids { get; } public int[] Ids { get; }

View File

@ -63,6 +63,7 @@
<Private>True</Private> <Private>True</Private>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" />
<Reference Include="System.ComponentModel.Composition" /> <Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath> <HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath>
@ -119,6 +120,7 @@
<Private>True</Private> <Private>True</Private>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" />
<Reference Include="System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <Reference Include="System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll</HintPath> <HintPath>..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private> <Private>True</Private>
@ -175,6 +177,7 @@
<Private>True</Private> <Private>True</Private>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="System.Text.Json, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" />
<Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll</HintPath> <HintPath>..\packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll</HintPath>
<Private>True</Private> <Private>True</Private>
@ -243,6 +246,7 @@
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
</Compile> </Compile>
<Compile Include="Utils\ArtifactUtils.cs" />
<Compile Include="Utils\HttpHelper.cs" /> <Compile Include="Utils\HttpHelper.cs" />
<EmbeddedResource Include="Forms\FormGachaBannerEditor2.en-us.resx"> <EmbeddedResource Include="Forms\FormGachaBannerEditor2.en-us.resx">
<DependentUpon>FormGachaBannerEditor2.cs</DependentUpon> <DependentUpon>FormGachaBannerEditor2.cs</DependentUpon>
@ -349,6 +353,12 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="FodyWeavers.xml" /> <Content Include="FodyWeavers.xml" />
<Content Include="Resources\GOODArtifactCat.txt" />
<Content Include="Resources\GOODArtifactMainAttribution.txt" />
<Content Include="Resources\GOODArtifactSubAttribution - Copy.txt" />
<Content Include="Resources\GOODArtifactSubAttribution.txt" />
<Content Include="Resources\GOODAvatar.txt" />
<Content Include="Resources\GOODWeapon.txt" />
<Content Include="Resources\en-us\Animal.txt" /> <Content Include="Resources\en-us\Animal.txt" />
<Content Include="Resources\en-us\Artifact.txt" /> <Content Include="Resources\en-us\Artifact.txt" />
<Content Include="Resources\en-us\ArtifactCat.txt" /> <Content Include="Resources\en-us\ArtifactCat.txt" />

View File

@ -1,10 +1,10 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// 此代码由工具生成。 // This code was generated by a tool.
// 运行时版本:4.0.30319.42000 // Runtime Version:4.0.30319.42000
// //
// 对此文件的更改可能会导致不正确的行为,并且如果 // Changes to this file may cause incorrect behavior and will be lost if
// 重新生成代码,这些更改将会丢失。 // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -13,13 +13,13 @@ namespace GrasscutterTools.Properties {
/// <summary> /// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。 /// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary> /// </summary>
// 此类是由 StronglyTypedResourceBuilder // This class was auto-generated by the StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 // class via a tool like ResGen or Visual Studio.
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen // To add or remove a member, edit your .ResX file then rerun ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。 // with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources { internal class Resources {
@ -33,7 +33,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 返回此类使用的缓存的 ResourceManager 实例。 /// Returns the cached ResourceManager instance used by this class.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager { internal static global::System.Resources.ResourceManager ResourceManager {
@ -47,8 +47,8 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 重写当前线程的 CurrentUICulture 属性,对 /// Overrides the current thread's CurrentUICulture property for all
/// 使用此强类型资源类的所有资源查找执行重写。 /// resource lookups using this strongly typed resource class.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture { internal static global::System.Globalization.CultureInfo Culture {
@ -61,31 +61,12 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 28010101: 黄金蟹 /// Looks up a localized string similar to 28010101: 黄金蟹
///28010102: 太阳蟹 ///28010102: 太阳蟹
///28010103: 海蓝蟹 ///28010103: 海蓝蟹
///28010104: 将军蟹 ///28010104: 将军蟹
///28010105: 薄红蟹 ///28010105: 薄红蟹
///28010106: 螃蟹 ///28010106: 螃蟹
///28020101: 雪狐
///28020102: 红狐
///28020103: 送礼雪狐
///28020104: 送大礼雪狐
///28020105: 雪狐
///28020106: 红狐
///28020201: 松鼠
///28030101: 蓝翎鹭
///28030102: 菫鹮
///28030201: 茶羽鹰
///28030202: 棕翎鹰
///28030203: 石鸢
///28030204: 白练鹰
///28050101: 风晶蝶
///28050102: 岩晶蝶
///28050103: 冰晶蝶
///28050104: 雷晶蝶
///28050105: 珊瑚蝶
///28050301: 吉光虫
///28010201: 蓝角蜥 ///28010201: 蓝角蜥
///28010202: 红角蜥 ///28010202: 红角蜥
///28010203: 绿角蜥 ///28010203: 绿角蜥
@ -95,7 +76,25 @@ namespace GrasscutterTools.Properties {
///28010207: 嗜髓蜥 ///28010207: 嗜髓蜥
///28010301: 青蛙 ///28010301: 青蛙
///28010302: 泥蛙 ///28010302: 泥蛙
///2801030 [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///28010303: 蓝蛙
///28010401: 藤纹陆鳗鳗
///28010402: 深海鳗鳗
///28010403: 赤鳍陆鳗鳗
///28020101: 雪狐
///28020102: 红狐
///28020103: 送礼雪狐
///28020104: 送大礼雪狐
///28020105: 雪狐
///28020106: 红狐
///28020201: 松鼠
///28020301: 野林猪
///28020302: 小野林猪
///28020303: 雪猪
///28020304: 「大雪猪王」
///28020305: 冰冻雪猪
///28020306: 雪猪
///28020307: 野林猪
///28020308: 冰冻雪 [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string Animal { internal static string Animal {
get { get {
@ -104,7 +103,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 51110: 异国之盏 /// Looks up a localized string similar to 51110: 异国之盏
///51111: 异国之盏 ///51111: 异国之盏
///51112: 异国之盏 ///51112: 异国之盏
///51113: 异国之盏 ///51113: 异国之盏
@ -143,7 +142,7 @@ namespace GrasscutterTools.Properties {
///51231: 感别之冠 ///51231: 感别之冠
///51232: 感别之冠 ///51232: 感别之冠
///51233: 感别之冠 ///51233: 感别之冠
///51234 [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///51234 [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string Artifact { internal static string Artifact {
get { get {
@ -152,7 +151,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 51: 行者之心 /// Looks up a localized string similar to 51: 行者之心
///52: 勇士之心 ///52: 勇士之心
///53: 守护之心 ///53: 守护之心
///54: 奇迹 ///54: 奇迹
@ -193,7 +192,7 @@ namespace GrasscutterTools.Properties {
///96: 海染砗磲 ///96: 海染砗磲
///97: 辰砂往生录 ///97: 辰砂往生录
///98: 来歆余响 ///98: 来歆余响
///99: 高天的风之主 的本地化字符串。 ///99: 高天的风之主.
/// </summary> /// </summary>
internal static string ArtifactCat { internal static string ArtifactCat {
get { get {
@ -202,7 +201,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 10001: 生命值 /// Looks up a localized string similar to 10001: 生命值
///10002: 生命值百分比 ///10002: 生命值百分比
///10003: 攻击力 ///10003: 攻击力
///10004: 攻击力百分比 ///10004: 攻击力百分比
@ -239,7 +238,7 @@ namespace GrasscutterTools.Properties {
///15008: 火元素伤害加成 ///15008: 火元素伤害加成
///15009: 雷元素伤害加成 ///15009: 雷元素伤害加成
///15010: 冰元素伤害加成 ///15010: 冰元素伤害加成
///15011: [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///15011: [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ArtifactMainAttribution { internal static string ArtifactMainAttribution {
get { get {
@ -248,7 +247,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 空之杯,死之羽,理之冠,生之花,时之沙 的本地化字符串。 /// Looks up a localized string similar to 空之杯,死之羽,理之冠,生之花,时之沙.
/// </summary> /// </summary>
internal static string ArtifactPartLabels { internal static string ArtifactPartLabels {
get { get {
@ -257,7 +256,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 101021: 生命值+24 /// Looks up a localized string similar to 101021: 生命值+24
///101022: 生命值+30 ///101022: 生命值+30
///201021: 生命值+50 ///201021: 生命值+50
///201022: 生命值+61 ///201022: 生命值+61
@ -284,7 +283,7 @@ namespace GrasscutterTools.Properties {
///301033: 生命值百分比+3.2% ///301033: 生命值百分比+3.2%
///301034: 生命值百分比+3.5% ///301034: 生命值百分比+3.5%
///401031: 生命值百分比+3.3% ///401031: 生命值百分比+3.3%
///401032: 生命值百分比+3.7 [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///401032: 生命值百分比+3.7 [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ArtifactSubAttribution { internal static string ArtifactSubAttribution {
get { get {
@ -293,7 +292,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 确认删除? 的本地化字符串。 /// Looks up a localized string similar to 确认删除?.
/// </summary> /// </summary>
internal static string AskConfirmDeletion { internal static string AskConfirmDeletion {
get { get {
@ -302,40 +301,55 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 10000001 : 凯特 /// Looks up a localized string similar to 1002: 神里绫华
///10000002 : 神里绫华 ///1003: 琴
///10000003 : 琴 ///1005: 空
///10000005 : 旅行者 ///1006: 丽莎
///10000006 : 丽莎 ///1007: 荧
///10000007 : 旅行者 ///1014: 芭芭拉
///10000014 : 芭芭拉 ///1015: 凯亚
///10000015 : 凯亚 ///1016: 迪卢克
///10000016 : 迪卢克 ///1020: 雷泽
///10000020 : 雷泽 ///1021: 安柏
///10000021 : 安柏 ///1022: 温迪
///10000022 : 温迪 ///1023: 香菱
///10000023 : 香菱 ///1024: 北斗
///10000024 : 北斗 ///1025: 行秋
///10000025 : 行秋 ///1026: 魈
///10000026 : 魈 ///1027: 凝光
///10000027 : 凝光 ///1029: 可莉
///10000029 : 可莉 ///1030: 钟离
///10000030 : 钟离 ///1031: 菲谢尔
///10000031 : 菲谢尔 ///1032: 班尼特
///10000032 : 班尼特 ///1033: 达达利亚
///10000033 : 达达利亚 ///1034: 诺艾尔
///10000034 : 诺艾尔 ///1035: 七七
///10000035 : 七七 ///1036: 重云
///10000036 : 重云 ///1037: 甘雨
///10000037 : 甘雨 ///1038: 阿贝多
///10000038 : 阿贝多 ///1039: 迪奥娜
///10000039 : 迪奥娜 ///1041: 莫娜
///10000041 : 莫娜 ///1042: 刻晴
///10000042 : 刻晴 ///1043: 砂糖
///10000043 : 砂糖 ///1044: 辛焱
///10000044 : 辛焱 ///1045: 罗莎莉亚
///10000045 : 罗莎莉亚 ///1046: 胡桃
///1000 [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///1047: 枫原万叶
///1048: 烟绯
///1049: 宵宫
///1050: 托马
///1051: 优菈
///1052: 雷电将军
///1053: 早柚
///1054: 珊瑚宫心海
///1055: 五郎
///1056: 九条裟罗
///1057: 荒泷一斗
///1058: 八重神子
///1060: 夜兰
///1062: 埃洛伊
///1063: 申鹤
///1064: 云堇 /// [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string Avatar { internal static string Avatar {
get { get {
@ -344,7 +358,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 1001:purple /// Looks up a localized string similar to 1001:purple
///1002:yellow ///1002:yellow
///1003:yellow ///1003:yellow
///1005:yellow ///1005:yellow
@ -383,7 +397,7 @@ namespace GrasscutterTools.Properties {
///1049:yellow ///1049:yellow
///1050:purple ///1050:purple
///1051:yellow ///1051:yellow
///1052: [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///1052: [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string AvatarColor { internal static string AvatarColor {
get { get {
@ -392,7 +406,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找 System.Byte[] 类型的本地化资源。 /// Looks up a localized resource of type System.Byte[].
/// </summary> /// </summary>
internal static byte[] AvatarStats { internal static byte[] AvatarStats {
get { get {
@ -402,7 +416,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 浏览器打开失败,你可以通过以下链接手动访问: 的本地化字符串。 /// Looks up a localized string similar to 浏览器打开失败,你可以通过以下链接手动访问:.
/// </summary> /// </summary>
internal static string BrowserOpenFailedTip { internal static string BrowserOpenFailedTip {
get { get {
@ -411,7 +425,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 检查到新版本 的本地化字符串。 /// Looks up a localized string similar to 检查到新版本.
/// </summary> /// </summary>
internal static string CheckToNewVersion { internal static string CheckToNewVersion {
get { get {
@ -420,7 +434,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 无,晴天,多云,雨天,雷暴,雪天,雾天 的本地化字符串。 /// Looks up a localized string similar to 无,晴天,多云,雨天,雷暴,雪天,雾天.
/// </summary> /// </summary>
internal static string ClimateType { internal static string ClimateType {
get { get {
@ -429,7 +443,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 {0} 秒后可重发 的本地化字符串。 /// Looks up a localized string similar to {0} 秒后可重发.
/// </summary> /// </summary>
internal static string CodeResendTip { internal static string CodeResendTip {
get { get {
@ -438,7 +452,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 发送中... 的本地化字符串。 /// Looks up a localized string similar to 发送中....
/// </summary> /// </summary>
internal static string CodeSending { internal static string CodeSending {
get { get {
@ -447,7 +461,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 命令内容不能为空 的本地化字符串。 /// Looks up a localized string similar to 命令内容不能为空.
/// </summary> /// </summary>
internal static string CommandContentCannotBeEmpty { internal static string CommandContentCannotBeEmpty {
get { get {
@ -456,7 +470,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 未找到该命令 的本地化字符串。 /// Looks up a localized string similar to 未找到该命令.
/// </summary> /// </summary>
internal static string CommandNotFound { internal static string CommandNotFound {
get { get {
@ -465,7 +479,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 命令标签不能为空 的本地化字符串。 /// Looks up a localized string similar to 命令标签不能为空.
/// </summary> /// </summary>
internal static string CommandTagCannotBeEmpty { internal static string CommandTagCannotBeEmpty {
get { get {
@ -474,7 +488,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 现在你可以远程执行命令了哦! 的本地化字符串。 /// Looks up a localized string similar to 现在你可以远程执行命令了哦!.
/// </summary> /// </summary>
internal static string ConnectedTip { internal static string ConnectedTip {
get { get {
@ -483,22 +497,24 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 无敌 /// Looks up a localized string similar to 无敌
////prop godmode on ////prop god on
///无限体力 ///无限体力
////prop nostamina on ////prop ns on
///无限能量 ///无限能量
////prop unlimitedenergy on ////prop ue on
///升到60级 ///升到60级
////give 102 x1880200 ////give 102 x1880200
///设置世界等级 ///设置世界等级
////prop worldlevel 8 ////prop wl 8
///一键解锁深渊 ///一键解锁深渊
////prop abyss 12 ////prop ut 12
///设置纪行等级
////prop bp 50
///设置好感等级 ///设置好感等级
////setfetterlevel 10 ////setfetterlevel 10
///奶 ///奶
////heal ////h
///自杀 ///自杀
////kill 0 ////kill 0
///全队充能 ///全队充能
@ -524,11 +540,11 @@ namespace GrasscutterTools.Properties {
///清空全部角色命之座(需重登) ///清空全部角色命之座(需重登)
////resetconst all ////resetconst all
///清空背包 ///清空背包
////clear all ////clear all lv90 r5 5*
///清空武器 ///清空武器
////clear wp ////clear wp lv90 r5 5*
///清空圣遗物 ///清空圣遗物
////clea [字符串的其余部分被截断]&quot;; 的本地化字符串。 /// [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string CustomCommands { internal static string CustomCommands {
get { get {
@ -537,7 +553,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 错误 的本地化字符串。 /// Looks up a localized string similar to 错误.
/// </summary> /// </summary>
internal static string Error { internal static string Error {
get { get {
@ -546,7 +562,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 007: 初行者推荐祈愿 /// Looks up a localized string similar to 007: 初行者推荐祈愿
///008: 奔行世间 ///008: 奔行世间
///009: 杯装之诗 ///009: 杯装之诗
///010: 黎明巡礼 ///010: 黎明巡礼
@ -580,7 +596,9 @@ namespace GrasscutterTools.Properties {
///061: 鬼门斗宴 ///061: 鬼门斗宴
///065: 出尘入世 ///065: 出尘入世
///071: 华紫樱绯 ///071: 华紫樱绯
///076: 苍流踏花 的本地化字符串。 ///076: 苍流踏花
///081: 素霓伣天
///.
/// </summary> /// </summary>
internal static string GachaBennerPrefab { internal static string GachaBennerPrefab {
get { get {
@ -589,7 +607,190 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 帮助 的本地化字符串。 /// Looks up a localized string similar to 51: ResolutionOfSojourner
///52: BraveHeart
///53: DefendersWill
///54: TinyMiracle
///55: Berserker
///56: MartialArtist
///57: Instructor
///58: Gambler
///59: TheExile
///60: Adventurer
///61: LuckyDog
///62: Scholar
///63: TravelingDoctor
///71: BlizzardStrayer
///72: Thundersoother
///73: Lavawalker
///74: MaidenBeloved
///75: GladiatorsFinale
///76: ViridescentVenerer
///77: WanderersTroupe
///78: GlacierAndSnowfield
///79: ThunderingFury
///80: CrimsonWitchOfFlames
///81: NoblesseOblige
///82: BloodstainedChivalry
///83: PrayersForIllumination
///84: [rest of string was truncated]&quot;;.
/// </summary>
internal static string GOODArtifactCat {
get {
return ResourceManager.GetString("GOODArtifactCat", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 10001: hp
///10002: hp_
///10003: atk
///10004: atk_
///10005: def
///10006: def_
///10007: enerRech_
///10008: eleMas
///13007: critRate_
///13008: critDMG_
///13009: heal_
///15008: pyro_dmg_
///15009: electro_dmg_
///15010: cryo_dmg_
///15011: hydro_dmg_
///15012: anemo_dmg_
///15013: geo_dmg_
///15014: dendro_dmg_
///15015: physical_dmg_
///.
/// </summary>
internal static string GOODArtifactMainAttribution {
get {
return ResourceManager.GetString("GOODArtifactMainAttribution", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 102: hp
///103: hp_
///105: atk
///106: atk_
///108: def
///109: def_
///120: critRate_
///122: critDMG_
///123: enerRech_
///124: eleMas.
/// </summary>
internal static string GOODArtifactSubAttribution {
get {
return ResourceManager.GetString("GOODArtifactSubAttribution", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 1002: KamisatoAyaka
///1003: Jean
///1005: Aether
///1006: Lisa
///1007: Lumine
///1014: Barbara
///1015: Kaeya
///1016: Diluc
///1020: Razor
///1021: Amber
///1022: Venti
///1023: Xiangling
///1024: Beidou
///1025: Xingqiu
///1026: Xiao
///1027: Ningguang
///1029: Klee
///1030: Zhongli
///1031: Fischl
///1032: Bennett
///1033: Tartaglia
///1034: Noelle
///1035: Qiqi
///1036: Chongyun
///1037: Ganyu
///1038: Albedo
///1039: Diona
///1041: Mona
///1042: Keqing
///1043: Sucrose
///1044: Xinyan
///1045: Rosaria
///1046: Hu Tao
///1047: KaedeharaKazuha
///1048: Yanfei
///1049: Yo [rest of string was truncated]&quot;;.
/// </summary>
internal static string GOODAvatar {
get {
return ResourceManager.GetString("GOODAvatar", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 导入成功!.
/// </summary>
internal static string GOODImportSuccess {
get {
return ResourceManager.GetString("GOODImportSuccess", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 是否导入 .
/// </summary>
internal static string GOODImportText {
get {
return ResourceManager.GetString("GOODImportText", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 导入GOOD档案.
/// </summary>
internal static string GOODImportTitle {
get {
return ResourceManager.GetString("GOODImportTitle", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 11101: DullBlade
///11201: SilverSword
///11301: CoolSteel
///11302: HarbingerOf Dawn
///11303: TravelersHandySword
///11304: DarkIronSword
///11305: FilletBlade
///11306: SkyriderSword
///11401: FavoniusSword
///11402: TheFlute
///11403: SacrificialSword
///11404: RoyalLongsword
///11405: LionsRoar
///11406: PrototypeRancour
///11407: IronSting
///11408: BlackcliffLongsword
///11409: TheBlackSword
///11410: TheAlleyFlash
///11412: SwordOfDescension
///11413: FesteringDesire
///11414: AmenomaKageuchi
///11415: CinnabarSpindle
///11501: AquilaFavonia /// [rest of string was truncated]&quot;;.
/// </summary>
internal static string GOODWeapon {
get {
return ResourceManager.GetString("GOODWeapon", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 帮助.
/// </summary> /// </summary>
internal static string Help { internal static string Help {
get { get {
@ -598,7 +799,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。 /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
/// </summary> /// </summary>
internal static System.Drawing.Icon IconGrasscutter { internal static System.Drawing.Icon IconGrasscutter {
get { get {
@ -608,7 +809,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>
internal static System.Drawing.Bitmap ImgHome { internal static System.Drawing.Bitmap ImgHome {
get { get {
@ -618,7 +819,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>
internal static System.Drawing.Bitmap ImgIconGrasscutter { internal static System.Drawing.Bitmap ImgIconGrasscutter {
get { get {
@ -628,7 +829,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>
internal static System.Drawing.Bitmap ImgSupport { internal static System.Drawing.Bitmap ImgSupport {
get { get {
@ -638,7 +839,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 101 : 角色经验 /// Looks up a localized string similar to 101: 角色经验
///102: 冒险阅历 ///102: 冒险阅历
///103: 星尘 ///103: 星尘
///104: 星辉 ///104: 星辉
@ -680,7 +881,10 @@ namespace GrasscutterTools.Properties {
///140: 幽蕴砺石 ///140: 幽蕴砺石
///142: 战策碎珀 ///142: 战策碎珀
///201: 原石 ///201: 原石
///2 [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///202: 摩拉
///203: 创世结晶
///204: 洞天宝钱
///210: 原粹精珀(废弃 [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string Item { internal static string Item {
get { get {
@ -689,7 +893,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 21010101: 丘丘人 /// Looks up a localized string similar to 21010101: 丘丘人
///21020101: 木盾丘丘暴徒 ///21020101: 木盾丘丘暴徒
///21020201: 火斧丘丘暴徒 ///21020201: 火斧丘丘暴徒
///21020202: 火斧丘丘暴徒 ///21020202: 火斧丘丘暴徒
@ -718,7 +922,7 @@ namespace GrasscutterTools.Properties {
///29040102: 若陀龙王 ///29040102: 若陀龙王
///29040103: 若陀龙王 ///29040103: 若陀龙王
///29040104: 若陀龙王 ///29040104: 若陀龙王
///290401 [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///290401 [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string Monster { internal static string Monster {
get { get {
@ -727,12 +931,12 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 版本名:{0} /// Looks up a localized string similar to 版本名:{0}
///更新时间:{1} ///更新时间:{1}
///更新内容: ///更新内容:
///{2} ///{2}
///-------------------------------------------- ///--------------------------------------------
///是否查看更新?选择否将不再提醒该版本。 的本地化字符串。 ///是否查看更新?选择否将不再提醒该版本。.
/// </summary> /// </summary>
internal static string NewVersionInfo { internal static string NewVersionInfo {
get { get {
@ -741,7 +945,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 1: (test)蒙德城主$UNRELEASED /// Looks up a localized string similar to 1: (test)蒙德城主$UNRELEASED
///2: (test)哥哥$UNRELEASED ///2: (test)哥哥$UNRELEASED
///3: (test)妹妹$UNRELEASED ///3: (test)妹妹$UNRELEASED
///4: (test)塔主$UNRELEASED ///4: (test)塔主$UNRELEASED
@ -761,7 +965,7 @@ namespace GrasscutterTools.Properties {
///23: (test)卫兵$UNRELEASED ///23: (test)卫兵$UNRELEASED
///24: (test)卫兵$UNRELEASED ///24: (test)卫兵$UNRELEASED
///25: (test)路人$UNRELEASED ///25: (test)路人$UNRELEASED
///26: (te [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///26: (te [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string NPC { internal static string NPC {
get { get {
@ -770,7 +974,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 1. 填写正确的UID\n2. 向玩家发送验证码\n3. 输入正确的验证码\n4. 连接\n5. 享受 的本地化字符串。 /// Looks up a localized string similar to 1. 填写正确的UID\n2. 向玩家发送验证码\n3. 输入正确的验证码\n4. 连接\n5. 享受.
/// </summary> /// </summary>
internal static string OpenCommandHelp { internal static string OpenCommandHelp {
get { get {
@ -779,7 +983,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 要设置的权限不能为空! 的本地化字符串。 /// Looks up a localized string similar to 要设置的权限不能为空!.
/// </summary> /// </summary>
internal static string PermissionCannotBeEmpty { internal static string PermissionCannotBeEmpty {
get { get {
@ -788,38 +992,34 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 * /// Looks up a localized string similar to *
///player.* ///player.*
///player.** ///player.**
///server.* ///server.*
///server.** ///server.**
///player.changescene ///player.changescene
///player.clearinv ///player.clear
///player.enterdungeon ///player.enterdungeon
///player.enterdungeon.others
///player.give ///player.give
///player.giveall ///player.give.others
///player.giveart
///player.givechar
///player.godmode ///player.godmode
///player.heal ///player.heal
///player.heal.others
///player.killcharacter ///player.killcharacter
///player.killcharacter.others
///player.quest
///player.quest.others
///player.resetconstellation ///player.resetconstellation
///player.resetconstellation.others
///player.setfetterlevel ///player.setfetterlevel
///player.setfetterlevel.others
///player.setprop
///player.setprop.others
///player.setstats ///player.setstats
///player.setstats.others
///player.settalent ///player.settalent
///player.setworldlevel ///play [rest of string was truncated]&quot;;.
///player.teleport
///player.tpall
///player.weather
///server.broadcast
///server.coop
///server.drop
///server.kick
///server.killall
///server.reload
///server.resetshop
///server.sendmail
///server.sendmessage /// [字符串的其余部分被截断]&quot;; 的本地化字符串。
/// </summary> /// </summary>
internal static string Permissions { internal static string Permissions {
get { get {
@ -828,7 +1028,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 查询服务端状态失败: 的本地化字符串。 /// Looks up a localized string similar to 查询服务端状态失败:.
/// </summary> /// </summary>
internal static string QueryServerStatusFailed { internal static string QueryServerStatusFailed {
get { get {
@ -837,7 +1037,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 30302 : 女神像解锁$HIDDEN - /// Looks up a localized string similar to 30302: 女神像解锁$HIDDEN -
///30303: 女神像解锁$HIDDEN - ///30303: 女神像解锁$HIDDEN -
///30304: 女神像解锁$HIDDEN - ///30304: 女神像解锁$HIDDEN -
///30305: 女神像解锁$HIDDEN - ///30305: 女神像解锁$HIDDEN -
@ -857,7 +1057,8 @@ namespace GrasscutterTools.Properties {
///30601: 昔日的风 - 与安柏对话 ///30601: 昔日的风 - 与安柏对话
///30602: 昔日的风 - 进入庙宇 ///30602: 昔日的风 - 进入庙宇
///30603: 昔日的风 - 探索庙宇深处 ///30603: 昔日的风 - 探索庙宇深处
///30604 : 昔日的风 - 退出秘境 [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///30604: 昔日的风 - 退出秘境
///30607: 昔日的风 - (test [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string Quest { internal static string Quest {
get { get {
@ -866,7 +1067,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 请先连接到支持[OpenCommand]的服务器 的本地化字符串。 /// Looks up a localized string similar to 请先连接到支持[OpenCommand]的服务器.
/// </summary> /// </summary>
internal static string RequireOpenCommandTip { internal static string RequireOpenCommandTip {
get { get {
@ -875,7 +1076,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 确认将自定义命令恢复到默认值? 的本地化字符串。 /// Looks up a localized string similar to 确认将自定义命令恢复到默认值?.
/// </summary> /// </summary>
internal static string RestoreCustomCommands { internal static string RestoreCustomCommands {
get { get {
@ -884,7 +1085,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 1 : 提瓦特 /// Looks up a localized string similar to 1: 提瓦特
///2: 提瓦特 ///2: 提瓦特
///3: 提瓦特 ///3: 提瓦特
///4: 金苹果群岛 ///4: 金苹果群岛
@ -915,7 +1116,7 @@ namespace GrasscutterTools.Properties {
///1001: 移动平台性能测试(test) ///1001: 移动平台性能测试(test)
///50003: 战斗性能测试(test) ///50003: 战斗性能测试(test)
///50004: 电桩电源白盒(test) ///50004: 电桩电源白盒(test)
///50027: [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///50027: 圣遗物新因子测试关卡3(t [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string Scene { internal static string Scene {
get { get {
@ -924,7 +1125,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 加载设置时异常: 的本地化字符串。 /// Looks up a localized string similar to 加载设置时异常:.
/// </summary> /// </summary>
internal static string SettingLoadError { internal static string SettingLoadError {
get { get {
@ -933,7 +1134,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 保存设置时异常: 的本地化字符串。 /// Looks up a localized string similar to 保存设置时异常:.
/// </summary> /// </summary>
internal static string SettingSaveError { internal static string SettingSaveError {
get { get {
@ -942,7 +1143,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 提示 的本地化字符串。 /// Looks up a localized string similar to 提示.
/// </summary> /// </summary>
internal static string Tips { internal static string Tips {
get { get {
@ -951,7 +1152,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 Token不能为空 的本地化字符串。 /// Looks up a localized string similar to Token不能为空.
/// </summary> /// </summary>
internal static string TokenCannotBeEmpty { internal static string TokenCannotBeEmpty {
get { get {
@ -960,7 +1161,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 已从缓存中恢复Token 的本地化字符串。 /// Looks up a localized string similar to 已从缓存中恢复Token.
/// </summary> /// </summary>
internal static string TokenRestoredFromCache { internal static string TokenRestoredFromCache {
get { get {
@ -969,7 +1170,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 用户名不能为空! 的本地化字符串。 /// Looks up a localized string similar to 用户名不能为空!.
/// </summary> /// </summary>
internal static string UsernameCannotBeEmpty { internal static string UsernameCannotBeEmpty {
get { get {
@ -978,7 +1179,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 11101 : 无锋剑 /// Looks up a localized string similar to 11101: 无锋剑
///11201: 银剑 ///11201: 银剑
///11301: 冷刃 ///11301: 冷刃
///11302: 黎明神剑 ///11302: 黎明神剑
@ -1005,6 +1206,7 @@ namespace GrasscutterTools.Properties {
///11503: 苍古自由之誓 ///11503: 苍古自由之誓
///11504: 斫峰之刃 ///11504: 斫峰之刃
///11505: 磐岩结绿 ///11505: 磐岩结绿
///11507: 凭虚
///11509: 雾切之回光 ///11509: 雾切之回光
///11510: 波乱月白经津 ///11510: 波乱月白经津
///12101: 训练大剑 ///12101: 训练大剑
@ -1014,7 +1216,10 @@ namespace GrasscutterTools.Properties {
///12303: 白铁大剑 ///12303: 白铁大剑
///12304: 石英大剑 ///12304: 石英大剑
///12305: 以理服人 ///12305: 以理服人
///12306 : 飞天大御剑 /// [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///12306: 飞天大御剑
///12401: 西风大剑
///12402: 钟剑
///1 [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string Weapon { internal static string Weapon {
get { get {
@ -1023,7 +1228,7 @@ namespace GrasscutterTools.Properties {
} }
/// <summary> /// <summary>
/// 查找类似 11301:blue /// Looks up a localized string similar to 11301:blue
///11302:blue ///11302:blue
///11303:blue ///11303:blue
///11304:blue ///11304:blue
@ -1061,7 +1266,7 @@ namespace GrasscutterTools.Properties {
///12305:blue ///12305:blue
///12306:blue ///12306:blue
///12401:purple ///12401:purple
///1240 [字符串的其余部分被截断]&quot;; 的本地化字符串。 ///1240 [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string WeaponColor { internal static string WeaponColor {
get { get {

View File

@ -255,4 +255,14 @@ Do you want to check for updates? Selecting No will no longer remind you of this
<data name="WeaponColor" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="WeaponColor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\WeaponColor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> <value>..\Resources\WeaponColor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data> </data>
<data name="GOODImportText" xml:space="preserve">
<value>Do you wish to import </value>
</data>
<data name="GOODImportTitle" xml:space="preserve">
<value>Import GOOD dump file</value>
</data>
<data name="GOODImportSuccess" xml:space="preserve">
<value>Import success!</value>
</data>
</root> </root>

View File

@ -184,6 +184,9 @@
<data name="GachaBennerPrefab" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="GachaBennerPrefab" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\zh-cn\GachaBennerPrefab.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> <value>..\Resources\zh-cn\GachaBennerPrefab.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data> </data>
<data name="SettingSaveError" xml:space="preserve">
<value>保存设置时异常:</value>
</data>
<data name="Help" xml:space="preserve"> <data name="Help" xml:space="preserve">
<value>帮助</value> <value>帮助</value>
</data> </data>
@ -264,4 +267,29 @@
<data name="WeaponColor" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="WeaponColor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\WeaponColor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> <value>..\Resources\WeaponColor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data> </data>
<data name="GOODArtifactCat" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GOODArtifactCat.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="GOODArtifactMainAttribution" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GOODArtifactMainAttribution.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="GOODArtifactSubAttribution" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GOODArtifactSubAttribution.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="GOODAvatar" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GOODAvatar.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="GOODWeapon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GOODWeapon.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="GOODImportText" xml:space="preserve">
<value>是否导入 </value>
</data>
<data name="GOODImportTitle" xml:space="preserve">
<value>导入GOOD档案</value>
</data>
<data name="GOODImportSuccess" xml:space="preserve">
<value>导入成功!</value>
</data>
</root> </root>

View File

@ -252,4 +252,13 @@
<data name="WeaponColor" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="WeaponColor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\WeaponColor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> <value>..\Resources\WeaponColor.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data> </data>
<data name="GOODImportText" xml:space="preserve">
<value>是否導入 </value>
</data>
<data name="GOODImportTitle" xml:space="preserve">
<value>導入GOOD檔案</value>
</data>
<data name="GOODImportSuccess" xml:space="preserve">
<value>導入成功!</value>
</data>
</root> </root>

View File

@ -0,0 +1,42 @@
51: ResolutionOfSojourner
52: BraveHeart
53: DefendersWill
54: TinyMiracle
55: Berserker
56: MartialArtist
57: Instructor
58: Gambler
59: TheExile
60: Adventurer
61: LuckyDog
62: Scholar
63: TravelingDoctor
71: BlizzardStrayer
72: Thundersoother
73: Lavawalker
74: MaidenBeloved
75: GladiatorsFinale
76: ViridescentVenerer
77: WanderersTroupe
78: GlacierAndSnowfield
79: ThunderingFury
80: CrimsonWitchOfFlames
81: NoblesseOblige
82: BloodstainedChivalry
83: PrayersForIllumination
84: PrayersForDestiny
85: PrayersForWisdom
86: PrayersToTheFirmament
87: PrayersToSpringtime
88: ArchaicPetra
89: RetracingBolide
90: HeartOfDepth
91: TenacityOfTheMillelith
92: PaleFlame
93: ShimenawasReminiscence
94: EmblemOfSeveredFate
95: HuskOfOpulentDreams
96: OceanHuedClam
97: VermillionHereafter
98: EchoesOfAnOffering
99: LordOfTheWinds

View File

@ -0,0 +1,19 @@
10001: hp
10002: hp_
10003: atk
10004: atk_
10005: def
10006: def_
10007: enerRech_
10008: eleMas
13007: critRate_
13008: critDMG_
13009: heal_
15008: pyro_dmg_
15009: electro_dmg_
15010: cryo_dmg_
15011: hydro_dmg_
15012: anemo_dmg_
15013: geo_dmg_
15014: dendro_dmg_
15015: physical_dmg_

View File

@ -0,0 +1,170 @@
101021: HP+24
101022: HP+30
201021: HP+50
201022: HP+61
201023: HP+72
301021: HP+100
301022: HP+115
301023: HP+129
301024: HP+143
401021: HP+167
401022: HP+191
401023: HP+215
401024: HP+239
501021: HP+209
501022: HP+239
501023: HP+269
501024: HP+299
101031: hp_+1.2%
101032: hp_+1.5%
201031: hp_+1.6%
201032: hp_+2.0%
201033: hp_+2.3%
301031: hp_+2.4%
301032: hp_+2.8%
301033: hp_+3.2%
301034: hp_+3.5%
401031: hp_+3.3%
401032: hp_+3.7%
401033: hp_+4.2%
401034: hp_+4.7%
501031: hp_+4.1%
501032: hp_+4.7%
501033: hp_+5.2%
501034: hp_+5.8%
101051: ATK+2
101052: ATK+2
201051: ATK+3
201052: ATK+4
201053: ATK+5
301051: ATK+7
301052: ATK+7
301053: ATK+8
301054: ATK+9
401051: ATK+11
401052: ATK+12
401053: ATK+14
401054: ATK+16
501051: ATK+14
501052: ATK+16
501053: ATK+18
501054: ATK+19
101061: atk_+1.2%
101062: atk_+1.5%
201061: atk_+1.6%
201062: atk_+2.0%
201063: atk_+2.3%
301061: atk_+2.4%
301062: atk_+2.8%
301063: atk_+3.2%
301064: atk_+3.5%
401061: atk_+3.3%
401062: atk_+3.7%
401063: atk_+4.2%
401064: atk_+4.7%
501061: atk_+4.1%
501062: atk_+4.7%
501063: atk_+5.2%
501064: atk_+5.8%
101081: DEF+2
101082: DEF+2
201081: DEF+4
201082: DEF+5
201083: DEF+6
301081: DEF+8
301082: DEF+9
301083: DEF+10
301084: DEF+11
401081: DEF+13
401082: DEF+15
401083: DEF+17
401084: DEF+19
501081: DEF+16
501082: DEF+19
501083: DEF+21
501084: DEF+23
101091: def_+1.5%
101092: def_+1.8%
201091: def_+2.0%
201092: def_+2.5%
201093: def_+2.9%
301091: def_+3.1%
301092: def_+3.5%
301093: def_+3.9%
301094: def_+4.4%
401091: def_+4.1%
401092: def_+4.7%
401093: def_+5.2%
401094: def_+5.8%
501091: def_+5.1%
501092: def_+5.8%
501093: def_+6.6%
501094: def_+7.3%
101231: enerRech_+1.3%
101232: enerRech_+1.6%
201231: enerRech_+1.8%
201232: enerRech_+2.2%
201233: enerRech_+2.6%
301231: enerRech_+2.7%
301232: enerRech_+3.1%
301233: enerRech_+3.5%
301234: enerRech_+3.9%
401231: enerRech_+3.6%
401232: enerRech_+4.1%
401233: enerRech_+4.7%
401234: enerRech_+5.2%
501231: enerRech_+4.5%
501232: enerRech_+5.2%
501233: enerRech_+5.8%
501234: enerRech_+6.5%
101241: Elemental Mastery+5
101242: Elemental Mastery+6
201241: Elemental Mastery+7
201242: Elemental Mastery+8
201243: Elemental Mastery+9
301241: Elemental Mastery+10
301242: Elemental Mastery+11
301243: Elemental Mastery+13
301244: Elemental Mastery+14
401241: Elemental Mastery+13
401242: Elemental Mastery+15
401243: Elemental Mastery+17
401244: Elemental Mastery+19
501241: Elemental Mastery+16
501242: Elemental Mastery+19
501243: Elemental Mastery+21
501244: Elemental Mastery+23
101201: CRIT Rate+0.8%
101202: CRIT Rate+1.0%
201201: CRIT Rate+1.1%
201202: CRIT Rate+1.3%
201203: CRIT Rate+1.5%
301201: CRIT Rate+1.6%
301202: CRIT Rate+1.9%
301203: CRIT Rate+2.1%
301204: CRIT Rate+2.3%
401201: CRIT Rate+2.2%
401202: CRIT Rate+2.5%
401203: CRIT Rate+2.8%
401204: CRIT Rate+3.1%
501201: CRIT Rate+2.7%
501202: CRIT Rate+3.1%
501203: CRIT Rate+3.5%
501204: CRIT Rate+3.9%
101221: CRIT DMG+1.5%
101222: CRIT DMG+1.9%
201221: CRIT DMG+2.2%
201222: CRIT DMG+2.6%
201223: CRIT DMG+3.1%
301221: CRIT DMG+3.3%
301222: CRIT DMG+3.7%
301223: CRIT DMG+4.2%
301224: CRIT DMG+4.7%
401221: CRIT DMG+4.3%
401222: CRIT DMG+5.0%
401223: CRIT DMG+5.6%
401224: CRIT DMG+6.2%
501221: CRIT DMG+5.4%
501222: CRIT DMG+6.2%
501223: CRIT DMG+7.0%
501224: CRIT DMG+7.8%

View File

@ -0,0 +1,10 @@
102: hp
103: hp_
105: atk
106: atk_
108: def
109: def_
120: critRate_
122: critDMG_
123: enerRech_
124: eleMas

View File

@ -0,0 +1,54 @@
1002: KamisatoAyaka
1003: Jean
1005: Aether
1006: Lisa
1007: Lumine
1014: Barbara
1015: Kaeya
1016: Diluc
1020: Razor
1021: Amber
1022: Venti
1023: Xiangling
1024: Beidou
1025: Xingqiu
1026: Xiao
1027: Ningguang
1029: Klee
1030: Zhongli
1031: Fischl
1032: Bennett
1033: Tartaglia
1034: Noelle
1035: Qiqi
1036: Chongyun
1037: Ganyu
1038: Albedo
1039: Diona
1041: Mona
1042: Keqing
1043: Sucrose
1044: Xinyan
1045: Rosaria
1046: Hu Tao
1047: KaedeharaKazuha
1048: Yanfei
1049: Yoimiya
1050: Thoma
1051: Eula
1052: RaidenShogun
1053: Sayu
1054: SangonomiyaKokomi
1055: Gorou
1056: Kujou Sara
1057: Arataki Itto
1058: Yae Miko
1060: Yelan
1062: Aloy
1063: Shenhe
1064: YunJin
1065: KukiShinobu
1066: KamisatoAyato
1067: Collei
1068: Dori
1069: Tighnari

View File

@ -0,0 +1,146 @@
11101: DullBlade
11201: SilverSword
11301: CoolSteel
11302: HarbingerOf Dawn
11303: TravelersHandySword
11304: DarkIronSword
11305: FilletBlade
11306: SkyriderSword
11401: FavoniusSword
11402: TheFlute
11403: SacrificialSword
11404: RoyalLongsword
11405: LionsRoar
11406: PrototypeRancour
11407: IronSting
11408: BlackcliffLongsword
11409: TheBlackSword
11410: TheAlleyFlash
11412: SwordOfDescension
11413: FesteringDesire
11414: AmenomaKageuchi
11415: CinnabarSpindle
11501: AquilaFavonia
11502: SkywardBlade
11503: FreedomSworn
11504: SummitShaper
11505: PrimordialJadeCutter
11507: OneSide
11509: MistsplitterReforged
11510: HaranGeppakuFutsu
12101: WasterGreatsword
12201: OldMercsPal
12301: FerrousShadow
12302: BloodtaintedGreatsword
12303: WhiteIronGreatsword
12304: Quartz
12305: DebateClub
12306: SkyriderGreatsword
12401: FavoniusGreatsword
12402: TheBell
12403: SacrificialGreatsword
12404: RoyalGreatsword
12405: Rainslasher
12406: PrototypeArchaic
12407: Whiteblind
12408: BlackcliffSlasher
12409: SerpentSpine
12410: LithicBlade
12411: SnowTombedStarsilver
12412: LuxuriousSeaLord
12414: KatsuragikiriNagamasa
12416: Akuoumaru
12501: SkywardPride
12502: WolfsGravestone
12503: SongOfBrokenPines
12504: TheUnforged
12505: PrimordialJadeGreatsword
12506: TheOtherSide
12510: RedhornStonethresher
13101: BeginnersProtector
13201: IronPoint
13301: WhiteTassel
13302: Halberd
13303: BlackTassel
13304: TheFlagstaff
13401: DragonsBane
13402: PrototypeStarglitter
13403: CrescentPike
13404: BlackcliffPole
13405: Deathmatch
13406: LithicSpear
13407: FavoniusLance
13408: RoyalSpear
13409: DragonspineSpear
13414: KitainCrossSpear
13415: TheCatch
13416: WavebreakersFin
13501: StaffofHoma
13502: SkywardSpine
13504: VortexVanquisher
13505: PrimordialJadeWingedSpear
13506: Deicide
13507: CalamityQueller
13509: EngulfingLightning
14101: ApprenticesNotes
14201: PocketGrimoire
14301: MagicGuide
14302: ThrillingTalesOfDragonSlayers
14303: OtherworldlyStory
14304: EmeraldOrb
14305: TwinNephrite
14306: AmberBead
14401: FavoniusCodex
14402: TheWidsith
14403: SacrificialFragments
14404: RoyalGrimoire
14405: SolarPearl
14406: PrototypeAmber
14407: MappaMare
14408: BlackcliffAgate
14409: EyeOfPerception
14410: WineAndSong
14412: Frostbearer
14413: DodocoTales
14414: HakushinRing
14415: OathswornEye
14501: SkywardAtlas
14502: LostPrayerToTheSacredWinds
14503: LostBallade
14504: MemoryOfDust
14505: PrimordialJadeRegalia
14506: EverlastingMoonglow
14509: KagurasVerity
15101: HuntersBow
15201: SeasonedHuntersBow
15301: RavenBow
15302: SharpshootersOath
15303: RecurveBow
15304: Slingshot
15305: Messenger
15306: EbonyBow
15401: FavoniusWarbow
15402: TheStringless
15403: SacrificialBow
15404: RoyalBow
15405: Rust
15406: PrototypeCrescent
15407: CompoundBow
15408: BlackcliffWarbow
15409: TheViridescentHunt
15410: AlleyHunter
15411: FadingTwilight
15412: MitternachtsWaltz
15413: WindblumeOde
15414: Hamayumi
15415: Predator
15416: MouunsMoon
15501: SkywardHarp
15502: AmosBow
15503: ElegyForTheEnd
15504: KunwusWyrmbane
15505: PrimordialJadeVista
15506: MirrorBreaker
15507: PolarStar
15508: AquaSimulacra
15509: ThunderingPulse

View File

@ -0,0 +1,224 @@
/**
* 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 <https://www.gnu.org/licenses/>.
*
**/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GrasscutterTools.Utils
{
class SubstatSumEquality : IEqualityComparer<List<KeyValuePair<int, double>>>
{
public bool Equals(List<KeyValuePair<int, double>> left, List<KeyValuePair<int, double>> right)
{
if (sum_substat(left) == sum_substat(right))
return true;
else
return false;
}
public int GetHashCode(List<KeyValuePair<int, double>> dict)
{
return sum_substat(dict).GetHashCode();
}
public static double sum_substat(List<KeyValuePair<int, double>> dict)
{
double sum = 0;
foreach (KeyValuePair<int, double> kvp in dict)
{
sum += kvp.Value;
}
return sum;
}
}
class ArtifactUtils
{
public static Dictionary<string, double[][]> substats_rolls = new Dictionary<string, double[][]>
{
{
"hp",
new double[][] {
new double[] {23.9, 29.88},
new double[] {50.19, 60.95, 71.7},
new double[] {100.38, 114.72, 129.06, 143.4},
new double[] {167.3, 191.2, 215.1, 239},
new double[] {209.13, 239, 268.88, 298.75}
}
},
{
"hp_",
new double[][] {
new double[] {1.17, 1.46},
new double[] {1.63, 1.98, 2.33},
new double[] {2.45, 2.8, 3.15, 3.5},
new double[] {3.26, 3.73, 4.2, 4.66},
new double[] {4.08, 4.66, 5.25, 5.83}
}
},
{
"atk",
new double[][] {
new double[] {1.56, 1.95},
new double[] {3.27, 3.97, 4.67},
new double[] {6.54, 7.47, 8.4, 9.34},
new double[] {10.89, 12.45, 14, 15.56},
new double[] {13.62, 15.56, 17.51, 19.45 }
}
},
{
"atk_",
new double[][] {
new double[] {1.17, 1.46},
new double[] {1.63, 1.98, 2.33},
new double[] {2.45, 2.8, 3.15, 3.5},
new double[] {3.26, 3.73, 4.2, 4.66},
new double[] {4.08, 4.66, 5.25, 5.83}
}
},
{
"def",
new double[][] {
new double[] {1.85, 2.31},
new double[] {3.89, 4.72, 5.56},
new double[] {10, 11.11, 7.78, 8.89},
new double[] {12.96, 14.82, 16.67, 18.52},
new double[] {16.2, 18.52, 20.83, 23.15}
}
},
{
"def_",
new double[][] {
new double[] {1.46, 1.82},
new double[] {2.04, 2.48, 2.91},
new double[] {3.06, 3.5, 3.93, 4.37},
new double[] {4.08, 4.66, 5.25, 5.83},
new double[] {5.1, 5.83, 6.56, 7.29}
}
},
{
"critRate_",
new double[][] {
new double[] {.78, .97},
new double[] {1.09, 1.32, 1.55},
new double[] {1.63, 1.86, 2.1, 2.33},
new double[] {2.18, 2.49, 2.8, 3.11},
new double[] {2.72, 3.11, 3.5, 3.89}
}
},
{
"critDMG_",
new double[][] {
new double[] {1.55, 1.94},
new double[] {2.18, 2.64, 3.11},
new double[] {3.26, 3.73, 4.2, 4.66},
new double[] {4.35, 4.97, 5.6, 6.22},
new double[] {5.44, 6.22, 6.99, 7.77}
}
},
{
"eleMas",
new double[][] {
new double[] {4.66, 5.83},
new double[] {6.53, 7.93, 9.33},
new double[] {11.19, 12.59, 13.99, 9.79},
new double[] {13.06, 14.92, 16.79, 18.65},
new double[] {16.32, 18.65, 20.98, 23.31}
}
},
{
"enerRech_",
new double[][] {
new double[] {1.3, 1.62},
new double[] {1.81, 2.2, 2.59},
new double[] {2.72, 3.11, 3.5, 3.89},
new double[] {3.63, 4.14, 4.66, 5.18},
new double[] {4.53, 5.18, 5.83, 6.48}
}
}
};
// ArtifactSub -> Rarity -> Stat value -> Stat index list
public static Dictionary<string, Dictionary<int, List<KeyValuePair<double, int[]>>>> substats_dict;
public static int[] SplitSubstats(string type, int rarity, double value)
{
if (!substats_initiated)
{
InitSubstats();
substats_initiated = true;
}
double last_stat_diff = 99999;
int[] last_stat_list = { 4, 4, 4, 4, 4, 4 };
foreach (KeyValuePair<double, int[]> value_to_list in substats_dict[type][rarity])
{
if (Math.Abs(value - value_to_list.Key) >= last_stat_diff)
{
return last_stat_list;
}
last_stat_diff = value - value_to_list.Key;
last_stat_list = value_to_list.Value;
}
// Default, should never happen
return last_stat_list;
}
private static void InitSubstats()
{
substats_dict = new Dictionary<string, Dictionary<int, List<KeyValuePair<double, int[]>>>>();
foreach (KeyValuePair<string, double[][]> stat_block_info in substats_rolls)
{
string stat_name = stat_block_info.Key;
substats_dict[stat_name] = new Dictionary<int, List<KeyValuePair<double, int[]>>>();
for (int rarity_index = 0; rarity_index < stat_block_info.Value.Length; rarity_index++)
{
var substat_options = new List<KeyValuePair<int, double>>();
// Substat index == 0 means no substat upgrade
substat_options.Add(new KeyValuePair<int, double>(0, 0));
for (int substat_index = 0; substat_index < substats_rolls[stat_name][rarity_index].Length; substat_index++)
{
substat_options.Add(new KeyValuePair<int, double>(substat_index+1, substats_rolls[stat_name][rarity_index][substat_index]));
}
var substat_sum_data = (from s1 in substat_options from s2 in substat_options from s3 in substat_options from s4 in substat_options from s5 in substat_options from s6 in substat_options select new { s1, s2, s3, s4, s5, s6 })
.Select(x => new List<KeyValuePair<int, double>> { x.s1, x.s2, x.s3, x.s4, x.s5, x.s6 })
.Distinct(new SubstatSumEquality());
var stats_map = new List<KeyValuePair<double, int[]>>();
foreach (List<KeyValuePair<int, double>> val in substat_sum_data.ToArray().OrderBy(list => SubstatSumEquality.sum_substat(list)))
{
var index_list = new List<int>();
foreach (KeyValuePair<int, double> pair in val)
{
if (pair.Key != 0)
index_list.Add(pair.Key);
}
stats_map.Add(new KeyValuePair<double, int[]>(SubstatSumEquality.sum_substat(val), index_list.ToArray()));
}
substats_dict[stat_name][rarity_index + 1] = stats_map;
}
}
}
private static bool substats_initiated = false;
}
}