mirror of
https://github.com/jie65535/GrasscutterCommandGenerator.git
synced 2025-10-20 19:39:47 +08:00
Compare commits
24 Commits
Author | SHA1 | Date | |
---|---|---|---|
c94a7683e4 | |||
b407012bef | |||
bb7d28153f | |||
627d9c7cd2 | |||
53a83fd7a7 | |||
c2ca091662 | |||
738a755353 | |||
dcbd946407 | |||
2a8cebcbb5 | |||
434ec7b2df | |||
c2ff37facf | |||
f48c9b4d0b | |||
1d734479d1 | |||
a989581d59 | |||
6ab9d3842c | |||
b69b2941b6 | |||
90deaa84b4 | |||
403cc3fe52 | |||
dd4eb36c17 | |||
2645e16bee | |||
82668c4c6a | |||
8fce4a8995 | |||
![]() |
4cfbebcc5a | ||
40db4236ba |
@@ -37,6 +37,15 @@ The server require [gc-opencommand-plugin](https://github.com/jie65535/gc-openco
|
||||
### GrasscutterTools-v1.11
|
||||

|
||||
|
||||
Commandline Usages:
|
||||
```bash
|
||||
GcTools.exe -help
|
||||
GcTools.exe -version
|
||||
GcTools.exe -c "cmd arg"
|
||||
GcTools.exe -c "cmd1 arg" && GcTools -c "cmd2 arg1 arg2"
|
||||
GcTools.exe -host http://127.0.0.1:443 -token 123456 -c "cmd1 arg1 arg2 | cmd2 | cmd3 arg"
|
||||
```
|
||||
|
||||
### GrasscutterTools-v1.10
|
||||

|
||||
|
||||
|
@@ -38,6 +38,15 @@ GCG поддерживает 简体中文 (китайский упр.), 繁體
|
||||
### GrasscutterTools-v1.11
|
||||

|
||||
|
||||
Commandline Usages:
|
||||
```bash
|
||||
GcTools.exe -help
|
||||
GcTools.exe -version
|
||||
GcTools.exe -c "cmd arg"
|
||||
GcTools.exe -c "cmd1 arg" && GcTools -c "cmd2 arg1 arg2"
|
||||
GcTools.exe -host http://127.0.0.1:443 -token 123456 -c "cmd1 arg1 arg2 | cmd2 | cmd3 arg"
|
||||
```
|
||||
|
||||
### GrasscutterTools-v1.10
|
||||

|
||||
|
||||
|
@@ -38,6 +38,15 @@
|
||||
### GrasscutterTools-v1.11
|
||||

|
||||
|
||||
命令行用法:
|
||||
```bash
|
||||
GcTools.exe -help
|
||||
GcTools.exe -version
|
||||
GcTools.exe -c "cmd arg"
|
||||
GcTools.exe -c "cmd1 arg" && GcTools -c "cmd2 arg1 arg2"
|
||||
GcTools.exe -host http://127.0.0.1:443 -token 123456 -c "cmd1 arg1 arg2 | cmd2 | cmd3 arg"
|
||||
```
|
||||
|
||||
### GrasscutterTools-v1.10
|
||||

|
||||
|
||||
|
@@ -37,6 +37,15 @@
|
||||
### GrasscutterTools-v1.11
|
||||

|
||||
|
||||
Commandline Usages:
|
||||
```bash
|
||||
GcTools.exe -help
|
||||
GcTools.exe -version
|
||||
GcTools.exe -c "cmd arg"
|
||||
GcTools.exe -c "cmd1 arg" && GcTools -c "cmd2 arg1 arg2"
|
||||
GcTools.exe -host http://127.0.0.1:443 -token 123456 -c "cmd1 arg1 arg2 | cmd2 | cmd3 arg"
|
||||
```
|
||||
|
||||
### GrasscutterTools-v1.10
|
||||

|
||||
|
||||
|
@@ -29,7 +29,7 @@
|
||||
<value>10001</value>
|
||||
</setting>
|
||||
<setting name="Host" serializeAs="String">
|
||||
<value>https://127.0.0.1</value>
|
||||
<value>http://127.0.0.1:443</value>
|
||||
</setting>
|
||||
<setting name="CheckedLastVersion" serializeAs="String">
|
||||
<value />
|
||||
|
@@ -24,7 +24,7 @@ using GrasscutterTools.Utils;
|
||||
|
||||
namespace GrasscutterTools.DispatchServer
|
||||
{
|
||||
public static class DispatchServerAPI
|
||||
internal static class DispatchServerAPI
|
||||
{
|
||||
public static async Task<ServerStatus> QueryServerStatus(string host)
|
||||
{
|
||||
|
@@ -21,7 +21,7 @@ using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.DispatchServer.Model
|
||||
{
|
||||
public class ServerStatus
|
||||
internal class ServerStatus
|
||||
{
|
||||
[JsonProperty("playerCount")]
|
||||
public int PlayerCount { get; set; }
|
||||
@@ -33,7 +33,7 @@ namespace GrasscutterTools.DispatchServer.Model
|
||||
public string Version { get; set; }
|
||||
}
|
||||
|
||||
public class ServerStatusResponse
|
||||
internal class ServerStatusResponse
|
||||
{
|
||||
[JsonProperty("retcode")]
|
||||
public int RetCode { get; set; }
|
||||
|
@@ -126,17 +126,17 @@ namespace GrasscutterTools.Forms
|
||||
}
|
||||
};
|
||||
CreatePage<PageGiveArtifact>();
|
||||
CreatePage<PageSetProp>();
|
||||
CreatePage<PageSpawn>();
|
||||
CreatePage<PageGiveItem>();
|
||||
CreatePage<PageAvatar>();
|
||||
CreatePage<PageGiveWeapon>();
|
||||
CreatePage<PageScene>();
|
||||
CreatePage<PageTasks>();
|
||||
CreatePage<PageManagement>();
|
||||
CreatePage<PageMail>();
|
||||
CreatePage<PageTasks>();
|
||||
CreatePage<PageQuest>();
|
||||
CreatePage<PageScene>();
|
||||
CreatePage<PageAchievement>();
|
||||
CreatePage<PageSetProp>();
|
||||
CreatePage<PageAbout>();
|
||||
#if DEBUG
|
||||
CreatePage<PageTools>();
|
||||
@@ -158,17 +158,17 @@ namespace GrasscutterTools.Forms
|
||||
Resources.PageCustomCommandsTitle,
|
||||
Resources.PageHotKey,
|
||||
Resources.PageGetArtifactTitle,
|
||||
Resources.PageSetPropTitle,
|
||||
Resources.PageSpawnTitle,
|
||||
Resources.PageGiveItemTitle,
|
||||
Resources.PageAvatarTitle,
|
||||
Resources.PageGiveWeaponTitle,
|
||||
Resources.PageSceneTitle,
|
||||
Resources.PageTasksTitle,
|
||||
Resources.PageManagementTitle,
|
||||
Resources.PageMailTitle,
|
||||
Resources.PageTasksTitle,
|
||||
Resources.PageQuestTitle,
|
||||
Resources.PageSceneTitle,
|
||||
Resources.PageAchievementTitle,
|
||||
Resources.PageSetPropTitle,
|
||||
Resources.PageAboutTitle,
|
||||
#if DEBUG
|
||||
"Tools",
|
||||
@@ -380,10 +380,9 @@ namespace GrasscutterTools.Forms
|
||||
/// <param name="args">参数</param>
|
||||
private void SetCommand(string command, string args)
|
||||
{
|
||||
if (Settings.Default.IsIncludeUID)
|
||||
SetCommand($"{command} @{Settings.Default.Uid} {args.Trim()}");
|
||||
else
|
||||
SetCommand($"{command} {args.Trim()}");
|
||||
SetCommand(Settings.Default.IsIncludeUID
|
||||
? $"{command} {args.Trim()} @{Settings.Default.Uid}"
|
||||
: $"{command} {args.Trim()}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -557,8 +556,8 @@ namespace GrasscutterTools.Forms
|
||||
Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom,
|
||||
Multiline = true,
|
||||
Font = new Font("Consolas", 9F),
|
||||
Location = new Point(BtnInvokeOpenCommand.Left, BtnInvokeOpenCommand.Bottom + 6),
|
||||
Size = new Size(GrpCommand.Width - BtnInvokeOpenCommand.Left * 2, TxtCommandRunLogMinHeight),
|
||||
Location = new Point(ChkAutoCopy.Left, ChkAutoCopy.Bottom + 6),
|
||||
Size = new Size(GrpCommand.Width - ChkAutoCopy.Left * 2, TxtCommandRunLogMinHeight),
|
||||
ReadOnly = true,
|
||||
BackColor = Color.White,
|
||||
ScrollBars = ScrollBars.Vertical,
|
||||
|
@@ -135,6 +135,6 @@
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>Inherit</value>
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
</root>
|
@@ -244,7 +244,7 @@
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="CmbCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>87, 21</value>
|
||||
<value>115, 22</value>
|
||||
</data>
|
||||
<data name="CmbCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>600, 25</value>
|
||||
@@ -264,17 +264,14 @@
|
||||
<data name=">>CmbCommand.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="BtnCopy.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="BtnCopy.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BtnCopy.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>693, 22</value>
|
||||
<value>59, 22</value>
|
||||
</data>
|
||||
<data name="BtnCopy.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 23</value>
|
||||
<value>50, 25</value>
|
||||
</data>
|
||||
<data name="BtnCopy.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
@@ -294,9 +291,6 @@
|
||||
<data name=">>BtnCopy.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="ChkAutoCopy.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="ChkAutoCopy.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
@@ -304,7 +298,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="ChkAutoCopy.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>749, 24</value>
|
||||
<value>10, 24</value>
|
||||
</data>
|
||||
<data name="ChkAutoCopy.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>51, 21</value>
|
||||
@@ -330,14 +324,17 @@
|
||||
<data name="GrpCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="BtnInvokeOpenCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="BtnInvokeOpenCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BtnInvokeOpenCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 22</value>
|
||||
<value>721, 22</value>
|
||||
</data>
|
||||
<data name="BtnInvokeOpenCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
<value>75, 25</value>
|
||||
</data>
|
||||
<data name="BtnInvokeOpenCommand.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
|
@@ -119,22 +119,22 @@
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="CmbCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>132, 21</value>
|
||||
<value>155, 21</value>
|
||||
</data>
|
||||
<data name="CmbCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>513, 25</value>
|
||||
<value>523, 25</value>
|
||||
</data>
|
||||
<data name="BtnCopy.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>651, 21</value>
|
||||
<value>57, 21</value>
|
||||
</data>
|
||||
<data name="BtnCopy.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>92, 23</value>
|
||||
<value>92, 25</value>
|
||||
</data>
|
||||
<data name="BtnCopy.Text" xml:space="preserve">
|
||||
<value>Копировать</value>
|
||||
</data>
|
||||
<data name="ChkAutoCopy.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>749, 23</value>
|
||||
<value>6, 24</value>
|
||||
</data>
|
||||
<data name="ChkAutoCopy.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>55, 21</value>
|
||||
@@ -145,14 +145,17 @@
|
||||
<data name="GrpCommand.Text" xml:space="preserve">
|
||||
<value>Команды - [Ctrl] Запуск и замена - [Shift] Добавить - [Alt] Только запустить - [|] Разделитель</value>
|
||||
</data>
|
||||
<data name="BtnInvokeOpenCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>684, 21</value>
|
||||
</data>
|
||||
<data name="BtnInvokeOpenCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>120, 23</value>
|
||||
<value>120, 25</value>
|
||||
</data>
|
||||
<data name="BtnInvokeOpenCommand.Text" xml:space="preserve">
|
||||
<value>Выполнить (F5)</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>Inherit</value>
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
</root>
|
@@ -131,6 +131,6 @@
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>Inherit</value>
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
</root>
|
@@ -26,7 +26,7 @@ namespace GrasscutterTools.GOOD
|
||||
/// Doc: https://frzyc.github.io/genshin-optimizer/#/doc
|
||||
/// Modified from https://github.com/Andrewthe13th/Inventory_Kamera/blob/master/InventoryKamera/game/Artifact.cs
|
||||
/// </summary>
|
||||
public class Artifact
|
||||
internal class Artifact
|
||||
{
|
||||
/// <summary>
|
||||
/// e.g. "GladiatorsFinale"
|
||||
|
@@ -26,7 +26,7 @@ namespace GrasscutterTools.GOOD
|
||||
/// Doc: https://frzyc.github.io/genshin-optimizer/#/doc
|
||||
/// Modified from https://github.com/Andrewthe13th/Inventory_Kamera/blob/master/InventoryKamera/game/Character.cs
|
||||
/// </summary>
|
||||
public class Character
|
||||
internal class Character
|
||||
{
|
||||
/// <summary>
|
||||
/// e.g. "Rosaria"
|
||||
|
@@ -38,7 +38,7 @@ namespace GrasscutterTools.GOOD
|
||||
/// https://genshin.mingyulab.com/
|
||||
/// https://genshin-center.com/
|
||||
/// </summary>
|
||||
public class GOOD
|
||||
internal class GOOD
|
||||
{
|
||||
[JsonProperty("format")]
|
||||
public string Format { get; set; }
|
||||
|
@@ -26,7 +26,7 @@ using GrasscutterTools.Properties;
|
||||
|
||||
namespace GrasscutterTools.GOOD
|
||||
{
|
||||
public static class GOODData
|
||||
internal static class GOODData
|
||||
{
|
||||
static GOODData()
|
||||
{
|
||||
|
@@ -28,7 +28,7 @@ namespace GrasscutterTools.GOOD
|
||||
/// Doc: https://frzyc.github.io/genshin-optimizer/#/doc
|
||||
/// Modified from https://github.com/Andrewthe13th/Inventory_Kamera/blob/master/InventoryKamera/game/Weapon.cs
|
||||
/// </summary>
|
||||
public class Weapon
|
||||
internal class Weapon
|
||||
{
|
||||
/// <summary>
|
||||
/// e.g. "CrescentPike"
|
||||
|
@@ -24,7 +24,7 @@ using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Activity
|
||||
{
|
||||
public class ActivityConfigItem
|
||||
internal class ActivityConfigItem
|
||||
{
|
||||
/// <summary>
|
||||
/// 活动ID
|
||||
|
@@ -162,6 +162,11 @@ namespace GrasscutterTools.Game
|
||||
/// </summary>
|
||||
public static readonly Version V1_6_3 = new Version(1, 6, 3);
|
||||
|
||||
/// <summary>
|
||||
/// 2023/??
|
||||
/// </summary>
|
||||
public static readonly Version V1_7_0 = new Version(1, 7, 0);
|
||||
|
||||
// More...
|
||||
/// <summary>
|
||||
/// Date
|
||||
@@ -184,6 +189,7 @@ namespace GrasscutterTools.Game
|
||||
V1_6_1,
|
||||
V1_6_2,
|
||||
V1_6_3,
|
||||
V1_7_0,
|
||||
};
|
||||
|
||||
#endregion - 版本列表 Version List -
|
||||
|
32
Source/GrasscutterTools/Game/Data/Excels/AchievementData.cs
Normal file
32
Source/GrasscutterTools/Game/Data/Excels/AchievementData.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("AchievementExcelConfigData.json")]
|
||||
internal class AchievementData : GameResource
|
||||
{
|
||||
[JsonProperty("isDisuse")]
|
||||
public bool IsDisuse { get; set; }
|
||||
|
||||
public bool IsUsed => !IsDisuse;
|
||||
}
|
||||
}
|
33
Source/GrasscutterTools/Game/Data/Excels/AvatarData.cs
Normal file
33
Source/GrasscutterTools/Game/Data/Excels/AvatarData.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 GrasscutterTools.Game.Props;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("AvatarExcelConfigData.json")]
|
||||
internal class AvatarData : GameResource
|
||||
{
|
||||
[JsonProperty("qualityType"), JsonConverter(typeof(StringEnumConverter))]
|
||||
public QualityType QualityType { get; set; }
|
||||
}
|
||||
}
|
30
Source/GrasscutterTools/Game/Data/Excels/DungeonData.cs
Normal file
30
Source/GrasscutterTools/Game/Data/Excels/DungeonData.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("DungeonExcelConfigData.json")]
|
||||
internal class DungeonData : GameResource
|
||||
{
|
||||
[JsonProperty("sceneId")]
|
||||
public int SceneId { get; set; }
|
||||
}
|
||||
}
|
36
Source/GrasscutterTools/Game/Data/Excels/GadgetData.cs
Normal file
36
Source/GrasscutterTools/Game/Data/Excels/GadgetData.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("GadgetExcelConfigData.json")]
|
||||
internal class GadgetData : GameResource
|
||||
{
|
||||
[JsonProperty("type")]
|
||||
public string Type { get; set; }
|
||||
|
||||
[JsonProperty("jsonName")]
|
||||
public string JsonName { get; set; }
|
||||
|
||||
[JsonProperty("interactNameTextMapHash")]
|
||||
public long InteractNameTextMapHash { get; set; }
|
||||
}
|
||||
}
|
33
Source/GrasscutterTools/Game/Data/Excels/GatherData.cs
Normal file
33
Source/GrasscutterTools/Game/Data/Excels/GatherData.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("GatherExcelConfigData.json")]
|
||||
internal class GatherData
|
||||
{
|
||||
[JsonProperty("gadgetId")]
|
||||
public int GadgetId { get; set; }
|
||||
|
||||
[JsonProperty("itemId")]
|
||||
public int ItemId { get; set; }
|
||||
}
|
||||
}
|
33
Source/GrasscutterTools/Game/Data/Excels/HomeWorldBgmData.cs
Normal file
33
Source/GrasscutterTools/Game/Data/Excels/HomeWorldBgmData.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("HomeWorldBgmExcelConfigData.json")]
|
||||
internal class HomeWorldBgmData : GameResource
|
||||
{
|
||||
[JsonProperty("homeBgmId")]
|
||||
public override int Id { get; set; }
|
||||
|
||||
[JsonProperty("bgmNameTextMapHash")]
|
||||
public long BgmNameTextMapHash { get; set; }
|
||||
}
|
||||
}
|
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("HomeWorldFurnitureExcelConfigData.json")]
|
||||
internal class HomeWorldFurnitureData : GameResource
|
||||
{
|
||||
[JsonProperty("furnitureGadgetID")]
|
||||
public int[] FurnitureGadgetId { get; set; }
|
||||
}
|
||||
}
|
26
Source/GrasscutterTools/Game/Data/Excels/MainQuestData.cs
Normal file
26
Source/GrasscutterTools/Game/Data/Excels/MainQuestData.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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/>.
|
||||
*
|
||||
**/
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("MainQuestExcelConfigData.json")]
|
||||
internal class MainQuestData : GameResource
|
||||
{
|
||||
}
|
||||
}
|
42
Source/GrasscutterTools/Game/Data/Excels/MaterialData.cs
Normal file
42
Source/GrasscutterTools/Game/Data/Excels/MaterialData.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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.Collections.Generic;
|
||||
|
||||
using GrasscutterTools.Game.Inventory;
|
||||
using GrasscutterTools.Game.Props;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("MaterialExcelConfigData.json")]
|
||||
internal class MaterialData : GameResource
|
||||
{
|
||||
[JsonProperty("itemType"), JsonConverter(typeof(StringEnumConverter))]
|
||||
public ItemType ItemType { get; set; }
|
||||
|
||||
[JsonProperty("materialType"), JsonConverter(typeof(StringEnumConverter))]
|
||||
public MaterialType MaterialType { get; set; }
|
||||
|
||||
[JsonProperty("itemUse")]
|
||||
public List<ItemUseData> ItemUse { get; set; }
|
||||
}
|
||||
}
|
35
Source/GrasscutterTools/Game/Data/Excels/MonsterData.cs
Normal file
35
Source/GrasscutterTools/Game/Data/Excels/MonsterData.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 GrasscutterTools.Game.Props;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("MonsterExcelConfigData.json")]
|
||||
internal class MonsterData : GameResource
|
||||
{
|
||||
[JsonProperty("monsterName")]
|
||||
public string MonsterName { get; set; }
|
||||
|
||||
[JsonProperty("type")]
|
||||
public MonsterType Type { get; set; }
|
||||
}
|
||||
}
|
36
Source/GrasscutterTools/Game/Data/Excels/QuestData.cs
Normal file
36
Source/GrasscutterTools/Game/Data/Excels/QuestData.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("QuestExcelConfigData.json")]
|
||||
internal class QuestData : GameResource
|
||||
{
|
||||
[JsonProperty("subId")]
|
||||
public override int Id { get; set; }
|
||||
|
||||
[JsonProperty("mainId")]
|
||||
public int MainId { get; set; }
|
||||
|
||||
[JsonProperty("order")]
|
||||
public int Order { get; set; }
|
||||
}
|
||||
}
|
26
Source/GrasscutterTools/Game/Data/Excels/ReliquaryData.cs
Normal file
26
Source/GrasscutterTools/Game/Data/Excels/ReliquaryData.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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/>.
|
||||
*
|
||||
**/
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("ReliquaryExcelConfigData.json")]
|
||||
internal class ReliquaryData : GameResource
|
||||
{
|
||||
}
|
||||
}
|
35
Source/GrasscutterTools/Game/Data/Excels/SceneData.cs
Normal file
35
Source/GrasscutterTools/Game/Data/Excels/SceneData.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 GrasscutterTools.Game.Props;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("SceneExcelConfigData.json")]
|
||||
internal class SceneData : GameResource
|
||||
{
|
||||
[JsonProperty("type")]
|
||||
public SceneType SceneType { get; set; }
|
||||
|
||||
[JsonProperty("scriptData")]
|
||||
public string ScriptData { get; set; }
|
||||
}
|
||||
}
|
30
Source/GrasscutterTools/Game/Data/Excels/WeaponData.cs
Normal file
30
Source/GrasscutterTools/Game/Data/Excels/WeaponData.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data.Excels
|
||||
{
|
||||
[ResourceType("WeaponExcelConfigData.json")]
|
||||
internal class WeaponData : GameResource
|
||||
{
|
||||
[JsonProperty("rankLevel")]
|
||||
public int RankLevel { get; set; }
|
||||
}
|
||||
}
|
38
Source/GrasscutterTools/Game/Data/GameResource.cs
Normal file
38
Source/GrasscutterTools/Game/Data/GameResource.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data
|
||||
{
|
||||
internal abstract class GameResource
|
||||
{
|
||||
[JsonProperty("id")]
|
||||
public virtual int Id { get; set; }
|
||||
|
||||
[JsonProperty("nameTextMapHash")]
|
||||
public long NameTextMapHash { get; set; }
|
||||
|
||||
[JsonProperty("titleTextMapHash")]
|
||||
public long TitleTextMapHash { get; set; }
|
||||
|
||||
[JsonProperty("descTextMapHash")]
|
||||
public long DescTextMapHash { get; set; }
|
||||
}
|
||||
}
|
433
Source/GrasscutterTools/Game/Data/GameResources.cs
Normal file
433
Source/GrasscutterTools/Game/Data/GameResources.cs
Normal file
@@ -0,0 +1,433 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
using GrasscutterTools.Game.Data.Excels;
|
||||
using GrasscutterTools.Game.Inventory;
|
||||
using GrasscutterTools.Game.Props;
|
||||
using GrasscutterTools.Utils;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Data
|
||||
{
|
||||
internal class GameResources
|
||||
{
|
||||
public Dictionary<int, AchievementData> AchievementData { get; set; }
|
||||
|
||||
public Dictionary<int, AvatarData> AvatarData { get; set; }
|
||||
|
||||
public Dictionary<int, HomeWorldBgmData> HomeWorldBgmData { get; set; }
|
||||
|
||||
public Dictionary<int, DungeonData> DungeonData { get; set; }
|
||||
|
||||
public Dictionary<int, GadgetData> GadgetData { get; set; }
|
||||
|
||||
public List<GatherData> GatherData { get; set; }
|
||||
|
||||
public Dictionary<int, HomeWorldFurnitureData> HomeWorldFurnitureData { get; set; }
|
||||
|
||||
public Dictionary<int, MainQuestData> MainQuestData { get; set; }
|
||||
|
||||
public Dictionary<int, QuestData> QuestData { get; set; }
|
||||
|
||||
public Dictionary<int, MaterialData> MaterialData { get; set; }
|
||||
|
||||
public Dictionary<int, MonsterData> MonsterData { get; set; }
|
||||
|
||||
public Dictionary<int, ReliquaryData> ReliquaryData { get; set; }
|
||||
|
||||
public Dictionary<int, SceneData> SceneData { get; set; }
|
||||
|
||||
public Dictionary<int, WeaponData> WeaponData { get; set; }
|
||||
|
||||
public TextMapData TextMapData { get; set; }
|
||||
|
||||
public GameResources(string resourcesDirPath, TextMapData textMapData)
|
||||
{
|
||||
TextMapData = textMapData;
|
||||
|
||||
var properties = typeof(GameResources).GetProperties();
|
||||
foreach (var property in properties)
|
||||
{
|
||||
var type = property.PropertyType;
|
||||
if (!type.IsGenericType) continue;
|
||||
var genericArguments = type.GetGenericArguments();
|
||||
ResourceTypeAttribute attribute = null;
|
||||
foreach (var it in genericArguments)
|
||||
{
|
||||
var attributes = it.GetCustomAttributes(typeof(ResourceTypeAttribute), true);
|
||||
if (attributes.Length == 0) continue;
|
||||
attribute = (ResourceTypeAttribute)attributes[0];
|
||||
type = it;
|
||||
}
|
||||
if (attribute == null) continue;
|
||||
var dataFile = Path.Combine(resourcesDirPath, "ExcelBinOutput", attribute.Name);
|
||||
var data = LoadDataFile(type, dataFile);
|
||||
property.SetValue(this, data, null);
|
||||
}
|
||||
|
||||
var illegalWeaponIds = new SparseSet(
|
||||
"10000-10008, 11411, 11506-11508, 12505, 12506, 12508, 12509," +
|
||||
"13503, 13506, 14411, 14503, 14508, 15504-15506, 20001");
|
||||
foreach (var id in WeaponData.Keys.Where(id => illegalWeaponIds.Contains(id)).ToList())
|
||||
WeaponData.Remove(id);
|
||||
|
||||
var illegalRelicIds = new SparseSet(
|
||||
"20002, 20004, 23300-24825"
|
||||
);
|
||||
//var illegalRelicIds = new SparseSet(
|
||||
// "20001, 23300-23340, 23383-23385, 78310-78554, 99310-99554"
|
||||
//);
|
||||
foreach (var id in ReliquaryData.Keys.Where(id => illegalRelicIds.Contains(id)).ToList())
|
||||
ReliquaryData.Remove(id);
|
||||
|
||||
var illegalItemIds = new SparseSet(
|
||||
"3004-3008, 3018-3022"
|
||||
);
|
||||
//var illegalItemIds = new SparseSet(
|
||||
// "3004-3008, 3018-3022, 100086, 100087, 100100-101000, 101106-101110, 101306, 101500-104000," +
|
||||
// "105001, 105004, 106000-107000, 107011, 108000, 109000-110000," +
|
||||
// "115000-130000, 200200-200899, 220050, 220054"
|
||||
//);
|
||||
foreach (var id in MaterialData.Keys.Where(id => illegalItemIds.Contains(id)).ToList())
|
||||
MaterialData.Remove(id);
|
||||
|
||||
foreach (var id in AvatarData.Keys.Where(id => id < 10000002 || id >= 11000000).ToList())
|
||||
AvatarData.Remove(id);
|
||||
}
|
||||
|
||||
private static object LoadDataFile(Type type, string path)
|
||||
{
|
||||
var list = (IList)JsonConvert.DeserializeObject(File.ReadAllText(path), typeof(List<>).MakeGenericType(type));
|
||||
if (list == null) return null;
|
||||
|
||||
if (!type.IsSubclassOf(typeof(GameResource))) return list;
|
||||
|
||||
var dicType = typeof(Dictionary<,>).MakeGenericType(typeof(int), type);
|
||||
var dic = (IDictionary)Activator.CreateInstance(dicType);
|
||||
foreach (GameResource gameResource in list)
|
||||
dic.Add(gameResource.Id, gameResource);
|
||||
return dic;
|
||||
}
|
||||
|
||||
private Dictionary<string, string> Languages = new Dictionary<string, string>
|
||||
{
|
||||
["zh-cn"] = "TextMapCHS",
|
||||
["zh-tw"] = "TextMapCHT",
|
||||
["en-us"] = "TextMapEN",
|
||||
["ru-ru"] = "TextMapRU",
|
||||
};
|
||||
|
||||
public void ConvertResources(string projectResourcesDir)
|
||||
{
|
||||
var currentCultureInfo = Thread.CurrentThread.CurrentUICulture;
|
||||
try
|
||||
{
|
||||
var sb = new StringBuilder(MaterialData.Count * 24);
|
||||
foreach (var language in Languages)
|
||||
{
|
||||
var dir = Path.Combine(projectResourcesDir, language.Key);
|
||||
TextMapData.LoadTextMap(TextMapData.TextMapFilePaths[Array.IndexOf(TextMapData.TextMapFiles, language.Value)]);
|
||||
|
||||
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language.Key);
|
||||
GameData.LoadResources();
|
||||
|
||||
#region Achievement
|
||||
|
||||
// Achievement
|
||||
File.WriteAllLines(
|
||||
Path.Combine(dir, "Achievement.txt"),
|
||||
AchievementData.Values.Where(it => it.IsUsed)
|
||||
.Select(it => $"{it.Id}:{TextMapData.GetText(it.TitleTextMapHash.ToString())} - {TextMapData.GetText(it.DescTextMapHash.ToString())}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
#endregion Achievement
|
||||
|
||||
#region Artifact
|
||||
|
||||
// Artifact
|
||||
File.WriteAllLines(
|
||||
Path.Combine(dir, "Artifact.txt"),
|
||||
ReliquaryData.Values.OrderBy(it => it.Id).Select(it => $"{it.Id}:{TextMapData.GetText(it.NameTextMapHash.ToString())}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
#endregion Artifact
|
||||
|
||||
#region Avatar
|
||||
|
||||
// Avatar
|
||||
File.WriteAllLines(
|
||||
Path.Combine(dir, "Avatar.txt"),
|
||||
MaterialData.Values
|
||||
.Where(it => it.MaterialType == MaterialType.MATERIAL_AVATAR)
|
||||
.Select(it => $"{it.Id}:{TextMapData.GetText(it.NameTextMapHash.ToString())}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
#endregion Avatar
|
||||
|
||||
#region Dungeon
|
||||
|
||||
// Dungeon
|
||||
File.WriteAllLines(
|
||||
Path.Combine(dir, "Dungeon.txt"),
|
||||
DungeonData.Values.Select(it => $"{it.Id}:{TextMapData.GetText(it.NameTextMapHash.ToString())}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
#endregion Dungeon
|
||||
|
||||
#region Gadget
|
||||
|
||||
// Gadget
|
||||
sb.Clear();
|
||||
var gatherMap = new Dictionary<int, int>(GatherData.Count);
|
||||
foreach (var it in GatherData.Where(it => !gatherMap.ContainsKey(it.GadgetId)))
|
||||
gatherMap.Add(it.GadgetId, it.ItemId);
|
||||
var furnitureMap = new Dictionary<int, long>(HomeWorldFurnitureData.Count);
|
||||
foreach (var it in HomeWorldFurnitureData.Values.Where(it => it.FurnitureGadgetId != null))
|
||||
foreach (var gadgetId in it.FurnitureGadgetId.Where(id => id > 0 && !furnitureMap.ContainsKey(id)))
|
||||
furnitureMap.Add(gadgetId, it.NameTextMapHash);
|
||||
var oldFirst = language.Key.StartsWith("zh");
|
||||
foreach (var gadgetTypes in GadgetData.Values.OrderBy(it => it.Id).GroupBy(it => it.Type))
|
||||
{
|
||||
sb.Append("// ").AppendLine(GadgetType.ToTranslatedString(gadgetTypes.Key, language.Key));
|
||||
foreach (var it in gadgetTypes)
|
||||
{
|
||||
var name = oldFirst ? GameData.Gadgets[it.Id] : ItemMap.EmptyName;
|
||||
|
||||
if (name == ItemMap.EmptyName)
|
||||
{
|
||||
if (!TextMapData.TryGetText(it.NameTextMapHash.ToString(), out name)
|
||||
&& !TextMapData.TryGetText(it.InteractNameTextMapHash.ToString(), out name))
|
||||
{
|
||||
if (gatherMap.TryGetValue(it.Id, out var itemId)
|
||||
&& MaterialData.TryGetValue(itemId, out var item))
|
||||
{
|
||||
name = TextMapData.GetText(item.NameTextMapHash.ToString());
|
||||
}
|
||||
else if (furnitureMap.TryGetValue(it.Id, out var hash))
|
||||
{
|
||||
name = TextMapData.GetText(hash.ToString());
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(it.JsonName))
|
||||
{
|
||||
name = it.JsonName;
|
||||
}
|
||||
else if (!oldFirst)
|
||||
{
|
||||
var temp = GameData.Gadgets[it.Id];
|
||||
if (temp != ItemMap.EmptyName)
|
||||
name = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sb.AppendFormat("{0}:{1}", it.Id, name).AppendLine();
|
||||
}
|
||||
sb.AppendLine();
|
||||
}
|
||||
|
||||
// 旧的数据
|
||||
//var old = GameData.Gadgets.AllIds.Where(it => !GadgetData.ContainsKey(it));
|
||||
//if (old.Any())
|
||||
//{
|
||||
// sb.AppendLine("// Old lines");
|
||||
// foreach (var it in old)
|
||||
// sb.AppendFormat("{0}:{1}", it, GameData.Gadgets[it]).AppendLine();
|
||||
//}
|
||||
|
||||
File.WriteAllText(
|
||||
Path.Combine(dir, "Gadget.txt"),
|
||||
sb.ToString(),
|
||||
Encoding.UTF8);
|
||||
|
||||
#endregion Gadget
|
||||
|
||||
#region Item
|
||||
|
||||
// Item
|
||||
sb.Clear();
|
||||
foreach (var itemTypes in MaterialData.Values.GroupBy(it => it.ItemType))
|
||||
{
|
||||
sb.Append("// ").AppendLine(itemTypes.Key.ToTranslatedString(language.Key));
|
||||
if (itemTypes.Key == ItemType.ITEM_MATERIAL)
|
||||
{
|
||||
foreach (var m in itemTypes
|
||||
.GroupBy(it => it.MaterialType)
|
||||
.Where(it => it.Key != MaterialType.MATERIAL_NONE)
|
||||
.OrderBy(it => it.Average(m => m.Id)))
|
||||
{
|
||||
sb.Append("// ").AppendLine(m.Key.ToTranslatedString(language.Key));
|
||||
|
||||
if (m.Key == MaterialType.MATERIAL_BGM)
|
||||
{
|
||||
foreach (var materialData in m)
|
||||
sb.AppendFormat("{0}:{1} - {2}",
|
||||
materialData.Id,
|
||||
TextMapData.GetText(materialData.NameTextMapHash.ToString()),
|
||||
TextMapData.GetText(HomeWorldBgmData[int.Parse(materialData.ItemUse[0].UseParam[0])].BgmNameTextMapHash.ToString())
|
||||
).AppendLine();
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var materialData in m)
|
||||
sb.AppendFormat("{0}:{1}", materialData.Id, TextMapData.GetText(materialData.NameTextMapHash.ToString())).AppendLine();
|
||||
}
|
||||
sb.AppendLine();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var materialData in itemTypes)
|
||||
sb.AppendFormat("{0}:{1}", materialData.Id, TextMapData.GetText(materialData.NameTextMapHash.ToString())).AppendLine();
|
||||
sb.AppendLine();
|
||||
}
|
||||
}
|
||||
|
||||
sb.Append("// ").AppendLine(ItemType.ITEM_FURNITURE.ToTranslatedString(language.Key));
|
||||
foreach (var value in HomeWorldFurnitureData.Values)
|
||||
sb.AppendFormat("{0}:{1}", value.Id, TextMapData.GetText(value.NameTextMapHash.ToString())).AppendLine();
|
||||
|
||||
File.WriteAllText(Path.Combine(dir, "Item.txt"), sb.ToString(), Encoding.UTF8);
|
||||
|
||||
#endregion Item
|
||||
|
||||
#region Monsters
|
||||
|
||||
// Monsters
|
||||
sb.Clear();
|
||||
foreach (var monsterType in MonsterData.Values.OrderBy(it => it.Id)
|
||||
.GroupBy(it => it.Type)
|
||||
.OrderBy(it => it.Key))
|
||||
{
|
||||
sb.Append("// ").AppendLine(monsterType.Key.ToTranslatedString(language.Key));
|
||||
foreach (var monsterData in monsterType)
|
||||
{
|
||||
if (TextMapData.TryGetText(monsterData.NameTextMapHash.ToString(), out var text))
|
||||
{
|
||||
sb.AppendFormat("{0}:{1}", monsterData.Id, text);
|
||||
}
|
||||
else
|
||||
{
|
||||
var name = GameData.Monsters[monsterData.Id];
|
||||
if (name == ItemMap.EmptyName)
|
||||
sb.AppendFormat("{0}:{1} - {2}", monsterData.Id, monsterData.MonsterName, text);
|
||||
else
|
||||
sb.AppendFormat("{0}:{1}", monsterData.Id, name);
|
||||
}
|
||||
sb.AppendLine();
|
||||
}
|
||||
sb.AppendLine();
|
||||
}
|
||||
File.WriteAllText(
|
||||
Path.Combine(dir, "Monsters.txt"),
|
||||
sb.ToString(),
|
||||
Encoding.UTF8);
|
||||
|
||||
#endregion Monsters
|
||||
|
||||
#region Quest
|
||||
|
||||
// Quest
|
||||
sb.Clear();
|
||||
foreach (var it in QuestData.Values.OrderBy(it => it.Id))
|
||||
{
|
||||
var name = GameData.Quests[it.Id];
|
||||
if (name == ItemMap.EmptyName)
|
||||
{
|
||||
sb.AppendFormat("{0}:{1} - {2}",
|
||||
it.Id,
|
||||
TextMapData.GetText(MainQuestData[it.MainId].TitleTextMapHash.ToString()),
|
||||
TextMapData.GetText(it.DescTextMapHash.ToString()));
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.AppendFormat("{0}:{1}", it.Id, name);
|
||||
}
|
||||
sb.AppendLine();
|
||||
}
|
||||
File.WriteAllText(
|
||||
Path.Combine(dir, "Quest.txt"),
|
||||
sb.ToString(),
|
||||
Encoding.UTF8);
|
||||
|
||||
#endregion Quest
|
||||
|
||||
#region Scene
|
||||
|
||||
// Scene
|
||||
sb.Clear();
|
||||
foreach (var it in DungeonData.Values)
|
||||
{
|
||||
var scene = SceneData[it.SceneId];
|
||||
scene.NameTextMapHash = it.NameTextMapHash;
|
||||
}
|
||||
foreach (var it in SceneData.Values.OrderBy(it => it.Id))
|
||||
{
|
||||
if (it.NameTextMapHash == 0 || !TextMapData.TryGetText(it.NameTextMapHash.ToString(), out var name))
|
||||
{
|
||||
name = GameData.Scenes[it.Id];
|
||||
if (name == ItemMap.EmptyName)
|
||||
name = it.ScriptData;
|
||||
}
|
||||
sb.AppendLine($"{it.Id}:{name}");
|
||||
}
|
||||
File.WriteAllText(
|
||||
Path.Combine(dir, "Scene.txt"),
|
||||
sb.ToString(),
|
||||
Encoding.UTF8);
|
||||
|
||||
#endregion Scene
|
||||
|
||||
#region Weapon
|
||||
|
||||
// Weapon
|
||||
File.WriteAllLines(
|
||||
Path.Combine(dir, "Weapon.txt"),
|
||||
WeaponData.Values.Select(it => $"{it.Id}:{TextMapData.GetText(it.NameTextMapHash.ToString())}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
#endregion Weapon
|
||||
}
|
||||
|
||||
File.WriteAllLines(
|
||||
Path.Combine(projectResourcesDir, "AvatarColor.txt"),
|
||||
AvatarData.Values.Select(it => $"{it.Id % 1000 + 1000}:{(int)it.QualityType}"),
|
||||
Encoding.UTF8);
|
||||
|
||||
File.WriteAllLines(
|
||||
Path.Combine(projectResourcesDir, "WeaponColor.txt"),
|
||||
WeaponData.Values.Select(it => $"{it.Id}:{(it.RankLevel >= 5 ? "yellow" : it.RankLevel >= 4 ? "purple" : "blue")}"),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Thread.CurrentThread.CurrentUICulture = currentCultureInfo;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
34
Source/GrasscutterTools/Game/Data/ResourceTypeAttribute.cs
Normal file
34
Source/GrasscutterTools/Game/Data/ResourceTypeAttribute.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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;
|
||||
|
||||
namespace GrasscutterTools.Game.Data
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Class, Inherited = false)]
|
||||
internal class ResourceTypeAttribute : Attribute
|
||||
{
|
||||
public string Name { get; set; }
|
||||
|
||||
public ResourceTypeAttribute(string name)
|
||||
{
|
||||
Name = name;
|
||||
}
|
||||
}
|
||||
}
|
@@ -28,7 +28,7 @@ namespace GrasscutterTools.Game.Gacha
|
||||
/// 使用这个只需替换掉你原来的的data/banner.json文件,
|
||||
/// 然后重启服务器和客户端,即可享受全卡池抽卡,卡池的选择方式是点击左右箭头进行切换
|
||||
/// </summary>
|
||||
public class GachaBanner
|
||||
internal class GachaBanner
|
||||
{
|
||||
/// <summary>
|
||||
/// 添加卡池请从400开始增加id数值进行添加,这个id需要每个池子不一样,
|
||||
|
@@ -25,7 +25,7 @@ namespace GrasscutterTools.Game.Gacha
|
||||
/// <summary>
|
||||
/// https://github.com/Grasscutters/Grasscutter/pull/639
|
||||
/// </summary>
|
||||
public class GachaBanner2
|
||||
internal class GachaBanner2
|
||||
{
|
||||
/// <summary>
|
||||
/// 添加卡池请从400开始增加id数值进行添加,这个id需要每个池子不一样,
|
||||
|
@@ -28,7 +28,7 @@ namespace GrasscutterTools.Game.Gacha
|
||||
/// <summary>
|
||||
/// https://github.com/Grasscutters/Grasscutter/pull/639
|
||||
/// </summary>
|
||||
public class GachaBanner3
|
||||
internal class GachaBanner3
|
||||
{
|
||||
/// <summary>
|
||||
/// 备注
|
||||
|
@@ -22,7 +22,7 @@ using System.Text;
|
||||
|
||||
namespace GrasscutterTools.Game
|
||||
{
|
||||
public class GameCommand
|
||||
internal class GameCommand
|
||||
{
|
||||
public GameCommand(string name, string command)
|
||||
{
|
||||
|
48
Source/GrasscutterTools/Game/Inventory/ItemType.cs
Normal file
48
Source/GrasscutterTools/Game/Inventory/ItemType.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace GrasscutterTools.Game.Inventory
|
||||
{
|
||||
internal enum ItemType
|
||||
{
|
||||
ITEM_NONE = 0,
|
||||
ITEM_VIRTUAL = 1,
|
||||
ITEM_MATERIAL = 2,
|
||||
ITEM_RELIQUARY = 3,
|
||||
ITEM_WEAPON = 4,
|
||||
ITEM_DISPLAY = 5,
|
||||
ITEM_FURNITURE = 6,
|
||||
}
|
||||
|
||||
|
||||
internal static class ItemTypeExtension
|
||||
{
|
||||
private static readonly Dictionary<ItemType, string> TextMapCHS = new Dictionary<ItemType, string>
|
||||
{
|
||||
[ItemType.ITEM_NONE] = "未分类",
|
||||
[ItemType.ITEM_VIRTUAL] = "虚拟道具",
|
||||
[ItemType.ITEM_MATERIAL] = "材料",
|
||||
[ItemType.ITEM_RELIQUARY] = "圣遗物",
|
||||
[ItemType.ITEM_WEAPON] = "物品",
|
||||
[ItemType.ITEM_DISPLAY] = "任务",
|
||||
[ItemType.ITEM_FURNITURE] = "尘歌壶摆设",
|
||||
};
|
||||
private static readonly Dictionary<ItemType, string> TextMapEN = new Dictionary<ItemType, string>
|
||||
{
|
||||
[ItemType.ITEM_NONE] = "None",
|
||||
[ItemType.ITEM_VIRTUAL] = "Virtual",
|
||||
[ItemType.ITEM_MATERIAL] = "Material",
|
||||
[ItemType.ITEM_RELIQUARY] = "Reliquary",
|
||||
[ItemType.ITEM_WEAPON] = "Weapon",
|
||||
[ItemType.ITEM_DISPLAY] = "Display",
|
||||
[ItemType.ITEM_FURNITURE] = "Furniture",
|
||||
};
|
||||
|
||||
public static string ToTranslatedString(this ItemType materialType, string language)
|
||||
{
|
||||
return language.StartsWith("zh") ? TextMapCHS[materialType] : TextMapEN[materialType];
|
||||
}
|
||||
}
|
||||
}
|
175
Source/GrasscutterTools/Game/Inventory/MaterialType.cs
Normal file
175
Source/GrasscutterTools/Game/Inventory/MaterialType.cs
Normal file
@@ -0,0 +1,175 @@
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
// ReSharper disable IdentifierTypo
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace GrasscutterTools.Game.Inventory
|
||||
{
|
||||
/// <summary>
|
||||
/// 材料类型
|
||||
/// </summary>
|
||||
internal enum MaterialType
|
||||
{
|
||||
MATERIAL_NONE = 0,
|
||||
MATERIAL_FOOD = 1,
|
||||
MATERIAL_QUEST = 2,
|
||||
MATERIAL_EXCHANGE = 4,
|
||||
MATERIAL_CONSUME = 5,
|
||||
MATERIAL_EXP_FRUIT = 6,
|
||||
MATERIAL_AVATAR = 7,
|
||||
MATERIAL_ADSORBATE = 8,
|
||||
MATERIAL_CRICKET = 9,
|
||||
MATERIAL_ELEM_CRYSTAL = 10,
|
||||
MATERIAL_WEAPON_EXP_STONE = 11,
|
||||
MATERIAL_CHEST = 12,
|
||||
MATERIAL_RELIQUARY_MATERIAL = 13,
|
||||
MATERIAL_AVATAR_MATERIAL = 14,
|
||||
MATERIAL_NOTICE_ADD_HP = 15,
|
||||
MATERIAL_SEA_LAMP = 16,
|
||||
MATERIAL_SELECTABLE_CHEST = 17,
|
||||
MATERIAL_FLYCLOAK = 18,
|
||||
MATERIAL_NAMECARD = 19,
|
||||
MATERIAL_TALENT = 20,
|
||||
MATERIAL_WIDGET = 21,
|
||||
MATERIAL_CHEST_BATCH_USE = 22,
|
||||
MATERIAL_FAKE_ABSORBATE = 23,
|
||||
MATERIAL_CONSUME_BATCH_USE = 24,
|
||||
MATERIAL_WOOD = 25,
|
||||
MATERIAL_FURNITURE_FORMULA = 27,
|
||||
MATERIAL_CHANNELLER_SLAB_BUFF = 28,
|
||||
MATERIAL_FURNITURE_SUITE_FORMULA = 29,
|
||||
MATERIAL_COSTUME = 30,
|
||||
MATERIAL_HOME_SEED = 31,
|
||||
MATERIAL_FISH_BAIT = 32,
|
||||
MATERIAL_FISH_ROD = 33,
|
||||
MATERIAL_SUMO_BUFF = 34, // sumo 活动道具,never appear
|
||||
MATERIAL_FIREWORKS = 35,
|
||||
MATERIAL_BGM = 36,
|
||||
MATERIAL_SPICE_FOOD = 37,
|
||||
MATERIAL_ACTIVITY_ROBOT = 38,
|
||||
MATERIAL_ACTIVITY_GEAR = 39,
|
||||
MATERIAL_ACTIVITY_JIGSAW = 40,
|
||||
MATERIAL_ARANARA = 41,
|
||||
MATERIAL_GCG_CARD = 42,
|
||||
MATERIAL_GCG_CARD_FACE = 43, // 影幻卡面
|
||||
MATERIAL_GCG_CARD_BACK = 44,
|
||||
MATERIAL_GCG_FIELD = 45,
|
||||
MATERIAL_DESHRET_MANUAL = 46,
|
||||
MATERIAL_RENAME_ITEM = 47,
|
||||
MATERIAL_GCG_EXCHANGE_ITEM = 48,
|
||||
MATERIAL_QUEST_EVENT_BOOK = 49,
|
||||
}
|
||||
|
||||
internal static class MaterialTypeExtension
|
||||
{
|
||||
private static readonly Dictionary<MaterialType, string> TextMapCHS = new Dictionary<MaterialType, string>
|
||||
{
|
||||
[MaterialType.MATERIAL_NONE] = "空",
|
||||
[MaterialType.MATERIAL_FOOD] = "食物",
|
||||
[MaterialType.MATERIAL_QUEST] = "任务",
|
||||
[MaterialType.MATERIAL_EXCHANGE] = "收集物",
|
||||
[MaterialType.MATERIAL_CONSUME] = "消耗品",
|
||||
[MaterialType.MATERIAL_EXP_FRUIT] = "经验书",
|
||||
[MaterialType.MATERIAL_AVATAR] = "角色",
|
||||
[MaterialType.MATERIAL_ADSORBATE] = "能量球",
|
||||
[MaterialType.MATERIAL_CRICKET] = "蛐蛐",
|
||||
[MaterialType.MATERIAL_ELEM_CRYSTAL] = "神瞳",
|
||||
[MaterialType.MATERIAL_WEAPON_EXP_STONE] = "武器锻造矿",
|
||||
[MaterialType.MATERIAL_CHEST] = "宝箱",
|
||||
[MaterialType.MATERIAL_RELIQUARY_MATERIAL] = "圣遗物经验瓶",
|
||||
[MaterialType.MATERIAL_AVATAR_MATERIAL] = "角色天赋材料",
|
||||
[MaterialType.MATERIAL_NOTICE_ADD_HP] = "回血食物",
|
||||
[MaterialType.MATERIAL_SEA_LAMP] = "海灯节",
|
||||
[MaterialType.MATERIAL_SELECTABLE_CHEST] = "自选礼包",
|
||||
[MaterialType.MATERIAL_FLYCLOAK] = "风之翼",
|
||||
[MaterialType.MATERIAL_NAMECARD] = "名片卡",
|
||||
[MaterialType.MATERIAL_TALENT] = "天赋材料",
|
||||
[MaterialType.MATERIAL_WIDGET] = "装饰物",
|
||||
[MaterialType.MATERIAL_CHEST_BATCH_USE] = "礼包",
|
||||
[MaterialType.MATERIAL_FAKE_ABSORBATE] = "MATERIAL_FAKE_ABSORBATE",
|
||||
[MaterialType.MATERIAL_CONSUME_BATCH_USE] = "树脂",
|
||||
[MaterialType.MATERIAL_WOOD] = "树木",
|
||||
[MaterialType.MATERIAL_FURNITURE_FORMULA] = "尘歌壶室内摆设",
|
||||
[MaterialType.MATERIAL_CHANNELLER_SLAB_BUFF] = "增益Buff",
|
||||
[MaterialType.MATERIAL_FURNITURE_SUITE_FORMULA] = "尘歌壶摆设套装",
|
||||
[MaterialType.MATERIAL_COSTUME] = "皮肤",
|
||||
[MaterialType.MATERIAL_HOME_SEED] = "种子",
|
||||
[MaterialType.MATERIAL_FISH_BAIT] = "鱼饵",
|
||||
[MaterialType.MATERIAL_FISH_ROD] = "鱼竿",
|
||||
[MaterialType.MATERIAL_SUMO_BUFF] = "MATERIAL_SUMO_BUFF",
|
||||
[MaterialType.MATERIAL_FIREWORKS] = "烟花",
|
||||
[MaterialType.MATERIAL_BGM] = "旋曜玉帛",
|
||||
[MaterialType.MATERIAL_SPICE_FOOD] = "香气四溢的食物",
|
||||
[MaterialType.MATERIAL_ACTIVITY_ROBOT] = "活动-兑换券",
|
||||
[MaterialType.MATERIAL_ACTIVITY_GEAR] = "活动-齿轮",
|
||||
[MaterialType.MATERIAL_ACTIVITY_JIGSAW] = "活动-部件",
|
||||
[MaterialType.MATERIAL_ARANARA] = "兰纳罗",
|
||||
[MaterialType.MATERIAL_GCG_CARD] = "七圣召唤-卡片",
|
||||
[MaterialType.MATERIAL_GCG_CARD_FACE] = "七圣召唤-卡片-正面",
|
||||
[MaterialType.MATERIAL_GCG_CARD_BACK] = "七圣召唤-卡片-背面",
|
||||
[MaterialType.MATERIAL_GCG_FIELD] = "七圣召唤-卡片-场地",
|
||||
[MaterialType.MATERIAL_DESHRET_MANUAL] = "沙漠书",
|
||||
[MaterialType.MATERIAL_RENAME_ITEM] = "改名卡",
|
||||
[MaterialType.MATERIAL_GCG_EXCHANGE_ITEM] = "七圣召唤-特殊卡",
|
||||
[MaterialType.MATERIAL_QUEST_EVENT_BOOK] = "案件记录册",
|
||||
};
|
||||
private static readonly Dictionary<MaterialType, string> TextMapEN = new Dictionary<MaterialType, string>
|
||||
{
|
||||
[MaterialType.MATERIAL_NONE] = "None",
|
||||
[MaterialType.MATERIAL_FOOD] = "Food",
|
||||
[MaterialType.MATERIAL_QUEST] = "Quest",
|
||||
[MaterialType.MATERIAL_EXCHANGE] = "Exchange",
|
||||
[MaterialType.MATERIAL_CONSUME] = "Consume",
|
||||
[MaterialType.MATERIAL_EXP_FRUIT] = "Exp_fruit",
|
||||
[MaterialType.MATERIAL_AVATAR] = "Avatar",
|
||||
[MaterialType.MATERIAL_ADSORBATE] = "Adsorbate",
|
||||
[MaterialType.MATERIAL_CRICKET] = "Cricket",
|
||||
[MaterialType.MATERIAL_ELEM_CRYSTAL] = "Elem_crystal",
|
||||
[MaterialType.MATERIAL_WEAPON_EXP_STONE] = "Weapon_exp_stone",
|
||||
[MaterialType.MATERIAL_CHEST] = "Chest",
|
||||
[MaterialType.MATERIAL_RELIQUARY_MATERIAL] = "Reliquary_material",
|
||||
[MaterialType.MATERIAL_AVATAR_MATERIAL] = "Avatar_material",
|
||||
[MaterialType.MATERIAL_NOTICE_ADD_HP] = "Notice_add_hp",
|
||||
[MaterialType.MATERIAL_SEA_LAMP] = "Sea_lamp",
|
||||
[MaterialType.MATERIAL_SELECTABLE_CHEST] = "Selectable_chest",
|
||||
[MaterialType.MATERIAL_FLYCLOAK] = "Flycloak",
|
||||
[MaterialType.MATERIAL_NAMECARD] = "Namecard",
|
||||
[MaterialType.MATERIAL_TALENT] = "Talent",
|
||||
[MaterialType.MATERIAL_WIDGET] = "Widget",
|
||||
[MaterialType.MATERIAL_CHEST_BATCH_USE] = "Chest_batch_use",
|
||||
[MaterialType.MATERIAL_FAKE_ABSORBATE] = "Fake_absorbate",
|
||||
[MaterialType.MATERIAL_CONSUME_BATCH_USE] = "Consume_batch_use",
|
||||
[MaterialType.MATERIAL_WOOD] = "Wood",
|
||||
[MaterialType.MATERIAL_FURNITURE_FORMULA] = "Furniture_formula",
|
||||
[MaterialType.MATERIAL_CHANNELLER_SLAB_BUFF] = "Channeller_slab_buff",
|
||||
[MaterialType.MATERIAL_FURNITURE_SUITE_FORMULA] = "Furniture_suite_formula",
|
||||
[MaterialType.MATERIAL_COSTUME] = "Costume",
|
||||
[MaterialType.MATERIAL_HOME_SEED] = "Home_seed",
|
||||
[MaterialType.MATERIAL_FISH_BAIT] = "Fish_bait",
|
||||
[MaterialType.MATERIAL_FISH_ROD] = "Fish_rod",
|
||||
[MaterialType.MATERIAL_SUMO_BUFF] = "Sumo_buff",
|
||||
[MaterialType.MATERIAL_FIREWORKS] = "Fireworks",
|
||||
[MaterialType.MATERIAL_BGM] = "Bgm",
|
||||
[MaterialType.MATERIAL_SPICE_FOOD] = "Spice_food",
|
||||
[MaterialType.MATERIAL_ACTIVITY_ROBOT] = "Activity_robot",
|
||||
[MaterialType.MATERIAL_ACTIVITY_GEAR] = "Activity_gear",
|
||||
[MaterialType.MATERIAL_ACTIVITY_JIGSAW] = "Activity_jigsaw",
|
||||
[MaterialType.MATERIAL_ARANARA] = "Aranara",
|
||||
[MaterialType.MATERIAL_GCG_CARD] = "Gcg_card",
|
||||
[MaterialType.MATERIAL_GCG_CARD_FACE] = "Gcg_card_face",
|
||||
[MaterialType.MATERIAL_GCG_CARD_BACK] = "Gcg_card_back",
|
||||
[MaterialType.MATERIAL_GCG_FIELD] = "Gcg_field",
|
||||
[MaterialType.MATERIAL_DESHRET_MANUAL] = "Deshret_manual",
|
||||
[MaterialType.MATERIAL_RENAME_ITEM] = "Rename_item",
|
||||
[MaterialType.MATERIAL_GCG_EXCHANGE_ITEM] = "Gcg_exchange_item",
|
||||
[MaterialType.MATERIAL_QUEST_EVENT_BOOK] = "Quest_event_book",
|
||||
};
|
||||
|
||||
public static string ToTranslatedString(this MaterialType materialType, string language)
|
||||
{
|
||||
return language.StartsWith("zh") ? TextMapCHS[materialType] : TextMapEN[materialType];
|
||||
}
|
||||
}
|
||||
}
|
@@ -22,7 +22,7 @@ using System.Collections.Generic;
|
||||
|
||||
namespace GrasscutterTools.Game
|
||||
{
|
||||
public class ItemMap
|
||||
internal class ItemMap
|
||||
{
|
||||
public ItemMap(string idNamePairs)
|
||||
{
|
||||
|
@@ -25,7 +25,7 @@ namespace GrasscutterTools.Game
|
||||
/// <summary>
|
||||
/// ID映射组,Key为分类,双斜杠构造
|
||||
/// </summary>
|
||||
public class ItemMapGroup : Dictionary<string, ItemMap>
|
||||
internal class ItemMapGroup : Dictionary<string, ItemMap>
|
||||
{
|
||||
public ItemMapGroup(string idNamePairs)
|
||||
{
|
||||
@@ -64,6 +64,11 @@ namespace GrasscutterTools.Game
|
||||
/// </summary>
|
||||
public IEnumerable<string> AllLines => Values.SelectMany(it => it.Lines);
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有ID
|
||||
/// </summary>
|
||||
public IEnumerable<int> AllIds => Values.SelectMany(it => it.Ids);
|
||||
|
||||
private string[] lines;
|
||||
public string[] Lines => lines ?? (lines = AllLines.ToArray());
|
||||
|
||||
|
@@ -27,7 +27,7 @@ namespace GrasscutterTools.Game.Mail
|
||||
/// <summary>
|
||||
/// 邮件
|
||||
/// </summary>
|
||||
public class Mail
|
||||
internal class Mail
|
||||
{
|
||||
/// <summary>
|
||||
/// 发件人
|
||||
|
92
Source/GrasscutterTools/Game/Props/GadgetType.cs
Normal file
92
Source/GrasscutterTools/Game/Props/GadgetType.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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.Collections.Generic;
|
||||
|
||||
namespace GrasscutterTools.Game.Props
|
||||
{
|
||||
internal static class GadgetType
|
||||
{
|
||||
private static readonly Dictionary<string, string> TextMapCHS = new Dictionary<string, string>
|
||||
{
|
||||
["Gear"] = "机关装置",
|
||||
["Field"] = "领域",
|
||||
["Bullet"] = "技能/飞弹",
|
||||
["Gadget"] = "Gadget",
|
||||
["AirflowField"] = "气流领域",
|
||||
["SpeedupField"] = "加速领域",
|
||||
["GatherObject"] = "采集物品",
|
||||
["Platform"] = "平台",
|
||||
["AmberWind"] = "风琥珀",
|
||||
["Vehicle"] = "载具",
|
||||
["MonsterEquip"] = "怪物装备",
|
||||
["Equip"] = "装备",
|
||||
["SubEquip"] = "副装备",
|
||||
["FishRod"] = "钓鱼竿",
|
||||
["Grass"] = "草",
|
||||
["Water"] = "水",
|
||||
["Tree"] = "树",
|
||||
["Bush"] = "灌木",
|
||||
["Lightning"] = "闪电",
|
||||
["CustomTile"] = "自定义贴图",
|
||||
["TransPointFirst"] = "传送点1",
|
||||
["TransPointSecond"] = "传送点2",
|
||||
["Chest"] = "宝箱",
|
||||
["GeneralRewardPoint"] = "通用奖励点",
|
||||
["OfferingGadget"] = "祭品Gadget",
|
||||
["Worktop"] = "工作台",
|
||||
["CustomGadget"] = "自定义Gadget",
|
||||
["BlackMud"] = "黑色泥浆",
|
||||
["DeshretObeliskGadget"] = "赤王方尖碑",
|
||||
["JourneyGearOperatorGadget"] = "旅途装备操作Gadget",
|
||||
["QuestGadget"] = "任务Gadget",
|
||||
["RoguelikeOperatorGadget"] = "肉鸽 操作台",
|
||||
["NightCrowGadget"] = "幽邃鸦眼",
|
||||
["MpPlayRewardPoint"] = "多人游戏奖励点",
|
||||
["CurveMoveGadget"] = "曲线移动Gadget",
|
||||
["RewardStatue"] = "地城奖励树",
|
||||
["RewardPoint"] = "循环地城奖励点",
|
||||
["Foundation"] = "底座",
|
||||
["Projector"] = "投影仪",
|
||||
["Screen"] = "屏幕",
|
||||
["CoinCollectLevelGadget"] = "金币收集等级Gadget",
|
||||
["EchoShell"] = "回声海螺",
|
||||
["UgcSpecialGadget"] = "UGC特殊Gadget",
|
||||
["UgcTowerLevelUpGadget"] = "UGC塔升级Gadget",
|
||||
["GatherPoint"] = "采集物挂接点",
|
||||
["MiracleRing"] = "奇迹之环",
|
||||
["EnvAnimal"] = "环境动物",
|
||||
["EnergyBall"] = "能量球",
|
||||
["SealGadget"] = "封印Gadget",
|
||||
["ViewPoint"] = "观景点",
|
||||
["FishPool"] = "钓鱼点",
|
||||
["ElemCrystal"] = "元素水晶",
|
||||
["Deprecated"] = "弃用",
|
||||
["WindSeed"] = "风种子",
|
||||
["UIInteractGadget"] = "界面交互Gadget",
|
||||
["Camera"] = "摄像机",
|
||||
};
|
||||
|
||||
public static string ToTranslatedString(string gadgetType, string language)
|
||||
{
|
||||
if (string.IsNullOrEmpty(gadgetType)) gadgetType = "Deprecated";
|
||||
return language.StartsWith("zh") ? TextMapCHS[gadgetType] : gadgetType;
|
||||
}
|
||||
}
|
||||
}
|
29
Source/GrasscutterTools/Game/Props/ItemUseData.cs
Normal file
29
Source/GrasscutterTools/Game/Props/ItemUseData.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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 Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Props
|
||||
{
|
||||
internal class ItemUseData
|
||||
{
|
||||
[JsonProperty("useParam")]
|
||||
public string[] UseParam { get; set; }
|
||||
}
|
||||
}
|
69
Source/GrasscutterTools/Game/Props/MonsterType.cs
Normal file
69
Source/GrasscutterTools/Game/Props/MonsterType.cs
Normal file
@@ -0,0 +1,69 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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/>.
|
||||
*
|
||||
**/
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace GrasscutterTools.Game.Props
|
||||
{
|
||||
/// <summary>
|
||||
/// 怪物种类
|
||||
/// </summary>
|
||||
internal enum MonsterType
|
||||
{
|
||||
MONSTER_NONE = 0,
|
||||
MONSTER_ORDINARY = 1,
|
||||
MONSTER_BOSS = 2,
|
||||
MONSTER_ENV_ANIMAL = 3,
|
||||
MONSTER_LITTLE_MONSTER = 4,
|
||||
MONSTER_FISH = 5,
|
||||
MONSTER_PARTNER = 6,
|
||||
}
|
||||
|
||||
internal static class ItemTypeExtension
|
||||
{
|
||||
private static readonly Dictionary<MonsterType, string> TextMapCHS = new Dictionary<MonsterType, string>
|
||||
{
|
||||
[MonsterType.MONSTER_NONE] = "未分类",
|
||||
[MonsterType.MONSTER_ORDINARY] = "普通怪物",
|
||||
[MonsterType.MONSTER_BOSS] = "BOSS",
|
||||
[MonsterType.MONSTER_ENV_ANIMAL] = "动物",
|
||||
[MonsterType.MONSTER_LITTLE_MONSTER] = "小怪",
|
||||
[MonsterType.MONSTER_FISH] = "鱼",
|
||||
[MonsterType.MONSTER_PARTNER] = "友军",
|
||||
};
|
||||
|
||||
private static readonly Dictionary<MonsterType, string> TextMapEN = new Dictionary<MonsterType, string>
|
||||
{
|
||||
[MonsterType.MONSTER_NONE] = "None",
|
||||
[MonsterType.MONSTER_ORDINARY] = "Ordinary",
|
||||
[MonsterType.MONSTER_BOSS] = "Boss",
|
||||
[MonsterType.MONSTER_ENV_ANIMAL] = "Env_animal",
|
||||
[MonsterType.MONSTER_LITTLE_MONSTER] = "Little_monster",
|
||||
[MonsterType.MONSTER_FISH] = "Fish",
|
||||
[MonsterType.MONSTER_PARTNER] = "Partner",
|
||||
};
|
||||
|
||||
public static string ToTranslatedString(this MonsterType materialType, string language)
|
||||
{
|
||||
return language.StartsWith("zh") ? TextMapCHS[materialType] : TextMapEN[materialType];
|
||||
}
|
||||
}
|
||||
}
|
62
Source/GrasscutterTools/Game/Props/QualityType.cs
Normal file
62
Source/GrasscutterTools/Game/Props/QualityType.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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/>.
|
||||
*
|
||||
**/
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
namespace GrasscutterTools.Game.Props
|
||||
{
|
||||
internal enum QualityType
|
||||
{
|
||||
/// <summary>
|
||||
/// 无
|
||||
/// </summary>
|
||||
QUALITY_NONE = 0,
|
||||
|
||||
/// <summary>
|
||||
/// 一星
|
||||
/// </summary>
|
||||
QUALITY_WHITE = 1,
|
||||
|
||||
/// <summary>
|
||||
/// 二星
|
||||
/// </summary>
|
||||
QUALITY_GREEN = 2,
|
||||
|
||||
/// <summary>
|
||||
/// 三星
|
||||
/// </summary>
|
||||
QUALITY_BLUE = 3,
|
||||
|
||||
/// <summary>
|
||||
/// 四星
|
||||
/// </summary>
|
||||
QUALITY_PURPLE = 4,
|
||||
|
||||
/// <summary>
|
||||
/// 五星
|
||||
/// </summary>
|
||||
QUALITY_ORANGE = 5,
|
||||
|
||||
/// <summary>
|
||||
/// 限定五星
|
||||
/// </summary>
|
||||
//QUALITY_ORANGE_SP = 105,
|
||||
QUALITY_ORANGE_SP = 5,
|
||||
}
|
||||
}
|
34
Source/GrasscutterTools/Game/Props/SceneType.cs
Normal file
34
Source/GrasscutterTools/Game/Props/SceneType.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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/>.
|
||||
*
|
||||
**/
|
||||
|
||||
// ReSharper disable InconsistentNaming
|
||||
|
||||
namespace GrasscutterTools.Game.Props
|
||||
{
|
||||
public enum SceneType
|
||||
{
|
||||
SCENE_NONE = 0,
|
||||
SCENE_WORLD = 1,
|
||||
SCENE_DUNGEON = 2,
|
||||
SCENE_ROOM = 3,
|
||||
SCENE_HOME_WORLD = 4,
|
||||
SCENE_HOME_ROOM = 5,
|
||||
SCENE_ACTIVITY = 6,
|
||||
}
|
||||
}
|
@@ -25,7 +25,7 @@ using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace GrasscutterTools.Game.Shop
|
||||
{
|
||||
public class ShopGoodsData
|
||||
internal class ShopGoodsData
|
||||
{
|
||||
[JsonProperty("goodsId")]
|
||||
public int GoodsId { get; set; }
|
||||
|
@@ -26,7 +26,7 @@ using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace GrasscutterTools.Game.Shop
|
||||
{
|
||||
public class ShopInfo
|
||||
internal class ShopInfo
|
||||
{
|
||||
public ShopInfo()
|
||||
{
|
||||
|
@@ -23,7 +23,7 @@ using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game.Shop
|
||||
{
|
||||
public class ShopTable
|
||||
internal class ShopTable
|
||||
{
|
||||
[JsonProperty("shopId")]
|
||||
public int ShopType { get; set; }
|
||||
|
@@ -26,7 +26,7 @@ using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.Game
|
||||
{
|
||||
public class TextMapData
|
||||
internal class TextMapData
|
||||
{
|
||||
public TextMapData(string resourcesDirPath)
|
||||
{
|
||||
@@ -44,6 +44,8 @@ namespace GrasscutterTools.Game
|
||||
|
||||
private void LoadManualTextMap(string manualTextMapPath)
|
||||
{
|
||||
if (!File.Exists(manualTextMapPath)) return;
|
||||
|
||||
using (var fs = File.OpenRead(manualTextMapPath))
|
||||
using (var sr = new StreamReader(fs))
|
||||
using (var reader = new JsonTextReader(sr))
|
||||
@@ -86,11 +88,30 @@ namespace GrasscutterTools.Game
|
||||
}
|
||||
}
|
||||
|
||||
public bool Contains(string textMapPath) => TextMap.ContainsKey(textMapPath) || DefaultTextMap.ContainsKey(textMapPath);
|
||||
|
||||
public string GetText(string textMapHash)
|
||||
{
|
||||
return TextMap.TryGetValue(textMapHash, out var text) ? text
|
||||
: DefaultTextMap.TryGetValue(textMapHash, out text) ? text
|
||||
: "???";
|
||||
: DefaultTextMap.TryGetValue(textMapHash, out text) ? "[CHS] - " + text
|
||||
: "[N/A] " + textMapHash;
|
||||
}
|
||||
|
||||
public bool TryGetText(string textMapHash, out string text)
|
||||
{
|
||||
if (TextMap.TryGetValue(textMapHash, out text))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (DefaultTextMap.TryGetValue(textMapHash, out text))
|
||||
{
|
||||
text = "[CHS] - " + text;
|
||||
return true;
|
||||
}
|
||||
|
||||
text = "[N/A] " + textMapHash;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@@ -139,6 +139,22 @@
|
||||
<Compile Include="Game\Activity\NewActivityItem.cs" />
|
||||
<Compile Include="Game\CommandVersion.cs" />
|
||||
<Compile Include="Game\CutScene\CutSceneItem.cs" />
|
||||
<Compile Include="Game\Data\Excels\AvatarData.cs" />
|
||||
<Compile Include="Game\Data\Excels\AchievementData.cs" />
|
||||
<Compile Include="Game\Data\Excels\DungeonData.cs" />
|
||||
<Compile Include="Game\Data\Excels\GadgetData.cs" />
|
||||
<Compile Include="Game\Data\Excels\GatherData.cs" />
|
||||
<Compile Include="Game\Data\Excels\HomeWorldBgmData.cs" />
|
||||
<Compile Include="Game\Data\Excels\HomeWorldFurnitureData.cs" />
|
||||
<Compile Include="Game\Data\Excels\MaterialData.cs" />
|
||||
<Compile Include="Game\Data\Excels\MainQuestData.cs" />
|
||||
<Compile Include="Game\Data\Excels\QuestData.cs" />
|
||||
<Compile Include="Game\Data\Excels\ReliquaryData.cs" />
|
||||
<Compile Include="Game\Data\Excels\MonsterData.cs" />
|
||||
<Compile Include="Game\Data\Excels\SceneData.cs" />
|
||||
<Compile Include="Game\Data\GameResource.cs" />
|
||||
<Compile Include="Game\Data\GameResources.cs" />
|
||||
<Compile Include="Game\Data\ResourceTypeAttribute.cs" />
|
||||
<Compile Include="Game\Drop\DropData.cs" />
|
||||
<Compile Include="Game\Drop\DropInfo.cs" />
|
||||
<Compile Include="Game\Dungeon\DungeonItem.cs" />
|
||||
@@ -148,12 +164,20 @@
|
||||
<Compile Include="Game\Gacha\BannerType.cs" />
|
||||
<Compile Include="Game\Gacha\GachaBanner.cs" />
|
||||
<Compile Include="Game\GameData.cs" />
|
||||
<Compile Include="Game\Inventory\ItemType.cs" />
|
||||
<Compile Include="Game\Inventory\MaterialType.cs" />
|
||||
<Compile Include="Game\Data\Excels\WeaponData.cs" />
|
||||
<Compile Include="Game\ItemMap.cs" />
|
||||
<Compile Include="Game\ItemMapGroup.cs" />
|
||||
<Compile Include="Game\Mail\Mail.cs" />
|
||||
<Compile Include="Game\Mail\MailItem.cs" />
|
||||
<Compile Include="Game\Player\PlayerData.cs" />
|
||||
<Compile Include="Game\Props\GadgetType.cs" />
|
||||
<Compile Include="Game\Props\ItemUseData.cs" />
|
||||
<Compile Include="Game\Props\MonsterType.cs" />
|
||||
<Compile Include="Game\Props\PlayerProperty.cs" />
|
||||
<Compile Include="Game\Props\QualityType.cs" />
|
||||
<Compile Include="Game\Props\SceneType.cs" />
|
||||
<Compile Include="Game\SetStatsCommand.cs" />
|
||||
<Compile Include="Game\Shop\ItemParamData.cs" />
|
||||
<Compile Include="Game\Shop\ShopGoodsData.cs" />
|
||||
@@ -295,6 +319,7 @@
|
||||
<Compile Include="Utils\HttpHelper.cs" />
|
||||
<Compile Include="Utils\Logger.cs" />
|
||||
<Compile Include="Utils\GithubHelper.cs" />
|
||||
<Compile Include="Utils\SparseSet.cs" />
|
||||
<Compile Include="Utils\ToggleParser.cs" />
|
||||
<Compile Include="Utils\UIUtil.cs" />
|
||||
<EmbeddedResource Include="Forms\FormActivityEditor.en-US.resx">
|
||||
@@ -464,6 +489,7 @@
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageGiveItem.resx">
|
||||
<DependentUpon>PageGiveItem.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageGiveItem.ru-RU.resx">
|
||||
<DependentUpon>PageGiveItem.cs</DependentUpon>
|
||||
@@ -585,6 +611,7 @@
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageSpawn.resx">
|
||||
<DependentUpon>PageSpawn.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Pages\PageSpawn.ru-RU.resx">
|
||||
<DependentUpon>PageSpawn.cs</DependentUpon>
|
||||
@@ -642,6 +669,7 @@
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="GrasscutterTools.licenseheader" />
|
||||
<None Include="GrasscutterTools.snk" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
@@ -741,6 +769,7 @@
|
||||
<Content Include="Resources\zh-tw\Cutscene.txt" />
|
||||
<Content Include="Resources\zh-tw\GachaBennerTitle.txt" />
|
||||
<Content Include="Resources\zh-tw\GachaBennerPrefab.txt" />
|
||||
<None Include="Resources\zh-tw\Gadget.txt" />
|
||||
<Content Include="Resources\zh-tw\Item.txt" />
|
||||
<Content Include="Resources\zh-tw\Monsters.txt" />
|
||||
<Content Include="Resources\zh-tw\PlayerProperty.txt" />
|
||||
|
19
Source/GrasscutterTools/GrasscutterTools.licenseheader
Normal file
19
Source/GrasscutterTools/GrasscutterTools.licenseheader
Normal file
@@ -0,0 +1,19 @@
|
||||
extensions: .cs
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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/>.
|
||||
*
|
||||
**/
|
@@ -26,7 +26,7 @@ using Newtonsoft.Json;
|
||||
|
||||
namespace GrasscutterTools.OpenCommand
|
||||
{
|
||||
public class OpenCommandAPI
|
||||
internal class OpenCommandAPI
|
||||
{
|
||||
public OpenCommandAPI(string host, string token = "")
|
||||
{
|
||||
|
@@ -117,310 +117,313 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name=">>BtnExportCustomCommands.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Text" xml:space="preserve">
|
||||
<value>快捷键</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Text" xml:space="preserve">
|
||||
<value>重置</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.11.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="BtnSaveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>405, 206</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>471, 206</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="BtnLoadCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<data name="BtnExportCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>32, 17</value>
|
||||
</data>
|
||||
<data name=">>BtnExportCustomCommands.Name" xml:space="preserve">
|
||||
<value>BtnExportCustomCommands</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>537, 206</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>60, 30</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>41, 210</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name=">>BtnExportCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.Name" xml:space="preserve">
|
||||
<value>BtnLoadCustomCommands</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="BtnAddHotKey.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
|
||||
<value>导出</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.Name" xml:space="preserve">
|
||||
<value>LnkResetCustomCommands</value>
|
||||
</data>
|
||||
<data name="LblCustomName.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>32, 17</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 30</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Text" xml:space="preserve">
|
||||
<value>标签</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>60, 30</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.Name" xml:space="preserve">
|
||||
<value>GrpCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>BtnAddHotKey.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.Name" xml:space="preserve">
|
||||
<value>BtnRemoveCustomCommand</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="BtnExportCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>593, 206</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 30</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.Name" xml:space="preserve">
|
||||
<value>FLPCustomCommands</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="BtnExportCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>593, 206</value>
|
||||
<data name="BtnExportCustomCommands.Text" xml:space="preserve">
|
||||
<value>导出</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<data name=">>BtnExportCustomCommands.Name" xml:space="preserve">
|
||||
<value>BtnExportCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="LblCustomName.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.Type" xml:space="preserve">
|
||||
<data name=">>BtnExportCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 19</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>277, 23</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>602, -1</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Text" xml:space="preserve">
|
||||
<value>√ 保存</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.Parent" xml:space="preserve">
|
||||
<value>GrpCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>7, 17</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 30</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.Parent" xml:space="preserve">
|
||||
<data name=">>BtnExportCustomCommands.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>324, 206</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.Parent" xml:space="preserve">
|
||||
<value>GrpCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="BtnExportCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>634, 178</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>640, 200</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>PageCustomCommands</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Text" xml:space="preserve">
|
||||
<value>列表</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
|
||||
<value>× 删除</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnExportCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.Name" xml:space="preserve">
|
||||
<value>TxtCustomName</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.AutoScroll" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<data name="BtnLoadCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name=">>BtnAddHotKey.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 213</value>
|
||||
</data>
|
||||
<data name=">>BtnAddHotKey.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.Name" xml:space="preserve">
|
||||
<value>BtnSaveCustomCommand</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Text" xml:space="preserve">
|
||||
<value>载入</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="LblCustomName.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>537, 206</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 30</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="BtnLoadCustomCommands.Text" xml:space="preserve">
|
||||
<value>载入</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.Name" xml:space="preserve">
|
||||
<value>BtnLoadCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnLoadCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="LblCustomName.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblCustomName.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 213</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>32, 17</value>
|
||||
</data>
|
||||
<data name="LblCustomName.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="LblCustomName.Text" xml:space="preserve">
|
||||
<value>标签</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.Name" xml:space="preserve">
|
||||
<value>LblCustomName</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblCustomName.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>602, -1</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>32, 17</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="LnkResetCustomCommands.Text" xml:space="preserve">
|
||||
<value>重置</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.Name" xml:space="preserve">
|
||||
<value>LnkResetCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.Parent" xml:space="preserve">
|
||||
<value>GrpCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>LnkResetCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.AutoScroll" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>Microsoft YaHei UI, 11pt</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 19</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>634, 178</value>
|
||||
</data>
|
||||
<data name="FLPCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.Name" xml:space="preserve">
|
||||
<value>FLPCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.Parent" xml:space="preserve">
|
||||
<value>GrpCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>FLPCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 3</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>640, 200</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="GrpCustomCommands.Text" xml:space="preserve">
|
||||
<value>列表</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.Name" xml:space="preserve">
|
||||
<value>GrpCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>GrpCustomCommands.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>471, 206</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>60, 30</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="BtnRemoveCustomCommand.Text" xml:space="preserve">
|
||||
<value>× 删除</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.Name" xml:space="preserve">
|
||||
<value>BtnRemoveCustomCommand</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnRemoveCustomCommand.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>405, 206</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>60, 30</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="BtnSaveCustomCommand.Text" xml:space="preserve">
|
||||
<value>√ 保存</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.Name" xml:space="preserve">
|
||||
<value>BtnSaveCustomCommand</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnSaveCustomCommand.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>41, 210</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>277, 23</value>
|
||||
</data>
|
||||
<data name="TxtCustomName.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.Name" xml:space="preserve">
|
||||
<value>TxtCustomName</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>TxtCustomName.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>324, 206</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 30</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name="BtnAddHotKey.Text" xml:space="preserve">
|
||||
<value>快捷键</value>
|
||||
</data>
|
||||
<data name=">>BtnAddHotKey.Name" xml:space="preserve">
|
||||
<value>BtnAddHotKey</value>
|
||||
</data>
|
||||
<data name=">>BtnAddHotKey.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnAddHotKey.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnAddHotKey.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>7, 17</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>PageCustomCommands</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.12.2.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
</data>
|
||||
</root>
|
@@ -43,7 +43,7 @@
|
||||
this.NUDGameItemAmout = new System.Windows.Forms.NumericUpDown();
|
||||
this.NUDGameItemLevel = new System.Windows.Forms.NumericUpDown();
|
||||
this.LblGiveCommandDescription = new System.Windows.Forms.Label();
|
||||
this.BtnFilterItem = new System.Windows.Forms.Button();
|
||||
this.CmbFilterItem = new System.Windows.Forms.ComboBox();
|
||||
this.MenuItemFilter = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.GrpGiveItemRecord.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDGameItemAmout)).BeginInit();
|
||||
@@ -162,12 +162,12 @@
|
||||
resources.ApplyResources(this.LblGiveCommandDescription, "LblGiveCommandDescription");
|
||||
this.LblGiveCommandDescription.Name = "LblGiveCommandDescription";
|
||||
//
|
||||
// BtnFilterItem
|
||||
// CmbFilterItem
|
||||
//
|
||||
resources.ApplyResources(this.BtnFilterItem, "BtnFilterItem");
|
||||
this.BtnFilterItem.Name = "BtnFilterItem";
|
||||
this.BtnFilterItem.UseVisualStyleBackColor = true;
|
||||
this.BtnFilterItem.Click += new System.EventHandler(this.BtnFilterItem_Click);
|
||||
this.CmbFilterItem.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
resources.ApplyResources(this.CmbFilterItem, "CmbFilterItem");
|
||||
this.CmbFilterItem.Name = "CmbFilterItem";
|
||||
this.CmbFilterItem.SelectedIndexChanged += new System.EventHandler(this.CmbFilterItem_SelectedIndexChanged);
|
||||
//
|
||||
// MenuItemFilter
|
||||
//
|
||||
@@ -178,7 +178,7 @@
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.BtnFilterItem);
|
||||
this.Controls.Add(this.CmbFilterItem);
|
||||
this.Controls.Add(this.LblClearGiveItemLogs);
|
||||
this.Controls.Add(this.BtnSaveGiveItemLog);
|
||||
this.Controls.Add(this.BtnRemoveGiveItemLog);
|
||||
@@ -215,7 +215,7 @@
|
||||
private System.Windows.Forms.NumericUpDown NUDGameItemAmout;
|
||||
private System.Windows.Forms.NumericUpDown NUDGameItemLevel;
|
||||
private System.Windows.Forms.Label LblGiveCommandDescription;
|
||||
private System.Windows.Forms.Button BtnFilterItem;
|
||||
private System.Windows.Forms.ComboBox CmbFilterItem;
|
||||
private System.Windows.Forms.ContextMenuStrip MenuItemFilter;
|
||||
}
|
||||
}
|
||||
|
@@ -41,33 +41,28 @@ namespace GrasscutterTools.Pages
|
||||
InitGiveItemRecord();
|
||||
}
|
||||
|
||||
private List<string[]> ItemList;
|
||||
|
||||
/// <summary>
|
||||
/// 初始化游戏物品列表
|
||||
/// </summary>
|
||||
public override void OnLoad()
|
||||
{
|
||||
MenuItemFilter.SuspendLayout();
|
||||
MenuItemFilter.Items.Clear();
|
||||
var types = new List<string>();
|
||||
var itemList = new List<string[]>();
|
||||
|
||||
types.Add(Resources.All);
|
||||
SelectedItemTypeLines = GameData.Items.Lines;
|
||||
var all = new ToolStripMenuItem
|
||||
{
|
||||
Text = Resources.All,
|
||||
Tag = SelectedItemTypeLines,
|
||||
};
|
||||
all.Click += OnItemFilterClick;
|
||||
MenuItemFilter.Items.Add(all);
|
||||
itemList.Add(SelectedItemTypeLines);
|
||||
foreach (var kv in GameData.Items)
|
||||
{
|
||||
var item = new ToolStripMenuItem
|
||||
{
|
||||
Text = kv.Key,
|
||||
Tag = kv.Value.Lines,
|
||||
};
|
||||
item.Click += OnItemFilterClick;
|
||||
MenuItemFilter.Items.Add(item);
|
||||
types.Add(kv.Key);
|
||||
itemList.Add(kv.Value.Lines);
|
||||
}
|
||||
MenuItemFilter.ResumeLayout();
|
||||
|
||||
CmbFilterItem.DataSource = types;
|
||||
ItemList = itemList;
|
||||
|
||||
LoadItemList();
|
||||
}
|
||||
|
||||
@@ -77,12 +72,14 @@ namespace GrasscutterTools.Pages
|
||||
private string[] SelectedItemTypeLines;
|
||||
|
||||
/// <summary>
|
||||
/// 物品类型过滤器类型选中时触发
|
||||
/// 点击过滤物品按钮时触发
|
||||
/// </summary>
|
||||
private void OnItemFilterClick(object sender, EventArgs e)
|
||||
private void CmbFilterItem_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
var btn = sender as ToolStripMenuItem;
|
||||
SelectedItemTypeLines = btn.Tag as string[];
|
||||
if (CmbFilterItem.SelectedIndex < 0 || ItemList == null) return;
|
||||
var lines = ItemList[CmbFilterItem.SelectedIndex];
|
||||
if (SelectedItemTypeLines == lines) return;
|
||||
SelectedItemTypeLines = lines;
|
||||
LoadItemList();
|
||||
}
|
||||
|
||||
@@ -150,13 +147,6 @@ namespace GrasscutterTools.Pages
|
||||
GenGiveItemCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 点击过滤物品按钮时触发
|
||||
/// </summary>
|
||||
private void BtnFilterItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
MenuItemFilter.Show(BtnFilterItem, 0, BtnFilterItem.Height);
|
||||
}
|
||||
|
||||
#region -- 物品记录 --
|
||||
|
||||
|
@@ -301,10 +301,10 @@
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="TxtGameItemFilter.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>343, 3</value>
|
||||
<value>498, 3</value>
|
||||
</data>
|
||||
<data name="TxtGameItemFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>268, 23</value>
|
||||
<value>145, 23</value>
|
||||
</data>
|
||||
<data name="TxtGameItemFilter.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
@@ -493,35 +493,29 @@
|
||||
<data name=">>LblGiveCommandDescription.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="BtnFilterItem.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="BtnFilterItem.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<data name="CmbFilterItem.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BtnFilterItem.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>617, 3</value>
|
||||
<data name="CmbFilterItem.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>342, 2</value>
|
||||
</data>
|
||||
<data name="BtnFilterItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>26, 24</value>
|
||||
<data name="CmbFilterItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>150, 25</value>
|
||||
</data>
|
||||
<data name="BtnFilterItem.TabIndex" type="System.Int32, mscorlib">
|
||||
<data name="CmbFilterItem.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="BtnFilterItem.Text" xml:space="preserve">
|
||||
<value>三</value>
|
||||
<data name=">>CmbFilterItem.Name" xml:space="preserve">
|
||||
<value>CmbFilterItem</value>
|
||||
</data>
|
||||
<data name=">>BtnFilterItem.Name" xml:space="preserve">
|
||||
<value>BtnFilterItem</value>
|
||||
<data name=">>CmbFilterItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnFilterItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnFilterItem.Parent" xml:space="preserve">
|
||||
<data name=">>CmbFilterItem.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnFilterItem.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<data name=">>CmbFilterItem.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="MenuItemFilter.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
@@ -545,6 +539,6 @@
|
||||
<value>PageGiveItem</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.7.6.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.12.1.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
</data>
|
||||
</root>
|
@@ -26,6 +26,7 @@ using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using GrasscutterTools.DispatchServer;
|
||||
using GrasscutterTools.DispatchServer.Model;
|
||||
using GrasscutterTools.Game;
|
||||
using GrasscutterTools.GOOD;
|
||||
using GrasscutterTools.OpenCommand;
|
||||
@@ -125,7 +126,7 @@ namespace GrasscutterTools.Pages
|
||||
// 自动尝试查询本地服务端地址,降低使用门槛
|
||||
Task.Run(async () =>
|
||||
{
|
||||
var localhosts = new string[] {
|
||||
var localhostList = new[] {
|
||||
"http://127.0.0.1:443",
|
||||
"https://127.0.0.1",
|
||||
"http://127.0.0.1",
|
||||
@@ -133,13 +134,13 @@ namespace GrasscutterTools.Pages
|
||||
"http://127.0.0.1:8080",
|
||||
"https://127.0.0.1:8080",
|
||||
};
|
||||
foreach (var host in localhosts)
|
||||
foreach (var host in localhostList)
|
||||
{
|
||||
try
|
||||
{
|
||||
await UpdateServerStatus(host);
|
||||
// 自动填写本地服务端地址
|
||||
TxtHost.Text = host;
|
||||
BeginInvoke(new Action(() => TxtHost.Text = host));
|
||||
break;
|
||||
}
|
||||
catch (Exception)
|
||||
@@ -169,6 +170,14 @@ namespace GrasscutterTools.Pages
|
||||
private async Task UpdateServerStatus(string host)
|
||||
{
|
||||
var status = await DispatchServerAPI.QueryServerStatus(host);
|
||||
if (InvokeRequired)
|
||||
BeginInvoke(new Action<ServerStatus>(ShowServerStatus), status);
|
||||
else
|
||||
ShowServerStatus(status);
|
||||
}
|
||||
|
||||
private void ShowServerStatus(ServerStatus status)
|
||||
{
|
||||
LblServerVersion.Text = status.Version;
|
||||
LblPlayerCount.Text = status.MaxPlayer > 0 ? $"{status.PlayerCount}/{status.MaxPlayer}" : status.PlayerCount.ToString();
|
||||
}
|
||||
|
20
Source/GrasscutterTools/Pages/PageScene.Designer.cs
generated
20
Source/GrasscutterTools/Pages/PageScene.Designer.cs
generated
@@ -46,6 +46,8 @@
|
||||
this.ListScenes = new System.Windows.Forms.ListBox();
|
||||
this.LblTp = new System.Windows.Forms.Label();
|
||||
this.RbListCutScene = new System.Windows.Forms.RadioButton();
|
||||
this.ChkLockClimate = new System.Windows.Forms.CheckBox();
|
||||
this.BtnFreezeTime = new System.Windows.Forms.Button();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDTpZ)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDTpY)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUDTpX)).BeginInit();
|
||||
@@ -203,10 +205,26 @@
|
||||
this.RbListCutScene.UseVisualStyleBackColor = true;
|
||||
this.RbListCutScene.CheckedChanged += new System.EventHandler(this.RbListCutScene_CheckedChanged);
|
||||
//
|
||||
// ChkLockClimate
|
||||
//
|
||||
resources.ApplyResources(this.ChkLockClimate, "ChkLockClimate");
|
||||
this.ChkLockClimate.Name = "ChkLockClimate";
|
||||
this.ChkLockClimate.UseVisualStyleBackColor = true;
|
||||
this.ChkLockClimate.CheckedChanged += new System.EventHandler(this.ChkLockClimate_CheckedChanged);
|
||||
//
|
||||
// BtnFreezeTime
|
||||
//
|
||||
resources.ApplyResources(this.BtnFreezeTime, "BtnFreezeTime");
|
||||
this.BtnFreezeTime.Name = "BtnFreezeTime";
|
||||
this.BtnFreezeTime.UseVisualStyleBackColor = true;
|
||||
this.BtnFreezeTime.Click += new System.EventHandler(this.BtnFreezeTime_Click);
|
||||
//
|
||||
// PageScene
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.BtnFreezeTime);
|
||||
this.Controls.Add(this.ChkLockClimate);
|
||||
this.Controls.Add(this.RbListCutScene);
|
||||
this.Controls.Add(this.RbListDungeons);
|
||||
this.Controls.Add(this.RbListScene);
|
||||
@@ -252,5 +270,7 @@
|
||||
private System.Windows.Forms.ListBox ListScenes;
|
||||
private System.Windows.Forms.Label LblTp;
|
||||
private System.Windows.Forms.RadioButton RbListCutScene;
|
||||
private System.Windows.Forms.CheckBox ChkLockClimate;
|
||||
private System.Windows.Forms.Button BtnFreezeTime;
|
||||
}
|
||||
}
|
||||
|
@@ -156,5 +156,21 @@ namespace GrasscutterTools.Pages
|
||||
args += $" {GameData.Scenes.Ids[ListScenes.SelectedIndex]}";
|
||||
SetCommand("/tp", args);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 锁定天气
|
||||
/// </summary>
|
||||
private void ChkLockClimate_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
SetCommand("/prop", $"is_weather_locked {(ChkLockClimate.Checked ? "on" : "off")}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 冻结游戏时间
|
||||
/// </summary>
|
||||
private void BtnFreezeTime_Click(object sender, EventArgs e)
|
||||
{
|
||||
SetCommand("/prop", "is_game_time_locked on");
|
||||
}
|
||||
}
|
||||
}
|
@@ -182,4 +182,13 @@ In the command, you can use ~ to indicate the current position, and ~N to indica
|
||||
<data name="RbListCutScene.Text" xml:space="preserve">
|
||||
<value>Cutscene</value>
|
||||
</data>
|
||||
<data name="ChkLockClimate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>54, 21</value>
|
||||
</data>
|
||||
<data name="ChkLockClimate.Text" xml:space="preserve">
|
||||
<value>Lock</value>
|
||||
</data>
|
||||
<data name="BtnFreezeTime.Text" xml:space="preserve">
|
||||
<value>Freeze Time</value>
|
||||
</data>
|
||||
</root>
|
@@ -129,7 +129,7 @@
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="BtnTeleport.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
<value>75, 25</value>
|
||||
</data>
|
||||
<data name=">>TxtSceneFilter.Name" xml:space="preserve">
|
||||
<value>TxtSceneFilter</value>
|
||||
@@ -145,7 +145,7 @@
|
||||
<value>14, 17</value>
|
||||
</data>
|
||||
<data name=">>RbListCutScene.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>LblTpY.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
@@ -163,19 +163,22 @@
|
||||
<value>343, 28</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.ZOrder" xml:space="preserve">
|
||||
<value>12</value>
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name=">>LblSceneDescription.Name" xml:space="preserve">
|
||||
<value>LblSceneDescription</value>
|
||||
</data>
|
||||
<data name=">>BtnTeleport.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
<data name="NUDTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="ChkLockClimate.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>192, 31</value>
|
||||
</data>
|
||||
<data name="LblTp.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>NUDTpZ.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
<data name="LblTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name=">>LblSceneDescription.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
@@ -189,11 +192,11 @@
|
||||
<data name=">>ChkIncludeSceneId.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.Name" xml:space="preserve">
|
||||
<value>CmbClimateType</value>
|
||||
<data name=">>BtnTeleport.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name=">>ChkIncludeSceneId.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name=">>NUDTpY.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
@@ -208,10 +211,10 @@
|
||||
<value>14, 17</value>
|
||||
</data>
|
||||
<data name=">>RbListScene.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="NUDTpY.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>129, 156</value>
|
||||
<data name=">>BtnFreezeTime.Name" xml:space="preserve">
|
||||
<value>BtnFreezeTime</value>
|
||||
</data>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>7, 17</value>
|
||||
@@ -243,14 +246,11 @@
|
||||
<data name=">>ListScenes.Name" xml:space="preserve">
|
||||
<value>ListScenes</value>
|
||||
</data>
|
||||
<data name=">>LblTpZ.Name" xml:space="preserve">
|
||||
<value>LblTpZ</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>NUDTpX.ZOrder" xml:space="preserve">
|
||||
<value>11</value>
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="RbListScene.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
@@ -258,8 +258,11 @@
|
||||
<data name="ChkIncludeSceneId.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="NUDTpY.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name=">>LblTpZ.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name=">>LblTpZ.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
@@ -267,17 +270,20 @@
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>PageScene</value>
|
||||
</data>
|
||||
<data name=">>NUDTpY.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
<data name=">>ChkLockClimate.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>LblTp.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<data name=">>NUDTpY.ZOrder" xml:space="preserve">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name=">>LblTpY.Name" xml:space="preserve">
|
||||
<value>LblTpY</value>
|
||||
</data>
|
||||
<data name="NUDTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
<data name="LblTpY.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>LblTpY.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name=">>NUDTpX.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
@@ -292,7 +298,7 @@
|
||||
<value>RbListCutScene</value>
|
||||
</data>
|
||||
<data name=">>NUDTpZ.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="LblTpY.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
@@ -309,6 +315,9 @@
|
||||
<data name="NUDTpZ.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>80, 23</value>
|
||||
</data>
|
||||
<data name="ChkLockClimate.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>16</value>
|
||||
</data>
|
||||
<data name=">>NUDTpX.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
@@ -324,9 +333,6 @@
|
||||
<data name="LblTpY.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>BtnTeleport.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name=">>NUDTpZ.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
@@ -339,6 +345,9 @@
|
||||
<data name="RbListDungeons.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BtnFreezeTime.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>215, 184</value>
|
||||
</data>
|
||||
<data name="LblTpY.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>109, 158</value>
|
||||
</data>
|
||||
@@ -366,11 +375,14 @@
|
||||
<data name="LblClimateType.Text" xml:space="preserve">
|
||||
<value>设置天气</value>
|
||||
</data>
|
||||
<data name=">>LblClimateType.Type" xml:space="preserve">
|
||||
<data name="BtnFreezeTime.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>17</value>
|
||||
</data>
|
||||
<data name=">>LblTp.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="LblTpY.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
<data name=">>ChkLockClimate.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="NUDTpZ.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
@@ -381,21 +393,36 @@
|
||||
<data name="CmbClimateType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>121, 25</value>
|
||||
</data>
|
||||
<data name=">>BtnFreezeTime.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="LblTpX.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>3, 158</value>
|
||||
</data>
|
||||
<data name="LblClimateType.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>LblClimateType.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
|
||||
<value>含场景ID</value>
|
||||
</data>
|
||||
<data name="BtnFreezeTime.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name=">>LblTpZ.Name" xml:space="preserve">
|
||||
<value>LblTpZ</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="LblTpZ.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name=">>BtnFreezeTime.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>RbListDungeons.Name" xml:space="preserve">
|
||||
<value>RbListDungeons</value>
|
||||
</data>
|
||||
@@ -405,11 +432,11 @@
|
||||
<data name="RbListDungeons.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>287, 30</value>
|
||||
</data>
|
||||
<data name=">>LblTpY.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
<data name="BtnFreezeTime.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>100, 25</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.10.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.12.2.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
</data>
|
||||
<data name="LblTp.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
@@ -423,8 +450,8 @@
|
||||
<data name=">>ListScenes.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnTeleport.Name" xml:space="preserve">
|
||||
<value>BtnTeleport</value>
|
||||
<data name="NUDTpX.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>80, 23</value>
|
||||
</data>
|
||||
<data name="NUDTpY.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
@@ -438,9 +465,12 @@
|
||||
<data name="ListScenes.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>300, 208</value>
|
||||
</data>
|
||||
<data name=">>LblTp.Parent" xml:space="preserve">
|
||||
<data name=">>NUDTpZ.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>ChkLockClimate.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="BtnTeleport.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
@@ -448,16 +478,19 @@
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>87, 187</value>
|
||||
<value>87, 188</value>
|
||||
</data>
|
||||
<data name=">>BtnFreezeTime.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblTp.Name" xml:space="preserve">
|
||||
<value>LblTp</value>
|
||||
</data>
|
||||
<data name="LblTpY.Text" xml:space="preserve">
|
||||
<value>y</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>LblSceneDescription.ZOrder" xml:space="preserve">
|
||||
<value>14</value>
|
||||
<value>16</value>
|
||||
</data>
|
||||
<data name="RbListScene.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 21</value>
|
||||
@@ -465,12 +498,18 @@
|
||||
<data name="LblTp.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblTpZ.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
<data name="LblSceneDescription.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="LblClimateType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>56, 17</value>
|
||||
</data>
|
||||
<data name="ChkLockClimate.Text" xml:space="preserve">
|
||||
<value>锁定</value>
|
||||
</data>
|
||||
<data name="ChkLockClimate.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="RbListCutScene.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
@@ -481,7 +520,7 @@
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name=">>RbListDungeons.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="LblSceneDescription.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -495,8 +534,8 @@
|
||||
<data name="ChkIncludeSceneId.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>76, 21</value>
|
||||
</data>
|
||||
<data name="TxtSceneFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>300, 23</value>
|
||||
<data name=">>BtnTeleport.Name" xml:space="preserve">
|
||||
<value>BtnTeleport</value>
|
||||
</data>
|
||||
<data name="LblTpZ.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -507,11 +546,11 @@
|
||||
<data name=">>NUDTpY.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="TxtSceneFilter.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>14</value>
|
||||
<data name=">>ChkLockClimate.Name" xml:space="preserve">
|
||||
<value>ChkLockClimate</value>
|
||||
</data>
|
||||
<data name=">>LblClimateType.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
@@ -519,6 +558,9 @@
|
||||
<data name=">>RbListCutScene.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="BtnFreezeTime.Text" xml:space="preserve">
|
||||
<value>冻结时间</value>
|
||||
</data>
|
||||
<data name=">>TxtSceneFilter.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
@@ -526,16 +568,22 @@
|
||||
<value>场景控制</value>
|
||||
</data>
|
||||
<data name=">>LblTpX.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="NUDTpX.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>80, 23</value>
|
||||
<data name="TxtSceneFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>300, 23</value>
|
||||
</data>
|
||||
<data name=">>CmbClimateType.Name" xml:space="preserve">
|
||||
<value>CmbClimateType</value>
|
||||
</data>
|
||||
<data name=">>RbListDungeons.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>LblTp.ZOrder" xml:space="preserve">
|
||||
<value>16</value>
|
||||
<value>18</value>
|
||||
</data>
|
||||
<data name=">>LblTp.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>NUDTpY.Name" xml:space="preserve">
|
||||
<value>NUDTpY</value>
|
||||
@@ -552,6 +600,9 @@
|
||||
<data name="RbListScene.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="ChkLockClimate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>51, 21</value>
|
||||
</data>
|
||||
<data name="LblTpX.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
@@ -570,17 +621,17 @@
|
||||
<data name="BtnTeleport.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 185</value>
|
||||
</data>
|
||||
<data name=">>LblTp.Name" xml:space="preserve">
|
||||
<value>LblTp</value>
|
||||
<data name="TxtSceneFilter.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name=">>TxtSceneFilter.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>LblClimateType.Name" xml:space="preserve">
|
||||
<value>LblClimateType</value>
|
||||
</data>
|
||||
<data name=">>ListScenes.ZOrder" xml:space="preserve">
|
||||
<value>15</value>
|
||||
<value>17</value>
|
||||
</data>
|
||||
<data name="TxtSceneFilter.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
@@ -603,6 +654,9 @@
|
||||
<data name=">>ListScenes.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>BtnTeleport.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>LblSceneDescription.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
@@ -618,8 +672,8 @@
|
||||
<data name=">>LblClimateType.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name="NUDTpY.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
<data name="NUDTpY.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>129, 156</value>
|
||||
</data>
|
||||
<data name="LblTp.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
|
@@ -140,10 +140,10 @@
|
||||
<value>84, 215</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>228, 21</value>
|
||||
<value>126, 21</value>
|
||||
</data>
|
||||
<data name="ChkIncludeSceneId.Text" xml:space="preserve">
|
||||
<value>Включить идентификатор сцены</value>
|
||||
<value>Включить сцену</value>
|
||||
</data>
|
||||
<data name="LblTpZ.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>212, 186</value>
|
||||
@@ -169,6 +169,9 @@
|
||||
<data name="NUDTpX.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>20, 184</value>
|
||||
</data>
|
||||
<data name="CmbClimateType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>100, 25</value>
|
||||
</data>
|
||||
<data name="LblClimateType.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>52, 17</value>
|
||||
</data>
|
||||
@@ -206,4 +209,22 @@
|
||||
<data name="RbListCutScene.Text" xml:space="preserve">
|
||||
<value>Катсцена</value>
|
||||
</data>
|
||||
<data name="ChkLockClimate.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>171, 30</value>
|
||||
</data>
|
||||
<data name="ChkLockClimate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>65, 21</value>
|
||||
</data>
|
||||
<data name="ChkLockClimate.Text" xml:space="preserve">
|
||||
<value>Замок</value>
|
||||
</data>
|
||||
<data name="BtnFreezeTime.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>212, 211</value>
|
||||
</data>
|
||||
<data name="BtnFreezeTime.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>125, 25</value>
|
||||
</data>
|
||||
<data name="BtnFreezeTime.Text" xml:space="preserve">
|
||||
<value>Время заморозки</value>
|
||||
</data>
|
||||
</root>
|
@@ -148,4 +148,10 @@
|
||||
<data name="RbListCutScene.Text" xml:space="preserve">
|
||||
<value>過場</value>
|
||||
</data>
|
||||
<data name="ChkLockClimate.Text" xml:space="preserve">
|
||||
<value>鎖定</value>
|
||||
</data>
|
||||
<data name="BtnFreezeTime.Text" xml:space="preserve">
|
||||
<value>凍結時間</value>
|
||||
</data>
|
||||
</root>
|
16
Source/GrasscutterTools/Pages/PageSpawn.Designer.cs
generated
16
Source/GrasscutterTools/Pages/PageSpawn.Designer.cs
generated
@@ -90,7 +90,7 @@
|
||||
this.ListEntity = new System.Windows.Forms.ListBox();
|
||||
this.PanelEntityFilterBar = new System.Windows.Forms.Panel();
|
||||
this.TxtEntityFilter = new System.Windows.Forms.TextBox();
|
||||
this.BtnFilterEntity = new System.Windows.Forms.Button();
|
||||
this.CmbFilterEntity = new System.Windows.Forms.ComboBox();
|
||||
this.TPSpawnRecords = new System.Windows.Forms.TabPage();
|
||||
this.ListSpawnLogs = new System.Windows.Forms.ListBox();
|
||||
this.FLPSpawnRecordControls = new System.Windows.Forms.FlowLayoutPanel();
|
||||
@@ -707,7 +707,7 @@
|
||||
// PanelEntityFilterBar
|
||||
//
|
||||
this.PanelEntityFilterBar.Controls.Add(this.TxtEntityFilter);
|
||||
this.PanelEntityFilterBar.Controls.Add(this.BtnFilterEntity);
|
||||
this.PanelEntityFilterBar.Controls.Add(this.CmbFilterEntity);
|
||||
resources.ApplyResources(this.PanelEntityFilterBar, "PanelEntityFilterBar");
|
||||
this.PanelEntityFilterBar.Name = "PanelEntityFilterBar";
|
||||
//
|
||||
@@ -717,12 +717,12 @@
|
||||
this.TxtEntityFilter.Name = "TxtEntityFilter";
|
||||
this.TxtEntityFilter.TextChanged += new System.EventHandler(this.TxtEntityFilter_TextChanged);
|
||||
//
|
||||
// BtnFilterEntity
|
||||
// CmbFilterEntity
|
||||
//
|
||||
resources.ApplyResources(this.BtnFilterEntity, "BtnFilterEntity");
|
||||
this.BtnFilterEntity.Name = "BtnFilterEntity";
|
||||
this.BtnFilterEntity.UseVisualStyleBackColor = true;
|
||||
this.BtnFilterEntity.Click += new System.EventHandler(this.BtnFilterEntity_Click);
|
||||
this.CmbFilterEntity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
resources.ApplyResources(this.CmbFilterEntity, "CmbFilterEntity");
|
||||
this.CmbFilterEntity.Name = "CmbFilterEntity";
|
||||
this.CmbFilterEntity.SelectedIndexChanged += new System.EventHandler(this.CmbFilterEntity_SelectedIndexChanged);
|
||||
//
|
||||
// TPSpawnRecords
|
||||
//
|
||||
@@ -879,7 +879,7 @@
|
||||
private System.Windows.Forms.ListBox ListEntity;
|
||||
private System.Windows.Forms.Panel PanelEntityFilterBar;
|
||||
private System.Windows.Forms.TextBox TxtEntityFilter;
|
||||
private System.Windows.Forms.Button BtnFilterEntity;
|
||||
private System.Windows.Forms.ComboBox CmbFilterEntity;
|
||||
private System.Windows.Forms.TabPage TPSpawnRecords;
|
||||
private System.Windows.Forms.ListBox ListSpawnLogs;
|
||||
private System.Windows.Forms.FlowLayoutPanel FLPSpawnRecordControls;
|
||||
|
@@ -52,43 +52,31 @@ namespace GrasscutterTools.Pages
|
||||
|
||||
#region -- 实体列表 --
|
||||
|
||||
private List<string[]> EntityList;
|
||||
|
||||
/// <summary>
|
||||
/// 初始化实体列表
|
||||
/// </summary>
|
||||
private void InitEntityList()
|
||||
{
|
||||
// 初始化列表类型过滤器
|
||||
MenuSpawnEntityFilter.SuspendLayout();
|
||||
MenuSpawnEntityFilter.Items.Clear();
|
||||
var types = new List<string>();
|
||||
var entityList = new List<string[]>();
|
||||
|
||||
types.Add(Resources.All);
|
||||
// 默认显示所有
|
||||
SelectedEntityTypeLines = GameData.Monsters.AllLines.Concat(GameData.Gadgets.AllLines).ToArray();
|
||||
var all = new ToolStripMenuItem
|
||||
{
|
||||
Text = Resources.All,
|
||||
Tag = SelectedEntityTypeLines,
|
||||
};
|
||||
all.Click += OnEntityTypeFilterClick;
|
||||
MenuSpawnEntityFilter.Items.Add(all);
|
||||
void AddTypes(ItemMapGroup group)
|
||||
{
|
||||
foreach (var kv in group)
|
||||
{
|
||||
var item = new ToolStripMenuItem
|
||||
{
|
||||
Text = kv.Key,
|
||||
Tag = kv.Value.Lines,
|
||||
};
|
||||
item.Click += OnEntityTypeFilterClick;
|
||||
MenuSpawnEntityFilter.Items.Add(item);
|
||||
}
|
||||
}
|
||||
//MenuSpawnEntityFilter.Items.Add(new ToolStripLabel("Monsters"));
|
||||
AddTypes(GameData.Monsters);
|
||||
MenuSpawnEntityFilter.Items.Add(new ToolStripSeparator());
|
||||
//MenuSpawnEntityFilter.Items.Add(new ToolStripLabel("Gadgets"));
|
||||
AddTypes(GameData.Gadgets);
|
||||
MenuSpawnEntityFilter.ResumeLayout();
|
||||
entityList.Add(SelectedEntityTypeLines);
|
||||
types.AddRange(GameData.Monsters.Select(it => it.Key));
|
||||
entityList.AddRange(GameData.Monsters.Select(it => it.Value.Lines));
|
||||
types.AddRange(GameData.Gadgets.Select(it => it.Key));
|
||||
entityList.AddRange(GameData.Gadgets.Select(it => it.Value.Lines));
|
||||
|
||||
CmbFilterEntity.DataSource = types;
|
||||
EntityList = entityList;
|
||||
|
||||
|
||||
//Console.WriteLine(string.Join("\n", GameData.Gadgets.Keys));
|
||||
|
||||
LoadEntityList();
|
||||
}
|
||||
|
||||
@@ -97,13 +85,16 @@ namespace GrasscutterTools.Pages
|
||||
/// </summary>
|
||||
private string[] SelectedEntityTypeLines;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 实体类型过滤器类型选中时触发
|
||||
/// 类别选中时触发
|
||||
/// </summary>
|
||||
private void OnEntityTypeFilterClick(object sender, EventArgs e)
|
||||
private void CmbFilterEntity_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
var btn = sender as ToolStripMenuItem;
|
||||
SelectedEntityTypeLines = btn.Tag as string[];
|
||||
if (CmbFilterEntity.SelectedIndex < 0 || EntityList == null) return;
|
||||
var lines = EntityList[CmbFilterEntity.SelectedIndex];
|
||||
if (SelectedEntityTypeLines == lines) return;
|
||||
SelectedEntityTypeLines = lines;
|
||||
LoadEntityList();
|
||||
}
|
||||
|
||||
@@ -122,14 +113,7 @@ namespace GrasscutterTools.Pages
|
||||
{
|
||||
LoadEntityList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 实体列表类型过滤按钮点击时触发
|
||||
/// </summary>
|
||||
private void BtnFilterEntity_Click(object sender, EventArgs e)
|
||||
{
|
||||
MenuSpawnEntityFilter.Show(BtnFilterEntity, 0, BtnFilterEntity.Height);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 实体列表选中项改变时触发
|
||||
@@ -387,5 +371,6 @@ namespace GrasscutterTools.Pages
|
||||
}
|
||||
|
||||
#endregion -- 攻击注入参数 --
|
||||
|
||||
}
|
||||
}
|
@@ -1594,10 +1594,10 @@
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="TxtEntityFilter.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 3</value>
|
||||
<value>153, 3</value>
|
||||
</data>
|
||||
<data name="TxtEntityFilter.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>242, 23</value>
|
||||
<value>118, 23</value>
|
||||
</data>
|
||||
<data name="TxtEntityFilter.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -1614,34 +1614,28 @@
|
||||
<data name=">>TxtEntityFilter.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="BtnFilterEntity.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="BtnFilterEntity.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<data name="CmbFilterEntity.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="BtnFilterEntity.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>245, 3</value>
|
||||
<data name="CmbFilterEntity.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 2</value>
|
||||
</data>
|
||||
<data name="BtnFilterEntity.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>26, 24</value>
|
||||
<data name="CmbFilterEntity.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>150, 25</value>
|
||||
</data>
|
||||
<data name="BtnFilterEntity.TabIndex" type="System.Int32, mscorlib">
|
||||
<data name="CmbFilterEntity.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="BtnFilterEntity.Text" xml:space="preserve">
|
||||
<value>三</value>
|
||||
<data name=">>CmbFilterEntity.Name" xml:space="preserve">
|
||||
<value>CmbFilterEntity</value>
|
||||
</data>
|
||||
<data name=">>BtnFilterEntity.Name" xml:space="preserve">
|
||||
<value>BtnFilterEntity</value>
|
||||
<data name=">>CmbFilterEntity.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnFilterEntity.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>BtnFilterEntity.Parent" xml:space="preserve">
|
||||
<data name=">>CmbFilterEntity.Parent" xml:space="preserve">
|
||||
<value>PanelEntityFilterBar</value>
|
||||
</data>
|
||||
<data name=">>BtnFilterEntity.ZOrder" xml:space="preserve">
|
||||
<data name=">>CmbFilterEntity.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="PanelEntityFilterBar.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
@@ -1909,6 +1903,6 @@
|
||||
<value>PageSpawn</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.10.1.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.12.1.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
|
||||
</data>
|
||||
</root>
|
22
Source/GrasscutterTools/Pages/PageTools.Designer.cs
generated
22
Source/GrasscutterTools/Pages/PageTools.Designer.cs
generated
@@ -34,7 +34,7 @@
|
||||
this.TxtProjectResRoot = new System.Windows.Forms.TextBox();
|
||||
this.LblGcResRoot = new System.Windows.Forms.Label();
|
||||
this.TxtGcResRoot = new System.Windows.Forms.TextBox();
|
||||
this.BtnUpdateDungeon = new System.Windows.Forms.Button();
|
||||
this.BtnUpdateAllResources = new System.Windows.Forms.Button();
|
||||
this.BtnUpdateActivity = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
@@ -90,15 +90,15 @@
|
||||
this.TxtGcResRoot.Size = new System.Drawing.Size(413, 23);
|
||||
this.TxtGcResRoot.TabIndex = 4;
|
||||
//
|
||||
// BtnUpdateDungeon
|
||||
// BtnUpdateAllResources
|
||||
//
|
||||
this.BtnUpdateDungeon.Location = new System.Drawing.Point(41, 100);
|
||||
this.BtnUpdateDungeon.Name = "BtnUpdateDungeon";
|
||||
this.BtnUpdateDungeon.Size = new System.Drawing.Size(150, 30);
|
||||
this.BtnUpdateDungeon.TabIndex = 0;
|
||||
this.BtnUpdateDungeon.Text = "Update Dungeon";
|
||||
this.BtnUpdateDungeon.UseVisualStyleBackColor = true;
|
||||
this.BtnUpdateDungeon.Click += new System.EventHandler(this.BtnUpdateDungeon_Click);
|
||||
this.BtnUpdateAllResources.Location = new System.Drawing.Point(41, 100);
|
||||
this.BtnUpdateAllResources.Name = "BtnUpdateAllResources";
|
||||
this.BtnUpdateAllResources.Size = new System.Drawing.Size(150, 30);
|
||||
this.BtnUpdateAllResources.TabIndex = 0;
|
||||
this.BtnUpdateAllResources.Text = "Update All Resources";
|
||||
this.BtnUpdateAllResources.UseVisualStyleBackColor = true;
|
||||
this.BtnUpdateAllResources.Click += new System.EventHandler(this.BtnUpdateAllResources_Click);
|
||||
//
|
||||
// BtnUpdateActivity
|
||||
//
|
||||
@@ -119,7 +119,7 @@
|
||||
this.Controls.Add(this.TxtProjectResRoot);
|
||||
this.Controls.Add(this.LblProjectResRoot);
|
||||
this.Controls.Add(this.BtnUpdateActivity);
|
||||
this.Controls.Add(this.BtnUpdateDungeon);
|
||||
this.Controls.Add(this.BtnUpdateAllResources);
|
||||
this.Controls.Add(this.BtnConvertCutScene);
|
||||
this.Controls.Add(this.BtnUpdateResources);
|
||||
this.Name = "PageTools";
|
||||
@@ -136,7 +136,7 @@
|
||||
private System.Windows.Forms.TextBox TxtProjectResRoot;
|
||||
private System.Windows.Forms.Label LblGcResRoot;
|
||||
private System.Windows.Forms.TextBox TxtGcResRoot;
|
||||
private System.Windows.Forms.Button BtnUpdateDungeon;
|
||||
private System.Windows.Forms.Button BtnUpdateAllResources;
|
||||
private System.Windows.Forms.Button BtnUpdateActivity;
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,23 @@
|
||||
using System;
|
||||
/**
|
||||
* Grasscutter Tools
|
||||
* Copyright (C) 2023 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.IO;
|
||||
using System.Linq;
|
||||
@@ -8,7 +27,7 @@ using System.Windows.Forms;
|
||||
using GrasscutterTools.Game;
|
||||
using GrasscutterTools.Game.Activity;
|
||||
using GrasscutterTools.Game.CutScene;
|
||||
using GrasscutterTools.Game.Dungeon;
|
||||
using GrasscutterTools.Game.Data;
|
||||
using GrasscutterTools.Properties;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
@@ -122,25 +141,20 @@ namespace GrasscutterTools.Pages
|
||||
}
|
||||
|
||||
private TextMapData TextMapData;
|
||||
private GameResources GameResources;
|
||||
|
||||
private void BtnUpdateDungeon_Click(object sender, EventArgs e)
|
||||
private void BtnUpdateAllResources_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!CheckInputPaths()) return;
|
||||
|
||||
var json = File.ReadAllText(
|
||||
Path.Combine(TxtGcResRoot.Text, "ExcelBinOutput", "DungeonExcelConfigData.json"),
|
||||
Encoding.UTF8);
|
||||
var dungeons = JsonConvert.DeserializeObject<List<DungeonItem>>(json);
|
||||
|
||||
if (TextMapData == null)
|
||||
TextMapData = new TextMapData(TxtGcResRoot.Text);
|
||||
if (GameResources == null)
|
||||
GameResources = new GameResources(TxtGcResRoot.Text, TextMapData);
|
||||
|
||||
UpdateDungeonsForLanguage(dungeons, "TextMapCHS", "zh-cn");
|
||||
UpdateDungeonsForLanguage(dungeons, "TextMapCHT", "zh-tw");
|
||||
UpdateDungeonsForLanguage(dungeons, "TextMapEN", "en-us");
|
||||
UpdateDungeonsForLanguage(dungeons, "TextMapRU", "ru-ru");
|
||||
GameResources.ConvertResources(TxtProjectResRoot.Text);
|
||||
MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -149,18 +163,6 @@ namespace GrasscutterTools.Pages
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateDungeonsForLanguage(IEnumerable<DungeonItem> dungeons, string textMap, string language)
|
||||
{
|
||||
var i = Array.IndexOf(TextMapData.TextMapFiles, textMap);
|
||||
TextMapData.LoadTextMap(TextMapData.TextMapFilePaths[i]);
|
||||
|
||||
var dungeonFilePath = Path.Combine(TxtProjectResRoot.Text, language, "Dungeon.txt");
|
||||
File.WriteAllLines(
|
||||
dungeonFilePath,
|
||||
dungeons.Select(it => $"{it.Id}:{TextMapData.GetText(it.NameTextMapHash)}"),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
||||
private void BtnUpdateActivity_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
|
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
||||
//通过使用 "*",如下所示:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.11.0")]
|
||||
[assembly: AssemblyFileVersion("1.11.0")]
|
||||
[assembly: AssemblyVersion("1.12.2")]
|
||||
[assembly: AssemblyFileVersion("1.12.2")]
|
@@ -363,4 +363,7 @@ Improvement suggestions have been submitted, please use caution to send emails t
|
||||
<data name="PageHotKey" xml:space="preserve">
|
||||
<value>HotKey</value>
|
||||
</data>
|
||||
<data name="Gadget" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\en-us\Gadget.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
</root>
|
@@ -351,4 +351,7 @@
|
||||
<data name="PageHotKey" xml:space="preserve">
|
||||
<value>Горячая клавиша</value>
|
||||
</data>
|
||||
<data name="Gadget" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ru-ru\Gadget.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
</root>
|
@@ -357,4 +357,7 @@
|
||||
<data name="PageHotKey" xml:space="preserve">
|
||||
<value>快捷鍵</value>
|
||||
</data>
|
||||
<data name="Gadget" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\zh-tw\Gadget.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
</root>
|
@@ -12,7 +12,7 @@ namespace GrasscutterTools.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.7.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
@@ -97,7 +97,7 @@ namespace GrasscutterTools.Properties {
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("https://127.0.0.1")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("http://127.0.0.1:443")]
|
||||
public string Host {
|
||||
get {
|
||||
return ((string)(this["Host"]));
|
||||
|
@@ -21,7 +21,7 @@
|
||||
<Value Profile="(Default)">10001</Value>
|
||||
</Setting>
|
||||
<Setting Name="Host" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">https://127.0.0.1</Value>
|
||||
<Value Profile="(Default)">http://127.0.0.1:443</Value>
|
||||
</Setting>
|
||||
<Setting Name="CheckedLastVersion" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
|
@@ -1,5 +1,4 @@
|
||||
1001:4
|
||||
1002:5
|
||||
1002:5
|
||||
1003:5
|
||||
1005:5
|
||||
1006:4
|
||||
@@ -46,6 +45,7 @@
|
||||
1058:5
|
||||
1059:4
|
||||
1060:5
|
||||
1061:4
|
||||
1062:5
|
||||
1063:5
|
||||
1064:4
|
||||
@@ -67,4 +67,6 @@
|
||||
1080:4
|
||||
1081:4
|
||||
1082:5
|
||||
1061:4
|
||||
1083:4
|
||||
1084:5
|
||||
1085:4
|
||||
|
@@ -1,4 +1,358 @@
|
||||
[
|
||||
{
|
||||
"comment": "4.0.1 Lyney",
|
||||
"gachaType": 301,
|
||||
"scheduleId": 4,
|
||||
"prefabPath": "GachaShowPanel_A145",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A0145_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1083, 1032, 1014 ],
|
||||
"rateUpItems5": [ 1084 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "4.0.1 Yelan",
|
||||
"gachaType": 400,
|
||||
"scheduleId": 3,
|
||||
"prefabPath": "GachaShowPanel_A146",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A081_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1083, 1032, 1014 ],
|
||||
"rateUpItems5": [ 1060 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "4.0.1",
|
||||
"gachaType": 302,
|
||||
"scheduleId": 2,
|
||||
"prefabPath": "GachaShowPanel_A147",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A020_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 2,
|
||||
"rateUpItems4": [ 11403, 12410, 15403, 13407, 14403 ],
|
||||
"rateUpItems5": [ 15512, 15508 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 13401, 14401, 12401, 11402, 15402 ],
|
||||
"fallbackItems4Pool2": [],
|
||||
"fallbackItems5Pool1": [ 11509, 13507 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 600 ],
|
||||
[ 7, 600 ],
|
||||
[ 8, 6600 ],
|
||||
[ 10, 12600 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 100 ],
|
||||
[ 62, 100 ],
|
||||
[ 73, 7800 ],
|
||||
[ 80, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"eventChance4": 75,
|
||||
"eventChance5": 75,
|
||||
"bannerType": "WEAPON"
|
||||
},
|
||||
{
|
||||
"comment": "3.8.2 Sangonomiya Kokomi",
|
||||
"gachaType": 301,
|
||||
"scheduleId": 4,
|
||||
"prefabPath": "GachaShowPanel_A142",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A053_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1076, 1045, 1048 ],
|
||||
"rateUpItems5": [ 1054 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "3.8.2 Wanderer",
|
||||
"gachaType": 400,
|
||||
"scheduleId": 3,
|
||||
"prefabPath": "GachaShowPanel_A143",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A0109_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1076, 1045, 1048 ],
|
||||
"rateUpItems5": [ 1075 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "3.8.2",
|
||||
"gachaType": 302,
|
||||
"scheduleId": 2,
|
||||
"prefabPath": "GachaShowPanel_A144",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A020_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 2,
|
||||
"rateUpItems4": [ 11405, 12402, 14410, 13401, 15401 ],
|
||||
"rateUpItems5": [ 14512, 14506 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 13401, 14401, 12401, 11402, 15402 ],
|
||||
"fallbackItems4Pool2": [],
|
||||
"fallbackItems5Pool1": [ 11509, 13507 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 600 ],
|
||||
[ 7, 600 ],
|
||||
[ 8, 6600 ],
|
||||
[ 10, 12600 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 100 ],
|
||||
[ 62, 100 ],
|
||||
[ 73, 7800 ],
|
||||
[ 80, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"eventChance4": 75,
|
||||
"eventChance5": 75,
|
||||
"bannerType": "WEAPON"
|
||||
},
|
||||
{
|
||||
"comment": "3.8.1 Eula",
|
||||
"gachaType": 301,
|
||||
"scheduleId": 4,
|
||||
"prefabPath": "GachaShowPanel_A139",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A041_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1080, 1020, 1050 ],
|
||||
"rateUpItems5": [ 1051 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "3.8.1 Klee",
|
||||
"gachaType": 400,
|
||||
"scheduleId": 3,
|
||||
"prefabPath": "GachaShowPanel_A140",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A018_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 982,
|
||||
"rateUpItems4": [ 1080, 1020, 1050 ],
|
||||
"rateUpItems5": [ 1029 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 1014, 1020, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064 ],
|
||||
"fallbackItems4Pool2": [ 11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405 ],
|
||||
"fallbackItems5Pool1": [ 1003, 1016, 1042, 1035, 1041 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 510 ],
|
||||
[ 8, 510 ],
|
||||
[ 10, 10000 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 80 ],
|
||||
[ 73, 80 ],
|
||||
[ 90, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"bannerType": "EVENT"
|
||||
},
|
||||
{
|
||||
"comment": "3.8.1",
|
||||
"gachaType": 302,
|
||||
"scheduleId": 2,
|
||||
"prefabPath": "GachaShowPanel_A141",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A020_TITLE",
|
||||
"costItemId": 223,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 2,
|
||||
"rateUpItems4": [ 11410, 15410, 12405, 13407, 14409 ],
|
||||
"rateUpItems5": [ 12503, 14502 ],
|
||||
"fallbackItems3": [ 11301, 11302, 11306, 12301, 12302, 12305, 13303, 14301, 14302, 14304, 15301, 15302, 15304 ],
|
||||
"fallbackItems4Pool1": [ 13401, 14401, 12401, 11402, 15402 ],
|
||||
"fallbackItems4Pool2": [],
|
||||
"fallbackItems5Pool1": [ 11509, 13507 ],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights4": [
|
||||
[ 1, 600 ],
|
||||
[ 7, 600 ],
|
||||
[ 8, 6600 ],
|
||||
[ 10, 12600 ]
|
||||
],
|
||||
"weights5": [
|
||||
[ 1, 100 ],
|
||||
[ 62, 100 ],
|
||||
[ 73, 7800 ],
|
||||
[ 80, 10000 ]
|
||||
],
|
||||
"poolBalanceWeights4": [
|
||||
[ 1, 255 ],
|
||||
[ 17, 255 ],
|
||||
[ 21, 10455 ]
|
||||
],
|
||||
"poolBalanceWeights5": [
|
||||
[ 1, 30 ],
|
||||
[ 147, 150 ],
|
||||
[ 181, 10230 ]
|
||||
],
|
||||
"eventChance4": 75,
|
||||
"eventChance5": 75,
|
||||
"bannerType": "WEAPON"
|
||||
},
|
||||
{
|
||||
"comment": "3.7.2 Alhaitham",
|
||||
"gachaType": 301,
|
||||
|
@@ -1,4 +1,6 @@
|
||||
11301:blue
|
||||
11101:blue
|
||||
11201:blue
|
||||
11301:blue
|
||||
11302:blue
|
||||
11303:blue
|
||||
11304:blue
|
||||
@@ -25,6 +27,9 @@
|
||||
11420:purple
|
||||
11421:purple
|
||||
11422:purple
|
||||
11424:purple
|
||||
11425:purple
|
||||
11426:purple
|
||||
11501:yellow
|
||||
11502:yellow
|
||||
11503:yellow
|
||||
@@ -34,6 +39,8 @@
|
||||
11510:yellow
|
||||
11511:yellow
|
||||
11512:yellow
|
||||
12101:blue
|
||||
12201:blue
|
||||
12301:blue
|
||||
12302:blue
|
||||
12303:blue
|
||||
@@ -57,12 +64,16 @@
|
||||
12416:purple
|
||||
12417:purple
|
||||
12418:purple
|
||||
12424:purple
|
||||
12425:purple
|
||||
12501:yellow
|
||||
12502:yellow
|
||||
12503:yellow
|
||||
12504:yellow
|
||||
12510:yellow
|
||||
12511:yellow
|
||||
13101:blue
|
||||
13201:blue
|
||||
13301:blue
|
||||
13302:blue
|
||||
13303:blue
|
||||
@@ -81,6 +92,8 @@
|
||||
13416:purple
|
||||
13417:purple
|
||||
13419:purple
|
||||
13424:purple
|
||||
13425:purple
|
||||
13501:yellow
|
||||
13502:yellow
|
||||
13504:yellow
|
||||
@@ -88,6 +101,8 @@
|
||||
13507:yellow
|
||||
13509:yellow
|
||||
13511:yellow
|
||||
14101:blue
|
||||
14201:blue
|
||||
14301:blue
|
||||
14302:blue
|
||||
14303:blue
|
||||
@@ -110,6 +125,8 @@
|
||||
14415:purple
|
||||
14416:purple
|
||||
14417:purple
|
||||
14424:purple
|
||||
14425:purple
|
||||
14501:yellow
|
||||
14502:yellow
|
||||
14504:yellow
|
||||
@@ -118,6 +135,8 @@
|
||||
14509:yellow
|
||||
14511:yellow
|
||||
14512:yellow
|
||||
15101:blue
|
||||
15201:blue
|
||||
15301:blue
|
||||
15302:blue
|
||||
15303:blue
|
||||
@@ -143,6 +162,8 @@
|
||||
15417:purple
|
||||
15418:purple
|
||||
15419:purple
|
||||
15424:purple
|
||||
15425:purple
|
||||
15501:yellow
|
||||
15502:yellow
|
||||
15503:yellow
|
||||
@@ -150,4 +171,4 @@
|
||||
15508:yellow
|
||||
15509:yellow
|
||||
15511:yellow
|
||||
20001:yellow
|
||||
15512:yellow
|
||||
|
@@ -89,7 +89,6 @@
|
||||
80089:Tatara Tales - Resolve the crisis at the Mikage Furnace.
|
||||
80090:Echo of Fury - Complete "Orobashi's Legacy."
|
||||
80091:Tales of Monstrous Madness - Collect the entire "Toki Alley Tales" series.
|
||||
80092:Illustrious in Inazuma - Reach Reputation Lv. 10 in Inazuma.
|
||||
80093:Lightning-Riding Adventurer (I) - Complete 6 Open World mechanism-activated Time Trial Challenges on Narukami Island, Kannazuka, and Yashiori Island in Inazuma.
|
||||
80094:Lightning-Riding Adventurer (I) - Complete 12 Open World mechanism-activated Time Trial Challenges on Narukami Island, Kannazuka, and Yashiori Island in Inazuma.
|
||||
80095:Lightning-Riding Adventurer (I) - Complete 24 Open World mechanism-activated Time Trial Challenges on Narukami Island, Kannazuka, and Yashiori Island in Inazuma.
|
||||
@@ -103,13 +102,13 @@
|
||||
80105:Lightning-Riding Treasure Hunter (II) - Open 40 chests on Watatsumi Island and Seirai Island in Inazuma.
|
||||
80106:Lightning-Riding Treasure Hunter (II) - Open 80 chests on Watatsumi Island and Seirai Island in Inazuma.
|
||||
80107:Lightning-Riding Treasure Hunter (II) - Open 160 chests on Watatsumi Island and Seirai Island in Inazuma.
|
||||
80108:Seirai Stormchasers - Complete "Seirai Stormchasers"
|
||||
80109:The Same Moonlight - Complete "The Moon-Bathed Deep"
|
||||
80110:Lightning-Riding Adventurer (II) - Complete 6 Open World mechanism-activated Time Trial Challenges on Watatsumi Island and Seirai Island in Inazuma.
|
||||
80111:Lightning-Riding Adventurer (II) - Complete 12 Open World mechanism-activated Time Trial Challenges on Watatsumi Island and Seirai Island in Inazuma.
|
||||
80112:Lightning-Riding Adventurer (II) - Complete 24 Open World mechanism-activated Time Trial Challenges on Watatsumi Island and Seirai Island in Inazuma.
|
||||
80108:Seirai Stormchasers - Complete "Seirai Stormchasers"
|
||||
80109:The Same Moonlight - Complete "The Moon-Bathed Deep"
|
||||
80113:Continental Explorer: Tsurumi Island - Light up the Tsurumi Island map.
|
||||
80114:Fog's Edge - Unlock all Teleport Waypoints in Tsurumi Island.
|
||||
80114:Fog's Edge - Unlock all Teleport Waypoints on Tsurumi Island.
|
||||
80115:Sanctuary Pilgrim: Tsurumi Island - Unlock all the Shrines of Depths on Tsurumi Island.
|
||||
80116:Flashes in the Night - Follow 6 Electro Seelie on Tsurumi Island.
|
||||
80119:Foggy Guidance - Follow 6 Seelie on Tsurumi Island to their Seelie Courts.
|
||||
@@ -157,7 +156,7 @@
|
||||
80161:Forest Roamer - Unlock all Teleport Waypoints in the following areas in Sumeru: Avidya Forest, Lokapala Jungle, Ardravi Valley, Ashavan Realm, Vissudha Field, Lost Nursery, and Vanarana.
|
||||
80162:Sanctuary Pilgrim: Sumeru Boscage - Unlock all the Shrines of Depths in the following areas in Sumeru: Avidya Forest, Lokapala Jungle, Ardravi Valley, Ashavan Realm, Vissudha Field, Lost Nursery, and Vanarana.
|
||||
80163:Fluorescent Bloom - Upgrade the Statues of The Seven in Sumeru to their maximum level.
|
||||
80164:Culmination of the Great Dream - Reach the Max Level of the Tree of Dreams in Vanarana
|
||||
80164:Culmination of the Great Dream - Reach the Max Level of the Tree of Dreams in Vanarana.
|
||||
80165:Woodland Guide - Follow a total of 10 Seelie to their Seelie Courts in Avidya Forest, Lokapala Jungle, Ardravi Valley, Ashavan Realm, Vissudha Field, Lost Nursery, and Vanarana.
|
||||
80166:Woodland Guide - Follow a total of 20 Seelie to their Seelie Courts in Avidya Forest, Lokapala Jungle, Ardravi Valley, Ashavan Realm, Vissudha Field, Lost Nursery, and Vanarana.
|
||||
80167:Woodland Guide - Follow a total of 40 Seelie to their Seelie Courts in Avidya Forest, Lokapala Jungle, Ardravi Valley, Ashavan Realm, Vissudha Field, Lost Nursery, and Vanarana.
|
||||
@@ -205,16 +204,15 @@
|
||||
80215:Chaos Divided - Defeat 2 or more Character Cards from the opponent's deck in one single action a total of {param0} time(s) in victorious games.
|
||||
80216:Chaos Divided - Defeat 2 or more Character Cards from the opponent's deck in one single action a total of {param0} time(s) in victorious games.
|
||||
80217:Chaos Divided - Defeat 2 or more Character Cards from the opponent's deck in one single action a total of {param0} time(s) in victorious games.
|
||||
80218:Legendary High Roller - Obtain {param0} Lucky Coins in total
|
||||
80219:Legendary High Roller - Obtain {param0} Lucky Coins in total
|
||||
80220:Legendary High Roller - Obtain {param0} Lucky Coins in total
|
||||
80218:Legendary High Roller - Obtain {param0} Lucky Coins in total.
|
||||
80219:Legendary High Roller - Obtain {param0} Lucky Coins in total.
|
||||
80220:Legendary High Roller - Obtain {param0} Lucky Coins in total.
|
||||
80221:Miniaturized Dice-Shaker - Deal 8 or more points of damage in one single action a total of {param0} time(s) in victorious games.
|
||||
80222:Miniaturized Dice-Shaker - Deal 8 or more points of damage in one single action a total of {param0} time(s) in victorious games.
|
||||
80223:Miniaturized Dice-Shaker - Deal 8 or more points of damage in one single action a total of {param0} time(s) in victorious games.
|
||||
80224:Continental Explorer: Dune Dreams (II) - Light up the maps of the following area in Sumeru: Desert of Hadramaveth.
|
||||
80225:Over Sandstorms and Mirages (II) - Unlock all Teleport Waypoints in the following area in Sumeru: Desert of Hadramaveth.
|
||||
80226:Sanctuary Pilgrim: Dune Dreams (II) - Unlock all the Shrines of Depths in the following area in Sumeru: Desert of Hadramaveth.
|
||||
80227:The Dirge of Bilqis - Complete "The Dirge of Bilqis."
|
||||
80228:The Desert Will Guide You Home (II) - Follow {param0} Seelie in the Desert of Hadramaveth to their Seelie Courts.
|
||||
80229:The Desert Will Guide You Home (II) - Follow {param0} Seelie in the Desert of Hadramaveth to their Seelie Courts.
|
||||
80230:The Desert Will Guide You Home (II) - Follow {param0} Seelie in the Desert of Hadramaveth to their Seelie Courts.
|
||||
@@ -224,6 +222,7 @@
|
||||
80234:Quicksand Adventurer (II) - Complete {param0} Open World Time Trial Challenges in the Desert of Hadramaveth.
|
||||
80235:Quicksand Adventurer (II) - Complete {param0} Open World Time Trial Challenges in the Desert of Hadramaveth.
|
||||
80236:Quicksand Adventurer (II) - Complete {param0} Open World Time Trial Challenges in the Desert of Hadramaveth.
|
||||
80227:The Dirge of Bilqis - Complete "The Dirge of Bilqis."
|
||||
80237:Continental Explorer: Blessed Hamada - Light up the maps of the following areas in Sumeru: Gavireh Lajavard and Realm of Farakhkert.
|
||||
80238:Descending Into the Depths of Desolation - Unlock all Teleport Waypoints in the following areas in Sumeru: Gavireh Lajavard and Realm of Farakhkert.
|
||||
80239:Sanctuary Pilgrim: Blessed Hamada - Unlock all the Shrines of Depths in the following areas in Sumeru: Gavireh Lajavard and Realm of Farakhkert.
|
||||
@@ -236,8 +235,28 @@
|
||||
80246:Badlands Adventurer - Complete a total of {param0} Open World Time Trial Challenges in Gavireh Lajavard and Realm of Farakhkert.
|
||||
80247:Badlands Adventurer - Complete a total of {param0} Open World Time Trial Challenges in Gavireh Lajavard and Realm of Farakhkert.
|
||||
80248:Badlands Adventurer - Complete a total of {param0} Open World Time Trial Challenges in Gavireh Lajavard and Realm of Farakhkert.
|
||||
80249:Khvarena of Good and Evil - Complete "Khvarena of Good and Evil."
|
||||
80250:Alkanet Amrita - Upgrade the Amrita Pool to its maximum level.
|
||||
80249:Khvarena of Good and Evil - Complete "Khvarena of Good and Evil."
|
||||
80252:Continental Explorer: Land of Harmonious Springs (I) - Light up the maps of the following areas in Fontaine: Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80253:Font of All Waters (I) - Unlock all Teleport Waypoints in the following areas in Fontaine: Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80254:Sanctuary Pilgrim: Land of Harmonious Springs (I) - Unlock all the Shrines of Depths in the following areas in Fontaine: Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80255:Like Waters Clear - Upgrade the Statues of The Seven in Fontaine to their maximum level.
|
||||
80256:Dew Song - Reach the Max Level of the Fountain of Lucine in the Court of Fontaine.
|
||||
80257:Tides Will Guide You Home (I) - Follow {param0} Seelie in the Court of Fontaine Region, Belleau Region, and Beryl Region to their Seelie Courts.
|
||||
80258:Tides Will Guide You Home (I) - Follow {param0} Seelie in the Court of Fontaine Region, Belleau Region, and Beryl Region to their Seelie Courts.
|
||||
80259:Tides Will Guide You Home (I) - Follow {param0} Seelie in the Court of Fontaine Region, Belleau Region, and Beryl Region to their Seelie Courts.
|
||||
80260:Waveriding Treasure Hunter (I) - Open {param0} chests in the Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80261:Waveriding Treasure Hunter (I) - Open {param0} chests in the Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80262:Waveriding Treasure Hunter (I) - Open {param0} chests in the Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80263:Waveriding Adventurer (I) - Complete {param0} Open World Time Trial Challenges in the Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80264:Waveriding Adventurer (I) - Complete {param0} Open World Time Trial Challenges in the Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80265:Waveriding Adventurer (I) - Complete {param0} Open World Time Trial Challenges in the Court of Fontaine Region, Belleau Region, and Beryl Region.
|
||||
80266:Ann in Wonderland - Complete the tale of the Narzissenkreuz Adventure Team.
|
||||
80267:Limner, Dreamer, and Robotic Dog - Discover the secret to be found within Elynas.
|
||||
80268:Land of Fair Springs - Obtain the power of Hydro.
|
||||
80269:Renart the Deceiver - Collect the entire "Fables de Fontaine" series.
|
||||
80270:Robben versus Chesterton - Collect the entire "Robben versus Chesterton: Iridescent Brooch" series.
|
||||
80271:Compendium of Misery - Collect the entire "The History of the Decline and Fall of Remuria" series.
|
||||
81000:Overlooking View - Reach the very top of Qingyun Peak.
|
||||
81001:The Remains of the Gale - Reach the top of the tower in Stormterror's Lair.
|
||||
81002:"Seeds of Stories, Brought by the Wind..." - Reach the nameless island northeast of Mondstadt.
|
||||
@@ -257,6 +276,7 @@
|
||||
81023:Friends the World Over - Meet all sorts of people during your adventure.
|
||||
81024:Megastar in Mondstadt - Reach Reputation Lv. 8 in Mondstadt.
|
||||
81025:Legend in Liyue - Reach Reputation Lv. 8 in Liyue.
|
||||
80092:Illustrious in Inazuma - Reach Reputation Lv. 10 in Inazuma.
|
||||
81026:QUEST CLEAR - Complete 10 Bounties.
|
||||
81027:QUEST CLEAR - Complete 20 Bounties.
|
||||
81028:QUEST CLEAR - Complete 30 Bounties.
|
||||
@@ -453,7 +473,7 @@
|
||||
81238:Vamadha-Go-Round - Turn every Vamadha that holds a hidden treasure chest.
|
||||
81239:In the Name of Anfortas - Visit the place where the heroes met their end.
|
||||
81240:Call of the Nameless City - Quiet the mysterious parchment.
|
||||
81241:Walking with Water and Wind - Complete "Until Vana is Healed."
|
||||
81241:Walking with Water and Wind - Complete "Until Vana Is Healed."
|
||||
81242:...Let Me Fade With Memory - Complete "Vimana Agama."
|
||||
81243:Now Let Time Resume - Complete Aradasha's unfinished business.
|
||||
81244:Please Play Safely - Play with the Aranara in the forest.
|
||||
@@ -538,6 +558,7 @@
|
||||
81327:A Fascinating Journey - Complete "An Artist Adrift."
|
||||
81328:"This Mystery Is Solved!" - Complete "Monumental Study."
|
||||
81329:Homeward-Bound Spirits - Complete "Pale Fire."
|
||||
81339:The Sea of Fertility - All the ponds in the Vourukasha Oasis are now revitalized.
|
||||
81331:The Brave Shall Not Falter - Pass all the trials set by Jarjar.
|
||||
81332:Bifröst - Complete all the "Soul Bell" challenges.
|
||||
81333:Seven Dish Dance - Complete all "Percussive Prancing Mushroom" challenges.
|
||||
@@ -546,7 +567,39 @@
|
||||
81336:Soaring in the Skies of Sary-Ozek - Keep Sorush in flight for a while.
|
||||
81337:Whose Descendant Are You, and What's Your Name? - Call upon the power of Khvarena with Sorush for the first time.
|
||||
81338:Use the Force, Sorush - Launch Nirodha Fruits with Sorush's help to melt {param0} crystals condensed from Amrita.
|
||||
81339:The Sea of Fertility - All the ponds in the Vourukasha Oasis are now revitalized.
|
||||
81340:Angle Eraser - Suppress the Beastly Rift using the power of the crystals.
|
||||
81341:Core Cooling - Cause the roiling lake to become placid once more.
|
||||
81342:The White Ship - "She's sailing on the sea of dreams..."
|
||||
81344:Encyclopedia of Natural Philosophy - Use the glass wall and an indecipherable book to discover the gathering place of an old society.
|
||||
81345:A Fontainian Message - Have a friendly chat with Virgil.
|
||||
81346:Nothing but a Hound Dog... - Help Mamere fix Seymour.
|
||||
81347:It's Fish, I Added Fish - Taste the wonderful "birthday cake" with the Melusine.
|
||||
81348:Welcome to Fontaine - Complete a cruise on the aquabus.
|
||||
81349:Sogno di Volare - Complete a flight with the Antoine Roger Aircraft.
|
||||
81350:Birth of the Modern Clock - Help Puca find a way to "use" the ore.
|
||||
81351:Waterworld Future - Gaze upon the "water" beneath the "surface."
|
||||
81352:Aesthetics of Ugliness - And thus does Fontaine take two steps further toward beauty.
|
||||
81353:Like Tears in the Rain - Find the impostor amidst the Hunter's Rays.
|
||||
81355:These Are a Few of My... - ...Favorite Things.
|
||||
81356:An Eye for an Eye - Take care of those annoying Bullet Barnacles!
|
||||
81357:Do You Believe In Rapture? - Help build a Blubberbeast paradise.
|
||||
81358:Hardships Experienced... - "To obtain the holy blade that might defeat the demon king, the knight broke into the ancient city, sealed using magic..."
|
||||
81359:And After That... - "The knight defeated the demon king, saving the imprisoned princess. Light has returned to the kingdom..."
|
||||
81360:A Study in Sable - Find a more... special subject of the Institute of Natural Philosophy's study.
|
||||
81361:Twenty Thousand Leagues Under the Sea - Go with the flow...
|
||||
81362:Truly Mouthwatering! - Help Henri change his fate.
|
||||
81363:Song of the Ancients - Hear now the melody of ancient eons.
|
||||
81364:Ninianne of the Lake - Defeat the local legend, Ninianne of the Lake.
|
||||
81365:Vivianne of the Lake - Defeat the local legend, Vivianne of the Lake.
|
||||
81366:Fontaine Expects That Everyone Will Do Their Duty - An item, returned to its rightful owner...
|
||||
81367:In Search of Frittered Time - Reach Reputation Lv. 10 in Fontaine.
|
||||
81368:Blubby, Chubby, Creative Evolution - Accompany the small Blubberbeast as it grows big and strong.
|
||||
81369:Ocean Circuit Judge - Defeat the local legend, Ocean Circuit Judge.
|
||||
81370:Iron Viscount - Defeat the local legend, Iron Viscount.
|
||||
81371:Dobharcu, Lord of the Hidden - Defeat the local legend, Dobharcu, Lord of the Hidden.
|
||||
81372:Fading Veteran - Defeat the local legend, Fading Veteran.
|
||||
81373:Swords of the Gorge - Defeat the local legends, the Swords of the Gorge.
|
||||
81374:The Fairy Knight Twins - Defeat the local legends, the Fairy Knight Twins
|
||||
82001:Nothing Special, Just Practice - Hit a falcon mid-flight with your bow.
|
||||
82002:Master Sniper - Strike an opponent's weak point from afar with an Aimed Shot.
|
||||
82003:Der Freischütz - Strike an opponent's weak point from extremely far away with an Aimed Shot.
|
||||
@@ -642,6 +695,7 @@
|
||||
82096:I'll Skip the Spa, Thanks - Defeat a Mirror Maiden without being trapped by its Water Prison.
|
||||
82097:It's Quiet... Too Quiet... - Defeat the Pyro Hypostasis after it enters its extinguished state only once
|
||||
82098:The Battle of Narukami Island - Defeat the Perpetual Mechanical Array in its weakened state.
|
||||
82109:The Finishing Touch - Defeat Azhdaha without ever having gained a shield.
|
||||
82099:If I Run Fast Enough... - Defeat a Maguu Kenki without being hit by its phantom's attacks.
|
||||
82100:In This Solemn Matter Let No One Interfere! - Defeat a Maguu Kenki without triggering its "Oushi no Omote" parry.
|
||||
82101:Fine, I'll Do It Myself - Defeat a Primo Geovishap without reflecting its Primordial Shower.
|
||||
@@ -652,7 +706,6 @@
|
||||
82106:Fight Fire With Fire - Defeat a Kairagi: Fiery Might while their weapon is infused with Pyro.
|
||||
82107:Ride the Lightning - Defeat a Kairagi: Dancing Thunder while their weapon is infused with Electro.
|
||||
82108:I Hear Thunder... - Be struck by the lightning called down by a Crackling Axe Mitachurl...
|
||||
82109:The Finishing Touch - Defeat Azhdaha without ever having gained a shield.
|
||||
82110:Dry Clean - Defeat the Hydro Hypostasis without destroying a single one of its Water Droplets (except when it is restoring HP.)
|
||||
82111:Bio-Oceanic Weapon - Be hit by a certain animal created by the Hydro Hypostasis...
|
||||
82112:Love and Non-Communication - Defeat a Thunder Manifestation without ever being locked onto.
|
||||
@@ -687,7 +740,7 @@
|
||||
82141:Daisy, Daisy - Break the Algorithm of Semi-Intransient Matrix of Overseer Network by hitting its cores with the Quicken, Aggravate, or Spread reactions.
|
||||
82142:Stop It, Mr. Robot! - Interrupt the charged attack of the Aeonblight Drake by attacking the core on its head.
|
||||
82143:Nanomachines, Son! - Defeat an activated Jadeplume Terrorshroom while it is unleashing a powerful skill...
|
||||
82144:Establishing a Beachhead - Witness the overclocking impact of the Algorithm of Semi-Intransient Matrix of Overseer Network
|
||||
82144:Establishing a Beachhead - Witness the overclocking impact of the Algorithm of Semi-Intransient Matrix of Overseer Network.
|
||||
82145:The Invisible Hand - Defeat the Primal Construct without disabling its invisible state.
|
||||
82146:Grassy Blasty, Sparks 'n' Splash - Defeat 4 opponents with Burgeon within 2s (x1).
|
||||
82147:Grassy Blasty, Sparks 'n' Splash - Defeat 4 opponents with Burgeon within 2s (x5).
|
||||
@@ -710,6 +763,12 @@
|
||||
82167:Proof by Exhaustion - Defeat Iniquitous Baptists of all possible elemental combinations.
|
||||
82168:When You Say Nothing at All - Destroy all Elemental Rings to paralyze the Iniquitous Baptist when it begins to channel its attack.
|
||||
82169:Like the Sun's Passage - Defeat the Guardian of Apep's Oasis without any character being attacked by aftershocks of the apocalypse.
|
||||
82175:The White Path Between Two Rivers - Lose in the duel against the legendary Hunter's Ray...
|
||||
82176:Cell, Splinter - Use Pneuma or Ousia attacks to interrupt the Breacher Primus's stress state.
|
||||
82177:Too Hot to Handle! - Constantly attempt to freeze Tainted Hydro Phantasms...
|
||||
82178:Funerary Storm - Use a Pneuma attack to weaken the whirlwind Coppelia creates during the performance's climax.
|
||||
82179:The King Is Dead, Long Live the King! - Interrupt the Emperor of Fire and Iron's Searing Coronation.
|
||||
82180:Icebound Oath - Use an Ousia attack to remove the shield that Coppelius deploys during the performance's climax.
|
||||
84000:The End of the Beginning - Complete the Mondstadt Archon Quests.
|
||||
84001:The Outlander Who Caught the Wind - Complete "The Outlander Who Caught the Wind."
|
||||
84002:For a Tomorrow Without Tears - Complete "For a Tomorrow Without Tears."
|
||||
@@ -734,10 +793,8 @@
|
||||
84021:I'll Let You Off... This Time - Defeat Childe.
|
||||
84022:Derailed - Defeat the Overlord of the Vortex.
|
||||
84023:Final Farewell - Take part in the Rite of Parting.
|
||||
84024:A New Star Approaches - Complete "A New Star Approaches".
|
||||
84024:A New Star Approaches - Complete "A New Star Approaches."
|
||||
84025:Gears of Destiny - Complete the quest "Bough Keeper: Dainsleif".
|
||||
84026:Fantastic Voyage: Prologue - Complete "Fantastic Voyage" and unlock all endings.
|
||||
84028:Behold, Mine Evil-Espying Eye! - Correctly interpret all clues.
|
||||
84029:The Bandit, the Lunatic, and the Pitch-Black Enigma - Uncover the Grand Thief's fate.
|
||||
84030:Where Fate Comes to a Crossroads - Escape the eerie ruins.
|
||||
84031:Sneering at the Power of the Gods - Learn of the "Loom of Fate"...
|
||||
@@ -763,8 +820,6 @@
|
||||
84051:Their Wishes - Bring all the wishes upon the Statue of the Omnipresent God to fruition.
|
||||
84052:Omnipresence Over Mortals - Complete "Omnipresence Over Mortals."
|
||||
84053:"All Is Well" - Help Wang Ping'an renovate Pervases' temple.
|
||||
84054:Anna's Adventures - Help Anna become an adventurer.
|
||||
84055:Prelude to the Journey - A young man is about to embark on a long journey...
|
||||
84056:Rise of the Jade Chamber - Complete the reconstruction of the Jade Chamber.
|
||||
84057:Majesty of the Deep - Defeat Beisht, Avenger of the Vortex.
|
||||
84058:A Former Dream - Witness the truth of the village's history.
|
||||
@@ -805,55 +860,14 @@
|
||||
84093:The Sickness Unto Near-Death - Create the medicine that will bring hope.
|
||||
84094:The Far Side of Fate - Witness the miracle granted by the "Sinner."
|
||||
84095:Caribert - Complete "Caribert."
|
||||
84100:Archaic Lord of Lightning and Blitz - Witness the awesome meteorological power of Bennett's phenomenally bad luck.
|
||||
84101:The Power of Luck - Activate the mechanisms and obtain the treasure without making any mistakes.
|
||||
84102:A Line That May Be Crossed - Complete "Wellspring of Healing" and unlock all endings.
|
||||
84103:A Maid of Strength and Virtue - Complete "Chivalric Training" and unlock all endings.
|
||||
84104:Evil Is Banished - Complete "Signs of Evil" and unlock all endings.
|
||||
84105:Mondstadt's Spiciest Surprise - Sample Barbara's Chilibrew.
|
||||
84106:"...For I Am Duty Bound" - Help Noelle discover the source of her strength.
|
||||
84107:Red Hot Chili Popsicles - Make a popsicle using the wrong recipe and provoke Chongyun's Pure-Yang Spirit.
|
||||
84108:An Idol's Last Line of Defense - Successfully persuade Albert and Barbara's other fans to leave.
|
||||
84109:A World Known Only Unto Roses - Read Noelle's study notes.
|
||||
84110:Stress Relief - Complete "Knightly Exam Prep" and unlock all endings.
|
||||
84111:Invulnerable Maid-Knight - Listen to "A Knight's Journey Through Liyue" with Noelle.
|
||||
84112:Mondstadt's Note-Taker General - Read Noelle's study notes.
|
||||
84113:Diona Special, Stirred, Not Shaken - Complete "The Cat and the Cocktail" and unlock all endings.
|
||||
84114:But There's a Catch... - Help Diona find a special base drink.
|
||||
84115:Kitten Queen - Bring all the cats back to The Cat's Tail.
|
||||
84116:Everyone's Happy - Complete "A Housekeeper's Daily Chores" and unlock all endings.
|
||||
84117:Housekeeper Extraordinaire - Complete the big cleanup within the time limit
|
||||
84118:From the Sea Never Returning - Learn of Inu Shoushou's story together with Thoma
|
||||
84119:Taller by Half - Complete "Yoohoo Art: Seichou no Jutsu" and unlock all endings.
|
||||
84120:Mujina-Class Ninja - Obtain Sayu's highest rating during agility training.
|
||||
84121:Dish Effect: Mobility Decreased - You were unable to prevent Sayu's reckless consumption...
|
||||
84122:Honorary Crux Member - Complete "When the Crux Shines Bright" and unlock all endings.
|
||||
84123:Wine Unburdens - Take part in the Qingce banquet with Beidou
|
||||
84124:Guyun Buyers' Club - Find out the truth behind the deal Beidou's making
|
||||
84125:General of Watatsumi - Complete "The Canine General's Special Operations" and unlock all endings
|
||||
84126:Changing Times - Draw all fortune slips at the Grand Narukami Shrine.
|
||||
84127:To Tell or Not to Tell, That Is the Question - Discover Ms. Hina's true identity at the Yae Publishing House.
|
||||
84128:Megrez's Companion Star - Complete "The Jade Chamber's Returning Guest" and unlock all endings.
|
||||
84129:You've Got to Have Reserves - Fish? The more the merrier, of course!
|
||||
84130:Overprotectiveness - A single stone births a thousand ripples. It seems like Ningguang's day off is not to be.
|
||||
84131:The Lingering Song - Complete "A Song That Knows Grace" and unlock all endings.
|
||||
84132:May This Moment Be Made to Last - Take a commemorative photo with Yun Jin.
|
||||
84133:A Strict Master Trains a Talented Pupil - Complete the practice session without hitting a single blue scarecrow.
|
||||
84134:Arataki Gang Chief Advisor - Complete "The Gang's Daily Deeds" and unlock all endings.
|
||||
84135:One More Look! - Gaze upon the glory that is Kuki Shinobu in a shrine maiden outfit.
|
||||
84136:"Upstairs..." - Be dissuaded before alerting Kujou Sara and Kuki Shinobu.
|
||||
84137:You Thought We Were For Real, Eh? - Complete "Trap 'Em by Storm" and unlock all endings.
|
||||
84138:An Ideal Detective Am I - Correctly analyze the motives and the truth behind the crime the first time.
|
||||
84139:Sangonomiya Supplications - Ask Gorou whether Kokomi knows about the happenings on Watatsumi Island.
|
||||
84140:Optimal Solution - Complete "A Confounding Conundrum" and unlock all endings.
|
||||
84141:To You in a Hundred Years - Read all the letters sent to Faruzan.
|
||||
84142:Mechanics: From Beginner to...? - Guess correctly the smallest number of moves it will take to solve a seven-layer Pagoda Stack.
|
||||
84143:The Name Is Layla - Complete "Ever Silent Stars" and unlock all endings.
|
||||
84144:She's Already Tense - Help Layla finish her thesis without causing her further anxiety.
|
||||
84145:Secret of Seelie and the Star-Lit Sky - Obtain the authentic letter of the Wisdom Seelie.
|
||||
84146:Art and Life - Complete "The Pendulum of Weal and Woe" and unlock all endings.
|
||||
84147:School Days - Find the annotated books in the House of Daena.
|
||||
84148:An Architect's Romanticism - Chat about the future with Kaveh in the desert.
|
||||
84096:Like Water Disappearing Into Water - Hear about the "prophecy" that has been circulating around Fontaine.
|
||||
84097:A Detective in Action - Investigate the truth of the incident as Lyney's "attorney."
|
||||
84098:A Twist of Great Magic - The Oratrice Mecanique d'Analyse Cardinale has delivered a verdict of not guilty.
|
||||
84099:Prelude of Blancheur and Noirceur - Complete "Prelude of Blancheur and Noirceur."
|
||||
84300:Lennék én folyóvíz - Hear the Oceanid's call and connect with her consciousness.
|
||||
84301:Once Upon a Time in Fleuve Cendre - Learn about Navia's father at the Spina di Rosula's stronghold.
|
||||
84302:Tragedy Repeats Itself - Reveal the truth behind the "serial disappearances case."
|
||||
84303:As Light Rain Falls Without Reason - Complete "As Light Rain Falls Without Reason."
|
||||
84501:...Odomu? - Successfully conduct cultural exchange with the hilichurls in "Language Exchange."
|
||||
84502:Yo dala? - Successfully conduct cultural exchange with the hilichurls in "Poetry Exchange."
|
||||
84503:Perfectionist - Complete all of Tsarevich's commissions flawlessly in "Reliable Helper."
|
||||
@@ -894,6 +908,8 @@
|
||||
84540:Guess Who? - Find out who Zhenyu really is.
|
||||
84541:Well, At Least It Ended - Hear Junkichi out as he puts his story together.
|
||||
84542:Her and Her Cat - Follow Neko up Mt. Yougou to find "Hibiki"'s trail.
|
||||
84054:Anna's Adventures - Help Anna become an adventurer.
|
||||
84055:Prelude to the Journey - A young man is about to embark on a long journey...
|
||||
84543:Aha! What's on the Hook? - Fish some strange things up with Kayvan...
|
||||
84544:Kalimi's Fungus - Watch Hatim make a killing on the exchange!
|
||||
84545:When Wealth Comes A-Knockin' - Give Hatim some Apple Cider.
|
||||
@@ -917,6 +933,11 @@
|
||||
84563:A Lingering Fragrance - Witness Nermin's tale.
|
||||
84564:Swordseeker - Witness the tale of Lan and the "Unseen Razor."
|
||||
84565:To Walk The Horizon...? - Witness Sun Yu's tale.
|
||||
84566:Office on the Avenue - Witness various miscellaneous matters in the Court of Fontaine.
|
||||
84567:Not Your Average Joe - Brew a special blend of coffee.
|
||||
84568:Aesthetic Critique - Listen to Depierris' theories regarding "aesthetics."
|
||||
84569:Second Childhood - Play with the kids, and witness their story.
|
||||
84570:A Sudden Squall - Witness Iaune's work travails.
|
||||
85000:Nothing to Lose But Time - Unlock the secrets of two sundials.
|
||||
85001:Interview With a Bygone God - Hear the story of a bygone deity.
|
||||
85002:Crouching Dragon, Hidden Chi - Learn about the tale of the Chi.
|
||||
@@ -924,6 +945,60 @@
|
||||
85004:Shadow Over Luhua Pool - Help Vermeer get the scenery of his dreams.
|
||||
85005:Ready Player Zero - Play a simple game with Childish Jiang.
|
||||
85006:Trees Should Blend Their Roots and Shade, for That Is Where the Home Is Made - Witness the story of Yuan Hong's household.
|
||||
84026:Fantastic Voyage: Prologue - Complete "Fantastic Voyage" and unlock all endings.
|
||||
84100:Archaic Lord of Lightning and Blitz - Witness the awesome meteorological power of Bennett's phenomenally bad luck.
|
||||
84101:The Power of Luck - Activate the mechanisms and obtain the treasure without making any mistakes.
|
||||
84104:Evil Is Banished - Complete "Signs of Evil" and unlock all endings.
|
||||
84028:Behold, Mine Evil-Espying Eye! - Correctly interpret all clues.
|
||||
84107:Red Hot Chili Popsicles - Make a popsicle using the wrong recipe and provoke Chongyun's Pure-Yang Spirit.
|
||||
84102:A Line That May Be Crossed - Complete "Wellspring of Healing" and unlock all endings.
|
||||
84108:An Idol's Last Line of Defense - Successfully persuade Albert and Barbara's other fans to leave.
|
||||
84105:Mondstadt's Spiciest Surprise - Sample Barbara's Chilibrew.
|
||||
84103:A Maid of Strength and Virtue - Complete "Chivalric Training" and unlock all endings.
|
||||
84106:"...For I Am Duty Bound" - Help Noelle discover the source of her strength.
|
||||
84109:A World Known Only Unto Roses - Read Noelle's study notes.
|
||||
84110:Stress Relief - Complete "Knightly Exam Prep" and unlock all endings.
|
||||
84111:Invulnerable Maid-Knight - Listen to "A Knight's Journey Through Liyue" with Noelle.
|
||||
84112:Mondstadt's Note-Taker General - Read Noelle's study notes.
|
||||
84113:Diona Special, Stirred, Not Shaken - Complete "The Cat and the Cocktail" and unlock all endings.
|
||||
84114:But There's a Catch... - Help Diona find a special base drink.
|
||||
84115:Kitten Queen - Bring all the cats back to The Cat's Tail.
|
||||
84116:Everyone's Happy - Complete "A Housekeeper's Daily Chores" and unlock all endings.
|
||||
84117:Housekeeper Extraordinaire - Complete the big cleanup within the time limit
|
||||
84118:From the Sea Never Returning - Learn of Inu Shoushou's story together with Thoma
|
||||
84119:Taller by Half - Complete "Yoohoo Art: Seichou no Jutsu" and unlock all endings.
|
||||
84120:Mujina-Class Ninja - Obtain Sayu's highest rating during agility training.
|
||||
84121:Dish Effect: Mobility Decreased - You were unable to prevent Sayu's reckless consumption...
|
||||
84122:Honorary Crux Member - Complete "When the Crux Shines Bright" and unlock all endings.
|
||||
84123:Wine Unburdens - Take part in the Qingce banquet with Beidou
|
||||
84124:Guyun Buyers' Club - Find out the truth behind the deal Beidou's making
|
||||
84125:General of Watatsumi - Complete "The Canine General's Special Operations" and unlock all endings
|
||||
84126:Changing Times - Draw all fortune slips at the Grand Narukami Shrine.
|
||||
84127:To Tell or Not to Tell, That Is the Question - Discover Ms. Hina's true identity at the Yae Publishing House.
|
||||
84128:Megrez's Companion Star - Complete "The Jade Chamber's Returning Guest" and unlock all endings.
|
||||
84129:You've Got to Have Reserves - Fish? The more the merrier, of course!
|
||||
84130:Overprotectiveness - A single stone births a thousand ripples. It seems like Ningguang's day off is not to be.
|
||||
84131:The Lingering Song - Complete "A Song That Knows Grace" and unlock all endings.
|
||||
84132:May This Moment Be Made to Last - Take a commemorative photo with Yun Jin.
|
||||
84133:A Strict Master Trains a Talented Pupil - Complete the practice session without hitting a single blue scarecrow.
|
||||
84134:Arataki Gang Chief Advisor - Complete "The Gang's Daily Deeds" and unlock all endings.
|
||||
84135:One More Look! - Gaze upon the glory that is Kuki Shinobu in a shrine maiden outfit.
|
||||
84136:"Upstairs..." - Be dissuaded before alerting Kujou Sara and Kuki Shinobu.
|
||||
84137:You Thought We Were For Real, Eh? - Complete "Trap 'Em by Storm" and unlock all endings.
|
||||
84138:An Ideal Detective Am I - Correctly analyze the motives and the truth behind the crime the first time.
|
||||
84139:Sangonomiya Supplications - Ask Gorou whether Kokomi knows about the happenings on Watatsumi Island.
|
||||
84140:Optimal Solution - Complete "A Confounding Conundrum" and unlock all endings.
|
||||
84141:To You in a Hundred Years - Read all the letters sent to Faruzan.
|
||||
84142:Mechanics: From Beginner to...? - Guess correctly the smallest number of moves it will take to solve a seven-layer Pagoda Stack.
|
||||
84143:The Name Is Layla - Complete "Ever Silent Stars" and unlock all endings.
|
||||
84144:She's Already Tense - Help Layla finish her thesis without causing her further anxiety.
|
||||
84145:Secret of Seelie and the Star-Lit Sky - Obtain the authentic letter of the Wisdom Seelie.
|
||||
84146:Art and Life - Complete "The Pendulum of Weal and Woe" and unlock all endings.
|
||||
84147:School Days - Find the annotated books in the House of Daena.
|
||||
84148:An Architect's Romanticism - Chat about the future with Kaveh in the desert.
|
||||
84149:Make Merry - Complete "Shenanigans and Sweet Wine" and unlock all endings.
|
||||
84150:Lucky Coin - Participate in the wager set up by Kaeya.
|
||||
84151:Shh... Listen! - Listen to the voice coming from the confinement room.
|
||||
86001:You Came, You Saw, We Co-Oped - Complete Domains together with other players 5 times.
|
||||
86002:You Came, You Saw, We Co-Oped - Complete Domains together with other players 20 times.
|
||||
86003:You Came, You Saw, We Co-Oped - Complete Domains together with other players 100 times.
|
||||
@@ -937,13 +1012,13 @@
|
||||
86011:This Is Fine - Defeat a Pyro Regisvine in Co-Op Mode.
|
||||
86012:A Fish Called Rhodeia - Defeat an Oceanid in Co-Op Mode.
|
||||
86013:Wolf Pact - Defeat the king of Wolvendom in Co-Op Mode.
|
||||
86021:A Delusion's Abilities Don't Decide a Battle's Outcome - Defeat Childe in Co-Op Mode.
|
||||
86015:Moving Mountains - Defeat a Primo Geovishap in Co-Op Mode.
|
||||
86016:Blast From the Past - Defeat Azhdaha in Co-Op Mode.
|
||||
86017:Put on Ice - Defeat a Cryo Hypostasis in Co-Op Mode.
|
||||
86018:No Strings Attached, Anymore - Defeat a Maguu Kenki in Co-Op Mode.
|
||||
86019:Operation Bonfire - Defeat a Pyro Hypostasis in Co-Op Mode.
|
||||
86020:The Not-So-Perpetual Mechanical Array - Defeat a Perpetual Mechanic Array in Co-Op Mode.
|
||||
86021:A Delusion's Abilities Don't Decide a Battle's Outcome - Defeat Childe in Co-Op Mode.
|
||||
86022:Our Hearts as One - Defeat a Thunder Manifestation in Co-Op Mode.
|
||||
86023:Water, Basically - Defeat a Hydro Hypostasis in Co-Op Mode.
|
||||
86024:Dashing Through the Snow... and the Flames - Defeat Signora in Co-Op Mode.
|
||||
@@ -951,4 +1026,13 @@
|
||||
86026:Brave the Lightning's Glow... - Defeat the Raiden Shogun in Co-Op Mode.
|
||||
86027:Surpassing the Ancients' Wisdom - Defeat the Ruin Serpent in Co-Op Mode.
|
||||
86028:I'm a Flexitarian - Defeat a Jadeplume Terrorshroom in Co-Op Mode.
|
||||
86029:Electric Shock Hazard - Defeat an Electro Regisvine in Co-Op Mode.
|
||||
86029:Electric Shock Hazard - Defeat an Electro Regisvine in Co-Op Mode.
|
||||
86030:End of the Eternal Return - Defeat the Aeonblight Drake in Co-Op Mode.
|
||||
86031:Ever So Slightly Inferior - Defeat the Algorithm of Semi-Intransient Matrix of Overseer Network in Co-Op Mode.
|
||||
86032:The Greenery Out of Space - Defeat a Dendro Hypostasis in Co-Op Mode.
|
||||
86033:Dance Like You Want to Win! - Defeat Shouki no Kami, the Prodigal in Co-Op Mode.
|
||||
86034:Desert-Dwellers' Rite of Passage - Defeat the Setekh Wenut in Co-Op Mode.
|
||||
86035:Presumption of Guilt - Defeat the Iniquitous Baptist in Co-Op Mode.
|
||||
86036:Proof of the Reed Sea Conqueror - Defeat the Guardian of Apep's Oasis in Co-Op Mode.
|
||||
86037:The Power of Science is Staggering! - Complete one form of the "Icewind Suite" challenge in Co-Op Mode.
|
||||
86038:A Successful Hunt - Defeat the Emperor of Fire and Iron in Co-Op Mode.
|
||||
|
@@ -21,6 +21,8 @@
|
||||
2020:Windblume's Breath
|
||||
2021:A Parade of Providence
|
||||
2022:Duel! The Summoners' Summit!
|
||||
2023:Secret Summer Paradise
|
||||
2024:Mega Meka Melee
|
||||
// 1.0
|
||||
1001:Lantern Rite
|
||||
5001:Elemental Crucible
|
||||
@@ -166,7 +168,7 @@
|
||||
5116:Second Blooming
|
||||
5117:Warrior's Spirit
|
||||
5118:Almighty Arataki Extraordinary and Exhilarating Extreme Beetle Brawl
|
||||
5119:Heated Battle Mode: Tactical Formation
|
||||
5119:Heated Battle Mode: The Profound Purpose of Practice
|
||||
5121:Vultur Volans Chapter
|
||||
5122:Lord of the Desert
|
||||
5126:Desert of Hadramaveth
|
||||
@@ -194,12 +196,22 @@
|
||||
5143:The Forge Realm's Temper
|
||||
5146:Genius Invokation TCG: Radiant Secrets
|
||||
// 3.8
|
||||
5140: Exploration on dangerous roads
|
||||
5141: Adventurer Trial - Advanced (v2)
|
||||
5142: telepathy
|
||||
5145: Invitation Event - Kaya
|
||||
5148:Mirror Casting Training - Immeasurable War
|
||||
5119: Call of the Seven Saints - Hot Fight Mode: Universal Guide
|
||||
5140:Perilous Expedition
|
||||
5141:Adventurer's Trials: Advanced
|
||||
5142:Shared Sight
|
||||
5145:Hangout Event
|
||||
5148:The Forge Realm's Temper: Endless Swarm
|
||||
5119:Heated Battle Mode: The Profound Purpose of Practice
|
||||
// 4.0
|
||||
5148:The Forge Realm's Temper: Endless Swarm
|
||||
5119:Heated Battle Mode: The Profound Purpose of Practice
|
||||
5147:Studies in Light and Shadow: A Fontaine of Enchantment
|
||||
5149:Felis Fuscus Chapter
|
||||
5150:Relic Records: Creations of the Hydro Nation
|
||||
5151:Verdict of Blades
|
||||
5153:Lone Suzerain of Land and Sea
|
||||
5154:Gear and Clockwork Roundelay
|
||||
5158:The Terrestrial Sea, Origin of All Waters
|
||||
// newcomers and special events
|
||||
101: The way ahead is set
|
||||
1014:Send Barbara activity
|
||||
|
@@ -118,6 +118,46 @@
|
||||
30544:Stamen of Khvarena's Origin
|
||||
30553:Ancient Abscission
|
||||
30554:Ancient Abscission
|
||||
31412:Forgotten Vessel
|
||||
31413:Forgotten Vessel
|
||||
31422:Masterpiece's Overture
|
||||
31423:Masterpiece's Overture
|
||||
31432:Veteran's Visage
|
||||
31433:Veteran's Visage
|
||||
31442:Hunter's Brooch
|
||||
31443:Hunter's Brooch
|
||||
31452:Moment of Judgment
|
||||
31453:Moment of Judgment
|
||||
31513:Forgotten Vessel
|
||||
31514:Forgotten Vessel
|
||||
31523:Masterpiece's Overture
|
||||
31524:Masterpiece's Overture
|
||||
31533:Veteran's Visage
|
||||
31534:Veteran's Visage
|
||||
31543:Hunter's Brooch
|
||||
31544:Hunter's Brooch
|
||||
31553:Moment of Judgment
|
||||
31554:Moment of Judgment
|
||||
32412:Golden Night's Bustle
|
||||
32413:Golden Night's Bustle
|
||||
32422:Golden Bird's Shedding
|
||||
32423:Golden Bird's Shedding
|
||||
32432:Golden Troupe's Reward
|
||||
32433:Golden Troupe's Reward
|
||||
32442:Golden Song's Variation
|
||||
32443:Golden Song's Variation
|
||||
32452:Golden Era's Prelude
|
||||
32453:Golden Era's Prelude
|
||||
32513:Golden Night's Bustle
|
||||
32514:Golden Night's Bustle
|
||||
32523:Golden Bird's Shedding
|
||||
32524:Golden Bird's Shedding
|
||||
32533:Golden Troupe's Reward
|
||||
32534:Golden Troupe's Reward
|
||||
32543:Golden Song's Variation
|
||||
32544:Golden Song's Variation
|
||||
32553:Golden Era's Prelude
|
||||
32554:Golden Era's Prelude
|
||||
51110:Goblet of the Sojourner
|
||||
51111:Goblet of the Sojourner
|
||||
51112:Goblet of the Sojourner
|
||||
@@ -3187,4 +3227,4 @@
|
||||
99551:Lord of Wind over Firmament's Hourglass
|
||||
99552:Lord of Wind over Firmament's Hourglass
|
||||
99553:Lord of Wind over Firmament's Hourglass
|
||||
99554:Lord of Wind over Firmament's Hourglass
|
||||
99554:Lord of Wind over Firmament's Hourglass
|
||||
|
@@ -2,8 +2,10 @@
|
||||
21:Gilded Dreams
|
||||
27:Desert Pavilion Chronicle
|
||||
28:Flower of Paradise Lost
|
||||
29:水仙之梦
|
||||
30:花海甘露之光
|
||||
29:Nymph’s Dream
|
||||
30:Vourukasha’s Glow
|
||||
31:Marechaussee Hunter
|
||||
32:Golden Troupe
|
||||
51:Resolution of Sojourner
|
||||
52:Brave Heart
|
||||
53:Defender's Will
|
||||
|
@@ -1,8 +1,8 @@
|
||||
1002:Kamisato Ayaka
|
||||
1002:Kamisato Ayaka
|
||||
1003:Jean
|
||||
1005:Aether
|
||||
1005:Male Character
|
||||
1006:Lisa
|
||||
1007:Lumine
|
||||
1007:Female Lead
|
||||
1014:Barbara
|
||||
1015:Kaeya
|
||||
1016:Diluc
|
||||
@@ -45,7 +45,6 @@
|
||||
1058:Yae Miko
|
||||
1059:Shikanoin Heizou
|
||||
1060:Yelan
|
||||
1061:Kirara
|
||||
1062:Aloy
|
||||
1063:Shenhe
|
||||
1064:Yun Jin
|
||||
@@ -60,10 +59,14 @@
|
||||
1073:Nahida
|
||||
1074:Layla
|
||||
1075:Wanderer
|
||||
1076:Faruzan
|
||||
1077:Yaoyao
|
||||
1078:Alhaitham
|
||||
1079:Dehya
|
||||
1080:Mika
|
||||
1081:Kaveh
|
||||
1082:Baizhu
|
||||
1082:Baizhu
|
||||
1076:Faruzan
|
||||
1061:Kirara
|
||||
1083:Lynette
|
||||
1084:Lyney
|
||||
1085:Freminet
|
||||
|
@@ -75,4 +75,8 @@ All skins
|
||||
Monthly cards
|
||||
/give 1202 x999
|
||||
Troubleshoot
|
||||
/troubleshoot
|
||||
/troubleshoot
|
||||
Unlock flight
|
||||
/prop fly on
|
||||
Take off!
|
||||
/tp ~ ~100 ~
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
11101:Dull Blade
|
||||
11101:Dull Blade
|
||||
11201:Silver Sword
|
||||
11301:Cool Steel
|
||||
11302:Harbinger of Dawn
|
||||
@@ -27,6 +27,9 @@
|
||||
11420:Prized Isshin Blade
|
||||
11421:Prized Isshin Blade
|
||||
11422:Toukabou Shigure
|
||||
11424:Wolf-Fang
|
||||
11425:Finale of the Deep
|
||||
11426:Fleuve Cendre Ferryman
|
||||
11501:Aquila Favonia
|
||||
11502:Skyward Blade
|
||||
11503:Freedom-Sworn
|
||||
@@ -61,6 +64,8 @@
|
||||
12416:Akuoumaru
|
||||
12417:Forest Regalia
|
||||
12418:Mailed Flower
|
||||
12424:Talking Stick
|
||||
12425:Tidal Shadow
|
||||
12501:Skyward Pride
|
||||
12502:Wolf's Gravestone
|
||||
12503:Song of Broken Pines
|
||||
@@ -87,6 +92,8 @@
|
||||
13416:Wavebreaker's Fin
|
||||
13417:Moonpiercer
|
||||
13419:Missive Windspear
|
||||
13424:Ballad of the Fjords
|
||||
13425:Rightful Reward
|
||||
13501:Staff of Homa
|
||||
13502:Skyward Spine
|
||||
13504:Vortex Vanquisher
|
||||
@@ -118,6 +125,8 @@
|
||||
14415:Oathsworn Eye
|
||||
14416:Wandering Evenstar
|
||||
14417:Fruit of Fulfillment
|
||||
14424:Sacrificial Jade
|
||||
14425:Flowing Purity
|
||||
14501:Skyward Atlas
|
||||
14502:Lost Prayer to the Sacred Winds
|
||||
14504:Memory of Dust
|
||||
@@ -153,6 +162,8 @@
|
||||
15417:King's Squire
|
||||
15418:End of the Line
|
||||
15419:Ibis Piercer
|
||||
15424:Scion of the Blazing Sun
|
||||
15425:Song of Stillness
|
||||
15501:Skyward Harp
|
||||
15502:Amos' Bow
|
||||
15503:Elegy for the End
|
||||
@@ -160,3 +171,4 @@
|
||||
15508:Aqua Simulacra
|
||||
15509:Thundering Pulse
|
||||
15511:Hunter's Path
|
||||
15512:The First Great Magic
|
||||
|
@@ -17,9 +17,9 @@
|
||||
80017:Как закалялась сталь - Возвысьте оружие до фазы 2.
|
||||
80018:Как закалялась сталь - Возвысьте оружие до фазы 4.
|
||||
80019:Как закалялась сталь - Возвысьте оружие до фазы 6.
|
||||
80020:Это личное... - Достигните уровня дружбы 10 с 4-мя персонажами.
|
||||
80021:Это личное... - Достигните уровня дружбы 10 с 8-мью персонажами.
|
||||
80022:Это личное... - Достигните уровня дружбы 10 с 16-тью персонажами.
|
||||
80020:Это личное... - Достигните уровня дружбы 10 с четырьмя персонажами.
|
||||
80021:Это личное... - Достигните уровня дружбы 10 с восьмью персонажами.
|
||||
80022:Это личное... - Достигните уровня дружбы 10 с шестнадцатью персонажами.
|
||||
80023:Щедрость земли - Получите награды Цветов богатства или Цветов озарения 200 раз.
|
||||
80024:Щедрость земли - Получите награды Цветов богатства или Цветов озарения 400 раз.
|
||||
80025:Щедрость земли - Получите награды Цветов богатства или Цветов озарения 800 раз.
|
||||
@@ -89,7 +89,6 @@
|
||||
80089:Сказания из Татары - Разрешите ситуацию с горном Микагэ.
|
||||
80090:Эхо ярости - Завершите задание «Наследие Оробаси».
|
||||
80091:Байки из склепа - Соберите полную коллекцию «Рассказов улицы Токи».
|
||||
80092:По островам царства грома - Достигните уровня репутации 10 в Инадзуме.
|
||||
80093:В поисках приключений грома I - Завершите 6 активируемых механизмами ограниченных по времени испытаний открытого мира на острове Наруками, в Каннадзуке и на острове Ясиори в Инадзуме.
|
||||
80094:В поисках приключений грома I - Завершите 12 активируемых механизмами ограниченных по времени испытаний открытого мира на острове Наруками, в Каннадзуке и на острове Ясиори в Инадзуме.
|
||||
80095:В поисках приключений грома I - Завершите 24 активируемых механизмами ограниченных по времени испытания открытого мира на острове Наруками, в Каннадзуке и на острове Ясиори в Инадзуме.
|
||||
@@ -103,11 +102,11 @@
|
||||
80105:В поисках сокровищ грома II - Откройте 40 сундуков на островах Ватацуми и Сэйрай в Инадзуме.
|
||||
80106:В поисках сокровищ грома II - Откройте 80 сундуков на островах Ватацуми и Сэйрай в Инадзуме.
|
||||
80107:В поисках сокровищ грома II - Откройте 160 сундуков на островах Ватацуми и Сэйрай в Инадзуме.
|
||||
80108:Охотники за грозами Сэйрая - Завершите «Охотники за грозами Сэйрая».
|
||||
80109:Тот же свет луны - Завершите «Лунную бездну».
|
||||
80110:В поисках приключений грома II - Завершите 6 активируемых механизмами ограниченных по времени испытаний открытого мира на островах Ватацуми и Сэйрай в Инадзуме.
|
||||
80111:В поисках приключений грома II - Завершите 12 активируемых механизмами ограниченных по времени испытаний открытого мира на островах Ватацуми и Сэйрай в Инадзуме.
|
||||
80112:В поисках приключений грома II - Завершите 24 активируемых механизмами ограниченных по времени испытания открытого мира на островах Ватацуми и Сэйрай в Инадзуме.
|
||||
80108:Охотники за грозами Сэйрая - Завершите «Охотники за грозами Сэйрая».
|
||||
80109:Тот же свет луны - Завершите «Лунную бездну».
|
||||
80113:Континентальный исследователь: Цуруми - Откройте полностью карту Цуруми.
|
||||
80114:Край тумана - Активируйте все точки телепортации на острове Цуруми.
|
||||
80115:Паломник святилища: Цуруми - Откройте все усыпальницы глубин на острове Цуруми.
|
||||
@@ -122,7 +121,7 @@
|
||||
80126:Гроза навсегда - Выполните поручение некоего писателя по сбору материалов.
|
||||
80127:#{M#Хозяин}{F#Хозяйка} зоопарка - Поймайте 1 дикое животное с помощью Сети всевездесущности.
|
||||
80128:#{M#Хозяин}{F#Хозяйка} зоопарка - Поймайте 30 диких животных с помощью Сети всевездесущности.
|
||||
80129:Хозяин зоопарка - Поймайте 100 диких животных с помощью Сети всевездесущности.
|
||||
80129:#{M#Хозяин}{F#Хозяйка} зоопарка - Поймайте 100 диких животных с помощью Сети всевездесущности.
|
||||
80130:«...тебе неведома ночь...» - Откройте полностью карту Энканомии.
|
||||
80131:Высшая власть в Токоё - Активируйте все точки телепортации в Энканомии.
|
||||
80132:Наставления Фосфороса - Доведите 6 фей до их садов в Энканомии.
|
||||
@@ -208,13 +207,12 @@
|
||||
80218:Легендарный игрок - Суммарно получите {param0} счастливых монет.
|
||||
80219:Легендарный игрок - Суммарно получите {param0} счастливых монет.
|
||||
80220:Легендарный игрок - Суммарно получите {param0} счастливых монет.
|
||||
80221:Дайс-шейкер - В победной игре нанесите не менее 8 ед. урона за один ход ×{param0}.
|
||||
80222:Дайс-шейкер - В победной игре нанесите не менее 8 ед. урона за один ход ×{param0}.
|
||||
80223:Дайс-шейкер - В победной игре нанесите не менее 8 ед. урона за один ход ×{param0}.
|
||||
80221:Дайс-шейкер - В победной игре нанесите 8 ед. урона за один ход ×{param0}.
|
||||
80222:Дайс-шейкер - В победной игре нанесите 8 ед. урона за один ход ×{param0}.
|
||||
80223:Дайс-шейкер - В победной игре нанесите 8 ед. урона за один ход ×{param0}.
|
||||
80224:Континентальный исследователь: Жгучие сны пустыни II - Откройте карту следующего региона Сумеру: пустыня Хадрамавет.
|
||||
80225:Через миражи и песчаные бури II - Активируйте все точки телепортации в следующем регионе Сумеру: пустыня Хадрамавет.
|
||||
80226:Паломник святилища: Жгучие сны пустыни II - Откройте все Усыпальницы глубин в следующем регионе Сумеру: пустыня Хадрамавет.
|
||||
80227:Панихида Билцис - Завершите «Панихиду Билцис»
|
||||
80228:Пустыня укажет тебе путь II - Доведите фей ({param0}) до их садов в пустыне Хадрамавет.
|
||||
80229:Пустыня укажет тебе путь II - Доведите фей ({param0}) до их садов в пустыне Хадрамавет.
|
||||
80230:Пустыня укажет тебе путь II - Доведите фей ({param0}) до их садов в пустыне Хадрамавет.
|
||||
@@ -224,6 +222,7 @@
|
||||
80234:Искатель приключений в зыбучих песках II - Завершите активируемых механизмом ограниченных по времени испытаний открытого мира в пустыне Хадрамавет: {param0}.
|
||||
80235:Искатель приключений в зыбучих песках II - Завершите активируемых механизмом ограниченных по времени испытаний открытого мира в пустыне Хадрамавет: {param0}.
|
||||
80236:Искатель приключений в зыбучих песках II - Завершите активируемых механизмом ограниченных по времени испытаний открытого мира в пустыне Хадрамавет: {param0}.
|
||||
80227:Панихида Билцис - Завершите «Панихиду Билцис»
|
||||
80237:Континентальный исследователь: Благословенная хамада - Откройте карты следующих регионов Сумеру: Гавирех Ладжавард, царство Фарахкерт.
|
||||
80238:Небеса опустились в бездну - Активируйте все точки телепортации в следующих регионах Сумеру: Гавирех Ладжавард, царство Фарахкерт.
|
||||
80239:Паломник святилища: Благословенная хамада - Откройте все Усыпальницы глубин в следующих регионах Сумеру: Пустыня Одинокой скалы, царство Фарахкерт.
|
||||
@@ -231,13 +230,33 @@
|
||||
80241:Проводник пустыни - Доведите фей ({param0}) до их садов в Гавирехе Ладжаварде, царстве Фарахкерт.
|
||||
80242:Проводник пустыни - Доведите фей ({param0}) до их садов в Гавирехе Ладжаварде, царстве Фарахкерт.
|
||||
80243:Охотник за сокровищами пустыря - Откройте сундуки ({param0}) в Гавирехе Ладжаварде, царстве Фарахкерт.
|
||||
80244:Охотник за сокровищами пустыря - Откройте сундуки ({param0}) в Гавирехе Ладжаварде, царстве Фарахкерт.
|
||||
80244:Охотник за сокровищами пустыря - Откройте сундуки ({param0}) в пустыне Одинокой скалы, царстве Фарахкерт.
|
||||
80245:Охотник за сокровищами пустыря - Откройте сундуки ({param0}) в Гавирехе Ладжаварде, царстве Фарахкерт.
|
||||
80246:Искатель приключений пустыря - Завершите ограниченные по времени испытания открытого мира ({param0}) в Гавирехе Ладжаварде, царстве Фарахкерт.
|
||||
80247:Искатель приключений пустыря - Завершите ограниченные по времени испытания открытого мира ({param0}) в Гавирехе Ладжаварде, царстве Фарахкерт.
|
||||
80247:Искатель приключений пустыря - Завершите ограниченные по времени испытания открытого мира ({param0}) в пустыне Одинокой скалы, царстве Фарахкерт.
|
||||
80248:Искатель приключений пустыря - Завершите ограниченные по времени испытания открытого мира ({param0}) в Гавирехе Ладжаварде, царстве Фарахкерт.
|
||||
80249:Хварна добра и зла - Завершите «Хварну добра и зла».
|
||||
80250:Красная амрита - Повысьте Озеро амриты до макс. уровня.
|
||||
80249:Хварна добра и зла - Завершите «Хварну добра и зла».
|
||||
80252:Континентальный исследователь: Земля мелодичных родников I - Откройте карту Белло, Берилла и Кур-де-Фонтейна.
|
||||
80253:Всех вод источник I - Откройте все точки телепортации Белло, Берилла и Кур-де-Фонтейна.
|
||||
80254:Паломник святилища: Земля мелодичных родников I - Сломайте печати всех Усыпальниц глубин в Белло, Берилле и Кур-де-Фонтейне.
|
||||
80255:Капля чистой воды - Повысьте статую семи Архонтов в Фонтейне до макс. уровня.
|
||||
80256:Песнь росы - Повысьте фонтан Люсин в Кур-де-Фонтейне до макс. уровня.
|
||||
80257:Проводник по волнам I - Проследуйте за {param0} феями в их сады в Белло, Берилле и Кур-де-Фонтейне.
|
||||
80258:Проводник по волнам I - Проследуйте за {param0} феями в их сады в Белло, Берилле и Кур-де-Фонтейне.
|
||||
80259:Проводник по волнам I - Проследуйте за {param0} феями в их сады в Белло, Берилле и Кур-де-Фонтейне.
|
||||
80260:Охотник за морскими сокровищами I - Откройте {param0} сундуков в Белло, Берилле и Кур-де-Фонтейне.
|
||||
80261:Охотник за морскими сокровищами I - Откройте {param0} сундуков в Белло, Берилле и Кур-де-Фонтейне.
|
||||
80262:Охотник за морскими сокровищами I - Откройте {param0} сундуков в Белло, Берилле и Кур-де-Фонтейне.
|
||||
80263:Искатель морских приключений I - Завершите ограниченные по времени испытания открытого мира ({param0}) в Белло, Берилле и Кур-де-Фонтейне.
|
||||
80264:Искатель морских приключений I - Завершите ограниченные по времени испытания открытого мира ({param0}) в Белло, Берилле и Кур-де-Фонтейне.
|
||||
80265:Искатель морских приключений I - Завершите ограниченные по времени испытания открытого мира ({param0}) в Белло, Берилле и Кур-де-Фонтейне.
|
||||
80266:Анн в стране чудес - Завершите историю Отряда героев Нарциссенкрейца.
|
||||
80267:Картины. Мечты. Механический пёс - Узнайте секрет внутри Элинаса.
|
||||
80268:Земля чистых родников - Получите силу элемента Гидро.
|
||||
80269:Обманщица Ренар - Соберите полную коллекцию «Притч о животных Фонтейна».
|
||||
80270:Бандиты и сыщики - Соберите полную коллекцию серии «Бандиты и сыщики: Радужная брошь».
|
||||
80271:Коллекция несчастий - Соберите полную коллекцию «Закат и падение Ремурии».
|
||||
81000:Всеохватывающий вид - Достигните вершины пика Цинъюнь.
|
||||
81001:Останки режущих бурь - Достигните вершины башни в логове Ужаса Бури.
|
||||
81002:Семена истории, принесённые ветром... - Достигните безымянного острова на северо-востоке Мондштадта.
|
||||
@@ -257,6 +276,7 @@
|
||||
81023:Друзья по всему миру - Познакомьтесь с разными людьми во время своего путешествия.
|
||||
81024:Мегазвезда Мондштадта - Достигните уровня репутации 8 в Мондштадте.
|
||||
81025:Легенда Ли Юэ - Достигните уровня репутации 8 в Ли Юэ.
|
||||
80092:По островам царства грома - Достигните уровня репутации 10 в Инадзуме.
|
||||
81026:Цель уничтожена - Выполните 10 заказов на монстров.
|
||||
81027:Цель уничтожена - Выполните 20 заказов на монстров.
|
||||
81028:Цель уничтожена - Выполните 30 заказов на монстров.
|
||||
@@ -538,6 +558,7 @@
|
||||
81327:Чудесное путешествие - Завершите «Художника в свободном плавании».
|
||||
81328:Все загадки разгаданы! - Завершите «Монументальное исследование».
|
||||
81329:Возвращение духов - Завершите «Бледное пламя».
|
||||
81339:Изобильное море - Жизненные силы восстановились во всех цветочных полянах оазиса Вурукаша.
|
||||
81331:Храбрецы не бегут - Пройдите все испытания от Джарджар.
|
||||
81332:Путь света - Завершите все испытания Колокола духов.
|
||||
81333:Танец на барабанах - Завершите все испытания барабанных прыгунков.
|
||||
@@ -546,7 +567,39 @@
|
||||
81336:Кружение в небе над Паре-Ожеком - Заставьте Соруш пролететь некоторое время.
|
||||
81337:Чей ты потомок? Как тебя зовут? - Первый раз используйте Соруш для управления силой Хварны.
|
||||
81338:Соруш, используй силу - Бросьте фрукт ниродха с помощью Соруш, чтобы растопить кристаллы из застывшей амриты ({param0}).
|
||||
81339:Изобильное море - Жизненные силы восстановились во всех цветочных полянах оазиса Вурукаша.
|
||||
81340:Стиратель углов - Подавите Звериный разрыв с помощью силы кристаллов.
|
||||
81341:Охлаждение очага - Верните бурлящему озеру былое спокойствие.
|
||||
81342:Белый корабль - «Он идёт по волнам мечты...»
|
||||
81344:Энциклопедия натурфилософии - Найдите место встречи древнего общества при помощи стеклянной стены и книги, не поддающейся расшифровке.
|
||||
81345:Фонтейнское послание - Побеседуйте с Виржилем по-дружески.
|
||||
81346:Всего лишь собака... - Помогите Мамер починить Сеймура.
|
||||
81347:Это рыба, вкусная рыба - Попробуйте «праздничный торт» с мелюзиной.
|
||||
81348:Добро пожаловать в Фонтейн - Завершите маршрут на аквабусе.
|
||||
81349:Мечта о полёте - Завершите полёт на Летательном аппарате Антуана Роже.
|
||||
81350:Появление современных часов - Помогите Пуке найти руде полезное применение.
|
||||
81351:Грядущий водный мир - Вглядитесь в «пространство воды» под «поверхностью».
|
||||
81352:Эстетика непривлекательности - Ещё два шага Фонтейна к прекрасному.
|
||||
81353:Словно слёзы под дождём - Найдите самозванца среди остроскатов.
|
||||
81355:В жизни есть столько... - ...прекрасных вещей.
|
||||
81356:Око за око - Разберитесь с назойливыми пулелюсками!
|
||||
81357:Веришь ли ты в восторг? - Помогите построить рай для пухленей.
|
||||
81358:Сквозь трудности... - «...Чтобы заполучить Чудесный меч, способный одолеть злого короля, рыцарь врывается в древнюю крепость, закрытую магией...»
|
||||
81359:А потом... - «...После победы над злым королём рыцарь спасает принцессу. И в королевство возвращается свет...»
|
||||
81360:Этюд в чёрных тонах - Найдите более... специфический предмет для изучения в Институте натурфилософии.
|
||||
81361:Двадцать тысяч лье под водой - Следуйте за потоком...
|
||||
81362:Сводящий с ума аромат - Помогите Анри изменить судьбу.
|
||||
81363:Песнь древних - Услышьте мелодию старины.
|
||||
81364:Дева озера Нинианна - Победите местную легенду, Деву озера Нинианну
|
||||
81365:Дева озера Вивианна - Победите местную легенду, Деву озера Вивианну
|
||||
81366:Фонтейн ждёт, что каждый выполнит свой долг - Предмет возвращается к законному владельцу...
|
||||
81367:В поисках растраченного времени - Достигните уровня репутации 10 в Фонтейне.
|
||||
81368:Теория пухленькой эволюции - Сопровождайте маленького пухленя, пока он растёт.
|
||||
81369:Окружной судья океана - Победите местную легенду, Окружного судью океана
|
||||
81370:Железный виконт - Победите местную легенду, Железного виконта
|
||||
81371:Владыка отшельников: Доварху - Победите местную легенду, Владыку отшельников Доварху
|
||||
81372:Угасающий старый солдат - Победите местную легенду, Угасающего старого солдата
|
||||
81373:Меч ущелья - Победите местную легенду, Меч ущелья
|
||||
81374:Волшебные рыцари-близнецы - Победите местную легенду, Волшебных рыцарей-близнецов
|
||||
82001:Это просто практика... - Сбейте сокола в полёте с помощью лука.
|
||||
82002:Выстрел со ста шагов - Попадите прицельным выстрелом в уязвимое место противника с большого расстояния.
|
||||
82003:Вольный стрелок - Попадите прицельным выстрелом в уязвимое место противника с очень большого расстояния.
|
||||
@@ -642,6 +695,7 @@
|
||||
82096:Водная терапия - Победите зеркальную деву, не попав в её водяную тюрьму.
|
||||
82097:Здесь тихо... Слишком тихо... - Победите Пиро гипостазис после того, как он войдёт в потушенное состояние лишь один раз.
|
||||
82098:Битва за остров Наруками - Победите бесконечный механический массив, пока он находится в ослабленном состоянии.
|
||||
82109:Последний штрих - Победите Аждаху без использования щита.
|
||||
82099:Если бежать быстрее... - Победите магу кэнки, не попав под атаки его фантома.
|
||||
82100:Дуэль чести - Победите магу кэнки, не активируя его парирование «Оси но омотэ».
|
||||
82101:Ладно, я сделаю это сам - Победите древнего геовишапа, не отражая Первобытный поток.
|
||||
@@ -652,7 +706,6 @@
|
||||
82106:Клин клином вышибают - Победите кайраги: Огненная мощь, пока его оружие имеет статус Пиро.
|
||||
82107:Оседлать молнию - Победите кайраги: Громовое вознесение, пока его оружие имеет статус Электро.
|
||||
82108:Гром донёсся с востока - Получите удар молнии, вызванной митачурлом с электрическим топором...
|
||||
82109:Последний штрих - Победите Аждаху без использования щита.
|
||||
82110:Убийство всухую - Одолейте Гидро гипостазиса, не победив ни одну из капель (кроме периодов, когда гипостазис восстанавливает HP).
|
||||
82111:Гидробиологическое оружие - Вас побеждает существо, в которое превратился Гидро гипостазис.
|
||||
82112:Непередаваемая волна любви - Победите манифестацию грома так, чтобы вас не обнаружил Ударный зонд.
|
||||
@@ -680,12 +733,12 @@
|
||||
82134:Бешеный цветок в конце пути - Когда Электро папоротник выпустит пучок молний, парализуйте его атакой по венчику.
|
||||
82135:Дух противника сломлен! - Дождитесь, когда состояние Оживления завершится, и Пернатый плесенник перейдёт в состояние истощения, и победите его.
|
||||
82136:Запах жареных плесенников поутру - За одну битву уничтожьте 6 плесенников, выброшенных Пернатым плесенником в состоянии Горения.
|
||||
82137:Последний день дракона - За одну битву низвергните дракона вечных бедствий атакой на ядра, расположенные на его крыльях.
|
||||
82138:Победа - у тебя в голове - За одну битву прервите поток энергии дракона вечных бедствий атакой на ядро, расположенное в его голове.
|
||||
82139:Сопротивление бесполезно! - Победите дракона вечных бедствий с повышенным сопротивлением как минимум к двум разным элементам.
|
||||
82137:Последний день дракона - За одну битву низвергните Дракона вечных бедствий атакой на ядра, расположенные на его крыльях.
|
||||
82138:Победа - у тебя в голове - За одну битву прервите поток энергии Дракона вечных бедствий атакой на ядро, расположенное в его голове.
|
||||
82139:Сопротивление бесполезно! - Победите Дракона вечных бедствий с повышенным сопротивлением как минимум к двум разным элементам.
|
||||
82140:Сбой системы - Разрушьте Алгоритм полуизвечной матрицы оператора наблюдения, пока он находится в перегрузке.
|
||||
82141:Дэйзи, Дэйзи - Прервите состояние невидимости Алгоритма полуизвечной матрицы оператора наблюдения, атаковав его ядра Стимуляцией, Обострением или Разрастанием.
|
||||
82142:Постойте, господин робот! - Прервите яростную атаку дракона вечных бедствий атакой на ядро, расположенное в его голове.
|
||||
82142:Постойте, господин робот! - Прервите яростную атаку Дракона вечных бедствий атакой на ядро, расположенное в его голове.
|
||||
82143:Наномашины, мой мальчик! - Победите Пернатого плесенника, пока он находится в состоянии Оживления и использует свои боевые навыки.
|
||||
82144:Организация плацдарма - Узрите Алгоритм полуизвечной матрицы оператора наблюдения...
|
||||
82145:Невидимая рука - Победите первозданную конструкцию, не нарушая её невидимого состояния.
|
||||
@@ -697,7 +750,7 @@
|
||||
82151:Вегетация на арене - Выполните 10 раз: Одолейте 4 врагов с помощью реакции Вегетация за 2 сек.
|
||||
82155:Удивительная азотфиксация - В ходе одного испытания против Дендро гипостазиса одновременно переведите три восстанавливающих ядра в состояние оживления.
|
||||
82156:Разговор падающей травы - Сожгите оболочку из лозы Дендро гипостазиса, когда он совершает атаку в падении.
|
||||
82157:Грохот падения - Используйте элементальные матрицы, чтобы вызвать перезагрузку и парализовать Сёки но Ками.
|
||||
82157:Грохот падения - Используйте элементальные матрицы, чтобы вызвать перегрузку и парализовать Сёки но Ками.
|
||||
82158:Цикл рождения и смерти - Возрождение возможно даже на грани уничтожения...
|
||||
82159:Активный камуфляж - С помощью Стимуляции, Обострения, Разрастания или импульса истины прервите невидимость минимум 2 первозданных конструкций за 3 сек.
|
||||
82160:Повелитель благовоний... - Вызовите реакцию Рассеивание при помощи шаров эрозии, чтобы атаковать Унута Сетеха, пока он левитирует.
|
||||
@@ -707,9 +760,15 @@
|
||||
82164:Защита от взаимной атаки... - Разрушьте щит Сёки но Ками, когда он проводит мощный шквал атак.
|
||||
82165:Вот это настоящий Хранитель четырёх ветров! - Во время одного испытания Унута Сетеха активируйте реакцию рассеивания шара эрозии с помощью Крио, Пиро, Электро и Гидро атак соответственно.
|
||||
82166:Отчуждённость... - Победите Чудовищного крестителя, не нарушая его защитного купола.
|
||||
82167:Метод исключения - Победите Чудовищного крестителя, вобравшего все силы элементов.
|
||||
82167:Метод исключения - Победите Чудовищных крестителей всех возможных элементальных комбинаций.
|
||||
82168:В такие моменты слова будут лишними - Когда Чудовищный креститель совершает древние песнопения, уничтожьте все элементальные кольца, чтобы его парализовать.
|
||||
82169:Подобно движению солнца - Победите Стража оазиса Апепа, не попав под воздействие волн апокалипсиса.
|
||||
82175:Законный путь меж двух рек - Проиграйте дуэль легендарному остроскату...
|
||||
82176:Расколовшаяся клетка - Используйте атаки пневмой или усией, чтобы нарушить состояние напряжения у протогена расщелин.
|
||||
82177:Слишком горячо! - Без остановки пытайтесь заморозить фантазмов мутных вод...
|
||||
82178:Погребальная гроза - Используйте атаку пневмой, чтобы ослабить вихрь, созданный Коппелией во время кульминации представления.
|
||||
82179:Король умер, да здравствует король! - Прервите Пылающую коронацию Императора огня и железа.
|
||||
82180:Ледяная клятва - Атакой усии уничтожьте щит, который Коппелиус установил во время кульминации представления.
|
||||
84000:Затянутое начало - Завершите задания Архонтов в Мондштадте.
|
||||
84001:Чужеземец, поймавший ветер - Завершите главу «Чужеземец, поймавший ветер».
|
||||
84002:Горькие слёзы - Завершите главу «Горькие слёзы».
|
||||
@@ -736,8 +795,6 @@
|
||||
84023:Последнее прощание - Примите участие в Церемонии Вознесения.
|
||||
84024:Приближение новой звезды - Завершите «Приближение новой звезды».
|
||||
84025:Механизмы судьбы - Завершите задание «Хранитель ветви: Дайнслейф».
|
||||
84026:Волнительное приключение: Пролог - Завершите встречу «Волнительное приключение» и откройте все концовки.
|
||||
84028:Знаток нечисти - Безошибочно истолкуйте все подсказки.
|
||||
84029:Безумцы, разбойники и тёмные тайны - Узнайте судьбу Великого вора.
|
||||
84030:Перекрёсток судеб - Сбегите из загадочных руин.
|
||||
84031:Насмешка над силой богов - Узнайте о «Плетении судьбы»...
|
||||
@@ -763,8 +820,6 @@
|
||||
84051:Чужие желания - Исполните все желания, содержащиеся в статуе всевидящего божества.
|
||||
84052:Всевидящий бог, бренный мир - Завершите «Всевидящий бог, бренный мир».
|
||||
84053:«Всё благополучно» - Помогите Ван Пинъаню восстановить храм Бронзового Воробья.
|
||||
84054:Приключения Анны - Помогите Анне стать искательницей приключений.
|
||||
84055:В дальний путь - Юноша готовится к долгому путешествию...
|
||||
84056:Дворец до самых небес - Закончите реконструкцию Нефритового дворца.
|
||||
84057:Величие глубин - Одолейте Бешт, Отголосок Вихря
|
||||
84058:Видение из прошлого - Станьте свидетелем правды о прошлом деревни.
|
||||
@@ -805,15 +860,102 @@
|
||||
84093:Ещё не смертельная болезнь - Создайте лекарство, несущее надежду.
|
||||
84094:На том берегу судьбы - Станьте свидетелем чуда, дарованного «Грешником».
|
||||
84095:Кариберт - Выполните «Кариберт».
|
||||
84096:Как вода исчезает в воде - Послушайте о пророчестве, которое широко известно в Фонтейне.
|
||||
84097:Сыщик в действии - Разузнайте, что на самом деле произошло с Лини, в качестве его «представителя».
|
||||
84098:Большой магический разворот - Оратрис Меканик д'Анализ Кардиналь вынесла приговор: вина не доказана.
|
||||
84099:Прелюдия белых рос и чёрных волн - Завершите «Прелюдию белых рос и чёрных волн».
|
||||
84300:Ручей лепечет, полный благозвучья... - Услышьте зов океаниды и соединитесь с её сознанием
|
||||
84301:Однажды во Флёв Сандр - Узнайте об отце Навии на базе Спина-ди-Росула.
|
||||
84302:Трагедия повторяется - Раскройте дело об исчезновениях девушек
|
||||
84303:Словно лёгкий дождь без причины - Завершите «Словно лёгкий дождь без причины»
|
||||
84501:...Odomu? - Проведите успешный «языковой обмен» с хиличурлом.
|
||||
84502:Yo dala? - Проведите успешный «поэтический обмен» с хиличурлом.
|
||||
84503:Перфекционист - Безупречно выполните все поручения Царевича в задании «Сказано - сделано!»
|
||||
84504:Говорю как есть - Соберите информацию о Снежной в задании «Зимняя история».
|
||||
84505:Анекдоты Гео Архонта - Соберите полный сборник историй о Властелине Камня.
|
||||
84506:Останьтесь ненадолго, путешественники... - Послушайте историю о «Дожде клинков» в задании «Сейчас объясню».
|
||||
84507:Давным-давно, в далёком-далёком царстве... - Послушайте историю о «Гневе Хай Шаня» в задании «Сейчас объясню».
|
||||
84508:Карамба, пираты! - Сыграйте в пиратов с малышами Лулу, Фэем и Мэном.
|
||||
84509:Повар и рыбак - Завершите задания «Рыбак Цзян Сюэ» и «Дилемма Янь Сяо».
|
||||
84510:Любовь повсюду - Помогите Чжи Хуа отыскать пять счастливых знамений в задании «Хороший знак».
|
||||
84512:Излишняя тоска - Завершите 5 раз задание «Ветер воспоминаний уносит тоску».
|
||||
84513:На этаж повыше... - Помогите Хуай Аню починить лестницу на постоялом дворе «Ваншу».
|
||||
84514:Новичкам везёт - Выберите самый дорогой нефрит с первого раза.
|
||||
84515:Пора ответить за свои ошибки - Извинитесь перед Тимми.
|
||||
84516:Стукни и заработает - Принесите Герману только материалы для тренировочного манекена.
|
||||
84517:Мгновенная карма - Разоблачите Марджори и получите благодарность от Джека.
|
||||
84518:«Привет, любимый папочка...» - Послушайте историю Тимми.
|
||||
84519:Чудеса медицины - Вылечите болезнь Анны.
|
||||
84520:Во имя Фавония - Станьте свидетелем истории Джиллианы.
|
||||
84522:Академические притязания - Завершите задания «Потерянная реликвия» и «Дело о краже сокровищ».
|
||||
84523:Мечта и работа, стихи и хлеб - Завершите задание «Так называемая "работа"» и получите сборник поэзии Линь Лин.
|
||||
84524:Все хорошо, что хорошо кончается - Завершите задание «В ожидании старого друга».
|
||||
84525:Потрясающий роман - Подсмотрите в рукопись Чана Девятого.
|
||||
84526:Открыто для интерпретации - Испортите 4 знамения неизбежной любви.
|
||||
84527:Это не живая консерва - Съешьте еду в задании «Доставка еды»...
|
||||
84528:Замаскирован на виду - Помогите Санго и Рюдзи раскрыть дело.
|
||||
84529:Есть всегда одна истина? - Станьте свидетелем истории Рюдзи.
|
||||
84530:Ли Юэ итибан - Вылечите Тан Вэнь вкусной едой.
|
||||
84531:Опять бум шака-лака - Узнайте у Сян Лин об особых методах готовки.
|
||||
84532:Обед для двоих - Помогите Сюй Дуну и Камэи Мунэхисе приготовить по одному блюду.
|
||||
84533:Вопрос диеты - Помогите Парване проверить рецепты.
|
||||
84534:Рисовый самурай - Помогите Камэи Мунэхисе собрать ингредиенты из лагерей с обеих сторон.
|
||||
84535:«Простите за неудобства!» - Получите жалобу от Конды Дэнсукэ в задании «Обслуживание после продажи».
|
||||
84536:Самурай-гурман - Станьте свидетелем принятия Камэи Мунэхисы в ряды всеядных гурманов.
|
||||
84537:Ау... Есть кто? - Найдите скрытый проход на острове Рито.
|
||||
84538:Мнение редакции - Помогите Сигэру и Дзюнкити вернуться на творческий путь.
|
||||
84539:Пора открывать Досин додзё - Помогите Асакуре с тренировками 5 раз.
|
||||
84540:Угадай кто? - Узнайте, кем является Чжэнь Юй на самом деле.
|
||||
84541:Хотя бы заканчивается - Дослушайте историю Дзюнкити до конца.
|
||||
84542:Она и её кошка - Вместе с Нэко идите на гору Ёго и найдите следы Хибики.
|
||||
84054:Приключения Анны - Помогите Анне стать искательницей приключений.
|
||||
84055:В дальний путь - Юноша готовится к долгому путешествию...
|
||||
84543:Что на крючке? - Вместе с Кайваном выловите странные предметы.
|
||||
84544:Плесенник Калими - Посмотрите, как Хатим срывает куш на бирже!
|
||||
84545:Богатство стучится в дверь - Угостите Хатима яблочным напитком.
|
||||
84546:Котолов - Помогите Саре отыскать её кошек.
|
||||
84547:Законы арифметики - Помогите Гарсии завершить его устройство.
|
||||
84548:Труд всему голова - Соберите побольше грибов для Хамбэя.
|
||||
84549:Релаксационная терапия - Исполните желания 3 пациентов.
|
||||
84550:На корню - Найдите и победите убегающую попрыгунью.
|
||||
84551:Дата отплытия - Получите письмо Александры...
|
||||
84552:Мора не виновата - Станьте свидетелем приключений Всеядных гурманов в Сумеру.
|
||||
84553:Небо высоко, а земля... - Помогите Фаргани с измерениями.
|
||||
84554:Время ответа - Станьте свидетелем истории Алрани в Сумеру.
|
||||
84555:Случайные обстоятельства цветения розы - Помогите Коллеи ухаживать за сумерскими розами.
|
||||
84556:Где же вы, мечты? - Станьте свидетелем истории Джави и его «мечты».
|
||||
84557:Необязательное требование - Найдите все предметы, которые Гулабгир дал змеям.
|
||||
84558:Корабельная мощь - Помогите Рафику испытать корпус корабля на прочность.
|
||||
84559:В чём дело? - Попробуйте три блюда Джафара.
|
||||
84560:Эрудит из Сумеру - Ответьте правильно на 6 различных вопросов.
|
||||
84561:Всего один шаг - Уступите Хилми в состязаниях по бегу...
|
||||
84562:Врачебный почерк - Помогите Маруфу верно прочесть рецепт.
|
||||
84563:Остатки аромата - Станьте свидетелем истории Нермин.
|
||||
84564:В поисках меча - Станьте свидетелем истории о мисс Лань и «Скрытом клинке».
|
||||
84565:Пройти по горизонту?.. - Станьте свидетелем истории Сунь Юя.
|
||||
84566:Офис на улице - Станьте свидетелем мелких происшествий в Кур-де-Фонтейне.
|
||||
84567:Превосходный вкус - Приготовьте особенный кофе.
|
||||
84568:Эстетическая критика - Выслушайте теорию Депьери о красоте.
|
||||
84569:Второе детство - Поиграйте с детьми и станьте свидетелем их истории.
|
||||
84570:Ветер и волны - Станьте свидетелем истории о работе Айюна.
|
||||
85000:Кроме времени нечего терять - Разгадайте секрет двух солнечных часов.
|
||||
85001:Разговор с древним божеством - Послушайте историю древнего божества.
|
||||
85002:Крадущийся дракон, притаившееся Чи - Ознакомьтесь с историей «Чи».
|
||||
85003:Биться до последнего - Продайте за хорошую цену сокровище, найденное в древних руинах...
|
||||
85004:Тень над озером Лухуа - Помогите Вермееру найти желаемый пейзаж.
|
||||
85005:Нулевой игрок - Поиграйте в простую игру с малышом Цзяном.
|
||||
85006:Под густой тенью древа соберётся вся семья - Станьте свидетелем истории дома Юань Хун.
|
||||
84026:Волнительное приключение: Пролог - Завершите встречу «Волнительное приключение» и откройте все концовки.
|
||||
84100:Владыка грома - Станьте свидетелем влияния невезения Беннета на погоду.
|
||||
84101:Сила удачи! - Активируйте механизмы и заберите сокровище, не совершив ни одной ошибки.
|
||||
84102:Черта, которую можно переступить - Завершите встречу «Лечебный родник» и откройте все концовки.
|
||||
84103:Сильная и добродетельная горничная - Завершите встречу «Путь рыцаря Ордо Фавониус» и откройте все концовки.
|
||||
84104:И зло изгнано - Завершите встречу «Заметки о поиске злых духов» и откройте все концовки.
|
||||
84105:Пряная легенда Мондштадта - Попробуйте пряный напиток Барбары.
|
||||
84106:«...Таков мой долг» - Помогите Ноэлль найти источник её силы.
|
||||
84028:Знаток нечисти - Безошибочно истолкуйте все подсказки.
|
||||
84107:Жгучий герой - Приготовьте мороженое по неправильному рецепту и вызовите бурную реакцию чистой энергии Ян Чун Юня.
|
||||
84102:Черта, которую можно переступить - Завершите встречу «Лечебный родник» и откройте все концовки.
|
||||
84108:Последняя линия обороны идола - Уговорите Альберта и других фанатов Барбары уйти.
|
||||
84105:Пряная легенда Мондштадта - Попробуйте пряный напиток Барбары.
|
||||
84103:Сильная и добродетельная горничная - Завершите встречу «Путь рыцаря Ордо Фавониус» и откройте все концовки.
|
||||
84106:«...Таков мой долг» - Помогите Ноэлль найти источник её силы.
|
||||
84109:Известный лишь розам мир - Прочтите конспект Ноэлль.
|
||||
84110:Избавление от беспокойства - Завершите встречу «Подготовка к рыцарскому экзамену» и откройте все концовки.
|
||||
84111:Неуязвимая горничная-рыцарь - Прослушайте «Путешествие рыцаря по Ли Юэ» с Ноэлль.
|
||||
@@ -854,82 +996,15 @@
|
||||
84146:Искусство и жизнь - Завершите встречу «Маятник печали и радости» и откройте все концовки.
|
||||
84147:Студенческие дни - Найдите книги с заметками в Доме даэны.
|
||||
84148:Романтизм в архитектуре - Обсудите будущее с Кавехом в пустыне.
|
||||
84501:...Odomu? - Проведите успешный «языковой обмен» с хиличурлом.
|
||||
84502:Yo dala? - Проведите успешный «поэтический обмен» с хиличурлом.
|
||||
84503:Перфекционист - Безупречно выполните все поручения Царевича в задании «Сказано - сделано!»
|
||||
84504:Говорю как есть - Соберите информацию о Снежной в задании «Зимняя история».
|
||||
84505:Анекдоты Гео Архонта - Соберите полный сборник историй о Властелине Камня.
|
||||
84506:Останьтесь ненадолго, путешественники... - Послушайте историю о «Дожде клинков» в задании «Сейчас объясню».
|
||||
84507:Давным-давно, в далёком-далёком царстве... - Послушайте историю о «Гневе Хай Шаня» в задании «Сейчас объясню».
|
||||
84508:Карамба, пираты! - Сыграйте в пиратов с малышами Лулу, Фэем и Мэном.
|
||||
84509:Повар и рыбак - Завершите задания «Рыбак Цзян Сюэ» и «Дилемма Янь Сяо».
|
||||
84510:Любовь повсюду - Помогите Чжи Хуа отыскать пять счастливых знамений в задании «Хороший знак».
|
||||
84512:Излишняя тоска - Завершите 5 раз задание «Ветер воспоминаний уносит тоску».
|
||||
84513:На этаж повыше... - Помогите Хуай Аню починить лестницу на постоялом дворе «Ваншу».
|
||||
84514:Новичкам везёт - Выберите самый дорогой нефрит с первого раза.
|
||||
84515:Пора ответить за свои ошибки - Извинитесь перед Тимми.
|
||||
84516:Стукни и заработает - Принесите Герману только материалы для тренировочного манекена.
|
||||
84517:Мгновенная карма - Разоблачите Марджори и получите благодарность от Джека.
|
||||
84518:«Привет, любимый папочка...» - Послушайте историю Тимми.
|
||||
84519:Чудеса медицины - Вылечите болезнь Анны.
|
||||
84520:Во имя Фавония - Станьте свидетелем истории Джиллианы.
|
||||
84522:Академические притязания - Завершите задания «Потерянная реликвия» и «Дело о краже сокровищ».
|
||||
84523:Мечта и работа, стихи и хлеб - Завершите задание «Так называемая "работа"» и получите сборник поэзии Линь Лин.
|
||||
84524:Все хорошо, что хорошо кончается - Завершите задание «В ожидании старого друга».
|
||||
84525:Потрясающий роман - Подсмотрите в рукопись Чана Девятого.
|
||||
84526:Открыто для интерпретации - Испортите 4 знамения неизбежной любви.
|
||||
84527:Это не живая консерва - Съешьте еду в задании «Доставка еды»...
|
||||
84528:Замаскирован на виду - Помогите Санго и Рюдзи раскрыть дело.
|
||||
84529:Есть всегда одна истина? - Станьте свидетелем истории Рюдзи.
|
||||
84530:Ли Юэ итибан - Вылечите Тан Вэнь вкусной едой.
|
||||
84531:Опять бум шака-лака - Узнайте у Сян Лин об особых методах готовки.
|
||||
84532:Обед для двоих - Помогите Сюй Дуну и Камэи Мунэхисе приготовить по одному блюду.
|
||||
84533:Вопрос диеты - Помогите Парване проверить рецепты.
|
||||
84534:Рисовый самурай - Помогите Камэи Мунэхисе собрать ингредиенты из лагерей с обоих сторон.
|
||||
84535:«Простите за неудобства!» - Получите жалобу от Конды Дэнсукэ в задании «Обслуживание после продажи».
|
||||
84536:Самурай-гурман - Станьте свидетелем принятия Камэи Мунэхисы в ряды всеядных гурманов.
|
||||
84537:Ау... Есть кто? - Найдите скрытый проход на острове Рито.
|
||||
84538:Мнение редакции - Помогите Сигэру и Дзюнкити вернуться на творческий путь.
|
||||
84539:Пора открывать Досин додзё - Помогите Асакуре с тренировками 5 раз.
|
||||
84540:Угадай кто? - Узнайте, кем является Чжэнь Юй на самом деле.
|
||||
84541:Хотя бы заканчивается - Дослушайте историю Дзюнкити до конца.
|
||||
84542:Она и её кошка - Вместе с Нэко идите на гору Ёго и найдите следы Хибики.
|
||||
84543:Что на крючке? - Вместе с Кайваном выловите странные предметы.
|
||||
84544:Плесенник Калими - Посмотрите, как Хатим срывает куш на бирже!
|
||||
84545:Богатство стучится в дверь - Угостите Хатима яблочным напитком.
|
||||
84546:Котолов - Помогите Саре отыскать её кошек.
|
||||
84547:Законы арифметики - Помогите Гарсии завершить его устройство.
|
||||
84548:Труд всему голова - Соберите побольше грибов для Хамбэя.
|
||||
84549:Релаксационная терапия - Исполните желания 3 пациентов.
|
||||
84550:На корню - Найдите и победите убегающую попрыгунью.
|
||||
84551:Дата отплытия - Получите письмо Александры...
|
||||
84552:Мора не виновата - Станьте свидетелем приключений Всеядных гурманов в Сумеру.
|
||||
84553:Небо высоко, а земля... - Помогите Фаргани с измерениями.
|
||||
84554:Время ответа - Станьте свидетелем истории Алрани в Сумеру.
|
||||
84555:Случайные обстоятельства цветения розы - Помогите Коллеи ухаживать за сумерскими розами.
|
||||
84556:Где же вы, мечты? - Станьте свидетелем истории Джави и его «мечты».
|
||||
84557:Необязательное требование - Найдите все предметы, которые Гулабгир дал змеям.
|
||||
84558:Корабельная мощь - Помогите Рафику испытать корпус корабля на прочность.
|
||||
84559:В чём дело? - Попробуйте три блюда Джафара.
|
||||
84560:Эрудит из Сумеру - Ответьте правильно на 6 различных вопросов.
|
||||
84561:Всего один шаг - Уступите Хилми в состязаниях по бегу...
|
||||
84562:Врачебный почерк - Помогите Маруфу верно прочесть рецепт.
|
||||
84563:Остатки аромата - Станьте свидетелем истории Нермин.
|
||||
84564:В поисках меча - Станьте свидетелем истории о мисс Лань и «Скрытом клинке».
|
||||
84565:Пройти по горизонту?.. - Станьте свидетелем истории Сунь Юя.
|
||||
85000:Кроме времени нечего терять - Разгадайте секрет двух солнечных часов.
|
||||
85001:Разговор с древним божеством - Послушайте историю древнего божества.
|
||||
85002:Крадущийся дракон, притаившееся Чи - Ознакомьтесь с историей «Чи».
|
||||
85003:Биться до последнего - Продайте за хорошую цену сокровище, найденное в древних руинах...
|
||||
85004:Тень над озером Лухуа - Помогите Вермееру найти желаемый пейзаж.
|
||||
85005:Нулевой игрок - Поиграйте в простую игру с малышом Цзяном.
|
||||
85006:Под густой тенью древа соберётся вся семья - Станьте свидетелем истории дома Юань Хун.
|
||||
84149:В поиске веселья - Завершите встречу «Выдумки и выпивка» и откройте все концовки.
|
||||
84150:Счастливая монета - Примите участие в пари, предложенном Кэйей.
|
||||
84151:Тсс... Слушай! - Прислушайтесь к голосу, доносящемуся из одиночной камеры.
|
||||
86001:Пришли, увидели и победили вместе - Выполните 5 испытаний подземелья с другими игроками.
|
||||
86002:Пришли, увидели и победили вместе - Выполните 20 испытаний подземелья с другими игроками.
|
||||
86003:Пришли, увидели и победили вместе - Выполните 100 испытаний подземелья с другими игроками.
|
||||
86004:Пришёл, увидел и победил в одиночку - Соберите 5 местных диковин в мире другого игрока.
|
||||
86005:Пришёл, увидел и победил в одиночку - Соберите 20 местных диковин в мире другого игрока.
|
||||
86006:Пришёл, увидел и победил в одиночку - Соберите 50 местных диковин в мире другого игрока.
|
||||
86004:Пришёл, увидел и победил в одиночку - Соберите 5 местных диковинок в мире другого игрока.
|
||||
86005:Пришёл, увидел и победил в одиночку - Соберите 20 местных диковинок в мире другого игрока.
|
||||
86006:Пришёл, увидел и победил в одиночку - Соберите 50 местных диковинок в мире другого игрока.
|
||||
86007:У вас такие огромные кристальные бабочки - Одолейте Анемо гипостазис в совместном режиме.
|
||||
86008:...хватит и улыбки. - Одолейте Электро гипостазис в совместном режиме.
|
||||
86009:Оказывается, можно бить эти колонны. - Одолейте Гео гипостазис в совместном режиме.
|
||||
@@ -937,13 +1012,13 @@
|
||||
86011:This is fine. - Одолейте Пиро орхидею в совместном режиме.
|
||||
86012:Рыба по имени Родия - Одолейте океанида в совместном режиме.
|
||||
86013:Волчий союз - Одолейте короля Вольфендома в совместном режиме.
|
||||
86021:Способности Глаза Порчи не решают исход битвы - Одолейте Чайльда в совместном режиме.
|
||||
86015:Сворачивая горы - Одолейте древнего геовишапа в совместном режиме.
|
||||
86016:Привет из прошлого - Одолейте Аждаху в совместном режиме.
|
||||
86017:План по заморозке - Одолейте Крио гипостазис в совместном режиме.
|
||||
86018:Больше никаких нитей - Одолейте магу кэнки в совместном режиме.
|
||||
86019:Операция «Костёр» - Одолейте Пиро гипостазис в совместном режиме.
|
||||
86020:Конечный механический массив - Одолейте бесконечный механический массив в совместном режиме.
|
||||
86021:Способности Глаза Порчи не решают исход битвы - Одолейте Чайльда в совместном режиме.
|
||||
86022:Все за одного - Одолейте манифестацию грома в совместном режиме.
|
||||
86023:Одна вода - Одолейте Гидро гипостазис в совместном режиме.
|
||||
86024:Сквозь снег и пламя - Одолейте Синьору в совместном режиме.
|
||||
@@ -951,4 +1026,13 @@
|
||||
86026:Храбрость пред лицом молнии - Одолейте сёгуна Райдэн в совместном режиме.
|
||||
86027:Превосходя древнюю мудрость - Одолейте Змея руин в совместном режиме.
|
||||
86028:Полувегетарианство - Одолейте Пернатого плесенника в совместном режиме.
|
||||
86029:Не влезай, убьёт! - Одолейте Электро папоротник в совместном режиме.
|
||||
86029:Не влезай, убьёт! - Одолейте Электро папоротник в совместном режиме.
|
||||
86030:Конец вечного возвращения - Одолейте Дракона вечных бедствий в совместном режиме.
|
||||
86031:Незначительное отставание - Одолейте Алгоритм полуизвечной матрицы оператора наблюдения в совместном режиме.
|
||||
86032:Зелень из других миров - Одолейте Дендро гипостазиса в совместном режиме.
|
||||
86033:Танцуйте, если хотите победить! - Одолейте Сёки но Ками в совместном режиме.
|
||||
86034:Инициация народа пустыни - Одолейте Унута Сетеха в совместном режиме.
|
||||
86035:Презумпция виновности - Одолейте Чудовищного крестителя в совместном режиме.
|
||||
86036:Завоеватель тростникового моря - Одолейте Стража оазиса Апепа в совместном режиме.
|
||||
86037:Великая сила науки - Завершите одно из испытаний Сюиты ледяного ветра в совместном режиме.
|
||||
86038:Удачная охота - Одолейте Императора огня и железа в совместном режиме.
|
||||
|
@@ -21,6 +21,8 @@
|
||||
2020:Дыхание анемонии
|
||||
2021:Торжество разума
|
||||
2022:Дуэль! К вершинам карточного мастерства!
|
||||
2023:Лето! Парк развлечений? Мираж!
|
||||
2024:Мегасхватка меков
|
||||
// 1.0
|
||||
1001:Праздник морских фонарей
|
||||
5001:Элементальная жаровня
|
||||
@@ -166,7 +168,7 @@
|
||||
5116:Второе цветение
|
||||
5117:Воинский дух
|
||||
5118:Эпичный бой жуков великолепного Аратаки
|
||||
5119:Горячая битва: Тактическое построение
|
||||
5119:Горячая битва: Секрет совершенствования
|
||||
5121:Сокол
|
||||
5122:Царь пустыни
|
||||
5126:Пустыня Хадрамавет
|
||||
@@ -194,12 +196,22 @@
|
||||
5143:В пламени горна
|
||||
5146:Священный призыв семерых: Сияющие секреты
|
||||
// 3.8
|
||||
5140: Исследование опасных дорог.
|
||||
5141: Испытание авантюриста — продвинутый уровень (v2)
|
||||
5142: телепатия
|
||||
5145: Приглашение - Кая
|
||||
5148:Обучение зеркальному литью - неизмеримая война
|
||||
5119: Зов семи святых - Режим горячего боя: универсальное руководство
|
||||
5140:Опасное исследование
|
||||
5141:Испытание для искателей приключений: Расширенное
|
||||
5142:Единение сердец
|
||||
5145:Встреча
|
||||
5148:В пламени горна: Бесконечный рой
|
||||
5119:Горячая битва: Секрет совершенствования
|
||||
// 4.0
|
||||
5148:В пламени горна: Бесконечный рой
|
||||
5119:Горячая битва: Секрет совершенствования
|
||||
5147:Наука о свете и тени: Фонтан очарования
|
||||
5149:Пятнистый Кот
|
||||
5150:Историческая память: Наследие водной нации
|
||||
5151:Приговор лезвий
|
||||
5153:Одинокий король земли и моря
|
||||
5154:Танец пружин и шестерён
|
||||
5158:Море земли, исток всех вод
|
||||
// новички и особые события
|
||||
101: путь вперед определен
|
||||
1014:Отправить активность Барбары
|
||||
@@ -217,4 +229,4 @@
|
||||
10012: Байки из чужой земли
|
||||
10013: Облачный метеоритный бег
|
||||
50001: Люди всех слоев общества.
|
||||
50002: неглубокая пение молитвы
|
||||
50002: неглубокая пение молитвы
|
@@ -1,4 +1,4 @@
|
||||
20412:Лампа заблудших
|
||||
20412:Лампа заблудших
|
||||
20413:Лампа заблудших
|
||||
20422:Мудрец лозы
|
||||
20423:Мудрец лозы
|
||||
@@ -118,6 +118,46 @@
|
||||
30544:Тычинка истока Хварны
|
||||
30553:Древнее увядание
|
||||
30554:Древнее увядание
|
||||
31412:Забытый сосуд
|
||||
31413:Забытый сосуд
|
||||
31422:Увертюра шедевра
|
||||
31423:Увертюра шедевра
|
||||
31432:Лик старого солдата
|
||||
31433:Лик старого солдата
|
||||
31442:Брошь охотника
|
||||
31443:Брошь охотника
|
||||
31452:Мгновение правосудия
|
||||
31453:Мгновение правосудия
|
||||
31513:Забытый сосуд
|
||||
31514:Забытый сосуд
|
||||
31523:Увертюра шедевра
|
||||
31524:Увертюра шедевра
|
||||
31533:Лик старого солдата
|
||||
31534:Лик старого солдата
|
||||
31543:Брошь охотника
|
||||
31544:Брошь охотника
|
||||
31553:Мгновение правосудия
|
||||
31554:Мгновение правосудия
|
||||
32412:Суета золотой ночи
|
||||
32413:Суета золотой ночи
|
||||
32422:Перо золотой птицы
|
||||
32423:Перо золотой птицы
|
||||
32432:Награда Золотой труппы
|
||||
32433:Награда Золотой труппы
|
||||
32442:Вариация золотой песни
|
||||
32443:Вариация золотой песни
|
||||
32452:Предзнаменование золотой эпохи
|
||||
32453:Предзнаменование золотой эпохи
|
||||
32513:Суета золотой ночи
|
||||
32514:Суета золотой ночи
|
||||
32523:Перо золотой птицы
|
||||
32524:Перо золотой птицы
|
||||
32533:Награда Золотой труппы
|
||||
32534:Награда Золотой труппы
|
||||
32543:Вариация золотой песни
|
||||
32544:Вариация золотой песни
|
||||
32553:Предзнаменование золотой эпохи
|
||||
32554:Предзнаменование золотой эпохи
|
||||
51110:Кубок временщика
|
||||
51111:Кубок временщика
|
||||
51112:Кубок временщика
|
||||
@@ -2168,6 +2208,81 @@
|
||||
77552:Окончание концерта
|
||||
77553:Окончание концерта
|
||||
77554:Окончание концерта
|
||||
78310:Кубок северных ветров
|
||||
78311:Кубок северных ветров
|
||||
78312:Кубок северных ветров
|
||||
78313:Кубок северных ветров
|
||||
78314:Кубок северных ветров
|
||||
78320:Перо снежных равнин
|
||||
78321:Перо снежных равнин
|
||||
78322:Перо снежных равнин
|
||||
78323:Перо снежных равнин
|
||||
78324:Перо снежных равнин
|
||||
78330:Корона мёрзлых рек
|
||||
78331:Корона мёрзлых рек
|
||||
78332:Корона мёрзлых рек
|
||||
78333:Корона мёрзлых рек
|
||||
78334:Корона мёрзлых рек
|
||||
78340:Сердце зимнего леса
|
||||
78341:Сердце зимнего леса
|
||||
78342:Сердце зимнего леса
|
||||
78343:Сердце зимнего леса
|
||||
78344:Сердце зимнего леса
|
||||
78350:Часы песчаных льдов
|
||||
78351:Часы песчаных льдов
|
||||
78352:Часы песчаных льдов
|
||||
78353:Часы песчаных льдов
|
||||
78354:Часы песчаных льдов
|
||||
78410:Кубок северных ветров
|
||||
78411:Кубок северных ветров
|
||||
78412:Кубок северных ветров
|
||||
78413:Кубок северных ветров
|
||||
78414:Кубок северных ветров
|
||||
78420:Перо снежных равнин
|
||||
78421:Перо снежных равнин
|
||||
78422:Перо снежных равнин
|
||||
78423:Перо снежных равнин
|
||||
78424:Перо снежных равнин
|
||||
78430:Корона мёрзлых рек
|
||||
78431:Корона мёрзлых рек
|
||||
78432:Корона мёрзлых рек
|
||||
78433:Корона мёрзлых рек
|
||||
78434:Корона мёрзлых рек
|
||||
78440:Сердце зимнего леса
|
||||
78441:Сердце зимнего леса
|
||||
78442:Сердце зимнего леса
|
||||
78443:Сердце зимнего леса
|
||||
78444:Сердце зимнего леса
|
||||
78450:Часы песчаных льдов
|
||||
78451:Часы песчаных льдов
|
||||
78452:Часы песчаных льдов
|
||||
78453:Часы песчаных льдов
|
||||
78454:Часы песчаных льдов
|
||||
78510:Кубок северных ветров
|
||||
78511:Кубок северных ветров
|
||||
78512:Кубок северных ветров
|
||||
78513:Кубок северных ветров
|
||||
78514:Кубок северных ветров
|
||||
78520:Перо снежных равнин
|
||||
78521:Перо снежных равнин
|
||||
78522:Перо снежных равнин
|
||||
78523:Перо снежных равнин
|
||||
78524:Перо снежных равнин
|
||||
78530:Корона мёрзлых рек
|
||||
78531:Корона мёрзлых рек
|
||||
78532:Корона мёрзлых рек
|
||||
78533:Корона мёрзлых рек
|
||||
78534:Корона мёрзлых рек
|
||||
78540:Сердце зимнего леса
|
||||
78541:Сердце зимнего леса
|
||||
78542:Сердце зимнего леса
|
||||
78543:Сердце зимнего леса
|
||||
78544:Сердце зимнего леса
|
||||
78550:Часы песчаных льдов
|
||||
78551:Часы песчаных льдов
|
||||
78552:Часы песчаных льдов
|
||||
78553:Часы песчаных льдов
|
||||
78554:Часы песчаных льдов
|
||||
79310:Предвестник бури
|
||||
79311:Предвестник бури
|
||||
79312:Предвестник бури
|
||||
@@ -3037,4 +3152,79 @@
|
||||
98543:Цветок призрачного аромата
|
||||
98544:Цветок призрачного аромата
|
||||
98553:Символ подношения
|
||||
98554:Символ подношения
|
||||
98554:Символ подношения
|
||||
99310:Чаша хозяина ветров
|
||||
99311:Чаша хозяина ветров
|
||||
99312:Чаша хозяина ветров
|
||||
99313:Чаша хозяина ветров
|
||||
99314:Чаша хозяина ветров
|
||||
99320:Перо хозяина ветров
|
||||
99321:Перо хозяина ветров
|
||||
99322:Перо хозяина ветров
|
||||
99323:Перо хозяина ветров
|
||||
99324:Перо хозяина ветров
|
||||
99330:Корона хозяина ветров
|
||||
99331:Корона хозяина ветров
|
||||
99332:Корона хозяина ветров
|
||||
99333:Корона хозяина ветров
|
||||
99334:Корона хозяина ветров
|
||||
99340:Цветок хозяина ветров
|
||||
99341:Цветок хозяина ветров
|
||||
99342:Цветок хозяина ветров
|
||||
99343:Цветок хозяина ветров
|
||||
99344:Цветок хозяина ветров
|
||||
99350:Часы хозяина ветров
|
||||
99351:Часы хозяина ветров
|
||||
99352:Часы хозяина ветров
|
||||
99353:Часы хозяина ветров
|
||||
99354:Часы хозяина ветров
|
||||
99410:Чаша хозяина ветров
|
||||
99411:Чаша хозяина ветров
|
||||
99412:Чаша хозяина ветров
|
||||
99413:Чаша хозяина ветров
|
||||
99414:Чаша хозяина ветров
|
||||
99420:Перо хозяина ветров
|
||||
99421:Перо хозяина ветров
|
||||
99422:Перо хозяина ветров
|
||||
99423:Перо хозяина ветров
|
||||
99424:Перо хозяина ветров
|
||||
99430:Корона хозяина ветров
|
||||
99431:Корона хозяина ветров
|
||||
99432:Корона хозяина ветров
|
||||
99433:Корона хозяина ветров
|
||||
99434:Корона хозяина ветров
|
||||
99440:Цветок хозяина ветров
|
||||
99441:Цветок хозяина ветров
|
||||
99442:Цветок хозяина ветров
|
||||
99443:Цветок хозяина ветров
|
||||
99444:Цветок хозяина ветров
|
||||
99450:Часы хозяина ветров
|
||||
99451:Часы хозяина ветров
|
||||
99452:Часы хозяина ветров
|
||||
99453:Часы хозяина ветров
|
||||
99454:Часы хозяина ветров
|
||||
99510:Чаша хозяина ветров
|
||||
99511:Чаша хозяина ветров
|
||||
99512:Чаша хозяина ветров
|
||||
99513:Чаша хозяина ветров
|
||||
99514:Чаша хозяина ветров
|
||||
99520:Перо хозяина ветров
|
||||
99521:Перо хозяина ветров
|
||||
99522:Перо хозяина ветров
|
||||
99523:Перо хозяина ветров
|
||||
99524:Перо хозяина ветров
|
||||
99530:Корона хозяина ветров
|
||||
99531:Корона хозяина ветров
|
||||
99532:Корона хозяина ветров
|
||||
99533:Корона хозяина ветров
|
||||
99534:Корона хозяина ветров
|
||||
99540:Цветок хозяина ветров
|
||||
99541:Цветок хозяина ветров
|
||||
99542:Цветок хозяина ветров
|
||||
99543:Цветок хозяина ветров
|
||||
99544:Цветок хозяина ветров
|
||||
99550:Часы хозяина ветров
|
||||
99551:Часы хозяина ветров
|
||||
99552:Часы хозяина ветров
|
||||
99553:Часы хозяина ветров
|
||||
99554:Часы хозяина ветров
|
||||
|
@@ -2,8 +2,10 @@
|
||||
21:Позолоченные сны
|
||||
27:Хроники Чертогов в пустыне
|
||||
28:Цветок потерянного рая
|
||||
29:水仙之梦
|
||||
30:花海甘露之光
|
||||
29:Сон нимфы
|
||||
30:Сияние Вурукаши
|
||||
31:Охотник Сумеречного двора
|
||||
32:Золотая труппа
|
||||
51:Решимость временщика
|
||||
52:Душа храбреца
|
||||
53:Воля защитника
|
||||
|
@@ -1,8 +1,8 @@
|
||||
1002:Камисато Аяка
|
||||
1002:Камисато Аяка
|
||||
1003:Джинн
|
||||
1005:Итэр
|
||||
1005:Мужской персонаж
|
||||
1006:Лиза
|
||||
1007:Люмин
|
||||
1007:Женский персонаж
|
||||
1014:Барбара
|
||||
1015:Кэйа
|
||||
1016:Дилюк
|
||||
@@ -45,7 +45,6 @@
|
||||
1058:Яэ Мико
|
||||
1059:Сиканоин Хэйдзо
|
||||
1060:Е Лань
|
||||
1061:Кирара
|
||||
1062:Элой
|
||||
1063:Шэнь Хэ
|
||||
1064:Юнь Цзинь
|
||||
@@ -60,10 +59,14 @@
|
||||
1073:Нахида
|
||||
1074:Лайла
|
||||
1075:Странник
|
||||
1076:Фарузан
|
||||
1077:Яо Яо
|
||||
1078:Аль-Хайтам
|
||||
1079:Дэхья
|
||||
1080:Мика
|
||||
1081:Кавех
|
||||
1082:Бай Чжу
|
||||
1082:Бай Чжу
|
||||
1076:Фарузан
|
||||
1061:Кирара
|
||||
1083:Линетт
|
||||
1084:Лини
|
||||
1085:Фремине
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user