mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-12 23:44:58 +00:00
Mt. Silver - finished
This commit is contained in:
9
etc/Essentials Docs Wiki.URL
Normal file
9
etc/Essentials Docs Wiki.URL
Normal file
@@ -0,0 +1,9 @@
|
||||
[InternetShortcut]
|
||||
URL=http://essentialsdocs.wikia.com/
|
||||
IDList=
|
||||
HotKey=0
|
||||
|
||||
[{000214A0-0000-0000-C000-000000000046}]
|
||||
Prop3=19,2
|
||||
[InternetShortcut.A]
|
||||
[InternetShortcut.W]
|
||||
BIN
etc/Game-oldV.exe
Normal file
BIN
etc/Game-oldV.exe
Normal file
Binary file not shown.
BIN
etc/Game.exe
Normal file
BIN
etc/Game.exe
Normal file
Binary file not shown.
436
etc/LICENSE
Normal file
436
etc/LICENSE
Normal file
@@ -0,0 +1,436 @@
|
||||
|
||||
Attribution-NonCommercial-ShareAlike 4.0 International
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright
|
||||
and certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More_considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
|
||||
Public License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution-NonCommercial-ShareAlike 4.0 International Public License
|
||||
("Public License"). To the extent this Public License may be
|
||||
interpreted as a contract, You are granted the Licensed Rights in
|
||||
consideration of Your acceptance of these terms and conditions, and the
|
||||
Licensor grants You such rights in consideration of benefits the
|
||||
Licensor receives from making the Licensed Material available under
|
||||
these terms and conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-NC-SA Compatible License means a license listed at
|
||||
creativecommons.org/compatiblelicenses, approved by Creative
|
||||
Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
e. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
g. License Elements means the license attributes listed in the name
|
||||
of a Creative Commons Public License. The License Elements of this
|
||||
Public License are Attribution, NonCommercial, and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
k. NonCommercial means not primarily intended for or directed towards
|
||||
commercial advantage or monetary compensation. For purposes of
|
||||
this Public License, the exchange of the Licensed Material for
|
||||
other material subject to Copyright and Similar Rights by digital
|
||||
file-sharing or similar means is NonCommercial provided there is
|
||||
no payment of monetary compensation in connection with the
|
||||
exchange.
|
||||
|
||||
l. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
m. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
n. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part, for NonCommercial purposes only; and
|
||||
|
||||
b. produce, reproduce, and Share Adapted Material for
|
||||
NonCommercial purposes only.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. Additional offer from the Licensor -- Adapted Material.
|
||||
Every recipient of Adapted Material from You
|
||||
automatically receives an offer from the Licensor to
|
||||
exercise the Licensed Rights in the Adapted Material
|
||||
under the conditions of the Adapter's License You apply.
|
||||
|
||||
c. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties, including when
|
||||
the Licensed Material is used other than for NonCommercial
|
||||
purposes.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
b. ShareAlike.
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons
|
||||
license with the same License Elements, this version or
|
||||
later, or a BY-NC-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the
|
||||
Adapter's License You apply. You may satisfy this condition
|
||||
in any reasonable manner based on the medium, means, and
|
||||
context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms
|
||||
or conditions on, or apply any Effective Technological
|
||||
Measures to, Adapted Material that restrict exercise of the
|
||||
rights granted under the Adapter's License You apply.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database for NonCommercial purposes
|
||||
only;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material,
|
||||
including for purposes of Section 3(b); and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public licenses.
|
||||
Notwithstanding, Creative Commons may elect to apply one of its public
|
||||
licenses to material it publishes and in those instances will be
|
||||
considered the "Licensor." Except for the limited purpose of indicating
|
||||
that material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the public
|
||||
licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
BIN
etc/animmaker.exe
Normal file
BIN
etc/animmaker.exe
Normal file
Binary file not shown.
26
etc/animmaker.txt
Normal file
26
etc/animmaker.txt
Normal file
@@ -0,0 +1,26 @@
|
||||
animmaker.exe - Converts sprites to RPG Maker XP format animations
|
||||
(C) 2008 Peter O.
|
||||
|
||||
Usage: animmaker xmlfile.xml
|
||||
('xmlfile.xml' is the path to any XML file, see below)
|
||||
|
||||
Example of XML file:
|
||||
|
||||
<animations>
|
||||
<!--Animation file to create (in this case, animation.png)-->
|
||||
<animation name="animation.png">
|
||||
<!--Pattern to add to the animation. Consists of the image's
|
||||
filename plus the rectangle of the pattern to extract
|
||||
from the image (x, y, width, height) (up to 96x96 in size)
|
||||
Sprites listed here will be doubled in size in the animation-->
|
||||
<pattern filename="pkmnfrlg_effects.png" x="50" y="201"
|
||||
width="56" height="68" />
|
||||
</animation>
|
||||
<!--Another animation file, animation2.png)-->
|
||||
<animation name="animation2.png">
|
||||
<pattern filename="pkmnfrlg_effects.png" x="50" y="201"
|
||||
width="56" height="68" />
|
||||
<!-- You can leave out x, y, etc. to use the whole image-->
|
||||
<pattern filename="effects2.png" />
|
||||
</animation>
|
||||
</animations>
|
||||
155
etc/changelog.txt
Normal file
155
etc/changelog.txt
Normal file
@@ -0,0 +1,155 @@
|
||||
5.1
|
||||
Many, many bugfixes
|
||||
|
||||
## Re-added features ##
|
||||
In-game clock
|
||||
Speed-up button
|
||||
Reverse mode
|
||||
Easy and Hard difficulties
|
||||
|
||||
#Removals
|
||||
Removed Trainer House
|
||||
Removed the Convert Pokemon option from the update menu
|
||||
Oak no longer gives a Johto starter after beating the league
|
||||
Removed Pokedex key item
|
||||
|
||||
##New Stuff
|
||||
Added Quick Surf option
|
||||
Added Kin Island Club
|
||||
Replaced Delibird's hidden ability with Snow Warning
|
||||
Added overworld sprites for a few important trainers
|
||||
Added animations for using Rock Smash and Cut in the overworld
|
||||
Traded Pokémon now become owned by player when fused (so they can be unfused)
|
||||
Made Oak's Lab look more like the HGSS version
|
||||
Added egg move tutor in Battle Factory
|
||||
Battle Factory now gives Factory Points instead of Rare Candies
|
||||
Updated critical hits to gen 6 mechanics
|
||||
Added gen 6 status move immunity from certain types
|
||||
Implemented Multitype ability for fusions
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
5.0
|
||||
##########################
|
||||
The 5.0 update brings Infinite Fusion to a new engine, which makes the game run better and allows
|
||||
for a variety of improvements.
|
||||
However, there are also a handful features that were in previous versions of the game which are not
|
||||
compatible with this new version of Pokemon Essentials and that have been removed. Some of them will
|
||||
be added back progressively in future updates and others will likely be gone for good.
|
||||
|
||||
See the full changelog of Pokémon Essentials 19 and MKXP
|
||||
MKXP: https://github.com/Ancurio/mkxp
|
||||
Essentials: https://essentialsdocs.fandom.com/wiki/Change_log
|
||||
|
||||
#############
|
||||
Added Features
|
||||
#############
|
||||
## Technical###
|
||||
- MKXP player is now used to run the game instead of RGSS player
|
||||
- Fullscreen & resizable screen
|
||||
- Performance improvements
|
||||
- Built-in controls binding (F1)
|
||||
-- Includes native controller support
|
||||
- The game now continues running when it's in the background
|
||||
- Savefiles have been moved to the appdata folder (Windows)
|
||||
|
||||
|
||||
## UI and menus ##
|
||||
- Changed the battle UI's appearance
|
||||
- New options in in-game menu:
|
||||
- Default movement
|
||||
- Text entry type
|
||||
- Battle type
|
||||
- Added Instant text speed option
|
||||
- Menus and controls should be more responsive in general
|
||||
- Added visual indicator for selecting fusion order on the title screen
|
||||
|
||||
## Gameplay ##
|
||||
- Exp. gain when catching Pokémon
|
||||
- Now possible to register multiple items at once
|
||||
- Adds several new moves from generations 5 to 7
|
||||
- Added back double battles
|
||||
- Added triple battles lounge in Knot Island
|
||||
- Added Battle Factory
|
||||
- Changed how levels are calculated when unfusing:
|
||||
- Level when originally fused + experience obtained while fused
|
||||
- Levels gained via Rare Candies are NOT taken into account
|
||||
-NB: Pokemon that were fused in previous versions still use the old method
|
||||
- Updated all movesets to gen 7
|
||||
- Added 12 new TMs and 5 new Move tutors
|
||||
- Removed the Mt. Silver requirement for making triple fusions
|
||||
- Added an option to set the default battle type (single, double, triple) - Only available if beat the game at least once
|
||||
- Traded Pokémon now become owned by player when fused
|
||||
|
||||
## Maps ##
|
||||
- Changed some tiles in Vermillion City
|
||||
- Added Dive section to Kindle Road
|
||||
|
||||
## Tweaks / Balance ##
|
||||
- Reduced DNA Splicers price to $300
|
||||
- Tweaked Sprout Tower to make it a bit easier
|
||||
- Moon Stones, Sun Stones, Dawn Stones, Dusk Stones and Shiny Stones are now sold at the Goldenrod Dept. Store instead of Celadon
|
||||
- Changed some trainer teams in Lavender tower
|
||||
|
||||
## Miscellaneous ##
|
||||
- Resort Gorgeous now prioritizes Pokemon with custom sprites
|
||||
- Renamed Spring boots to Golbat Boots
|
||||
- New debug options
|
||||
- Item stack limit increased to 999
|
||||
- Added overworld animations for Cut and Rock Smash
|
||||
|
||||
#################
|
||||
# Bug fixes #
|
||||
#################
|
||||
- Fixed random memory crashes (unconfirmed, but I haven't encountered one so far)
|
||||
- Fixed random crash when catching Pokémon
|
||||
- Fixed several moves and abilities which were previously broken (Crafty Shield, Fairy Lock, Purify, Gale Wings, Moxie, Innards Out, Magician, Pickpocket, Protean, Disguise)
|
||||
- Fixed double battles
|
||||
|
||||
#################
|
||||
Removed Features
|
||||
#################
|
||||
|
||||
Removed features that will be coming back eventually
|
||||
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
||||
- Randomizer
|
||||
- Speed up button
|
||||
- Pokedex seen/caught
|
||||
- Wild fusions //TODO: pas oublier de init exp_gained_since_fused=0 && exp_when_fused = self.exp
|
||||
- Autosave (except in Pokemon centers)
|
||||
- Fusing from PC
|
||||
- Nicknaming from the party screen - Added temporary name rater in Vermillion City's Pokemon center
|
||||
- Modern Mode compatibility
|
||||
- Quest log
|
||||
- Hidden abilities routes
|
||||
- Pokeradar special encounters
|
||||
- In-game clock
|
||||
- Hard mode, Easy mode
|
||||
- Some quests probably don't work
|
||||
- Obtaining items from Rock Smash and fishing
|
||||
|
||||
Removed features that probably won't be coming back
|
||||
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
||||
- Elite Battle System (includes EBS and NxtGen UI battle UIs, battle motion, etc.)
|
||||
- Autorun button toggle
|
||||
- Gen 5 style bag
|
||||
- Demice's endgame challenge
|
||||
- Bill's battletower mod
|
||||
- French pack compatibility
|
||||
|
||||
|
||||
|
||||
############ KNOWN ISSUES ##############
|
||||
- Some areas might have abnormal lag - please tell me in the discord if you find one that's unreasonably laggy (you will know if you see one)
|
||||
- Some side-stairs might act strange
|
||||
- The Pokedex is currently all sorts of messed up
|
||||
- Long loading time when starting up the game
|
||||
- Some of the music and sound effects might not load correctly
|
||||
- Some Pokémon appear higher than they should in battles on the player's side
|
||||
- Significant stutter in the overworld when playing the game on an AMD CPU
|
||||
- Several custom items have not yet been reimplemented
|
||||
- Some battle backgrounds might be missing
|
||||
- Erika's backsprite uses's May's backsprite from RSE
|
||||
- Some NPC trades likely to crash the game
|
||||
BIN
etc/essentials18 - Raccourci.lnk
Normal file
BIN
etc/essentials18 - Raccourci.lnk
Normal file
Binary file not shown.
4
etc/extendtext.txt
Normal file
4
etc/extendtext.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Extendtext.exe by Peter O.
|
||||
|
||||
This program is a small tool for extending the size of the Show Text
|
||||
and Script dialog boxes in RPG Maker XP. To use it, just run the program while the Show Text or Script dialog box is displayed.
|
||||
10737
etc/incompleteLines_mainDownload.txt
Normal file
10737
etc/incompleteLines_mainDownload.txt
Normal file
File diff suppressed because it is too large
Load Diff
11106
etc/incompleteLines_spritepack.csv
Normal file
11106
etc/incompleteLines_spritepack.csv
Normal file
File diff suppressed because it is too large
Load Diff
BIN
etc/infinitefusion-e18 - Raccourci.lnk
Normal file
BIN
etc/infinitefusion-e18 - Raccourci.lnk
Normal file
Binary file not shown.
BIN
etc/keybindings.mkxp1
Normal file
BIN
etc/keybindings.mkxp1
Normal file
Binary file not shown.
BIN
etc/knownpoint.bmp
Normal file
BIN
etc/knownpoint.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 246 B |
98
etc/le_everyone.txt
Normal file
98
etc/le_everyone.txt
Normal file
@@ -0,0 +1,98 @@
|
||||
Toad 900#1617, Kiwi#4199, Aquatic#7954, Knuckles3&Knuckles#7559, Katten#7455, Blaquaza#1347,
|
||||
Blackboots#7369, Milchik#6233, Deleted User#0000, Gdei#2810, Universez#0767, Scarecrow_924#8531,
|
||||
mammuth use ursaluna#3114, Kulgun#3323, Retrogamer#9934, Scrapi#6319, PinkYoshi#2350, Tomate#6670,
|
||||
Stan#3932, Xiapher#4244, Howls#4468, xoto#0766, xigzagoon#9354, Beespoon#2222, NeoSoup#6526,
|
||||
Dyno#3861, Sjoba_sheep#1111, Maelmc#9965, ThornsofLight#3245, Xillo#5236, pengu#6874, Mope7#1139,
|
||||
Gorky#1761, All-Seeing#9253, IGot50lbsOfTanneriteInMyAnus#4093, Emisys#4024, JamoJauhis#4971,
|
||||
Cheepoof#8815, Moon_Tah#2688, BButton#8097, Punko#1235, NakaMagic#0774, Tabarnak#2210, M4rcus#0928,
|
||||
Bubba-Rottweiler#7322, Keksgesicht#7133, Teamama#4369, BTT#3408, calicorn#6994, PainT#3334,
|
||||
Taylor Mai#0134, Underuser#5401, AkumaDelta#2364, Scotsman#6299, GenoRhye#3335, (✿◠‿◠)Kanger#3997,
|
||||
JoshuLips#5010, GREEN#2016, SpiDrone#6590, Bizmythe#4062, Silver#4784, gnose_#6945, D'Octobre#2420,
|
||||
Tenedranox#5660, Bowsori#7981, Z-Man#1429, SolarFinch#9187, The Sinful Trubbish#6850, Seath#8173,
|
||||
Pip#1053, PrinceMagz#8464, Yoshidactylus#5060, SissyPrincessBrianna#5790, LilacTypo#3280,
|
||||
TimeAxis#3725, Zoroark73#0267, Matten#2329, BiscottiBuck#8750, kobold hijinks#9252, spagalapof#5624,
|
||||
LeoPond#7180, Fourleaf#3792, Khrona#0339, yozara#3704, Mokko#1106, LeonDark#3188, WillTheWall#2204,
|
||||
Skullex#3564, MrDeLuux#1087, OPStellar#8399, Kanguin#4977, FollyGee#6354, jace#6971, Caligulynn#8492,
|
||||
UmbreonRogue#7717, Scoobz#4536, LinkLion1#2230, EddarHellsing#3724, UnclaimedPuppy#5082,
|
||||
Tim Allen#0564, Galacta Pieta#5570, Admiral Pillowfight#0192, DigiDragoon#2625, Dusty#0376,
|
||||
C J#3125, UnworthyPie#8963, Zazash#7034, Jordino#0453, Swonkfish#8759, GameLord 64#0690,
|
||||
SilentSeekers14#2877, MonHuque#9884, Mo Zi#1172, Miramint#2314, axl17#9480, SilverTotodile#8015,
|
||||
HydroDX#8982, Esprite#6535, Loafer#4133, Chulz#8591, Anonymous Joker#0001, 003Venusaur#9184,
|
||||
MrGenie#1122, Livy#7053, error#6038, NotAThotScott#2497, Xyloldi#9276, Charlie#9139, BuzzBee#3824,
|
||||
SmoothCactus#2568, Sploox#8782, Panos#1824, Neonriser#6841, mlettow#7447,
|
||||
Because I can and it is fun.#5367, Rumi#1222, Murp#4269, dodo#2008, 𝕋oasted 𝔾oose#7124,
|
||||
Kookodile#8975, Ignus#6182, BowgartKing#3840, Sourdeer#5268, Low#1512, FoLK#3915, Cult#8608,
|
||||
xPeter#6603, toki woki#9743, Mewblue#8713, cold#8884, Tobbns#7421, Kaiivee#2186, Garrub#2366,
|
||||
blinker#8709, Minion#6069, JeyP#8836, Dusk#1598, ChippyYYZ#7202, BramTheSlayer#2747, Aegide#8190,
|
||||
サユミ#2816, XtremeFireFox#6392, Skegg#5501, Potch#1120, Le Raz27#6898, GamR#2726, Fyre#9863,
|
||||
CharIotte#8096, zitlezoan#9314, LordHDes#9807, Omasunner#1386, Hubercioch#2595, MarvusTheButt#4570,
|
||||
Jaggedthorn#5446, coin coin#1267, DerD4nnY#6878, deetah#5572, Zypher31#5048, Yeticrossing#6549,
|
||||
Teebreaker#2095, Romani Peace#5089, Bearmeme#1068, alexander1934#5599, Swagouille#3714, Rah_123#9893,
|
||||
K3R0#8248, BungaloFury#7456, 1.Ghastly-Fox#6648, .panix#4390, Ulematome#0696, silvverserpent#9904,
|
||||
Setteduetto#2592, Rhodric#8638, ClawsHDi#4608, Wœtrœ#4935, TimelessShrine#3671, Jordanos#4570,
|
||||
Garhall#0148, Bromancer#7220, Torch#9606, toad#0892, Phoenix99125#0873, Mei アスカの痴女#8634,
|
||||
Dafaillord#2870, Carolus#7694, Alic(ub(e))#5067, ZeoMaddox#7022, Yep, it's Caio#2377, TM#7724,
|
||||
Sjoba_sheep#3338, Rath#5557, Newfi Cheese#0429, Kveykva#4921, Kumo (Uh-hmmm)#5974, Just_A_Husk#8070,
|
||||
Jigokuro#5094, Dynte#0539, Dree#6123, SpleensJuice#7677, Helium#0512, GimmeTheBelt#3052, FlyerBee#5026,
|
||||
Chogolatine#0418, BrianTNT#0151, Persephone#6234, Okamical#7568, Kid Caliban#8938, DurchBurch#5530,
|
||||
Vaporwave Capybara#2820, pursuji#8620, PinkPoffin#6403, Klutter#4451, H4R-P#0001, Blissful Moose#7601,
|
||||
BigTimeAng#4614, wooloo#6925, Vietco#0665, TJTL33#9056, Sahxyel#2827, RubyRed1203#4517, Rice_Farmer#3642,
|
||||
Matéo#1983, Elle#7960, DanniWins#2794, CrazeBanana#6943, Aurange#8320, A_nnoying#9360,
|
||||
TheHackingRotom#7365, SpaceSR#5015, Serreor#6487, Scooch#5241, Risharcuterie#2982, Litanas#1153,
|
||||
Kaegro#3029, Iustinus Tempus#9548, Holina#3742, Gor_Asgardian#8359, FatalFinish#0618, 1BadGTO#1642,
|
||||
𝖁𝖎𝖗𝖌𝖎𝖑𝖊 ʋɨʟɛ#9211, ŁuÐø.#1932, WarMonger#6579, Spriter#1548, Scrafter#5868, Prince De Lu#8567,
|
||||
Morphling#0001, Lie#2037, Jezza#0621, I'm Yoshi#9102, Fergul#0690, eblair#7032, BleuSnackBar#7428,
|
||||
Ayko#3269, AndreOffline#6147, Romicron#9231, Pippington#5114, Muggins#0658, Mimikyuke#3868,
|
||||
MikuGoya#5085, LoserUser359#1783, likouns#5496, LedianLover#4426, Jershal Ribbins#6163, HBleach#2567,
|
||||
Haru Le Demi-Dieu#8222, derasez#6850, Banboox#6949, Azinith#4432, Absolute Madness#8296, Xicdul#6544,
|
||||
Sin#1780, Resilicns#2615, Ravioliboi#9566, Kapados#1661, BellatheDork#4739, bacon#2689,
|
||||
Was I'm Yoshi#3581, RampantMind#4474, maxolcorm#8623, Maskninja#9162, Lcs128#0603, Lahar#6856,
|
||||
Klohinx#5120, Hilune#1076, Hid#5642, HatsuneZaku#0001, GODZILLA#9419, General#8915, DireDireDoc#9096,
|
||||
Didus - Baggafix#0731, ChivesKirk#5773, Chilly#4972, BeardicKnowledge#0096, TheAlest#9187,
|
||||
TheAlabastarBrothers#0696, SmoothEd1#9194, Pinely#0023, Libra#0105, KirbyRider1337#5876,
|
||||
Jane has a gun#2231, hazel#7073, Formerly Beef#6239, Firetra#3665, DTHayward7#0135, demonslayer16#5650,
|
||||
Demo_Exp - Bomb Elemental#6244, CozmoBoom#9335, Ceci n'est pas une Pine#1212, Axyl#2031, Admorei#1004,
|
||||
2KoF#2209, Zortie#4505, xXSpiritWolfX#3996, Siyonn#6511, Jessisodwakus#0909, FlorianDX#0951,
|
||||
Filip#9254, Elvenoob#6864, Celadeus#4914, CCStuck#7916, cavalo#2028, bobosmith01#6567, Biolum#7878,
|
||||
ArcZero#5750, AfterKing#7628, 「🪐Hysteria💜」⁹#7235, WonderAll#6517, Whit-Kit#5553, Terminaut#2990,
|
||||
ShaminSki#6500, Scharage#3575, Puffy Puffy Puff Puff#4305, Patrick Nevermore#2521, Ocxin#6186,
|
||||
Meowholic#5433, LuMiraWolf#3615, JopDone#3412, Jaters#2779, Felgrand#3490, Fanta#4990,
|
||||
Chrisnick64#8967, Bubbline#9700, bort#5617, BluePhoenixAlex#8696, amuseoffirebane#5527, Tenrec#8380,
|
||||
Strix#6463, Snoot#0446, PenguinOfLife#1777, Marmotte5280#7658, KarottenKarl#8670, JunkShaman#7478,
|
||||
Heaven Canceler#3755, FrozenReborns#2316, flabbergasted mega bee#0536, Dingo#0194, Crumbs#8513,
|
||||
Amgis#6748, Zaloran#8106, YokoSpaghetti#5829, Xyrann#3916, Spârda#5449, Potato Q#8506, PlayerName#6665,
|
||||
Monsieur Taser#6242, Misu#4074, leader of the nugget cult#0367, KewlKatKitten#9360, Kevinus98#4114,
|
||||
inbox#1000, HampstaPig#8406, Gab#8558, Flattus Norvegicus#9850, FishyPriest#5286, EyeballSweat#0728,
|
||||
Eisseele#3076, Cub#4366, Conansson#7524, cestlamo#3485, BossTyrant#7450, AzelGriff#8706,
|
||||
1877KarsForKids#6916, 【Stalker】ᶘ ᵒᴥᵒᶅ#1267, 「NostalJay」#2533, WynnDawnstrider#0564, WelpY124#7582,
|
||||
Toxx06#9251, Snrasha#5519, SmithPR#9652, Slayder#1617, ShadowOrSmth#8834, Ruchunteur#6203,
|
||||
RatherPeculiar#3373, Prime#5723, philipl#0307, Parallerinpiped#9751, Mnemic#9960, Meztli#6172,
|
||||
MarkGrant#6731, Kixur#7233, Judith❄#7478, GrosslySolaire#7467, GingerBeef#3154, Evosion#9987,
|
||||
Doctor Miawoo#8333, Cad48#0297, Bioh#5266, BigBepisBois#2341, Azuroh#5036, Archhaven#4929,
|
||||
Amigo Monjo#7408, Altaria234#1181, 🌸Gigi#8967, ✨Sparkling Elles✨#5269, мιѕтγ#2741, Zarha#5972,
|
||||
Yoshi#1606, Yassine#3435, WindSwirl#3153, WillFrost#0001, Verdrion#8762, Trubb#8466,
|
||||
THEGRANDEMPEROR#2163, streetcarp#0275, Simlas#3079, Shiro#6632, ROKITCONR#5488, PharaohFan#3670,
|
||||
Ortheoz#7942, Nymano#6967, Nukes#4014, Nightmeer13#1454, Midnight#9871, MarkTheDev#7056, Lunar#0258,
|
||||
luigisalad#8550, lizzledpink#6611, Law (The Bear of Bad News)#1653, Hellfalas#6999, Hades Hand#7069,
|
||||
Griever99#1623, gowther#2086, getthedripp#1890, flanne#6632, Doomknight#2447, Developer Pelipper#8851,
|
||||
cub but mildly stupid#4564, CrimsonTy#7051, Cjpid#7996, Chani von Karpa#7869, BWU-Antonio#2379,
|
||||
BUm79#8112, bees#0427, Anzu#5119, AmokomA#5947, .Réserve.#3395, Zaldrick#1039, Yllan#4806, Vewz-#0205,
|
||||
Veegee#6635, Vaatry#1009, Tiamaet#4806, thighs#2408, softsweets#5338, Slappicus#3616, Skargoth#7306,
|
||||
SailorScum#9858, sabrina_the_witch#4746, Riiwarin#2470, Rhys's Pieces#1882, r2-d3po#9944,
|
||||
PopcornKing#0819, Pooshi#6702, Pinxed [HeHim]#5214, Odion#7851, Nynnapaninie#8374, Nadie#4641,
|
||||
mrvoid#8543, MonkeyMafia#1763, Martiii#8004, Magnus133#5875, Lore#1537, Lora-mun#5661,
|
||||
KingGrimlock28#4763, Kiaory#3379, keurbi#8099, KeeganSkymin4444#7061, juni#6968, Jumby#0574,
|
||||
JUICE#4388, Jolly (dapper) Prismeon#1104, HiraAkshay#8558, Gladiator_Kraken#4797, Frogdog#3947,
|
||||
DQL#6149, croag#8681, crankypunk#6640, Consuelo#0664, Chibi Gaming#4876, chaggie#0001, Blaxaroz#0217,
|
||||
blake7x#3726, Biscuit#9560, Bardiel#0243, AntoineXXI#8454, AnOn55#6663, AMELIE#1210, Aloeva#0375,
|
||||
Aelias#5124, Abe#0249, ᴅᴀ ᴍʏꜱᴛᴇʀʏ ᴏꜰ ᴄʜᴇꜱꜱʙᴏxɪɴ#2558, YungPizzaroll#0195, XBagon#2918, Wonder#2598,
|
||||
Williams#3584, VoryoMHWorld#4492, ULTDude#6421, Théo#4432, tert_14#4277, Solac#9353, sir ferali#4991,
|
||||
Sequoia#2312, Red#4851, Razhiel_master#9310, Perytoon#6394, OppaiDragon#9155, magnacrabb#1234,
|
||||
ljdz#9595, Literally Mongolia#7111, Le Titou puissant#5687, kpu#6858, Kahan#6555, Hm#0965, gux#7816,
|
||||
Grip#1058, gloy#3170, GebackeneBanane#3898, ExplosiveDruid#0049, Dankey#8323,
|
||||
Chocolatine Révolutionnaire#4829, Blade Wolf#0033, Beniflex#9657, Baecundrop#7523, Amalgame#3432,
|
||||
💙💙Alex💙💙#9704, Yorushima#8545, UnicornPrince#4068, Tofuz#0629, Tododas#8917, TJman461#7146,
|
||||
Team Haxley#4549, StarlyCactus#3665, Sarcastic barbarian#3562, Sanic#0823, RoughPuff#7501, Romu#6969,
|
||||
QuiteAMess#9717, Professor C-Dawg#5414, Nagareru#9593, luca3370#2920, KyleThePirahna#3191, KOMAIN#7770,
|
||||
kakakiamekerasakia#3792, ItsThatSimple#6320, Gelos#9875, GalaxyDJx#0001, FullmetalHeichou#7070,
|
||||
Evil Mailman#0604, elpano2#9588, Cenna#6226, Catdesu#0845, CaseyAether#2205, carni#0124, Buttlu#7240
|
||||
6
etc/migrate_older_savefile_to_5_0.bat
Normal file
6
etc/migrate_older_savefile_to_5_0.bat
Normal file
@@ -0,0 +1,6 @@
|
||||
echo POKEMON INFINITE FUSION 5.0 savefile utility
|
||||
echo Moving the game's savefile to appdata folder
|
||||
@echo off
|
||||
chcp 65001
|
||||
xcopy "C:\Users\%USERNAME%\Saved Games\Pokémon Infinite Fusion\Game.rxdata" "C:\Users\%USERNAME%\AppData\Roaming\infinitefusion\"
|
||||
PAUSE
|
||||
1
etc/new_pasages.txt
Normal file
1
etc/new_pasages.txt
Normal file
@@ -0,0 +1 @@
|
||||
#<Table:0x000001b3a13ec848>
|
||||
7553
etc/nonCustomFinals.csv
Normal file
7553
etc/nonCustomFinals.csv
Normal file
File diff suppressed because it is too large
Load Diff
5439
etc/nonCustomFinals2.csv
Normal file
5439
etc/nonCustomFinals2.csv
Normal file
File diff suppressed because it is too large
Load Diff
1
etc/priorities.txt
Normal file
1
etc/priorities.txt
Normal file
@@ -0,0 +1 @@
|
||||
#<Table:0x000001b3a13ec820>
|
||||
193
etc/scripts_combine.rb
Normal file
193
etc/scripts_combine.rb
Normal file
@@ -0,0 +1,193 @@
|
||||
require 'zlib'
|
||||
|
||||
class Numeric
|
||||
def to_digits(num = 3)
|
||||
str = to_s
|
||||
(num - str.size).times { str = str.prepend("0") }
|
||||
return str
|
||||
end
|
||||
end
|
||||
|
||||
module Scripts
|
||||
def self.dump(path = "Data/Scripts", rxdata = "Data/Scripts.rxdata")
|
||||
scripts = File.open(rxdata, 'rb') { |f| Marshal.load(f) }
|
||||
if scripts.length < 10
|
||||
p "Scripts look like they're already extracted. Not doing so again."
|
||||
return
|
||||
end
|
||||
|
||||
create_directory(path)
|
||||
clear_directory(path)
|
||||
|
||||
folder_id = [1, 1] # Can only have two layers of folders
|
||||
file_id = 1
|
||||
level = 0 # 0=main path, 1=subfolder, 2=sub-subfolder
|
||||
folder_path = path
|
||||
folder_name = nil
|
||||
scripts.each_with_index do |e, i|
|
||||
_, title, script = e
|
||||
title = title_to_filename(title).strip
|
||||
script = Zlib::Inflate.inflate(script).delete("\r")
|
||||
next if title.empty? && script.empty?
|
||||
|
||||
section_name = nil
|
||||
if title[/\[\[\s*(.+)\s*\]\]$/] # Make a folder
|
||||
section_name = $~[1].strip
|
||||
section_name = "unnamed" if !section_name || section_name.empty?
|
||||
folder_num = (i < scripts.length - 2) ? folder_id[level].to_digits(3) : "999"
|
||||
folder_name = folder_num + "_" + section_name
|
||||
create_directory(folder_path + "/" + folder_name)
|
||||
folder_id[level] += 1
|
||||
if level < folder_id.length-1
|
||||
level += 1 # Go one level deeper
|
||||
folder_id[level] = 1 # Reset numbering of subfolders
|
||||
folder_path += "/" + folder_name
|
||||
folder_name = nil
|
||||
end
|
||||
file_id = 1 # Reset numbering of script files
|
||||
elsif title.start_with?("=====") # Return to top level directory
|
||||
level = 0
|
||||
folder_path = path
|
||||
folder_name = nil
|
||||
end
|
||||
# Create script file
|
||||
next if script.empty?
|
||||
this_folder = folder_path
|
||||
this_folder += "/" + folder_name if folder_name
|
||||
section_name ||= title.strip
|
||||
section_name = "unnamed" if !section_name || section_name.empty?
|
||||
file_num = (i < scripts.length - 1) ? file_id.to_digits(3) : "999"
|
||||
file_name = file_num + "_" + section_name + ".rb"
|
||||
create_script(this_folder + "/" + file_name, script)
|
||||
file_id += 1 # Increment numbering of script files
|
||||
end
|
||||
# Backup Scripts.rxdata to ScriptsBackup.rxdata
|
||||
File.open("Data/ScriptsBackup.rxdata", "wb") do |f|
|
||||
Marshal.dump(scripts, f)
|
||||
end
|
||||
# Replace Scripts.rxdata with ScriptsLoader.rxdata
|
||||
createLoaderScripts(rxdata)
|
||||
end
|
||||
|
||||
def self.createLoaderScripts(rxdata)
|
||||
# loader_scripts = File.open("Data/ScriptsLoader.rxdata", 'rb') { |f| Marshal.load(f) }
|
||||
# p loader_scripts
|
||||
txt = "x\x9C}SM\x8F\xDA0\x10\xBD#\xF1\x1F\x86,Rb-2\xCB\xB1\x95\xE8\x1E\xBAm\xD5S\xAB\x85\e\xA0\xC8$\x13p7\xD8\x91\xED\x94n\t\xFF\xBD\xB6C0\xE9\xD7\xC5\xF2\xCCx\xDE\xCC\xBCy\xBE\x83\xE5\x9Ek\xC8%j\x10\xD2\xC0Q\xAA\x17\xE0\x05\x98=\xC2\x8E\x1D\x10l\x10E\xA6^+\x83\xF9h8\x18\x0Er\xB4Q\xC52\xDC\xB2\xEC%UXIe\x86\x03\x00gz?\xCCa<\xA2W\x93f\xA5\x14\xD8{A\x91e\xFB\x134[\xD38\xBF\x8D\x18\xAA\xEB\xED(\x99\xAEO\xC9:\xBF'\xEB\xF3\x94\xC0)Z\xDD\x9D\xC6\xB3\xF3\xC6\x9E\xCF\x9F\x16\x8Bt\xF1\xFE\xF9\xF3\xD7\xE5b5\x9EQ#S\xBEY\xCD6\xE7\xE8\xEC\x10\xFC\xA1\xD0\xD4J\xB8\xDA\a\xD4\x9A\xED\x10\xEE!Z\x8B\xB5\x88\xEC%\xD4\xFE&\xB9H\xAC?\"\xC3\x01\x8A\xBC\eI1\xAE1\r\x83\xA1RR9XKF\x80\xA4\x9A\xFFDx7\x877\x0F\x0Fm\xEB\x1Fy\x89TV(\x92\xF8\x9ALK\xB9\x8B'\x10\x1Fc;\x054E\x03\x05=*n0\x19\x8FH\xDB,\xB4\x05!^vI\x8Ei#%l\xF9\x8E\xC2\x97\xDAT\xB5\x01.\xA0\x0F\xEAR\xB1\xD4x\x03\xE1]n\x8E\x9BaJ\xC9\xF2Tg\x8AWF\xA7\x85\x92\x87\xB4\x90e\x8E*\xA9\x98\xD9\x13\x97Q\xD8\xB6\xB5\x85\x98\xC3j\xE3m\x1F\xD7W\xFB\x89+ZH\xE5\x16\xD5&Y\x89\xB8I\xDA\xC2\x02\x7F\x18GL\x01\xF39\xC44\x86\xA6\xE9\xEE4n\x9F$\x9E\x98\x9C+\xCC\x8CT\xAF\x8F\x1E\xC5md\xEA\xD6Q\x10\x02\x8F]QZ\xD5z\x9F\x14\x04\xDE^\xFA\xEA\x1C\xD7\xD1:\xBF\xB6Z\e\x05\xD3u\xD7\xEB+\x93\xB9\x93_\xD8I\xBF\xE8\x04\"\x15\xB5+\xB1/\x1A\x8FB\xED\x8Cy\xB7\x93-\xEE\xB8h\xAF\xB6\xF2wV&\x0Eq\x02\x82\x97\x13h\xFBq:\xD3Y\x8D\xB0\xF0\xF4~\xE8d\x12Vz\x13\xA0\x02\x8FIPO\x0F\xA0K\xBA\x15\x97\xFB\x03\xC1\x9E\xFC\xF1\xCFH\xAF\xD2\xDF\xD4z%\xAC\xE3\xEDBq`\xEE\xE2\b\xDCy\xC7\x85\xC0\xFF\n'\x10\xE9}\xE4w\xE5\xFD39zb\x86M[^tD~\x01LYX\x94"
|
||||
|
||||
File.open(rxdata, "wb") do |f|
|
||||
Marshal.dump([[62054200, "Main", txt]], f)
|
||||
end
|
||||
end
|
||||
|
||||
def self.from_folder(path = "Data/Scripts", rxdata = "Data/Scripts.rxdata")
|
||||
scripts = File.open(rxdata, 'rb') { |f| Marshal.load(f) }
|
||||
if scripts.length > 10
|
||||
p "Scripts.rxdata already has a bunch of scripts in it. Won't consolidate script files."
|
||||
return
|
||||
end
|
||||
|
||||
scripts = []
|
||||
aggregate_from_folder(path, scripts)
|
||||
# Save scripts to file
|
||||
File.open(rxdata, "wb") do |f|
|
||||
Marshal.dump(scripts, f)
|
||||
end
|
||||
end
|
||||
|
||||
def self.aggregate_from_folder(path, scripts, level = 0)
|
||||
files = []
|
||||
folders = []
|
||||
Dir.foreach(path) do |f|
|
||||
next if f == '.' || f == '..'
|
||||
|
||||
if File.directory?(path + "/" + f)
|
||||
folders.push(f)
|
||||
else
|
||||
files.push(f)
|
||||
end
|
||||
end
|
||||
# Aggregate individual script files into Scripts.rxdata
|
||||
files.sort!
|
||||
files.each do |f|
|
||||
section_name = filename_to_title(f)
|
||||
content = File.open(path + "/" + f, "rb") { |f2| f2.read }#.gsub(/\n/, "\r\n")
|
||||
scripts << [rand(999_999), section_name, Zlib::Deflate.deflate(content)]
|
||||
end
|
||||
# Check each subfolder for scripts to aggregate
|
||||
folders.sort!
|
||||
folders.each do |f|
|
||||
section_name = filename_to_title(f)
|
||||
scripts << [rand(999_999), "==================", Zlib::Deflate.deflate("")] if level == 0
|
||||
scripts << [rand(999_999), "", Zlib::Deflate.deflate("")] if level == 1
|
||||
scripts << [rand(999_999), "[[ " + section_name + " ]]", Zlib::Deflate.deflate("")]
|
||||
aggregate_from_folder(path + "/" + f, scripts, level + 1)
|
||||
end
|
||||
end
|
||||
|
||||
def self.filename_to_title(filename)
|
||||
filename = filename.bytes.pack('U*')
|
||||
title = ""
|
||||
if filename[/^[^_]*_(.+)$/]
|
||||
title = $~[1]
|
||||
title = title[0..-4] if title.end_with?(".rb")
|
||||
title = title.strip
|
||||
end
|
||||
title = "unnamed" if !title || title.empty?
|
||||
title.gsub!(/&bs;/, "\\")
|
||||
title.gsub!(/&fs;/, "/")
|
||||
title.gsub!(/&cn;/, ":")
|
||||
title.gsub!(/&as;/, "*")
|
||||
title.gsub!(/&qm;/, "?")
|
||||
title.gsub!(/&dq;/, "\"")
|
||||
title.gsub!(/</, "<")
|
||||
title.gsub!(/>/, ">")
|
||||
title.gsub!(/&po;/, "|")
|
||||
return title
|
||||
end
|
||||
|
||||
def self.title_to_filename(title)
|
||||
filename = title.clone
|
||||
filename.gsub!(/\\/, "&bs;")
|
||||
filename.gsub!(/\//, "&fs;")
|
||||
filename.gsub!(/:/, "&cn;")
|
||||
filename.gsub!(/\*/, "&as;")
|
||||
filename.gsub!(/\?/, "&qm;")
|
||||
filename.gsub!(/"/, "&dq;")
|
||||
filename.gsub!(/</, "<")
|
||||
filename.gsub!(/>/, ">")
|
||||
filename.gsub!(/\|/, "&po;")
|
||||
return filename
|
||||
end
|
||||
|
||||
def self.create_script(title, content)
|
||||
f = File.new(title, "wb")
|
||||
f.write content
|
||||
f.close
|
||||
end
|
||||
|
||||
def self.clear_directory(path, delete_current = false)
|
||||
Dir.foreach(path) do |f|
|
||||
next if f == '.' || f == '..'
|
||||
if File.directory?(path + "/" + f)
|
||||
clear_directory(path + "/" + f, true)
|
||||
else
|
||||
File.delete(path + "/" + f)
|
||||
end
|
||||
end
|
||||
Dir.delete(path) if delete_current
|
||||
end
|
||||
|
||||
def self.create_directory(path)
|
||||
paths = path.split('/')
|
||||
paths.each_with_index do |_e, i|
|
||||
if !File.directory?(paths[0..i].join('/'))
|
||||
Dir.mkdir(paths[0..i].join('/'))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#Scripts.dump("D:/Desktop/Scripts", "D:/Desktop/Main Essentials/Data/Scripts.rxdata")
|
||||
#Scripts.from_folder("D:/Desktop/Scripts", "D:/Desktop/Main Essentials/Data/Scripts.rxdata")
|
||||
#Scripts.dump
|
||||
Scripts.from_folder
|
||||
193
etc/scripts_extract.rb
Normal file
193
etc/scripts_extract.rb
Normal file
@@ -0,0 +1,193 @@
|
||||
require 'zlib'
|
||||
|
||||
class Numeric
|
||||
def to_digits(num = 3)
|
||||
str = to_s
|
||||
(num - str.size).times { str = str.prepend("0") }
|
||||
return str
|
||||
end
|
||||
end
|
||||
|
||||
module Scripts
|
||||
def self.dump(path = "Data/Scripts", rxdata = "Data/Scripts.rxdata")
|
||||
scripts = File.open(rxdata, 'rb') { |f| Marshal.load(f) }
|
||||
if scripts.length < 10
|
||||
p "Scripts look like they're already extracted. Not doing so again."
|
||||
return
|
||||
end
|
||||
|
||||
create_directory(path)
|
||||
clear_directory(path)
|
||||
|
||||
folder_id = [1, 1] # Can only have two layers of folders
|
||||
file_id = 1
|
||||
level = 0 # 0=main path, 1=subfolder, 2=sub-subfolder
|
||||
folder_path = path
|
||||
folder_name = nil
|
||||
scripts.each_with_index do |e, i|
|
||||
_, title, script = e
|
||||
title = title_to_filename(title).strip
|
||||
script = Zlib::Inflate.inflate(script).delete("\r")
|
||||
next if title.empty? && script.empty?
|
||||
|
||||
section_name = nil
|
||||
if title[/\[\[\s*(.+)\s*\]\]$/] # Make a folder
|
||||
section_name = $~[1].strip
|
||||
section_name = "unnamed" if !section_name || section_name.empty?
|
||||
folder_num = (i < scripts.length - 2) ? folder_id[level].to_digits(3) : "999"
|
||||
folder_name = folder_num + "_" + section_name
|
||||
create_directory(folder_path + "/" + folder_name)
|
||||
folder_id[level] += 1
|
||||
if level < folder_id.length-1
|
||||
level += 1 # Go one level deeper
|
||||
folder_id[level] = 1 # Reset numbering of subfolders
|
||||
folder_path += "/" + folder_name
|
||||
folder_name = nil
|
||||
end
|
||||
file_id = 1 # Reset numbering of script files
|
||||
elsif title.start_with?("=====") # Return to top level directory
|
||||
level = 0
|
||||
folder_path = path
|
||||
folder_name = nil
|
||||
end
|
||||
# Create script file
|
||||
next if script.empty?
|
||||
this_folder = folder_path
|
||||
this_folder += "/" + folder_name if folder_name
|
||||
section_name ||= title.strip
|
||||
section_name = "unnamed" if !section_name || section_name.empty?
|
||||
file_num = (i < scripts.length - 1) ? file_id.to_digits(3) : "999"
|
||||
file_name = file_num + "_" + section_name + ".rb"
|
||||
create_script(this_folder + "/" + file_name, script)
|
||||
file_id += 1 # Increment numbering of script files
|
||||
end
|
||||
# Backup Scripts.rxdata to ScriptsBackup.rxdata
|
||||
File.open("Data/ScriptsBackup.rxdata", "wb") do |f|
|
||||
Marshal.dump(scripts, f)
|
||||
end
|
||||
# Replace Scripts.rxdata with ScriptsLoader.rxdata
|
||||
createLoaderScripts(rxdata)
|
||||
end
|
||||
|
||||
def self.createLoaderScripts(rxdata)
|
||||
# loader_scripts = File.open("Data/ScriptsLoader.rxdata", 'rb') { |f| Marshal.load(f) }
|
||||
# p loader_scripts
|
||||
txt = "x\x9C}SM\x8F\xDA0\x10\xBD#\xF1\x1F\x86,Rb-2\xCB\xB1\x95\xE8\x1E\xBAm\xD5S\xAB\x85\e\xA0\xC8$\x13p7\xD8\x91\xED\x94n\t\xFF\xBD\xB6C0\xE9\xD7\xC5\xF2\xCCx\xDE\xCC\xBCy\xBE\x83\xE5\x9Ek\xC8%j\x10\xD2\xC0Q\xAA\x17\xE0\x05\x98=\xC2\x8E\x1D\x10l\x10E\xA6^+\x83\xF9h8\x18\x0Er\xB4Q\xC52\xDC\xB2\xEC%UXIe\x86\x03\x00gz?\xCCa<\xA2W\x93f\xA5\x14\xD8{A\x91e\xFB\x134[\xD38\xBF\x8D\x18\xAA\xEB\xED(\x99\xAEO\xC9:\xBF'\xEB\xF3\x94\xC0)Z\xDD\x9D\xC6\xB3\xF3\xC6\x9E\xCF\x9F\x16\x8Bt\xF1\xFE\xF9\xF3\xD7\xE5b5\x9EQ#S\xBEY\xCD6\xE7\xE8\xEC\x10\xFC\xA1\xD0\xD4J\xB8\xDA\a\xD4\x9A\xED\x10\xEE!Z\x8B\xB5\x88\xEC%\xD4\xFE&\xB9H\xAC?\"\xC3\x01\x8A\xBC\eI1\xAE1\r\x83\xA1RR9XKF\x80\xA4\x9A\xFFDx7\x877\x0F\x0Fm\xEB\x1Fy\x89TV(\x92\xF8\x9ALK\xB9\x8B'\x10\x1Fc;\x054E\x03\x05=*n0\x19\x8FH\xDB,\xB4\x05!^vI\x8Ei#%l\xF9\x8E\xC2\x97\xDAT\xB5\x01.\xA0\x0F\xEAR\xB1\xD4x\x03\xE1]n\x8E\x9BaJ\xC9\xF2Tg\x8AWF\xA7\x85\x92\x87\xB4\x90e\x8E*\xA9\x98\xD9\x13\x97Q\xD8\xB6\xB5\x85\x98\xC3j\xE3m\x1F\xD7W\xFB\x89+ZH\xE5\x16\xD5&Y\x89\xB8I\xDA\xC2\x02\x7F\x18GL\x01\xF39\xC44\x86\xA6\xE9\xEE4n\x9F$\x9E\x98\x9C+\xCC\x8CT\xAF\x8F\x1E\xC5md\xEA\xD6Q\x10\x02\x8F]QZ\xD5z\x9F\x14\x04\xDE^\xFA\xEA\x1C\xD7\xD1:\xBF\xB6Z\e\x05\xD3u\xD7\xEB+\x93\xB9\x93_\xD8I\xBF\xE8\x04\"\x15\xB5+\xB1/\x1A\x8FB\xED\x8Cy\xB7\x93-\xEE\xB8h\xAF\xB6\xF2wV&\x0Eq\x02\x82\x97\x13h\xFBq:\xD3Y\x8D\xB0\xF0\xF4~\xE8d\x12Vz\x13\xA0\x02\x8FIPO\x0F\xA0K\xBA\x15\x97\xFB\x03\xC1\x9E\xFC\xF1\xCFH\xAF\xD2\xDF\xD4z%\xAC\xE3\xEDBq`\xEE\xE2\b\xDCy\xC7\x85\xC0\xFF\n'\x10\xE9}\xE4w\xE5\xFD39zb\x86M[^tD~\x01LYX\x94"
|
||||
|
||||
File.open(rxdata, "wb") do |f|
|
||||
Marshal.dump([[62054200, "Main", txt]], f)
|
||||
end
|
||||
end
|
||||
|
||||
def self.from_folder(path = "Data/Scripts", rxdata = "Data/Scripts.rxdata")
|
||||
scripts = File.open(rxdata, 'rb') { |f| Marshal.load(f) }
|
||||
if scripts.length > 10
|
||||
p "Scripts.rxdata already has a bunch of scripts in it. Won't consolidate script files."
|
||||
return
|
||||
end
|
||||
|
||||
scripts = []
|
||||
aggregate_from_folder(path, scripts)
|
||||
# Save scripts to file
|
||||
File.open(rxdata, "wb") do |f|
|
||||
Marshal.dump(scripts, f)
|
||||
end
|
||||
end
|
||||
|
||||
def self.aggregate_from_folder(path, scripts, level = 0)
|
||||
files = []
|
||||
folders = []
|
||||
Dir.foreach(path) do |f|
|
||||
next if f == '.' || f == '..'
|
||||
|
||||
if File.directory?(path + "/" + f)
|
||||
folders.push(f)
|
||||
else
|
||||
files.push(f)
|
||||
end
|
||||
end
|
||||
# Aggregate individual script files into Scripts.rxdata
|
||||
files.sort!
|
||||
files.each do |f|
|
||||
section_name = filename_to_title(f)
|
||||
content = File.open(path + "/" + f, "rb") { |f2| f2.read }#.gsub(/\n/, "\r\n")
|
||||
scripts << [rand(999_999), section_name, Zlib::Deflate.deflate(content)]
|
||||
end
|
||||
# Check each subfolder for scripts to aggregate
|
||||
folders.sort!
|
||||
folders.each do |f|
|
||||
section_name = filename_to_title(f)
|
||||
scripts << [rand(999_999), "==================", Zlib::Deflate.deflate("")] if level == 0
|
||||
scripts << [rand(999_999), "", Zlib::Deflate.deflate("")] if level == 1
|
||||
scripts << [rand(999_999), "[[ " + section_name + " ]]", Zlib::Deflate.deflate("")]
|
||||
aggregate_from_folder(path + "/" + f, scripts, level + 1)
|
||||
end
|
||||
end
|
||||
|
||||
def self.filename_to_title(filename)
|
||||
filename = filename.bytes.pack('U*')
|
||||
title = ""
|
||||
if filename[/^[^_]*_(.+)$/]
|
||||
title = $~[1]
|
||||
title = title[0..-4] if title.end_with?(".rb")
|
||||
title = title.strip
|
||||
end
|
||||
title = "unnamed" if !title || title.empty?
|
||||
title.gsub!(/&bs;/, "\\")
|
||||
title.gsub!(/&fs;/, "/")
|
||||
title.gsub!(/&cn;/, ":")
|
||||
title.gsub!(/&as;/, "*")
|
||||
title.gsub!(/&qm;/, "?")
|
||||
title.gsub!(/&dq;/, "\"")
|
||||
title.gsub!(/</, "<")
|
||||
title.gsub!(/>/, ">")
|
||||
title.gsub!(/&po;/, "|")
|
||||
return title
|
||||
end
|
||||
|
||||
def self.title_to_filename(title)
|
||||
filename = title.clone
|
||||
filename.gsub!(/\\/, "&bs;")
|
||||
filename.gsub!(/\//, "&fs;")
|
||||
filename.gsub!(/:/, "&cn;")
|
||||
filename.gsub!(/\*/, "&as;")
|
||||
filename.gsub!(/\?/, "&qm;")
|
||||
filename.gsub!(/"/, "&dq;")
|
||||
filename.gsub!(/</, "<")
|
||||
filename.gsub!(/>/, ">")
|
||||
filename.gsub!(/\|/, "&po;")
|
||||
return filename
|
||||
end
|
||||
|
||||
def self.create_script(title, content)
|
||||
f = File.new(title, "wb")
|
||||
f.write content
|
||||
f.close
|
||||
end
|
||||
|
||||
def self.clear_directory(path, delete_current = false)
|
||||
Dir.foreach(path) do |f|
|
||||
next if f == '.' || f == '..'
|
||||
if File.directory?(path + "/" + f)
|
||||
clear_directory(path + "/" + f, true)
|
||||
else
|
||||
File.delete(path + "/" + f)
|
||||
end
|
||||
end
|
||||
Dir.delete(path) if delete_current
|
||||
end
|
||||
|
||||
def self.create_directory(path)
|
||||
paths = path.split('/')
|
||||
paths.each_with_index do |_e, i|
|
||||
if !File.directory?(paths[0..i].join('/'))
|
||||
Dir.mkdir(paths[0..i].join('/'))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#Scripts.dump("D:/Desktop/Scripts", "D:/Desktop/Main Essentials/Data/Scripts.rxdata")
|
||||
#Scripts.from_folder("D:/Desktop/Scripts", "D:/Desktop/Main Essentials/Data/Scripts.rxdata")
|
||||
Scripts.dump
|
||||
#Scripts.from_folder
|
||||
BIN
etc/selpoint.bmp
Normal file
BIN
etc/selpoint.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 246 B |
BIN
etc/soundfont.sf2
Normal file
BIN
etc/soundfont.sf2
Normal file
Binary file not shown.
1
etc/terrain_tags.txt
Normal file
1
etc/terrain_tags.txt
Normal file
@@ -0,0 +1 @@
|
||||
#<Table:0x000001b3a13ec7f8>
|
||||
373
etc/townmapgen.html
Normal file
373
etc/townmapgen.html
Normal file
@@ -0,0 +1,373 @@
|
||||
<body>
|
||||
<div id="map">
|
||||
<img name="map" src="Graphics/Pictures/mapRegion0.png" alt="" width="480" height="320"/>
|
||||
</div>
|
||||
<form name="mf" action="javascript:void(null)">
|
||||
<div>
|
||||
Map Filename (in Graphics/Pictures/): <input type="text" name="filename" value="mapRegion0.png"/>
|
||||
<input type="button" name="btnChange" value="Change"/><br/ >
|
||||
Square width: <input type="text" name="sqwidth" size="4" min="1" max="16" value="16"/>
|
||||
Square height: <input type="text" name="sqheight" size="4" min="1" max="16" value="16"/>
|
||||
<input type="button" name="btnRefresh" value="Refresh"/><br/ >
|
||||
Region Name: <input type="text" name="name" value="Sample Region"/>
|
||||
<input type="button" name="btnChange2" value="Change"/>
|
||||
</div>
|
||||
</form>
|
||||
<hr/>
|
||||
<form name="f" action="javascript:void(null)">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Current Position:</td>
|
||||
<td><input type="text" name="curpos" readonly="readonly"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Name:</td>
|
||||
<td><input type="text" name="locname"/><td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Point of Interest:</td>
|
||||
<td><input type="text" name="poi"/><td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Fly Destination:</td>
|
||||
<td><input type="text" name="healing"/><td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Switch:</td>
|
||||
<td><input type="text" name="swtch"/><td>
|
||||
</tr>
|
||||
</table>
|
||||
<div>
|
||||
<input type="button" name="btnSave" value="Save" disabled="disabled"/>
|
||||
<input type="button" name="btnCancel" value="Cancel"/><br/ >
|
||||
Single section from townmap.txt (without section heading):<br/ >
|
||||
<textarea name="data" rows="10" cols="70"></textarea><br/ >
|
||||
<input type="button" name="btnLoad" value="Load"/> (To load data into the editor)<br/ >
|
||||
Copy the data above into townmap.txt when you're done.
|
||||
</div>
|
||||
</form>
|
||||
<script type="text/javascript">
|
||||
choiceX=-1
|
||||
choiceY=-1
|
||||
mappoints=[]
|
||||
mpelements=[]
|
||||
|
||||
function target(event){
|
||||
return event.target||event.srcElement
|
||||
}
|
||||
|
||||
function addChild(e){
|
||||
if(document.documentElement){
|
||||
document.documentElement.appendChild(e)
|
||||
} else{
|
||||
document.body.appendChild(e)
|
||||
}
|
||||
}
|
||||
|
||||
function removeChild(e){
|
||||
if(document.documentElement){
|
||||
document.documentElement.removeChild(e)
|
||||
} else{
|
||||
document.body.removeChild(e)
|
||||
}
|
||||
}
|
||||
|
||||
function positionedOffset(element) {
|
||||
var valueT = 0, valueL = 0;
|
||||
do {
|
||||
valueT += element.offsetTop || 0;
|
||||
valueL += element.offsetLeft || 0;
|
||||
element = element.offsetParent;
|
||||
if (element) {
|
||||
p = element.style.position;
|
||||
if (p == 'relative' || p == 'absolute') break;
|
||||
}
|
||||
} while (element);
|
||||
return [valueL, valueT];
|
||||
}
|
||||
|
||||
function pointerX(event) {
|
||||
return event.pageX || (event.clientX +
|
||||
(document.documentElement.scrollLeft || document.body.scrollLeft));
|
||||
}
|
||||
|
||||
function pointerY(event) {
|
||||
return event.pageY || (event.clientY +
|
||||
(document.documentElement.scrollTop || document.body.scrollTop));
|
||||
}
|
||||
|
||||
function elementPos(event){
|
||||
t=target(event)
|
||||
po=positionedOffset(t)
|
||||
return [(pointerX(event))-po[0],(pointerY(event))-po[1]]
|
||||
}
|
||||
|
||||
function elementPosObject(event,other){
|
||||
t=other
|
||||
po=positionedOffset(t)
|
||||
return [(pointerX(event))-po[0],(pointerY(event))-po[1]]
|
||||
}
|
||||
|
||||
function attachEvent(element,name,observer,useCapture){
|
||||
if (element.addEventListener) {
|
||||
element.addEventListener(name, observer, useCapture||false);
|
||||
} else if (element.attachEvent) {
|
||||
element.attachEvent('on' + name, observer);
|
||||
}
|
||||
}
|
||||
|
||||
function qstr(text){
|
||||
var temp;
|
||||
temp = text.toString();
|
||||
while (true){
|
||||
if (temp == '') return text;
|
||||
if (temp.indexOf("'") >= 0) break;
|
||||
if (temp.indexOf('"') >= 0) break;
|
||||
if (temp.indexOf(' ') >= 0) break;
|
||||
if (temp.indexOf(',') >= 0) break;
|
||||
return temp;
|
||||
}
|
||||
// temp = temp.replace(/\'/g,"''");
|
||||
// temp = temp.replace(/\"/g,"\"\"");
|
||||
return temp
|
||||
// return "\"" + temp + "\"";
|
||||
}
|
||||
|
||||
function CsvNextToken(dataobj){
|
||||
var i;
|
||||
var text;
|
||||
var c,n;
|
||||
var inside;
|
||||
var value;
|
||||
var q = '';
|
||||
inside = false;
|
||||
value = '';
|
||||
var skip = false;
|
||||
var data=dataobj[0]
|
||||
if (data == '') return '';
|
||||
text = '';
|
||||
for (i = 0; i < data.length; ++i){
|
||||
if (skip){
|
||||
skip = false;
|
||||
continue;
|
||||
}
|
||||
c = data.charAt(i);
|
||||
n = '';
|
||||
if (inside){
|
||||
if (c == q) {
|
||||
if (i < data.length-1) n = data.charAt(i+1);
|
||||
if (n == q){
|
||||
value = value + c;
|
||||
skip = true;
|
||||
continue;
|
||||
}
|
||||
inside = false;
|
||||
continue;
|
||||
}
|
||||
value = value + c;
|
||||
continue;
|
||||
}
|
||||
// if ((c == '"') || (c == "'")){
|
||||
// inside = true;
|
||||
// q = c;
|
||||
// continue;
|
||||
// }
|
||||
if (c == ',') break;
|
||||
value = value + c;
|
||||
}
|
||||
if (i >= (data.length-1)) { dataobj[0]= ''; }
|
||||
else{dataobj[0]=data.substr(i+1);}
|
||||
dataobj[0]=dataobj[0].replace(/^\s+/,"").replace(/\s+$/,"")
|
||||
return value;
|
||||
}
|
||||
|
||||
///////////////////////////
|
||||
function loadMapPoints(){
|
||||
mappoints=[]
|
||||
lines=document.f.data.value.split("\n")
|
||||
for(var i=0;i<lines.length;i++){
|
||||
lines[i]=lines[i].replace(/\s+$/,"")
|
||||
if(!/^\#/.test(lines[i])&&!/^\s*$/.test(lines[i])){
|
||||
e=/^\s*(\w+)\s*=\s*(.*)$/.exec(lines[i])
|
||||
if(!e){
|
||||
alert("Bad line syntax in line "+(i+1))
|
||||
}
|
||||
if(e[1]=="Filename"){
|
||||
o=document.getElementById("map")
|
||||
o.innerHTML='<img name="map" src="Graphics/Pictures/'+e[2]+'" alt="" width="480" height="320"/'+'>'
|
||||
} else if(e[1]=="Name"){
|
||||
document.mf.name.value=e[2]
|
||||
} else if(e[1]=="Point"){
|
||||
data=[e[2]]
|
||||
mappt=[]
|
||||
mappt[0]=parseInt(CsvNextToken(data),10)
|
||||
mappt[1]=parseInt(CsvNextToken(data),10)
|
||||
mappt[2]=CsvNextToken(data)
|
||||
mappt[3]=CsvNextToken(data)
|
||||
mappt[4]=[CsvNextToken(data),CsvNextToken(data),CsvNextToken(data)]
|
||||
mappt[5]=CsvNextToken(data)
|
||||
mappoints[mappoints.length]=mappt
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function createMapPoint(imgfile,x,y){
|
||||
e=document.createElement("div")
|
||||
e.innerHTML="<img src='"+imgfile+"' alt=''/>"
|
||||
e.style.left=elempos[0]+x*document.mf.sqwidth.value+(document.mf.sqwidth.value-8)/2
|
||||
e.style.top=elempos[1]+y*document.mf.sqheight.value+(document.mf.sqheight.value-8)/2
|
||||
e.style.position="absolute"
|
||||
attachEvent(e,"mousemove",MapMouseMove)
|
||||
attachEvent(e,"click",MapClick)
|
||||
return e
|
||||
}
|
||||
|
||||
function showMapPoints(){
|
||||
for(var i=0;i < mpelements.length ; i++){ //>
|
||||
removeChild(mpelements[i])
|
||||
}
|
||||
mpelements=[]
|
||||
elempos=positionedOffset(document.images.map)
|
||||
for(var i=0;i<mappoints.length;i++){//>
|
||||
e=createMapPoint("knownpoint.bmp",mappoints[i][0],mappoints[i][1])
|
||||
addChild(e)
|
||||
mpelements[mpelements.length]=e
|
||||
}
|
||||
if(choiceX!=-1 || choiceY!=-1){
|
||||
e=createMapPoint("selpoint.bmp",choiceX,choiceY)
|
||||
addChild(e)
|
||||
mpelements[mpelements.length]=e
|
||||
}
|
||||
}
|
||||
|
||||
function MapMouseMove(e){
|
||||
if(choiceX==-1 && choiceY==-1){
|
||||
elempos=elementPosObject(e,document.getElementById("map"))
|
||||
if (elempos[0]>=0 && elempos[0]<480 && elempos[1]>=0 && elempos[1]<320){
|
||||
setMapPoint(Math.floor(elempos[0]/document.mf.sqwidth.value),
|
||||
Math.floor(elempos[1]/document.mf.sqheight.value))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function MapClick(e){
|
||||
elempos=elementPosObject(e,document.getElementById("map"))
|
||||
if(elempos[0]>=0 && elempos[0]<480 && elempos[1]>=0 && elempos[1]<320){
|
||||
choiceX=Math.floor(elempos[0]/document.mf.sqwidth.value)
|
||||
choiceY=Math.floor(elempos[1]/document.mf.sqheight.value)
|
||||
setMapPoint(Math.floor(elempos[0]/document.mf.sqwidth.value),
|
||||
Math.floor(elempos[1]/document.mf.sqheight.value))
|
||||
document.f.btnSave.disabled=false
|
||||
showMapPoints()
|
||||
}
|
||||
}
|
||||
|
||||
function getbase(fn){
|
||||
if(fn.lastIndexOf("/")>=0){
|
||||
fn=fn.substr(fn.lastIndexOf("/")+1)
|
||||
}
|
||||
if(fn.lastIndexOf("\\")>=0){
|
||||
fn=fn.substr(fn.lastIndexOf("\\")+1)
|
||||
}
|
||||
return fn
|
||||
}
|
||||
|
||||
function genMapPoints(){
|
||||
ret=""
|
||||
ret+="Filename = "+qstr(getbase(document.images.map.src))+"\r\n"
|
||||
ret+="Name = "+qstr(document.mf.name.value)+"\r\n"
|
||||
for(var i=0;i<mappoints.length;i++){
|
||||
ret+="Point = "+[mappoints[i][0],mappoints[i][1],
|
||||
qstr(mappoints[i][2]),qstr(mappoints[i][3]),
|
||||
mappoints[i][4][0]!=null?mappoints[i][4][0]:"",
|
||||
mappoints[i][4][1]!=null?mappoints[i][4][1]:"",
|
||||
mappoints[i][4][2]!=null?mappoints[i][4][2]:"",
|
||||
mappoints[i][5]]+"\r\n"
|
||||
}
|
||||
document.f.data.value=ret
|
||||
showMapPoints()
|
||||
}
|
||||
|
||||
function setMapPoint(x,y){
|
||||
document.f.curpos.value=[x,y]
|
||||
for(var i=0;i<mappoints.length;i++){
|
||||
if(mappoints[i][0]==x && mappoints[i][1]==y){
|
||||
document.f.locname.value=mappoints[i][2]
|
||||
document.f.poi.value=mappoints[i][3]
|
||||
document.f.healing.value=mappoints[i][4]
|
||||
document.f.swtch.value=mappoints[i][5]
|
||||
return
|
||||
}
|
||||
}
|
||||
document.f.locname.value=""
|
||||
document.f.poi.value=""
|
||||
document.f.healing.value=""
|
||||
document.f.swtch.value=""
|
||||
}
|
||||
|
||||
function addMapPoint(x,y){
|
||||
for(var i=0;i<mappoints.length;i++){
|
||||
if(mappoints[i][0]==x && mappoints[i][1]==y){
|
||||
mappoints[i][2]=document.f.locname.value
|
||||
mappoints[i][3]=document.f.poi.value
|
||||
mappoints[i][4]=document.f.healing.value.split(",")
|
||||
mappoints[i][5]=document.f.swtch.value
|
||||
return
|
||||
}
|
||||
}
|
||||
mappoints[mappoints.length]=[x,y,
|
||||
document.f.locname.value,
|
||||
document.f.poi.value,
|
||||
document.f.healing.value.split(","),
|
||||
document.f.swtch.value,
|
||||
]
|
||||
}
|
||||
|
||||
attachEvent(window,"load",function(e){
|
||||
genMapPoints()
|
||||
attachEvent(document.images.map,"mouseout",function(e){
|
||||
if(choiceX==-1 && choiceY==-1){
|
||||
document.f.curpos.value=""
|
||||
}
|
||||
})
|
||||
attachEvent(document.getElementById("map"),"mousemove",MapMouseMove)
|
||||
attachEvent(document.getElementById("map"),"click",MapClick)
|
||||
attachEvent(document.f.btnSave,"click",function(e){
|
||||
if(choiceX!=-1 || choiceY!=-1){
|
||||
addMapPoint(choiceX,choiceY)
|
||||
genMapPoints()
|
||||
target(e).disabled=true
|
||||
choiceX=choiceY=-1
|
||||
showMapPoints()
|
||||
}
|
||||
})
|
||||
attachEvent(document.f.btnCancel,"click",function(e){
|
||||
if(choiceX!=-1||choiceY!=-1){
|
||||
setMapPoint(choiceX,choiceY)
|
||||
choiceX=choiceY=-1
|
||||
showMapPoints()
|
||||
}
|
||||
})
|
||||
attachEvent(document.f.btnLoad,"click",function(e){
|
||||
loadMapPoints()
|
||||
genMapPoints()
|
||||
choiceX=choiceY=-1
|
||||
showMapPoints()
|
||||
})
|
||||
attachEvent(document.mf.btnChange,"click",function(e){
|
||||
document.images.map.src="Graphics/Pictures/"+document.mf.filename.value
|
||||
genMapPoints()
|
||||
showMapPoints()
|
||||
})
|
||||
attachEvent(document.mf.btnChange2,"click",function(e){
|
||||
genMapPoints()
|
||||
showMapPoints()
|
||||
})
|
||||
attachEvent(document.mf.btnRefresh,"click",function(e){
|
||||
choiceX=choiceY=-1
|
||||
document.f.curpos.value=""
|
||||
showMapPoints()
|
||||
})
|
||||
})
|
||||
</script>
|
||||
53
etc/traceback.log
Normal file
53
etc/traceback.log
Normal file
@@ -0,0 +1,53 @@
|
||||
Script error in event 6 (coords 16,7), map 371 (Pokemon Center):
|
||||
|
||||
Exception: NameError
|
||||
|
||||
Message: uninitialized constant PBSpecies::SPEAROW
|
||||
|
||||
|
||||
|
||||
***Full script:
|
||||
|
||||
pbChoosePokemon(1,2,
|
||||
proc {|poke|
|
||||
!poke.egg? &&
|
||||
!(poke.isShadow? rescue false) &&
|
||||
poke.species==PBSpecies::SPEAROW
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
Backtrace:
|
||||
|
||||
(eval):5:in `block in execute_script'
|
||||
|
||||
005_UI_Party.rb:1067:in `block in pbChooseAblePokemon'
|
||||
|
||||
005_UI_Party.rb:1066:in `each'
|
||||
|
||||
005_UI_Party.rb:1066:in `pbChooseAblePokemon'
|
||||
|
||||
005_UI_Party.rb:1353:in `block in pbChoosePokemon'
|
||||
|
||||
002_MessageConfig.rb:573:in `pbFadeOutIn'
|
||||
|
||||
005_UI_Party.rb:1349:in `pbChoosePokemon'
|
||||
|
||||
(eval):1:in `execute_script'
|
||||
|
||||
003_Interpreter.rb:137:in `eval'
|
||||
|
||||
003_Interpreter.rb:137:in `execute_script'
|
||||
|
||||
|
||||
|
||||
003_Interpreter.rb:189:in `rescue in execute_script'
|
||||
003_Interpreter.rb:135:in `execute_script'
|
||||
004_Interpreter_Commands.rb:1024:in `command_355'
|
||||
004_Interpreter_Commands.rb:116:in `execute_command'
|
||||
003_Interpreter.rb:127:in `block in update'
|
||||
003_Interpreter.rb:87:in `loop'
|
||||
003_Interpreter.rb:87:in `update'
|
||||
002_Scene_Map.rb:157:in `block in update'
|
||||
002_Scene_Map.rb:155:in `loop'
|
||||
BIN
etc/x64-msvcrt-ruby300.dll
Normal file
BIN
etc/x64-msvcrt-ruby300.dll
Normal file
Binary file not shown.
BIN
etc/x64-msvcrt-ruby310.dll
Normal file
BIN
etc/x64-msvcrt-ruby310.dll
Normal file
Binary file not shown.
BIN
etc/zlib1.dll
Normal file
BIN
etc/zlib1.dll
Normal file
Binary file not shown.
Reference in New Issue
Block a user