1.09.4:SRB2JTE

From SRB2 Wiki
Jump to navigation Jump to search

SRB2JTE is a source code modification for Version 1.09.4 made by JTE. It contains a wide array of different features, some of which were ported from SPMoves and SRB2RP, older modifications by the same author. Together with Mystic Realm, SRB2JTE was the most popular modification of the Final Demo era. Among its most popular features were bots for Match and Coop, several custom abilities and Super forms for certain addon characters, and an incomplete role-playing map called SA City. The project has since been discontinued and will not be ported to recent versions of SRB2.

Current release information

  • Current version: 1.69.10 (October 22, 2006)
  • SRB2 codebase: 1.09.4
  • Download: Download here
  • Source code: Download here
    • Alternate link: SVN repo mirror – has to be downloaded with svn checkout. This tag is only a copy of the src subdirectory of the source code, so it has to replace src in an existing copy of the 1.09.4 source code, such as the one bundled with SRB2 1.09.4 as SRB2Src1094.exe.
  • Old discussion topic: SRB2 Message Board

Special character abilities

SRB2JTE adds custom special abilities for certain addon characters. Some of them were ported from an earlier mod by JTE, called SPMoves. These abilities are activated based on skin name – if a custom character is loaded whose skin name matches one of those listed below, the character will have the associated ability or abilities. This works with any character as long as the skin name is correct, so it is possible to give these abilities to other custom characters that they were not intended for by changing the character's skin name.

NoteIcon.png Note
Bots will not use their special abilities in Coop and Race.
Ability Required skin name(s) Description
Chaos Control "shadow"
"hms123"
If a skin named Shadow is added, the character will be able to use Chaos Control, an ability that was ported from SPMoves. To execute Chaos Control, the player needs a Chaos Emerald of any color and at least 20 rings. 10 rings are immediately subtracted upon activating the move, and the rest will be drained constantly while performing the maneuver. To perform it, jump in the air, then hold the Spin button, and press the Jump button again. The maneuver lasts as long as the Spin button is held. Upon releasing it, the player immediately lands on the ground. If the Software renderer is used, the palette will change to neon colors for the duration of the move.

While using Chaos Control, the player will be thrust forward at a very high speed and will clip through anything in their path as well as land on top of high platforms when touching their walls. Solid walls will simply be bounced off. It is advised to be cautious when near thok barriers, as executing Chaos Control into them can cause instant death. The player loses height while performing the maneuver, and it will automatically cease when the player touches the ground. Hence, it is advantageous to begin it at high altitudes to maintain it for longer periods of time.

Triple jump "amy" If a skin named Amy is added, the character will be able to triple jump. To execute a triple jump, players need to be running at a decent speed. Execute a normal jump, then just before landing, press the Jump button again to perform a double jump. Repeat this process at the end of the second jump to execute a triple jump. Each consecutive jump will be higher than the last, but their heights are fixed (as opposed to the first jump, where letting go of the button early allows for shorter jumps). Because the additional jumps are activated just before touching the floor, this move allows Amy to circumvent shallow pools of damaging liquids or damaging floors. However, the third jump can be difficult to pull off due to the high falling speed, and the height it delivers is excessive in most situations.
Air dash "amy" Amy also has the ability to perform an air dash in SRB2JTE to make up for her lack of spindash, which is essential for completing certain levels. The move is activated by pressing the Spin button either while on the floor or after a single jump. Amy will dash forward for a seventh of a second, during which time she will be invincible. When executing the air dash during the ascent of a jump, the player can backpedal to convert the forward momentum into upward momentum, adding extra height to the jump.
Ring of fire "nitemare" This ability will only work if the player is playing as an older version of Nitemare which has the double jump as an ability, or a skin with the same name and ability. If so, the character will be able to create a temporary ring of fire by pressing the Spin button in mid-air, destroying enemies within its radius and giving him a slight double jump. The move requires 20 rings to execute. Bots do not use this ability.
Object pickup/throw "amy"
"senya"
"hms123"
If a skin named Amy, Senya or HMS123 is added, the character will be able to pick up solid Objects, such as enemies, pushables or monitors, by pressing the Light Dash key. These can then be thrown at opponents with another press of the Light Dash key. Non-solid Objects, however, are immune to being picked up (such as Detons, Turrets, and either Eggman boss). The implementation is buggy, as the player can pick up enemies and monitors that have been destroyed; picking up the latter will freeze the program. Bots do not use this ability.

Super forms

