X




Introduction



This script contains a bunch of different utilities that get used by the rest of my scripts. These are mainly QoL utilities and other little snippets of code, that you can use as coding aid yourself; to speed up your workflow or simply use the new functions found in the script for your own codes.





Installation



Download this pack, and extract its contents into your root folder. All the scripts are located in the archive as .txt files.

If the resource comes with a Settings script, copy and paste that into your project's script editor first (making sure it goes above Main). After that, copy and paste any script that is provided in the pack above into your project's script editor under the Settings script (if no Settings were present, simply copy the scripts above Main).

MAKE SURE TO TRANSFER OVER THE SCRIPTS (IF MULTIPLE ARE PRESENT) IN THE ORDER THEY ARE LISTED IN!




Requires Luka's Utilities
Only for v17.x




Disclaimer



The following is a visual upgrade to the Pokémon Essentials starter kit. It was created to resemble the Gen 5 battle system in both the scene and behaviour.

All the scripts and graphics are 100% plug and play. This system does not support GIFs and is not styled or optimized to the likes of Gen 6 games, so the resources provided, and the positioning of the scene elements will not work ideally with new Gen 6 sprites/graphical resources.

Should you wish to make changes to the system, you may do so, but I will not provide you with any support or assistance. Tweak at your own risk! Everything you could possibly need is already included in the kit, and should some resources be missing, or should you wish to add more, you can do so manually.





Features



New Features:

  • Fully animated Pokémon sprites (spritesheet format)
  • Fully animated Trainer sprites (spritesheet format)
  • Dynamic battle scene motion
  • Dynamic (and fully animated) in-battle weather
  • Custom UI

  • Support for in-battle Trainer dialogue
  • Gen 5 styled ability messages
  • New VS sequences and battle transitions
  • New (custom coded) common animations
  • New Evolution and Egg Hatching scenes (B/W styled)
  • Insane new move animations!

Included Resources:

  • All 649 B2/W2 Pokémon sprites [front,back,shiny,formes] fully formatted and indexed are provided
  • All B2/W2 Trainer sprites fully formatted but not indexed are provided
  • Resource pack containing all the UI elements and animation files
  • Several B2/W2 battle bases and backgrounds
  • New metrics data for proper sprite positioning
  • New Positioner.exe to easily reposition your sprites
  • Audio files for several animations
Additional Tools:

  • GIF to PNG converter
All other Essentials related functonality (Mega Evolution, Safari Zone, double battles, support for static sprites, form specific sprites, etc.) has been retained.





Screenshots







Credits




Please credit all the following people for their contributions, when using the Elite Battle System.

Sprites:

  • GameFreak | Original sprites from B/W/2 games​
  • Pokecheck.org | Ripping the sprites from B2/W2 roms
  • Luka S.J. | Indexing and formatting the sprites​
  • PinkCatDragon | GIF to PNG conversion​
  • Tebited15 | B/W styled trainer Red sprite​
  • Spriters-Resource (redblueyellow) | Gen 5 ball sprites
  • ​ ​
Battle Backgrounds:

  • Eli | Ripping and compiling the backgrounds​
  • lilatraube | Some B2/W2 battle bases​
Custom UI:

  • Luka S.J. | Design, formatting and implementation
  • ​ ​
Scripts:

  • Luka S.J. | Elite Battle System​
  • Maruno | General help and support​
  • PinkCatDragon | GIF to PNG converter​
  • Pokémon Essentials | Base system​
Sound Effects:

  • GameFreak | Original sound effects from B/W/2 games​
  • BadSamaritan | Ripping the sound effects






Installation



Download this pack, and extract its contents into your root folder. All the scripts are located in the archive as .txt files.

If the resource comes with a Settings script, copy and paste that into your project's script editor first (making sure it goes above Main). After that, copy and paste any script that is provided in the pack above into your project's script editor under the Settings script (if no Settings were present, simply copy the scripts above Main).

MAKE SURE TO TRANSFER OVER THE SCRIPTS (IF MULTIPLE ARE PRESENT) IN THE ORDER THEY ARE LISTED IN!




Only for v17.x




Introduction



Unlike currently existing title screen scripts that lock you into a specific style should you be looking for a specific kind of animation, or just give you the ability to display static images; the Modular Title Screen resource gives you the complete freedom to construct your title screen however you see fit. Many of the old screen styles have been chopped up into individually addressable bits, that can be additively configured. You can construct an entirely custom and entirely animated title screen in just mere minutes. You can add as few or as many elements as you like. Some examples of what you can do with this system can be seen in the screenshots below, but it's safe to say that you have a lot of options at your disposal.





