diff --git a/Source/GrasscutterTools/Game/Activity/NewActivityItem.cs b/Source/GrasscutterTools/Game/Activity/NewActivityItem.cs
new file mode 100644
index 0000000..e032ba5
--- /dev/null
+++ b/Source/GrasscutterTools/Game/Activity/NewActivityItem.cs
@@ -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 .
+ *
+ **/
+
+using Newtonsoft.Json;
+
+namespace GrasscutterTools.Game.Activity
+{
+ internal class NewActivityItem
+ {
+ [JsonProperty("activityId")]
+ public int ActivityId { get; set; }
+
+ [JsonProperty("nameTextMapHash")]
+ public string NameTextMapHash { get; set; }
+ }
+}
diff --git a/Source/GrasscutterTools/GrasscutterTools.csproj b/Source/GrasscutterTools/GrasscutterTools.csproj
index 9af8592..4abf15c 100644
--- a/Source/GrasscutterTools/GrasscutterTools.csproj
+++ b/Source/GrasscutterTools/GrasscutterTools.csproj
@@ -136,6 +136,7 @@
FormTextMapBrowser.cs
+
@@ -638,6 +639,7 @@
+
@@ -659,6 +661,7 @@
+
@@ -704,6 +707,7 @@
+
diff --git a/Source/GrasscutterTools/Pages/PageTools.Designer.cs b/Source/GrasscutterTools/Pages/PageTools.Designer.cs
index 6cadf85..34b8c94 100644
--- a/Source/GrasscutterTools/Pages/PageTools.Designer.cs
+++ b/Source/GrasscutterTools/Pages/PageTools.Designer.cs
@@ -35,6 +35,7 @@
this.LblGcResRoot = new System.Windows.Forms.Label();
this.TxtGcResRoot = new System.Windows.Forms.TextBox();
this.BtnUpdateDungeon = new System.Windows.Forms.Button();
+ this.BtnUpdateActivity = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// BtnUpdateResources
@@ -99,6 +100,16 @@
this.BtnUpdateDungeon.UseVisualStyleBackColor = true;
this.BtnUpdateDungeon.Click += new System.EventHandler(this.BtnUpdateDungeon_Click);
//
+ // BtnUpdateActivity
+ //
+ this.BtnUpdateActivity.Location = new System.Drawing.Point(197, 100);
+ this.BtnUpdateActivity.Name = "BtnUpdateActivity";
+ this.BtnUpdateActivity.Size = new System.Drawing.Size(150, 30);
+ this.BtnUpdateActivity.TabIndex = 0;
+ this.BtnUpdateActivity.Text = "Update Activity";
+ this.BtnUpdateActivity.UseVisualStyleBackColor = true;
+ this.BtnUpdateActivity.Click += new System.EventHandler(this.BtnUpdateActivity_Click);
+ //
// PageTools
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
@@ -107,6 +118,7 @@
this.Controls.Add(this.LblGcResRoot);
this.Controls.Add(this.TxtProjectResRoot);
this.Controls.Add(this.LblProjectResRoot);
+ this.Controls.Add(this.BtnUpdateActivity);
this.Controls.Add(this.BtnUpdateDungeon);
this.Controls.Add(this.BtnConvertCutScene);
this.Controls.Add(this.BtnUpdateResources);
@@ -125,5 +137,6 @@
private System.Windows.Forms.Label LblGcResRoot;
private System.Windows.Forms.TextBox TxtGcResRoot;
private System.Windows.Forms.Button BtnUpdateDungeon;
+ private System.Windows.Forms.Button BtnUpdateActivity;
}
}
diff --git a/Source/GrasscutterTools/Pages/PageTools.cs b/Source/GrasscutterTools/Pages/PageTools.cs
index 8b363fb..b2dc127 100644
--- a/Source/GrasscutterTools/Pages/PageTools.cs
+++ b/Source/GrasscutterTools/Pages/PageTools.cs
@@ -5,6 +5,7 @@ using System.Linq;
using System.Text;
using System.Windows.Forms;
using GrasscutterTools.Game;
+using GrasscutterTools.Game.Activity;
using GrasscutterTools.Game.CutScene;
using GrasscutterTools.Game.Dungeon;
using GrasscutterTools.Properties;
@@ -159,5 +160,58 @@ namespace GrasscutterTools.Pages
dungeons.Select(it => $"{it.Id}:{TextMapData.GetText(it.NameTextMapHash)}"),
Encoding.UTF8);
}
+
+ private void BtnUpdateActivity_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (!CheckInputPaths()) return;
+
+ var json = File.ReadAllText(
+ Path.Combine(TxtGcResRoot.Text, "ExcelBinOutput", "NewActivityExcelConfigData.json"),
+ Encoding.UTF8);
+ var activityItems = JsonConvert.DeserializeObject>(json);
+
+ if (TextMapData == null)
+ TextMapData = new TextMapData(TxtGcResRoot.Text);
+
+ UpdateActivityForLanguage(activityItems, "TextMapCHT", "zh-tw");
+ UpdateActivityForLanguage(activityItems, "TextMapEN", "en-us");
+ UpdateActivityForLanguage(activityItems, "TextMapRU", "ru-ru");
+ MessageBox.Show("OK", Resources.Tips, MessageBoxButtons.OK);
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void UpdateActivityForLanguage(IReadOnlyCollection activityItems, string textMap, string language)
+ {
+ var i = Array.IndexOf(TextMapData.TextMapFiles, textMap);
+ TextMapData.LoadTextMap(TextMapData.TextMapFilePaths[i]);
+
+ var activityMap = new Dictionary(activityItems.Count);
+ foreach (var item in activityItems)
+ activityMap[item.ActivityId] = TextMapData.GetText(item.NameTextMapHash);
+
+ var buffer = new StringBuilder();
+ foreach (var item in GameData.Activity)
+ {
+ buffer.Append("// ").AppendLine(item.Key);
+ foreach (var id in item.Value.Ids)
+ {
+ buffer.Append(id).Append(':');
+ buffer.AppendLine(activityMap.TryGetValue(id, out var title) ? title : item.Value[id]);
+ }
+ }
+ var activityFilePath = Path.Combine(TxtProjectResRoot.Text, language, "Activity.txt");
+ File.WriteAllText(activityFilePath, buffer.ToString(), Encoding.UTF8);
+
+ //File.WriteAllLines(
+ // activityFilePath,
+ // activityItems.Select(it => $"{it.ActivityId}:{TextMapData.GetText(it.NameTextMapHash)}"),
+ // Encoding.UTF8);
+ }
}
}
diff --git a/Source/GrasscutterTools/Properties/Resources.en-us.resx b/Source/GrasscutterTools/Properties/Resources.en-us.resx
index d59a4d8..b1f2a7e 100644
--- a/Source/GrasscutterTools/Properties/Resources.en-us.resx
+++ b/Source/GrasscutterTools/Properties/Resources.en-us.resx
@@ -357,4 +357,7 @@ Improvement suggestions have been submitted, please use caution to send emails t
..\Resources\en-us\Cutscene.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312
+
+ ..\Resources\en-us\Activity.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
\ No newline at end of file
diff --git a/Source/GrasscutterTools/Properties/Resources.ru-ru.resx b/Source/GrasscutterTools/Properties/Resources.ru-ru.resx
index 13d88a3..fd3133d 100644
--- a/Source/GrasscutterTools/Properties/Resources.ru-ru.resx
+++ b/Source/GrasscutterTools/Properties/Resources.ru-ru.resx
@@ -345,4 +345,7 @@
..\Resources\ru-ru\Cutscene.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312
+
+ ..\Resources\ru-ru\Activity.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
\ No newline at end of file
diff --git a/Source/GrasscutterTools/Properties/Resources.zh-TW.resx b/Source/GrasscutterTools/Properties/Resources.zh-TW.resx
index 9b0c3f4..4d8e844 100644
--- a/Source/GrasscutterTools/Properties/Resources.zh-TW.resx
+++ b/Source/GrasscutterTools/Properties/Resources.zh-TW.resx
@@ -351,4 +351,7 @@
..\Resources\zh-tw\Cutscene.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+ ..\Resources\zh-tw\Activity.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
\ No newline at end of file
diff --git a/Source/GrasscutterTools/Resources/en-us/Activity.txt b/Source/GrasscutterTools/Resources/en-us/Activity.txt
new file mode 100644
index 0000000..0302cb9
--- /dev/null
+++ b/Source/GrasscutterTools/Resources/en-us/Activity.txt
@@ -0,0 +1,213 @@
+// Activity
+2001:Unreconciled Stars
+2002:Lantern Rite
+2003:Windblume Festival
+2004:Energy Amplifier
+2005:Midsummer Island Adventure
+2006:Thunder Sojourn
+2007:Moonlight Merriment
+2008:Labyrinth Warriors
+2009:Shadows Amidst Snowstorms
+2010:Fleeting Colors in Flight
+2011:Three Realms Gateway Offering
+2012:Hues of the Violet Garden
+2013:Perilous Trail
+2014:Summertime Odyssey
+2015:Graven Innocence
+2016:Of Ballads and Brews
+2017:Fabulous Fungus Frenzy
+2018:Akitsu Kimodameshi
+2019:The Exquisite Night Chimes
+2020:Windblume's Breath
+2021:A Parade of Providence
+2022:Duel! The Summoners' Summit!
+// 1.0
+1001:Lantern Rite
+5001:Elemental Crucible
+5002:Test Run
+5003:Marvelous Merchandise
+// 1.1
+5004:Astrolabos Chapter
+5005:Elemental Crucible
+5006:While It's Warm
+5007:Gliding Challenge
+5009:Historia Antiqua Chapter
+5010:Monoceros Caeli Chapter
+// 1.2
+3001:The Chalk Prince and the Dragon
+5008:Pristina Nola Chapter
+5011:Lost Riches
+5012:Marvelous Merchandise
+5014:Hypostatic Symphony
+// 1.3
+5015:Sinae Unicornis Chapter
+5016:Five Flushes of Fortune
+5017:Vishaps and Where to Find Them
+6002:Even Mountains Tremble
+6003:Outland Gastronomy
+5018:Papilio Charontis Chapter
+5019:Contending Tides
+// 1.4
+5020:Wishful Drops
+5021:Hangout Event
+// 1.5
+5022:Battlefront: Misty Dungeon
+5023:Windtrace
+5024:Mimi Tomo
+5025:Historia Antiqua Chapter
+5026:Chilled to the Bone
+5027:A Teapot to Call Home
+5028:Hangout Event
+5029:Aphros Delos Chapter
+// 1.6
+5030:Never-Ending Battle
+5031:Legend of the Vagabond Sword
+5032:Kaboomball Kombat
+5033:Echoing Tales
+6005:Autumn Winds, Scarlet Leaves
+// 2.0
+6003:Outland Gastronomy
+5034:Phantom Flow
+5035:Lost Riches
+5036:Bellowing Blaze
+5037:Theater Mechanicus: Stage of Wonders
+5038:Carassius Auratus Chapter
+5039:Grus Nivis Chapter
+// 2.1
+5040:Hyakunin Ikki
+5041:Lunar Realm
+5042:Mendacious Waves
+5043:Distant Storm
+5044:Spectral Secrets
+5045:Dracaena Somnolenta Chapter
+5046:Imperatrix Umbrosa Chapter
+// 2.2
+5047:Dreams of Bloom
+5048:Hangout Event
+5049:Shadow of the Ancients
+5050:Tuned to the World's Sounds
+// 2.3
+5051:Bantan Sango Case Files: The Warrior Dog
+5052:Exploding Population
+5053:Energy Amplifier
+5054:Misty Dungeon: Realm of Light
+5059:Taurus Iracundus Chapter
+5056:Hangout Event
+5060:Beastly Rift
+// 2.4
+5055:Eight Locales Over Mountains and Seas
+5057:Hangout Event
+5058:A Study in Potions
+5061:With Sleet and Storm
+5063:The Crane Returns on the Wind
+5064:Enkanomiya
+// 2.5
+5062:Of Drink A-Dreaming
+5065:Divine Ingenuity
+5066:Spices From the West
+5069:Divina Vulpes Chapter
+5070:Imperatrix Umbrosa Chapter
+5076:Hyakunin Ikki
+// 2.6
+5067:Vibro-Crystal Research
+5068:Outside the Canvas, Inside the Lens
+5071:Chasmic Serpent
+5074:Hangout Event
+5075:The Chasm
+5077:Requiem of the Echoing Depths
+5078:Cypressus Custos Chapter
+// 2.7
+5080:Core of the Apparatus
+5081:Umbrabilis Orchis Chapter
+5079:A Muddy Bizarre Adventure
+5072:The Almighty Arataki Great and Glorious Drumalong Festival
+5073:Hangout Event
+// 2.8
+5082:Evermotion Mechanical Painting
+5083:Reminiscent Regimen
+5084:Resonating Visions
+5085:Hidden Strife
+5088:Acer Palmatum Chapter
+5097:Hangout Event
+// 3.0
+5086:Murkwood Fungal Raptor
+5087:Tablet Analytics
+5089:Rumbleflower
+5090:Fayz Trials
+5091:Lost Riches
+5092:Vulpes Zerda Chapter
+5093:Dharma Forest
+// 3.1
+5094:Hyakunin Ikki
+5095:Wind Chaser
+5096:Star-Seeker's Sojourn
+5098:(test)废弃
+5100:Lupus Aureus Chapter
+5101:Lotos Somno Chapter
+5102:Searing Dreams in the Sea of Sand
+5103:Perpetual Motion Dragon
+5104:Matrix of Overseer Network
+5105:Dreams, Emptiness, Deception
+// 3.2
+5098:(test)废弃
+5099:Adventurer's Trials
+5107:Hypostatic Symphony: Dissonant Verse
+5108:Outside the Canvas, Inside the Lens: Greenery Chapter
+5109:Akasha Pulses, the Kalpa Flame Rises
+5113:Sapientia Oromasdis Chapter
+5106:The Verdant Takeover
+// 3.3
+5110:Battlefield of Dice, Cats, and Cards
+5111:Windtrace
+5112:Across the Wilderness
+5114:Misty Dungeon: Realm of Sand
+5115:Inversion of Genesis
+// 3.4
+5116:Second Blooming
+5117:Warrior's Spirit
+5118:Almighty Arataki Extraordinary and Exhilarating Extreme Beetle Brawl
+5119:Heated Battle Mode: Tactical Formation
+5121:Vultur Volans Chapter
+5122:Lord of the Desert
+5126:Desert of Hadramaveth
+5127:Hangout Event
+// 3.5
+5120:Fungus Mechanicus
+5123:Vibro-Crystal Verification
+5124:Caribert
+5125:Spices From the West: Northerly Search
+5130:Mantichora Chapter
+// 3.6
+5128:Fulminating Sandstorm
+5129:Brewing Developments
+5131:Girdle of the Sands
+5132:The Recollector's Path
+5134:Cleansing of Sin
+5136:Lagenaria Chapter
+5139:Sapientia Oromasdis Chapter
+5144:Hangout Event
+// 3.7
+5133:Divine Ingenuity: Collector's Chapter
+5135:Feast of the Departed Warriors
+5138:Fayz Trials: Hypothesis
+5137:Carassius Auratus Chapter
+5143:The Forge Realm's Temper
+5146:Genius Invokation TCG: Radiant Secrets
+// 新手与特殊活动
+101:前路既定
+1014:送芭芭拉活动
+1023:打深渊送香菱活动
+8001:星之归还
+10001:(test)1.0签到
+10002:(test)高价值一次性签到
+10003:把握每日
+10004:把握每日
+10005:虹旅藏金
+10006:虹旅藏金
+10007:虹旅藏金
+10010:把握每日
+10011:富贵登门
+10012:异乡食记
+10013:云流星奔
+50001:万民同行
+50002:浅唱祈礼
diff --git a/Source/GrasscutterTools/Resources/ru-ru/Activity.txt b/Source/GrasscutterTools/Resources/ru-ru/Activity.txt
new file mode 100644
index 0000000..917ec7f
--- /dev/null
+++ b/Source/GrasscutterTools/Resources/ru-ru/Activity.txt
@@ -0,0 +1,213 @@
+// Activity
+2001:Заблудшие звёзды
+2002:Праздник морских фонарей
+2003:Праздник ветряных цветов
+2004:Диск усиления
+2005:Лето! Остров? Приключение!
+2006:Грозовые отпечатки
+2007:Лунное утешение
+2008:Воины лабиринта
+2009:Белая пыль и снежная тень
+2010:Краски мимолётности
+2011:Подношение врат трёх миров
+2012:Краски фиалкового сада
+2013:Опасная тропа
+2014:Летнее морское путешествие
+2015:Детская сказка
+2016:О балладах и кубках
+2017:Эпичное побоище плесенников
+2018:Акицу Кимодамэси
+2019:Ночная гармония струн
+2020:Дыхание анемонии
+2021:Торжество разума
+2022:Дуэль! К вершинам карточного мастерства!
+// 1.0
+1001:Праздник морских фонарей
+5001:Элементальная жаровня
+5002:Тестовый забег
+5003:Изумительные изделия
+// 1.1
+5004:Багровая Заря
+5005:Элементальная жаровня
+5006:Пока не остыло
+5007:Лётное испытание
+5009:Истории Древности
+5010:Небесный Кит
+// 1.2
+3001:Принц мела и дракон
+5008:Звон Колокольчика
+5011:Затерянные богатства
+5012:Изумительные изделия
+5014:Гипостатическая симфония
+// 1.3
+5015:Священная Лань
+5016:Пять оттенков фортуны
+5017:Вишапы и где они обитают
+6002:Даже горы дрожат
+6003:Иноземная гастрономия
+5018:Бабочка Харона
+5019:Вражда приливов
+// 1.4
+5020:Капли желания
+5021:Встречи
+// 1.5
+5022:Поле боя: Туманное подземелье
+5023:По следам ветра
+5024:Поймай меня, если сможешь
+5025:Истории Древности
+5026:Пронизывающий холод
+5027:Чайник - полная чаша
+5028:Встречи
+5029:Морская Пена
+// 1.6
+5030:Бесконечная битва
+5031:Легенда о мече ветра
+5032:Война бабах-мячей
+5033:Эхо легенд
+6005:Осенний ветер, багряные листья
+// 2.0
+6003:Иноземная гастрономия
+5034:Призрачный поток
+5035:Затерянные богатства
+5036:Ревущее пламя
+5037:Театр Механикус: Этап чудес
+5038:Золотая Рыбка
+5039:Снежный Журавль
+// 2.1
+5040:Хякунин икки
+5041:Лунное королевство
+5042:Лживые волны
+5043:Далёкий шторм
+5044:Призрачные тайны
+5045:Спящий Дракон
+5046:Бренный Мир
+// 2.2
+5047:Цветущие мечты
+5048:Встречи
+5049:Тень древности
+5050:Слушая звуки мира
+// 2.3
+5051:Дело Бантан Санго: Пёс-воин
+5052:Взрывной рост популяции
+5053:Диск усиления
+5054:Туманное подземелье: Обитель света
+5059:Небесный Бык
+5056:Встречи
+5060:Звериный разлом
+// 2.4
+5055:Восемь мест от гор до морей
+5057:Встречи
+5058:Исследование зелий
+5061:Лёд и молния
+5063:Ветер дует - журавли возвращаются
+5064:Энканомия
+// 2.5
+5062:Глоток пьянящей мечты
+5065:Божественное мастерство
+5066:Пряности запада
+5069:Божественная Кицунэ
+5070:Бренный Мир
+5076:Хякунин икки
+// 2.6
+5067:Исследование кристаллов
+5068:Мир за рамками холста
+5071:Змей пропасти
+5074:Встреча
+5075:Разлом
+5077:Реквием гулких глубин
+5078:Оберегающий Кипарис
+// 2.7
+5080:Кузница машинерии
+5081:Призрачная Орхидея
+5079:По уши в приключениях
+5072:Грандиозный барабанный фестиваль великолепного Аратаки
+5073:События встречи
+// 2.8
+5082:Вечно движущаяся картина
+5083:Воспоминания о практике
+5084:Мечтательные видения
+5085:Тайная война
+5088:Рыжий Клён
+5097:Встреча
+// 3.0
+5086:Лесной птероплесенник
+5087:Изучение таблеток
+5089:Громоцвет
+5090:Испытания Фаиз
+5091:Затерянные богатства
+5092:Фенек
+5093:Джунгли Дхармы
+// 3.1
+5094:Хякунин икки
+5095:Погонщик ветров
+5096:Путешествие искателя звёзд
+5098:(test)废弃
+5100:Золотой Шакал
+5101:Водяная Лилия
+5102:Жгучие сны пустыни
+5103:Вечный дракон
+5104:Матрица оператора наблюдения
+5105:Сны, пустота и обман
+// 3.2
+5098:(test)废弃
+5099:Испытание для искателей приключений
+5107:Гипостатическая симфония: Строфа диссонанса
+5108:Мир за рамками холста: Озеленение
+5109:Пульс Акаши и пламя кальпы
+5113:Госпожа Мудрости
+5106:Зелёное поглощение
+// 3.3
+5110:Поле битвы дайсов, карт и котов
+5111:По следам ветра
+5112:Дикая гонка
+5114:Туманное подземелье: Песчаное царство
+5115:Инверсия бытия
+// 3.4
+5116:Второе цветение
+5117:Воинский дух
+5118:Эпичный бой жуков великолепного Аратаки
+5119:Горячая битва: Тактическое построение
+5121:Сокол
+5122:Царь пустыни
+5126:Пустыня Хадрамавет
+5127:Событие встречи
+// 3.5
+5120:Грибомеханикус
+5123:Повторное исследование кристаллов
+5124:Кариберт
+5125:Пряности запада: Северные изыскания
+5130:Мантикора
+// 3.6
+5128:Неистовая песчаная буря
+5129:Развитие эликсиров
+5131:Среди песков
+5132:Путь воспоминаний
+5134:Очищение грехов
+5136:Сосуд Лекаря
+5139:Госпожа Мудрости
+5144:Встреча
+// 3.7
+5133:Божественное мастерство: Коллекционирование
+5135:Торжество просветлённых
+5138:Испытания Фаиз: Гипотеза
+5137:Золотая Рыбка
+5143:В пламени горна
+5146:Священный призыв семерых: Сияющие секреты
+// 新手与特殊活动
+101:前路既定
+1014:送芭芭拉活动
+1023:打深渊送香菱活动
+8001:星之归还
+10001:(test)1.0签到
+10002:(test)高价值一次性签到
+10003:把握每日
+10004:把握每日
+10005:虹旅藏金
+10006:虹旅藏金
+10007:虹旅藏金
+10010:把握每日
+10011:富贵登门
+10012:异乡食记
+10013:云流星奔
+50001:万民同行
+50002:浅唱祈礼
diff --git a/Source/GrasscutterTools/Resources/zh-cn/Activity.txt b/Source/GrasscutterTools/Resources/zh-cn/Activity.txt
index dc289d6..cde9254 100644
--- a/Source/GrasscutterTools/Resources/zh-cn/Activity.txt
+++ b/Source/GrasscutterTools/Resources/zh-cn/Activity.txt
@@ -194,7 +194,7 @@
5137:琉金之章-2(宵宫传说任务)
5143:铸境研炼
5146:七圣召唤-秘典华焕(新卡牌展示页)
------新手与特殊活动-----
+// 新手与特殊活动
101:前路既定
1014:送芭芭拉活动
1023:打深渊送香菱活动
diff --git a/Source/GrasscutterTools/Resources/zh-tw/Activity.txt b/Source/GrasscutterTools/Resources/zh-tw/Activity.txt
new file mode 100644
index 0000000..51b0139
--- /dev/null
+++ b/Source/GrasscutterTools/Resources/zh-tw/Activity.txt
@@ -0,0 +1,213 @@
+// Activity
+2001:未歸的熄星
+2002:海燈節
+2003:風花節
+2004:導能原盤
+2005:盛夏!海島?大冒險!
+2006:謁索雷痕
+2007:韶光撫月
+2008:謎境懸兵
+2009:皚塵與雪影
+2010:飛彩鐫流年
+2011:三界路饗祭
+2012:堇庭華彩
+2013:危途疑蹤
+2014:遠海詩夏遊紀
+2015:雕琢童心
+2016:杯中遙吟之歌
+2017:智巧靈蕈大競逐
+2018:秋津森夜試膽會
+2019:磬弦奏華夜
+2020:風花的呼吸
+2021:盛典與慧業
+2022:決鬥!召喚之巔!
+// 1.0
+1001:海燈節
+5001:原素烘爐
+5002:且試身手
+5003:百貨奇貨
+// 1.1
+5004:映天之章
+5005:原素烘爐
+5006:佳餚尚溫
+5007:飛行挑戰
+5009:古聞之章
+5010:鯨天之章
+// 1.2
+3001:白堊與黑龍
+5008:三清鈴之章
+5011:秘寶迷蹤
+5012:百貨奇貨
+5014:無相交響詩
+// 1.3
+5015:仙麟之章
+5016:福至五彩
+5017:龍蜥尋蹤
+6002:威憾山岳
+6003:異鄉食記
+5018:引蝶之章
+5019:爭鬥潮流
+// 1.4
+5020:純水之願
+5021:邀約事件
+// 1.5
+5022:迷城戰線
+5023:風行迷蹤
+5024:折箭覓蹤
+5025:古聞之章
+5026:刺骨幽寒
+5027:翠石砌玉壺
+5028:邀約事件
+5029:浪沫之章
+// 1.6
+5030:無盡驟戰
+5031:風來人劍鬥綺譚
+5032:砰砰魔球總動員
+5033:回聲輕敘
+6005:振袖秋風問紅葉
+// 2.0
+6003:異鄉食記
+5034:幻影心流
+5035:秘寶迷蹤
+5036:熾焰轟轉
+5037:機關棋譚·靈妙之局
+5038:琉金之章
+5039:雪鶴之章
+// 2.1
+5040:百人一揆
+5041:月中王國
+5042:狂浪譎波
+5043:深空霆雷
+5044:飄浮秘靈
+5045:眠龍之章
+5046:天下人之章
+// 2.2
+5047:夢裡生花
+5048:邀約事件
+5049:古時孤影
+5050:鏡花聽世
+// 2.3
+5051:萬端珊瑚事件簿·犬武者
+5052:魚群大爆發
+5053:導能原盤
+5054:迷城戰線·光界篇
+5059:天牛之章
+5056:邀約事件
+5060:獸境裂隙
+// 2.4
+5055:山海八所巡禮
+5057:邀約事件
+5058:魔藥研析
+5061:冰雷與共
+5063:風起鶴歸
+5064:淵下宮
+// 2.5
+5062:曲生酌微夢
+5065:神工天巧
+5066:有香自西來
+5069:仙狐之章
+5070:天下人之章
+5076:百人一揆
+// 2.6
+5067:振晶的研究
+5068:畫外旅照
+5071:巨虺蟠淵
+5074:邀約事件
+5075:層岩巨淵
+5077:迴響淵底的安魂曲
+5078:神守柏之章
+// 2.7
+5080:爐心機造
+5081:幽客之章
+5079:深泥奇譚
+5072:荒瀧極上盛世豪鼓大祭典
+5073:邀約事件
+// 2.8
+5082:恆動械畫
+5083:追想練行
+5084:幻聲留形
+5085:殘像暗戰
+5088:楓紅之章
+5097:邀約事件
+// 3.0
+5086:幽林蕈羽
+5087:片劑深研
+5089:雷殛之花
+5090:溢神的論證
+5091:秘寶迷蹤
+5092:廓狐之章
+5093:諸法叢林
+// 3.1
+5094:百人一揆
+5095:徇察五風
+5096:尋星之旅
+5098:(test)废弃
+5100:金狼之章
+5101:睡蓮之章
+5102:沙海熱夢
+5103:永動龍獸
+5104:統轄矩陣
+5105:迷夢與空幻與欺騙
+// 3.2
+5098:(test)废弃
+5099:冒險家試煉
+5107:無相交響詩·離調樂段
+5108:畫外旅照·青植之篇
+5109:虛空鼓動,劫火高揚
+5113:智慧主之章
+5106:草覆地法
+// 3.3
+5110:骰子、貓與卡牌的戰場
+5111:風行迷蹤
+5112:跨野尋蹤
+5114:迷城戰線·沙域篇
+5115:傾落伽藍
+// 3.4
+5116:薔薇再開時
+5117:演武傳心
+5118:荒瀧極意堂堂鬥蟲大試合
+5119:熱鬥模式:列陣鬥巧
+5121:天隼之章
+5122:沙原之主
+5126:千壑沙地
+5127:邀約事件
+// 3.5
+5120:靈蕈棋陣
+5123:振晶的複核實驗
+5124:卡利貝爾
+5125:有香自西來・尋味北地
+5130:蠍尾鬃獅之章
+// 3.6
+5128:風沙轟鳴
+5129:合劑演進
+5131:蒼漠囿土
+5132:憶昔諸途巡歷
+5134:深罪施洗
+5136:懸壺之章
+5139:智慧主之章
+5144:邀約事件
+// 3.7
+5133:神工天巧·寶錄之章
+5135:離垢者肅心旅宴
+5138:溢神的猜想
+5137:琉金之章
+5143:鑄境研煉
+5146:七聖召喚·秘典華煥
+// 新手与特殊活动
+101:前路既定
+1014:送芭芭拉活动
+1023:打深渊送香菱活动
+8001:星之归还
+10001:(test)1.0签到
+10002:(test)高价值一次性签到
+10003:把握每日
+10004:把握每日
+10005:虹旅藏金
+10006:虹旅藏金
+10007:虹旅藏金
+10010:把握每日
+10011:富贵登门
+10012:异乡食记
+10013:云流星奔
+50001:万民同行
+50002:浅唱祈礼