Some characters have different abilities when they go Super in SRB2JTE than in regular SRB2. Just as with the normal abilities, these are activated based on the skin name, so renamed skins will exhibit the same effects. When turning Super as any character in SRB2JTE, an excerpt from the song "Supersonic" by Bad Religion will play instead of the regular Super music.

Super Shadow

Shadow retains his Chaos Control ability in his Super form, instead of using Super Sonic's float ability.

Super Metal Sonic

Super Metal Sonic has a height-adjustable float ability which allows him to move around freely in the air. Pressing the Jump button makes him ascend, and letting go will make him float back down. He can still spindash, and can jump out of a spindash as well (which is the only time he actually jumps). If you switch characters from Super Sonic to Super Metal Sonic, he will display Metallix sprites until you move.

Hypermysteriousshadonic123311

HMS123311 immediately turns Super upon starting any level, regardless of whether he has collected Chaos Emeralds or not. Building on the concept of HMS123311 as an overpowered recolor, his Super form receives a lot of intentionally overpowered special abilities. His double jump ability is a multi-thok homing attack with an additional Armageddon Shield blast killing nearby enemies. When holding the Jump button after thokking, he will also perform Chaos Control. Additionally, his jump height, speed and acceleration are drastically increased, he leaves a flame trail when spindashing, attracts nearby rings, runs on water and can light dash. All of these powers are retained for Match and CTF, except for the Armageddon blast and invincibility.

Bots

A Match game with bots in Sapphire Falls Zone.

Bots are players controlled by the computer via artificial intelligence. SRB2JTE's bots can theoretically be used in every gametype, but their programming only supports Match and Coop. In general, their behavior is rather basic and incomplete – for example, they will not avoid damaging sectors and will sometimes run into solid walls. However, while they are mostly useless in Coop, they can serve as fairly dangerous opponents in Match due to their perfect aim.

Bots are generally only allowed in multiplayer games. The only exception is the "Sonic & Tails" character select entry, which allows Sonic to play with a Tails bot in Single Player. In Single Player and Coop, bots are always owned by the player that spawned them. Any items they collect are transferred to their owner, but the owner is not hurt when the bot takes damage. If a bot strays too far from its owner, it will automatically respawn beside them. Bots can turn Super if their owner has collected all Chaos Emeralds, but they revert back to their normal form if they respawn. In Match, bots are independent players with their own score and will fight everyone, including other bots and the player who spawned them.

In general, bots are rather unstable and may crash the game, especially when in a netgame.

The following console commands and variables affect bots in SRB2JTE:

addbot [<skin name>] [<skin color>] [<bot name>]

Adds a bot to the game (with you as its owner in Coop). This command cannot be used in Single Player games. The <skin name> parameter accepts any skin that is currently loaded in the game. If it is not specified, the game will choose a skin based on the formula Your skin + Bot number + 1. This means that the first bot you add will use the skin whose skin number comes after yours, the second bot will use the skin after that one, etc. The <skin color> parameter is optional, and can only be used if a skin name was specified. If no color is specified, the bot will use the skin's prefcolor. The <bot name> parameter is optional, and can only be used if <skin name> and <skin color> were both specified. If no name is specified, the bot is named after its skin, followed by "bot", e.g., "sonicbot".

A bot can be removed with the kick <bot name> command, just like a regular player. To remove every bot at once, use kick allbots.

botcanflyme <boolean>

If enabled, flying bots will be able to carry players, just like regular flying players. It defaults to off, and cannot be turned on in Single Player games. Use caution when enabling this, as you might accidentally be carried by your own bot without wanting it.

botcoopai <boolean>

If enabled, bots in Coop will collect items and destroy enemies on their own, rather than following the player who spawned them. Can only be used by the server or an admin.

maxbots <integer>

This sets the maximum number of bots that can be in the game in total, except in Coop, where it sets the maximum number of bots each player can own. It ranges from 0 to 31 and defaults to 1. If it is set to 0, no bots can be added to the game. Note that bots take up player slots and count towards the maxplayers limit. Cannot be changed in Single Player games.

Supervirus

A screenshot of SRB2JTE's Supervirus Blast 2 title screen.

The Supervirus is a recurring easter egg in SRB2JTE. Throughout development, JTE added different iterations of the same joke, each with the primary objective of startling the player by interrupting normal gameplay in a very abrupt manner. It is not an actual computer virus.

Original Supervirus

The first iteration of the Supervirus involved typing the message "I carry the Supervirus" into the console. This would cause the player who typed it to start moving forward at a fixed speed, free to turn and move upwards and downwards through the air, but unable to stop. The music would be changed to a sped-up version of "The Crazy Program" from Phantasy Star Online. Similarly to a game of hot potato, the carrier of the Supervirus could pass its symptoms on to another player by touching them. If they did not manage to do this in a certain amount of time, they would suffer a game over, their screen would turn to static and the remaining players in the game would receive a few extra lives.