Features



  • Create a complete title screen in a few minutes
  • Complete modularity for all visual elements
  • Individual configuration per visual element
  • Intro animations (now work flawlessly at 60FPS)
  • Lots of pre made presets for you to use
  • A whole bunch of graphic assets






Screenshots







Credits




Please credit all the following people for their contributions, when using the Modular Title Screen.

  • GameFreak | BGMs for the official Title Screen tracks​​
  • Luka S.J. | Designs, graphics and code​






Installation



Download this pack, and extract its contents into your root folder. All the scripts are located in the archive as .txt files.

If the resource comes with a Settings script, copy and paste that into your project's script editor first (making sure it goes above Main). After that, copy and paste any script that is provided in the pack above into your project's script editor under the Settings script (if no Settings were present, simply copy the scripts above Main).

MAKE SURE TO TRANSFER OVER THE SCRIPTS (IF MULTIPLE ARE PRESENT) IN THE ORDER THEY ARE LISTED IN!




Requires Luka's Utilities
Only for v17.x




Disclaimer



The following is a system created to serve as both a visual and a functional alternative to the normal Pause Menu found in Essentials.

The main point of focus was for extremely easy modularity of the Pause Menu. That means, that you can easily add tons of custom entries to your Pause Menu, without having to re-work any of the code. The script takes care of its visuals automatically.





Screenshots







Adding custom menu elements




Adding a new element (or entry) in your brand new Pause Menu could be likened to adding new item effects in your game. All the stuff you need is very self-contained, and there is no need to directly access any portions of the main script to add new stuff to your menu. Defining new elements in the pause menu however has some rules:

1.) Scroll to the very very bottom of the script. This is where you're going to define your new stuff. It has to be below the main module and the main classes of the script that handle the menu. Whatever order you define your menu elements in is the order they will appear on screen. So you can shuffle around between the currently existing element entries, but no further than that.

2.) Your icons for the menu elements are always going to be placed in 'Graphics/Icons/'

3.) For each menu element, you're going to have to define a symbolic name by which you'll handle it, the main string that will be displayed in the actual pause menu (for that element), the icon that you want displayed for that element, the block of code that the element is going to run once you select it in the menu, a block of code that will check whether or not the player has access to that element of the menu. The formal definition for this is as follows:

MenuHandlers.addEntry(:NAME,"Text displayed","icon name",proc{|menu|
  # your lines of code go here
  # keep in mind that the 'proc{|menu| ' part always has to be like this
  # for every entry in your menu, when you go about defining the actual
  # functionality that is run when the player selects that menu element
  }
},proc{
  # block of code that checks if the player has access to the menu element
  # MUST ALWAYS return a boolean expression
  # or if you want the player to always be able to trigger this:
  return true
})
                  






Installation



Download this pack, and extract its contents into your root folder. All the scripts are located in the archive as .txt files.

If the resource comes with a Settings script, copy and paste that into your project's script editor first (making sure it goes above Main). After that, copy and paste any script that is provided in the pack above into your project's script editor under the Settings script (if no Settings were present, simply copy the scripts above Main).

MAKE SURE TO TRANSFER OVER THE SCRIPTS (IF MULTIPLE ARE PRESENT) IN THE ORDER THEY ARE LISTED IN!




Requires Luka's Utilities
Only for v17.x




Disclaimer



The following script is designed to compact the amount of commands needed in your event to transfer the player from one map to another, as well as adding a bunch of new transitions to use between the map transfers. This script is standalone.





Screenshots







How to use?​




Using this script is extremely easy, and it reduces the regular amount of eventing lines needed to get any kinds of Map Transfer transitions to 1. Instead of going about business the usual way, you can simply transfer the player across maps using the following script command:

pbTransferWithTransition(map_id,x,y,transition,direction)

Where the parameters mean the following:

"map_id" => the map ID of the destination map
"x" => x coordinate on the map to transfer the player to
"y" => y coordinate on the map to transfer the player to
"transition" => expressed as a symbol, defining which transition to use
    can  be any of the following:
       :DIRECTED  (plays a directional gradient fade)
       :ZOOMED  (plays a B/W styled zoom in transition)
       :CIRCULAR  (plays a circular gradient fade)
       :CAVEIN  (default Cave Entrance transition from Essentials)
       :CAVEOUT  (default Cave Exit transition from Essentials)
       any other value will be treated as invalid, and the script will fall back to a default fade
       to black transition
"direction" => numeric value denoting which direction the player will face after transfer (if omitted, player will face their current direction)
                  


Example use:

pbTransferWithTransition(5,19,13,:CIRCULAR)





Installation



Download this pack, and extract its contents into your root folder. All the scripts are located in the archive as .txt files.

If the resource comes with a Settings script, copy and paste that into your project's script editor first (making sure it goes above Main). After that, copy and paste any script that is provided in the pack above into your project's script editor under the Settings script (if no Settings were present, simply copy the scripts above Main).

