刚才那个不能跑。
This commit is contained in:
parent
099c9ff025
commit
c952588b01
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,283 +0,0 @@
|
||||
{
|
||||
"ChujinDW1.txt__3": "ware5 anywh3re ELSE!",
|
||||
"ChujinDW1.txt__7": "ELSE, d3ar customer?",
|
||||
"ChujinDW1.txt__12": "about?",
|
||||
"ChujinDW1.txt__16": "ELSE?",
|
||||
"ChujinDW1.txt__20": "someth1ng!",
|
||||
"ChujinDW1.txt__27": "spa4ce!!",
|
||||
"ChujinDW1.txt__31": "c4$h...",
|
||||
"ChujinDW1.txt__35": "y0u f4ncy?",
|
||||
"ChujinDW1.txt__39": "l00k 4round!",
|
||||
"ChujinDW1.txt__43": "you off3r?",
|
||||
"ChujinDW1.txt__50": "do y0u w4nt",
|
||||
"ChujinDW1.txt__51": "to UNLOAD?",
|
||||
"ChujinDW1.txt__55": "t0 f1nd a",
|
||||
"ChujinDW1.txt__56": "new buyer!",
|
||||
"ChujinDW1.txt__62": "-",
|
||||
"ChujinDW1.txt__65": "Robotopia",
|
||||
"ChujinDW1.txt__68": "Chujin",
|
||||
"ChujinDW1.txt__71": "The Spire",
|
||||
"ChujinDW1.txt__74": "Any secrets?",
|
||||
"ChujinDW1.txt__77": "[color=yellow]Chujin (NEW)[/color]",
|
||||
"ChujinDW1.txt__79": "-",
|
||||
"ChujinDW1.txt__84": "BREAK",
|
||||
"ChujinDW1.txt__87": "trash1ng the pl4ce!",
|
||||
"ChujinDW1.txt__88": "BREAK",
|
||||
"ChujinDW1.txt__90": "freaks think they are?!",
|
||||
"ChujinDW1.txt__92": "here!",
|
||||
"ChujinDW1.txt__93": "BREAK",
|
||||
"ChujinDW1.txt__95": "above the clouds! Hmph!",
|
||||
"ChujinDW1.txt__97": "-",
|
||||
"ChujinDW1.txt__101": "of Robotopia!",
|
||||
"ChujinDW1.txt__103": "BREAK",
|
||||
"ChujinDW1.txt__105": "settlement, I heard he still",
|
||||
"ChujinDW1.txt__106": "personally helped many of the",
|
||||
"ChujinDW1.txt__107": "good people here!",
|
||||
"ChujinDW1.txt__108": "BREAK",
|
||||
"ChujinDW1.txt__110": "those that were once thought",
|
||||
"ChujinDW1.txt__111": "long gone...",
|
||||
"ChujinDW1.txt__113": "BREAK",
|
||||
"ChujinDW1.txt__115": "away lands to be fixed up by him!",
|
||||
"ChujinDW1.txt__116": "BREAK",
|
||||
"ChujinDW1.txt__118": "looks a bit with him!",
|
||||
"ChujinDW1.txt__121": "-",
|
||||
"ChujinDW1.txt__125": "Robotopia?",
|
||||
"ChujinDW1.txt__127": "can get there by using the factory's",
|
||||
"ChujinDW1.txt__128": "tram.",
|
||||
"ChujinDW1.txt__129": "BREAK",
|
||||
"ChujinDW1.txt__131": "folk.",
|
||||
"ChujinDW1.txt__133": "from the edges.",
|
||||
"ChujinDW1.txt__134": "BREAK",
|
||||
"ChujinDW1.txt__136": "beyond the clouds!",
|
||||
"ChujinDW1.txt__138": "thinking that it belongs to them!",
|
||||
"ChujinDW1.txt__139": "BREAK",
|
||||
"ChujinDW1.txt__141": "swear...",
|
||||
"ChujinDW1.txt__143": "-",
|
||||
"ChujinDW1.txt__147": "BREAK",
|
||||
"ChujinDW1.txt__149": "alley somewhere in town.",
|
||||
"ChujinDW1.txt__150": "BREAK",
|
||||
"ChujinDW1.txt__153": "-",
|
||||
"ChujinDW1.txt__157": "BREAK",
|
||||
"ChujinDW1.txt__159": "encounter once, many, many years",
|
||||
"ChujinDW1.txt__160": "ago.",
|
||||
"ChujinDW1.txt__161": "BREAK",
|
||||
"ChujinDW1.txt__163": "\"hoo-mans\" or something.",
|
||||
"ChujinDW1.txt__165": "away from him after betraying",
|
||||
"ChujinDW1.txt__166": "him over something.",
|
||||
"ChujinDW1.txt__167": "BREAK",
|
||||
"ChujinDW1.txt__169": "has been distrustful of these",
|
||||
"ChujinDW1.txt__170": "hoo-mans, or so I heard.",
|
||||
"ChujinDW1.txt__171": "BREAK",
|
||||
"ChujinDW1.txt__173": "step a foot in my store!",
|
||||
"PenGuy.txt__2": "you two again!",
|
||||
"PenGuy.txt__7": "my chums?",
|
||||
"PenGuy.txt__14": "interests",
|
||||
"PenGuy.txt__15": "you?",
|
||||
"PenGuy.txt__19": "your mind?",
|
||||
"PenGuy.txt__23": "bunch!",
|
||||
"PenGuy.txt__27": "carry it,",
|
||||
"PenGuy.txt__28": "bud.",
|
||||
"PenGuy.txt__32": "afford",
|
||||
"PenGuy.txt__33": "it, bud.",
|
||||
"PenGuy.txt__37": "at my",
|
||||
"PenGuy.txt__38": "wares!",
|
||||
"PenGuy.txt__42": "else?",
|
||||
"PenGuy.txt__46": "you sell-",
|
||||
"PenGuy.txt__47": "ing?",
|
||||
"PenGuy.txt__51": "have any-",
|
||||
"PenGuy.txt__52": "thing!",
|
||||
"PenGuy.txt__56": "it?",
|
||||
"PenGuy.txt__60": "bunch!",
|
||||
"PenGuy.txt__67": "Dark Prison",
|
||||
"PenGuy.txt__70": "Yourself",
|
||||
"PenGuy.txt__73": "Where wares come from?",
|
||||
"PenGuy.txt__76": "The Warden",
|
||||
"PenGuy.txt__78": "-",
|
||||
"PenGuy.txt__82": "before really.",
|
||||
"PenGuy.txt__83": "BREAK",
|
||||
"PenGuy.txt__85": "once?",
|
||||
"PenGuy.txt__87": "he never mentioned here before.",
|
||||
"PenGuy.txt__88": "BREAK",
|
||||
"PenGuy.txt__91": "known as an outlaw.",
|
||||
"PenGuy.txt__92": "BREAK",
|
||||
"PenGuy.txt__94": "this place is a bit small for being",
|
||||
"PenGuy.txt__95": "an entire Dark World of its own?",
|
||||
"PenGuy.txt__96": "BREAK",
|
||||
"PenGuy.txt__98": "the Warden isn't onto me.",
|
||||
"PenGuy.txt__100": "-",
|
||||
"PenGuy.txt__105": "now I'm stuck here.",
|
||||
"PenGuy.txt__106": "BREAK",
|
||||
"PenGuy.txt__108": "Bearing's Domain no matter how hard",
|
||||
"PenGuy.txt__109": "I try.",
|
||||
"PenGuy.txt__111": "BREAK",
|
||||
"PenGuy.txt__113": "be or something.",
|
||||
"PenGuy.txt__115": "-",
|
||||
"PenGuy.txt__120": "suppliers now, can I?",
|
||||
"PenGuy.txt__121": "BREAK",
|
||||
"PenGuy.txt__123": "heads!",
|
||||
"PenGuy.txt__125": "interest you!",
|
||||
"PenGuy.txt__126": "BREAK",
|
||||
"PenGuy.txt__128": "stuff you lost once.",
|
||||
"PenGuy.txt__129": "BREAK",
|
||||
"PenGuy.txt__131": "on it.",
|
||||
"PenGuy.txt__133": "-",
|
||||
"PenGuy.txt__138": "BREAK",
|
||||
"PenGuy.txt__140": "seen.",
|
||||
"PenGuy.txt__141": "BREAK",
|
||||
"PenGuy.txt__144": "BREAK",
|
||||
"PenGuy.txt__146": "moving in, was just annoyed but it's",
|
||||
"PenGuy.txt__147": "not like I can return now.",
|
||||
"PenGuy.txt__148": "BREAK",
|
||||
"PenGuy.txt__150": "that big locked room down the middle",
|
||||
"PenGuy.txt__151": "a few times.",
|
||||
"PenGuy.txt__153": "BREAK",
|
||||
"PenGuy2.txt__2": "out what I got!",
|
||||
"PenGuy2.txt__6": "my chums?",
|
||||
"PenGuy2.txt__13": "interests",
|
||||
"PenGuy2.txt__14": "you?",
|
||||
"PenGuy2.txt__18": "your mind?",
|
||||
"PenGuy2.txt__22": "bunch!",
|
||||
"PenGuy2.txt__26": "carry it,",
|
||||
"PenGuy2.txt__27": "bud.",
|
||||
"PenGuy2.txt__31": "afford",
|
||||
"PenGuy2.txt__32": "it, bud.",
|
||||
"PenGuy2.txt__36": "at my",
|
||||
"PenGuy2.txt__37": "wares!",
|
||||
"PenGuy2.txt__41": "else?",
|
||||
"PenGuy2.txt__45": "you sell-",
|
||||
"PenGuy2.txt__46": "ing?",
|
||||
"PenGuy2.txt__50": "have any-",
|
||||
"PenGuy2.txt__51": "thing!",
|
||||
"PenGuy2.txt__55": "it?",
|
||||
"PenGuy2.txt__59": "bunch!",
|
||||
"PenGuy2.txt__64": "lake, so I'll check it out.",
|
||||
"PenGuy2.txt__68": "Bearing",
|
||||
"PenGuy2.txt__71": "Yourself",
|
||||
"PenGuy2.txt__74": "The Fortress",
|
||||
"PenGuy2.txt__77": "Criminals",
|
||||
"PenGuy2.txt__80": "-----",
|
||||
"PenGuy2.txt__84": "while talking about the big man",
|
||||
"PenGuy2.txt__85": "inside his own fortress...?",
|
||||
"PenGuy2.txt__86": "BREAK",
|
||||
"PenGuy2.txt__89": "he says anymore.",
|
||||
"PenGuy2.txt__90": "BREAK",
|
||||
"PenGuy2.txt__92": "because he thinks the lightners have",
|
||||
"PenGuy2.txt__93": "abandoned us here.",
|
||||
"PenGuy2.txt__95": "BREAK",
|
||||
"PenGuy2.txt__97": "or something, have you seen his",
|
||||
"PenGuy2.txt__98": "scars?",
|
||||
"PenGuy2.txt__100": "BREAK",
|
||||
"PenGuy2.txt__102": "lightner out there did that,",
|
||||
"PenGuy2.txt__103": "and then tossed him in here.",
|
||||
"PenGuy2.txt__110": "livin'",
|
||||
"PenGuy2.txt__111": "BREAK",
|
||||
"PenGuy2.txt__113": "did some art commissions, even tried",
|
||||
"PenGuy2.txt__114": "some painting, but I was never really",
|
||||
"PenGuy2.txt__115": "successful.",
|
||||
"PenGuy2.txt__116": "BREAK",
|
||||
"PenGuy2.txt__118": "could really do is try to earn an",
|
||||
"PenGuy2.txt__119": "honest living, but even that has been",
|
||||
"PenGuy2.txt__120": "hard lately.",
|
||||
"PenGuy2.txt__121": "BREAK",
|
||||
"PenGuy2.txt__124": "game earlier.",
|
||||
"PenGuy2.txt__128": "Bearing took over it.",
|
||||
"PenGuy2.txt__130": "but many think it was the lightners",
|
||||
"PenGuy2.txt__131": "that built it.",
|
||||
"PenGuy2.txt__132": "BREAK",
|
||||
"PenGuy2.txt__135": "traps and stuff all around.",
|
||||
"PenGuy2.txt__136": "BREAK",
|
||||
"PenGuy2.txt__138": "room somewhere, but I think it",
|
||||
"PenGuy2.txt__139": "requires two people to make through",
|
||||
"PenGuy2.txt__140": "it.",
|
||||
"PenGuy2.txt__141": "BREAK",
|
||||
"PenGuy2.txt__143": "go on ahead. Might even be a little",
|
||||
"PenGuy2.txt__144": "fun for you!",
|
||||
"PenGuy2.txt__148": "BREAK",
|
||||
"PenGuy2.txt__150": "darkners are up to some shady",
|
||||
"PenGuy2.txt__151": "business.",
|
||||
"PenGuy2.txt__153": "BREAK",
|
||||
"PenGuy2.txt__155": "what was my involvement with him?",
|
||||
"PenGuy2.txt__156": "BREAK",
|
||||
"PenGuy2.txt__158": "goods, I didn't ask where he got",
|
||||
"PenGuy2.txt__159": "those.",
|
||||
"PenGuy2.txt__161": "quickly not to ask many questions.",
|
||||
"PenGuy2.txt__162": "BREAK",
|
||||
"PenGuy2.txt__164": "called criminals ain't my business,",
|
||||
"PenGuy2.txt__165": "so I won't pry.",
|
||||
"PenGuy2.txt__166": "BREAK",
|
||||
"PenGuy2.txt__168": "are looking for are right here",
|
||||
"PenGuy2.txt__169": "in the fortress, good coincidence,",
|
||||
"PenGuy2.txt__170": "right?",
|
||||
"SchoolDW.txt__2": "around!",
|
||||
"SchoolDW.txt__4": "I'm happy to have you!",
|
||||
"SchoolDW.txt__8": "anything else?",
|
||||
"SchoolDW.txt__13": "about?",
|
||||
"SchoolDW.txt__17": "talk about",
|
||||
"SchoolDW.txt__18": "something",
|
||||
"SchoolDW.txt__19": "else?",
|
||||
"SchoolDW.txt__23": "your mind?",
|
||||
"SchoolDW.txt__30": "you can't",
|
||||
"SchoolDW.txt__31": "carry more.",
|
||||
"SchoolDW.txt__35": "afford",
|
||||
"SchoolDW.txt__36": "it...",
|
||||
"SchoolDW.txt__40": "what I",
|
||||
"SchoolDW.txt__41": "have!",
|
||||
"SchoolDW.txt__45": "else?",
|
||||
"SchoolDW.txt__49": "you sell-",
|
||||
"SchoolDW.txt__50": "ing?",
|
||||
"SchoolDW.txt__54": "have any-",
|
||||
"SchoolDW.txt__55": "thing!",
|
||||
"SchoolDW.txt__59": "should I",
|
||||
"SchoolDW.txt__60": "look at?",
|
||||
"SchoolDW.txt__64": "go!",
|
||||
"SchoolDW.txt__70": "Dark World",
|
||||
"SchoolDW.txt__73": "Yourself",
|
||||
"SchoolDW.txt__76": "Dark Jail",
|
||||
"SchoolDW.txt__79": "Necklace",
|
||||
"SchoolDW.txt__82": "[color=yellow]Necklace (NEW)[/color]",
|
||||
"SchoolDW.txt__88": "Bearing's domain.",
|
||||
"SchoolDW.txt__89": "BREAK",
|
||||
"SchoolDW.txt__91": "abandoned us-",
|
||||
"SchoolDW.txt__93": "that he knew how to get back at them.",
|
||||
"SchoolDW.txt__94": "BREAK",
|
||||
"SchoolDW.txt__96": "then nothing happened for a long",
|
||||
"SchoolDW.txt__97": "time...",
|
||||
"SchoolDW.txt__98": "BREAK",
|
||||
"SchoolDW.txt__99": "anim:Sad:",
|
||||
"SchoolDW.txt__101": "harsh.",
|
||||
"SchoolDW.txt__103": "BREAK",
|
||||
"SchoolDW.txt__105": "we can...",
|
||||
"SchoolDW.txt__112": "BREAK",
|
||||
"SchoolDW.txt__114": "ones?",
|
||||
"SchoolDW.txt__115": "BREAK",
|
||||
"SchoolDW.txt__116": "anim:Happy:",
|
||||
"SchoolDW.txt__119": "in the end.",
|
||||
"SchoolDW.txt__120": "BREAK",
|
||||
"SchoolDW.txt__121": "anim:Sad:",
|
||||
"SchoolDW.txt__123": "are following Lord Bearing now.",
|
||||
"SchoolDW.txt__125": "back and visit now and then.",
|
||||
"SchoolDW.txt__132": "BREAK",
|
||||
"SchoolDW.txt__133": "anim:Sad:",
|
||||
"SchoolDW.txt__135": "such a place.",
|
||||
"SchoolDW.txt__136": "BREAK",
|
||||
"SchoolDW.txt__138": "criminals are sent\"...?",
|
||||
"SchoolDW.txt__139": "BREAK",
|
||||
"SchoolDW.txt__142": "BREAK",
|
||||
"SchoolDW.txt__143": "anim:Default:",
|
||||
"SchoolDW.txt__145": "and that's saying something.",
|
||||
"SchoolDW.txt__152": "and came here looking for it?",
|
||||
"SchoolDW.txt__153": "BREAK",
|
||||
"SchoolDW.txt__156": "around a while ago.",
|
||||
"SchoolDW.txt__157": "BREAK",
|
||||
"SchoolDW.txt__158": "anim:Sad:",
|
||||
"SchoolDW.txt__160": "get involved...",
|
||||
"SchoolDW.txt__161": "BREAK",
|
||||
"SchoolDW.txt__163": "BREAK",
|
||||
"SchoolDW.txt__165": "BREAK",
|
||||
"SchoolDW.txt__173": "necklace?",
|
||||
"SchoolDW.txt__174": "BREAK",
|
||||
"SchoolDW.txt__176": "still freaked me out...",
|
||||
"SchoolDW.txt__177": "BREAK",
|
||||
"SchoolDW.txt__179": "any risk of the lil' ones",
|
||||
"SchoolDW.txt__180": "getting involved with it."
|
||||
}
|
@ -1,189 +0,0 @@
|
||||
{
|
||||
"ChujinDW1.txt__1": "* Welc0me, w3lcome!",
|
||||
"ChujinDW1.txt__2": "* Y0u won't f1nd better",
|
||||
"ChujinDW1.txt__6": "* Lo0k1ng for anything",
|
||||
"ChujinDW1.txt__10": "* Sur3!",
|
||||
"ChujinDW1.txt__11": "* Wh4t",
|
||||
"ChujinDW1.txt__15": "* Someth1n'",
|
||||
"ChujinDW1.txt__19": "* Pl3ase buy",
|
||||
"ChujinDW1.txt__23": "* Th4nk y0u!",
|
||||
"ChujinDW1.txt__26": "* Not en0ugh",
|
||||
"ChujinDW1.txt__30": "* Not enough",
|
||||
"ChujinDW1.txt__34": "* Wh4t do",
|
||||
"ChujinDW1.txt__38": "* L0ok around,",
|
||||
"ChujinDW1.txt__42": "* Wh4t d0",
|
||||
"ChujinDW1.txt__46": "* It's 3mpty!",
|
||||
"ChujinDW1.txt__49": "* Wh4tev3r",
|
||||
"ChujinDW1.txt__54": "* I'll try",
|
||||
"ChujinDW1.txt__59": "* C0m3 b4ck anyt1me!",
|
||||
"ChujinDW1.txt__60": "* I'll be w41ting!!",
|
||||
"ChujinDW1.txt__82": "* Ah, y3s! Glori0us Robot0pia!",
|
||||
"ChujinDW1.txt__83": "* A b3auty, isn't 1t?",
|
||||
"ChujinDW1.txt__85": "* IF 0nly not for th0se INTELOPERS!",
|
||||
"ChujinDW1.txt__86": "* They k3ep com1ng down her3 and",
|
||||
"ChujinDW1.txt__89": "* What do those plastic and plush",
|
||||
"ChujinDW1.txt__91": "* People are trying to LIVE down",
|
||||
"ChujinDW1.txt__94": "* Must be all that hot air way",
|
||||
"ChujinDW1.txt__100": "* Master Chujin? He created all",
|
||||
"ChujinDW1.txt__102": "* Great guy!",
|
||||
"ChujinDW1.txt__104": "* Altough he never visited this",
|
||||
"ChujinDW1.txt__109": "* Fixing broken limbs, repairing",
|
||||
"ChujinDW1.txt__112": "* A true gentleman!",
|
||||
"ChujinDW1.txt__114": "* Some folks even come from far",
|
||||
"ChujinDW1.txt__117": "* Say, your pink friend kinda",
|
||||
"ChujinDW1.txt__119": "* She must be a big fan!",
|
||||
"ChujinDW1.txt__124": "* The building at the center of",
|
||||
"ChujinDW1.txt__126": "* If you're looking to visit it, you",
|
||||
"ChujinDW1.txt__130": "* The ELITE lives there. Hate those",
|
||||
"ChujinDW1.txt__132": "* Always looking down on us people",
|
||||
"ChujinDW1.txt__135": "* Also the Spire extends all the way",
|
||||
"ChujinDW1.txt__137": "* So interlopers keep attacking us",
|
||||
"ChujinDW1.txt__140": "* We robots can't catch a break, I",
|
||||
"ChujinDW1.txt__146": "* Secrets? Not really.",
|
||||
"ChujinDW1.txt__148": "* Though I heard there is a back",
|
||||
"ChujinDW1.txt__151": "* Never really saw it, though.",
|
||||
"ChujinDW1.txt__156": "* More info on Master Chujin?",
|
||||
"ChujinDW1.txt__158": "* Well I heard he had a bad",
|
||||
"ChujinDW1.txt__162": "* With some creatures named",
|
||||
"ChujinDW1.txt__164": "* Seems they stole something",
|
||||
"ChujinDW1.txt__168": "* Ever since that day, Master Chujin",
|
||||
"ChujinDW1.txt__172": "* Whatever they are, they better not",
|
||||
"ChujinDW1.txt__174": "* [shake]NO HOO-MANS ALLOWED!",
|
||||
"PenGuy.txt__1": "* Hey, hey! Good to see",
|
||||
"PenGuy.txt__3": "* What can I getcha?",
|
||||
"PenGuy.txt__6": "* Anything else,",
|
||||
"PenGuy.txt__10": "* What's up?",
|
||||
"PenGuy.txt__13": "* What else",
|
||||
"PenGuy.txt__18": "* Changed",
|
||||
"PenGuy.txt__22": "* Thanks a",
|
||||
"PenGuy.txt__26": "* You can't",
|
||||
"PenGuy.txt__31": "* You can't",
|
||||
"PenGuy.txt__36": "* Gander",
|
||||
"PenGuy.txt__41": "* Anything",
|
||||
"PenGuy.txt__45": "* What are",
|
||||
"PenGuy.txt__50": "* You don't",
|
||||
"PenGuy.txt__55": "* What is",
|
||||
"PenGuy.txt__59": "* Thanks a",
|
||||
"PenGuy.txt__63": "* Come back soon, you lot!",
|
||||
"PenGuy.txt__64": "* Thanks for the patronage!",
|
||||
"PenGuy.txt__81": "* Ah yes, never heard of this place",
|
||||
"PenGuy.txt__84": "* But apperently Pennilton was here",
|
||||
"PenGuy.txt__86": "* Known him for quite a bit but",
|
||||
"PenGuy.txt__89": "* I mean, I wouldn't either.",
|
||||
"PenGuy.txt__90": "* Not much glamours in being publicly",
|
||||
"PenGuy.txt__93": "* But don't you find it weird that",
|
||||
"PenGuy.txt__97": "* Might investigate it later, when",
|
||||
"PenGuy.txt__103": "* Me? You already know.",
|
||||
"PenGuy.txt__104": "* Used to run a nice game at Bearing's,",
|
||||
"PenGuy.txt__107": "* The door doesn't take me back to",
|
||||
"PenGuy.txt__110": "* Spooky!",
|
||||
"PenGuy.txt__112": "* It's like the entire place ceased to",
|
||||
"PenGuy.txt__118": "* That, my friends, is a trade secret!",
|
||||
"PenGuy.txt__119": "* Can't just go on revealing my",
|
||||
"PenGuy.txt__122": "* But don't you worry your little",
|
||||
"PenGuy.txt__124": "* I have plenty of stuff that could",
|
||||
"PenGuy.txt__127": "* And who knows, maybe I even have",
|
||||
"PenGuy.txt__130": "* Just don't ask me how I got my hands",
|
||||
"PenGuy.txt__136": "* The guy with the hat down there?",
|
||||
"PenGuy.txt__137": "* Total weirdo.",
|
||||
"PenGuy.txt__139": "* Isn't like any other Darkner I've",
|
||||
"PenGuy.txt__142": "* Always \"Justice this, justice that\".",
|
||||
"PenGuy.txt__143": "* Won't shut up about it.",
|
||||
"PenGuy.txt__145": "* He didn't have any problems with me",
|
||||
"PenGuy.txt__149": "* Though I've seen him sneaking down",
|
||||
"PenGuy.txt__152": "* Dunno what's behind that, though.",
|
||||
"PenGuy.txt__154": "* ...Kinda don't want to find out.",
|
||||
"PenGuy2.txt__1": "* Hey, hey! Check",
|
||||
"PenGuy2.txt__5": "* Anything else,",
|
||||
"PenGuy2.txt__9": "* What's up?",
|
||||
"PenGuy2.txt__12": "* What else",
|
||||
"PenGuy2.txt__17": "* Changed",
|
||||
"PenGuy2.txt__21": "* Thanks a",
|
||||
"PenGuy2.txt__25": "* You can't",
|
||||
"PenGuy2.txt__30": "* You can't",
|
||||
"PenGuy2.txt__35": "* Gander",
|
||||
"PenGuy2.txt__40": "* Anything",
|
||||
"PenGuy2.txt__44": "* What are",
|
||||
"PenGuy2.txt__49": "* You don't",
|
||||
"PenGuy2.txt__54": "* What is",
|
||||
"PenGuy2.txt__58": "* Thanks a",
|
||||
"PenGuy2.txt__62": "* I'm thinkin' of moving shop soon.",
|
||||
"PenGuy2.txt__63": "* They say there is a weird door by the",
|
||||
"PenGuy2.txt__65": "* Anyway, thanks for the patronage!",
|
||||
"PenGuy2.txt__83": "* Hey, think you can keep quiet",
|
||||
"PenGuy2.txt__87": "* Nah, I jest.",
|
||||
"PenGuy2.txt__88": "* Really, I don't care about what",
|
||||
"PenGuy2.txt__91": "* Personally, I think he is just upset",
|
||||
"PenGuy2.txt__94": "* I mean, I don't blame him.",
|
||||
"PenGuy2.txt__96": "* I think maybe he just has some trauma",
|
||||
"PenGuy2.txt__99": "* Err, stitches?",
|
||||
"PenGuy2.txt__101": "* Wouldn't surprise me if some",
|
||||
"PenGuy2.txt__104": "* Maybe I'd be very upset too.",
|
||||
"PenGuy2.txt__105": "* Maybe.",
|
||||
"PenGuy2.txt__108": "* Me? There isn't much to be known.",
|
||||
"PenGuy2.txt__109": "* I'm just some guy tryin' to make a",
|
||||
"PenGuy2.txt__112": "* I've done it all, some party tricks,",
|
||||
"PenGuy2.txt__117": "* When I got in this Dark World, all I",
|
||||
"PenGuy2.txt__122": "* Thanks, by the way.",
|
||||
"PenGuy2.txt__123": "* I'm glad you had fun with my little",
|
||||
"PenGuy2.txt__127": "* The fortress has existed before",
|
||||
"PenGuy2.txt__129": "* No one knows where it came from,",
|
||||
"PenGuy2.txt__133": "* Now why, no one knows either.",
|
||||
"PenGuy2.txt__134": "* Even more when there are so many",
|
||||
"PenGuy2.txt__137": "* By the way, there is a treasure",
|
||||
"PenGuy2.txt__142": "* If you two want to give it a try,",
|
||||
"PenGuy2.txt__147": "* Criminals, eh?",
|
||||
"PenGuy2.txt__149": "* Honestly, everyone knows some",
|
||||
"PenGuy2.txt__152": "* Not me, I swear!",
|
||||
"PenGuy2.txt__154": "* Hm? Pennilton? You wanna know",
|
||||
"PenGuy2.txt__157": "* He just supplied me with some",
|
||||
"PenGuy2.txt__160": "* In my line of business, you learn",
|
||||
"PenGuy2.txt__163": "* Whatever is you want with those so",
|
||||
"PenGuy2.txt__167": "* But seems the rest of the ones you",
|
||||
"SchoolDW.txt__1": "* Welcome! Take a look",
|
||||
"SchoolDW.txt__3": "* I don't have much, but",
|
||||
"SchoolDW.txt__7": "* Can I help you with",
|
||||
"SchoolDW.txt__11": "* Oh?",
|
||||
"SchoolDW.txt__12": "* What",
|
||||
"SchoolDW.txt__16": "* Want to",
|
||||
"SchoolDW.txt__22": "* Changed",
|
||||
"SchoolDW.txt__26": "* Thanks!",
|
||||
"SchoolDW.txt__29": "* Sorry,",
|
||||
"SchoolDW.txt__34": "* You can't",
|
||||
"SchoolDW.txt__39": "* Here is",
|
||||
"SchoolDW.txt__44": "* Anything",
|
||||
"SchoolDW.txt__48": "* What are",
|
||||
"SchoolDW.txt__53": "* You don't",
|
||||
"SchoolDW.txt__58": "* What",
|
||||
"SchoolDW.txt__63": "* Here you",
|
||||
"SchoolDW.txt__67": "* Hope to see you again soon!",
|
||||
"SchoolDW.txt__87": "* This Dark World? This is Lord",
|
||||
"SchoolDW.txt__90": "* Eons ago, after the lightners",
|
||||
"SchoolDW.txt__92": "* Lord Bearing then appeared, and said",
|
||||
"SchoolDW.txt__95": "* At the time, most were ecstactic, but",
|
||||
"SchoolDW.txt__100": "* Eventually, Bearing became very",
|
||||
"SchoolDW.txt__102": "* No one knows why.",
|
||||
"SchoolDW.txt__104": "* Now we all just hide from him when",
|
||||
"SchoolDW.txt__111": "* Me? I'm just an old shopkeeper.",
|
||||
"SchoolDW.txt__113": "* Oh, but have you seem my little",
|
||||
"SchoolDW.txt__117": "* They're some feisty rascals!",
|
||||
"SchoolDW.txt__118": "* But they don't mean any harm",
|
||||
"SchoolDW.txt__122": "* Unfortunately, most of them",
|
||||
"SchoolDW.txt__124": "* Wish they would at least come",
|
||||
"SchoolDW.txt__131": "* ...Dark Jail?",
|
||||
"SchoolDW.txt__134": "* Sorry... I've never heard of",
|
||||
"SchoolDW.txt__137": "* ... \"Where all the Dark World",
|
||||
"SchoolDW.txt__140": "* Yeah... Not ringing any bells.",
|
||||
"SchoolDW.txt__141": "* You sure that such a place exists?",
|
||||
"SchoolDW.txt__144": "* Sounds like made up stuff,",
|
||||
"SchoolDW.txt__151": "* You say you lost a necklace",
|
||||
"SchoolDW.txt__154": "* Now that you mention it...",
|
||||
"SchoolDW.txt__155": "* I think I have seen a necklace",
|
||||
"SchoolDW.txt__159": "* But if I were you, I wouldn't",
|
||||
"SchoolDW.txt__162": "* I've heard this necklace is...",
|
||||
"SchoolDW.txt__164": "* . . .",
|
||||
"SchoolDW.txt__166": "* ...Just forget it, alright?",
|
||||
"SchoolDW.txt__172": "* What's that? You found the",
|
||||
"SchoolDW.txt__175": "* That's great! Though it",
|
||||
"SchoolDW.txt__178": "* At least there won't be"
|
||||
}
|
@ -16,148 +16,161 @@ def load_json(path):
|
||||
print(f"❌ 載入 {path} 時發生錯誤:{str(e)}")
|
||||
return {}
|
||||
|
||||
def apply_translation(dirpath):
|
||||
"""把翻譯內容實際套用到檔案裡"""
|
||||
print(f"\n🔍 正在處理目錄:{dirpath}")
|
||||
def parse_key(full_key):
|
||||
"""解析包含路徑的鍵值,返回相對路徑、檔案名和行號"""
|
||||
try:
|
||||
# 範例鍵值:"Room1/dialogue.txt__3"
|
||||
path_part, line_part = full_key.rsplit("__", 1)
|
||||
line_no = int(line_part)
|
||||
*folders, filename = path_part.split("/")
|
||||
return os.path.join(*folders), filename, line_no
|
||||
except Exception as e:
|
||||
print(f"❌ 解析鍵值 '{full_key}' 失敗:{str(e)}")
|
||||
return None, None, None
|
||||
|
||||
def apply_translation(root_path):
|
||||
"""從根目錄套用集中式翻譯"""
|
||||
print(f"\n🔍 正在處理根目錄:{root_path}")
|
||||
|
||||
# 準備三個翻譯檔案的路徑
|
||||
trans_paths = {
|
||||
"normal": os.path.join(dirpath, "translate", "translation.json"),
|
||||
"special": os.path.join(dirpath, "translate", "translation_special.json"),
|
||||
"namedesc": os.path.join(dirpath, "translate", "translation_namedesc.json")
|
||||
# 集中式翻譯文件路徑
|
||||
translate_dir = os.path.join(root_path, "translate")
|
||||
trans_files = {
|
||||
"normal": os.path.join(translate_dir, "translation_normal.json"),
|
||||
"special": os.path.join(translate_dir, "translation_special.json"),
|
||||
"namedesc": os.path.join(translate_dir, "translation_namedesc.json")
|
||||
}
|
||||
|
||||
# 把三個翻譯檔案的內容都讀進來
|
||||
# 載入所有翻譯數據
|
||||
translations = {
|
||||
"normal": load_json(trans_paths["normal"]),
|
||||
"special": load_json(trans_paths["special"]),
|
||||
"namedesc": load_json(trans_paths["namedesc"])
|
||||
"normal": load_json(trans_files["normal"]),
|
||||
"special": load_json(trans_files["special"]),
|
||||
"namedesc": load_json(trans_files["namedesc"])
|
||||
}
|
||||
|
||||
# 先把普通和特殊翻譯混在一起
|
||||
# 合併普通和特殊翻譯
|
||||
combined = {}
|
||||
combined.update(translations["normal"])
|
||||
combined.update(translations["special"])
|
||||
print(f"📦 合併普通+特殊翻譯共 {len(combined)} 條")
|
||||
|
||||
# 處理那些有前綴的翻譯內容(像是name:、desc:這種的)
|
||||
# 處理名稱描述類翻譯
|
||||
namedesc_count = 0
|
||||
for key, value in translations["namedesc"].items():
|
||||
try:
|
||||
# 把key拆成檔案名稱和行號
|
||||
filename, line_no = key.split("__")
|
||||
line_no = int(line_no)
|
||||
src_path = os.path.join(dirpath, filename)
|
||||
|
||||
# 檢查原始檔案是否存在
|
||||
if not os.path.exists(src_path):
|
||||
print(f"⚠ 注意!找不到來源檔案:{src_path}")
|
||||
continue
|
||||
for full_key, value in translations["namedesc"].items():
|
||||
# 解析鍵值中的路徑信息
|
||||
rel_path, filename, line_no = parse_key(full_key)
|
||||
if not filename:
|
||||
continue
|
||||
|
||||
# 把原始檔案內容全部讀出來
|
||||
# 構建完整文件路徑
|
||||
src_path = os.path.join(root_path, rel_path, filename)
|
||||
if not os.path.exists(src_path):
|
||||
print(f"⚠ 找不到來源檔案:{src_path}")
|
||||
continue
|
||||
|
||||
try:
|
||||
with open(src_path, "r", encoding="utf-8") as f:
|
||||
lines = f.readlines()
|
||||
|
||||
# 檢查行號是不是在合理範圍
|
||||
|
||||
if line_no >= len(lines):
|
||||
print(f"⚠ 行號 {line_no} 在 {filename} 超出範圍(最大 {len(lines)-1})")
|
||||
print(f"⚠ 行號 {line_no} 在 {filename} 超出範圍(最大 {len(lines)-1})")
|
||||
continue
|
||||
|
||||
# 找出原本的前綴是name:、desc:還是menuDesc:
|
||||
# 提取前綴並組合
|
||||
original = lines[line_no].strip()
|
||||
prefix = ""
|
||||
for field in ["name:", "desc:", "menuDesc:"]:
|
||||
if original.startswith(field):
|
||||
prefix = field
|
||||
break
|
||||
|
||||
prefix = next((f for f in ["name:", "desc:", "menuDesc:"] if original.startswith(f)), "")
|
||||
if prefix:
|
||||
# 把前綴和翻譯值組合起來
|
||||
combined[key] = prefix + value
|
||||
combined[full_key] = prefix + value
|
||||
namedesc_count += 1
|
||||
else:
|
||||
print(f"⚠ 在 {filename} 第 {line_no} 行找不到前綴:{original}")
|
||||
print(f"⚠ 在 {src_path} 第 {line_no} 行找不到前綴:{original[:50]}...")
|
||||
except Exception as e:
|
||||
print(f"❌ 處理 namedesc 鍵值 '{key}' 時出錯:{str(e)}")
|
||||
print(f"❌ 處理 {src_path} 時發生錯誤:{str(e)}")
|
||||
|
||||
print(f"📦 新增 {namedesc_count} 條名稱描述翻譯")
|
||||
|
||||
# 建立檔案修改對照表
|
||||
file_map = {}
|
||||
total_updates = 0
|
||||
for key, value in combined.items():
|
||||
try:
|
||||
# 再次拆分鍵值取得檔案資訊
|
||||
filename, line_no = key.split("__")
|
||||
line_no = int(line_no)
|
||||
|
||||
# 如果還沒讀過這個檔案,就先讀取內容
|
||||
if filename not in file_map:
|
||||
src_path = os.path.join(dirpath, filename)
|
||||
if not os.path.exists(src_path):
|
||||
print(f"⚠ 注意!找不到目標檔案:{src_path}")
|
||||
continue
|
||||
with open(src_path, "r", encoding="utf-8") as f:
|
||||
file_map[filename] = {
|
||||
"path": src_path,
|
||||
"lines": f.readlines(),
|
||||
"modified": False # 用來記錄是否有修改
|
||||
}
|
||||
|
||||
for full_key, value in combined.items():
|
||||
rel_path, filename, line_no = parse_key(full_key)
|
||||
if not filename:
|
||||
continue
|
||||
|
||||
# 再次檢查行號是否有效
|
||||
if line_no >= len(file_map[filename]["lines"]):
|
||||
print(f"⚠ 行號 {line_no} 在 {filename} 超出範圍(最大 {len(file_map[filename]['lines'])-1})")
|
||||
# 構建完整目標路徑
|
||||
target_path = os.path.join(root_path, rel_path, filename)
|
||||
if not os.path.exists(target_path):
|
||||
print(f"⚠ 找不到目標檔案:{target_path}")
|
||||
continue
|
||||
|
||||
# 初始化文件緩存
|
||||
if target_path not in file_map:
|
||||
try:
|
||||
with open(target_path, "r", encoding="utf-8") as f:
|
||||
file_map[target_path] = {
|
||||
"lines": f.readlines(),
|
||||
"modified": False
|
||||
}
|
||||
except Exception as e:
|
||||
print(f"❌ 讀取 {target_path} 失敗:{str(e)}")
|
||||
continue
|
||||
|
||||
# 準備要替換的新內容
|
||||
original = file_map[filename]["lines"][line_no].strip()
|
||||
new_line = f"{value}\n"
|
||||
|
||||
# 只有當內容確實不同時才修改
|
||||
if file_map[filename]["lines"][line_no] != new_line:
|
||||
file_map[filename]["lines"][line_no] = new_line
|
||||
file_map[filename]["modified"] = True
|
||||
total_updates += 1
|
||||
print(f"✏ 已更新 {filename} 第 {line_no} 行:")
|
||||
print(f" 原始內容:{original[:50]}...")
|
||||
print(f" 新內容:{new_line.strip()[:50]}...")
|
||||
except Exception as e:
|
||||
print(f"❌ 套用翻譯 '{key}' 時發生錯誤:{str(e)}")
|
||||
# 檢查行號有效性
|
||||
if line_no >= len(file_map[target_path]["lines"]):
|
||||
print(f"⚠ 行號 {line_no} 在 {target_path} 超出範圍")
|
||||
continue
|
||||
|
||||
# 開始正式寫入修改
|
||||
# 準備替換內容
|
||||
original = file_map[target_path]["lines"][line_no].strip()
|
||||
new_line = f"{value}\n"
|
||||
|
||||
if file_map[target_path]["lines"][line_no] != new_line:
|
||||
file_map[target_path]["lines"][line_no] = new_line
|
||||
file_map[target_path]["modified"] = True
|
||||
total_updates += 1
|
||||
print(f"✏ 更新 {os.path.join(rel_path, filename)} 第 {line_no} 行:")
|
||||
print(f" 原始內容:{original[:50]}...")
|
||||
print(f" 新內容:{new_line.strip()[:50]}...")
|
||||
|
||||
# 寫入修改
|
||||
success_count = 0
|
||||
for filename, data in file_map.items():
|
||||
for file_path, data in file_map.items():
|
||||
if data["modified"]:
|
||||
try:
|
||||
# 先建立備份檔案(安全起見)
|
||||
backup_path = data["path"] + ".bak"
|
||||
os.replace(data["path"], backup_path)
|
||||
# 建立備份(禁用)
|
||||
# backup_path = file_path + ".bak"
|
||||
# os.replace(file_path, backup_path)
|
||||
|
||||
# 寫入新內容
|
||||
with open(data["path"], "w", encoding="utf-8") as f:
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
f.writelines(data["lines"])
|
||||
|
||||
print(f"✔ 成功更新檔案:{filename}(已建立備份)")
|
||||
print(f"✔ 成功更新:{os.path.relpath(file_path, root_path)}(備份已建立)")
|
||||
success_count += 1
|
||||
except Exception as e:
|
||||
print(f"❌ 寫入 {filename} 失敗:{str(e)}")
|
||||
print(f"❌ 寫入 {file_path} 失敗:{str(e)}")
|
||||
traceback.print_exc()
|
||||
|
||||
print(f"\n🎯 總共套用 {total_updates} 處更新")
|
||||
print(f"✅ 成功修改 {success_count}/{len(file_map)} 個檔案")
|
||||
|
||||
def walk_and_apply(root="."):
|
||||
"""自動掃描資料夾找需要處理的目錄"""
|
||||
print(f"🔎 開始從以下路徑進行翻譯作業:{os.path.abspath(root)}")
|
||||
for dirpath, dirnames, filenames in os.walk(root):
|
||||
if "translate" in dirnames:
|
||||
print(f"\n{'='*50}")
|
||||
try:
|
||||
apply_translation(dirpath)
|
||||
except Exception as e:
|
||||
print(f"❌ 在 {dirpath} 發生嚴重錯誤:{str(e)}")
|
||||
traceback.print_exc()
|
||||
print(f"{'='*50}")
|
||||
"""主處理流程"""
|
||||
root = os.path.abspath(root)
|
||||
print(f"🔎 開始從以下路徑進行翻譯作業:{root}")
|
||||
|
||||
# 檢查翻譯目錄是否存在
|
||||
translate_dir = os.path.join(root, "translate")
|
||||
if not os.path.exists(translate_dir):
|
||||
print(f"❌ 找不到集中式翻譯目錄:{translate_dir}")
|
||||
return
|
||||
|
||||
print(f"\n{'='*50}")
|
||||
try:
|
||||
apply_translation(root)
|
||||
except Exception as e:
|
||||
print(f"❌ 發生嚴重錯誤:{str(e)}")
|
||||
traceback.print_exc()
|
||||
print(f"{'='*50}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
walk_and_apply()
|
||||
|
@ -1,83 +1,88 @@
|
||||
import os
|
||||
import json
|
||||
from collections import defaultdict
|
||||
|
||||
def should_ignore(line):
|
||||
"""檢查這行是不是要跳過不處理的(比如註解或特殊標記)"""
|
||||
line = line.strip()
|
||||
return line.startswith(("@", ">", ".", "END")) or line == ""
|
||||
|
||||
def collect_texts_from_txt(path):
|
||||
"""從目錄下的所有txt檔案裡收集需要翻譯的文字"""
|
||||
normal_texts = {} # 存普通對話文本
|
||||
special_texts = {} # 存星號開頭的特殊文本
|
||||
namedesc_texts = {} # 存名稱和描述類的文本
|
||||
def collect_all_texts(root_path):
|
||||
"""從所有子目錄收集需要翻譯的文本"""
|
||||
# 使用defaultdict自動初始化三種文本類別
|
||||
all_data = {
|
||||
'normal': defaultdict(dict),
|
||||
'special': defaultdict(dict),
|
||||
'namedesc': defaultdict(dict)
|
||||
}
|
||||
|
||||
# 掃描目錄裡所有txt檔案
|
||||
for filename in os.listdir(path):
|
||||
if filename.endswith(".txt"):
|
||||
file_path = os.path.join(path, filename)
|
||||
# 讀取檔案全部內容
|
||||
# 遍歷所有目錄和文件
|
||||
for dirpath, _, filenames in os.walk(root_path):
|
||||
# 跳過translate目錄本身
|
||||
if "translate" in dirpath.split(os.sep):
|
||||
continue
|
||||
|
||||
for filename in filenames:
|
||||
if not filename.endswith(".txt"):
|
||||
continue
|
||||
|
||||
file_path = os.path.join(dirpath, filename)
|
||||
# 計算相對路徑作為分類依據
|
||||
relative_path = os.path.relpath(dirpath, root_path)
|
||||
|
||||
with open(file_path, "r", encoding="utf-8") as f:
|
||||
lines = f.readlines()
|
||||
|
||||
# 逐行分析內容
|
||||
for i, line in enumerate(lines):
|
||||
for line_num, line in enumerate(lines):
|
||||
stripped = line.strip()
|
||||
if should_ignore(stripped):
|
||||
continue # 跳過不需要處理的行
|
||||
|
||||
# 生成唯一鍵值(檔案名+行號)
|
||||
key = f"{filename}__{i}"
|
||||
|
||||
# 遇到名稱或描述類的文本(name:/desc:/menuDesc:)
|
||||
continue
|
||||
|
||||
# 生成包含路徑的唯一鍵值
|
||||
full_key = f"{relative_path}/{filename}__{line_num}"
|
||||
|
||||
# 分類處理不同類型文本
|
||||
if stripped.startswith(("name:", "desc:", "menuDesc:")):
|
||||
# 把開頭的標記切掉,只留內容文字
|
||||
idx = stripped.find(":")
|
||||
namedesc_texts[key] = stripped[idx + 1:].strip()
|
||||
# 遇到星號開頭的就是特殊文本
|
||||
all_data['namedesc'][relative_path][full_key] = stripped[idx+1:].strip()
|
||||
elif stripped.startswith("*"):
|
||||
special_texts[key] = stripped
|
||||
# 剩下的都當普通文本處理
|
||||
all_data['special'][relative_path][full_key] = stripped
|
||||
else:
|
||||
normal_texts[key] = stripped
|
||||
all_data['normal'][relative_path][full_key] = stripped
|
||||
|
||||
return normal_texts, special_texts, namedesc_texts
|
||||
return all_data
|
||||
|
||||
def save_json(data, path, name):
|
||||
"""把整理好的資料存成JSON檔案"""
|
||||
# 先建立放翻譯檔的目錄(如果不存在就自動創建)
|
||||
translate_dir = os.path.join(path, "translate")
|
||||
def save_centralized_json(data, root_path):
|
||||
"""將合併後的翻譯文件保存到根目錄的translate資料夾"""
|
||||
translate_dir = os.path.join(root_path, "translate")
|
||||
os.makedirs(translate_dir, exist_ok=True)
|
||||
|
||||
# 組合完整檔案路徑
|
||||
json_path = os.path.join(translate_dir, name)
|
||||
# 寫入JSON格式(保持非ASCII字原樣顯示)
|
||||
with open(json_path, "w", encoding="utf-8") as f:
|
||||
json.dump(data, f, ensure_ascii=False, indent=2)
|
||||
|
||||
# 合併並保存三種類型文件
|
||||
for file_type in ['normal', 'special', 'namedesc']:
|
||||
merged = {}
|
||||
# 將不同目錄的內容合併到單一字典
|
||||
for dir_path, content in data[file_type].items():
|
||||
merged.update(content)
|
||||
|
||||
if merged:
|
||||
file_name = f"translation_{file_type}.json"
|
||||
file_path = os.path.join(translate_dir, file_name)
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
json.dump(merged, f, ensure_ascii=False, indent=2)
|
||||
print(f"✔ 已生成合併翻譯文件:{file_name}")
|
||||
|
||||
def walk_and_process(root="."):
|
||||
"""開始掃描整個資料夾結構,找出需要處理的目錄"""
|
||||
# 走訪所有子目錄
|
||||
for dirpath, dirnames, filenames in os.walk(root):
|
||||
# 檢查目錄裡是否有txt檔案
|
||||
txts_in_dir = [f for f in filenames if f.endswith(".txt")]
|
||||
if not txts_in_dir:
|
||||
continue # 跳過沒有txt檔的目錄
|
||||
|
||||
# 收集三類文本資料
|
||||
normal, special, namedesc = collect_texts_from_txt(dirpath)
|
||||
|
||||
# 分別儲存不同類型的翻譯文件
|
||||
if normal:
|
||||
save_json(normal, dirpath, "translation.json")
|
||||
print(f"✔ 已生成 translation.json 於 {dirpath}") # 提示
|
||||
if special:
|
||||
save_json(special, dirpath, "translation_special.json")
|
||||
print(f"✔ 已生成 translation_special.json 於 {dirpath}")
|
||||
if namedesc:
|
||||
save_json(namedesc, dirpath, "translation_namedesc.json")
|
||||
print(f"✔ 已生成 translation_namedesc.json 於 {dirpath}")
|
||||
"""主處理流程"""
|
||||
print(f"🔍 開始掃描根目錄:{os.path.abspath(root)}")
|
||||
|
||||
# 收集所有文本資料
|
||||
all_texts = collect_all_texts(root)
|
||||
|
||||
# 保存合併後的翻譯文件
|
||||
save_centralized_json(all_texts, root)
|
||||
|
||||
print("\n🏁 已完成所有文本收集!")
|
||||
print(f"📁 翻譯文件統一存放於:{os.path.join(root, 'translate')}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
walk_and_process()
|
||||
print("\n🏁 文本收集作業完成!") # 結尾提示
|
||||
walk_and_process()
|
File diff suppressed because it is too large
Load Diff
@ -1,145 +0,0 @@
|
||||
{
|
||||
"Acts.txt__1": "ACT",
|
||||
"Acts.txt__2": "Not magic. Does many things.",
|
||||
"Acts.txt__5": "Check",
|
||||
"Acts.txt__6": "See enemy info.\\nDoes not use a\\nturn.",
|
||||
"Acts.txt__7": "Allows to see enemy info, does not use a turn in battle.",
|
||||
"Acts.txt__10": "Apprehend",
|
||||
"Acts.txt__11": "Attempts to\\ncapture enemy.",
|
||||
"Acts.txt__12": "Attempts to capture the criminal and bring them back to the Dark Jail.",
|
||||
"Acts.txt__15": "Non-Lethal Shot",
|
||||
"Acts.txt__16": "Damage + leaves\\nalive with 1 HP.",
|
||||
"Acts.txt__17": "Shoots a rubber pellet that does low damage. Cannot kill, leaving the target with 1 HP.",
|
||||
"Acts.txt__20": "Healing Bell",
|
||||
"Acts.txt__21": "Restores some\\nHP.",
|
||||
"Acts.txt__22": "Casts a soothing magic bell, which heals allies. Scales with MAGIC.",
|
||||
"Acts.txt__25": "Blaring Siren",
|
||||
"Acts.txt__26": "Enemies focuses\\non Axis.",
|
||||
"Acts.txt__27": "Sounds off a really annoying alarm that makes all enemies target Axis this turn.",
|
||||
"Acts.txt__30": "Executioner Hit",
|
||||
"Acts.txt__31": "Cruel damage.\\n",
|
||||
"Acts.txt__32": "High damage. Executes enemies.\\nCan only be used on those deserving Justice.",
|
||||
"Acts.txt__35": "Diamond Barrier",
|
||||
"Acts.txt__36": "Casts a diamond shaped barrier around the SOUL, preventing one hit of damage.",
|
||||
"Acts.txt__37": "Negates 1\\nHit.",
|
||||
"Acts.txt__40": "Foxfire",
|
||||
"Acts.txt__41": "Casts a flame bomb that deals fire damage to an enemy. Scales with MAGIC.",
|
||||
"Acts.txt__42": "Damages enemy\\nwith fire.",
|
||||
"Acts.txt__45": "Homerun",
|
||||
"Acts.txt__46": "Swing your weapon like a bat, launching enemies away.",
|
||||
"Acts.txt__47": "Heavy damage.",
|
||||
"Acts.txt__50": "Healing Sonata",
|
||||
"Acts.txt__51": "A soothing magic song that heals the entire party. Scales with MAGIC.",
|
||||
"Acts.txt__52": "Party wide heal.",
|
||||
"Acts.txt__55": "Strnglng Threads",
|
||||
"Acts.txt__56": "Conjures multiple etherial threads that will strangle the life out of anything.",
|
||||
"Acts.txt__57": "High damage to\\none enemy.",
|
||||
"Acts.txt__60": "Dancing Feet",
|
||||
"Acts.txt__61": "Melody hits an enemy multiple times with a flurry of kicks.",
|
||||
"Acts.txt__62": "Multiple damage\\nto one enemy.",
|
||||
"Acts.txt__65": "Talk",
|
||||
"Acts.txt__68": "[img=13]res://Sprites/Menus/Menu Sprites/KanakoIcon.tres[/img] Hug",
|
||||
"Acts.txt__71": "[img=13]res://Sprites/Menus/Menu Sprites/KanakoIcon.tres[/img] [color=#f06982]K-Action[/color]",
|
||||
"Acts.txt__74": "[img=13]res://Sprites/Menus/Menu Sprites/AxisIcon.tres[/img] [color=#00ab68]A-Action[/color]",
|
||||
"Acts.txt__77": "Heat Wave",
|
||||
"Acts.txt__78": "Axis shoots out a strong heat wave off his exaust, burning all enemies in the field.",
|
||||
"Acts.txt__79": "Damages all\\nenemies.",
|
||||
"Acts.txt__82": "Boost Spray",
|
||||
"Acts.txt__83": "Shoots out a spray over the party which temporarly boosts AT.",
|
||||
"Acts.txt__84": "PARTY AT UP\\nfor 3 turns.",
|
||||
"Acts.txt__87": "Healing Shower",
|
||||
"Acts.txt__88": "Shoots out a healing liquid over the party, healing a small amount of HP.",
|
||||
"Acts.txt__89": "Heals party\\na bit.",
|
||||
"Acts.txt__92": "Unnerve Gas",
|
||||
"Acts.txt__93": "Shoots out a grenade full of a strange gas that lowers an enemy's DF temporarly.",
|
||||
"Acts.txt__94": "ENEMY DF DOWN\\nfor 3 turns.",
|
||||
"Acts.txt__97": "Avoid",
|
||||
"Acts.txt__100": "Spare",
|
||||
"Acts.txt__103": "Shapen",
|
||||
"Acts.txt__106": "Rub",
|
||||
"Acts.txt__109": "Berate",
|
||||
"Acts.txt__112": "Soothe",
|
||||
"Acts.txt__115": "Befriend",
|
||||
"Acts.txt__118": "Insult",
|
||||
"Acts.txt__121": "Taunt",
|
||||
"Acts.txt__124": "[img=13]res://Sprites/Menus/Menu Sprites/KanakoIcon.tres[/img] Encourage",
|
||||
"Acts.txt__125": "Attack UP\\nthis turn.",
|
||||
"Acts.txt__128": "Convince",
|
||||
"Acts.txt__131": "Cheer Up",
|
||||
"Acts.txt__134": "Clean Up",
|
||||
"Acts.txt__137": "Mess Up",
|
||||
"Acts.txt__140": "[img=13]res://Sprites/Menus/Menu Sprites/KanakoIcon.tres[/img] Brace",
|
||||
"Acts.txt__141": "PARTY DEF UP\\nfor 3 turns",
|
||||
"Acts.txt__144": "Talk Down",
|
||||
"Acts.txt__147": "[img=13]res://Sprites/Menus/Menu Sprites/KanakoIcon.tres[/img] Plead",
|
||||
"Acts.txt__150": "[img=13]res://Sprites/Menus/Menu Sprites/KanakoIcon.tres[/img] Plead",
|
||||
"Acts.txt__153": "Ask Forgiveness",
|
||||
"Acts.txt__156": "Cover Ears",
|
||||
"Acts.txt__159": "Shush",
|
||||
"Acts.txt__162": "Ignore",
|
||||
"Acts.txt__165": "Paradox",
|
||||
"Acts.txt__168": "Request",
|
||||
"Acts.txt__171": "Oil Up",
|
||||
"Acts.txt__174": "Spin Gear",
|
||||
"Acts.txt__177": "Spin Around",
|
||||
"Acts.txt__180": "Press Down",
|
||||
"Acts.txt__183": "Refill",
|
||||
"Acts.txt__186": "Pet",
|
||||
"Acts.txt__189": "[img=13]res://Sprites/Menus/Menu Sprites/AxisIcon.tres[/img] Fix",
|
||||
"Acts.txt__192": "Refuel",
|
||||
"Acts.txt__195": "Straighten Up",
|
||||
"Acts.txt__198": "Act Disorderly",
|
||||
"Enemies.txt__1": "Test Enemy",
|
||||
"Enemies.txt__5": "Penceller",
|
||||
"Enemies.txt__9": "Eraserhead",
|
||||
"Enemies.txt__13": "Warden",
|
||||
"Enemies.txt__17": "Pennilton",
|
||||
"Enemies.txt__21": "Mopper",
|
||||
"Enemies.txt__25": "Bearing",
|
||||
"Enemies.txt__29": "Ringo",
|
||||
"Enemies.txt__33": "Foxlace",
|
||||
"Enemies.txt__37": "Axis",
|
||||
"Enemies.txt__41": "Gearzerd",
|
||||
"Enemies.txt__45": "Staplete",
|
||||
"Enemies.txt__49": "MC Toster",
|
||||
"Enemies.txt__53": "BunBun",
|
||||
"Enemies.txt__57": "The Judge",
|
||||
"Enemies.txt__61": "Wrencher",
|
||||
"Enemies.txt__65": "Drill-Er 3000",
|
||||
"Enemies.txt__69": "Straight Edge",
|
||||
"Items.txt__1": "Cowboy Hat",
|
||||
"Items.txt__4": "Ball of Junk",
|
||||
"Items.txt__7": "Kanako's Phone",
|
||||
"Items.txt__11": "Ketsukane Heirloom",
|
||||
"Items.txt__14": "Red Letter",
|
||||
"Items.txt__17": "Revive Mint",
|
||||
"Items.txt__28": "[img]res://Sprites/Menus/Menu Sprites/StatDef.tres[/img] Golden Bell",
|
||||
"Items.txt__41": "[img]res://Sprites/Menus/Menu Sprites/StatDef.tres[/img] Safety Vest",
|
||||
"Items.txt__53": "[img]res://Sprites/Menus/Menu Sprites/StatDef.tres[/img] Safety Goggles",
|
||||
"Items.txt__65": "[img]res://Sprites/Menus/Menu Sprites/StatDef.tres[/img] Fox Necklace",
|
||||
"Items.txt__77": "[img]res://Sprites/Menus/Menu Sprites/StatKanabo.tres[/img] Fox Staff",
|
||||
"Items.txt__88": "[img]res://Sprites/Menus/Menu Sprites/StatKanabo.tres[/img] Big Screwdriver",
|
||||
"Items.txt__100": "[img]res://Sprites/Menus/Menu Sprites/StatGlove.tres[/img] Steam Glove",
|
||||
"Items.txt__110": "[img]res://Sprites/Menus/Menu Sprites/StatGlove.tres[/img] Robot Fist",
|
||||
"Items.txt__121": "[img]res://Sprites/Menus/Menu Sprites/StatGlove.tres[/img] Guardian Mitt",
|
||||
"Items.txt__131": "[img]res://Sprites/Menus/Menu Sprites/StatDef.tres[/img] Shiny Medal",
|
||||
"Items.txt__142": "[img]res://Sprites/Menus/Menu Sprites/StatDef.tres[/img] Bear Pin",
|
||||
"Items.txt__155": "Tension Bit",
|
||||
"Items.txt__160": "Tension Gem",
|
||||
"Items.txt__165": "Tension MAX",
|
||||
"Items.txt__170": "Brick Candy",
|
||||
"Items.txt__182": "Pop Rock",
|
||||
"Items.txt__194": "[img]res://Sprites/Menus/Menu Sprites/StatKanabo.tres[/img] Wooden Kanabo",
|
||||
"Items.txt__206": "[img]res://Sprites/Menus/Menu Sprites/StatGun.tres[/img] Cork Pistol",
|
||||
"Items.txt__218": "[img]res://Sprites/Menus/Menu Sprites/StatGun.tres[/img] Space Rifle",
|
||||
"Items.txt__230": "Wanted Posters",
|
||||
"Items.txt__234": "[img]res://Sprites/Menus/Menu Sprites/StatGun.tres[/img] Peashooter",
|
||||
"Items.txt__246": "[img]res://Sprites/Menus/Menu Sprites/StatKanabo.tres[/img] Softball Bat",
|
||||
"Items.txt__257": "Homemade Lunch",
|
||||
"Items.txt__260": "King's Feast",
|
||||
"Letters.txt__1": "Come to Mo's!",
|
||||
"Letters.txt__6": "From Kanako: Cole!",
|
||||
"Letters.txt__11": "From Virgil: Partner...",
|
||||
"Letters.txt__15": "Crumpled Note",
|
||||
"Letters.txt__21": "Noise Complaint"
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user