This version of the Supervirus proved to be very popular in netgames, to the point where its usage would frequently interrupt regular games. Irritated by this, JTE disabled the command to activate the original Supervirus in the last version of SRB2JTE. Using it will now result in instant death.

New Supervirus

For the last SRB2JTE release, JTE created a new version of the Supervirus. To prevent abuse, the command to activate it was encrypted in the source code and only given out to a select group of people. It was later revealed to be "i FucKiNgHATEthOSeLOSErZ". Because the console does not differentiate between uppercase and lowercase letters in v1.09.4, it can only be entered by binding it to a key in the autoexec.cfg file.

After a player triggers the new version of the Supervirus, they will be surrounded by Supervirus sprites, their screen will be tinted dark red and the Supervirus music will play for all players. As with the original Supervirus, the player who triggered it will begin moving forward at a fixed speed. By pressing the Forward and Backward buttons, they can move up and down through the air. While on the ground, they can hold the Jump button to come to a stop temporarily. Unlike the original Supervirus, this version cannot be passed along to other players, and the carrier cannot die. If another player comes near the carrier, that player's screen will be interrupted by bursts of static, their gravity will oscillate between normal, very strong and reverse, and their controls will occasionally swap around. If they come even nearer, they will die. The player who triggered the Supervirus can turn it off again by repeating the console command that triggered it.

Supervirus Blast 2

When starting up SRB2JTE, there is a chance that the normal title sequence will be replaced by a strange and dark sequence featuring the Supervirus. In this sequence, the "Sonic Team Jr Presents" screen is interrupted by bursts of static and changes into a red-tinted picture of JTE grinning evilly, while a low-pitch, altered voice is heard saying "Beware the power of the Supervirus". This gives way to an alternate "Supervirus Blast 2" title screen displaying a grinning Eggman, with Supervirus sprites moving across the screen.

The trigger for this sequence is based on the player's total play time. This means that once the sequence is triggered, it will continue appearing on each startup until the player spends at least one second in a level.

Supervirus shield

When playing Greenflower Zone Act 3, there is about a 1/8 chance that the Egg Mobile will be equipped with a Supervirus shield. This has no immediate effect on the fight, but if the player spends 40 seconds in the level without dying or defeating the boss, the screen will tint itself red and be increasingly interrupted by bursts of static. The player will disappear and the camera will starting rotating around the Egg Movile while increasing number of Supervirus sprites spiral out from it. Eventually, this leads into the Supervirus Blast 2 title sequence, ending up at the alternate title screen.

Other modes

Soviet Russia mode

Soviet Russia mode is a new difficulty mode added in SRB2JTE that is based on the Russian reversal joke. It reverses several game mechanics in a humorous way, making the game nearly impossible to play. Most notably, instead of players collecting rings, rings try to "collect" players by slowly chasing after them. Once a ring comes in contact with a player, the player sprite will disappear and control is taken away from the player for a few seconds while the ring moves around randomly. Afterwards, the player is dropped and can move again. Although the ring is rewarded to the player after that, this mechanic disrupts gameplay heavily and makes Special Stages virtually impossible.

Additionally, all monitors will "pop" players on contact, making them explode into drops of blood and killing them. Crawlas jump at the player if they are close enough and are invincible while jumping. All projectile-shooting enemies (including the Egg Mobile) will be shot forward themselves while the projectile stays in place. The Egg Mobile will also make the player dash towards it in the pinch phase instead of dashing forward itself. Upon reaching the Level End Sign, the player will spin in place while the sign stays still. The intermission screen will read "Act passed [character]" instead of "[Character] passed act". Damaging liquids do not hurt the player.

Dark World

Sonic standing opposite his own shadow in a Dark World test map.

Dark World is a level feature that originated in SRB2RP, a v1.08 predecessor of SRB2JTE. It is enabled for a map by adding darkworld = 1 to its level header. When activated, it creates translucent copies of all sprites in the level at the opposite side of the map. This can be used to create levels that have a "real world" and "dark world", which have a (mostly) identical layout but different texturing and items. Shadows of all items in either world appear in the same place in the other world, visible but impossible to interact with.

To create the shadows, all sprites are mirrored across the point of origin, i.e., the point at map coordinates (0,0), This means that a sprite that is located at the coordinates (x,y) will have its shadow appear at (-x,-y). The point of origin is the only point where the sprites overlap and a player would pass through their own shadow. To create a "dark world" copy of a map, the "real world" version should be placed near the point of origin. Then it must copied, flipped, and inserted directly opposite to the original across the point of origin. Now the copy can be modified to create the "dark world". If necessary, the two "worlds" can be connected via teleports.