MAKE SURE TO TRANSFER OVER THE SCRIPTS (IF MULTIPLE ARE PRESENT) IN THE ORDER THEY ARE LISTED IN!








Disclaimer



Please ignore this thread if you have no coding experience or knowledge. In such cases, this script will be of no use to you.

I am not too sure how everybody feels about this anymore, but back in the day, when I used to be more active, there was a lot of fuss about adding mouse usability into Essentials. Over the years there have been many scripts which implement the mouse, but for my taste they were unnecessarily complicated. I'm not sure how many of you know this, but Essentials does have a module for the mouse. The only thing it lacks is interpretations of this module.

This script creates a wrapper with a bunch of functions to very easily interface with the Mouse module found in Essentials. What you do with the mouse system is entirely up to you. This doesn't convert any of the existing scripts to use with the mouse instead. All this does is allow you to use the mouse in a simple manner. If you read through the function comments in my code, you'll see that the script comes with a lot of functionality.

Be sure to read through the script to look at all the various functions that are offered to you.





Installation



Download this pack, and extract its contents into your root folder. All the scripts are located in the archive as .txt files.

If the resource comes with a Settings script, copy and paste that into your project's script editor first (making sure it goes above Main). After that, copy and paste any script that is provided in the pack above into your project's script editor under the Settings script (if no Settings were present, simply copy the scripts above Main).

MAKE SURE TO TRANSFER OVER THE SCRIPTS (IF MULTIPLE ARE PRESENT) IN THE ORDER THEY ARE LISTED IN!




Requires Luka's Utilities
Only for v17.x




Screenshots










Features



  • Customizable tournament branches
  • You can add (at least) 8 or more trainers to a single tournament branch
  • Each branch can have its own conditional statement which unlocks the tournament
  • Support of a PWT lobby and stadium maps
  • Trainers you beat have a chance of appearing as events in the lobby
  • Animated scoreboard on the field
  • Player and opposing trainer events moving on the stadium map






How to use?



Before we go any further, it is really important that you import the provided PWT Lobby and Stadium maps into your Essentials project. To do so, please follow this tutorial that guides you through the process of doing so. These example maps contain all the necessary events to run the PWT, and each important event has been properly labeled and commented (from within the Event Editor).

How to configure your PWT system:

The tournament_list variable is an array (found inside the def fetchTournamentList) which contains all your possible Tournament branches, and trainer entries. The formatting is as following:

The first two entries in the array are strings. The first one specifying the Tournament branch name, the second specifying a script condition that unlocks the Tournament when true. The condition value can be left as an empty string (""), meaning that the Tournament will be unlocked from the start.

The next entries in the list are arrays that contain all the necessary information. Each array can be split into:
[trainer_type, trainer_name, end_speech_loose, end_speech_win, trainer_id (variant), lobby_text (optional), text_before_battle (optional), text_after_battle (optional)]

You need to have at least 8 trainer (array) entries in your list in order for your Tournament branch to be valid.

After you've finished defining the trainers for your current Tournament branch, you can start the next one by again defining two string entries, one for the branch name, and one for it's unlock condition.

For the individual trainers, to have them appear on the map, you need to have the trcharX image in your 'Graphics/Characters/' folder (where X denotes the 3 digit ID of the trainer type).

The Lobby sample map has a simple counter event which starts the PWT system using the startPWT command. The Lobby map also contains a sample event which is reserved to be the event for potential PWT trainers that show up in the lobby. The constant PWT_LOBBY_EVENT needs to correspond to the event ID of the event you're reserving for the Lobby trainers (in the sample map this event has an ID of 6). There are no manual transfers to the PWT stadium map through events. Instead, this is handled through the PWT_MAP_DATA constant. This constant is an array which contains the following information: [pwt_stadium_map_id, transfer_x_position, transfer_y_position] This constant will define where the player gets transfered after they've successfully registered for a Tournament.


The Stadium sample map has 5 key sample events. The first is an event reserved for the opposing trainer. This event gets referenced using the PWT_OPP_EVENT constant, so make sure the event ID number corresponds to the value in the constant.

The next event is a reserved Auto-run event that initializes the continuation of the PWT system after the map transfer. The PWT resumes using a simple $PWT.continue script command. This event doesn't have to have a specific ID number, as long as its trigger is set to Auto-run.

The third event is reserved for the mini-scoreboard, and is referenced with the PWT_SCORE_BOARD_EVENT constant. This constant must contain the appropriate ID number of the scoreboard event. This event is only used as a means of positioning the mini-scoreboard on the map. The mini-scoreboard is of 6 x 3 (map units) dimensions, and its event has to be placed in the top left corner of where you'd like your mini-scoreboard to be rendered.

