老虎机图修正,string.c文本修正,部分跟随文本汉化
This commit is contained in:
parent
1ae844541b
commit
a0391ec7ef
Binary file not shown.
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 4.9 KiB |
@ -54,7 +54,7 @@
|
||||
// 16x32, 32x32, 64x64 etc are fine
|
||||
#define OW_MON_WANDER_WALK TRUE // If true, OW pokemon with MOVEMENT_TYPE_WANDER will walk-in-place in between steps.
|
||||
// Follower Pokémon
|
||||
#define OW_FOLLOWERS_ENABLED FALSE // Enables follower Pokémon, HGSS style. Requires OW_POKEMON_OBJECT_EVENTS. Note that additional scripting may be required for them to be fully supported!
|
||||
#define OW_FOLLOWERS_ENABLED TRUE // Enables follower Pokémon, HGSS style. Requires OW_POKEMON_OBJECT_EVENTS. Note that additional scripting may be required for them to be fully supported!
|
||||
#define OW_FOLLOWERS_BOBBING TRUE // If TRUE, follower Pokémon will bob up and down during their idle & walking animations
|
||||
#define OW_FOLLOWERS_POKEBALLS TRUE // If TRUE, follower Pokémon will emerge from the Poké Ball they are stored in, instead of a normal Poké Ball
|
||||
#define OW_FOLLOWERS_WEATHER_FORMS FALSE // If TRUE, Castform and Cherrim gain FORM_CHANGE_OVERWORLD_WEATHER, which will make them transform in the overworld based on the weather.
|
||||
|
||||
@ -898,3 +898,11 @@
|
||||
❌ 未找到 MOVE_SendWhichMonToPC,跳过
|
||||
❌ 未找到 MOVE_MenuDexNav,跳过
|
||||
❌ 未找到 MOVE_CannotSendMonToBoxHM,跳过
|
||||
❌ 未找到 MOVE_ReturnToVar1,跳过
|
||||
❌ 未找到 MOVE_SendWhichMonToPC,跳过
|
||||
❌ 未找到 MOVE_MenuDexNav,跳过
|
||||
❌ 未找到 MOVE_CannotSendMonToBoxHM,跳过
|
||||
❌ 未找到 MOVE_ReturnToVar1,跳过
|
||||
❌ 未找到 MOVE_SendWhichMonToPC,跳过
|
||||
❌ 未找到 MOVE_MenuDexNav,跳过
|
||||
❌ 未找到 MOVE_CannotSendMonToBoxHM,跳过
|
||||
|
||||
Binary file not shown.
BIN
python_tools/src/精灵跟随.xlsx
Normal file
BIN
python_tools/src/精灵跟随.xlsx
Normal file
Binary file not shown.
42
python_tools/test_follow.py
Normal file
42
python_tools/test_follow.py
Normal file
@ -0,0 +1,42 @@
|
||||
import openpyxl
|
||||
import re
|
||||
|
||||
# 文件路径
|
||||
excel_path = r"c:\Users\Nox\Documents\GitHub\pokeemerald-expansion-Chinese\python_tools\src\精灵跟随.xlsx"
|
||||
c_file_path = r"c:\Users\Nox\Documents\GitHub\pokeemerald-expansion-Chinese\src\follower_helper.c"
|
||||
|
||||
# 读取 Excel 文件
|
||||
wb = openpyxl.load_workbook(excel_path)
|
||||
sheet = wb.active
|
||||
|
||||
# 提取 Excel 数据(第一列和第三列)
|
||||
replacement_map = {}
|
||||
for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, min_col=1, max_col=3):
|
||||
variable_name = row[0].value # 第一列
|
||||
replacement_text = row[2].value # 第三列
|
||||
if variable_name and replacement_text:
|
||||
# 将 \n 转义为 \\n,确保在代码中保持原样
|
||||
replacement_map[variable_name] = replacement_text.replace("\\", "\\\\").replace("\n", "\\n")
|
||||
|
||||
# 读取 C 文件内容
|
||||
with open(c_file_path, "r", encoding="utf-8") as file:
|
||||
c_code = file.read()
|
||||
|
||||
# 替换变量对应的字符串
|
||||
for variable, new_text in replacement_map.items():
|
||||
# 匹配变量对应的字符串定义
|
||||
pattern = rf'static const u8 {variable}\[\] = _\(".*?"\);'
|
||||
replacement = rf'static const u8 {variable}[] = _("{new_text}");'
|
||||
c_code, num_replacements = re.subn(pattern, replacement, c_code, flags=re.DOTALL)
|
||||
|
||||
# 输出调试信息
|
||||
if num_replacements == 0:
|
||||
print(f"未匹配到变量: {variable}")
|
||||
else:
|
||||
print(f"替换成功: {variable} -> {new_text}")
|
||||
|
||||
# 保存修改后的 C 文件
|
||||
with open(c_file_path, "w", encoding="utf-8") as file:
|
||||
file.write(c_code)
|
||||
|
||||
print("替换完成!")
|
||||
@ -13,59 +13,59 @@
|
||||
#define TYPE_NOT_TYPE1 NUMBER_OF_MON_TYPES
|
||||
|
||||
// difficult conditional messages follow
|
||||
static const u8 sCondMsg00[] = _("{STR_VAR_1} danced happily.");
|
||||
static const u8 sCondMsg01[] = _("{STR_VAR_1} danced beautifully.");
|
||||
static const u8 sCondMsg00[] = _("{STR_VAR_1}开心地\n摇摆着身体。");
|
||||
static const u8 sCondMsg01[] = _("{STR_VAR_1}优雅地\n摇摆着身体。");
|
||||
static const u8* const sCelebiTexts[] = {sCondMsg00, sCondMsg01, NULL};
|
||||
static const u8 sCondMsg02[] = _("{STR_VAR_1} emitted fire and shouted.");
|
||||
static const u8 sCondMsg03[] = _("{STR_VAR_1} is vigorously producing\nfire!");
|
||||
static const u8 sCondMsg04[] = _("{STR_VAR_1} spat fire!");
|
||||
static const u8 sCondMsg05[] = _("{STR_VAR_1} is vigorously breathing\nfire!");
|
||||
static const u8 sCondMsg02[] = _("{STR_VAR_1}发出火焰并\n大声地吼叫了起来");
|
||||
static const u8 sCondMsg03[] = _("{STR_VAR_1}猛地发出了\n火焰!");
|
||||
static const u8 sCondMsg04[] = _("{STR_VAR_1}突然发出了\n火焰!");
|
||||
static const u8 sCondMsg05[] = _("{STR_VAR_1}猛地放出了\n火焰!");
|
||||
static const u8* const sFireTexts[] = {sCondMsg02, sCondMsg03, sCondMsg04, sCondMsg05, NULL};
|
||||
static const u8 sCondMsg06[] = _("{STR_VAR_1} is staring straight at\nthe POKéMON LEAGUE.");
|
||||
static const u8 sCondMsg07[] = _("Your POKéMON is staring intently at\nthe mountain peak.");
|
||||
static const u8 sCondMsg08[] = _("Sniff sniff, something smells good!");
|
||||
static const u8 sCondMsg09[] = _("Your POKéMON is surveying the\nshelves restlessly.");
|
||||
static const u8 sCondMsg10[] = _("{STR_VAR_1} is staring intently at\nthe shelves.");
|
||||
static const u8 sCondMsg06[] = _("{STR_VAR_1}一直在盯着\n宝可梦联盟");
|
||||
static const u8 sCondMsg07[] = _("它一直在\n凝望着山峰。");
|
||||
static const u8 sCondMsg08[] = _("传来了一股很香的气味。");
|
||||
static const u8 sCondMsg09[] = _("它正在观察货架。");
|
||||
static const u8 sCondMsg10[] = _("{STR_VAR_1}正盯着\n货架。");
|
||||
static const u8* const sShopTexts[] = {sCondMsg09, sCondMsg10, NULL};
|
||||
static const u8 sCondMsg11[] = _("{STR_VAR_1} focused with a sharp\ngaze!");
|
||||
static const u8 sCondMsg12[] = _("{STR_VAR_1} seems very interested in\nthe bicycles.");
|
||||
static const u8 sCondMsg13[] = _("{STR_VAR_1} seems to want to touch\nthe machines!");
|
||||
static const u8 sCondMsg14[] = _("{STR_VAR_1} is swaying with the\nboat!");
|
||||
static const u8 sCondMsg15[] = _("{STR_VAR_1} is dancing along with\nthe rolling of the ship.");
|
||||
static const u8 sCondMsg16[] = _("{STR_VAR_1} doesn't want to get off\nthe boat yet!");
|
||||
static const u8 sCondMsg11[] = _("{STR_VAR_1} 的眼神\n变得坚定了起来! ");
|
||||
static const u8 sCondMsg12[] = _("{STR_VAR_1}很喜欢自行车。");
|
||||
static const u8 sCondMsg13[] = _("{STR_VAR_1}想摸这个\n机器!");
|
||||
static const u8 sCondMsg14[] = _("{STR_VAR_1}随着船身摇晃\n 动了起来!");
|
||||
static const u8 sCondMsg15[] = _("{STR_VAR_1}随着船身摇晃\n摇摆着身体。");
|
||||
static const u8 sCondMsg16[] = _("{STR_VAR_1}好像还\n不想下船。");
|
||||
static const u8* const sBoatTexts[] = {sCondMsg14, sCondMsg15, sCondMsg16, NULL};
|
||||
static const u8 sCondMsg17[] = _("{STR_VAR_1} is listening to the\nsound of the machines.");
|
||||
static const u8 sCondMsg17[] = _("{STR_VAR_1} 用心地听着\n机器的声音!");
|
||||
static const u8* const sMachineTexts[] = {sCondMsg13, sCondMsg17, NULL};
|
||||
static const u8 sCondMsg18[] = _("Waah! your POKéMON suddenly splashed\nwater!");
|
||||
static const u8 sCondMsg19[] = _("Your POKéMON is blowing sand in the\nair!");
|
||||
static const u8 sCondMsg20[] = _("{STR_VAR_1} is playing around,\nplucking bits of grass.");
|
||||
static const u8 sCondMsg21[] = _("Your POKéMON is happily looking at\nyour footprints!");
|
||||
static const u8 sCondMsg22[] = _("{STR_VAR_1} is feeling nervous and a\ntouch claustrophobic.");
|
||||
static const u8 sCondMsg23[] = _("{STR_VAR_1} is cautious about the\nconfined area!");
|
||||
static const u8 sCondMsg18[] = _("哇!它突然向外泼水!");
|
||||
static const u8 sCondMsg19[] = _("它在吹着空中的沙子!");
|
||||
static const u8 sCondMsg20[] = _("{STR_VAR_1}正在盯着地面\n拔草玩。");
|
||||
static const u8 sCondMsg21[] = _("它正盯着你的脚印。");
|
||||
static const u8 sCondMsg22[] = _("{STR_VAR_1}看起来好像,\n有点紧张还有点恐惧。");
|
||||
static const u8 sCondMsg23[] = _("{STR_VAR_1}对这个地方\n正保持着警惕!");
|
||||
static const u8* const sElevatorTexts[] = {sCondMsg22, sCondMsg23, NULL};
|
||||
static const u8 sCondMsg24[] = _("A cold wind suddenly blew by!");
|
||||
static const u8 sCondMsg25[] = _("Your POKéMON almost slipped and fell\nover!");
|
||||
static const u8 sCondMsg26[] = _("Your POKéMON seems surprised to\ntouch ice.");
|
||||
static const u8 sCondMsg24[] = _("它感受到了一股凉\n冰冰的冷气。 ");
|
||||
static const u8 sCondMsg25[] = _("它差点滑倒。");
|
||||
static const u8 sCondMsg26[] = _("它摸到冰块\n后吓了一跳!");
|
||||
static const u8* const sColdTexts[] = {sCondMsg24, sCondMsg25, sCondMsg26, NULL};
|
||||
static const u8 sCondMsg27[] = _("Your POKéMON has a flower petal on\nits face!");
|
||||
static const u8 sCondMsg28[] = _("{STR_VAR_1} is growling softly.");
|
||||
static const u8 sCondMsg29[] = _("{STR_VAR_1} is trembling with fear.");
|
||||
static const u8 sCondMsg30[] = _("{STR_VAR_1} seems somehow sad…");
|
||||
static const u8 sCondMsg27[] = _("它的脸颊上\n有一片花瓣!");
|
||||
static const u8 sCondMsg28[] = _("{STR_VAR_1}突然发出了低吼!");
|
||||
static const u8 sCondMsg29[] = _("{STR_VAR_1}在瑟瑟发抖!");
|
||||
static const u8 sCondMsg30[] = _("{STR_VAR_1}好像有点不开心了。");
|
||||
static const u8* const sFearTexts[] = {sCondMsg29, sCondMsg30, NULL};
|
||||
static const u8 sCondMsg31[] = _("{STR_VAR_1} is taking shelter in the\ngrass from the rain.");
|
||||
static const u8 sCondMsg32[] = _("{STR_VAR_1} seems very cold.");
|
||||
static const u8 sCondMsg33[] = _("{STR_VAR_1} is staring at the sea.");
|
||||
static const u8 sCondMsg34[] = _("Your POKéMON is staring intently at\nthe sea!");
|
||||
static const u8 sCondMsg35[] = _("{STR_VAR_1} is looking at the\nsurging sea.");
|
||||
static const u8 sCondMsg31[] = _("{STR_VAR_1}躲到草丛\n里面避雨。");
|
||||
static const u8 sCondMsg32[] = _("{STR_VAR_1}感觉很冷,\n向你身上靠了过来!");
|
||||
static const u8 sCondMsg33[] = _("{STR_VAR_1}开始盯着\n大海。");
|
||||
static const u8 sCondMsg34[] = _("你的宝可梦正用心\n地盯着大海!");
|
||||
static const u8 sCondMsg35[] = _("{STR_VAR_1}盯着大海\n发呆。");
|
||||
static const u8* const sSeaTexts[] = {sCondMsg33, sCondMsg34, sCondMsg35, NULL};
|
||||
static const u8 sCondMsg36[] = _("{STR_VAR_1} is listening to the\nsound of the waterfall.");
|
||||
static const u8 sCondMsg37[] = _("{STR_VAR_1} seems to be happy about\nthe rain!");
|
||||
static const u8 sCondMsg38[] = _("{STR_VAR_1} is staring at its\nreflection in the water.");
|
||||
static const u8 sCondMsg39[] = _("{STR_VAR_1} seems to relax as it\nhears the sound of rustling leaves…");
|
||||
static const u8 sCondMsg40[] = _("{STR_VAR_1} is gnawing at the ice.");
|
||||
static const u8 sCondMsg41[] = _("{STR_VAR_1} is touching the ice.");
|
||||
static const u8 sCondMsg36[] = _("{STR_VAR_1}用心的听着\n瀑布的声音。");
|
||||
static const u8 sCondMsg37[] = _("{STR_VAR_1}因为下雨\n看上去很开心!");
|
||||
static const u8 sCondMsg38[] = _("{STR_VAR_1}正盯着水中地\n倒影发呆。");
|
||||
static const u8 sCondMsg39[] = _("{STR_VAR_1}听着落叶\n沙沙作响的声音\n非常放松。");
|
||||
static const u8 sCondMsg40[] = _("{STR_VAR_1}正啃咬冰块。");
|
||||
static const u8 sCondMsg41[] = _("{STR_VAR_1}正摸着冰块。");
|
||||
static const u8* const sIceTexts[] = {sCondMsg26, sCondMsg40, sCondMsg41, NULL};
|
||||
static const u8 sCondMsg42[] = _("{STR_VAR_1}'s burn looks painful!");
|
||||
static const u8 sCondMsg42[] = _("{STR_VAR_1}被烧伤了,\n好像很疼!");
|
||||
|
||||
// See the struct definition in follower_helper.h for more info
|
||||
const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT] =
|
||||
|
||||
@ -882,11 +882,11 @@ const u8 gText_BerryPickingResults[] = _("公布摘树果结果!");
|
||||
const u8 gText_10P30P50P50P[] = _("{CLEAR_TO 0x03}10P{CLEAR_TO 0x2B}30P{CLEAR_TO 0x53}50P{CLEAR_TO 0x77}{EMOJI_MINUS}50P");
|
||||
const u8 gText_AnnouncingRankings[] = _("宣布名次!");
|
||||
const u8 gText_AnnouncingPrizes[] = _("宣布奖品!");
|
||||
const u8 gText_1Colon[] = _("0.041666666666666664");
|
||||
const u8 gText_2Colon[] = _("0.08333333333333333");
|
||||
const u8 gText_3Colon[] = _("0.125");
|
||||
const u8 gText_4Colon[] = _("0.166666666666667");
|
||||
const u8 gText_5Colon[] = _("0.208333333333334");
|
||||
const u8 gText_1Colon[] = _("1:00");
|
||||
const u8 gText_2Colon[] = _("2:00");
|
||||
const u8 gText_3Colon[] = _("3:00");
|
||||
const u8 gText_4Colon[] = _("4:00");
|
||||
const u8 gText_5Colon[] = _("5:00");
|
||||
const u8 gText_FirstPlacePrize[] = _("第一名获得\n这个{DYNAMIC 0}!");
|
||||
const u8 gText_CantHoldAnyMore[] = _("你不能携带更多了!");
|
||||
const u8 gText_FilledStorageSpace[] = _("存储空间已经满了。");
|
||||
@ -1217,11 +1217,11 @@ const u8 gText_QuitTheGame[] = _("退出游戏?");
|
||||
const u8 gText_YouveGot9999Coins[] = _("你已经有9,999枚代币。");
|
||||
const u8 gText_YouveRunOutOfCoins[] = _("你用光了所有的代币。\n游戏结束!");
|
||||
const u8 gText_YouDontHaveThreeCoins[] = _("你没有3枚代币。");
|
||||
const u8 gText_ReelTimeHelp[] = _("旋转时间\n现在是你瞄准目标,\n创造纪录的机会!\n旋转时间将会持续奖励的圈数。\n当大奖励出现时才会停止。");
|
||||
const u8 gDaycareText_GetAlongVeryWell[] = _("The two seem to get along\nvery well.");
|
||||
const u8 gDaycareText_GetAlong[] = _("The two seem to get along.");
|
||||
const u8 gDaycareText_DontLikeOther[] = _("The two don't seem to like\neach other much.");
|
||||
const u8 gDaycareText_PlayOther[] = _("The two prefer to play with other\nPOKéMON than each other.");
|
||||
const u8 gText_ReelTimeHelp[] = _("奖励时间\n属于你的高光时刻来了!\n持续期间内,机器转动速度\n将逐渐减缓。瞄准目标吧!\n轮数耗尽或中超级大奖后,\n奖励时间将会结束。");
|
||||
const u8 gDaycareText_GetAlongVeryWell[] = _("这2只的关系\n好像挺好的!");
|
||||
const u8 gDaycareText_GetAlong[] = _("这2只的关系\n感觉还不错啊。");
|
||||
const u8 gDaycareText_DontLikeOther[] = _("这2只的关系\n似乎不太好啊。");
|
||||
const u8 gDaycareText_PlayOther[] = _("这2只各自跑去\n和其他宝可梦玩了……");
|
||||
const u8 gText_NewLine2[] = _("\n");
|
||||
const u8 gText_Exit4[] = _("退出");
|
||||
const u8 gText_Lv[] = _("{LV}");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user