No Dark World maps were created aside from a few test maps.

SRB2 Universe (defunct)

SRB2 Universe was a large addition to past versions of SRB2JTE that originated in SPMoves. It emulates certain aspects of roleplaying games, especially Phantasy Star Online, in SRB2. For example, the HUD, the items list and the hub map were all taken from Phantasy Star Online. For this reason, SRB2 Universe is also known as "PSO mode". It was disabled in the last version of SRB2JTE because JTE had stopped working on it and thought it was too incomplete to be any fun. However, the code for it still remains in SRB2JTE's source code. An earlier version of SRB2JTE where SRB2 Universe is still enabled can be found here.

As is typical of roleplaying games, SRB2 Universe focuses not on playing through a set of levels in a linear fashion, but rather on creating and developing a character. The player can freely choose the next level to play from a hub map. As the player progresses through the game, they improve their character's attributes and collect useful items. It was planned to use SRB2's savegame features to allow players to save and load their character, including the character's attributes, inventory and visited levels. However, the load feature was never implemented.

A new game is started by creating a new character. The character starts out in the lobby map, which offers a menu where the player can select the difficulty level. Menus are opened by pressing the Light Dash button. After selecting the difficulty level, the player is warped to the hub map, Pioneer 2, but they can always return to the lobby to change the difficulty setting. From the hub map, the player can warp to any level in SRB2. The levels are linked via teleports at the start and end of each map. Completing a boss level takes the player back to the hub. While the last incarnation of SRB2 Universe had all levels unlocked from the start, it was ultimately planned that new levels would be unlocked by completing previous ones.

Inside a level, SRB2 Universe's gameplay focuses more on enemy combat than on platforming. Enemies have multiple hit points and cannot be harmed by jumping on them. Instead, the player has a dash attack that can be used with the Ring Toss button. Getting hit by an enemy will cause the character to lose health points. If they run out of health points, the character will die and the player has to restart the game by reloading a character or creating a new one. Defeating an enemy gives the character experience points. After collecting enough experience points, the character will level up, gaining more health and technique points. Technique points were used in Phantasy Star Online to cast spells, but this functionality was never added to SRB2 Universe.

After an enemy is defeated, it will drop an item that the player can collect and store in their inventory. The inventory is not fully programmed and can only be used via the console. The player can list the contents of their inventory with the inventory command and equip an item with equip <item>. However, the functionality for the items was never programmed and equipping them has no effect. The hub map was planned to have a shop where the player could buy and sell items, as well as a bank where they could deposit money or items from their inventory. These features were also never implemented. Another planned feature were quests, i.e., extra missions that the player can complete for a reward.

While SRB2 Universe was disabled for the last SRB2JTE release, the lobby and hub map still exist in the game. They can be warped to by typing map map20 -force or map map21 -force into the console, respectively. However, they no longer have any functionality.

Levels

A Sonic player runs around SA City while bots follow behind him. The bots shown are: a blue and an orange Tails, Metal Sonic and Knuckles.

SRB2 Universe

These levels are what remains of SRB2 Universe in the latest version of SRB2JTE (see section above).

  • MAP20: SRB2 Universe Lobby
  • MAP21: Pioneer Act 2

SA City

SA City was one of the most popular and controversial features included in SRB2JTE. It was intended as a role-playing map to be used in netgames. However, most of its planned features, such as a shop, were never programmed in fully, leaving players with little to do besides roaming around the map. Accordingly, SA City was mostly used as a hangout map in netgames, which led to the map being entirely banned from the Master Server at one point.

SA City is not directly selectable from the "Host Game" menu. Instead, the host is supposed to select Waiting Zone, an empty level whose purpose is to wait for other players to join before SA City is entered.

  • MAP22: Waiting Zone
  • MAP23: SA City Zone

Other

  • MAP97: Zim's Base Zone – A modified version of Zim's Base Zone with more furniture and details from the Invader Zim TV series, as well as extra rings.

Thing types