The next event handles the movement of all the entities on the PWT stadium. This event is referenced using the PWT_MOVE_EVENT constant, so its ID has to match this value. The event itself is comprised of 5 different event pages, which dictate which segment of movement to apply. Its trigger has to be set to 'Parallel Process' otherwise it won't work. The different event pages are triggered using self switches, and have been appropriately commented for you to build your trainer movement control. Please make sure to go through the individual pages to learn more.

The final event gets referenced through the PWT_FANFARE_EVENT constant and its contents handle any kind of special cutscene you would like to build for when the player wins the PWT. This event's contents are optional (apart from the command that turns its Self Switch off), and will not influence the system if they're not present.


Successfully beating a Tournament branch will yield 3 battle points which can then be fetched using $Trainer.battle_points should you wish to add any extra functionality for those. Additionally, each win gets recorded. These wins get stored in a hash which can be accessed through $Trainer.pwt_wins["Tour Tournament branch name"], and can likewise be used for any extra functionality later on. (Such as unlocking new Tournaments based on the number of wins of a previous one)





Installation



Download this pack, and extract its contents into your root folder. All the scripts are located in the archive as .txt files.

If the resource comes with a Settings script, copy and paste that into your project's script editor first (making sure it goes above Main). After that, copy and paste any script that is provided in the pack above into your project's script editor under the Settings script (if no Settings were present, simply copy the scripts above Main).

MAKE SURE TO TRANSFER OVER THE SCRIPTS (IF MULTIPLE ARE PRESENT) IN THE ORDER THEY ARE LISTED IN!








Information



I know there is already a script out there that does something similar to this, but I think this may be a nice touch for your game's postgame. This simple script adds 'offline' Wonder Trade like functionality, that instead of simply randomly generating a new Pokemon for you to receive, it decides which Pokemon you get based on the base stat total of the Pokemon species. This ensures that you'll always get a Pokemon that is as viable in battle as the Pokemon you're giving up for trade. There isn't really much else for me to say here except that the script gets called from an event via the script:

tradeExpert(margin)

Where the 'margin' value would be a percentage offset (increase and decrease) of an acceptable base stat total. This value can be omitted. By default it is set to 0.1 which means that the base stat total for the new Pokemon you're about to receive will be anywhere in the range of 90% - 110% of the base stat total value of the Pokemon you're giving up for trade. There is also a little 'anti-abuse' mechanism which prevents the player from just talking to the Trading Expert and cancelling out of the selection until they get a Pokemon they want to trade. Once the Trade Expert offers you a Pokemon, you will be locked into that Pokemon for any future trades where the base stat total of your species would be the same.





Installation



Download this pack, and extract its contents into your root folder. All the scripts are located in the archive as .txt files.

If the resource comes with a Settings script, copy and paste that into your project's script editor first (making sure it goes above Main). After that, copy and paste any script that is provided in the pack above into your project's script editor under the Settings script (if no Settings were present, simply copy the scripts above Main).

MAKE SURE TO TRANSFER OVER THE SCRIPTS (IF MULTIPLE ARE PRESENT) IN THE ORDER THEY ARE LISTED IN!








Screenshots










How to format your Badge graphics





The dark green lines represent the limit of your canvas. Proper sprites go within areas “1”, “2” and “3”.

Area “1”: front side of the badge
Area “2”: back side of the badge
Area “3”: edge (side) of the badge

Areas “1” and “2” have to be squares of equal width and height. The recommended dimensions are 160 x 160, but you can go larger or smaller than that. For performance’s sake, I don’t recommend going beyond 192 x 192.

Area “3” is the side of the badge that will be rendered during the badge’s rotation. This can be of any width, though I’ve found 14px to be ideal. The height has to be equal to the rest of the sprite.

DO NOT place any pixels on the red lines. Having the edges of the badge be on the edges of the sprite canvas, causes the renderer not to render the side view for those pixels. This would essentially mean that if you’re making a 160 x 160 badge, your actual front/back sprites would be 158 x 158.

New badge graphics you add are placed in the "Graphics/Transitions" folder and are named as "getBadgeX", where "X" represents the badge's internal ID number.

Call it in an event via the 'Script' command using: renderBadgeAnimation(badge ID number here)





Installation



Download this pack, and extract its contents into your root folder. All the scripts are located in the archive as .txt files.

If the resource comes with a Settings script, copy and paste that into your project's script editor first (making sure it goes above Main). After that, copy and paste any script that is provided in the pack above into your project's script editor under the Settings script (if no Settings were present, simply copy the scripts above Main).

MAKE SURE TO TRANSFER OVER THE SCRIPTS (IF MULTIPLE ARE PRESENT) IN THE ORDER THEY ARE LISTED IN!