Copy disabled (too large)
Download .txt
Showing preview only (10,285K chars total). Download the full file to get everything.
Repository: mikualpha/master-duel-chinese-switch
Branch: master
Commit: 3efe10ef38b3
Files: 31
Total size: 26.1 MB
Directory structure:
gitextract_h462tnam/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug.md
│ │ └── 功能建议.md
│ └── workflows/
│ └── flet-build.yml
├── .gitignore
├── LICENSE
├── README.md
├── api.py
├── crack_key.py
├── decrypt.py
├── encrypt.py
├── hint.py
├── index.py
├── interface.py
├── move.py
├── pack.py
├── process.py
├── release.ps1
├── requirements.txt
├── resources/
│ ├── 25946b17_custom
│ ├── 7a7d18a0_custom
│ ├── SDFWordsList.txt
│ ├── card_api_cache.json
│ ├── da15c88f_custom
│ └── f36fce47_custom
├── resources_dev/
│ └── old_card_cache.json
├── search.py
├── test.py
├── translate.py
├── unity/
│ └── uncompressed.tpk
├── unpack.py
└── utils.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bug.md
================================================
---
name: BUG
about: 提交BUG反馈
title: "[BUG] "
labels: bug
assignees: ''
---
**BUG描述**
如何发现的这个BUG、BUG具体表现、复现这个BUG的可能步骤,etc.
提出问题之前请先查看README的FAQ中是否包含可能有帮助的答案。
注意:本项目不负责处理翻译用语层面的问题,此类具体问题请直接向[API站点](https://ygocdb.com)管理方反馈。
**截图**
请提供至少一张截图以帮助定位问题。
对于安装类型的问题,请额外附带一张补丁所在目录的文件管理器截图。
**系统及软件版本**
请提供操作系统版本及所使用的补丁版本。
若使用的补丁是Latest版本,请检查是否有Pre-release,若有可尝试安装。
================================================
FILE: .github/ISSUE_TEMPLATE/功能建议.md
================================================
---
name: 功能建议
about: 目前未支持功能的建议(字体问题请提BUG)
title: "[Feature] "
labels: enhancement
assignees: ''
---
**描述产生功能需要的场景**
对产生问题的场景进行清晰简洁的描述。比如为什么需要某个功能支持?
**添加的功能点建议**
清晰简洁地描述希望添加的功能。包括希望达到怎样的效果、能想到的可能实现该效果的手段/方式等。
**可替代方案**
该功能点是否有其它可替代方案?(对于有可替代方案的功能建议,开发优先级将降低)
**附加上下文**
请在此处添加有关功能请求的任何其它描述或截图。
================================================
FILE: .github/workflows/flet-build.yml
================================================
name: Flet Build
on:
release:
types: [created]
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Dependencies cache
uses: actions/cache@v4.2.3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
pip install -r requirements.txt
- name: Sanitize version name
shell: pwsh
run: |
$versionName = "${{ github.ref_name }}"
$versionStripped = $versionName -replace "^v", ""
echo "version=$versionStripped" >> $env:GITHUB_ENV
- name: Package with flet
run: |
flet pack ".\interface.py" `
--add-data "unity;UnityPy/resources" `
--add-data "resources;resources" `
--name "MDTR_v${{ env.version }}" `
--icon "images/icon.png" `
--file-version ${{ env.version }}
- name: Upload release asset
uses: softprops/action-gh-release@v2
with:
files: dist/MDTR_v${{ env.version }}.exe
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .gitignore
================================================
src/**
output/**
dist
build
local_data
data.unity3d
*.spec
__pycache__
.idea
generated-*
*logs.txt
!.gitkeep
resources/*.py
================================================
FILE: LICENSE
================================================
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.
================================================
FILE: README.md
================================================
<h1 align="center">Master Duel 社区中文翻译补丁</h1>
<div align="center">





[原项目地址](https://gitee.com/fetiss/master-duel-chinese-switch) | [原发布页](https://www.bilibili.com/read/cv21869124) | [API来源](https://ygocdb.com/)
</div>
自2023年5月初版本起,MD修改了缓存文件的调用方式,原有的翻译补丁失效,故在原项目的基础上进行了修改。
本项目是在作者 [@叶lf](https://space.bilibili.com/23834819) / [@Timelic](https://space.bilibili.com/8664322) 工作的基础上进行的,在此表示感谢!另感谢 [@拓王神](https://space.bilibili.com/483116312) 对数据解析部分提供的支持。
## 使用方式
前往[Releases页面](https://github.com/mikualpha/master-duel-chinese-switch/releases)下载`MDTR_vx.x.x.exe`,同时参考本项目[Wiki](https://github.com/mikualpha/master-duel-chinese-switch/wiki)页面使用。
## 关于项目
本项目基于`AGPL-3.0`协议开源,任何分发、修改行为请务必遵守[开源协议](https://www.chinasona.org/gnu/agpl-3.0-cn.html)。本项目的Release页面为项目唯一发布源,不存在任何官方群组,不会在第三方平台发布可执行文件,不会在第三方平台提供任何购买、捐赠、打赏等付费入口,谨防木马病毒感染或上当受骗。
如果出现报错或闪退可提`issue`,**欢迎有兴趣的童鞋提PR~**
**若认为此项目对您有帮助可考虑给项目点个`Star`,谢谢~**
## 开发相关
本项目使用 `UnityPy` 解包,使用 `flet` 制作界面。编译环境为`Python 3.10`。
<div align="center">
<img src="./images/display.png" width="400">
</div>
#### 准备
```
pip install -r requirements.txt
```
#### 开发
无界面
```
python3 index.py
```
flet 界面
```
flet run interface.py
```
#### 打包
PowerShell:
```
./release.ps1
```
================================================
FILE: api.py
================================================
import json
import threading
from os import path
from typing import Callable, Literal, NoReturn, TypedDict, Union, Dict
from utils import get_resource_path, q2b_string
from functools import reduce
import requests
NameDesc = TypedDict("Card", {"name": str, "desc": str})
class UnifyChar:
@staticmethod
def unify_pendulum_desc(desc: str) -> str:
"""
统一各种灵摆的格式
样例:①...\n【灵摆效果】\n①...
"""
if not desc.startswith("←"): # 这种判断方式挺粗糙的
return desc # 不是灵摆就算了
separator = "【灵摆效果】"
ch_separator = "【怪兽效果】"
if desc.find(ch_separator) == -1:
ch_separator = "【怪兽描述】"
if desc.find(ch_separator) == -1:
ch_separator = "【Monster Effect】" # 怎么还有英文的啊 这是人能干出来的事吗
if desc.find(ch_separator) == -1:
ch_separator = "【Flavor Text】" # 居然还有这种无比阴间的...
if desc.find(ch_separator) == -1:
return desc # 还是找不到就算了
p_start = desc.find("→")
cn_separator_start = desc.find(ch_separator)
p_effect = desc[p_start + 1: cn_separator_start - 1].strip()
monster_effect = desc[cn_separator_start + len(ch_separator):].strip()
res = ""
res += monster_effect
if p_effect != "":
res = f"{res}\n{separator}\n{p_effect}"
return res
@staticmethod
def unify_separator(desc: str) -> str:
"""
按照原版处理分隔符
1. ①...\n【灵摆效果】\n①...
2. 召唤限制\n①
3. ① ②这些的前面不会有\r\n
"""
orders_without_first = ["②", "③", "④", "⑤", "⑥", "⑦"]
ch_separator = "【灵摆效果】"
for order in ["②", "③", "④", "⑤", "⑥", "⑦"]:
for prefix in ["\r\n", "\n", "\r"]:
desc = desc.replace(f"{prefix}{order}", order)
# 处理①
for prefix in ["\r\n", "\n", "\r"]:
desc = desc.replace(f"。{prefix}①", "。①")
desc = desc.replace("\r\n", "\n").strip()
# 在●后面紧跟的一个②或者③,它们的前面有\n
parts: list[str] = [f"{'●' if i else ''}{x}" for i, x in enumerate(desc.split("●"))]
for part in parts:
if not part.startswith('●'):
continue
index = len(part) - 1
for order in orders_without_first:
if (i := part.find(order)) != -1:
index = min(index, i)
if (i := part.find("【灵摆效果】")) != -1:
index = min(index, i)
if index != len(part) - 1 and part[index] != ch_separator[0]:
parts[parts.index(part)] = f"{part[:index]}\n{part[index:]}"
# merge parts
return reduce(lambda x, y: f"{x}{y}", parts)
_unify_name_dict = {
'<': '<', # 码丽丝<兵卒>睡鼠 等卡片的长度在不同语言中会有异议,故在name字段统一改用全角
'>': '>',
'-': '-',
'=': '=',
'·': '・',
}
@staticmethod
def unify_name(name: str) -> str:
for src_char, dst_char in UnifyChar._unify_name_dict.items():
name = name.replace(src_char, dst_char)
return name
@staticmethod
def unify_desc(desc: str) -> str:
desc = UnifyChar.unify_separator(UnifyChar.unify_pendulum_desc(desc))
desc = UnifyChar.unify_name(desc)
return desc
class CardsCache(TypedDict):
name: dict[Literal["jp_name", "cn_name", "md_name"], str]
desc: dict[Literal["zh-cn", "custom"], str]
class CacheManager(object):
CACHE_FILE_NAME = 'card_api_cache.json'
ABNORMAL_CARD_START_ID = 40000 # 临时卡片不加入缓存
cardCache: Dict[str, dict] = {}
_lock = threading.Lock() # 全局锁,保护所有读写操作
@classmethod
def add_cache(cls, cid: int, jp_name: str = '', cn_name: str = '',
md_name: str = '', original_desc: str = '', custom_desc: str = ''):
if cid >= cls.ABNORMAL_CARD_START_ID:
print('Temporary card, skip save:', cid, md_name, cn_name)
return
if md_name == '':
print('no name card, skip save:', cid, cn_name)
return
cache_obj = {
"name": {
"jp_name": jp_name,
"cn_name": cn_name,
"md_name": md_name
},
"desc": {
"zh-cn": original_desc,
"custom": custom_desc
}
}
with cls._lock:
cls.cardCache[str(cid)] = cache_obj
print('Add Cache:', cid, md_name, '->', cn_name, len(cls.cardCache))
cls._save_cache_locked() # 内部调用必须在锁内
@classmethod
def _save_cache_locked(cls):
"""在锁内调用"""
file_path = path.join(get_resource_path("resources"), cls.CACHE_FILE_NAME)
with open(file_path, "w", encoding="utf-8") as f:
f.write(json.dumps(cls.cardCache, ensure_ascii=False, separators=(',', ':')))
@classmethod
def save_cache(cls):
with cls._lock:
cls._save_cache_locked()
@classmethod
def load_cache(cls) -> Dict[str, dict]:
with cls._lock:
if len(cls.cardCache) > 0:
return cls.cardCache
try:
file_path = path.join(get_resource_path("resources"), cls.CACHE_FILE_NAME)
with open(file_path, encoding="utf-8") as f:
file_content = f.read().strip()
if len(file_content) <= 0:
return cls.cardCache
cls.cardCache = json.loads(file_content)
except Exception:
cls.cardCache = {}
return cls.cardCache
def api_local(cid: int) -> Union[NameDesc, None]:
cards: dict[str, CardsCache] = CacheManager.load_cache()
def helper(card_id: int) -> Union[NameDesc, None]:
if str(card_id) in cards:
x: CardsCache = cards.get(str(card_id), None)
if x is None:
return None
# if dev_mode: # 刷新一下游戏内翻译
# CacheManager.add_cache(cid,
# jp_name=x['name']['jp_name'],
# cn_name=x['name']['cn_name'],
# md_name=name_md,
# original_desc=desc_md,
# custom_desc=x['desc']['custom'])
return {
"name": UnifyChar.unify_name(x["name"]["cn_name"]),
"desc": x["desc"]["custom"],
}
else:
return None
try:
return helper(cid)
except Exception as e:
# raise e
return None
class CardApiRequest:
def __init__(self):
self._lock = threading.Lock()
self._session = None
def _get_session(self):
if self._session is None:
with self._lock:
if self._session is None: # double-check
self._session = requests.Session()
return self._session
def api(self, search: str, cid: int, desc_src: str, network_error_cb: Callable[[], None] = lambda: None,
dev_mode: bool = False,
) -> Union[NameDesc, None, NoReturn]:
if not search: # 没卡名查什么- -
return None
if search.endswith("衍生物"):
return None # YGOCDB不收录衍生物
# 全角转半角
# search = q2b_string(search)
search = search.replace(' ', ' ') # 处理NBSP空格问题
session = self._get_session()
def helper(search_keyword: str) -> Union[NameDesc, None, NoReturn]:
url = "https://ygocdb.com/api/v0/?search="
r = session.get(url + search_keyword)
if r.status_code != 200:
raise ConnectionError()
result = r.json()["result"]
if len(result) == 0:
return None # 找不到 直接返回 None
item = None
for card_item in result:
if card_item["cid"] == cid or card_item["md_name"] == search:
item = card_item
break
if not item:
return None
name: str = item["cn_name"]
desc: str = item["text"]["desc"]
if (p_desc := item["text"]["pdesc"]) != "":
desc = f"{desc}\n【灵摆效果】\n{p_desc}"
name = UnifyChar.unify_name(name) # 修正名字显示不正确的各种问题
desc = UnifyChar.unify_desc(desc) # 修正灵摆...修正\r\n
if dev_mode:
CacheManager.add_cache(cid,
jp_name=item.get('jp_name', ''),
cn_name=item.get('cn_name', ''),
md_name=item.get('md_name', ''),
original_desc=desc_src,
custom_desc=desc)
return {"name": name, "desc": desc}
try:
result = helper(str(cid))
if not result:
result = helper(search)
return result
except Exception as e:
try:
return helper(search)
except:
network_error_cb()
return None
if __name__ == "__main__":
# 测试
print(
[
UnityChar.unify_separator(
UnityChar.unify_pendulum_desc(
"""
①:1回合1次,可以从以下效果选择1个发动。\r\n●以自己场上1只「X-首领加农」为对象,把这张卡当作装备卡使用给那只怪兽装备。装备怪兽被战斗・效果破坏的场合,作为代替把这张卡破坏。\r\n●装备的这张卡特殊召唤。\r\n【灵摆效果】\r\n①:装备怪兽的攻击力・守备力上升400。
"""
)
)
]
)
print([UnityChar.unify_separator(
"①:1回合1次,可以从以下效果选择1个发动。\r\n●以自己场上1只「X-首领加农」为对象,把这张卡当作装备卡使用给那只怪兽装备。装备怪兽被战斗・效果破坏的场合,作为代替把这张卡破坏。\r\n●装备的这张卡特殊召唤。\r\n【灵摆效果】\r\n②:装备怪兽的攻击力・守备力上升400。")])
print([UnityChar.unify_separator(
"①:1回合1次,可以从以下效果选择1个发动。\r\n●以自己场上1只「X-首领加农」为对象,把这张卡当作装备卡使用给那只怪兽装备。装备怪兽被战斗・效果破坏的场合,作为代替把这张卡破坏。\r\n●装备的这张卡特殊召唤。\r\n②:装备怪兽的攻击力・守备力上升400。●装备的这张卡特殊召唤。\r\n\r\n③:装备怪兽的攻击力・守备力上升400。")])
================================================
FILE: crack_key.py
================================================
import zlib
def crack_key(b: bytes) -> int:
def helper(b: bytes, m_iCryptoKey):
data = bytearray(b)
for i in range(len(data)):
v = i + m_iCryptoKey + 0x23D
v *= m_iCryptoKey
v ^= i % 7
data[i] ^= v & 0xFF
zlib.decompress(data)
for i in range(0xFF):
m_iCryptoKey = i
try:
helper(b, m_iCryptoKey)
return m_iCryptoKey
except Exception as e:
pass
return -1
================================================
FILE: decrypt.py
================================================
import zlib
from typing import cast
from hint import CardData
def card_decrypt(unpacked: CardData, m_iCryptoKey: int) -> CardData:
result: CardData = cast(CardData, {"zh-cn": {}, "ja-jp": {}})
for lang in unpacked.keys():
for name, b in unpacked[lang].items():
data = bytearray(cast(bytes, b))
for i in range(len(data)):
v = i + m_iCryptoKey + 0x23D
v *= m_iCryptoKey
v ^= i % 7
data[i] ^= v & 0xFF
result[lang][name] = zlib.decompress(data)
return result
================================================
FILE: encrypt.py
================================================
import re
import zlib
from typing import TypedDict, TypeVar, cast
from hint import CardData, CardEncryptedData, CardRawData
from utils import flatten
class Others(TypedDict):
CARD_INDX: bytes
CARD_NAME: bytes
CARD_DESC: bytes
class PartsOfEachCard(TypedDict):
slice: list[int]
parts: list[list[int]]
def gen_others(card_raw_data: CardRawData, m_iCryptoKey: int) -> Others:
"""
生成 Name Desc Indx
"""
CARD_Name_json: list[str] = [item["name"]["custom"] for item in card_raw_data]
CARD_Desc_json: list[str] = [item["desc"]["custom"] for item in card_raw_data]
merge_string: dict[str, str] = {"name": "\u0000" * 8, "desc": "\u0000" * 8}
name_indx = [0]
desc_indx = [0]
for i in range(len(CARD_Name_json)): # 这里是因为英语的奇怪bug desc比name少一个
name = CARD_Name_json[i]
desc = CARD_Desc_json[i]
def helper(
sentence: str,
indx: list[int],
name_or_desc: str,
merge_string: dict[str, str],
) -> None:
length = len(sentence.encode("utf-8"))
if i == 0:
length += 8
space_len = 4 - length % 4 # 就是拿到余数
indx.append(indx[-1] + length + space_len) # 记录indx
if name_or_desc == "name":
merge_string["name"] += sentence + "\u0000" * space_len
else:
merge_string["desc"] += sentence + "\u0000" * space_len
helper(name, name_indx, "name", merge_string)
helper(desc, desc_indx, "desc", merge_string)
name_indx = [4, 8] + name_indx[1:]
desc_indx = [4, 8] + desc_indx[1:]
CARD_Indx: list[int] = []
for i in range(len(name_indx)):
CARD_Indx.append(name_indx[i])
CARD_Indx.append(desc_indx[i])
def intTo4Hex(num: int) -> list[int]:
res: list[int] = []
for _ in range(4):
res.append(num % 256)
num //= 256
return res
CARD_Indx_merge: list[int] = []
for item in CARD_Indx:
CARD_Indx_merge.extend(intTo4Hex(item))
# 直接加密
result: Others = {"CARD_INDX": bytes(), "CARD_NAME": bytes(), "CARD_DESC": bytes()}
result["CARD_NAME"] = encrypt(
m_iCryptoKey, bytes(merge_string["name"], encoding="utf-8")
)
result["CARD_DESC"] = encrypt(
m_iCryptoKey, bytes(merge_string["desc"], encoding="utf-8")
)
result["CARD_INDX"] = encrypt(m_iCryptoKey, bytes(CARD_Indx_merge))
return result
# * part 指的是每张卡的分段,如[0, 100, 100, 200]
# * segment 指的是每张卡的分段后的文本,如["①:...", "②:...", "③:..."]
class CardSegment(TypedDict):
n_part: int # 分段数
is_pendulum: bool # 是否是灵摆卡
parts_zh_cn: list[int] # zh-cn分段 也就是原文分段
segments_zh_cn: list[str] # zh-cn分段文本 也就是原文分段文本
parts_custom: list[int] # 自定义分段
segments_custom: list[str] # 自定义分段文本
class SplitResult(TypedDict):
n_part: int
parts: list[int]
segments: list[str]
def split(desc: str, n_part: int = -1) -> SplitResult:
starts = [m.start() for m in re.finditer("((①|②|③|④|⑤|⑥|⑦)(:))|(【灵摆效果】)|(●)", desc)] + [len(desc)]
parts_int: list[list[int]] = [] # [[0, 101], [101, 200], [200, 300], ...]
options_int: list[list[int]] = [] # 带有●的列表,规范中要求后置
for i in range(len(starts) - 1):
next_index = i + 1
if desc[starts[i]] != '●': # 检查有无列表式选项
while next_index < len(starts) - 1 and desc[starts[next_index]] == '●':
next_index += 1 # 将文本涵盖这个选项
start_pos = starts[i]
end_pos = starts[next_index]
if desc[end_pos - 1] == '\n': # 不包含换行符
end_pos -= 1
if desc[start_pos] == '●':
options_int.append([start_pos, end_pos])
else:
parts_int.append([start_pos, end_pos])
parts_int += options_int # 加入后置元素
parts_int = list(filter(lambda x: desc[x[0]] != "【", parts_int)) # 【灵摆效果】本质上是没用的
parts: list[list[int]] = [
[len(desc[:start].encode("UTF-8")), len(desc[:end].encode("UTF-8"))]
for start, end in parts_int
]
if n_part != -1 and n_part != len(parts):
# 如果分段数不对,就让每个段都是从头到尾的一样长度
parts = [[0, len(desc.encode("UTF-8"))] for _ in range(n_part)]
assert len(parts) == n_part
return {
"n_part": len(parts),
"parts": flatten(parts),
"segments": [desc[start:end] for start, end in parts_int],
}
if __name__ == "__main__":
split(r"")
def gen_part(
card_data: CardData, card_raw_data: CardRawData, m_iCryptoKey: int
) -> bytes:
"""
根据pidx生成part
"""
# card_part 的十进制list(原版)
card_part_full: list[int] = [int(x) for x in card_data["zh-cn"]["CARD_PART"]]
# card_part 之中的变量二合一,然后删掉了前两个0
card_part = [
card_part_full[i] + card_part_full[i + 1] * 256
for i, _ in enumerate(card_part_full)
if i % 2 == 0
][2:]
# card_pidx 的十进制list
card_pidx_full: list[int] = [int(x) for x in card_data["zh-cn"]["CARD_PIDX"]]
# card_pidx 二元组的第一个元素
card_pidx_prefix: list[int] = [
card_pidx_full[i] + card_pidx_full[i + 1] * 256
for i, _ in enumerate(card_pidx_full)
if i % 4 == 0
][1:]
# card_pidx 二元组的第二个元素
card_pidx_postfix: list[int] = [
card_pidx_full[i] // 16 for i, _ in enumerate(card_pidx_full) if i % 4 == 3
][1:]
# 下面验证发现的规律
# * 第一:pidx的二元组的数量等于游戏中卡片数量,也就是说每个二元组对应一张卡
assert len(card_pidx_prefix) == len(card_raw_data)
# * 第三:pidx的二元组的前一位和下一个非空二元组的前一位的差值,就是当前二元组的后一位的值
# * 修正:灵摆卡的pidx的后一位是1,前一位的结果才是真正的分段数
# 所以,需要用二元组的前一位和后一位来合成真正的分段数
card_pidx: list[int] = [0]
last_idx: int = 0
for i, e in enumerate(card_pidx_prefix):
if e:
card_pidx[last_idx] = e - card_pidx[last_idx]
card_pidx.append(e)
last_idx = i + 1
else:
card_pidx.append(0)
last_desc = card_raw_data[last_idx - 1]["desc"]["zh-cn"]
# 最后一张是灵摆卡的话 只能手动修正
# 中文有可能掺杂英文 真让人迷惑...
if last_desc.find("【灵摆效果】") != -1 and last_desc.find("[Pendulum Effect]") != -1:
card_pidx[last_idx] = card_pidx_postfix[last_idx - 1]
else:
card_pidx[last_idx] = split(last_desc)["n_part"]
del last_idx, last_desc
card_pidx = card_pidx[1:]
# for i in range(len(card_pidx)):
# if card_pidx[i] != card_pidx_postfix[i]:
# assert "灵摆效果" in card_raw_data[i]["desc"]["zh-cn"]
# 接下来根据card_pidx来将card_part分段,里面每一项是一张卡的part
part_each_card: list[list[int]] = []
start = 0
for n_part in card_pidx:
part_each_card.append(card_part[start : start + n_part * 2])
start += n_part * 2
# 验证这种分段确实是正确的
assert any([(part[0] < part[-1]) for part in part_each_card if part])
card_segs: list[CardSegment] = []
# 接下来对每张卡的desc custom计算新的分段,也就是说CardSegment
for i, item in enumerate(card_raw_data):
if not card_pidx[i]:
continue
desc_zh_cn = item["desc"]["zh-cn"]
desc_custom = item["desc"]["custom"]
seg: CardSegment = {
"n_part": card_pidx[i],
"is_pendulum": card_pidx_postfix[i] != card_pidx[i], # 后期应该改成判断【灵摆效果】
"parts_zh_cn": part_each_card[i],
"segments_zh_cn": [],
"parts_custom": [],
"segments_custom": [],
}
# 验证
# [[1, 10], [10, 20], ...]
tmp: list[list[int]] = [
[part_each_card[i][j], part_each_card[i][j + 1]]
for j, _ in enumerate(part_each_card[i])
if j % 2 == 0
]
seg["segments_zh_cn"] = [
desc_zh_cn.encode("UTF-8")[start:end].decode("UTF-8") for start, end in tmp
]
split_result = split(desc_custom, seg["n_part"])
seg["parts_custom"] = split_result["parts"]
seg["segments_custom"] = split_result["segments"]
# if item['name']['custom'] in ("增殖的G", '灰流丽', 'Y-龙头'):
# print(seg)
card_segs.append(seg)
# 合成新的card_part_full即可: 先加上俩0,然后一变二
card_part_full_new: list[int] = flatten(
[
[y % 256, y // 256]
for y in [0, 0, *flatten([x["parts_custom"] for x in card_segs])]
]
)
# 最后是加密
return encrypt(m_iCryptoKey, bytes(card_part_full_new))
# return encrypt(m_iCryptoKey, card_data["zh-cn"]["CARD_PART"])
T = TypeVar("T")
def encrypt(m_iCryptoKey: int, b: bytes) -> bytes:
data = bytearray(zlib.compress(b))
for i in range(len(data)):
v = i + m_iCryptoKey + 0x23D
v *= m_iCryptoKey
v ^= i % 7
data[i] ^= v & 0xFF
return data
def card_encrypt(
card_data: CardData,
card_raw_data: CardRawData,
m_iCryptoKey: int,
custom_trans: bool = False,
) -> CardEncryptedData:
def e(b: bytes) -> bytes:
return encrypt(m_iCryptoKey, b)
result: CardEncryptedData = cast(CardEncryptedData, {})
result["CARD_PART"] = (
gen_part(card_data, card_raw_data, m_iCryptoKey)
if custom_trans
else e(card_data["zh-cn"]["CARD_PART"])
)
result["CARD_PIDX"] = e(card_data["zh-cn"]["CARD_PIDX"])
others = gen_others(card_raw_data, m_iCryptoKey)
result["CARD_NAME"] = (
others["CARD_NAME"] if custom_trans else e(card_data["zh-cn"]["CARD_NAME"])
)
result["CARD_DESC"] = (
others["CARD_DESC"] if custom_trans else e(card_data["zh-cn"]["CARD_DESC"])
)
result["CARD_INDX"] = (
others["CARD_INDX"] if custom_trans else e(card_data["zh-cn"]["CARD_INDX"])
)
return result
================================================
FILE: hint.py
================================================
from typing import TypedDict, Literal
FileName = Literal["CARD_INDX", "CARD_NAME", "CARD_DESC", "CARD_PART", "CARD_PIDX", "CARD_PROP"]
CardData = TypedDict(
"CardData", {"zh-cn": dict[FileName, bytes], "ja-jp": dict[FileName, bytes]}
)
CardRawDataName = TypedDict(
"CardRawDataName", {"ja-jp": str, "zh-cn": str, "custom": str}
)
CardRawDataDesc = TypedDict("CardRawDataName", {"zh-cn": str, "custom": str})
CardRawDataItem = TypedDict(
"CardRawDataItem", {"cid": int, "name": CardRawDataName, "desc": CardRawDataDesc}
)
CardRawData = list[CardRawDataItem]
PathIdDict = TypedDict("PathIdDict", {"ja-jp": dict[int, str], "zh-cn": dict[int, str]})
class CardEncryptedData(TypedDict):
CARD_INDX: bytes
CARD_NAME: bytes
CARD_DESC: bytes
CARD_PART: bytes
CARD_PIDX: bytes
class Status:
get_path_info: str = "拉取元数据..."
searching_file: str = "扫描文件中(需较长时间)..."
obtaining: str = "提取中"
unpacking: str = "解包中"
cracking: str = "轮询密钥中"
decrypting: str = "解密中"
processing: str = "处理中"
translating: str = "翻译中"
encrypting: str = "加密中"
packing: str = "打包中"
overriding: str = "覆写中"
success: str = "成功"
failed: str = "失败"
error_network: str = "拉取数据失败"
error_io: str = "无权限"
================================================
FILE: index.py
================================================
import json
from typing import Callable
from os import path
from crack_key import crack_key
from decrypt import card_decrypt
from encrypt import card_encrypt
from hint import CardRawData, Status
from move import copy_to_local, copy_to_original
from pack import card_pack
from process import card_process
from translate import TranslateHelper
from unpack import card_unpack
from utils import make_dir, get_resource_path, get_path_json
from search import search_card_obj_list
# PATH: 1f8db0dcd2e842df
file_list = { # Generate from search.py
'CN': {'CARD_Prop': '18eccba1', 'CARD_Desc': 'bc37a21f', 'CARD_Indx': 'cdeed859', 'Card_Part': 'cfea2071', 'Card_Pidx': 'd4d78835', 'CARD_Name': 'e9a1704d'}
}
def main(
path_game_root: str,
set_status: Callable[[str], None] = lambda _: print(_),
log: Callable[[str], None] = lambda _: print(_),
network_error_cb: Callable[[], None] = lambda: None,
custom_trans: bool = True,
custom_font: bool = False,
output_to_local: bool = False,
fix_missing_glyph: bool = False,
search_card_obj: bool = False,
dev_mode: bool = False,
):
try:
if search_card_obj: # 是否需要搜索文件
set_status(Status.searching_file)
file_list['CN'] = search_card_obj_list(path_game_root, log)
else:
for region in file_list.keys():
set_status(Status.get_path_info)
path_list = get_path_json('YGO_CARDPATH_' + region.upper() + '.json')
if path_list is None or len(path_list) <= 0:
set_status(Status.error_network)
else:
file_list[region] = path_list
# print(json.dumps(path_list))
make_dir(get_resource_path("output"))
# 首先 copy到本地
set_status(Status.obtaining)
path_data_unity3d = copy_to_local(path_game_root,
get_resource_path("src"),
file_list['CN'],
dev_mode=dev_mode)
set_status(Status.unpacking)
card_data = card_unpack(path_data_unity3d)
set_status(Status.cracking)
m_iCryptoKey = crack_key(card_data["zh-cn"]["CARD_NAME"])
# m_iCryptoKey = 95 # 现在为了减少时间先写死...
# print("m_iCryptoKey =", m_iCryptoKey)
set_status(Status.decrypting)
card_data = card_decrypt(card_data, m_iCryptoKey)
# for filename, data in card_data['zh-cn'].items():
# with open('./resources/' + filename + '.bin', 'wb') as f:
# f.write(data)
set_status(Status.processing)
card_raw_data = card_process(card_data)
# print('CardRawData:', card_raw_data)
if custom_trans:
set_status(Status.translating)
# 恢复则无需翻译
translate_helper = TranslateHelper(
card_raw_data,
progress_update_cb=(lambda _: None) if dev_mode else (lambda p: set_status(f"{Status.translating}: {p}")),
network_error_cb=network_error_cb,
dev_mode=dev_mode,
)
card_raw_data = translate_helper.card_translate()
set_status(Status.encrypting)
card_encrypt_data = card_encrypt(
card_data, card_raw_data, m_iCryptoKey, custom_trans=custom_trans
)
set_status(Status.packing)
card_pack(
card_encrypt_data, get_resource_path("src"), get_resource_path("output"), file_list['CN']
)
# 复制回去
set_status(Status.overriding)
copy_to_original(
path_game_root,
path_pack=get_resource_path("output"),
dir_font=get_resource_path("resources"),
file_list=file_list['CN'],
custom_font=custom_font,
custom_trans=custom_trans,
output_to_local=output_to_local,
fix_missing_glyph=fix_missing_glyph,
dev_mode=dev_mode
)
set_status(Status.success)
except IOError as e:
# 这儿对应无权限
print(e)
log(str(e))
set_status(Status.error_io)
except Exception as e:
# raise e
print(e)
log(str(e))
set_status(Status.failed)
if __name__ == "__main__":
# 测试
main(
r"F:\SteamLibrary\steamapps\common\Yu-Gi-Oh! Master Duel",
custom_trans=True,
custom_font=False,
fix_missing_glyph=False,
output_to_local=True, # 是否仅输出到本地
search_card_obj=False,
dev_mode=True,
)
================================================
FILE: interface.py
================================================
import time
from ctypes import alignment
import webbrowser
from os import path
from typing import Any
import flet as ft
from index import main as install_trans
from utils import get_logger, throttle
RELEASE_URL = "https://github.com/mikualpha/master-duel-chinese-switch"
def log(e: Any) -> None:
get_logger().error(e, stack_info=True)
def main(page: ft.Page):
# 设置页面基础信息
page.title = "No.86 卡片翻译切换"
# page.bgcolor = "#f0f0f0"
page.window.resizable = False
page.window.height = 410
page.window.width = 360
page.padding = 0
page.theme = ft.Theme(font_family="Microsoft YaHei")
page.window.title_bar_buttons_hidden = True
page.window.title_bar_hidden = True
page.dark_theme = ft.Theme(font_family="Microsoft YaHei")
page.theme_mode = ft.ThemeMode.DARK
page.update()
"""
设置标题栏
"""
page.add(
ft.Row(
[
ft.WindowDragArea(
ft.Container(
ft.Text(""), opacity=0, expand=True
),
expand=True,
),
ft.IconButton(
ft.icons.CLOSE,
icon_color="gray",
icon_size=15,
on_click=lambda _: page.window.close() and page.window.destroy(),
),
]
)
)
"""
dialog
"""
def showDialog(content: str | ft.Text, title_text: str = None, button_text: str = "好的"):
def close_dlg(_):
dlg.open = False
page.update()
if title_text:
dlg = ft.AlertDialog(
title=ft.Text(title_text),
content=ft.Text(content) if type(content) is str else content,
actions=[ft.TextButton(button_text, on_click=close_dlg)],
actions_alignment=ft.MainAxisAlignment.END,
)
else:
dlg = ft.AlertDialog(
content=ft.Text(content) if type(content) is str else content,
actions=[ft.TextButton(button_text, on_click=close_dlg)],
actions_alignment=ft.MainAxisAlignment.END,
)
page.overlay.append(dlg)
dlg.open = True
page.update()
"""
选择文件
"""
def pick_files_result(e: ft.FilePickerResultEvent):
if e.files:
if e.files[0].name == "masterduel.exe":
set_path_game_root(path.dirname(e.files[0].path))
showDialog("选择成功")
else:
showDialog("选择失败,请选择游戏目录下的masterduel.exe文件")
pick_files_dialog = ft.FilePicker(on_result=pick_files_result)
page.overlay.append(pick_files_dialog)
btn_style = ft.ButtonStyle(shape=ft.RoundedRectangleBorder(radius=10))
path_game_root: str = ""
btn_select_game_root = ft.Ref[ft.ElevatedButton]()
def set_path_game_root(p: str) -> None:
nonlocal path_game_root
path_game_root = p
page.client_storage.set("path_game_root", p)
if btn_select_game_root.current: # 按钮图标变化
btn_select_game_root.current.icon = ft.icons.CHECK
if p := page.client_storage.get("path_game_root"):
set_path_game_root(p)
"""
选择文件前的模态框
"""
def close_dlg(e):
dlg_modal.open = False
page.update()
def dlg_yes_callback(_):
pick_files_dialog.pick_files(
dialog_title="请选择游戏目录下的masterduel.exe文件", allowed_extensions=["exe"]
)
dlg_modal.open = False
page.update()
dlg_modal = ft.AlertDialog(
modal=True,
title=ft.Text("重要提示"),
content=ft.Text("请选择游戏目录下的masterduel.exe文件。\n不明白如何打开游戏目录请百度一下。"),
actions=[
ft.TextButton("取消", on_click=close_dlg),
ft.TextButton("好的", on_click=dlg_yes_callback),
],
actions_alignment=ft.MainAxisAlignment.END,
)
def open_dlg_modal(e):
page.overlay.append(dlg_modal)
dlg_modal.open = True
page.update()
"""
选项:翻译类型和字体
"""
use_custom_trans: bool = True
use_custom_font: bool = True
fix_missing_glyph: bool = True
output_to_local: bool = False
search_card_obj: bool = False
def on_click_c1(e: ft.FilePickerResultEvent):
nonlocal use_custom_trans
use_custom_trans = e.data == "true"
c1.label = "使用汉化组卡片翻译" if use_custom_trans else "使用官方简中卡片翻译"
c1.update()
def on_click_c2(e: ft.FilePickerResultEvent):
nonlocal use_custom_font
use_custom_font = e.data == "true"
c2.label = "使用隶书卡片字体" if use_custom_font else "使用楷书卡片字体"
c2.update()
def on_click_c3(e: ft.FilePickerResultEvent):
nonlocal fix_missing_glyph
fix_missing_glyph = e.data == "true"
c3.label = "修复部分生僻字缺字问题" if fix_missing_glyph else "不进行缺字问题修复"
c3.update()
def on_click_c4(e: ft.FilePickerResultEvent):
nonlocal output_to_local
output_to_local = e.data == "true"
c4.label = "输出到本地目录,便于手动覆盖" if output_to_local else "不输出到本地目录"
c4.update()
def on_click_c5(e: ft.FilePickerResultEvent):
nonlocal search_card_obj
search_card_obj = e.data == "true"
if search_card_obj:
c5.label = "本项请仅在有开发者指引的情况下勾选!!"
c5.fill_color = ft.colors.RED
else:
c5.label = "扫描游戏目录以查找文件(切勿随意勾选)"
c5.fill_color = None
c5.update()
c1 = ft.Checkbox(label="使用汉化组卡片翻译", value=True, on_change=on_click_c1)
c2 = ft.Checkbox(label="使用隶书卡片字体", value=True, on_change=on_click_c2)
c3 = ft.Checkbox(label="修复部分生僻字缺字问题", value=True, on_change=on_click_c3) # , disabled=True
c4 = ft.Checkbox(label="不输出到本地目录", value=False, on_change=on_click_c4)
c5 = ft.Checkbox(label="扫描游戏目录以查找文件(切勿随意勾选)", value=False, on_change=on_click_c5)
"""
安装翻译
"""
is_installing = False
def install(_):
nonlocal is_installing
if is_installing:
showDialog("正在安装中,请稍后")
return
if not path_game_root:
showDialog("请选择游戏目录")
return
status_text.current.visible = True
page.update()
install_trans(
path_game_root,
set_status=status_update_cb,
network_error_cb=network_error_cb,
log=log,
custom_trans=use_custom_trans,
custom_font=use_custom_font,
output_to_local=output_to_local,
fix_missing_glyph=fix_missing_glyph,
search_card_obj=search_card_obj,
dev_mode=False,
)
is_installing = False
def status_update_cb(status: str):
status_text.current.value = status
status_text.current.update()
@throttle(2)
def network_error_cb():
page.snack_bar = ft.SnackBar(ft.Text(f"网络错误,部分卡片将采用官方简中翻译。"))
page.snack_bar.open = True
page.update()
status_text = ft.Ref[ft.Text]()
status_text_msg = ft.Ref[ft.Tooltip]()
# 添加到页面
page.add(
ft.Container(
ft.Column(
[
ft.IconButton(
icon=ft.icons.JOIN_RIGHT_SHARP,
# icon=ft.icons.AUTO_MODE,
icon_size=50,
icon_color=ft.colors.BLUE_400,
on_click=lambda _: webbrowser.open(RELEASE_URL, 1),
tooltip=ft.Tooltip(
message="打开软件发布页",
),
),
ft.Column(
[
ft.ElevatedButton(
"选择游戏目录",
ref=btn_select_game_root,
icon=ft.icons.ADD if not path_game_root else ft.icons.CHECK,
style=btn_style,
on_click=open_dlg_modal,
),
ft.Row(
[
ft.ElevatedButton(
text="安装翻译",
icon=ft.icons.CHEVRON_RIGHT,
style=btn_style,
on_click=install,
),
ft.Text(
"安装中",
ref=status_text,
size=12,
opacity=0.65,
visible=False,
)
],
spacing=15,
),
],
scale=ft.Scale(0.95, alignment=ft.alignment.top_left)
),
ft.Column([c1, c2, c3, c4, c5], spacing=0, scale=ft.Scale(0.85, alignment=ft.alignment.top_left)),
],
alignment=ft.MainAxisAlignment.CENTER,
),
padding=ft.padding.symmetric(-15, 50),
)
)
if not page.client_storage.get("copyright_notice"):
time.sleep(0.5)
showDialog(ft.Text(
disabled=False,
# size=15,
spans=[
ft.TextSpan(" "),
ft.TextSpan("本项目为开源项目,只会通过"),
ft.TextSpan(
"GitHub页面",
ft.TextStyle(decoration=ft.TextDecoration.UNDERLINE,
decoration_color=ft.colors.BLUE,
color=ft.colors.BLUE),
url=RELEASE_URL,
),
ft.TextSpan("发布版本更新,不存在任何官方群,不会通过其它任何渠道发布,不存在任何购买、捐赠、打赏等付费入口,谨防木马病毒感染或上当受骗!"),
],
), title_text="声明", button_text="明白")
page.client_storage.set("copyright_notice", 1)
ft.app(target=main)
================================================
FILE: move.py
================================================
import os
import shutil
from os import path
class BackupFileManager(object):
BACKUP_FOLDER_NAME = "_TranslationBackup"
@staticmethod
def backup_file(data_key, path_game_root, file_name, dev_mode): # src_dir不用带LocalData
"""
备份文件,当文件已存在时,不覆盖
"""
if dev_mode:
return
if len(file_name) < 2:
return
prefix = file_name[:2]
recovery_dir = path.join(".", BackupFileManager.BACKUP_FOLDER_NAME, data_key, "0000", prefix)
recovery_path = path.join(".", BackupFileManager.BACKUP_FOLDER_NAME, data_key, "0000", prefix, file_name)
if os.path.exists(recovery_path): # 文件已存在就不备份了
return
create_folder(recovery_dir)
src_path = path.join(path_game_root, "LocalData", data_key, "0000", prefix, file_name)
shutil.copyfile(src_path, recovery_path)
@staticmethod
def recovery_file(data_key, dst_dir, file_name, dev_mode):
"""
从备份恢复指定文件到指定目录
"""
if dev_mode:
return
if len(file_name) < 2:
return
prefix = file_name[:2]
dst_path = path.join(dst_dir, data_key, "0000", prefix, file_name)
recovery_path = path.join(".", BackupFileManager.BACKUP_FOLDER_NAME, data_key, "0000", prefix, file_name)
if not os.path.exists(recovery_path): # 文件不存在
return
shutil.copyfile(recovery_path, dst_path)
def get_local_data_key(path_game_root: str, file_list: dict[str, str]):
path_local_data = path.join(path_game_root, "LocalData")
dirs = os.listdir(path_local_data)
key_list = []
for x in dirs:
ok = True
for file_name in file_list.values():
path_dst = path.join(path_local_data, x, "0000", file_name[:2], file_name)
if not os.path.exists(path_dst):
ok = False
break
if ok:
key_list.append(x)
return key_list
def create_folder(folder_path: str):
folder_path = folder_path.strip()
folder_path = folder_path.rstrip("\\")
is_exists = os.path.exists(folder_path)
if not is_exists:
os.makedirs(folder_path)
# 开始阶段 - 取文件到本地
def copy_to_local(path_game_root: str, path_resources: str, file_list: dict[str, str],
dev_mode: bool = False) -> dict[str, str]:
local_file_name_list = {}
data_keys = get_local_data_key(path_game_root, file_list)
for data_key in data_keys:
for file_type, file_name in file_list.items():
if len(file_name) < 2:
continue
prefix = file_name[:2]
game_data_path = path.join(path_game_root, "LocalData", data_key, "0000", prefix, file_name)
local_data_dir = path.join(path_resources, prefix)
local_data_path = path.join(path_resources, prefix, file_name)
create_folder(local_data_dir)
# 备份文件
BackupFileManager.backup_file(data_key, path_game_root, file_name, dev_mode)
local_file_name_list.setdefault(data_key, {})
local_file_name_list[data_key][file_type] = local_data_path
# 开发者模式只Copy一次
if dev_mode and os.path.exists(local_data_path):
continue
shutil.copyfile(game_data_path, local_data_path)
# 找一个数据最全的文件夹当输入
input_key = None
for k, v in local_file_name_list.items():
if input_key is None:
input_key = k
continue
if len(v) > len(local_file_name_list[k]):
input_key = k
return local_file_name_list[input_key]
# 结束阶段 - 把修改好的文件复制回去
def copy_to_original(
path_game_root: str,
path_pack: str,
dir_font: str,
file_list: dict[str, str],
custom_font: bool = False,
custom_trans: bool = True,
output_to_local: bool = False,
fix_missing_glyph: bool = False,
dev_mode: bool = False,
) -> None:
"""
复制path_pack下的所有文件和文件夹到path_dst,若存在则覆盖
"""
if output_to_local: # 输出到本地文件夹
if dev_mode: # 防止循环复制,拦截
return
create_folder(path.join(".", "output"))
dst_dir = path.join(".", "output")
else:
dst_dir = path.join(path_game_root, "LocalData")
data_keys = get_local_data_key(path_game_root, file_list)
for data_key in data_keys:
# 安装翻译
path_dst = path.join(dst_dir, data_key, "0000")
if custom_trans: # 输出翻译
shutil.copytree(path_pack, path_dst, dirs_exist_ok=True)
else: # 还原翻译
for file_name in file_list.values():
BackupFileManager.recovery_file(data_key, dst_dir, file_name, dev_mode)
# 输出字体
output_font(path_game_root, data_key, dst_dir, dir_font, list(normal_fonts),
custom_font=custom_font, dev_mode=dev_mode)
# 修复字体
output_font(path_game_root, data_key, dst_dir, dir_font, list(fix_fonts),
custom_font=fix_missing_glyph, dev_mode=dev_mode)
FONT_CARD_FILE_NAME_CN = "f36fce47" # FZBWKSJW
SDF_CARD_FILE_NAME_CN = "7a7d18a0" # FZBWKSJW - Font SDF Atlas
# FONT_CARD_FILE_NAME_EN = "ce4734d3"
# FONT_CARD_FILE_NAME_JP = "c09bd125"
FONT_UI_509R_FILE_NAME_CN = "25946b17" # FZYouHJW_509R
FONT_UI_512R_FILE_NAME_CN = "da15c88f" # FZYouHJW_512R
# 替换必需的字体文件列表
normal_fonts = (FONT_CARD_FILE_NAME_CN, SDF_CARD_FILE_NAME_CN)
# 修复缺字问题的字体文件列表
# 目前需要修复的字:魊
fix_fonts = (FONT_UI_509R_FILE_NAME_CN, FONT_UI_512R_FILE_NAME_CN)
def output_font(path_game_root: str, data_key: str, dst_dir: str, dir_font: str, fonts: list[str],
custom_font: bool = False, dev_mode: bool = False):
for index, font in enumerate(fonts):
if custom_font: # 替换字体
BackupFileManager.backup_file(data_key, path_game_root, font, dev_mode)
src_filename = f"{font}_custom"
src_file_path = path.join(dir_font, src_filename)
if not os.path.exists(src_file_path): # 文件不存在?
print("Error: 文件不存在: ", src_file_path)
continue
dst_file_dir = path.join(dst_dir, data_key, "0000", font[:2])
dst_file_path = path.join(dst_file_dir, font)
create_folder(dst_file_dir)
shutil.copyfile(src_file_path, dst_file_path)
else: # 还原备份
BackupFileManager.recovery_file(data_key, dst_dir, font, dev_mode)
================================================
FILE: pack.py
================================================
import os
from typing import Any
import UnityPy
from hint import CardEncryptedData
from move import create_folder
def card_pack(card_encrypt_data: CardEncryptedData, dir_input: str, dir_output: str, file_list: dict[str, str]):
for file_type, file in file_list.items():
src_file = os.path.join(dir_input, file[:2], file)
dst_file = os.path.join(dir_output, file[:2], file)
if not os.path.exists(src_file): # 文件不存在
continue
if file_type in ("CARD_Prop", ): # 不需要保存ID文件(没有修改)
continue
env = UnityPy.load(src_file)
for obj in env.objects:
if obj.type.name == "TextAsset":
data: Any = obj.read()
name: str = data.name.upper()
data.script = card_encrypt_data[name.replace('RUBY', '')]
data.save()
create_folder(os.path.join(dir_output, file[:2]))
with open(os.path.join(dst_file), "wb") as f:
f.write(env.file.save())
================================================
FILE: process.py
================================================
from hint import CardData, CardRawData, CardRawDataItem
import struct
def cidProcess(b: bytes, skip_num: int):
start_pos = skip_num * 8
cid_list = []
while True:
if start_pos + 2 >= len(b):
break
data = b[start_pos:start_pos + 2]
if not data:
break
value = struct.unpack("<H", data)[0]
cid_list.append(value)
# print(value)
start_pos += 8
return cid_list
# Name Desc 的 start 分别是 0 4
def progressiveProcess(
b: bytes, b_indx: bytes, start: int, should_skip: bool = True
) -> list[str]:
# 读取二进制indx
hex_str_list = ("{:02X}".format(int(c)) for c in b_indx) # 定义变量接受文件内容
dec_list = [int(s, 16) for s in hex_str_list] # 将十六进制转换为十进制
# 拿到desc的indx
_indx: list[list[int]] = []
for i in range(start, len(dec_list), 8 if should_skip else 4):
tmp: list[int] = []
for j in range(4):
tmp.append(dec_list[i + j])
_indx.append(tmp)
def fourToOne(x: list[int]) -> int:
res = 0
for i in range(3, -1, -1):
res *= 16 * 16
res += x[i]
return res
indx = [fourToOne(i) for i in _indx]
indx = indx[1:]
"""
将解密后的CARD文件转换为JSON文件
"""
def solve(data: bytes, desc_indx: list[int]) -> list[str]:
res: list[str] = []
for i in range(len(desc_indx) - 1):
s = data[desc_indx[i] : desc_indx[i + 1]]
s = s.decode("UTF-8")
while len(s) > 0 and s[-1] == "\u0000":
s = s[:-1]
res.append(s)
return res
return solve(b, indx)
def card_process(card_data: CardData) -> CardRawData:
# CARD_Name_jp = progressiveProcess(
# card_data["ja-jp"]["CARD_NAME"], card_data["ja-jp"]["CARD_INDX"], 0
# )
CARD_Name_zh = progressiveProcess(
card_data["zh-cn"]["CARD_NAME"], card_data["zh-cn"]["CARD_INDX"], 0
)
CARD_Desc_zh = progressiveProcess(
card_data["zh-cn"]["CARD_DESC"], card_data["zh-cn"]["CARD_INDX"], 4
)
CARD_CID_zh = cidProcess(card_data["zh-cn"]["CARD_PROP"], 1)
res: CardRawData = []
for i in range(len(CARD_Name_zh)):
tmp: CardRawDataItem = {
"cid": CARD_CID_zh[i],
"name": {
# "ja-jp": CARD_Name_jp[i],
"ja-jp": "",
"zh-cn": CARD_Name_zh[i],
"custom": ""
},
"desc": {
"zh-cn": CARD_Desc_zh[i],
"custom": ""
},
}
res.append(tmp)
return res
================================================
FILE: release.ps1
================================================
$version = Read-Host "Please enter version"
flet pack ".\interface.py" --add-data "unity;UnityPy/resources" --add-data "resources;resources" --name "MDTR_v$version" --icon "images/icon.png" --file-version $version
================================================
FILE: requirements.txt
================================================
flet==0.24.1
pyinstaller>=5.8.0
Requests>=2.32.0
tqdm>=4.66.3
UnityPy<=1.10.18
================================================
FILE: resources/SDFWordsList.txt
================================================
Wβ—ⅢⅧ①②③④⑤【】せよアグゴバプリル一丈上专东丢严丧个中举久乎乔乘乾争亏仁仆今介从仓付仙令仪仲价份伊伏休伞伶体余佛佯侏依侠俊修俿假偷傀傅傣傲傻像儚免八养兼农冬净券剪募单博厥参发叙叛合吞含味命咚哥善喙嚏坂垮堤塔填复夸夺奈奉妮妹姆委姜娇娑娘娱婆婪婴媒媞媲嫁嫉嫦嬉孢孤察寡尊展岁峰希帝幕库庸廉延建往待很律御微徽悼惨愈愤慕扳抉披抵拂拌拔拯拳拽拿持振挺换掉探接掩提搏搜搬搭摄摧摩摸撤播操擦攀敏救敕散敷料斜斧斯於旅春普暮暴服机权村杭杵松板极析枕林枝枢枪枫枷柩柯样桃桥梅梆梓梦梯检棒棘森椰椿槛槲模横樱橡檬歌毒毕汞泰渗漆灌烤烽燎牌犄狒狻狼猜猾獠獾玲珍珠琴界癸眷睿矫碍碑碟碳磨祭祷禅禽种科稀穗笋答算篝篡籍粹精繁罐群翱耆聆肆肺肿脊脚腺腾舍般艘花茉茶莓莽著葵蓦蓼蔻藉藤虞蛛蜂蝉蝶蟀蟑街衡褒解誉谋谍谦谬谭赌跨蹄躲辕辟辣释钟钵锋雌雕食餐馈骄麻麽
================================================
FILE: resources/card_api_cache.json
================================================
[File too large to display: 10.0 MB]
================================================
FILE: resources/f36fce47_custom
================================================
[File too large to display: 11.0 MB]
================================================
FILE: resources_dev/old_card_cache.json
================================================
[
{
"indx": 0,
"name": {
"ja-jp": "ラーの翼神竜",
"zh-cn": "拉之翼神龙",
"custom": "太阳神之翼神龙"
},
"desc": {
"zh-cn": "此卡不可特殊召唤。通常召唤此卡的情况下,必须解放3只来召唤。①:此卡的召唤不会无效化。②:此卡召唤成功时,不可发动此卡以外的魔法・陷阱・怪兽的效果。③:此卡召唤成功时,支付LP直至变为100LP可以发动。此卡的攻击力・守备力上升所支付的数值。④:支付1000LP,以场上的1只怪兽为对象可以发动。将该怪兽破坏。",
"custom": "这张卡不能特殊召唤。这张卡通常召唤的场合,必须把3只解放作召唤。\r\n①:这张卡的召唤不会被无效化。\r\n②:在这张卡的召唤成功时,这张卡以外的魔法・陷阱・怪兽的效果不能发动。\r\n③:这张卡召唤成功时,把基本分支付到变成100基本分才能发动。这张卡的攻击力・守备力上升支付的数值。\r\n④:支付1000基本分,以场上1只怪兽为对象才能发动。那只怪兽破坏。"
}
},
{
"indx": 1,
"name": {
"ja-jp": "トロイメア・ユニコーン",
"zh-cn": "梦魇曲・独角兽",
"custom": "梦幻崩影・独角兽"
},
"desc": {
"zh-cn": "卡名不同的怪兽2只以上\n此卡名的①效果1回合仅可使用1次。①:此卡连接召唤成功的情况下,舍弃1张手牌,以场上的1张卡为对象可以发动。将该卡放回持有者的牌组。此效果发动时此卡为相互连接状态的情况下,自己可进而从牌组抽1张。②:只要场上有相互连接状态的“梦魇曲”怪兽存在,自己抽牌阶段的通常抽牌的张数就变为该“梦魇曲”怪兽种类的数量。",
"custom": "卡名不同的怪兽2只以上\r\n这个卡名的①的效果1回合只能使用1次。\r\n①:这张卡连接召唤成功的场合,丢弃1张手卡,以场上1张卡为对象才能发动。那张卡回到持有者卡组。这个效果的发动时这张卡是互相连接状态的场合,再让自己可以从卡组抽1张。\r\n②:自己抽卡阶段的通常抽卡数量只要场上有互相连接状态的「幻崩」怪兽存在变成那些「幻崩」怪兽种类的数量。"
}
},
{
"indx": 2,
"name": {
"ja-jp": "黄金卿エルドリッチ",
"zh-cn": "黄金卿埃尔德里奇",
"custom": "黄金卿 黄金国巫妖"
},
"desc": {
"zh-cn": "此卡名的①②效果1回合仅可各使用1次。①:从手牌将此卡和1张魔法・陷阱卡送至墓地,可以场上的1张卡为对象发动。将该卡送至墓地。②:此卡存在于墓地的情况下,将自己场上的1张魔法・陷阱卡送至墓地后可以发动。将此卡加入手牌。之后,可以从手牌将1只不死族怪兽特殊召唤。用此效果特殊召唤的怪兽直到对手回合结束时为止攻击力・守备力上升1000,不会被效果破坏。",
"custom": "这个卡名的①②的效果1回合各能使用1次。\r\n①:从手卡把这张卡和1张魔法・陷阱卡送去墓地,以场上1张卡为对象才能发动。那张卡送去墓地。\r\n②:这张卡在墓地存在的场合,把自己场上1张魔法・陷阱卡送去墓地才能发动。这张卡加入手卡。那之后,可以从手卡把1只不死族怪兽特殊召唤。这个效果特殊召唤的怪兽直到对方回合结束时攻击力・守备力上升1000,不会被效果破坏。"
}
},
{
"indx": 3,
"name": {
"ja-jp": "青眼の白龍",
"zh-cn": "青眼白龙",
"custom": "青眼白龙"
},
"desc": {
"zh-cn": "以高攻击力著称的传说之龙。任何对手都能将之粉碎,其破坏力不可估量。",
"custom": "以高攻击力著称的传说之龙。任何对手都能粉碎,其破坏力不可估量。"
}
},
{
"indx": 4,
"name": {
"ja-jp": "青眼の白龍",
"zh-cn": "青眼白龙",
"custom": "青眼白龙"
},
"desc": {
"zh-cn": "以高攻击力著称的传说之龙。任何对手都能将之粉碎,其破坏力不可估量。",
"custom": "以高攻击力著称的传说之龙。任何对手都能粉碎,其破坏力不可估量。"
}
},
{
"indx": 5,
"name": {
"ja-jp": "青眼の白龍",
"zh-cn": "青眼白龙",
"custom": "青眼白龙"
},
"desc": {
"zh-cn": "以高攻击力著称的传说之龙。任何对手都能将之粉碎,其破坏力不可估量。",
"custom": "以高攻击力著称的传说之龙。任何对手都能粉碎,其破坏力不可估量。"
}
},
{
"indx": 6,
"name": {
"ja-jp": "青眼の白龍",
"zh-cn": "青眼白龙",
"custom": "青眼白龙"
},
"desc": {
"zh-cn": "以高攻击力著称的传说之龙。任何对手都能将之粉碎,其破坏力不可估量。",
"custom": "以高攻击力著称的传说之龙。任何对手都能粉碎,其破坏力不可估量。"
}
},
{
"indx": 7,
"name": {
"ja-jp": "ブラック・マジシャン",
"zh-cn": "黑魔导",
"custom": "黑魔术师"
},
"desc": {
"zh-cn": "作为魔法使,攻击力・守备力均为最高级别。",
"custom": "作为魔法师,攻击力・守备力都是最高级别。"
}
},
{
"indx": 8,
"name": {
"ja-jp": "青眼の白龍",
"zh-cn": "青眼白龙",
"custom": "青眼白龙"
},
"desc": {
"zh-cn": "以高攻击力著称的传说之龙。任何对手都能将之粉碎,其破坏力不可估量。",
"custom": "以高攻击力著称的传说之龙。任何对手都能粉碎,其破坏力不可估量。"
}
},
{
"indx": 9,
"name": {
"ja-jp": "ブラック・マジシャン",
"zh-cn": "黑魔导",
"custom": "黑魔术师"
},
"desc": {
"zh-cn": "作为魔法使,攻击力・守备力均为最高级别。",
"custom": "作为魔法师,攻击力・守备力都是最高级别。"
}
},
{
"indx": 10,
"name": {
"ja-jp": "オベリスクの巨神兵",
"zh-cn": "欧贝利斯克之巨神兵",
"custom": "欧贝利斯克之巨神兵"
},
"desc": {
"zh-cn": "通常召唤此卡的情况下,必须解放3只来召唤。①:此卡的召唤不会无效化。②:此卡召唤成功时,不可发动魔法・陷阱・怪兽的效果。③:此卡不会成为效果的对象。④:解放自己场上的2只怪兽可以发动。将对手场上的怪兽全部破坏。发动此效果的回合中,此卡不可攻击宣言。⑤:此卡被特殊召唤的情况下,在结束阶段发动。将此卡送至墓地。",
"custom": "这张卡通常召唤的场合,必须把3只解放作召唤。\r\n①:这张卡的召唤不会被无效化。\r\n②:在这张卡的召唤成功时,魔法・陷阱・怪兽的效果不能发动。\r\n③:场上的这张卡不会成为效果的对象。\r\n④:把自己场上2只怪兽解放才能发动。对方场上的怪兽全部破坏。这个效果发动的回合,这张卡不能攻击宣言。\r\n⑤:这张卡特殊召唤的场合,结束阶段发动。这张卡送去墓地。"
}
},
{
"indx": 11,
"name": {
"ja-jp": "オシリスの天空竜",
"zh-cn": "欧西里斯之天空龙",
"custom": "奥西里斯之天空龙"
},
"desc": {
"zh-cn": "通常召唤此卡的情况下,必须解放3只来召唤。①:此卡的召唤不会无效化。②:此卡召唤成功时,不可发动魔法・陷阱・怪兽的效果。③:此卡的攻击力・守备力上升相当于自己手牌数量×1000的数值。④:对手怪兽以攻击表示召唤・特殊召唤成功的情况下发动。该怪兽的攻击力下降2000,变为0的情况下将该怪兽破坏。⑤:此卡被特殊召唤的情况下,在结束阶段发动。将此卡送至墓地。",
"custom": "这张卡通常召唤的场合,必须把3只解放作召唤。\r\n①:这张卡的召唤不会被无效化。\r\n②:在这张卡的召唤成功时,魔法・陷阱・怪兽的效果不能发动。\r\n③:这张卡的攻击力・守备力上升自己手卡数量×1000。\r\n④:对方怪兽攻击表示召唤・特殊召唤成功的场合发动。那些怪兽的攻击力下降2000,变成0的场合那怪兽破坏。\r\n⑤:这张卡特殊召唤的场合,结束阶段发动。这张卡送去墓地。"
}
},
{
"indx": 12,
"name": {
"ja-jp": "閃刀姫-カガリ",
"zh-cn": "闪刀姬-篝",
"custom": "闪刀姬-燎里"
},
"desc": {
"zh-cn": "炎属性以外的“闪刀姬”怪兽1只\n自己1回合仅可特殊召唤1次“闪刀姬-篝”。①:此卡特殊召唤成功的情况下,可以自己墓地的1张“闪刀”魔法卡为对象发动。将该卡加入手牌。②:此卡的攻击力上升自己墓地的魔法卡数量×100。",
"custom": "炎属性以外的「闪刀姬」怪兽1只\r\n自己对「闪刀姬-燎里」1回合只能有1次特殊召唤。\r\n①:这张卡特殊召唤成功的场合,以自己墓地1张「闪刀」魔法卡为对象才能发动。那张卡加入手卡。\r\n②:这张卡的攻击力上升自己墓地的魔法卡数量×100。"
}
},
{
"indx": 13,
"name": {
"ja-jp": "インセクトモンスタートークン",
"zh-cn": "昆虫怪兽衍生物",
"custom": "昆虫怪兽衍生物"
},
"desc": {
"zh-cn": "由“昆虫女王”等的效果特殊召唤而来。",
"custom": "由「昆虫」的效果特殊召唤。"
}
},
{
"indx": 14,
"name": {
"ja-jp": "クリボートークン",
"zh-cn": "库里波衍生物",
"custom": "栗子球衍生物"
},
"desc": {
"zh-cn": "由“增殖”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。",
"custom": "由「增殖」的效果特殊召唤。这衍生物不能为上级召唤而解放。"
}
},
{
"indx": 15,
"name": {
"ja-jp": "羊トークン",
"zh-cn": "羊衍生物",
"custom": "羔羊衍生物"
},
"desc": {
"zh-cn": "由“替罪山羊”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。",
"custom": "由「羔羊」的效果特殊召唤。"
}
},
{
"indx": 16,
"name": {
"ja-jp": "羊トークン",
"zh-cn": "羊衍生物",
"custom": "羔羊衍生物"
},
"desc": {
"zh-cn": "由“替罪山羊”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。",
"custom": "由「羔羊」的效果特殊召唤。"
}
},
{
"indx": 17,
"name": {
"ja-jp": "羊トークン",
"zh-cn": "羊衍生物",
"custom": "羔羊衍生物"
},
"desc": {
"zh-cn": "由“替罪山羊”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。",
"custom": "由「羔羊」的效果特殊召唤。"
}
},
{
"indx": 18,
"name": {
"ja-jp": "羊トークン",
"zh-cn": "羊衍生物",
"custom": "羔羊衍生物"
},
"desc": {
"zh-cn": "由“替罪山羊”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。",
"custom": "由「羔羊」的效果特殊召唤。"
}
},
{
"indx": 19,
"name": {
"ja-jp": "兵隊アリトークン",
"zh-cn": "兵蚁衍生物",
"custom": "兵队衍生物"
},
"desc": {
"zh-cn": "由“蚂蚁增殖”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。",
"custom": "由「蚂蚁的增殖」的效果特殊召唤。这个衍生物不能用于上级召唤而解放。"
}
},
{
"indx": 20,
"name": {
"ja-jp": "スライムモンスタートークン",
"zh-cn": "史莱姆怪兽衍生物",
"custom": "史莱姆怪兽衍生物"
},
"desc": {
"zh-cn": "由“软泥增殖炉”等的效果特殊召唤而来。",
"custom": "由「史莱姆」的效果特殊召唤。"
}
},
{
"indx": 21,
"name": {
"ja-jp": "邪神トークン",
"zh-cn": "邪神衍生物",
"custom": "邪神衍生物"
},
"desc": {
"zh-cn": "由“黄金邪神像”的效果特殊召唤而来。",
"custom": "由「邪神」的效果特殊召唤。"
}
},
{
"indx": 22,
"name": {
"ja-jp": "毒蛇トークン",
"zh-cn": "毒蛇衍生物",
"custom": "毒蛇衍生物"
},
"desc": {
"zh-cn": "由“蛇壶”的效果特殊召唤而来。此衍生物在战斗中被破坏时,将给对手生命值造成500点伤害。",
"custom": "由「蛇壶」的效果特殊召唤。「毒蛇衍生物」被战斗破坏的场合,给予对方基本分500分的伤害。"
}
},
{
"indx": 23,
"name": {
"ja-jp": "レクンガトークン",
"zh-cn": "裂蕈牙衍生物",
"custom": "裂蕈牙衍生物"
},
"desc": {
"zh-cn": "由“裂蕈牙”的效果特殊召唤而来。",
"custom": "由「裂蕈牙」的效果特殊召唤。"
}
},
{
"indx": 24,
"name": {
"ja-jp": "クローントークン",
"zh-cn": "克隆衍生物",
"custom": "克隆衍生物"
},
"desc": {
"zh-cn": "由“克隆复制”的效果特殊召唤而来。原怪兽被破坏并送入墓地时,此衍生物将被破坏。",
"custom": "由「克隆」的效果特殊召唤。"
}
},
{
"indx": 25,
"name": {
"ja-jp": "魔草トークン",
"zh-cn": "魔草衍生物",
"custom": "魔草衍生物"
},
"desc": {
"zh-cn": "由“死亡石斛”的效果特殊召唤而来。",
"custom": "由「死亡石斛」的效果特殊召唤。"
}
},
{
"indx": 26,
"name": {
"ja-jp": "ミラージュトークン",
"zh-cn": "幻镜鸟衍生物",
"custom": "幻影衍生物"
},
"desc": {
"zh-cn": "由“物理分身”的效果特殊召唤而来。在结束阶段时此衍生物将被破坏。",
"custom": "由「物理分身」的效果特殊召唤。回合结束时,这只衍生物被破坏。"
}
},
{
"indx": 27,
"name": {
"ja-jp": "メタルデビル・トークン",
"zh-cn": "金属魔鬼衍生物",
"custom": "金属恶魔衍生物"
},
"desc": {
"zh-cn": "由“魔鬼圣域”的效果特殊召唤而来。此衍生物不可攻击,在涉及此衍生物的战斗中,控制者所受的战斗伤害由对手承受。每次我方准备阶段,此衍生物的控制者需要支付1000LP。否则此衍生物将被破坏。",
"custom": "由「恶魔的圣域」的效果特殊召唤。这衍生物不能攻击,这衍生物的战斗发生的对控制者的战斗伤害由对方代受。这衍生物的控制者在每次自己准备阶段支付1000基本分。或者不支付基本分让这衍生物破坏。"
}
},
{
"indx": 28,
"name": {
"ja-jp": "おジャマトークン",
"zh-cn": "扰乱怪衍生物",
"custom": "扰乱衍生物"
},
"desc": {
"zh-cn": "由“扰乱怪三人组”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。此衍生物被破坏时,控制者受到300点伤害。",
"custom": "由「扰乱三人组」的效果特殊召唤。这衍生物不能为上级召唤而解放。「扰乱衍生物」被破坏时那控制者受到每1只300伤害。"
}
},
{
"indx": 29,
"name": {
"ja-jp": "おジャマトークン",
"zh-cn": "扰乱怪衍生物",
"custom": "扰乱衍生物"
},
"desc": {
"zh-cn": "由“扰乱怪三人组”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。此衍生物被破坏时,控制者受到300点伤害。",
"custom": "由「扰乱三人组」的效果特殊召唤。这衍生物不能为上级召唤而解放。「扰乱衍生物」被破坏时那控制者受到每1只300伤害。"
}
},
{
"indx": 30,
"name": {
"ja-jp": "おジャマトークン",
"zh-cn": "扰乱怪衍生物",
"custom": "扰乱衍生物"
},
"desc": {
"zh-cn": "由“扰乱怪三人组”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。此衍生物被破坏时,控制者受到300点伤害。",
"custom": "由「扰乱三人组」的效果特殊召唤。这衍生物不能为上级召唤而解放。「扰乱衍生物」被破坏时那控制者受到每1只300伤害。"
}
},
{
"indx": 31,
"name": {
"ja-jp": "仔羊トークン",
"zh-cn": "羔羊衍生物",
"custom": "羔羊衍生物"
},
"desc": {
"zh-cn": "由“迷途的羔羊”的效果特殊召唤而来。",
"custom": "由「羔羊」的效果特殊召唤。"
}
},
{
"indx": 32,
"name": {
"ja-jp": "仔羊トークン",
"zh-cn": "羔羊衍生物",
"custom": "羔羊衍生物"
},
"desc": {
"zh-cn": "由“迷途的羔羊”的效果特殊召唤而来。",
"custom": "由「羔羊」的效果特殊召唤。"
}
},
{
"indx": 33,
"name": {
"ja-jp": "トリッキートークン",
"zh-cn": "巧诈衍生物",
"custom": "诡术师衍生物"
},
"desc": {
"zh-cn": "由“巧诈魔法4”的效果特殊召唤而来。此衍生物不可进行攻击宣言。",
"custom": "由「诡术师的魔术4」的效果特殊召唤。这衍生物不能攻击宣言。"
}
},
{
"indx": 34,
"name": {
"ja-jp": "ブロックトークン",
"zh-cn": "积木衍生物",
"custom": "积木衍生物"
},
"desc": {
"zh-cn": "由“积木人”的效果特殊召唤而来。此衍生物不可进行攻击宣言。",
"custom": "由「积木人」的效果特殊召唤。这衍生物不能攻击宣言。"
}
},
{
"indx": 35,
"name": {
"ja-jp": "冥府の使者カイエントークン",
"zh-cn": "冥府的使者凯恩衍生物",
"custom": "冥府之使者 凯恩衍生物"
},
"desc": {
"zh-cn": "由“冥府的使者格斯”的效果特殊召唤而来。此衍生物的攻击力和守备力将与玩家在“冥府的使者格斯”被特殊召唤时所受到的战斗伤害相同。",
"custom": "由「冥府之使者 格斯」的效果特殊召唤。这衍生物的攻击力・守备力变成和「冥府之使者 格斯」特殊召唤时受到的战斗伤害相同的数值。"
}
},
{
"indx": 36,
"name": {
"ja-jp": "幻魔トークン",
"zh-cn": "幻魔衍生物",
"custom": "幻魔衍生物"
},
"desc": {
"zh-cn": "由“幻魔皇拉比艾尔”的效果特殊召唤而来。此衍生物不可进行攻击宣言。",
"custom": "由「幻魔皇 拉比艾尔」的效果特殊召唤。这个衍生物不能攻击宣言。"
}
},
{
"indx": 37,
"name": {
"ja-jp": "幻魔の殉教者トークン",
"zh-cn": "幻魔殉教者衍生物",
"custom": "幻魔的殉教者衍生物"
},
"desc": {
"zh-cn": "由“幻魔殉教者”的效果特殊召唤而来。",
"custom": "由「幻魔」的效果特殊召唤。"
}
},
{
"indx": 38,
"name": {
"ja-jp": "綿毛トークン",
"zh-cn": "绵毛衍生物",
"custom": "绵毛衍生物"
},
"desc": {
"zh-cn": "由“蒲公英狮子”的效果特殊召唤而来。此衍生物被特殊召唤的回合,不可进行以升级召唤为目的的释放。",
"custom": "由「蒲公英狮」的效果特殊召唤。这个衍生物特殊召唤的回合不能用于上级召唤的解放。"
}
},
{
"indx": 39,
"name": {
"ja-jp": "綿毛トークン",
"zh-cn": "绵毛衍生物",
"custom": "绵毛衍生物"
},
"desc": {
"zh-cn": "由“蒲公英狮子”的效果特殊召唤而来。此衍生物被特殊召唤的回合,不可进行以升级召唤为目的的释放。",
"custom": "由「蒲公英狮」的效果特殊召唤。这个衍生物特殊召唤的回合不能用于上级召唤的解放。"
}
},
{
"indx": 40,
"name": {
"ja-jp": "オプショントークン",
"zh-cn": "附属零件衍生物",
"custom": "子机衍生物"
},
"desc": {
"zh-cn": "由“胜利毒蛇XX03”或“力量胶囊”的效果特殊召唤而来。此衍生物的种族、属性、等级、攻击力、守备力常与原本的「胜利毒蛇 XX03」相同。",
"custom": "由「胜利蛇XX03」特殊召唤。这个衍生物的种族・属性・等级・攻击力・守备力始终和特殊召唤的卡相同。"
}
},
{
"indx": 41,
"name": {
"ja-jp": "人造天使トークン",
"zh-cn": "人造天使衍生物",
"custom": "人造天使衍生物"
},
"desc": {
"zh-cn": "由“人造天使”的效果特殊召唤而来。",
"custom": "由「人造天使」的效果特殊召唤。"
}
},
{
"indx": 42,
"name": {
"ja-jp": "ダブルガイ・トークン",
"zh-cn": "双身小子衍生物",
"custom": "双身人衍生物"
},
"desc": {
"zh-cn": "由“命运-英雄 双身小子”的效果特殊召唤而来。",
"custom": "由「命运英雄 双身人」的效果特殊召唤。"
}
},
{
"indx": 43,
"name": {
"ja-jp": "イーバトークン",
"zh-cn": "外星生命体衍生物",
"custom": "地外生命衍生物"
},
"desc": {
"zh-cn": "由“网罟座泽塔星人”的效果特殊召唤而来。",
"custom": "由「网罟座泽塔星人」的效果特殊召唤。"
}
},
{
"indx": 44,
"name": {
"ja-jp": "火の玉トークン",
"zh-cn": "火球衍生物",
"custom": "火之玉衍生物"
},
"desc": {
"zh-cn": "由“怨念之魂 业火”等的效果特殊召唤而来。",
"custom": "由「怨念之魂 业火」或「灵魂游荡的墓场」的效果特殊召唤。"
}
},
{
"indx": 45,
"name": {
"ja-jp": "クレイジー・ファイヤー・トークン",
"zh-cn": "疯狂火焰衍生物",
"custom": "狂焰衍生物"
},
"desc": {
"zh-cn": "由“疯狂火焰”的效果特殊召唤而来。",
"custom": "由「狂焰」的效果特殊召唤。"
}
},
{
"indx": 46,
"name": {
"ja-jp": "雲魔物トークン",
"zh-cn": "云魔物衍生物",
"custom": "云魔物衍生物"
},
"desc": {
"zh-cn": "由“云魔物-羊云”的效果特殊召唤而来。除名称中带有“云魔物”的怪兽外,此衍生物不可用作其他上级召唤的祭品。",
"custom": "由「云魔物」的效果特殊召唤。这个衍生物不能作为名字带有「云魔物」的卡以外的祭品召唤的祭品。"
}
},
{
"indx": 47,
"name": {
"ja-jp": "モータートークン",
"zh-cn": "马达衍生物",
"custom": "马达衍生物"
},
"desc": {
"zh-cn": "由“恶鬼马达Ω”的效果特殊召唤而来。",
"custom": "由「马达」的效果特殊召唤。"
}
},
{
"indx": 48,
"name": {
"ja-jp": "銃士トークン",
"zh-cn": "铳士衍生物",
"custom": "铳士衍生物"
},
"desc": {
"zh-cn": "以“幻铳士”的效果特殊召唤而来。",
"custom": "由「幻铳士」的效果特殊召唤。"
}
},
{
"indx": 49,
"name": {
"ja-jp": "トーチトークン",
"zh-cn": "拷问衍生物",
"custom": "拷问衍生物"
},
"desc": {
"zh-cn": "由“拷问魔像”的效果特殊召唤而来。",
"custom": "由「拷问」的效果特殊召唤。"
}
},
{
"indx": 50,
"name": {
"ja-jp": "D・ローズトークン",
"zh-cn": "魔界蔷薇衍生物",
"custom": "魔界蔷薇衍生物"
},
"desc": {
"zh-cn": "由“分裂魔界蔷薇”的效果特殊召唤而来。",
"custom": "由「蔷薇」的效果特殊召唤。"
}
},
{
"indx": 51,
"name": {
"ja-jp": "サンダーオプショントークン",
"zh-cn": "雷选配件衍生物",
"custom": "雷电子机衍生物"
},
"desc": {
"zh-cn": "由“蓝雷号T45”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。",
"custom": "由「蓝色雷电T45」特殊召唤。这衍生物不能为上级召唤而解放。"
}
},
{
"indx": 52,
"name": {
"ja-jp": "イービル・トークン",
"zh-cn": "邪恶衍生物",
"custom": "邪心衍生物"
},
"desc": {
"zh-cn": "以“凶恶之爪”的效果特殊召唤而来。",
"custom": "由「堕恶之爪」的效果特殊召唤。"
}
},
{
"indx": 53,
"name": {
"ja-jp": "黒焔トークン",
"zh-cn": "黑焰衍生物",
"custom": "黑焰衍生物"
},
"desc": {
"zh-cn": "由“末日之焰”的效果特殊召唤而来。除暗属性的怪兽外,此衍生物不可用作其他上级召唤的祭品。",
"custom": "由「终焉之焰」的效果特殊召唤。这衍生物不能为暗属性以外的怪兽的上级召唤而解放。"
}
},
{
"indx": 54,
"name": {
"ja-jp": "デモンバルサムトークン",
"zh-cn": "魔凤仙衍生物",
"custom": "魔界凤仙花衍生物"
},
"desc": {
"zh-cn": "由“魔鬼凤仙花种”的效果特殊召唤而来。",
"custom": "由「魔界凤仙花种」的效果特殊召唤。"
}
},
{
"indx": 55,
"name": {
"ja-jp": "ムーントークン",
"zh-cn": "月亮衍生物",
"custom": "月衍生物"
},
"desc": {
"zh-cn": "由“秘仪之力ⅩⅧ-月亮”的效果特殊召唤而来。",
"custom": "由「秘仪之力18-月亮」的效果特殊召唤。"
}
},
{
"indx": 56,
"name": {
"ja-jp": "メタボトークン",
"zh-cn": "代谢衍生物",
"custom": "代谢衍生物"
},
"desc": {
"zh-cn": "由“代谢吸食怪”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。",
"custom": "由「代谢吸食怪」的效果特殊召唤。这衍生物不能为上级召唤而解放。"
}
},
{
"indx": 57,
"name": {
"ja-jp": "オイスタートークン",
"zh-cn": "牡蛎衍生物",
"custom": "牡蛎衍生物"
},
"desc": {
"zh-cn": "由“牡蛎王”的效果特殊召唤而来。",
"custom": "由「牡蛎」的效果特殊召唤。"
}
},
{
"indx": 58,
"name": {
"ja-jp": "アイスコフュントークン",
"zh-cn": "冰棺衍生物",
"custom": "冰棺衍生物"
},
"desc": {
"zh-cn": "由“冰结界的皇家骑士”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。",
"custom": "由「冰结界的王家骑士」的效果特殊召唤。这个衍生物不能为上级召唤而解放。"
}
},
{
"indx": 59,
"name": {
"ja-jp": "アイヴィトークン",
"zh-cn": "常春藤衍生物",
"custom": "常春藤衍生物"
},
"desc": {
"zh-cn": "由“常春藤壁”的效果特殊召唤而来。此衍生物被破坏时,控制者受到300点伤害。",
"custom": "由「常春藤壁」的效果特殊召唤。这个衍生物破坏时,这个衍生物的控制者受到300分伤害。"
}
},
{
"indx": 60,
"name": {
"ja-jp": "ツクシトークン",
"zh-cn": "笔头菜衍生物",
"custom": "笔头菜衍生物"
},
"desc": {
"zh-cn": "由“笔头菜”的效果特殊召唤而来。如果此衍生物在与植物族怪兽战斗时被破坏,控制者要将1张手牌送入墓地。",
"custom": "由「小笔头菜」的效果特殊召唤。这衍生物被和植物族怪兽的战斗破坏的场合,这衍生物的控制者把1张手卡送去墓地。"
}
},
{
"indx": 61,
"name": {
"ja-jp": "ローズ・トークン",
"zh-cn": "蔷薇衍生物",
"custom": "蔷薇衍生物"
},
"desc": {
"zh-cn": "由“黑花园”等的效果特殊召唤而来。",
"custom": "由「黑色花园」或「蔷薇」的效果特殊召唤。"
}
},
{
"indx": 62,
"name": {
"ja-jp": "ギフト・デモン・トークン",
"zh-cn": "礼物恶魔衍生物",
"custom": "礼物魔衍生物"
},
"desc": {
"zh-cn": "由“复活礼物”的效果特殊召唤而来。",
"custom": "由「苏生的礼物」的效果特殊召唤。"
}
},
{
"indx": 63,
"name": {
"ja-jp": "プラントークン",
"zh-cn": "植物衍生物",
"custom": "植物衍生物"
},
"desc": {
"zh-cn": "由“竹头木屑”的效果特殊召唤而来。",
"custom": "由植物族的效果特殊召唤。"
}
},
{
"indx": 64,
"name": {
"ja-jp": "シードトークン",
"zh-cn": "种子衍生物",
"custom": "花种衍生物"
},
"desc": {
"zh-cn": "由“火焰种子”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。",
"custom": "由「花种」的效果特殊召唤。这衍生物不能为上级召唤而解放。"
}
},
{
"indx": 65,
"name": {
"ja-jp": "ニードルトークン",
"zh-cn": "针衍生物",
"custom": "针衍生物"
},
"desc": {
"zh-cn": "由“仙人掌斗士”的效果特殊召唤而来。",
"custom": "由「小仙人掌斗士」的效果特殊召唤。"
}
},
{
"indx": 66,
"name": {
"ja-jp": "ナイトメア・デーモン・トークン",
"zh-cn": "梦魇恶魔衍生物",
"custom": "梦魇恶魔衍生物"
},
"desc": {
"zh-cn": "由“梦魇恶魔群”的效果特殊召唤而来。此衍生物被破坏时,控制者受到800点伤害。",
"custom": "由「梦魇恶魔群」的效果特殊召唤。「梦魇恶魔衍生物」被破坏时,这衍生物的控制者受到每1只800分伤害。"
}
},
{
"indx": 67,
"name": {
"ja-jp": "スピノストークン",
"zh-cn": "棘龙衍生物",
"custom": "棘龙衍生物"
},
"desc": {
"zh-cn": "由“朱罗纪 棘龙”的效果特殊召唤而来。",
"custom": "由「朱罗纪棘龙」的效果特殊召唤。"
}
},
{
"indx": 68,
"name": {
"ja-jp": "ロックストーン・トークン",
"zh-cn": "岩石衍生物",
"custom": "岩石衍生物"
},
"desc": {
"zh-cn": "由“岩石战士”的效果特殊召唤而来。此衍生物不可用作上级召唤的祭品。",
"custom": "由「岩石战士」的效果特殊召唤。这个衍生物不能为上级召唤而解放。"
}
},
{
"indx": 69,
"name": {
"ja-jp": "アスモトークン",
"zh-cn": "阿斯蒙衍生物",
"custom": "阿斯蒙衍生物"
},
"desc": {
"zh-cn": "由“堕天使 阿斯蒙德斯”的效果特殊召唤而来。此衍生物不会被卡片的效果破坏。",
"custom": "由「堕天使 阿斯蒙蒂斯」的效果特殊召唤。「阿斯蒙衍生物」不会被效果破坏。"
}
},
{
"indx": 70,
"name": {
"ja-jp": "ディウストークン",
"zh-cn": "德斯衍生物",
"custom": "蒂斯衍生物"
},
"desc": {
"zh-cn": "由“堕天使 阿斯蒙德斯”的效果特殊召唤而来。此衍生物不会在战斗中被破坏。",
"custom": "由「堕天使 阿斯蒙蒂斯」的效果特殊召唤。「蒂斯衍生物」不会被战斗破坏。"
}
},
{
"indx": 71,
"name": {
"ja-jp": "ゴースト・トークン",
"zh-cn": "幽灵衍生物",
"custom": "幽灵衍生物"
},
"desc": {
"zh-cn": "由“伤害转化器”的效果特殊召唤而来。",
"custom": "由「伤害转化」的效果特殊召唤。"
}
},
{
"indx": 72,
"name": {
"ja-jp": "ジュラックトークン",
"zh-cn": "朱罗纪衍生物",
"custom": "朱罗纪衍生物"
},
"desc": {
"zh-cn": "由“朱罗纪 南十字龙”的效果特殊召唤而来。除名称中带有“侏罗纪”的怪兽外,此衍生物不可用作其他上级召唤的祭品。",
"custom": "由「朱罗纪南十字龙」的效果特殊召唤。这个衍生物不能为名字带有「朱罗纪」的怪兽以外的上级召唤而解放。"
}
},
{
"indx": 73,
"name": {
"ja-jp": "ワームトークン",
"zh-cn": "异虫衍生物",
"custom": "虫衍生物"
},
"desc": {
"zh-cn": "由“异虫饵”的效果特殊召唤而来。",
"custom": "由「虫饵」的效果特殊召唤。"
}
},
{
"indx": 74,
"name": {
"ja-jp": "マルチプルトークン",
"zh-cn": "分机衍生物",
"custom": "分机衍生物"
},
"desc": {
"zh-cn": "由“罗德不列颠号”的效果特殊召唤而来。",
"custom": "由「罗德不列颠号」特殊召唤。"
}
},
{
"indx": 75,
"name": {
"ja-jp": "レプティレストークン",
"zh-cn": "爬虫妖衍生物",
"custom": "爬虫妖衍生物"
},
"desc": {
"zh-cn": "由“爬虫妖产卵”的效果特殊召唤而来。",
"custom": "由「爬虫妖报应」的效果特殊召唤。"
}
},
{
"indx": 76,
"name": {
"ja-jp": "スパイダー・トークン",
"zh-cn": "蜘蛛衍生物",
"custom": "蜘蛛衍生物"
},
"desc": {
"zh-cn": "由“蜘蛛卵”的效果特殊召唤而来。",
"custom": "由「蜘蛛卵」的效果特殊召唤。"
}
},
{
"indx": 77,
"name": {
"ja-jp": "ソウルトークン",
"zh-cn": "灵魂衍生物",
"custom": "灵魂衍生物"
},
"desc": {
"zh-cn": "由“对极限的冲动”的效果特殊召唤而来。除上级召唤外,此衍生物不可用作祭品。",
"custom": "由「对极限的冲动」的效果特殊召唤。这个衍生物不能为上级召唤以外而解放。"
}
},
{
"indx": 78,
"name": {
"ja-jp": "贄の石碑トークン",
"zh-cn": "祭品石碑衍生物",
"custom": "祭品石碑衍生物"
},
"desc": {
"zh-cn": "由“荣誉的祭品”的效果特殊召唤而来。除名称中带有“地缚神”的怪兽外,此衍生物不可用作其他上级召唤的祭品,也不可用作同步材料。",
"custom": "由「荣誉的祭品」特殊召唤。这个衍生物不能为名字带有「地缚神」的怪兽的上级召唤以外而解放,也不能作为同调素材。"
}
},
{
"indx": 79,
"name": {
"ja-jp": "つぶコーントークン",
"zh-cn": "玉米粒衍生物",
"custom": "玉米粒衍生物"
},
"desc": {
"zh-cn": "由“小玉米”的效果特殊召唤而来。",
"custom": "由「小玉米」的效果特殊召唤。"
}
},
{
"indx": 80,
"name": {
"ja-jp": "ラヴァルトークン",
"zh-cn": "岩浆炎衍生物",
"custom": "熔岩衍生物"
},
"desc": {
"zh-cn": "由“红莲的炎壁”的效果特殊召唤而来。",
"custom": "由「红莲之炎壁」的效果特殊召唤。"
}
},
{
"indx": 81,
"name": {
"ja-jp": "コアキメイルトークン",
"zh-cn": "核成衍生物",
"custom": "核成衍生物"
},
"desc": {
"zh-cn": "以“核成原型”的效果特殊召唤。",
"custom": "由「核成试验台」的效果特殊召唤。"
}
},
{
"indx": 82,
"name": {
"ja-jp": "星蝕トークン",
"zh-cn": "星蚀衍生物",
"custom": "星食衍生物"
},
"desc": {
"zh-cn": "由“星蚀-等级攀升-”的效果特殊召唤而来。",
"custom": "由「星食-等级攀升-」的效果特殊召唤。"
}
},
{
"indx": 83,
"name": {
"ja-jp": "ワルツトークン",
"zh-cn": "华尔滋衍生物",
"custom": "圆舞衍生物"
},
"desc": {
"zh-cn": "由“武斗圆舞”的效果特殊召唤而来。涉及此衍生物的战斗中所发生的对双方玩家的战斗伤害变成0。",
"custom": "由「武斗圆舞」的效果特殊召唤。这个衍生物的战斗发生的对双方玩家的战斗伤害变成0。"
}
},
{
"indx": 84,
"name": {
"ja-jp": "ペンデュラム・トークン",
"zh-cn": "灵摆衍生物",
"custom": "钟摆衍生物"
},
"desc": {
"zh-cn": "由“群聚灵摆”的效果特殊召唤而来。",
"custom": "由「密集钟摆」的效果特殊召唤。"
}
},
{
"indx": 85,
"name": {
"ja-jp": "ドッペル・トークン",
"zh-cn": "二重身衍生物",
"custom": "二重身衍生物"
},
"desc": {
"zh-cn": "由“二重身战士”的效果特殊召唤而来。",
"custom": "由「二重身战士」的效果特殊召唤。"
}
},
{
"indx": 86,
"name": {
"ja-jp": "極星獣トークン",
"zh-cn": "极星兽衍生物",
"custom": "极星兽衍生物"
},
"desc": {
"zh-cn": "由“极星兽坦格里斯尼尔”的效果特殊召唤而来。",
"custom": "由「极星兽 坦格里斯尼尔」的效果特殊召唤。"
}
},
{
"indx": 87,
"name": {
"ja-jp": "エインヘリアル・トークン",
"zh-cn": "英灵衍生物",
"custom": "英灵衍生物"
},
"desc": {
"zh-cn": "由“极星天女武神”的效果特殊召唤而来。",
"custom": "由「极星天 女武神」的效果特殊召唤。"
}
},
{
"indx": 88,
"name": {
"ja-jp": "邪精トークン",
"zh-cn": "邪精衍生物",
"custom": "邪精衍生物"
},
"desc": {
"zh-cn": "由“弗丽嘉的苹果”的效果特殊召唤而来。此衍生物的攻击力和守备力将与“弗丽嘉的苹果”的效果中我方恢复的数值相同。",
"custom": "由「芙莉嘉的苹果」的效果特殊召唤。"
}
},
{
"indx": 89,
"name": {
"ja-jp": "チュウボーンJr.トークン",
"zh-cn": "鼠骨Jr.衍生物",
"custom": "小鼠骨衍生物"
},
"desc": {
"zh-cn": "由“鼠骨”的效果特殊召唤而来。",
"custom": "由「鼠骨」的效果特殊召唤。"
}
},
{
"indx": 90,
"name": {
"ja-jp": "フォトントークン",
"zh-cn": "光子衍生物",
"custom": "光子衍生物"
},
"desc": {
"zh-cn": "由“光子圣域”的效果特殊召唤而来。此衍生物不可攻击,也不可用作同步材料。",
"custom": "由「光子圣域」的效果特殊召唤。这个衍生物不能攻击,也不能作为同调素材。"
}
},
{
"indx": 91,
"name": {
"ja-jp": "バトル・イーグル・トークン",
"zh-cn": "战鹰衍生物",
"custom": "战鹰衍生物"
},
"desc": {
"zh-cn": "由“编号42 星舰 银河战斧机”的效果特殊召唤而来。此衍生物在其被特殊召唤的回合的结束阶段将被破坏。",
"custom": "由「No.42 星舰・银河战斧鹰」的效果特殊召唤。这个衍生物在这个回合的结束阶段时破坏。"
}
},
{
"indx": 92,
"name": {
"ja-jp": "幻獣機トークン",
"zh-cn": "幻兽机衍生物",
"custom": "幻兽机衍生物"
},
"desc": {
"zh-cn": "由名称中带有“幻兽机”的怪兽等的效果特殊召唤而来。",
"custom": "由「垂直着陆」的效果特殊召唤。"
}
},
{
"indx": 93,
"name": {
"ja-jp": "アンブラル・ミラージュ・トークン",
"zh-cn": "黑影幻镜鸟衍生物",
"custom": "阴影蜃景衍生物"
},
"desc": {
"zh-cn": "由“罪键之法”的效果特殊召唤而来。此衍生物的攻击力将与原怪兽相同。此衍生物不可直接攻击。除上级召唤外,不可用作祭品。若原怪兽从场上离开,此衍生物将被破坏。",
"custom": "由「罪键之法」的效果特殊召唤。这衍生物不能直接攻击,不能为上级召唤以外而解放。"
}
},
{
"indx": 94,
"name": {
"ja-jp": "影武者狸トークン",
"zh-cn": "影武者狸衍生物",
"custom": "影武者狸衍生物"
},
"desc": {
"zh-cn": "由“编号64 古狸三太夫”的效果特殊召唤而来。此衍生物的攻击力将与特殊召唤此衍生物时存在于场上的攻击力最高的怪兽相同。",
"custom": "由「No.64 古狸 三太夫」的效果特殊召唤。"
}
},
{
"indx": 95,
"name": {
"ja-jp": "幻影トークン",
"zh-cn": "幻影衍生物",
"custom": "幻影衍生物"
},
"desc": {
"zh-cn": "由“编号48 暗影巫妖”的效果特殊召唤而来。",
"custom": "由「No.48 暗影巫妖」的效果特殊召唤。"
}
},
{
"indx": 96,
"name": {
"ja-jp": "ダークソウルトークン",
"zh-cn": "暗黑灵衍生物",
"custom": "暗魂体衍生物"
},
"desc": {
"zh-cn": "由“冥界龙 死灵”的效果特殊召唤而来。",
"custom": "由「冥界龙 龙亡」的效果特殊召唤。"
}
},
{
"indx": 97,
"name": {
"ja-jp": "魂魄トークン",
"zh-cn": "魂魄衍生物",
"custom": "魂魄衍生物"
},
"desc": {
"zh-cn": "由“混沌编号43 魂魄傀儡鬼神 混沌灵魂人偶”的效果特殊召唤而来。此衍生物的攻击力和守备力将为特殊召唤此衍生物时对手生命值的一半。",
"custom": "由「混沌No.43 魂魄傀儡鬼神 混沌傀儡师」的效果特殊召唤。这个衍生物的攻击力・守备力变成这衍生物的特殊召唤时的对方基本分一半的数值。"
}
},
{
"indx": 98,
"name": {
"ja-jp": "スチーム・トークン",
"zh-cn": "蒸汽衍生物",
"custom": "蒸汽衍生物"
},
"desc": {
"zh-cn": "由“黑羽-隐蓑蒸汽”的效果特殊召唤而来。",
"custom": "由「黑羽-隐身蓑之斯蒂姆」的效果特殊召唤。"
}
},
{
"indx": 99,
"name": {
"ja-jp": "BF-ブラック・クレスト・トークン",
"zh-cn": "黑羽-黑羽衍生物",
"custom": "黑羽-黑冠衍生物"
},
"desc": {
"zh-cn": "由“黑羽复仇”的效果特殊召唤而来。",
"custom": "由「黑翼复仇」的效果特殊召唤。"
}
},
{
"indx": 100,
"name": {
"ja-jp": "カバートークン",
"zh-cn": "河马衍生物",
"custom": "河马衍生物"
},
"desc": {
"zh-cn": "由“河马嘉年华”等的效果特殊召唤而来。此衍生物不可用作祭品。只要“河马衍生物”在怪兽区,特殊召唤“河马衍生物”的玩家就不能从额外牌组特殊召唤怪兽。",
"custom": "由「超河马狂欢节」的效果特殊召唤。这衍生物不能解放。只要「河马衍生物」在怪兽区域存在,发动「超河马狂欢节」的玩家不能从额外卡组把怪兽特殊召唤。"
}
},
{
"indx": 101,
"name": {
"ja-jp": "インフェルノイドトークン",
"zh-cn": "狱炎机衍生物",
"custom": "狱火机衍生物"
},
"desc": {
"zh-cn": "由“炼狱的泛滥”的效果特殊召唤而来。",
"custom": "由「炼狱的泛烂」的效果特殊召唤。"
}
},
{
"indx": 102,
"name": {
"ja-jp": "シンクロントークン",
"zh-cn": "同步士衍生物",
"custom": "同调士衍生物"
},
"desc": {
"zh-cn": "由“同步士运输者”的效果特殊召唤而来。",
"custom": "由「同调士运送者」的效果特殊召唤。"
}
},
{
"indx": 103,
"name": {
"ja-jp": "家臣トークン",
"zh-cn": "家臣衍生物",
"custom": "家臣衍生物"
},
"desc": {
"zh-cn": "由“雷帝家臣密特拉”的效果特殊召唤而来。",
"custom": "「雷帝家臣 密特拉」的效果特殊召唤。"
}
},
{
"indx": 104,
"name": {
"ja-jp": "タツノコトークン",
"zh-cn": "龙之子衍生物",
"custom": "龙子衍生物"
},
"desc": {
"zh-cn": "由“龙落亲”的效果特殊召唤而来。",
"custom": "「龙落亲」的效果特殊召唤。"
}
},
{
"indx": 105,
"name": {
"ja-jp": "ドッグファイタートークン",
"zh-cn": "犬战机衍生物",
"custom": "DOG战斗机衍生物"
},
"desc": {
"zh-cn": "由“星际仙踪-犬战机”的效果特殊召唤而来。",
"custom": "由「星际仙踪-DOG战斗机」的效果特殊召唤。"
}
},
{
"indx": 106,
"name": {
"ja-jp": "ラディアントークン",
"zh-cn": "掠地昂衍生物",
"custom": "拉迪安衍生物"
},
"desc": {
"zh-cn": "由“多次元坏兽掠地昂”的效果特殊召唤而来。此衍生物不可用作同步材料。",
"custom": "由「多次元坏兽 拉迪安」的效果特殊召唤。这衍生物不能作为同调素材。"
}
},
{
"indx": 107,
"name": {
"ja-jp": "邪眼神トークン",
"zh-cn": "邪眼神衍生物",
"custom": "邪眼神衍生物"
},
"desc": {
"zh-cn": "由“究极幻神 奥特美特尔・比希巴尔金”的效果特殊召唤而来。",
"custom": "由「究极幻神 奥特美特尔・比希巴尔金」的效果特殊召唤。"
}
},
{
"indx": 108,
"name": {
"ja-jp": "巨竜トークン",
"zh-cn": "巨龙衍生物",
"custom": "巨龙衍生物"
},
"desc": {
"zh-cn": "由“巨神龙的遗迹”的效果特殊召唤而来。",
"custom": "由「巨神龙的遗迹」的效果特殊召唤。"
}
},
{
"indx": 109,
"name": {
"ja-jp": "朧影トークン",
"zh-cn": "胧影衍生物",
"custom": "胧影衍生物"
},
"desc": {
"zh-cn": "由“黑羽-胧影之业风”的效果特殊召唤而来。此衍生物不可用作祭品或同步材料。",
"custom": "由「黑羽-胧影之业风」的效果特殊召唤。这衍生物不能解放,不能作为同调素材。"
}
},
{
"indx": 110,
"name": {
"ja-jp": "黒羊トークン",
"zh-cn": "黑羊衍生物",
"custom": "黑羊衍生物"
},
"desc": {
"zh-cn": "由“替罪鬼羊”的效果特殊召唤而来。",
"custom": "由「替罪鬼羊」的效果特殊召唤。"
}
},
{
"indx": 111,
"name": {
"ja-jp": "水晶機巧トークン",
"zh-cn": "水晶机巧衍生物",
"custom": "水晶机巧衍生物"
},
"desc": {
"zh-cn": "由“水晶机巧-粉晶朱雀”的效果特殊召唤而来。此衍生物不可用作祭品。",
"custom": "由「水晶机巧-红晶雀」的效果特殊召唤。这衍生物不能解放。"
}
},
{
"indx": 112,
"name": {
"ja-jp": "古代の歯車トークン",
"zh-cn": "古代机械齿轮衍生物",
"custom": "古代的齿车衍生物"
},
"desc": {
"zh-cn": "由“古代机械齿轮弹射器”的效果特殊召唤而来。",
"custom": "由「古代的机械射出机」的效果特殊召唤。"
}
},
{
"indx": 113,
"name": {
"ja-jp": "青眼の白龍",
"zh-cn": "青眼白龙",
"custom": "青眼白龙"
},
"desc": {
"zh-cn": "以高攻击力著称的传说之龙。任何对手都能将之粉碎,其破坏力不可估量。",
"custom": "以高攻击力著称的传说之龙。任何对手都能粉碎,其破坏力不可估量。"
}
},
{
"indx": 114,
"name": {
"ja-jp": "ホーリー・エルフ",
"zh-cn": "圣精灵",
"custom": "圣精灵"
},
"desc": {
"zh-cn": "虽是柔弱的精灵,但会以神圣力量保护身体,守备力很高。",
"custom": "虽然是纤弱的精灵,但以神圣力量护身有很强的守备。"
}
},
{
"indx": 115,
"name": {
"ja-jp": "サイクロプス",
"zh-cn": "独眼巨人",
"custom": "独眼巨人"
},
"desc": {
"zh-cn": "只有一只眼睛的巨人。利用巨腕殴打敌人,需要特别小心。",
"custom": "一只眼的巨人。会用粗壮的双臂攻过来。必须注意。"
}
},
{
"indx": 116,
"name": {
"ja-jp": "ベビードラゴン",
"zh-cn": "宝贝龙",
"custom": "宝贝龙"
},
"desc": {
"zh-cn": "不可轻视的幼龙,隐藏着未知力量。",
"custom": "不可轻视的幼龙,说不定隐藏着什么力量。"
}
},
{
"indx": 117,
"name": {
"ja-jp": "ガーゴイル",
"zh-cn": "石像怪",
"custom": "石像怪"
},
"desc": {
"zh-cn": "让人误以为是石像,从而在黑暗中进行攻击。逃跑速度很快。",
"custom": "假装是石像,从黑暗中攻击。逃跑速度也很快。"
}
},
{
"indx": 118,
"name": {
"ja-jp": "グレムリン",
"zh-cn": "小精怪",
"custom": "小精怪"
},
"desc": {
"zh-cn": "喜欢恶作剧的小恶魔。从黑暗中攻击。要注意!",
"custom": "喜欢恶作剧的小恶魔,从黑暗中袭来。警惕!"
}
},
{
"indx": 119,
"name": {
"ja-jp": "砦を守る翼竜",
"zh-cn": "护城翼龙",
"custom": "守城的翼龙"
},
"desc": {
"zh-cn": "守护山上城寨的龙,从空中急速俯冲攻击敌人。",
"custom": "守护山寨的龙,从空中急速下降攻击敌人。"
}
},
{
"indx": 120,
"name": {
"ja-jp": "きのこマン",
"zh-cn": "香菇人",
"custom": "蘑菇人"
},
"desc": {
"zh-cn": "在潮湿的地方发挥实力!能从香菇伞散布菌丝发动攻击!",
"custom": "在潮湿的地方发挥力量!从蘑菇帽中吐丝攻击。"
}
},
{
"indx": 121,
"name": {
"ja-jp": "ヘルバウンド",
"zh-cn": "地狱亡灵",
"custom": "地狱亡灵"
},
"desc": {
"zh-cn": "出现在荒野的野兽亡灵。是一张聚集数量后非常棘手的卡牌。",
"custom": "出现在荒野的野兽亡灵。数量多了也很棘手。"
}
},
{
"indx": 122,
"name": {
"ja-jp": "暗黒の竜王",
"zh-cn": "暗黑的龙王",
"custom": "暗黑之龙王"
},
"desc": {
"zh-cn": "栖息于黑暗深处的龙,视力不太好。",
"custom": "生活在黑暗深处的龙,由于长期出活在暗处。视力不太好。"
}
},
{
"indx": 123,
"name": {
"ja-jp": "剣竜",
"zh-cn": "剑龙",
"custom": "剑龙"
},
"desc": {
"zh-cn": "全身都附有刀刺的恐龙,以突进为手段进行攻击。",
"custom": "全身都附有刀刺的恐龙。以突进为手段进行攻击。"
}
},
{
"indx": 124,
"name": {
"ja-jp": "バーバリアン2号",
"zh-cn": "野蛮人2号",
"custom": "野蛮人2号"
},
"desc": {
"zh-cn": "①:自己场上每有1只“野蛮人1号”,此卡的攻击力上升500。",
"custom": "①:自己场上的「野蛮人1号」每有1只,这张卡的攻击力上升500。"
}
},
{
"indx": 125,
"name": {
"ja-jp": "タイホーン",
"zh-cn": "大炮鸟",
"custom": "大炮鸟"
},
"desc": {
"zh-cn": "从口中射出炮弹攻击远处,在山上的炮击很强劲。",
"custom": "从口中发射远程炮弹,在深山里炮击威力强劲。"
}
},
{
"indx": 126,
"name": {
"ja-jp": "牛魔人",
"zh-cn": "牛魔人",
"custom": "牛魔人"
},
"desc": {
"zh-cn": "住在森林里的牛之魔人,用突起的角进行突袭。",
"custom": "住在森林里的牛魔人,用突起的角进行突袭。"
}
},
{
"indx": 127,
"name": {
"ja-jp": "炎の剣士",
"zh-cn": "炎之剑士",
"custom": "炎之剑士"
},
"desc": {
"zh-cn": "“炎之操纵者”+“传说的剑豪 MASAKI”",
"custom": "「火焰操纵者」+「传说的剑豪 正树」"
}
},
{
"indx": 128,
"name": {
"ja-jp": "時の魔術師",
"zh-cn": "时间魔术师",
"custom": "时间魔术师"
},
"desc": {
"zh-cn": "①:1回合1次,可在我方主要阶段发动此卡。投掷一次硬币,对正反做出猜测。猜中的场合,破坏对手场上所有怪兽。猜错的场合,破坏自己场上所有怪兽,并且自身将受到被破坏的表侧表示的怪兽的攻击力合计数值一半的伤害。",
"custom": "①:1回合1次,自己主要阶段才能发动。进行1次投掷硬币,对里表作猜测。猜中的场合,对方场上的怪兽全部破坏。猜错的场合,自己场上的怪兽全部破坏,自己受到表侧表示破坏的怪兽的攻击力合计数值一半的伤害。"
}
},
{
"indx": 129,
"name": {
"ja-jp": "封印されし者の右足",
"zh-cn": "被封印者的右足",
"custom": "被封印者的右足"
},
"desc": {
"zh-cn": "被封印的右足。解开封印后将获得无限的力量。",
"custom": "被封印的右足。假若解开封印,能得无限之力。"
}
},
{
"indx": 130,
"name": {
"ja-jp": "封印されし者の左足",
"zh-cn": "被封印者的左足",
"custom": "被封印者的左足"
},
"desc": {
"zh-cn": "被封印的左足。解开封印后将获得无限的力量。",
"custom": "被封印的左足。假若解开封印,能得无限之力。"
}
},
{
"indx": 131,
"name": {
"ja-jp": "封印されし者の右腕",
"zh-cn": "被封印者的右腕",
"custom": "被封印者的右腕"
},
"desc": {
"zh-cn": "被封印的右腕。解开封印后将获得无限的力量。",
"custom": "被封印的右腕。假若解开封印,能得无限之力。"
}
},
{
"indx": 132,
"name": {
"ja-jp": "封印されし者の左腕",
"zh-cn": "被封印者的左腕",
"custom": "被封印者的左腕"
},
"desc": {
"zh-cn": "被封印的左腕。解开封印后将获得无限的力量。",
"custom": "被封印的左腕。假若解开封印,能得无限之力。"
}
},
{
"indx": 133,
"name": {
"ja-jp": "封印されしエクゾディア",
"zh-cn": "被封印的艾克佐迪亚",
"custom": "被封印的艾克佐迪亚"
},
"desc": {
"zh-cn": "手牌中齐集此卡、“被封印者的右足”、“被封印者的左足”、“被封印者的右腕”以及“被封印者的左腕”时,我方决斗胜利。",
"custom": "这张卡和「被封印者的右腕」「被封印者的左腕」「被封印者的右足」「被封印者的左足」在手卡全部齐集时,自己决斗胜利。"
}
},
{
"indx": 134,
"name": {
"ja-jp": "デーモンの召喚",
"zh-cn": "恶魔的召唤",
"custom": "恶魔召唤"
},
"desc": {
"zh-cn": "使用黑暗力量迷惑人心的恶魔。在恶魔族中以相当强大的力量著称。",
"custom": "使用黑暗力量,迷惑人心的恶魔。在恶魔族中以相当强大的力量著称。"
}
},
{
"indx": 135,
"name": {
"ja-jp": "邪悪なるワーム・ビースト",
"zh-cn": "邪恶异虫兽",
"custom": "邪恶蠕虫兽"
},
"desc": {
"zh-cn": "我方结束阶段时,场上表侧表示的此卡返回至持有者手牌。",
"custom": "①:自己结束阶段发动。场上的表侧表示的这张卡回到持有者手卡。"
}
},
{
"indx": 136,
"name": {
"ja-jp": "ワイト",
"zh-cn": "白骨",
"custom": "白骨"
},
"desc": {
"zh-cn": "随处可见的骸骨妖怪。攻击虽弱,可一旦聚集成群便会非同小可。",
"custom": "任何地方都能出现的骨头怪,能力虽弱,但成群攻击会很麻烦。"
}
},
{
"indx": 137,
"name": {
"ja-jp": "インプ",
"zh-cn": "精怪",
"custom": "小鬼"
},
"desc": {
"zh-cn": "居于黑暗的小型魔鬼。攻击意外地强。要注意它头上的角。",
"custom": "住在黑暗的小鬼。攻击意外的强。要注意它头上的角。"
}
},
{
"indx": 138,
"name": {
"ja-jp": "ミノタウルス",
"zh-cn": "牛头魔人",
"custom": "牛头人"
},
"desc": {
"zh-cn": "拥有强大力量的牛怪,斧头一挥能砍倒一切东西。",
"custom": "拥有惊人力量的牛形怪物。斧头一挥横扫一切。"
}
},
{
"indx": 139,
"name": {
"ja-jp": "ルイーズ",
"zh-cn": "盔甲兵",
"custom": "路易斯"
},
"desc": {
"zh-cn": "身体虽小,但在草原上具备高强的守备力。",
"custom": "身体虽小,但在草原上具备高强的守备力。"
}
},
{
"indx": 140,
"name": {
"ja-jp": "岩窟魔人オーガ・ロック",
"zh-cn": "岩窟魔人 奥加洛克",
"custom": "岩窟魔人"
},
"desc": {
"zh-cn": "岩石之躯令其具有高强的守备力,当它挥起巨腕时务必要警惕。",
"custom": "岩石之躯成就高强的守备力。挥起巨腕时务必警惕。"
}
},
{
"indx": 141,
"name": {
"ja-jp": "マウンテン・ウォーリアー",
"zh-cn": "山之战士",
"custom": "山岳斗士"
},
"desc": {
"zh-cn": "是一个强壮的战士,即使在不易站立的地面也能敏捷地活动。",
"custom": "在处于不利的情况下也可以随意活动的强健战士。"
}
},
{
"indx": 142,
"name": {
"ja-jp": "アンデット・ウォーリアー",
"zh-cn": "不死战士",
"custom": "不死战士"
},
"desc": {
"zh-cn": "“白骨”+“格斗战士亚尔迪梅塔”",
"custom": "「白骨」+「格斗战士 阿提米特」"
}
},
{
"indx": 143,
"name": {
"ja-jp": "デビル・ドラゴン",
"zh-cn": "魔鬼龙",
"custom": "恶魔龙"
},
"desc": {
"zh-cn": "凶恶的龙,会吐出邪恶的火焰使人心坠入邪恶。",
"custom": "凶恶的龙。吐出邪恶的火焰使人变得邪恶。"
}
},
{
"indx": 144,
"name": {
"ja-jp": "二頭を持つキング・レックス",
"zh-cn": "双头恐龙王",
"custom": "双头恐龙王"
},
"desc": {
"zh-cn": "恐龙族中的强力卡牌,两个头会同时进行攻击。",
"custom": "恐龙族中的强力卡。用2个头同时攻击。"
}
},
{
"indx": 145,
"name": {
"ja-jp": "ジャッジ・マン",
"zh-cn": "审判者",
"custom": "审判者"
},
"desc": {
"zh-cn": "讨厌不分胜负的决斗的战士。棍棒的攻击很强哦!",
"custom": "是个不喜欢比赛不分胜负的战士。棍棒的攻击很强!"
}
},
{
"indx": 146,
"name": {
"ja-jp": "闇・道化師のサギー",
"zh-cn": "黑暗小丑沙奇",
"custom": "暗道化师 扎奇"
},
"desc": {
"zh-cn": "来去无踪的小丑,能以不可思议的动作避开攻击。",
"custom": "不知从哪里出现的道化师。用不可思议的动作来躲开攻击。"
}
},
{
"indx": 147,
"name": {
"ja-jp": "ブラック・マジシャン",
"zh-cn": "黑魔导",
"custom": "黑魔术师"
},
"desc": {
"zh-cn": "作为魔法使,攻击力・守备力均为最高级别。",
"custom": "作为魔法师,攻击力・守备力都是最高级别。"
}
},
{
"indx": 148,
"name": {
"ja-jp": "メデューサの亡霊",
"zh-cn": "美杜莎的亡灵",
"custom": "美杜莎的亡灵"
},
"desc": {
"zh-cn": "头上满是毒蛇的怪兽,一旦与她四目相接,就会被石化。",
"custom": "头发满是毒蛇的怪兽。一旦被她的目光盯上,就会被石化。"
}
},
{
"indx": 149,
"name": {
"ja-jp": "竜騎士ガイア",
"zh-cn": "龙骑士盖亚",
"custom": "龙骑士 盖亚"
},
"desc": {
"zh-cn": "“暗黑骑士盖亚”+“诅咒之龙”",
"custom": "「暗黑骑士 盖亚」+「诅咒之龙」"
}
},
{
"indx": 150,
"name": {
"ja-jp": "暗黒騎士ガイア",
"zh-cn": "暗黑骑士盖亚",
"custom": "暗黑骑士 盖亚"
},
"desc": {
"zh-cn": "比风速度更快的驭马骑士。注意其猛冲攻击。",
"custom": "乘坐跑得比风更快之马的骑士。要注意突进攻击。"
}
},
{
"indx": 151,
"name": {
"ja-jp": "カース・オブ・ドラゴン",
"zh-cn": "诅咒之龙",
"custom": "诅咒之龙"
},
"desc": {
"zh-cn": "邪恶的龙。其使用暗黑力量的攻击强而有力。",
"custom": "邪恶之龙。使用黑暗力量的攻击强而有力。"
}
},
{
"indx": 152,
"name": {
"ja-jp": "壺魔人",
"zh-cn": "壶魔人",
"custom": "壶魔人"
},
"desc": {
"zh-cn": "反转:破坏场上表侧表示的“龙族・封印之壶”。破坏的场合,将场上所有表侧表示的龙族怪兽变为攻击表示。",
"custom": "反转:场上表侧表示的「龙族封印之壶」破坏。破坏时,场上表侧表示存在的龙族怪兽全部攻击表示。"
}
},
{
"indx": 153,
"name": {
"ja-jp": "エルフの剣士",
"zh-cn": "精灵剑士",
"custom": "精灵剑士"
},
"desc": {
"zh-cn": "学会剑术的精灵。以快速的攻击作弄敌人。",
"custom": "学会了剑术的精灵。以快速的攻击作弄敌人。"
}
},
{
"indx": 154,
"name": {
"ja-jp": "幻想師・ノー・フェイス",
"zh-cn": "幻想师・无面者",
"custom": "无脸幻想师"
},
"desc": {
"zh-cn": "制造幻影,能轻易躲开敌人的攻击。",
"custom": "制造幻影,能轻易地躲避敌人的攻击。"
}
},
{
"indx": 155,
"name": {
"ja-jp": "カルボナーラ戦士",
"zh-cn": "炭烧战士",
"custom": "炭烧战士"
},
"desc": {
"zh-cn": "“磁力战士1号”+“磁力战士2号”",
"custom": "「磁力战士1号」+「磁力战士2号」"
}
},
{
"indx": 156,
"name": {
"ja-jp": "ホーリー・ドール",
"zh-cn": "神圣人偶",
"custom": "神圣人偶"
},
"desc": {
"zh-cn": "操纵神圣之力的人偶,在黑暗中拥有很强的攻击力。",
"custom": "操纵神圣力量的人偶。在黑暗之中攻击力很强。"
}
},
{
"indx": 157,
"name": {
"ja-jp": "エレキッズ",
"zh-cn": "电力小子",
"custom": "电气小子"
},
"desc": {
"zh-cn": "雷属性攻击异常厉害,若轻视它则会遭到电击。",
"custom": "雷属性攻击异常厉害,若轻视它则会遭到电击。"
}
},
{
"indx": 158,
"name": {
"ja-jp": "グリフォール",
"zh-cn": "狮鹫兽卫",
"custom": "狮鹫兽卫"
},
"desc": {
"zh-cn": "擅长用坚硬的身体防卫。不彻底的攻击,都会被弹回去。",
"custom": "善于用坚固的身体守备。将对方的攻击反弹。"
}
},
{
"indx": 159,
"name": {
"ja-jp": "サイガー",
"zh-cn": "犀牛",
"custom": "犀牛"
},
"desc": {
"zh-cn": "虽然守备不像外表般高强。但是犀牛角的攻击力很强。",
"custom": "虽然守备不像外表般高强。但是角的攻击力还是很强。"
}
},
{
"indx": 160,
"name": {
"ja-jp": "クリッター",
"zh-cn": "三眼怪",
"custom": "三眼怪"
},
"desc": {
"zh-cn": "此卡名的效果1回合仅可使用1次。①:此卡从场上被送至墓地的情况下发动。从牌组将1只攻击力1500以下的怪兽加入手牌。此回合,自己不可发动以此效果加入手牌的卡及该卡的同名卡的效果。",
"custom": "这个卡名的效果1回合只能使用1次。\r\n①:这张卡从场上送去墓地的场合发动。从卡组把1只攻击力1500以下的怪兽加入手卡。这个回合,自己不能把这个效果加入手卡的卡以及那些同名卡的效果发动。"
}
},
{
"indx": 161,
"name": {
"ja-jp": "ビック・アント",
"zh-cn": "大蚂蚁",
"custom": "巨大蚂蚁"
},
"desc": {
"zh-cn": "住在密林里的巨大蚂蚁,攻击和守备都意外地强。",
"custom": "住在密林里的巨大蚂蚁。攻击和守备都意外的强。"
}
},
{
"indx": 162,
"name": {
"ja-jp": "昆虫人間",
"zh-cn": "昆虫人",
"custom": "昆虫人"
},
"desc": {
"zh-cn": "群居生活的昆虫,森林是他们的乐园。",
"custom": "群居生活的昆虫。森林中是他们的乐园。"
}
},
{
"indx": 163,
"name": {
"ja-jp": "鎧蜥蜴",
"zh-cn": "铠蜥蜴",
"custom": "铠蜥蜴"
},
"desc": {
"zh-cn": "拥有坚硬躯体的蜥蜴,要是被它那张大嘴咬到会立即毙命。",
"custom": "拥有坚硬躯体的蜥蜴。如果被咬到会立即毙命。"
}
},
{
"indx": 164,
"name": {
"ja-jp": "ヘラクレス・ビートル",
"zh-cn": "独角虫",
"custom": "大力独角仙"
},
"desc": {
"zh-cn": "巨大的甲虫,锐利的角与坚硬的身体非常强力。",
"custom": "巨大独角仙。尖角的攻击和坚硬身体的防御强而有力。"
}
},
{
"indx": 165,
"name": {
"ja-jp": "キラー・ビー",
"zh-cn": "杀人蜂",
"custom": "杀人蜂"
},
"desc": {
"zh-cn": "巨大的黄蜂,攻击出乎意料的强,若受到它们群体的攻击则会非常危险。",
"custom": "巨大的黄蜂,攻击出乎意料的强,若被群体攻击则非常危险。"
}
},
{
"indx": 166,
"name": {
"ja-jp": "ゴキボール",
"zh-cn": "球型虫",
"custom": "蟑螂球"
},
"desc": {
"zh-cn": "球形的蟑螂,会咕噜咕噜地滚动攻击,守备意外地高。",
"custom": "圆溜溜的蟑螂。滚来滚去进行攻击。守备想不到还挺强。"
}
},
{
"indx": 167,
"name": {
"ja-jp": "吸血ノミ",
"zh-cn": "吸血跳蚤",
"custom": "吸血跳蚤"
},
"desc": {
"zh-cn": "攻击力高强的巨型吸血跳蚤,轻视它会非常危险。",
"custom": "攻击力高强的巨型吸血跳蚤,轻视它会非常危险。"
}
},
{
"indx": 168,
"name": {
"ja-jp": "ラーバモス",
"zh-cn": "飞蛾毛虫",
"custom": "飞蛾幼虫"
},
"desc": {
"zh-cn": "此卡不可通常召唤。释放1只装备了“进化之茧”后经过2个或以上我方回合的“小毛虫”的场合,可特殊召唤此卡。",
"custom": "这张卡不能通常召唤。需要装备了「进化之茧」2回合(数自己的回合数)的「幼虫宝宝」做祭品特殊召唤上场。"
}
},
{
"indx": 169,
"name": {
"ja-jp": "グレート・モス",
"zh-cn": "大飞蛾",
"custom": "大飞蛾"
},
"desc": {
"zh-cn": "此卡不可通常召唤。释放1只装备了“进化之茧”后经过4个以上我方回合的“小毛虫”的场合,可特殊召唤此卡。",
"custom": "装备了「进化之茧」的「幼虫宝宝」4回合后(用自己的回合来数)作祭品来特殊召唤。"
}
},
{
"indx": 170,
"name": {
"ja-jp": "クリボー",
"zh-cn": "库里波",
"custom": "栗子球"
},
"desc": {
"zh-cn": "①:对手怪兽进行攻击的场合,可在伤害计算时从手牌中弃置此卡,该战斗中我方所受到的战斗伤害变为0。",
"custom": "①:对方怪兽的攻击要让自己受到战斗伤害的伤害计算时把这张卡从手卡丢弃才能发动。那次战斗发生的对自己的战斗伤害变成0。"
}
},
{
"indx": 171,
"name": {
"ja-jp": "マンモスの墓場",
"zh-cn": "猛犸的墓地",
"custom": "猛犸的墓场"
},
"desc": {
"zh-cn": "守护着伙伴墓地的猛犸,对任何胆敢践踏墓地的盗墓者会毫不客气地进行攻击。",
"custom": "守护着伙伴墓地的猛犸,对于任何胆敢践踏墓地的盗墓者进行毫不客气的攻击。"
}
},
{
"indx": 172,
"name": {
"ja-jp": "グレート・ホワイト",
"zh-cn": "大白鲨",
"custom": "大白鲨"
},
"desc": {
"zh-cn": "巨大的白色鲨鱼,一旦被那血盆大口咬住便无法脱身。",
"custom": "巨大的白鲨,若被咬到绝对无法脱身。"
}
},
{
"indx": 173,
"name": {
"ja-jp": "オオカミ",
"zh-cn": "狼",
"custom": "狼 "
},
"desc": {
"zh-cn": "现今不容易看见的狼。会运用灵敏的鼻子寻找猎物。",
"custom": "比较难见到的狼。用灵敏的鼻子寻找猎物。"
}
},
{
"indx": 174,
"name": {
"ja-jp": "ハーピィ・レディ",
"zh-cn": "神鹰女郎",
"custom": "鹰身女郎"
},
"desc": {
"zh-cn": "身上长出羽毛的人,会翩翩起舞并进行凌厉快攻。",
"custom": "人长出羽毛的魔兽,表演华丽的舞蹈进行快攻。"
}
},
{
"indx": 175,
"name": {
"ja-jp": "ハーピィ・レディ三姉妹",
"zh-cn": "神鹰女郎三姐妹",
"custom": "鹰身女郎三姐妹"
},
"desc": {
"zh-cn": "此卡不可通常召唤。可以“万华镜-华丽的分身-”的效果特殊召唤。",
"custom": "这张卡不能通常召唤。「万华镜-华丽的分身-」的效果可以特殊召唤。"
}
},
{
"indx": 176,
"name": {
"ja-jp": "タイガー・アックス",
"zh-cn": "老虎斧战士",
"custom": "老虎斧战士"
},
"desc": {
"zh-cn": "手持战斧的兽战士。敏捷的动作能发出强劲的攻击。",
"custom": "手持斧子的兽战士。敏捷动作下所发的攻击很强。"
}
},
{
"indx": 177,
"name": {
"ja-jp": "シルバー・フォング",
"zh-cn": "银牙之狼",
"custom": "银牙狼"
},
"desc": {
"zh-cn": "闪烁着银光的狼。看起来很漂亮,但性格却很凶暴。",
"custom": "银光闪闪的狼。外表虽然美,性格却凶暴。"
}
},
{
"indx": 178,
"name": {
"ja-jp": "魔物の狩人",
"zh-cn": "魔物的猎人",
"custom": "魔物狩人"
},
"desc": {
"zh-cn": "狩猎人类的凶恶猎人。拥有能击碎岩石的巨大力量。",
"custom": "猎杀人类的猎手,具有连岩石都能击碎的力量。"
}
},
{
"indx": 179,
"name": {
"ja-jp": "究極完全態・グレート・モス",
"zh-cn": "终极完全体・大飞蛾",
"custom": "究极完全态大飞蛾"
},
"desc": {
"zh-cn": "此卡不可通常召唤。1只装备了“进化之茧”的“小毛虫”经过了6个我方回合的场合,可将其释放来特殊召唤此卡。",
"custom": "这张卡不能通常召唤。把有「进化之茧」装备的状态用自己回合计算经过6回合以上的自己场上1只「幼虫宝宝」解放的场合可以特殊召唤。"
}
},
{
"indx": 180,
"name": {
"ja-jp": "ガルーザス",
"zh-cn": "加鲁撒斯",
"custom": "加鲁撒斯"
},
"desc": {
"zh-cn": "头部是龙的兽战士。他的斧头攻击相当强劲。",
"custom": "长有龙头的兽战士,斧头具有相当大的威力。"
}
},
{
"indx": 181,
"name": {
"ja-jp": "千年竜",
"zh-cn": "千年龙",
"custom": "千年龙"
},
"desc": {
"zh-cn": "“时间魔术师”+“宝贝龙”",
"custom": "「时间魔术师」+「宝贝龙」"
}
},
{
"indx": 182,
"name": {
"ja-jp": "デビル・クラーケン",
"zh-cn": "魔鬼乌贼",
"custom": "恶魔乌贼"
},
"desc": {
"zh-cn": "潜在海里的巨大乌贼,会从海中突然出现并发动攻击。",
"custom": "潜在海里的巨大章鱼。从海中突然出现并攻击。"
}
},
{
"indx": 183,
"name": {
"ja-jp": "海月-ジェリーフィッシュ-",
"zh-cn": "海月-水母-",
"custom": "水母"
},
"desc": {
"zh-cn": "漂浮于海中的水母,半透明的身体使人难以察觉。",
"custom": "漂浮在海面上的海蜇,半透明的身体使人难以察觉。"
}
},
{
"indx": 184,
"name": {
"ja-jp": "進化の繭",
"zh-cn": "进化之茧",
"custom": "进化之茧"
},
"desc": {
"zh-cn": "此卡可被视为装备卡从手牌装备于我方场上的1只“小毛虫”。以此效果装备此卡的“小毛虫”的原本攻击力、守备力将适用“进化之茧”的数值。",
"custom": "这张卡可以在手上当作装备卡使用装备在场上表侧表示的「幼虫宝宝」上。装备的场合,「幼虫宝宝」的攻防数值使用「进化之茧」的数值。"
}
},
{
"indx": 185,
"name": {
"ja-jp": "海竜神",
"zh-cn": "海龙神",
"custom": "海龙神"
},
"desc": {
"zh-cn": "被称为海洋霸主的海中巨龙,能掀起海啸吞噬一切。",
"custom": "被称为海洋之主的海龙。掀起海啸吞噬一切。"
}
},
{
"indx": 186,
"name": {
"ja-jp": "岩石の巨兵",
"zh-cn": "岩石巨兵",
"custom": "岩石巨兵"
},
"desc": {
"zh-cn": "岩石巨人士兵,粗壮手臂的攻击能让大地动摇。",
"custom": "岩石的巨人兵,巨腕的攻击能震动大地。"
}
},
{
"indx": 187,
"name": {
"ja-jp": "人喰い植物",
"zh-cn": "食人植物",
"custom": "食人植物"
},
"desc": {
"zh-cn": "食肉花。伪装成漂亮花朵,然后猛地一口吃掉接近它的人。",
"custom": "食肉花。让人觉得是漂亮的花,然后猛地一口吃掉接近它的人。"
}
},
{
"indx": 188,
"name": {
"ja-jp": "クロコダイラス",
"zh-cn": "鳄鱼人",
"custom": "鳄鱼人"
},
"desc": {
"zh-cn": "拥有智慧且更加狂暴化的鳄鱼。以身上坚硬的鳞片反弹对方的攻击。",
"custom": "有智慧而且狂暴化的鳄鱼。以坚硬的鳞片反弹对方的攻击。"
}
},
{
"indx": 189,
"name": {
"ja-jp": "グラップラー",
"zh-cn": "捕猎蛇",
"custom": "捕猎蛇"
},
"desc": {
"zh-cn": "狡猾的蛇。要小心它用粗长的身体发动束缚攻击!",
"custom": "狡猾的蛇。用又粗又长的身体勒紧对手的攻击必须注意!"
}
},
{
"indx": 190,
"name": {
"ja-jp": "アックス・レイダー",
"zh-cn": "刀斧怪",
"custom": "巨斧袭击者"
},
"desc": {
"zh-cn": "持斧的战士。单手挥舞斧头的攻击十分强劲。",
"custom": "持斧的战士。单手挥舞斧头的攻击相当强劲。"
}
},
{
"indx": 191,
"name": {
"ja-jp": "メガザウラー",
"zh-cn": "百万角龙",
"custom": "巨身多角龙"
},
"desc": {
"zh-cn": "全身长满角的恐龙,突击攻击相当厉害!",
"custom": "全身长满角的恐龙。突击攻击很强烈!"
}
},
{
"indx": 192,
"name": {
"ja-jp": "ワイルド・ラプター",
"zh-cn": "野性猛龙",
"custom": "荒野盗龙"
},
"desc": {
"zh-cn": "擅长奔跑的恐龙,利用尖锐的爪子进行攻击。",
"custom": "擅长奔跑的恐龙,利用尖锐的爪子进行攻击。"
}
},
{
"indx": 193,
"name": {
"ja-jp": "屍を貪る竜",
"zh-cn": "贪尸龙",
"custom": "贪尸龙"
},
"desc": {
"zh-cn": "什么都能咬碎的恐龙,攻击力十分恐怖。",
"custom": "什么都能咬碎的恐龙,攻击力十分恐怖。"
}
},
{
"indx": 194,
"name": {
"ja-jp": "真紅眼の黒竜",
"zh-cn": "真红眼黑龙",
"custom": "真红眼黑龙"
},
"desc": {
"zh-cn": "拥有真红之眼的黑龙,愤怒的黑炎会把映入其眼帘的一切烧成灰烬。",
"custom": "拥有真红之眼的黑龙。愤怒的黑炎会把映入其眼者全部烧成灰烬。"
}
},
{
"indx": 195,
"name": {
"ja-jp": "闇晦ましの城",
"zh-cn": "暗晦之城",
"custom": "暗晦之城"
},
"desc": {
"zh-cn": "反转:令场上所有表侧表示的不死族怪兽的攻击力和守备力上升200点。此外,只要此卡以表侧表示存在于场上,每次在我方的准备阶段令不死族怪兽的攻击力和守备力上升200点。此效果最多持续到效果发动后我方的第4个准备阶段。",
"custom": "反转:场上表侧表示的全部不死族的怪兽攻击力・守备力加200。只要这张卡在场上表侧表示存在,自己的每个准备阶段不死族的攻守力都会加200。这个效果持续到自己的第4个准备阶段。"
}
},
{
"indx": 196,
"name": {
"ja-jp": "カードを狩る死神",
"zh-cn": "狩猎卡牌的死神",
"custom": "猎卡死神"
},
"desc": {
"zh-cn": "反转:选择场上的1张陷阱卡并将其破坏。选择被盖牌的卡牌的场合,翻开该卡进行确认,若为陷阱卡则破坏,若为魔法卡的场合则恢复原状。",
"custom": "反转:选择场上存在的1张陷阱卡破坏。选择的卡是盖放的场合,把那张卡翻开确认,是陷阱卡则破坏。魔法卡的场合回到原状。"
}
},
{
"indx": 197,
"name": {
"ja-jp": "闇魔界の覇王",
"zh-cn": "暗魔界的霸王",
"custom": "暗魔界的霸王"
},
"desc": {
"zh-cn": "使用强大的黑暗之力,破坏周围的一切。",
"custom": "使用强大的暗之力量,破坏周围的一切。"
}
},
{
"indx": 198,
"name": {
"ja-jp": "バロックス",
"zh-cn": "巴洛可斯",
"custom": "巴洛克斯"
},
"desc": {
"zh-cn": "“杀人熊猫”+“石像怪”",
"custom": "「杀人熊猫」+「石像怪」"
}
},
{
"indx": 199,
"name": {
"ja-jp": "ダーク・キメラ",
"zh-cn": "暗黑奇美拉",
"custom": "暗黑奇美拉"
},
"desc": {
"zh-cn": "栖息于魔界的怪兽,可吐出暗炎进行攻击。",
"custom": "生息在魔界的怪兽。吐出暗炎攻击。"
}
},
{
"indx": 200,
"name": {
"ja-jp": "メタル・ガーディアン",
"zh-cn": "金属守护者",
"custom": "金属守护者"
},
"desc": {
"zh-cn": "守护魔界宝物的恶魔,在黑暗中的守备力相当强。",
"custom": "守护魔界宝物的恶魔在黑暗中守备相当强。"
}
},
{
"indx": 201,
"name": {
"ja-jp": "カタパルト・タートル",
"zh-cn": "飞箭龟",
"custom": "弹射龟"
},
"desc": {
"zh-cn": "1回合1次,可释放我方场上1只怪兽来发动此卡。给予对手生命该怪兽攻击力一半数值的伤害。",
"custom": "1回合1次,把自己场上1只怪兽解放才能发动。给与对方基本分解放的怪兽的攻击力一半数值的伤害。"
}
},
{
"indx": 202,
"name": {
"ja-jp": "逆転の女神",
"zh-cn": "逆转的女神",
"custom": "逆转之女神"
},
"desc": {
"zh-cn": "以神圣之力守护弱者,赋予弱者逆转力量的女神。",
"custom": "用神圣之力守护弱者,给予逆转之力的女神。"
}
},
{
"indx": 203,
"name": {
"ja-jp": "ケンタウロス",
"zh-cn": "人马兽",
"custom": "人马兽"
},
"desc": {
"zh-cn": "人马合一的怪兽,奔跑如飞、无人可及。",
"custom": "人和马合为一体的怪物。跑得很快,谁都追不上。"
}
},
{
"indx": 204,
"name": {
"ja-jp": "ミノケンタウロス",
"zh-cn": "牛头人马兽",
"custom": "牛头人马兽"
},
"desc": {
"zh-cn": "“牛头魔人”+“人马兽”",
"custom": "「牛头人」+「人马兽」"
}
},
{
"indx": 205,
"name": {
"ja-jp": "鎧武者斬鬼",
"zh-cn": "铠武者斩鬼",
"custom": "铠武者 斩鬼"
},
"desc": {
"zh-cn": "喜欢单挑,能抓住一瞬间的机会施展拔刀术进行攻击。",
"custom": "喜好单挑,能抓住一瞬间的机会发动反击。"
}
},
{
"indx": 206,
"name": {
"ja-jp": "地を這うドラゴン",
"zh-cn": "伏地之龙",
"custom": "伏地龙"
},
"desc": {
"zh-cn": "力量变弱无法再度飞翔的龙,不过攻击依然很强。",
"custom": "力量弱小无法飞天的龙,但攻击还是很强的。"
}
},
{
"indx": 207,
"name": {
"ja-jp": "マーダーサーカス",
"zh-cn": "杀人小丑",
"custom": "杀人小丑"
},
"desc": {
"zh-cn": "当场上的此卡由守备表示变为表侧攻击表示时,选择对手场上的1只怪兽令其回到持有者的手牌中。",
"custom": "这张卡的表示形式从守备表示变成攻击表示时,对方场上的1只怪兽回到持有者手卡。"
}
},
{
"indx": 208,
"name": {
"ja-jp": "鎧武者ゾンビ",
"zh-cn": "铠武者僵尸",
"custom": "铠武者僵尸"
},
"desc": {
"zh-cn": "充满怨念而苏醒的武者,要警惕挥舞于黑暗中的太刀。",
"custom": "充满怨念而苏醒的武者,要警惕在黑暗中挥舞的太刀。"
}
},
{
"indx": 209,
"name": {
"ja-jp": "ドラゴン・ゾンビ",
"zh-cn": "龙僵尸",
"custom": "龙僵尸"
},
"desc": {
"zh-cn": "被魔力唤醒的龙,吐出的气息能使物体腐烂。",
"custom": "被魔力唤醒的龙,吐出的气息能使物体腐烂。"
}
},
{
"indx": 210,
"name": {
"ja-jp": "マーダーサーカス・ゾンビ",
"zh-cn": "杀人小丑僵尸",
"custom": "杀人小丑僵尸"
},
"desc": {
"zh-cn": "借由黑暗之力重生的小丑,利用飘忽不定的舞蹈将对方引向死亡。",
"custom": "使用黑暗力量重生的小丑,利用摇晃的舞蹈将对方引向死亡。"
}
},
{
"indx": 211,
"name": {
"ja-jp": "ゴースト王-パンプキング-",
"zh-cn": "鬼魂南瓜王",
"custom": "幽灵王-南瓜王-"
},
"desc": {
"zh-cn": "只要“暗晦之城”以表侧表示存在于场上,此卡的攻击力和守备力便上升100点。每次我方的准备阶段此卡的攻防上升100点。此效果最多持续到效果发动后我方的第4个准备阶段。",
"custom": "只要「暗晦之城」在场上表侧表示存在,这张卡的攻击力・守备力上升100。每次自己的准备阶段这张卡的攻防加100。这个效果持续到自己的第4个准备阶段。"
}
},
{
"indx": 212,
"name": {
"ja-jp": "格闘戦士アルティメーター",
"zh-cn": "格斗战士亚尔迪梅塔",
"custom": "格斗战士 阿提米特"
},
"desc": {
"zh-cn": "不使用任何武器,空手战斗的格斗战士。",
"custom": "不使用任何武器,空手战斗的格斗战士。"
}
},
{
"indx": 213,
"name": {
"ja-jp": "邪炎の翼",
"zh-cn": "邪炎之翼",
"custom": "邪炎之翼"
},
"desc": {
"zh-cn": "原形是红黑色燃烧着的翅膀,从全身喷出火焰进行攻击。",
"custom": "原形是红黑色燃烧着的翅膀。从全身喷出火焰进行攻击。"
}
},
{
"indx": 214,
"name": {
"ja-jp": "闇の仮面",
"zh-cn": "暗之假面",
"custom": "暗之假面"
},
"desc": {
"zh-cn": "反转:选择我方墓地1张陷阱卡加入手牌。",
"custom": "①:这张卡反转的场合,以自己墓地1张陷阱卡为对象发动。那张卡加入手卡。"
}
},
{
"indx": 215,
"name": {
"ja-jp": "転職の魔鏡",
"zh-cn": "转职的魔镜",
"custom": "转职的魔镜"
},
"desc": {
"zh-cn": "恶魔之镜。即使遭受攻击也不会破损,能够抵挡伤害。",
"custom": "恶魔镜。受到攻击也不会破裂、守备损伤。"
}
},
{
"indx": 216,
"name": {
"ja-jp": "黒魔族のカーテン",
"zh-cn": "黑魔族的布幕",
"custom": "黑魔族的幕帘"
},
"desc": {
"zh-cn": "由魔术师制作的帘布,据说可以提升魔法师的力量。",
"custom": "魔术师制作的窗帘。据说可以提升魔法师的力量。"
}
},
{
"indx": 217,
"name": {
"ja-jp": "トモザウルス",
"zh-cn": "结伴恐龙",
"custom": "小恐龙"
},
"desc": {
"zh-cn": "体形虽小但性格凶暴,同伴之间经常争斗。",
"custom": "体形虽然小,但性格凶暴。经常和同伴相争。"
}
},
{
"indx": 218,
"name": {
"ja-jp": "風の精霊",
"zh-cn": "风之精灵",
"custom": "风之精灵"
},
"desc": {
"zh-cn": "自由飞翔的风之精灵,一旦心情不好就会化身为狂风。",
"custom": "自在飞翔的风之精灵。心情不好的时候就会变成狂风。"
}
},
{
"indx": 219,
"name": {
"ja-jp": "シャドウ・ファイター",
"zh-cn": "暗影斗士",
"custom": "暗影战士"
},
"desc": {
"zh-cn": "实体和影子会分开攻击。一不小心就会被夹击哦。",
"custom": "用实体和影子袭击对方。疏忽的话就会受到夹击的哦。"
}
},
{
"indx": 220,
"name": {
"ja-jp": "手招きする墓場",
"zh-cn": "招手的墓地",
"custom": "招手的墓场"
},
"desc": {
"zh-cn": "给予死者更为强大的力量,引诱生者步向死亡的墓地。",
"custom": "给予死者进一步提升的力量,引诱生者步向死亡的墓场。"
}
},
{
"indx": 221,
"name": {
"ja-jp": "心眼の女神",
"zh-cn": "心眼的女神",
"custom": "心眼之女神"
},
"desc": {
"zh-cn": "此卡可代替融合素材怪兽的其中1只来进行融合。不过此时其他的融合素材怪兽必须是指定的怪兽。",
"custom": "这张卡可以代替融合怪兽素材的其中1只来融合。这个时候,其他的融合素材必须是指定的融合素材。"
}
},
{
"indx": 222,
"name": {
"ja-jp": "東方の英雄",
"zh-cn": "东方英雄",
"custom": "东方英雄"
},
"desc": {
"zh-cn": "传说来自遥远的东方国度的武士,手持之刀相当锋利。",
"custom": "传说来自遥远的东方国度的武士。手持的刀相当的锋利。"
}
},
{
"indx": 223,
"name": {
"ja-jp": "死の沈黙の天使 ドマ",
"zh-cn": "死之沉默天使 多玛",
"custom": "死之沉默天使 多玛"
},
"desc": {
"zh-cn": "司职死亡的天使。若被这家伙盯上,则难逃一死。",
"custom": "司职死亡的天使,若被这家伙盯上,难逃一死。"
}
},
{
"indx": 224,
"name": {
"ja-jp": "命を食する者",
"zh-cn": "食命者",
"custom": "食命者"
},
"desc": {
"zh-cn": "嗜食所有生物的灵魂,将其转为自身能量的恶魔。",
"custom": "嗜食所有生物的灵魂,将将其作为自己的能量。"
}
},
{
"indx": 225,
"name": {
"ja-jp": "ダーク・グレイ",
"zh-cn": "黑暗灰羚",
"custom": "暗黑灰羚"
},
"desc": {
"zh-cn": "拥有灰色身体的野兽。是一种罕见的贵重生物。",
"custom": "全身灰色的野兽,是非常少见的珍贵品种。"
}
},
{
"indx": 226,
"name": {
"ja-jp": "白い泥棒",
"zh-cn": "白衣大盗",
"custom": "白衣怪盗"
},
"desc": {
"zh-cn": "此卡对对手生命造成战斗伤害时,随机弃置对手1张手牌。",
"custom": "这张卡造成对方玩家基本分伤害的时候,对方随机丢弃1张卡。"
}
},
{
"indx": 227,
"name": {
"ja-jp": "カオス・ウィザード",
"zh-cn": "混沌巫师",
"custom": "混沌男巫"
},
"desc": {
"zh-cn": "“圣精灵”+“黑魔族的布幕”",
"custom": "「圣精灵」+「黑魔族的幕帘」"
}
},
{
"indx": 228,
"name": {
"ja-jp": "ナイトメア・スコーピオン",
"zh-cn": "恶梦毒蝎",
"custom": "梦魇蝎"
},
"desc": {
"zh-cn": "令人陷入恶梦,并在其呻吟时用四条有毒的尾巴发动突刺攻击。",
"custom": "造出恶梦,并在呻吟的时候用四条有毒的尾巴刺向敌人。"
}
},
{
"indx": 229,
"name": {
"ja-jp": "本の精霊 ホーク・ビショップ",
"zh-cn": "书本的精灵 霍克彼修普",
"custom": "书之精灵 飞鹰主教"
},
"desc": {
"zh-cn": "书之精灵,拥有非常高的智慧,能发动多彩多样的攻击。",
"custom": "木之精灵,拥有非常高的智慧,发动多彩的攻击。"
}
},
{
"indx": 230,
"name": {
"ja-jp": "物陰の協力者",
"zh-cn": "暗处的协力者",
"custom": "阴暗处的协力者"
},
"desc": {
"zh-cn": "会在暗中偷偷协助他人的可爱小人。",
"custom": "从暗处协助他人的可爱小人。"
}
},
{
"indx": 231,
"name": {
"ja-jp": "地獄の裁判",
"zh-cn": "地狱的判决",
"custom": "地狱的裁判"
},
"desc": {
"zh-cn": "将敌人封在棺材中,由地狱使者刺一刀执行判决。",
"custom": "将敌人封入棺材里。然后由地狱使者下达判决。"
}
},
{
"indx": 232,
"name": {
"ja-jp": "ドリーム・ピエロ",
"zh-cn": "梦境小丑",
"custom": "梦幻小丑"
},
"desc": {
"zh-cn": "此卡的表示形式从攻击表示变成表侧守备表示时,破坏对手场上的1只怪兽。",
"custom": "这张卡的表示形式从攻击表示变成守备表示时,破坏对方场上的1只怪兽。"
}
},
{
"indx": 233,
"name": {
"ja-jp": "眠れる獅子",
"zh-cn": "沉睡的狮子",
"custom": "睡狮子"
},
"desc": {
"zh-cn": "平时一直在沉睡的猛兽。一旦苏醒就对它无计可施。",
"custom": "平时沉睡着的猛兽。一旦苏醒就使人招架不住。"
}
},
{
"indx": 234,
"name": {
"ja-jp": "ヤマタノ竜絵巻",
"zh-cn": "八岐大蛇的绘卷",
"custom": "八俣龙绘卷"
},
"desc": {
"zh-cn": "由绘卷中的龙实体化后进行攻击,守备力相当低。",
"custom": "画卷上的龙实体化后进行攻击。守备力很低。"
}
},
{
"indx": 235,
"name": {
"ja-jp": "ダーク・プラント",
"zh-cn": "黑暗之花",
"custom": "暗黑植物"
},
"desc": {
"zh-cn": "在被污染的土地以及黑暗之力的环境下生长的花,非常凶暴。",
"custom": "在被污染的土地以及暗之力的环境下生长的花。非常凶暴。"
}
},
{
"indx": 236,
"name": {
"ja-jp": "アイアン・ハート",
"zh-cn": "钢铁之心",
"custom": "钢铁之心"
},
"desc": {
"zh-cn": "在古代文明的遗迹中发现,并以破坏殆尽为目的的机器。",
"custom": "在古代文明遗迹里发现的机器。破坏是它的唯一目的。"
}
},
{
"indx": 237,
"name": {
"ja-jp": "セイント・バード",
"zh-cn": "神圣鸟",
"custom": "圣鸟"
},
"desc": {
"zh-cn": "尾巴非常长的鸟。全身散发出神圣的光芒。",
"custom": "尾巴非常长的鸟,全身散发出神圣的光芒。"
}
},
{
"indx": 238,
"name": {
"ja-jp": "戦いの神 オリオン",
"zh-cn": "战斗之神 奥利安",
"custom": "战神 奥利安"
},
"desc": {
"zh-cn": "人称战斗之神的天使。从未有人见过他战斗的模样。",
"custom": "被誉为战神的天使。不过谁也没见过那场战事。"
}
},
{
"indx": 239,
"name": {
"ja-jp": "アサシン",
"zh-cn": "暗杀者",
"custom": "暗杀者"
},
"desc": {
"zh-cn": "能在黑暗中无声无息地接近敌人,是一个专司暗杀的战士。",
"custom": "能在黑暗中悄然无声地靠近敌人,精通暗杀的战士。"
}
},
{
"indx": 240,
"name": {
"ja-jp": "ラムーン",
"zh-cn": "住月魔法师",
"custom": "月之魔法师"
},
"desc": {
"zh-cn": "住在月亮上的魔法使。会利用月亮拥有的魔力迷倒对手。",
"custom": "住在月亮上的魔法师。用月之魔力迷惑对方。"
}
},
{
"indx": 241,
"name": {
"ja-jp": "眠り子",
"zh-cn": "睡眠之子",
"custom": "睡眠之子"
},
"desc": {
"zh-cn": "虽身为小孩却能操控梦魔令人陷入沉睡永远不再醒来。",
"custom": "孩子被梦魔所操控永远沉睡着不再醒来。"
}
},
{
"indx": 242,
"name": {
"ja-jp": "ウェザー・コントロール",
"zh-cn": "天气控制者",
"custom": "气象控制员"
},
"desc": {
"zh-cn": "可以自由操纵天气,山里变化无常的天气就是这家伙的杰作。",
"custom": "可以自由操纵天气。山里的天气无常就是这家伙的杰作。"
}
},
{
"indx": 243,
"name": {
"ja-jp": "オクトバーサー",
"zh-cn": "章鱼鱼人",
"custom": "章鱼怪"
},
"desc": {
"zh-cn": "是一个头部是鱼,脚部是章鱼的奇妙生物。使用长枪攻击。",
"custom": "鱼的头,章鱼的脚,非常不可思议的生物,用枪发动攻击。"
}
},
{
"indx": 244,
"name": {
"ja-jp": "13人目の埋葬者",
"zh-cn": "第13位埋葬者",
"custom": "第13人的埋葬者"
},
"desc": {
"zh-cn": "突然出现于无人之第13号墓穴的僵尸。",
"custom": "原本没有任何人的一零三号墓地突然出现的丧尸。"
}
},
{
"indx": 245,
"name": {
"ja-jp": "炎の騎士 キラー",
"zh-cn": "炎之骑士 基拉",
"custom": "炎之骑士 基拉"
},
"desc": {
"zh-cn": "“怪兽蛋”+“史汀格”",
"custom": "「怪兽蛋」+「史汀」"
}
},
{
"indx": 246,
"name": {
"ja-jp": "聖なる鎖",
"zh-cn": "神圣之锁",
"custom": "神圣之锁"
},
"desc": {
"zh-cn": "据说能以神圣之力封锁行动的锁链。",
"custom": "据说可以用神圣的力量封锁行动的锁链。"
}
},
{
"indx": 247,
"name": {
"ja-jp": "死者の腕",
"zh-cn": "死者之腕",
"custom": "死者之腕"
},
"desc": {
"zh-cn": "从混沌沼泽中伸出手臂,将生者拖入其中。",
"custom": "从混沌沼泽中伸出手腕,将生者拖入其中。"
}
},
{
"indx": 248,
"name": {
"ja-jp": "魔人デスサタン",
"zh-cn": "魔人死亡撒旦",
"custom": "魔人 死亡撒旦"
},
"desc": {
"zh-cn": "身着一袭与黑夜融为一体的漆黑燕尾服,是操纵死亡的恶魔。",
"custom": "穿着融入黑暗的黑色燕尾服,操纵着死亡的恶魔。"
}
},
{
"indx": 249,
"name": {
"ja-jp": "なぞの手",
"zh-cn": "谜之手",
"custom": "谜之手"
},
"desc": {
"zh-cn": "弄歪空间,从次元的缝隙间中伸出手腕进行攻击。",
"custom": "弄歪空间,从次元的狭间中伸出手腕进行攻击。"
}
},
{
"indx": 250,
"name": {
"ja-jp": "竜魂の石像",
"zh-cn": "龙魂的石像",
"custom": "龙魂之石像"
},
"desc": {
"zh-cn": "拥有龙之魂的石像战士。会用引以为傲的剑切碎敌人。",
"custom": "拥有龙的灵魂的石像战士。用自豪的剑劈开敌人。"
}
},
{
"indx": 251,
"name": {
"ja-jp": "青眼の銀ゾンビ",
"zh-cn": "蓝眼银僵尸",
"custom": "青色眼银僵尸"
},
"desc": {
"zh-cn": "据说可以从眼睛里射出怪异的光线,把对手变成僵尸。",
"custom": "据说可以从眼睛里射出怪异的光线,据说能让对方变成僵尸。"
}
},
{
"indx": 252,
"name": {
"ja-jp": "トードマスター",
"zh-cn": "蛤蟆仙人",
"custom": "蛤蟆仙人"
},
"desc": {
"zh-cn": "生活了数千年的青蛙仙人。使用小蝌蚪攻击。",
"custom": "活了几千年的青蛙仙人。用蝌蚪进行攻击。"
}
},
{
"indx": 253,
"name": {
"ja-jp": "デビルツムリ",
"zh-cn": "恶鬼蜗牛",
"custom": "恶魔蜗牛"
},
"desc": {
"zh-cn": "凭借暗之力进化的蜗牛。它有手和脚,能迅速移动。",
"custom": "以黑暗力量进化了的蜗牛。有手有脚、动作迅速。"
}
},
{
"indx": 254,
"name": {
"ja-jp": "炎を操る者",
"zh-cn": "炎之操纵者",
"custom": "火焰操纵者"
},
"desc": {
"zh-cn": "能随意制造出火海和火墙进行攻击。",
"custom": "游刃有余地穿梭在火海中发动攻击。"
}
},
{
"indx": 255,
"name": {
"ja-jp": "時の魔人 ネクロランサ",
"zh-cn": "时间魔人 独眼巫师",
"custom": "时间魔人 独眼死灵师"
},
"desc": {
"zh-cn": "从可以去任何自己想去的地方的时空环中出来的独眼魔人。",
"custom": "从时空环出来的可以去任何自己想去的地方的独眼魔人。"
}
},
{
"indx": 256,
"name": {
"ja-jp": "風の番人 ジン",
"zh-cn": "风之看守 吉恩",
"custom": "风之番人 精"
},
"desc": {
"zh-cn": "操纵风来引起龙卷风和飓风吹飞周围的东西。",
"custom": "操纵风并产生龙卷风与飓风吹飞周围的东西。"
}
},
{
"indx": 257,
"name": {
"ja-jp": "魅惑の怪盗",
"zh-cn": "魅惑的怪盗",
"custom": "魅惑的怪盗"
},
"desc": {
"zh-cn": "肩披黑色斗篷的耍帅怪盗。挥舞手杖来迷倒对手。",
"custom": "披着黑色披风装模作样的怪盗。挥着手杖迷惑对方。"
}
},
{
"indx": 258,
"name": {
"ja-jp": "髑髏の寺院",
"zh-cn": "骷髅的寺院",
"custom": "骷髅寺院"
},
"desc": {
"zh-cn": "这是一间到处都是骷颅和骨头,毛骨悚然的寺庙。它会把靠近的人吸进去。",
"custom": "全部由骷髅和骨头建立而成的寺院。会吸收接近的人的灵魂。"
}
},
{
"indx": 259,
"name": {
"ja-jp": "モンスター・エッグ",
"zh-cn": "怪兽蛋",
"custom": "怪兽蛋"
},
"desc": {
"zh-cn": "全身被蛋壳包覆的谜之战士。飞射蛋壳进行攻击。",
"custom": "蛋壳保卫全身的迷之战士,用壳飞射攻击。"
}
},
{
"indx": 260,
"name": {
"ja-jp": "闇を司る影",
"zh-cn": "司暗之影",
"custom": "司暗的影子"
},
"desc": {
"zh-cn": "消融于黑暗中的影子。使用金缚法封住敌人的行动。",
"custom": "溶入黑暗之中的影子。用金网封住对方的行动。"
}
},
{
"indx": 261,
"name": {
"ja-jp": "ランプの魔人",
"zh-cn": "神灯魔人",
"custom": "神灯魔人"
},
"desc": {
"zh-cn": "从神灯中出现的魔人。将服从于召唤之人。",
"custom": "从神灯里出现的魔灵,服从召唤者的意志。"
}
},
{
"indx": 262,
"name": {
"ja-jp": "カクタス",
"zh-cn": "卡库塔斯",
"custom": "卡库塔斯"
},
"desc": {
"zh-cn": "是一只潜于水中,不知其真面目的怪物。",
"custom": "潜在水中形状不明的怪兽。"
}
},
{
"indx": 263,
"name": {
"ja-jp": "赤き剣のライムンドス",
"zh-cn": "赤剑之莱蒙多斯",
"custom": "赤剑之莱蒙多斯"
},
"desc": {
"zh-cn": "持有赤红炎剑的战士。利用火焰束缚来封住行动。",
"custom": "持有赤红炎剑的战士。利用火焰束缚来封住行动。"
}
},
{
"indx": 264,
"name": {
"ja-jp": "とろける赤き影",
"zh-cn": "融化的赤影",
"custom": "溶化的赤影"
},
"desc": {
"zh-cn": "融化自身藏于脚下的影子里,从敌人的正下方发动攻击。",
"custom": "融化身体藏在脚下的影子里,从敌人的正下方发动攻击。"
}
},
{
"indx": 265,
"name": {
"ja-jp": "死神のドクロイゾ",
"zh-cn": "死神骷髅",
"custom": "死神骷髅"
},
"desc": {
"zh-cn": "使出地狱的一击夺取灵魂的死神。",
"custom": "使用地狱一击夺取灵魂的死神。"
}
},
{
"indx": 266,
"name": {
"ja-jp": "ファイヤー・デビル",
"zh-cn": "火焰魔鬼",
"custom": "火焰恶魔"
},
"desc": {
"zh-cn": "手持火焰之箭的死神,一旦被其箭矢射中就会变成火人。",
"custom": "手持炎之箭的死神,被其箭击中的话就会变成火人。"
}
},
{
"indx": 267,
"name": {
"ja-jp": "ラーバス",
"zh-cn": "拉巴斯",
"custom": "拉瓦斯"
},
"desc": {
"zh-cn": "动作迅敏的鸟怪物。会用细长的手臂绞杀敌人。",
"custom": "行动速度飞快的鸟怪,用细长的手腕将敌人绞杀。"
}
},
{
"indx": 268,
"name": {
"ja-jp": "ハードアーマー",
"zh-cn": "坚硬铠甲",
"custom": "坚硬铠甲"
},
"desc": {
"zh-cn": "拥有心灵的铠甲,以坚硬的身体来阻截战士。",
"custom": "拥有心灵的铠甲,坚硬的身体装备在战士身上。"
}
},
{
"indx": 269,
"name": {
"ja-jp": "火炎草",
"zh-cn": "火炎草",
"custom": "火炎草"
},
"desc": {
"zh-cn": "生长于火山附近的草,会从花内喷射火焰进行攻击。",
"custom": "在火山附近生存的草。从花内吹出来火焰攻击。"
}
},
{
"indx": 270,
"name": {
"ja-jp": "マンイーター",
"zh-cn": "食人花",
"custom": "食人花"
},
"desc": {
"zh-cn": "吃人的人面花,用有毒的触手进行攻击。",
"custom": "吃人的人面花,用有毒的触手进行攻击。"
}
},
{
"indx": 271,
"name": {
"ja-jp": "ディッグ・ビーク",
"zh-cn": "鸟嘴兽",
"custom": "鸟嘴兽"
},
"desc": {
"zh-cn": "卷起蛇一样长的身体,一边回转一边用嘴攻击。",
"custom": "卷起蛇一样长的身体,一边回转一边用嘴攻击。"
}
},
{
"indx": 272,
"name": {
"ja-jp": "マグネッツ1号",
"zh-cn": "磁力战士1号",
"custom": "磁力战士1号"
},
"desc": {
"zh-cn": "擅长配合的战士。发动强大的磁力,谁也逃不掉。",
"custom": "擅长配合的战士,发动强大的磁力,谁也逃不掉。"
}
},
{
"indx": 273,
"name": {
"ja-jp": "マグネッツ2号",
"zh-cn": "磁力战士2号",
"custom": "磁力战士2号"
},
"desc": {
"zh-cn": "擅长配合的战士。表面涂有电磁的铠甲非常坚固。",
"custom": "擅长配合的战士,表面涂有电磁的铠甲非常坚固。"
}
},
{
"indx": 274,
"name": {
"ja-jp": "悪魔の知恵",
"zh-cn": "魔鬼的智慧",
"custom": "恶魔的智慧"
},
"desc": {
"zh-cn": "此卡从攻击表示变为表侧守备表示时,我方牌组洗牌。",
"custom": "这张卡的表示形式从攻击表示变成守备表示时,洗自己的卡组。"
}
},
{
"indx": 275,
"name": {
"ja-jp": "サファイヤ・リサーク",
"zh-cn": "蓝宝石眼怪",
"custom": "青玉眼怪"
},
"desc": {
"zh-cn": "拥有蓝宝石之眼的怪兽。会创造幻影,趁对方混乱之际攻击。",
"custom": "蓝宝石眼睛的野兽。制造幻影,趁敌人混乱的时候进行攻击。"
}
},
{
"indx": 276,
"name": {
"ja-jp": "ゼミアの神",
"zh-cn": "杰米亚之神",
"custom": "杰米亚之神"
},
"desc": {
"zh-cn": "擅长欺骗对手并将其引诱至毁灭之路的邪神。",
"custom": "善于欺骗对方、诱惑其加入破灭之路的邪恶之神。"
}
},
{
"indx": 277,
"name": {
"ja-jp": "ジャジメント・ザ・ハンド",
"zh-cn": "审判之手",
"custom": "审判之手"
},
"desc": {
"zh-cn": "用寄宿着神灵之手下达最后的审判,并发动激烈的攻击。",
"custom": "用寄宿着神灵的手作最后的判决,给予敌人以猛烈的攻击。"
}
},
{
"indx": 278,
"name": {
"ja-jp": "謎の傀儡師",
"zh-cn": "谜之傀儡师",
"custom": "谜之傀儡师"
},
"desc": {
"zh-cn": "此卡以外的怪兽召唤、反转召唤成功时,我方回复500LP。",
"custom": "怪兽召唤・反转召唤成功时,自己回复500基本分。"
}
},
{
"indx": 279,
"name": {
"ja-jp": "太古の壺",
"zh-cn": "太古之壶",
"custom": "太古之壶"
},
"desc": {
"zh-cn": "非常脆弱的太古之壶,里面好像还潜藏着什么东西。",
"custom": "非常脆弱的太古之壶。里面好像藏着什么东西。"
}
},
{
"indx": 280,
"name": {
"ja-jp": "暗黒火炎龍",
"zh-cn": "暗黑火炎龙",
"custom": "暗黑火炎龙"
},
"desc": {
"zh-cn": "“火炎草”+“幼龙”",
"custom": "「火炎草」+「小龙」"
}
},
{
"indx": 281,
"name": {
"ja-jp": "深淵の冥王",
"zh-cn": "深渊的冥王",
"custom": "深渊的冥王"
},
"desc": {
"zh-cn": "冥界之王。据说曾经拥有过甚至足以支配所有的黑暗之力。",
"custom": "冥界之王,听说以前有着支配所有黑暗力量的能力。"
}
},
{
"indx": 282,
"name": {
"ja-jp": "ハープの精",
"zh-cn": "竖琴精灵",
"custom": "竖琴精灵"
},
"desc": {
"zh-cn": "在天界弹奏竖琴的精灵,其琴音能抚平周围听众的心灵。",
"custom": "在天界弹奏竖琴的精灵。那音色使周围听众的心变得平静。"
}
},
{
"indx": 283,
"name": {
"ja-jp": "大王目玉",
"zh-cn": "大王目玉",
"custom": "眼球大王"
},
"desc": {
"zh-cn": "反转:从我方牌组上面最多确认5张卡牌,并按照喜好顺序返回至牌组上面。",
"custom": "反转:从自己卡组上面把最多5张卡确认,用喜欢的顺序回到卡组上面。"
}
},
{
"indx": 284,
"name": {
"ja-jp": "アーメイル",
"zh-cn": "铠剑尾战士",
"custom": "铠甲剑尾战士"
},
"desc": {
"zh-cn": "有着剑状尾巴的怪异战士,用双手和尾巴进行三连段攻击。",
"custom": "有着剑状尾的怪异战士。用双手和尾巴进行三连攻击。"
}
},
{
"indx": 285,
"name": {
"ja-jp": "ダーク・プリズナー",
"zh-cn": "暗黑囚犯",
"custom": "暗黑囚犯"
},
"desc": {
"zh-cn": "能巧妙地运用光的反射,隐藏自己的身影。",
"custom": "能巧妙的操纵光的反射来隐藏自己。"
}
},
{
"indx": 286,
"name": {
"ja-jp": "ハリケル",
"zh-cn": "龙卷风妖",
"custom": "飓风怪"
},
"desc": {
"zh-cn": "肆虐荒野的龙卷风,用风之刃切割对手。",
"custom": "荒野的龙卷风。用风之刃切割对方。"
}
},
{
"indx": 287,
"name": {
"ja-jp": "魔天老",
"zh-cn": "魔天老",
"custom": "魔天老"
},
"desc": {
"zh-cn": "被天界放逐的堕落天使。擅长在黑暗中战斗。",
"custom": "被天界放逐的堕天使,在暗域中的战斗很出色。"
}
},
{
"indx": 288,
"name": {
"ja-jp": "ファイヤー・アイ",
"zh-cn": "火焰之眼",
"custom": "火眼"
},
"desc": {
"zh-cn": "被火焰包围着的眼球,挥动翅膀就能掀起火焰之风。",
"custom": "被火炎包围着的眼球。挥动翅膀就能引起火炎之风。"
}
},
{
"indx": 289,
"name": {
"ja-jp": "モンスタートル",
"zh-cn": "怪兽龟",
"custom": "怪龟"
},
"desc": {
"zh-cn": "驼著带刺龟壳的乌龟。性情极其凶暴且与人不亲近。",
"custom": "装备了带刺的甲壳的龟。非常凶暴不喜欢接近人类。"
}
},
{
"indx": 290,
"name": {
"ja-jp": "キラー・ザ・クロー",
"zh-cn": "利爪杀手",
"custom": "利爪杀手"
},
"desc": {
"zh-cn": "手臂能自由伸缩,用尖利的爪子刺穿敌人。",
"custom": "手腕能自由的伸缩,尖利的爪子能将敌人刺穿。"
}
},
{
"indx": 291,
"name": {
"ja-jp": "サターナ",
"zh-cn": "沙塔那",
"custom": "萨塔那"
},
"desc": {
"zh-cn": "能诅咒敌人,令其动弹不得的魔法师。",
"custom": "诅咒敌人。可以使人动弹不得的魔法师。"
}
},
{
"indx": 292,
"name": {
"ja-jp": "アルラウネ",
"zh-cn": "阿罗妮",
"custom": "阿罗妮"
},
"desc": {
"zh-cn": "花中的女性散发着有毒的花粉。不可以靠近她。",
"custom": "花中的女性散发着有毒的花粉。任何人都不能靠近她。"
}
},
{
"indx": 293,
"name": {
"ja-jp": "ダークシェイド",
"zh-cn": "暗影",
"custom": "暗影"
},
"desc": {
"zh-cn": "以水晶发出的强烈光芒进行攻击。",
"custom": "从水晶中发射强烈的光线进行攻击。"
}
},
{
"indx": 294,
"name": {
"ja-jp": "仮面道化",
"zh-cn": "假面小丑",
"custom": "假面道化"
},
"desc": {
"zh-cn": "一边跳着死亡之舞,一边用手中的镰刀砍杀敌人的战士。",
"custom": "一边跳着死亡的舞蹈、一边用手上的镰刀切碎敌人的战士。"
}
},
{
"indx": 295,
"name": {
"ja-jp": "ホーリー・パワー",
"zh-cn": "神圣能量",
"custom": "神圣能量"
},
"desc": {
"zh-cn": "虽然看起来弱弱的,但却受到神圣力量的保护。",
"custom": "虽然摇摇晃晃的,但被圣之力保护着。"
}
},
{
"indx": 296,
"name": {
"ja-jp": "ジャグラー",
"zh-cn": "杂耍人",
"custom": "戏法师"
},
"desc": {
"zh-cn": "他会用像变魔术般的魔法打倒敌人。也会放出鸽子攻击。",
"custom": "使用像戏法般的魔法打倒对方。也会放出鸽子攻击。"
}
},
{
"indx": 297,
"name": {
"ja-jp": "コピックス",
"zh-cn": "复制体",
"custom": "复印者"
},
"desc": {
"zh-cn": "变身成为各种敌人的模样,从而欺骗对手进行战斗的战士。",
"custom": "变身成为各种敌人的模样,从而欺骗对方进行战斗的战士。"
}
},
{
"indx": 298,
"name": {
"ja-jp": "ミラージュ",
"zh-cn": "幻镜鸟",
"custom": "幻象鸟"
},
"desc": {
"zh-cn": "可以用手上的镜子呼叫出同伴的鸟兽。",
"custom": "能够从手里的镜子中召唤出同伴的鸟怪。"
}
},
{
"indx": 299,
"name": {
"ja-jp": "ヘルゲート・ディーグ",
"zh-cn": "地狱之门 狄格",
"custom": "地狱之门"
},
"desc": {
"zh-cn": "肚子上有扇通往地狱的门,还可召唤的阴森怪兽。",
"custom": "肚子上长着通向地狱的门,也可以被召唤的怪兽。"
}
},
{
"indx": 300,
"name": {
"ja-jp": "ファランクス",
"zh-cn": "方阵兽",
"custom": "法兰克斯"
},
"desc": {
"zh-cn": "上下都有头的、令人作呕的怪兽。口中可以吐出激光。",
"custom": "上下都有头的令人作呕的怪兽。从口中吐出激光。"
}
},
{
"indx": 301,
"name": {
"ja-jp": "フュージョニスト",
"zh-cn": "融合者",
"custom": "融合体"
},
"desc": {
"zh-cn": "“小天使”+“催眠羊”",
"custom": "「小天使」+「催眠羊」"
}
},
{
"indx": 302,
"name": {
"ja-jp": "レッド・エース",
"zh-cn": "红色祭司",
"custom": "红A"
},
"desc": {
"zh-cn": "会施死亡诅咒的魔法使。一听见他念的咒文,就会昏厥。",
"custom": "施放死亡诅咒的魔法师。听到咒文的敌人将变得神智不清。"
}
},
{
"indx": 303,
"name": {
"ja-jp": "ララ・ライウーン",
"zh-cn": "雷云・拉拉",
"custom": "雷云怪"
},
"desc": {
"zh-cn": "带电的云形怪兽,能降下溶化一切的危险之雨。",
"custom": "带电的云形怪兽。下着能溶掉一切的危险之雨。"
}
},
{
"indx": 304,
"name": {
"ja-jp": "キーメイス",
"zh-cn": "钥匙权杖",
"custom": "心钥妖精"
},
"desc": {
"zh-cn": "小小的天使。任何人都会为它的可爱折服而打开心扉。",
"custom": "非常细小的天使。无论是谁都被那可爱魅力折服而敞开心扉。"
}
},
{
"indx": 305,
"name": {
"ja-jp": "タートル・タイガー",
"zh-cn": "龟虎",
"custom": "龟虎"
},
"desc": {
"zh-cn": "身着龟甲的老虎。利用坚固的龟甲护身,并以尖锐的利牙发动攻击。",
"custom": "身披甲壳的虎,坚硬的甲壳作守备,尖锐的牙齿作攻击。"
}
},
{
"indx": 306,
"name": {
"ja-jp": "魔人 テラ",
"zh-cn": "魔人 泰拉",
"custom": "魔人 泰拉"
},
"desc": {
"zh-cn": "住在沼泽地的恶魔手下,虽然不如外表看起来那么强,但也绝不能掉以轻心。",
"custom": "住在沼泽地的恶魔手下,看起来不怎么强,但绝不能对他轻心大意。"
}
},
{
"indx": 307,
"name": {
"ja-jp": "ドローン",
"zh-cn": "多隆",
"custom": "多隆"
},
"desc": {
"zh-cn": "与多罗隆分身后进行夹击。不要小瞧了他!",
"custom": "分身夹击的怪兽,要小心!"
}
},
{
"indx": 308,
"name": {
"ja-jp": "アンモ・ナイト",
"zh-cn": "菊石骑士",
"custom": "菊石骑士"
},
"desc": {
"zh-cn": "从遥远过去就守护大海不受外敌侵扰的菊石战士。",
"custom": "从很久以前就守护着大海的骑士。"
}
},
{
"indx": 309,
"name": {
"ja-jp": "ゾンビランプ",
"zh-cn": "僵尸鬼灯",
"custom": "僵尸鬼灯"
},
"desc": {
"zh-cn": "可以将手臂像火箭一样发射攻击的不死族怪兽。",
"custom": "把手腕像火箭一样发射攻击的不死怪兽。"
}
},
{
"indx": 310,
"name": {
"ja-jp": "ハッピー・ラヴァー",
"zh-cn": "快乐恋人",
"custom": "幸福恋人"
},
"desc": {
"zh-cn": "会从头上放出心形光束给予敌人幸福的小天使。",
"custom": "从头上放出心形的光给予恋人以幸福的小天使。"
}
},
{
"indx": 311,
"name": {
"ja-jp": "ペンギン・ナイト",
"zh-cn": "企鹅骑士",
"custom": "企鹅骑士"
},
"desc": {
"zh-cn": "此卡因对手的卡牌效果从我方牌组被送入墓地时,我方墓地的卡牌全部返回至牌组。",
"custom": "这张卡被对方的效果从卡组送去墓地时,把自己墓地存在的全部卡回到卡组。"
}
},
{
"indx": 312,
"name": {
"ja-jp": "プチリュウ",
"zh-cn": "幼龙",
"custom": "小龙"
},
"desc": {
"zh-cn": "体型细小的龙,使上整个细小身体来进行攻击。",
"custom": "非常小的龙,充分用尽那弱小的身体进行攻击。"
}
},
{
"indx": 313,
"name": {
"ja-jp": "キラーパンダ",
"zh-cn": "杀人熊猫",
"custom": "杀人熊猫"
},
"desc": {
"zh-cn": "时时刻刻都带着一支很粗的竹子,性格非常凶暴。",
"custom": "经常手持一根粗大的竹子四处找茬,性格非常凶暴。"
}
},
{
"indx": 314,
"name": {
"ja-jp": "デーモン・ビーバー",
"zh-cn": "恶魔海狸",
"custom": "恶魔海狸"
},
"desc": {
"zh-cn": "长有恶魔角与翅膀的海狸,投掷橡子进行攻击。",
"custom": "拥有恶魔角与翅膀的海狸。投掷橡实果进行攻击。"
}
},
{
"indx": 315,
"name": {
"ja-jp": "ゴースト",
"zh-cn": "鬼魂",
"custom": "幽灵"
},
"desc": {
"zh-cn": "由这个世界上未能成佛的灵魂,慢慢聚集而成的怨灵。",
"custom": "由这个世界上不能成佛的灵魂,慢慢聚集而成的怨灵。"
}
},
{
"indx": 316,
"name": {
"ja-jp": "マキャノン",
"zh-cn": "魔加农炮",
"custom": "魔加农"
},
"desc": {
"zh-cn": "大炮般的恶魔。会以肉眼看不到的速度发射眼球飞弹。",
"custom": "大炮状的恶魔。以飞快的速度发射眼球弹。"
}
},
{
"indx": 317,
"name": {
"ja-jp": "ドローバ",
"zh-cn": "泥浆怪",
"custom": "泥浆兽"
},
"desc": {
"zh-cn": "黏糊糊的令人感到恶心的怪兽,吐出剧毒瓦斯进行攻击。",
"custom": "粘呼呼的令人感到恶心的怪兽。吐出剧毒的瓦斯进行攻击。"
}
},
{
"indx": 318,
"name": {
"ja-jp": "グロス",
"zh-cn": "格洛斯",
"custom": "格洛斯"
},
"desc": {
"zh-cn": "用如同鞭子一样的细长手臂进行攻击,即使距离稍远也能攻击到。",
"custom": "用像鞭子一般长的手臂进行攻击。稍远的地方也可以攻击的到。"
}
},
{
"indx": 319,
"name": {
"ja-jp": "スピック",
"zh-cn": "大嘴鸟",
"custom": "大嘴鸟"
},
"desc": {
"zh-cn": "嘴巴非常大、会大声鸣叫来吓跑胆小的对手。",
"custom": "嘴巴非常大、大声的叫吓跑胆小的对方。"
}
},
{
"indx": 320,
"name": {
"ja-jp": "プチテンシ",
"zh-cn": "小天使",
"custom": "小天使"
},
"desc": {
"zh-cn": "依靠灵活的行动躲避攻击的小天使。",
"custom": "依靠灵活的行动躲避攻击的小天使。"
}
},
{
"indx": 321,
"name": {
"ja-jp": "ダークキラー",
"zh-cn": "黑暗杀手",
"custom": "暗黑杀手"
},
"desc": {
"zh-cn": "他会挥舞像螳螂般巨大的手臂进行攻击。",
"custom": "挥动如镰刀般发达的手臂进行攻击。"
}
},
{
"indx": 322,
"name": {
"ja-jp": "スティング",
"zh-cn": "史汀格",
"custom": "史汀"
},
"desc": {
"zh-cn": "非常炙热的炎之集合体。以自己的身体施行碰撞攻击。",
"custom": "非常炽热的火焰形成的块,并用那身体冲撞敌人。"
}
},
{
"indx": 323,
"name": {
"ja-jp": "サンダー・キッズ",
"zh-cn": "雷电小子",
"custom": "雷电小子"
},
"desc": {
"zh-cn": "平时会在体内积蓄雷电,因此当它哭泣时会非常危险。",
"custom": "在它的体内平时储蓄着雷电。因此当它哭泣时非常危险。"
}
},
{
"indx": 324,
"name": {
"ja-jp": "バビロン",
"zh-cn": "巴比伦",
"custom": "巴比伦"
},
"desc": {
"zh-cn": "独眼的巨大怪兽,从眼睛中发出光束进行攻击。",
"custom": "长有独眼的巨大怪兽。从眼睛之中发出光线攻击。"
}
},
{
"indx": 325,
"name": {
"ja-jp": "アクア・マドール",
"zh-cn": "水魔道士",
"custom": "水魔道士"
},
"desc": {
"zh-cn": "操纵水的魔法师,造出厚重的水墙压垮敌人。",
"custom": "操纵水的魔法师。造出厚重的水墙压垮敌人。"
}
},
{
"indx": 326,
"name": {
"ja-jp": "紫炎の影武者",
"zh-cn": "紫炎的影武者",
"custom": "紫炎的影武者"
},
"desc": {
"zh-cn": "侍奉紫炎的影武者,持有锋利的名刀。",
"custom": "侍奉着紫炎的影武者,持有锋利的名刀。"
}
},
{
"indx": 327,
"name": {
"ja-jp": "フレイム・ゴースト",
"zh-cn": "火焰鬼",
"custom": "火焰幽灵"
},
"desc": {
"zh-cn": "“白骨”+“岩浆人”",
"custom": "「白骨」+「岩浆人」"
}
},
{
"indx": 328,
"name": {
"ja-jp": "ドリアード",
"zh-cn": "多里雅德",
"custom": "树精"
},
"desc": {
"zh-cn": "森之精灵。借助草木之力封住对方的行动。",
"custom": "森之精灵。借助草木之力封住对方的行动。"
}
},
{
"indx": 329,
"name": {
"ja-jp": "ブラック・デーモンズ・ドラゴン",
"zh-cn": "黑恶魔龙",
"custom": "暗黑魔龙"
},
"desc": {
"zh-cn": "“恶魔的召唤”+“真红眼黑龙”",
"custom": "「恶魔召唤」+「真红眼黑龙」"
}
},
{
"indx": 330,
"name": {
"ja-jp": "二つの口を持つ闇の支配者",
"zh-cn": "双口的暗之支配者",
"custom": "双口的暗之支配者"
},
"desc": {
"zh-cn": "同时长有两个嘴巴的恐龙。角能蓄电,并从背部的嘴巴放电。",
"custom": "同时长有两个嘴巴的恐龙,角能蓄电并在背部放电。"
}
},
{
"indx": 331,
"name": {
"ja-jp": "ソリテュード",
"zh-cn": "索利堤德",
"custom": "孤寂"
},
"desc": {
"zh-cn": "下半身是鹿,持有吸魂大镰的兽战士。",
"custom": "下半身是鹿,持有吸收灵魂的大镰刀的兽战士。"
}
},
{
"indx": 332,
"name": {
"ja-jp": "仮面魔道士",
"zh-cn": "假面魔道士",
"custom": "假面魔道士"
},
"desc": {
"zh-cn": "此卡给予对手生命战斗伤害时,从我方牌组抽取1张卡牌。",
"custom": "这张卡造成对方玩家基本分伤害的时候,自己抽1张卡。"
}
},
{
"indx": 333,
"name": {
"ja-jp": "蜘蛛男",
"zh-cn": "蜘蛛男",
"custom": "蜘蛛男"
},
"desc": {
"zh-cn": "巨大蜘蛛得到智慧后的形态,通过吐丝来封锁敌人的行动。",
"custom": "巨大的蜘蛛被赋予智慧的形态,通过吐丝将敌人的行动封锁。"
}
},
{
"indx": 334,
"name": {
"ja-jp": "ミッドナイト・デビル",
"zh-cn": "午夜魔鬼",
"custom": "午夜恶魔"
},
"desc": {
"zh-cn": "现身于深夜的鸟怪物。据说必须要献上活祭品才能将它唤出。",
"custom": "出现在深夜的鸟怪。据说必须祭生才能唤它出来。"
}
},
{
"indx": 335,
"name": {
"ja-jp": "轟きの大海蛇",
"zh-cn": "轰隆的大海蛇",
"custom": "轰鸣的大海蛇"
},
"desc": {
"zh-cn": "“魔法神灯”+“兵主部”",
"custom": "「魔法灯」+「兵主部」"
}
},
{
"indx": 336,
"name": {
"ja-jp": "トラップ・マスター",
"zh-cn": "陷阱大师",
"custom": "陷阱大师"
},
"desc": {
"zh-cn": "反转:选择场上的1张陷阱卡并将其破坏。选择被盖牌的卡牌的场合,翻开该卡进行确认,若为陷阱卡则破坏,若为魔法卡的场合则恢复原状。",
"custom": "反转:场上1张陷阱卡破坏。里侧表示翻开确认后破坏。"
}
},
{
"indx": 337,
"name": {
"ja-jp": "呪われし魔剣",
"zh-cn": "受诅咒的魔剑",
"custom": "被诅咒的魔剑"
},
"desc": {
"zh-cn": "据说配戴它并战胜诅咒者就能获得力量。",
"custom": "据说战胜施加在身上的诅咒的人就可以以此获得力量。"
}
},
{
"indx": 338,
"name": {
"ja-jp": "デス・ストーカー",
"zh-cn": "死亡追踪者",
"custom": "死亡潜行者"
},
"desc": {
"zh-cn": "动作敏捷,会用钳子捕捉并用毒针刺敌人的蝎战士。",
"custom": "行动敏捷、用钳子捕捉对方,带有剧毒刺针的蝎子战士。"
}
},
{
"indx": 339,
"name": {
"ja-jp": "ヒトデンチャク",
"zh-cn": "海星葵",
"custom": "海星葵"
},
"desc": {
"zh-cn": "受污染水源侵蚀而狂暴化的海星,能从口中吐出溶解液。",
"custom": "被污染的水源侵蚀而狂暴化的海星。从口中吐出溶解液攻击敌人。"
}
},
{
"indx": 340,
"name": {
"ja-jp": "森の屍",
"zh-cn": "森之尸",
"custom": "森之尸"
},
"desc": {
"zh-cn": "森林守护神死后,被恶魔所唤醒的尸体。",
"custom": "森林守护神死后,被恶魔复活的尸体。"
}
},
{
"indx": 341,
"name": {
"ja-jp": "命の砂時計",
"zh-cn": "生命的沙漏",
"custom": "生命之沙漏"
},
"desc": {
"zh-cn": "掌管生命的天使。以缩短寿命为代价,给予你力量。",
"custom": "掌管生命的天使。通过削减自己的寿命将力量赋予他人。"
}
},
{
"indx": 342,
"name": {
"ja-jp": "レア・フィッシュ",
"zh-cn": "稀有鱼种",
"custom": "珍鱼"
},
"desc": {
"zh-cn": "“融合者”+“恍惚的人鱼”",
"custom": "「融合体」+「恍惚的人鱼」"
}
},
{
"indx": 343,
"name": {
"ja-jp": "ウッド・ジョーカー",
"zh-cn": "木灵小丑",
"custom": "木灵小丑"
},
"desc": {
"zh-cn": "面带不怀好意笑容的恶魔。使用手上的镰刀灵巧地发动攻击。",
"custom": "作出令人讨厌的笑容的恶魔。以手中的镰刀熟练的回避着攻击。"
}
},
{
"indx": 344,
"name": {
"ja-jp": "魔人銃",
"zh-cn": "魔人枪",
"custom": "魔人铳"
},
"desc": {
"zh-cn": "从口中发射子弹进行攻击的生物武器。",
"custom": "从口中能够发射子弹攻击的生物兵器。"
}
},
{
"indx": 345,
"name": {
"ja-jp": "暗黒魔神 ナイトメア",
"zh-cn": "暗黑魔神 恶梦",
"custom": "暗黑魔神 梦魇"
},
"desc": {
"zh-cn": "传说中会潜入梦中的恶魔。在目标沉睡中夺其性命。",
"custom": "据说这个恶魔潜住在梦中,当猎物睡觉时便夺去其生命。"
}
},
{
"indx": 346,
"name": {
"ja-jp": "斬首の美女",
"zh-cn": "斩首的美女",
"custom": "斩首的美女"
},
"desc": {
"zh-cn": "在那美丽容貌的背后,却是个用刀子使许多人身首异处的女子。",
"custom": "在那美丽容貌的背后,却是个用刀子使许多人身首异处的女子。"
}
},
{
"indx": 347,
"name": {
"ja-jp": "森の住人 ウダン",
"zh-cn": "森林居民 乌丹",
"custom": "森之住人 乌丹"
},
"desc": {
"zh-cn": "此卡的攻击力,上升场上植物族怪兽数量×100点。",
"custom": "场上每存在1只表侧表示的植物族怪兽,这张卡的攻击力上升100。"
}
},
{
"indx": 348,
"name": {
"ja-jp": "冥界の番人",
"zh-cn": "冥界的番人",
"custom": "冥界的番人"
},
"desc": {
"zh-cn": "守护着冥界入口的战士。毫不留情地斩杀未经许可的入侵者。",
"custom": "守护着冥界入口的战士,对侵略者豪不留情的斩杀。"
}
},
{
"indx": 349,
"name": {
"ja-jp": "はにわ",
"zh-cn": "陶俑",
"custom": "埴轮"
},
"desc": {
"zh-cn": "古代王墓中守护宝物的泥人。",
"custom": "古代王墓中守护宝物的土人偶。"
}
},
{
"indx": 350,
"name": {
"ja-jp": "ヤシの木",
"zh-cn": "椰子树",
"custom": "椰树"
},
"desc": {
"zh-cn": "拥有自我意志的椰子树。它会落下果实来攻击敌人。果实中的椰奶相当美味。",
"custom": "有意志的椰子树。以落下的果实进行攻击。果实中的椰汁味道鲜美。"
}
},
{
"indx": 351,
"name": {
"ja-jp": "ヴィシュワ・ランディー",
"zh-cn": "女夜魔战士",
"custom": "女夜魔战士"
},
"desc": {
"zh-cn": "侍奉黑暗的女战士。生存的意义就是血祭对手。",
"custom": "侍奉黑暗的女战士。将对方进行血祭是她生存的意义。"
}
},
{
"indx": 352,
"name": {
"ja-jp": "デス・フット",
"zh-cn": "死亡之脚",
"custom": "死亡之足"
},
"desc": {
"zh-cn": "眼珠上长着脚的怪兽,高高跃起并用钩爪进行攻击。",
"custom": "眼珠上长着脚的怪兽。高跳着用爪钩攻击。"
}
},
{
"indx": 353,
"name": {
"ja-jp": "闇の暗殺者",
"zh-cn": "暗之暗杀者",
"custom": "暗之暗杀者"
},
"desc": {
"zh-cn": "手持一把被称作精神之剑的剑,是一名君临魔界的暗杀者。",
"custom": "持有精神之剑、君临魔界的暗杀者。"
}
},
{
"indx": 354,
"name": {
"ja-jp": "運命のろうそく",
"zh-cn": "命运的蜡烛",
"custom": "命运之蜡烛"
},
"desc": {
"zh-cn": "指尖的火焰消失时,将决定对手的命运。",
"custom": "指尖的火焰消失时,将决定对方的命运。"
}
},
{
"indx": 355,
"name": {
"ja-jp": "ウォーター・エレメント",
"zh-cn": "水元素",
"custom": "水元素"
},
"desc": {
"zh-cn": "栖息于水中的精灵。用雾包围周围来遮挡敌人的视线。",
"custom": "住在水里的精灵。将四周用雾包围妨碍敌人的视线。"
}
},
{
"indx": 356,
"name": {
"ja-jp": "マグマン",
"zh-cn": "岩浆人",
"custom": "岩浆人"
},
"desc": {
"zh-cn": "岩浆里出生的怪兽。灼热的身体可以融化靠近它的物体。",
"custom": "岩浆里出生的怪兽,灼热的身体使接近的物体融化。"
}
},
{
"indx": 357,
"name": {
"ja-jp": "D・ナポレオン",
"zh-cn": "暗黑拿破仑",
"custom": "暗黑拿破仑"
},
"desc": {
"zh-cn": "心地邪恶者创造的眼珠恶魔。用黑暗炸弹进行爆破攻击。",
"custom": "恶人创造的眼珠恶魔。用黑暗炸弹进行爆破攻击。"
}
},
{
"indx": 358,
"name": {
"ja-jp": "魂を狩る者",
"zh-cn": "魂魄狩猎者",
"custom": "狩魂者"
},
"desc": {
"zh-cn": "据说被其用剑斩杀之人的魂魄将会脱离自己的身体。",
"custom": "据说被其用剑斩杀之人的魂魄会离身体而去。"
}
},
{
"indx": 359,
"name": {
"ja-jp": "ルート・ウォーター",
"zh-cn": "水妖",
"custom": "根潭鱼人"
},
"desc": {
"zh-cn": "潜伏在海里的半鱼人,掀起巨大的黑暗海啸进行攻击。",
"custom": "潜伏在海里的半鱼人,掀起黑暗浪潮袭击。"
}
},
{
"indx": 360,
"name": {
"ja-jp": "マスター・アン・エキスパート",
"zh-cn": "主人与能手",
"custom": "主人与能手"
},
"desc": {
"zh-cn": "擅长运用野兽的达人和忠于主人的野兽。是一对完美的搭组合。",
"custom": "怪兽使高手、忠心于主人的怪兽。组合起来相当完美。"
}
},
{
"indx": 361,
"name": {
"ja-jp": "水の踊り子",
"zh-cn": "水之舞女",
"custom": "水之舞女"
},
"desc": {
"zh-cn": "可将水瓶中不断流出的水变成龙来发动攻击。",
"custom": "从瓶中不断流淌的水,变成龙的形状发动攻击。"
}
},
{
"indx": 362,
"name": {
"ja-jp": "氷",
"zh-cn": "冰",
"custom": "冰水"
},
"desc": {
"zh-cn": "全身由冰所构成的战士。他所触及的一切都会被冻结。",
"custom": "攻击性美人鱼。使用生长在身体表面的荆刺进行攻击。"
}
},
{
"indx": 363,
"name": {
"ja-jp": "恍惚の人魚",
"zh-cn": "恍惚的人鱼",
"custom": "恍惚的人鱼"
},
"desc": {
"zh-cn": "诱惑海上航海者使之溺水的美丽人鱼。",
"custom": "诱惑在海上航行的人们并将他们淹死的美人鱼。"
}
},
{
"indx": 364,
"name": {
"ja-jp": "キャッツ・フェアリー",
"zh-cn": "猫妖精",
"custom": "猫妖精"
},
"desc": {
"zh-cn": "猫之妖精。与可爱的外表相反,会迅速地抓伤敌人。",
"custom": "猫精灵。与可爱的身姿相反、敏捷的攻击对方。"
}
},
{
"indx": 365,
"name": {
"ja-jp": "エンジェル・魔女",
"zh-cn": "天使魔女",
"custom": "天使魔女"
},
"desc": {
"zh-cn": "背负了成为天使的命运,却又成为了向往中的魔女。",
"custom": "背负着成为天使的命运,但却成为了向往中的魔女。"
}
},
{
"indx": 366,
"name": {
"ja-jp": "未熟な悪魔",
"zh-cn": "胚胎恶鬼",
"custom": "未熟的恶魔"
},
"desc": {
"zh-cn": "未能发育完整的丑陋恶魔。肚子上的洞会吸入任何东西。",
"custom": "还没成为完全体的丑恶魔。肚子上的洞会吸入任何东西。"
}
},
{
"indx": 367,
"name": {
"ja-jp": "プリヴェント・ラット",
"zh-cn": "防御鼠",
"custom": "硬毛鼠"
},
"desc": {
"zh-cn": "它身上的毛浓密得就像坚硬的皮一样。守备能力相当高。",
"custom": "毛像硬皮一样聚集在一起,守备力非常的高。"
}
},
{
"indx": 368,
"name": {
"ja-jp": "異次元の戦士",
"zh-cn": "异次元战士",
"custom": "异次元的战士"
},
"desc": {
"zh-cn": "此卡同怪兽进行战斗时,将该怪兽和此卡从游戏中除外。",
"custom": "①:这张卡和怪兽进行战斗的伤害计算后发动。那些进行战斗的各自怪兽除外。"
}
},
{
"indx": 369,
"name": {
"ja-jp": "ストーン・アルマジラー",
"zh-cn": "岩石犰狳",
"custom": "岩石犰狳"
},
"desc": {
"zh-cn": "身体被坚如磐石的皮毛所覆盖,拥有坚固的守备。",
"custom": "身体被像石头般坚固的毛覆盖着、守备坚固。"
}
},
{
"indx": 370,
"name": {
"ja-jp": "沼地の魔獣王",
"zh-cn": "沼地魔兽王",
"custom": "沼地的魔兽王"
},
"desc": {
"zh-cn": "此卡可代替融合素材怪兽的其中1只来进行融合。不过此时其他的融合素材怪兽必须是指定的怪兽。",
"custom": "这张卡可以代替融合怪兽素材的其中1只来融合。这个时候,其他的融合素材必须是指定的融合素材。"
}
},
{
"indx": 371,
"name": {
"ja-jp": "古代魔導士",
"zh-cn": "古代魔导士",
"custom": "古代魔导士"
},
"desc": {
"zh-cn": "拥有许多魔杖,区分使用施展多彩的攻击。",
"custom": "拿着许多手杖。各自分别使用多样的攻击。"
}
},
{
"indx": 372,
"name": {
"ja-jp": "月の女神 エルザェム",
"zh-cn": "月之女神 艾尔杰姆",
"custom": "月之女神 艾露塞姆"
},
"desc": {
"zh-cn": "守护月亮的美丽女神。使用月光帘幕来阻挡攻击。",
"custom": "守护月亮的美丽女神。使用月光屏障守备攻击。"
}
},
{
"indx": 373,
"name": {
"ja-jp": "悪魔の鏡",
"zh-cn": "恶魔的镜子",
"custom": "恶魔之镜"
},
"desc": {
"zh-cn": "对映于镜中之人施以催眠术,从而避开攻击的恶魔之镜。",
"custom": "对映在镜子上的东西施以催眠术,从而避开攻击的恶魔之镜。"
}
},
{
"indx": 374,
"name": {
"ja-jp": "アイルの小剣士",
"zh-cn": "荒岛的小剑士",
"custom": "艾尔的小剑士"
},
"desc": {
"zh-cn": "可释放我方场上除此卡以外的1只怪兽并发动。直至回合结束时,此卡的攻击力上升700点。",
"custom": "每用自己场上存在的这张卡以外的1只怪兽做祭品,这张卡的攻击力在回合结束前加700。"
}
},
{
"indx": 375,
"name": {
"ja-jp": "ウォー・アース",
"zh-cn": "大地战士",
"custom": "大地战士"
},
"desc": {
"zh-cn": "岩石聚集而成的魔像。可以石化对手并破坏。",
"custom": "岩石聚集而成的石像。将对方石化后破坏。"
}
},
{
"indx": 376,
"name": {
"ja-jp": "ウィング・エッグ・エルフ",
"zh-cn": "羽翼蛋精灵",
"custom": "翼蛋精灵"
},
"desc": {
"zh-cn": "身体被蛋壳包覆的天使。以巨大的翅膀来阻挡攻击。",
"custom": "被蛋壳包住的天使。用巨大翅膀守备攻击。"
}
},
{
"indx": 377,
"name": {
"ja-jp": "怒りの海王",
"zh-cn": "愤怒的海王",
"custom": "愤怒的海王"
},
"desc": {
"zh-cn": "伟大的海之王,会呼唤永无止息的巨大海啸将敌人吞没。",
"custom": "伟大的海之王。唤起永不停息的大海啸将敌人吞没。"
}
},
{
"indx": 378,
"name": {
"ja-jp": "剣の女王",
"zh-cn": "剑之女王",
"custom": "剑之女王"
},
"desc": {
"zh-cn": "反转:对手场上每有一张魔法・陷阱卡,给予对手LP500点伤害。",
"custom": "反转:对方场上每存在1张魔法・陷阱,对方受到500分的伤害。"
}
},
{
"indx": 379,
"name": {
"ja-jp": "悪の無名戦士",
"zh-cn": "恶之无名战士",
"custom": "恶之无名战士"
},
"desc": {
"zh-cn": "利用敏捷的动作创造真空,斩碎对手的战士。",
"custom": "用敏捷的动作产生真空、切碎对方的战士。"
}
},
{
"indx": 380,
"name": {
"ja-jp": "闇にしたがう者",
"zh-cn": "黑暗追随者",
"custom": "黑暗随从者"
},
"desc": {
"zh-cn": "崇拜黑暗的魔法师,召唤魔手将敌人拖入漆黑深渊。",
"custom": "崇拜黑暗的魔法师。呼唤魔手将敌人拖入暗阴之中。"
}
},
{
"indx": 381,
"name": {
"ja-jp": "破壊神 ヴァサーゴ",
"zh-cn": "破坏神 巴萨格",
"custom": "破坏神 瓦沙克"
},
"desc": {
"zh-cn": "此卡可代替融合素材怪兽的其中1只来进行融合。不过此时其他的融合素材怪兽必须是指定的怪兽。",
"custom": "这张卡可以代替融合怪兽素材的其中1只来融合。这个时候,其他的融合素材必须是指定的融合素材。"
}
},
{
"indx": 382,
"name": {
"ja-jp": "ウェザ",
"zh-cn": "气象精灵",
"custom": "气象精灵"
},
"desc": {
"zh-cn": "操纵雨的精灵。可以召唤台风,吹走各种东西。",
"custom": "操纵雨的精灵。召唤台风吹飞各种东西。"
}
},
{
"indx": 383,
"name": {
"ja-jp": "メギラス・ライト",
"zh-cn": "梅基拉斯之光",
"custom": "梅基拉斯之光"
},
"desc": {
"zh-cn": "令人毛骨悚然的眼睛会释放出邪恶的光芒,对敌人造成伤害。",
"custom": "从眼中放出恶光给予对方损伤。"
}
},
{
"indx": 384,
"name": {
"ja-jp": "マブラス",
"zh-cn": "奇迹鸟",
"custom": "奇迹鸟"
},
"desc": {
"zh-cn": "“大炮鸟”+“邪炎之翼”",
"custom": "「大炮鸟」+「邪炎之翼」"
}
},
{
"indx": 385,
"name": {
"ja-jp": "悟りの老樹",
"zh-cn": "悟道的老树",
"custom": "悟道的老树"
},
"desc": {
"zh-cn": "利用起所有的知识,抵御住各式的攻击。",
"custom": "运用所有知识、能够守备各种攻击的老树。"
}
},
{
"indx": 386,
"name": {
"ja-jp": "緑樹の霊王",
"zh-cn": "绿树灵王",
"custom": "绿树之灵王"
},
"desc": {
"zh-cn": "生活在绿树环绕的树林中统治森林的年少王者。",
"custom": "居住在被绿树包围的地方,统治森林的年轻国王。"
}
},
{
"indx": 387,
"name": {
"ja-jp": "陸戦型 バグロス",
"zh-cn": "陆战型 巴格洛斯",
"custom": "陆战型战斗艇"
},
"desc": {
"zh-cn": "陆地战斗机器人,不过总有一天也能在海里使用。",
"custom": "陆地战斗机器人,总有一天能在海里使用。"
}
},
gitextract_h462tnam/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.md │ │ └── 功能建议.md │ └── workflows/ │ └── flet-build.yml ├── .gitignore ├── LICENSE ├── README.md ├── api.py ├── crack_key.py ├── decrypt.py ├── encrypt.py ├── hint.py ├── index.py ├── interface.py ├── move.py ├── pack.py ├── process.py ├── release.ps1 ├── requirements.txt ├── resources/ │ ├── 25946b17_custom │ ├── 7a7d18a0_custom │ ├── SDFWordsList.txt │ ├── card_api_cache.json │ ├── da15c88f_custom │ └── f36fce47_custom ├── resources_dev/ │ └── old_card_cache.json ├── search.py ├── test.py ├── translate.py ├── unity/ │ └── uncompressed.tpk ├── unpack.py └── utils.py
SYMBOL INDEX (63 symbols across 15 files)
FILE: api.py
class UnifyChar (line 13) | class UnifyChar:
method unify_pendulum_desc (line 15) | def unify_pendulum_desc(desc: str) -> str:
method unify_separator (line 48) | def unify_separator(desc: str) -> str:
method unify_name (line 89) | def unify_name(name: str) -> str:
method unify_desc (line 95) | def unify_desc(desc: str) -> str:
class CardsCache (line 101) | class CardsCache(TypedDict):
class CacheManager (line 106) | class CacheManager(object):
method add_cache (line 114) | def add_cache(cls, cid: int, jp_name: str = '', cn_name: str = '',
method _save_cache_locked (line 142) | def _save_cache_locked(cls):
method save_cache (line 149) | def save_cache(cls):
method load_cache (line 154) | def load_cache(cls) -> Dict[str, dict]:
function api_local (line 173) | def api_local(cid: int) -> Union[NameDesc, None]:
class CardApiRequest (line 203) | class CardApiRequest:
method __init__ (line 204) | def __init__(self):
method _get_session (line 208) | def _get_session(self):
method api (line 215) | def api(self, search: str, cid: int, desc_src: str, network_error_cb: ...
FILE: crack_key.py
function crack_key (line 4) | def crack_key(b: bytes) -> int:
FILE: decrypt.py
function card_decrypt (line 7) | def card_decrypt(unpacked: CardData, m_iCryptoKey: int) -> CardData:
FILE: encrypt.py
class Others (line 9) | class Others(TypedDict):
class PartsOfEachCard (line 15) | class PartsOfEachCard(TypedDict):
function gen_others (line 20) | def gen_others(card_raw_data: CardRawData, m_iCryptoKey: int) -> Others:
class CardSegment (line 88) | class CardSegment(TypedDict):
class SplitResult (line 97) | class SplitResult(TypedDict):
function split (line 103) | def split(desc: str, n_part: int = -1) -> SplitResult:
function gen_part (line 146) | def gen_part(
function encrypt (line 263) | def encrypt(m_iCryptoKey: int, b: bytes) -> bytes:
function card_encrypt (line 273) | def card_encrypt(
FILE: hint.py
class CardEncryptedData (line 25) | class CardEncryptedData(TypedDict):
class Status (line 33) | class Status:
FILE: index.py
function main (line 24) | def main(
FILE: interface.py
function log (line 15) | def log(e: Any) -> None:
function main (line 19) | def main(page: ft.Page):
FILE: move.py
class BackupFileManager (line 6) | class BackupFileManager(object):
method backup_file (line 10) | def backup_file(data_key, path_game_root, file_name, dev_mode): # src...
method recovery_file (line 30) | def recovery_file(data_key, dst_dir, file_name, dev_mode):
function get_local_data_key (line 48) | def get_local_data_key(path_game_root: str, file_list: dict[str, str]):
function create_folder (line 66) | def create_folder(folder_path: str):
function copy_to_local (line 75) | def copy_to_local(path_game_root: str, path_resources: str, file_list: d...
function copy_to_original (line 115) | def copy_to_original(
function output_font (line 172) | def output_font(path_game_root: str, data_key: str, dst_dir: str, dir_fo...
FILE: pack.py
function card_pack (line 9) | def card_pack(card_encrypt_data: CardEncryptedData, dir_input: str, dir_...
FILE: process.py
function cidProcess (line 5) | def cidProcess(b: bytes, skip_num: int):
function progressiveProcess (line 23) | def progressiveProcess(
function card_process (line 65) | def card_process(card_data: CardData) -> CardRawData:
FILE: search.py
function search_card_obj_list (line 7) | def search_card_obj_list(path_game_root: str, log: Callable[[str], None]...
FILE: test.py
function delete_randomly (line 13) | def delete_randomly(l: list[T], rate: float = 0.1) -> list[T]:
FILE: translate.py
class TranslateHelper (line 12) | class TranslateHelper:
method __init__ (line 20) | def __init__(self, card_raw_data: CardRawData,
method _load_archived_data (line 41) | def _load_archived_data(self):
method _add_progress_cnt (line 48) | def _add_progress_cnt(self):
method _is_force_update_card_cache (line 56) | def _is_force_update_card_cache(self, cid):
method _search_archived_data (line 63) | def _search_archived_data(self, cid: int, name_cn: str, desc_cn: str) ...
method card_translate (line 83) | def card_translate(self) -> CardRawData:
method _try_translate_single_card (line 125) | def _try_translate_single_card(self, item: CardRawDataItem):
FILE: unpack.py
function card_unpack (line 9) | def card_unpack(path_data_unity3d: dict[str, str]) -> CardData:
FILE: utils.py
function getFilesList (line 9) | def getFilesList(path: str) -> list[str]:
function flatten (line 21) | def flatten(l: list[list[T]]) -> list[T]:
function make_dir (line 25) | def make_dir(path: str) -> None:
function get_resource_path (line 31) | def get_resource_path(relative_path: str) -> str:
function q2b_string (line 40) | def q2b_string(ustring):
function throttle (line 60) | def throttle(wait_sec: int) -> Callable[[Callable[P, None]], Callable[P,...
function get_logger (line 83) | def get_logger() -> logging.Logger:
function get_path_json (line 108) | def get_path_json(filename) -> Union[dict[str, str], None]:
Copy disabled (too large)
Download .json
Condensed preview — 31 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,770K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bug.md",
"chars": 364,
"preview": "---\nname: BUG\nabout: 提交BUG反馈\ntitle: \"[BUG] \"\nlabels: bug\nassignees: ''\n\n---\n\n**BUG描述**\n如何发现的这个BUG、BUG具体表现、复现这个BUG的可能步骤,e"
},
{
"path": ".github/ISSUE_TEMPLATE/功能建议.md",
"chars": 303,
"preview": "---\nname: 功能建议\nabout: 目前未支持功能的建议(字体问题请提BUG)\ntitle: \"[Feature] \"\nlabels: enhancement\nassignees: ''\n\n---\n\n**描述产生功能需要的场景**\n"
},
{
"path": ".github/workflows/flet-build.yml",
"chars": 1406,
"preview": "name: Flet Build\n\non:\n release:\n types: [created]\n\njobs:\n build:\n runs-on: windows-latest\n\n steps:\n - na"
},
{
"path": ".gitignore",
"chars": 128,
"preview": "src/**\noutput/**\ndist\nbuild\nlocal_data\n\ndata.unity3d\n\n*.spec\n__pycache__\n.idea\ngenerated-*\n*logs.txt\n\n!.gitkeep\n\nresourc"
},
{
"path": "LICENSE",
"chars": 34522,
"preview": " GNU AFFERO GENERAL PUBLIC LICENSE\n Version 3, 19 November 2007\n\n Copyright (C)"
},
{
"path": "README.md",
"chars": 1846,
"preview": "<h1 align=\"center\">Master Duel 社区中文翻译补丁</h1>\n<div align=\"center\">\n\n -> int:\n def helper(b: bytes, m_iCryptoKey):\n data = bytearray(b)\n "
},
{
"path": "decrypt.py",
"chars": 582,
"preview": "import zlib\nfrom typing import cast\n\nfrom hint import CardData\n\n\ndef card_decrypt(unpacked: CardData, m_iCryptoKey: int)"
},
{
"path": "encrypt.py",
"chars": 9492,
"preview": "import re\nimport zlib\nfrom typing import TypedDict, TypeVar, cast\n\nfrom hint import CardData, CardEncryptedData, CardRaw"
},
{
"path": "hint.py",
"chars": 1260,
"preview": "from typing import TypedDict, Literal\n\nFileName = Literal[\"CARD_INDX\", \"CARD_NAME\", \"CARD_DESC\", \"CARD_PART\", \"CARD_PIDX"
},
{
"path": "index.py",
"chars": 4570,
"preview": "import json\nfrom typing import Callable\nfrom os import path\n\nfrom crack_key import crack_key\nfrom decrypt import card_de"
},
{
"path": "interface.py",
"chars": 10058,
"preview": "import time\nfrom ctypes import alignment\nimport webbrowser\nfrom os import path\nfrom typing import Any\n\nimport flet as ft"
},
{
"path": "move.py",
"chars": 6379,
"preview": "import os\nimport shutil\nfrom os import path\n\n\nclass BackupFileManager(object):\n BACKUP_FOLDER_NAME = \"_TranslationBac"
},
{
"path": "pack.py",
"chars": 1001,
"preview": "import os\nfrom typing import Any\nimport UnityPy\n\nfrom hint import CardEncryptedData\nfrom move import create_folder\n\n\ndef"
},
{
"path": "process.py",
"chars": 2588,
"preview": "from hint import CardData, CardRawData, CardRawDataItem\nimport struct\n\n\ndef cidProcess(b: bytes, skip_num: int):\n sta"
},
{
"path": "release.ps1",
"chars": 214,
"preview": "$version = Read-Host \"Please enter version\"\n\nflet pack \".\\interface.py\" --add-data \"unity;UnityPy/resources\" --add-data "
},
{
"path": "requirements.txt",
"chars": 79,
"preview": "flet==0.24.1\npyinstaller>=5.8.0\nRequests>=2.32.0\ntqdm>=4.66.3\nUnityPy<=1.10.18\n"
},
{
"path": "resources/SDFWordsList.txt",
"chars": 362,
"preview": "Wβ—ⅢⅧ①②③④⑤【】せよアグゴバプリル一丈上专东丢严丧个中举久乎乔乘乾争亏仁仆今介从仓付仙令仪仲价份伊伏休伞伶体余佛佯侏依侠俊修俿假偷傀傅傣傲傻像儚免八养兼农冬净券剪募单博厥参发叙叛合吞含味命咚哥善喙嚏坂垮堤塔填复夸夺奈奉妮妹姆委姜娇娑"
},
{
"path": "resources_dev/old_card_cache.json",
"chars": 5231979,
"preview": "[\n {\n \"indx\": 0,\n \"name\": {\n \"ja-jp\": \"ラーの翼神竜\",\n \"zh-cn\": \"拉之翼神龙\",\n \"c"
},
{
"path": "search.py",
"chars": 1716,
"preview": "import json\nimport os\nimport UnityPy\nfrom typing import Callable\n\n\ndef search_card_obj_list(path_game_root: str, log: Ca"
},
{
"path": "test.py",
"chars": 522,
"preview": "from hint import CardRawData\nimport json\nimport random\n\nfrom typing import TypeVar\n\nwith open(\"./resources/card copy.jso"
},
{
"path": "translate.py",
"chars": 6377,
"preview": "import concurrent.futures\nimport threading\nimport os.path\nimport json\nimport tqdm\nimport tqdm.contrib\nfrom typing import"
},
{
"path": "unpack.py",
"chars": 576,
"preview": "from typing import Any, cast\n\nimport UnityPy\n\nfrom hint import CardData, PathIdDict\nfrom utils import getFilesList\n\n\ndef"
},
{
"path": "utils.py",
"chars": 3480,
"preview": "import logging\nimport os\nimport sys\nimport requests\nfrom threading import Timer\nfrom typing import Callable, ParamSpec, "
}
]
// ... and 6 more files (download for full content)
About this extraction
This page contains the full source code of the mikualpha/master-duel-chinese-switch GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 31 files (26.1 MB), approximately 1.3M tokens, and a symbol index with 63 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.