SRB2JTE adds the following Thing types, intended for use in SRB2 Universe and SA City:

  • Thing type 6000: Kineso – A shopkeeper NPC that was intended to appear in the first unique quest of SRB2 Universe. Its sprites and behavior were never added, and it was removed in the last SRB2JTE release along with the rest of SRB2 Universe.
  • Thing type 6001: Barrel – A pushable barrel that players can jump inside of to hide. A planned feature was that it could be filled with slime, hurting players hiding inside it. It was never completed and eventually removed in the last SRB2JTE release.
  • Thing type 6100: Shopkeeper – SA City's shopkeeper NPC. Its behavior was never programmed, so it only has an idle state.
  • Thing type 6101: Jason (JTE) Doll – A pushable JTE doll used in SA City.
  • Thing type 6102: RedXVI Doll – A pushable RedXVI doll used in SA City.

OpenGL enhancements

Sprite shadows

SRB2JTE adds the ability for sprites to cast shadows in OpenGL mode. Aside from aesthetic enhancement, shadows make it easier to judge where falling Objects (e.g., the player after jumping) will land. Shadows always face directly away from the camera, rather than having a fixed light source. They do not display on walls, but rather disappear straight into them. This feature was later added to SRB2 itself in Version 2.0.

Shadows can be toggled with the console variable shadow. They are enabled by default, and the value of the variable is saved to config.cfg. If the offsetshadows variable is enabled, shadows will fall farther away from the camera the higher the up the sprite is. While this is more realistic, disabling it might be considered more practical since the shadows serve as a marker for the location of the Object. For example, if disabled, the shadow of a player in midair will show exactly where they will land.

Lighting and colormaps

In SRB2JTE, OpenGL lighting and colormaps were rewritten to use fog in tandem with the original RGB modulation to produce a better fading effect. The usage of fog for lighting and colormaps can be toggled with the existing gr_fog console variable.

Holidays

SRB2JTE's modified title screen for the Christmas theme.

SRB2JTE expands on the date-activated holiday themes that were included in SRB2 before v2.0. Most prominently, it adds a Halloween theme, which originates from SPMoves. The existing themes are mostly unchanged, although a modified title screen is added for the Christmas theme. Further holiday themes were planned for Valentine's Day, St. Patrick's Day, Thanksgiving and New Year. While these themes exist in SRB2JTE's source code and are activated on the respective dates, no functionality was ever implemented for them and they have no effect.

Aside from the date-specific activation, the different holiday themes can also be manually activated via the command line parameter -holiday <number>, while -noholiday disables all holiday effects. These two parameters replace SRB2's -xmas and -noxmas parameters. See below for the available holiday values along with further details on the holidays:

Value Holiday Dates Notes
1 Valentine's Day February No changes
2 St. Patrick's Day March No changes
3 April Fools April 1st Changes the intro cutscene and music to those from SRB2TGF, just like in regular SRB2.
4 Easter April 2nd – April 30th Makes the easter eggs spawn in the official levels, just like in regular SRB2.
5 Halloween October Activates the Halloween theme. This works similarly to the Christmas theme: Several music lumps, graphics, and map headers are changed to fit the Halloween theme. A disruptively heavy fog is also added. In OpenGL, the gr_fog console variable must be enabled; otherwise, the screen will be pitch black.
6 Thanksgiving November No changes
7 Christmas December 1st – 29th Activates the Christmas theme, which is mostly identical to regular SRB2's Christmas theme, but also makes the title screen Christmas-themed.
8 New Year December 30th – 31st No changes

The implementation of the resource replacements for the Halloween and Christmas themes is done differently than in regular SRB2: In regular SRB2, the replacement lumps are stored in the disguised WAD file 3drend.dll, under the same names as the lumps they are meant to replace. If the Christmas theme is activated, this file is loaded, overriding the respective lumps. SRB2JTE instead uses a SOC-based lump replacement mechanism. Each theme has a SOC lump that lists the lumps that should be replaced along with their replacements. The replacements must be other lumps that are already loaded. Because of this, SRB2JTE's holiday effects cannot be reverted by adding a WAD file that restores the affected lumps back to their original versions, unlike in regular SRB2.

Other features

  • Spin trails and thok trails are replaced with after-images of the player.
  • Mario mode received some modifications (some of these changes are also present in ShufflarB2):
    • Players can jump higher by running before pressing the Jump button.
    • Coins do not work as health protection and are not lost upon being hit.
    • Player start out small and any hit will kill them. By collecting a shield or Fire Flower, they can reach their full size. Getting hit while big will shrink the player back to small size.
    • All shields are invisible.
  Modifications [view]
v2.2 Mystic RealmSRB2 Battle
v2.1 Acid MissileDumbventureSRB2KartSUGOISUBARASHIIKIMOKAWAIIITortured Planet
v2.0 Botanic SerenitySRB2CBSRB2 RidersXSRB2
v1.09.4 SA-SRB2Blue HeavenShufflarB2SRB2JTE
Pre-1.09.4 SPMoves